Сканирование сетевых портов в Linux – команда nmap

Системы Linux и UNIX являются сетевыми операционными системами (ОС). Поэтому их эксплуатация неразрывно связана с администрированием и обслуживанием сетей. Независимо от сложности и масштабов сети необходимо проводить постоянный мониторинг окружения сети на предмет качества связи и соединений. А также для определения признаков или даже фактов вредительства в ней или несанкционированных атак. Одним из эффективных инструментов для выполнения подобных задач является команда nmap.

Зачем нужна команда nmap?

Основная задача команды nmap – сканирование сетевых портов указанных компьютеров для определения, какие из них используются (прослушиваются) программами-серверами. Для подавляющего числа сетевых демонов (служб) определены их стандартные порты по-умолчаню, которые они используют для своей работы. По этому признаку можно делать выводы, о том какие серверные программы запущены на том или ином компьютере в сети.

Также команда nmap – это самый доступный инструмент в руках злоумышленников для организации подготовки хакерской атаки на сеть. Ведь с помощью этой команды очень легко получить информацию, на основе которой можно судить о слабых и уязвимых местах в атакуемой системе.

Синтаксис команды nmap и особенности её работы

Команда nmap довольно проста в использовании и каким-то сложным синтаксисом не отличается:

nmap [Тип сканирования…] [Опции] {цель сканирования}

Чего нельзя сказать о количестве, функциональности её ключей и неисчерпаемых возможностях их применения. Официальная документация, доступная на страницах man-руководства (команда man nmap), кроме того, что очень подробная (трудно встретить ещё подробнее), так ещё и имеет качественный перевод (локализации, в том числе и на русском языке) в большинстве Linux-дистрибутивов.

Не всегда утилита nmap предустановлена в системе, поэтому для её использования требуется установка соответствующего пакета, который обычно имеет имя nmap:

$ sudo apt-get install nmap

Или в Centos/Redhat

$  yum install nmap -y

Пример:

$ nmap -sT localhost

Столбец STATE показывает состояние порта: он может быть открыт (open), когда связан с использующими его службами (соединениями), закрыт (closed), когда порт не используется ни одним сервером. Также доступны состояния: unfiltered, когда nmap не смогла определить состояние порта. А также filtered – когда порт защищён (или заблокирован) брандмауэром.

Для задания хоста можно также использовать цифровую запись в виде IP-адреса. Отчёт из данного примера сформирован для самого обычного компьютера, для которого не была сконфигурирована какая-то защита. Как можно видеть, для прослушивания 80 и 443 портов для работы протоколов HTTP и HTTPS соответственно, запущен веб-сервер. Сервер баз данных (БД) MySQL также работает по стандартному порту.

Использование nmap

Если посмотреть на отчёт команды nmap для более защищённого узла, то он будет выглядеть примерно так:

$ nmap -sT server.com

Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-01 12:42 MST
Interesting ports on server.com (192.168.20.35):
Not shown: 1691 closed ports
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http

Как можно видеть, на сканируемом узле (компьютере) скорее всего работает брандмауэр. Который блокирует все порты кроме тех, что отведены для работы почтового и веб- серверов. Таким образом, можно сделать вывод о том, что компьютер по указанному адресу настроен специально для работы с электронной почтой и обработкой HTTP-запросов.

Однако, одна из особенностей nmap заключается в том, что эту команду можно использовать в «хакерском» режиме. Другими словами она позволяет сканировать порты без установки реальных соединений. Это достигается путём использования неквитирующих пакетов, т. е. тех, которые похожи на имеющиеся в существующих соединениях. Но в ответ на такие пакеты можно получать пакеты диагностические. Т. е. получать информацию о соединении, при этом не быть «замеченным» брандмауэром или другим сетевым фильтром. Которые следят за «сканировщиками» портов.

Помимо всего прочего nmap умеет распознавать, какая ОС используется на проверяемом узле. Путём анализа некоторых особенностей, характерных для реализации стека TCP/IP для разных ОС. Для использования этой возможности существует ключ -O:

