Эта команда является сканером сетевых портов. Ее основное назначение — проверка указанных компьютеров на предмет того, какие TCP- и UDP-порты на них прослушива ются серверными программами3. За большинством сетевых служб закреплены “извест ные” порты, поэтому такая информация позволяет узнать, какие программы выполня ются на компьютере.
Запуск команды nmap — отличный способ узнать, как выглядит система в глазах того, кто пытается ее взломать. В качестве примера приведем отчет, выданный этой командой на самом обычном, относительно незащищенном компьютере.
ubuntu$ nmap -sT ubuntu.booklab.atrust.com
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-01 12:31 MST
Interesting ports on ubuntu.booklab.atrust.com (192.168.20.25):
Not shown: 1691 closed ports
PORT STATE 25/tcp open 80/tcp open 111/tcp open 139/tcp open 445/tcp open 3306/tcp open
SERVICE
smtp
http
rpcbind
netbios-ssn
microsoft-ds
mysql
Nmap finished: 1 IP address (1 host up) scanned in 0.186 seconds
Аргумент -sT сообщает команде nmap о необходимости подключиться к каждому ТСР-порту на указанном узле4. Как только соединение устанавливается, команда nmap немедленно отключается, что не очень корректно, зато безболезненно для правильно написанного сетевого сервера.
Как следует из примера, на узле ubuntu выполняются две службы, являющихся тра диционными источниками проблем для безопасности системы: portmap (rpcbind) и почтовый сервер (smtp). Это наиболее вероятные места для атаки хакеров.
Колонка STATE (состояние) содержит запись open (открыт) для портов, с которыми связаны серверы, closed (закрыт) для портов, с которыми не связан ни один сервер, за пись unfiltered (нефильтруемый) для портов, пребывающих в неизвестном состоянии, и запись filtered (фильтруемый) для портов, доступ к которым невозможен из-за на личия брандмауэра. Чаще всего встречаются нефильтруемые порты. Они отображаются только при АСК-сканировании. Вот, например, результат запроса к более защищенному коммерческому веб-серверу secure.booklab.atrust.com.
3 Как объяснялось в главе 14, порт — это нумерованный канал взаимодействия. IP-адрес иден тифицирует весь компьютер, а комбинация IP-адреса и номера порта определяет конкретный сер вер или сетевое соединение.
4 На самом деле по умолчанию проверяются только привилегированные (их номера меньше 1024) и “известные” порты. С помощью опции -р можно явно задать диапазон сканирования.
962 Часть II. Работа в сети
ubuntu$ nmap -sT secure.booklab.atrust.com
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-01 12:42 MST Interesting ports on secure.booklab.atrust.com (192.168.20.35): Not shown: 1691 closed ports
PORT STATE SERVICE
25/tcp open smtp 80/tcp open http
Nmap finished: 1 IP address (1 host up) scanned in 0.143 seconds
В данном случае очевидно, что компьютер сконфигурирован на обработку электрон ной почты по протоколу SMTP и работу с сервером HTTP. Брандмауэр блокирует доступ к остальным портам.
Помимо стандартного опроса TCP- и UDP-портов, команда nmap способна про верять порты “по-хакерски”, не устанавливая с ними реального соединения. В боль шинстве случаев посылаются пакеты, которые похожи на пакеты из уже имеющегося TCP-соединения (это не квитирующие пакеты), а затем проверяются полученные в от вет диагностические пакеты. Таким способом можно обойти брандмауэр или программу мониторинга сети, которая контролирует появление сканеров портов. Если в вашей ор ганизации имеется брандмауэр (см. раздел 22.11), не поленитесь проверить его в разных режимах сканирования.
Команда nmap обладает магической способностью угадывать, какая операционная система установлена на удаленном узле. Это делается путем анализа деталей реализации стека TCP/IP. Чтобы проверить работу команды nmap в этом режиме, воспользуйтесь опцией -О, например.
Starting Nmap 4.20 ( http://insecure.org ) at 2009-11-
1 12:44 MST
Interesting ports on secure.booklab.atrust.com (192.168.20.35): Not shown: 1691 closed ports
PORT STATE SERVICE
25/tcp open smtp
80/tcp open http
Device type: general purpose
Running: Linux 2.4.X|2.5.X|2.6.X
OS details: Linux 2.6.16 - 2.6.24
Nmap finished: 1 IP address (1 host up) scanned in 8.095 seconds
Эта возможность может оказаться весьма полезной при анализе состояния локаль ной сети. К сожалению, она же является рабочим инструментом хакеров, которые могут определить тип атаки на основании известных слабых мест конкретных операционных систем или серверов.
Не забывайте также, что большинство администраторов не приветствуют попыток сканирования сети и выяснения ее слабых мест, какими бы благородными ни были мо тивы. Никогда не запускайте команду nmap в чужой сети без разрешения сетевого адми нистратора.