cómo ejecutar `hping` sin `sudo`

He instalado hpingusando brew install hping.

Cuando corro hpingsin sudome sale:

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

Cuando ejecuto sudo hping, naturalmente, obtengo:

$ 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

Mi pregunta aquí es, ¿qué permisos deben cambiarse para otorgar hpinglos permisos que necesita, y cómo lo hago?

Respuestas (2)

Para cambiar el comportamiento de hping , debe cambiar el usuario: grupo del ejecutable y agregar el indicador setuid:

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

(solo para recordar: /usr/local/sbin/hping|hping2|hping3 finalmente están vinculados a /usr/local/Cellar/hping/<​version_nr>/sbin/hping3)

¡ Algunas opciones de hping están deshabilitadas si la bandera s está configurada!


Por razones de seguridad, se prefiere un enfoque diferente: ¡ Hacer que un programa siempre se ejecute como root en OS X !

Siempre es un riesgo de seguridad ejecutar un binario como root. La mejor manera de hacer las cosas sería establecer la capacidad de socket sin procesar de Unix.

sudo setcap cap_net_raw+ep /usr/bin/hping3

De esa manera, no le das los permisos binarios que no necesita.

(También puede ver las capacidades establecidas, por ejemplo getcap /bin/ping:)

¿ Está setcapdisponible en macOS?