nmap — свободная утилита, предназначенная для разнообразного настраиваемого сканирования IP-сетей с любым количеством объектов, определения состояния объектов сканируемой сети (портов и соответствующих им служб). wiki
Установка под Ubuntu
sudo apt-get install nmap
nmap имеет богатый набор опций для сканирования как отдельного хоста так и диапазона хостов на предмет сбора разной информации. Ниже приведен список наиболее использованных мной сочетаний ключей.
Для работы большинства возможностей nmap требуется права root.
Разработчики nmap предлагают хост scanme.nmap.org для тестового сканирования.
Получение информации об портах удаленного хоста и определение операционной системы
sudo nmap -sS -P0 -sV -O scanme.nmap.org
scanme.nmap.org
– сканируемый хост, может быть: IP, имя хоста или подсеть
-sS
– TCP SYN сканирование (полуоткрытое)
-P0
– отключение ICMP сканирования
-sV
– определение сервисов, запущенных на открытых портах
-O
– определение версии операционной системы
Пропинговать диапазон адресов
sudo nmap -sP -v "192.168.1.*" # или sudo nmap -sP -v 192.168.1.0/24 # или sudo nmap -sP -v 192.168.1.1-20
-sP
- ping-сканирование
Проверка одного порта или диапазона
sudo nmap -sT -p 22 scanme.nmap.org # диапазон sudo nmap -sT -p 20-110 scanme.nmap.org
-sT
- TCP-сканирование
При сканировании можно скрыть свой IP адрес
sudo nmap -sS scanme.nmap.org -D 8.8.8.8
Сканирование списка хостов из файла
nmap -iL list.txt
Для определения открытых портов на локальной машине нужно выполнить
nmap localhost
Для принудительного закрытия определенного порта можно воспользоваться fuser
fuser -k 80/tcp
Определение разницы между двумя сканами
sudo nmap -n -PN 192.168.1.1/24 -O > scan1 sudo nmap -n -PN 192.168.1.1/24 -O > scan2 ndiff -b scan1 -o scan2
Подсчет Linux/Windows машин в сети (источник)
sudo nmap -F -O 192.168.0.1-255 | \ grep "Running: " > /tmp/os; \ echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; \ echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"
Графический интерфейс для nmap - Zenmap, умеет визуализировать топологию сети, сохранять параметры поиска в виде профиля, находить разницу (diff) между двумя результатами поиска.
Для linux-систем можно отключить ответы на ping-запросы (ICMP echo), для этого нужно добавить в /etc/sysctl.conf следующие строки
net.ipv4.icmp_echo_ignore_broadcasts = 1 net.ipv4.icmp_echo_ignore_all = 1
и приминить изменения
sysctl -p
Дополнительное чтиво