Сканирование открытых портов с помощью Nmap

Зачем сканировать порты
Порты — это конечные точки обмена данными в сети. Их поведение важно для инженеров по безопасности, системных администраторов и тестировщиков на проникновение. Открытые порты могут обозначать запущенные службы; закрытые или фильтруемые порты помогают понять настройку межсетевых экранов.
Nmap сочетает в себе обнаружение хостов, сканирование портов, определение служб и отпечатков ОС. Ниже — практическое руководство по основным способам поиска открытых портов.
Команды Nmap для сканирования всех открытых портов
Классическая команда для быстрого TCP-сканирования без привилегий:
nmap -sT scanme.nmap.org- -sT: полный TCP‑скан (connect scan). Не требует sudo, но заметен в логах.

Чтобы выполнить более «тихий» скан и отправлять сырые TCP‑пакеты, используйте SYN‑скан (требует прав администратора):
sudo nmap -sS scanme.nmap.org- -sS: SYN‑скан («полуоткрытый»), менее заметен для простых систем мониторинга.
Важно: sudo или root‑права на Linux нужны для отправки сырых пакетов. Отсутствие прав ограничит типы сканирования.
Для UDP‑портов используйте:
sudo nmap -sU scanme.nmap.org- -sU: сканирование UDP. UDP‑сканирование обычно медленнее и сложнее интерпретируется.
Если нужно ограничить диапазон портов, пригодится опция -p. Пример: сканирование локального маршрутизатора по портам 20–80:
sudo nmap -sS -p 20-80 192.168.1.1
Можно также перечислять порты через запятую: -p 22,80,443 или смешивать диапазоны и числа.
Мини‑методология: как провести безопасное и эффективное сканирование
- Получите разрешение владельца сети — это обязательно для легального аудита.
- Определите цель: одиночный хост, подсеть или диапазон адресов.
- Выберите профиль сканирования: быстрый (-T4), осторожный (-T2), или полное исследование с определением служб (-sV).
- Ограничьте порты (-p) для ускорения и снижения нагрузки.
- Соберите результаты, сопоставьте версии служб и оцените риски.
Чек‑лист для ролей
- Системный администратор: проверить открытые порты на сервисах management (SSH, RDP), сравнить с заявленными правилами брандмауэра.
- Инженер по безопасности: использовать -sV и NSE-скрипты для обнаружения уязвимых версий.
- DevOps: интегрировать периодические сканы в CI/CD pipeline и регистрировать изменения конфигурации.
Шпаргалка команд (cheat sheet)
- nmap -sT
— полный TCP‑скан без sudo. - sudo nmap -sS
— SYN‑скан (стелс). - sudo nmap -sU
— UDP‑скан. - nmap -p 1-65535
— все порты. - nmap -sV
— определение версий служб. - nmap -O
— определение ОС. - nmap -A
— агрессивный режим: скан версий, скрипты, определение ОС.
Когда Nmap может не дать точного результата
- Фильтрация или IDS/IPS блокируют или подменяют ответы — Nmap может показать «Filtered» вместо «Open» или «Closed».
- Защищённые среды с прокси/аппаратными балансировщиками: ответы могут отражать устройство балансировки, а не реальный бэкенд.
- UDP‑сканы часто приводят к ложным негативам из‑за отсутствия ответа от сервисов.
Альтернативы и дополнения
- masscan — очень быстрый сканер портов для большого диапазона адресов, но без глубокого определения служб.
- netcat (nc) — простая проверка портов по одному соединению.
- ss / lsof — локальные инструменты для проверки прослушивающих сокетов на сервере.
Примеры использования Nmap‑скриптов (NSE)
Nmap включает скрипты для обнаружения распространённых уязвимостей и рискованных сервисов:
sudo nmap --script vuln scanme.nmap.orgЭто выполнит набор скриптов, помогающий обнаружить уязвимости. Используйте целевые скрипты по необходимости, чтобы снизить шум.
Критерии приёмки
- Все целевые хосты просканированы в указанном диапазоне портов.
- Получен список открытых портов с идентификацией службы (где возможно).
- Зафиксированы отличия конфигурации по сравнению с базовой линией (baseline).
- Документированы аномалии и рекомендованы действия (закрыть, ограничить доступ, обновить).
Тестовые случаи и приёмка результатов
- Тест 1: Сканирование одного хоста на порты 20–1024 — ожидается не менее X открытых портов (если сервисы запущены).
- Тест 2: SYN‑скан против хоста с брандмауэром — убедиться, что результат показывает «Filtered» для защищённых портов.
- Тест 3: UDP‑скан сервиса DNS — обнаружение порта 53 как открытого.
(Примечание: конкретные ожидаемые числа зависят от среды тестирования.)
Практические советы и подводные камни
Важно: используйте сканирование только с разрешения. Незаконные сканы могут привести к блокировке или правовым последствиям.
Примечание: для точности UDP‑сканов увеличьте таймауты и повторения (-sU -Pn –max-retries 3 –host-timeout 30s).
Когда стоит выбрать агрессивный режим (-A): при подготовке отчёта по тестированию на проникновение. Когда не стоит: в продакшене без согласования — это может вызвать непредвиденную нагрузку.
Визуальное правило принятия решения
flowchart TD
A[Начало: нужно быстро?] -->|Да| B{Один хост или сеть}
B -->|Один хост| C[nmap -sS -sV -p 1-65535]
B -->|Сеть| D[masscan -> nmap для найденных портов]
A -->|Нет, глубокий анализ| E[nmap -A --script vuln]
C --> F[Проанализировать результаты]
D --> F
E --> F
F --> G[Рекомендации и исправления]Краткий словарь
- Порт: логическая точка доступа сервиса в сетевом стеке.
- TCP/UDP: транспортные протоколы; TCP — с установлением соединения, UDP — без подтверждений.
- SYN‑скан: метод отправки SYN‑пакета для проверки отклика без полного установления соединения.
Итог
Nmap остаётся стандартным инструментом для обнаружения открытых портов и первичного анализа сервисов. Правильный выбор опций (-sT, -sS, -sU, -p, -sV) и осторожный подход к объёму сканирования позволяют собрать полезную информацию без излишнего шума. Интегрируйте регулярные сканы в процессы безопасности и документируйте изменения.
Ключевые действия: получить разрешение, выбрать профиль сканирования, ограничить порты, анализировать версии служб и документировать результаты.
Похожие материалы
Как ставить напоминания в Notion — быстро и просто
Как найти HEX-цвет на экране — инструменты и советы
SteamOS для игр на Linux — стоит ли переходить?
Как использовать BCC в Outlook — пошаговое руководство
Создать печатный календарь в Canva