Сегодня поговорим про использование команды Nmap для Linux. Nmap (сокращенно от англ. Network Mapper) — это очень удобное средство для обеспечения безопасности. Оно помогает осуществлять аудит сетевой инфраструктуры, сканировать ее и выявлять подключения. Данный инструмент имеет открытый исходный код, потому широко применяется сетевыми и системными администраторами.
От аналогов утилита Nmap отличается сочетанием двух характеристик:
- огромных возможностей, необходимых профессионалам для решения задач в ИТ;
- простоты освоения, позволяющей быстро научиться основам работы с сетями с нуля.
Потому сегодняшняя наша статья научит Вас некоторым полезным способам применения команды Nmap. Помимо всего прочего, Вам будут продемонстрированы методы не только оборонительного, но и превентивного усиления защиты Вашей системы.
Содержание:
- Для каких целей применяется Nmap
- Подготовка среды для лабораторных работ по Nmap
- Примеры использования Nmap для Linux-систем
- №1 — сканирование указанного IP-адреса (IPv4) либо хоста
- №2 — сканирование сразу нескольких IP-адресов или подсетей (IPv4)
- №3 — сканирование хостов/сетей (IPv4) по списку из файла
- №4 — исключение указанных хостов/сетей при сканировании
- №5 — скрипт сканирования ОС и определения версии
- №6 — выявление защиты брандмауэром или фильтрации пакетов у хоста/сети
- №7 — сканирование хоста, защищенного брандмауэром
- №8 — сканирование хоста с адресом IPv6 с помощью Nmap для Linux
- №9 — поиск активных серверов и других устройств
- №10 — быстрое сканирование
- №11 — поиск причины, по которой порт находится в определенном состоянии
- №12 — обнаружение всех открытых портов
- №13 — вывод всех отправленных/полученных пакетов
- №14 — вывод интерфейсов хостов и маршрутов
- №15 — сканирование конкретных портов
- №16 — экспресс-сканирование всех открытых портов в сети
- №17 — удаленное выявление операционной системы с помощью Nmap для Linux
- №18 — проверка версий удаленных сервисов (сервер / демон)
- №19 — сканирование с помощью пинга TCP ACK (PA) и TCP Syn (PS)
- №20 — сканирование хоста с помощью IP-протокола ping
- №21 — сканирование хоста за счет UDP-пинга
- №22 — поиск наиболее часто используемых портов TCP, с использованием TCP SYN Scan
- Сканируем скрытно с TCP SYN
- Ищем с помощью TCP-подключения порты, которые чаще всего используются
- Ищем с помощью TCP ACK порты, которые чаще всего используются
- Ищем с помощью сканирования TCP Window порты, которые чаще всего используются
- Ищем с помощью сканирования TCP Maimon порты, которые чаще всего используются
- №23 — сканирование хоста на предмет UDP-сервисов
- №24 — сканирование поддерживаемых IP-протоколов
- №25 — сканирование брандмауэра для обнаружения уязвимостей
- №26 — сканирование брандмауэра на предмет фрагментов пакетов
- №27 — скрытое сканирование с обманками
- №28 — спуфинг MAC-адресов
- №29 — сохранение вывода в текстовый файл при работе с Nmap для Linux
- №30 — сканирование веб-серверов и каналов в Nikto
- №31 — ускорение процесса сканирования Nmap
- №32 — что делать, если вы не любите пользоваться командной строкой Linux
- Выводы
Для каких целей применяется Nmap
Приложение Nmap для Linux-систем было создано Гордоном Лионом. Его работа основана на использовании необработанных IP-пакетов, которые позволяют найти все доступные хосты в Вашей сети. Также они способствуют определению сервисов, использующих данные хосты. Утилита возвращает данные о том, на каких операционных системах выполняются соответствующие процессы, и выявляет фильтрацию пакетов брандмауэром, если тот используется.
Инструмент Nmap предназначен прежде всего для сканирования сети и аудита безопасности. Но многие сетевые и системные администраторы применяют его в повседневной работе: для контроля над графиком обновления служб, анализа сетевых подключений и проверки времени работы отдельных хостов.
С помощью этого приложения можно получить сведения следующего характера:
- сколько и каких машин подключено к Вашей сети;
- какие в ней присутствуют IP-адреса;
- какие операционные системы и каких версий установлены на задействованных машинах;
- имеются ли в Вашей инфраструктуре открытые порты и какие именно;
- заражена ли система потенциально вредоносным программным обеспечением;
- подключаются ли к Вашей сети неавторизованные хосты или сервисы;
- все ли ПК в Вашей сети соответствуют указанному набору критериев безопасности (с возможностью блокирования тех, что не соответствует).
Подготовка среды для лабораторных работ по Nmap
В некоторых странах процедура сканирования портов считается противозаконной. Следовательно, для повторения показанных в данной статье примеров сначала нужно подготовить изолированную тестовую среду.
На показанной выше схеме показаны следующие условные обозначения:
- wks01 — Ваш персональный компьютер под управлением Unix-подобной операционной системы (Linux либо OS X) с установленной утилитой Nmap, с которого будет осуществляться сканирование;
- server1 — unpatched сервер под управлением ОС Linux, Unix либо Windows (должен содержать несколько сервисов вроде файлового сервера, веб-сервера и т. п.);
- server2 — fully patched сервер с брандмауэром под управлением ОС Linux, Unix либо Windows (должен содержать несколько сервисов вроде файлового сервера, веб-сервера и т. п.).
Все три устройства нужно соединить через коммутатор в единую сеть.
Примеры использования Nmap для Linux-систем
Всли Вы подготовили свою тестовую среду — можно переходить к изучению примеров использования Nmap.
№1 — сканирование указанного IP-адреса (IPv4) либо хоста
Прежде всего нам пригодится команда, позволяющая просканировать конкретное имя хоста или определенный IP-адрес.
Сканируем один IP-адрес (IPv4)
Сканируем одно имя хоста
Сканируем одно имя хоста, получая дополнительные данные
№2 — сканирование сразу нескольких IP-адресов или подсетей (IPv4)
В реальной жизни очень редко удается обойтись сканированием одного единственного хоста за раз. К счастью, разработчик предусмотрел возможность одновременного сканирования нескольких IP-адресов.
Сканируем группу адресов IP
Сканируем группу подсетей 192.168.1.0/24
Сканируем диапазон IP-адресов
Cканируем диапазон IP-адресов с помощью метасимвола подстановки
Сканируем всю подсеть
№3 — сканирование хостов/сетей (IPv4) по списку из файла
При регулярном сканировании большого количества устройств постоянно вводить их данные в командную строку может быть утомительно. Однако утилита Nmap способна брать такую информацию из заранее подготовленного файла с помощью опции -iL
. Создайте файл с таким текстовым содержимым:
После чего укажите путь к файлу как аргумент команды Nmap:
№4 — исключение указанных хостов/сетей при сканировании
Возможна и обратная ситуация, при которой некоторые хосты или адреса IP не нужно сканировать. В этом случае их можно исключить опцией --exclude.
Исключение одного хоста по его IP-адресу
Исключение нескольких хостов по их IP-адресам
Исключение нескольких хостов, записанных в файл
Список исключенных хостов или сетей можно внести непосредственно в файл — /tmp/exclude.txt
. А потом указывать его в качестве аргумента команды Nmap:
№5 — скрипт сканирования ОС и определения версии
Nmap позволяет сканировать сеть на предмет получения данных об установленных ОС и их версиях. Для этого нужно использовать опцию -A
.
Сканируем версию ОС
Сканируем версию ОС, получая дополнительные данные
Сканируем версию ОС по списку хостов из файла
№6 — выявление защиты брандмауэром или фильтрации пакетов у хоста/сети
Порой нужно узнать, на каких целевых машинах есть фильтрация пакетов. Обнаружить функционирующий брандмауэр можно с помощью опции -s
.
Сканируем на наличие брандмауэра по IP-адресу
Сканируем на наличие брандмауэра по имени хоста
№7 — сканирование хоста, защищенного брандмауэром
Также может возникнуть потребность в сканировании защищенного хоста. Сделать это поможет опция -PN
, указывающая утилите Nmap пропустить этап пинга сканирования.
Сканирование хоста, защищенного брандмауэром, по его IP-адресу
Сканирование хоста, защищенного брандмауэром, по имени хоста
№8 — сканирование хоста с адресом IPv6 с помощью Nmap для Linux
Утилита поддерживает сканирование IPv6 — для этого предназначена опция -6
. В таком случае команды будут выглядеть следующим образом:
№9 — поиск активных серверов и других устройств
Если возникла необходимость в обнаружении всех запущенных устройств сети, то самый простой способ это сделать — применить метод host discovery или ping scan:
№10 — быстрое сканирование
В утилите предусмотрена возможность выполнения быстрого сканирования. Для этого предназначена опция -F
утилиты Nmap:
№11 — поиск причины, по которой порт находится в определенном состоянии
С помощью опции --reason
можно узнать, по какой причине тот или иной порт был переведен утилитой в определенное состояние.
Узнаем причину текущего состояния порта по IP-адресу
Узнаем причину текущего состояния порта по имени хоста
№12 — обнаружение всех открытых портов
Одной из самых полезных функций Nmap является способность искать открытые порты. Специально для этого предназначена опция --open
.
Находим открытые порты по IP-адресу
Находим открытые порты по имени хоста
№13 — вывод всех отправленных/полученных пакетов
Не менее важна функция просмотра отправленных и полученных пакетов с помощью Nmap. Для этого предназначена опция --packet-trace
.
Выводим пакеты по IP-адресу
Выводим пакеты по имени хоста
№14 — вывод интерфейсов хостов и маршрутов
Для отладки полезно уметь вывести на экран интерфейсы активных хостов и маршрутов. Утилита Nmap для Linux-систем может это сделать с помощью опции --iflist
:
№15 — сканирование конкретных портов
Утилита позволяет сканировать определенные порты, для этого можно использовать опцию -p
:
Сканируем указанный порт
Сканируем указанный порт по TCP
Сканируем указанный порт по UDP
Сканируем два порта
Сканируем диапазон портов
Комбинируем опции сканирования
Сканируем все порты с помощью метасимвола подстановки «*»
## Scan top ports i.e. scan $number most common ports ##
nmap –top-ports 5 192.168.1.1
nmap –top-ports 10 192.168.1.1
Starting Nmap 5.00 ( http://nmap.org ) at 2012-11-27 01:23 IST
Interesting ports on 192.168.1.1:
PORT STATE SERVICE
21/tcp closed ftp
22/tcp open ssh
23/tcp closed telnet
25/tcp closed smtp
80/tcp open http
110/tcp closed pop3
139/tcp closed netbios-ssn
443/tcp closed https
445/tcp closed microsoft-ds
3389/tcp closed ms-term-serv
MAC Address: BC:AE:C5:C3:16:93 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 0.51 seconds[/code]
№16 — экспресс-сканирование всех открытых портов в сети
Одной из самых нужных и востребованных возможностей утилиты Nmap является быстрый поиск открытых портов. Для его выполнения предназначена опция -T5:
№17 — удаленное выявление операционной системы с помощью Nmap для Linux
Утилита может опознавать ПО и даже операционные системы на удаленном хосте. В этом Вам поможет опция -O
:
№18 — проверка версий удаленных сервисов (сервер / демон)
Также программа может выяснить то, какие версии сервисов работают на удаленных хостах. Для этого нужно использовать опцию -sV
:
№19 — сканирование с помощью пинга TCP ACK (PA) и TCP Syn (PS)
Нередко брандмауэр отклоняет все запросы ICMP. В таком случае можно попробовать выполнить сканирование одним из следующих способов:
№20 — сканирование хоста с помощью IP-протокола ping
С помощью Network Mapper можно выполнить пинг с использованием IP-протокола. Для этого воспользуйтесь опцией -PO
:
№21 — сканирование хоста за счет UDP-пинга
При работе с Nmap можно обойти межсетевые экраны с помощью UDP-пинга. Для этого попробуйте опцию -PU
:
№22 — поиск наиболее часто используемых портов TCP, с использованием TCP SYN Scan
Сканируем скрытно с TCP SYN
Можно выполнить полуоткрытое сканирование (TCP SYN) без установки полноценного подключения. Для этого воспользуйтесь опцией -sS
:
Ищем с помощью TCP-подключения порты, которые чаще всего используются
Ищем с помощью TCP ACK порты, которые чаще всего используются
Ищем с помощью сканирования TCP Window порты, которые чаще всего используются
Ищем с помощью сканирования TCP Maimon порты, которые чаще всего используются
№23 — сканирование хоста на предмет UDP-сервисов
Утилита предлагает обнаружение служб, пользующихся UDP-подключением. Для этого достаточно использовать опцию -sU
:
№24 — сканирование поддерживаемых IP-протоколов
А еще можно выяснить, какие именно IP-протоколы доступны к применению на целевых машинах:
- TCP;
- ICMP;
- IGMP и другие.
Для этого нужно использовать опцию -sO
:
№25 — сканирование брандмауэра для обнаружения уязвимостей
Есть три типа сканирования, позволяющих получать сведения о настройках безопасности удаленных машин.
Сканируем TCP Null, позволяющим «обмануть» брандмауэр для получения ответа
Первый вариант оставляет заголовок флага TCP равным нулю (не устанавливает битов) с помощью опции -sN
:
Сканируем TCP FIN для проверки брандмауэра
Второй вариант сканирования устанавливает только бит TCP FIN с помощью опции -sF
:
Сканируем TCP Xmas для проверки брандмауэра
Третий вариант с помощью опции -sX
устанавливает флаги FIN, PSH и URG, подсвечивая пакет не хуже новогодней елки:
№26 — сканирование брандмауэра на наличие фрагментов пакетов
Флаг -f
заставляет данное сканирование (включая проверки ping) использовать крошечные фрагментированные IP-пакеты. Идея состоит в том, чтобы разделить заголовок TCP на несколько пакетов для усложнения фильтрации пакетов и, следовательно, усложнить работу системам обнаружения вторжений и т. д.
№27 — скрытое сканирование с обманками
Существует возможность при сканировании скрыть свой IP-адрес среди любого количества фиктивных адресов-обманок. Для этого предназначена опция -D
:
№28 — спуфинг MAC-адресов
Утилита Nmap имеет в своем арсенале функцию спуфинга MAC-адресов. Стоит отметить, что spoofing attack — это ситуация, при которой одно устройство / приложение маскируется под другое, указывая его MAC-адрес.
Указываем ложный MAC-адрес
Указываем дополнительные опции спуфинга
Используем случайный MAC-адрес
В данном примере «0» означает, что Nmap выберет совершенно случайный MAC-адрес:
№29 — сохранение вывода в текстовый файл при работе с Nmap для Linux
Если Вам нужно сохранить результаты вывода утилиты Nmap, то удобнее всего сделать это за счет перенаправления стандартного потока вывода в указанный текстовый файл с помощью знака «>»:
№30 — сканирование веб-серверов и каналов в Nikto
Существует возможность осуществить сканирование веб-серверов и каналов в Nikto:
№31 — ускорение процесса сканирования Nmap
Вы можете повысить скорость сканирования в Nmap. Для этого следует воспользоваться опцией -T
:
№32 — что делать, если вы не любите пользоваться командной строкой Linux
Наверняка многие наши читатели умеют работать с командной строкой ОС семейства GNU / Linux. Однако это вовсе не означает, что все обязаны любить этот инструмент и пользоваться всегда только им. Мы можем посоветовать Вам Zenmap — официальный GUI для программы Nmap Security Scanner. Данное решение является кроссплатформенным и поддерживает популярные ОС:
- Linux;
- Windows;
- Mac OS X;
- BSD и другие.
Данное приложение с открытым исходным кодом является бесплатным и призвано обеспечить пользователя профессиональным функционалом Nmap для Linux-систем. И, при этом, упростить новичкам работу с утилитой, особенно на первых порах.
GUI предусматривает возможность сохранения профилей для часто используемых параметров сканирования. Кроме того, в нем можно открывать интерактивную командную строку Nmap. Также предусмотрена возможность простого и удобного сохранения результатов вывода.
Устанавливаем Zenmap
Установить Zenmap можно с помощью команды менеджера пакетов apt:
Запускаем Zenmap
Чтобы запустить Zenmap, введите в командную строку следующую команду:
Выводы
Базовые примеры работы с утилитой Nmap для Linux достаточно легки в освоении. Поэтому этот инструмент можно и нужно брать на вооружение всем, кто занимается сетевым и системным администрированием UNIX-подобных систем.
Вам могут пригодиться в работе и учебе следующие материалы:
- Официальное руководство проекта Nmap по обнаружению сети и сканированию параметров безопасности.
- Официальная домашняя страница проекта Nmap.
Безусловно, у команды Nmap есть много других опций. Хотите узнать о них? Читайте нашу статью про 29 практических примеров команды Nmap для сетевых администраторов Linux.
Спасибо за время, уделенное прочтению статьи о 32 примерах использования команды Nmap для Linux-систем!
Если возникли вопросы — задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco, курсы по кибербезопасности, полный курс по кибербезопасности, курсы DevNet / DevOps (программируемые системы) от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University (Университет СЭДИКОММ).
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.