Почему для проверки связи nmap не требуется разрешение root

Насколько я знаю, ping — это инструмент, для которого требуется разрешение root (set-uid) или возможность CAP_NET_RAW.

Но я обнаружил, что когда я запускаю ping-сканирование Nmap (-sn), не требуется никаких привилегий:

# getcap /usr/bin/nmap
# ls -al /usr/bin/nmap 
-rwxr-xr-x 1 root root 2445920 May 28  2016 /usr/bin/nmap
# su -s /bin/bash www-data
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
$ nmap -sn example.com

Starting Nmap 6.47 ( http://nmap.org ) at 2020-02-17 16:35 CST
Nmap scan report for example.com (93.184.216.34)
Host is up (0.011s latency).
Nmap done: 1 IP address (1 host up) scanned in 11.05 seconds

Так как же работает ping-сканирование Nmap? Почему для ping требуется разрешение root, а для nmap нет?


person OOq    schedule 18.02.2020    source источник


Ответы (1)


Когда вы запускаете ping-сканирование Nmap от имени пользователя root, по умолчанию используются методы ICMP и ACK. Пользователи без полномочий root будут использовать метод connect(), который пытается подключиться к машине, ожидает ответа и разрывает соединение, как только оно будет установлено (аналогично методу SYN/ACK для пользователей root, но этот устанавливает полное TCP-соединение!)

С веб-сайта nmap.

person Robert Hafner    schedule 18.02.2020