wie man `hping` ohne `sudo` ausführt

Ich habe hpingmit installiert brew install hping.

Wenn ich hpingohne laufe sudobekomme ich:

$ hping 8.8.8.8
[open_sockraw] socket(): Operation not permitted
[main] can't open raw socket

Wenn ich laufe sudo hping, bekomme ich natürlich:

$ sudo hping -S -p 80 8.8.8.8
Password:
HPING 8.8.8.8 (en0 8.8.8.8): S set, 40 headers + 0 data bytes
len=46 ip=8.8.8.8 ttl=57 id=332 sport=80 flags=RA seq=0 win=512 rtt=1.4 ms
len=46 ip=8.8.8.8 ttl=57 id=46923 sport=80 flags=RA seq=1 win=512 rtt=2.7 ms
len=46 ip=8.8.8.8 ttl=57 id=25098 sport=80 flags=RA seq=2 win=512 rtt=2.2 ms
^C
--- 8.8.8.8 hping statistic ---
8 packets tramitted, 8 packets received, 0% packet loss
round-trip min/avg/max = 1.4/2.4/2.9 ms

Meine Frage hier ist, welche Berechtigungen geändert werden müssen, um hpingdie erforderlichen Berechtigungen zu erteilen - und wie mache ich das?

Antworten (2)

Um das Verhalten von hping zu ändern , müssen Sie user:group der ausführbaren Datei ändern und das Setuid-Flag hinzufügen:

sudo chown root:wheel /usr/local/Cellar/hping/3.20051105/sbin/hping3
sudo chmod u+s /usr/local/Cellar/hping/3.20051105/sbin/hping3

(Nur zur Erinnerung: /usr/local/sbin/hping|hping2|hping3 sind schließlich per Softlink mit /usr/local/Cellar/hping/<​version_nr>/sbin/hping3 verbunden)

Einige hping- Optionen sind deaktiviert, wenn das s-Flag gesetzt ist!


Aus Sicherheitsgründen wird daher ein anderer Ansatz bevorzugt: Ein Programm unter OS X immer als root ausführen lassen !

Es ist immer ein Sicherheitsrisiko, eine Binärdatei als root auszuführen. Der bessere Weg wäre, die Unix-Raw-Socket-Fähigkeit einzustellen.

sudo setcap cap_net_raw+ep /usr/bin/hping3

Auf diese Weise geben Sie nicht die binären Berechtigungen, die es nicht benötigt.

(Sie können sich auch Set-Fähigkeiten ansehen, zB: getcap /bin/ping)

Ist setcapauf macOS verfügbar?