sudo nmap -sV -O 192.168.0.101 

Starting Nmap 7.60 ( https://nmap.org ) at 2019-02-11 23:10 +04 
Nmap scan report for 192.168.0.101 
Host is up (0.0040s latency). 
Not shown: 992 filtered ports 
PORT STATE SERVICE VERSION 
135/tcp open msrpc Microsoft Windows RPC 
139/tcp open netbios-ssn Microsoft Windows netbios-ssn 
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP) 
554/tcp open rtsp? 
2869/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) 
5357/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) 
10243/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) 
49156/tcp open msrpc Microsoft Windows RPC 
MAC Address: 4M:1F:6E:4A:D5:78 (Hon Hai Precision Ind.) 
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port 
Device type: general purpose|specialized|phone 
Running: Microsoft Windows 2008|8.1|7|Phone|Vista 
OS CPE: cpe:/o:microsoft:windows_server_2008:r2 
Network Distance: 1 hop 
Service Info: Host: HOST-PC; OS: Windows; CPE: cpe:/o:microsoft:windows 

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . 
Nmap done: 1 IP address (1 host up) scanned in 143.31 seconds

Как можно видеть, компьютер с IP-адресом 192.186.0.101 работает под управлением ОС Windows, предположительно Windows 7. Информация в отчёте довольно подробная, определён даже MAC-адрес сканируемого сетевого устройства.

Стоит рассмотреть некоторые примеры для команды nmap, которые могут пригодиться администраторам в их работе. Сканирование нескольких адресов:

$ nmap 192.168.0.101 192.168.0.102 192.168.0.107

или:

$ namp 192.168.0.101,102,107

Определение активных узлов в сети:

$ nmap -sn 192.168.1.0/24

В этой команде используется формат записи, для обозначения подсети. В качестве параметров можно также указывать данные из файла:

$ nmap -iL hosts.txt

Записи адресов в файле указываются также, как и в командной строке. И разделяться должны одним или несколькими пробелами или символами перевода строки. Для сканирования определённых портов:

$ nmap -p 80 192.168.0.101

или диапазона портов:

$ nmap -p 80-1000 192.168.0.101

Сканирование всех портов:

$ nmap -p "*" 192.168.0.101

Сканирование определённых типов портов (TCP или UDP):

$ nmap -sT 192.168.0.101

Соответственно для указания UDP-портов следует указывать опцию -U. Для объединённого сканирования портов:

$ nmap -p U:53,79,113,T:21-25,80,443,8080 192.168.0.101

Для скрытого сканирования:

$ nmap -sS 192.168.0.101

Сохранение результатов сканирования в файл:

$ nmap 192.168.0.101 > results.txt

или:

$ nmap -oN results.txt 192.168.0.101

Определить (с высокой степенью вероятности), работает ли на сканируемом узле брандмауэр или другой пакетный фильтр:

$ nmap -sA 192.168.0.101

Определение только открытых портов:

$ nmap --open 192.168.0.101

Определение версии ОС, а также трассировки маршрутов:

$ nmap -v -A 192.168.102

Чтобы исключить из сканирования определённые адреса или подсети нужно использовать опцию —exclude:

$ nmap 192.168.1.0/24 --exclude 192.168.1.1
$ nmap 192.168.1.0/24 --exclude 192.168.1.1 192.168.1.3
$ nmap 192.168.1.0/24 --exclude 192.168.1.1,2,3

Чтобы использовать для этой цели данные из файла, применяется опция —excludefile:

$ nmap 192.168.1.0/24 --excludefile exclude.txt

Заключение

Как можно видеть, nmap – это действительно мощный инструмент для мониторинга и анализа безопасности сетевого окружения. Следует также всегда помнить, что с помощью одной только команды nmap система или сеть могут быть досконально изучены «посторонними» или не совсем добросовестными людьми. Поэтому системные администраторы всегда должны учитывать этот фактор для обеспечения безопасности вверенных им систем.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

ИТ Проффи

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: