Битлента
Сетевые команды и утилиты5 мин чтения·

nmap: как проверить открытые порты только на своих хостах и понять статусы

Как проверить командой nmap открытые порты собственного сервера или роутера, чем отличаются open, closed и filtered и как сверить с ожидаемым списком.

Кратко

Проверка внешней доступности выполняется с другой сети командой nmap -p порты адрес. Статус open — служба отвечает, closed — узел отвечает отказом, filtered — пакеты отбрасываются фильтром. Сканируйте только свои узлы.

Зачем проверять порты снаружи и изнутри

Утилиты вроде ss показывают, какие порты слушает программа на самом сервере. Но это взгляд изнутри: он не учитывает брандмауэр на узле, правила облачной панели или проброс на роутере. Пользователь снаружи видит другое. Поэтому для проверки нужны обе точки зрения: изнутри — что запущено, снаружи — что реально доступно.

Nmap решает вторую задачу: он посылает пакеты на порты и по ответам определяет состояние. Сравнивая результат с ожидаемым списком, вы обнаруживаете лишнее: забытую тестовую службу, базу данных, открытую всем, панель управления без защиты.

Условие использования простое: только свои узлы. Это ваш сервер, домашний роутер, устройство, за которое вы отвечаете, либо система, где владелец дал письменное согласие. Проверка чужого адреса без разрешения может считаться попыткой несанкционированного доступа, а провайдеры и хостеры вправе ограничить такому клиенту доступ.

Где запускать проверку, чтобы результат был честным

Если запустить сканирование с самого сервера на его же внешний адрес, вы получите картину, искажённую особенностями локальной маршрутизации. Правильный подход выглядит так.

  1. Запишите ожидаемый список открытых портов, например 22, 80 и 443.
  2. Выберите точку проверки в другой сети: другой сервер, мобильный интернет на телефоне в режиме точки доступа, знакомый с ноутбуком в иной сети.
  3. Выполните nmap -p 1-1024 адрес или nmap -p 22,80,443,3389 адрес, подставив адрес своего узла.
  4. Сравните результат со списком. Всё лишнее с состоянием open — повод разобраться.
  5. Повторите проверку изнутри локальной сети: расхождение подскажет, где стоит фильтр.

Для домашней сети внешним адресом служит адрес вашего роутера в интернете. Если провайдер использует общий адрес для многих абонентов, внешняя проверка невозможна, и порты недоступны снаружи по определению.

Как читать статусы портов

Nmap различает шесть состояний. Первые три встречаются чаще всего.

СтатусСмыслЧто обычно значит
openСлужба принимает соединенияПорт доступен, проверьте, что так и задумано
closedУзел ответил отказомПорт достижим, но никто его не слушает
filteredОтвета нетПакеты отбрасывает межсетевой экран или фильтр
unfilteredПорт доступен, но состояние неясноБывает при ACK-сканировании
open или filteredНеясно: открыт или отфильтрованТипично для UDP
closed или filteredНеясно: закрыт или отфильтрованРедкие режимы

Различие closed и filtered важно для выводов. Если у вас на сервере брандмауэр настроен на отбрасывание, закрытые порты будут выглядеть как filtered, и скан будет идти дольше из-за ожидания. Если настроен отказ, вы увидите closed. Оба варианта считаются безопасными: важно, чтобы не было лишних open.

Пример вывода (пример): 22/tcp open ssh, 80/tcp open http, 443/tcp open https, 3306/tcp filtered mysql. Последняя строка означает, что порт базы данных снаружи не отвечает, и это хороший результат.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно

Ключи и режимы, которые нужны в работе

  • -p 1-1024 — сканирование заданного диапазона; -p- проверит все 65535 портов и займёт заметное время.
  • --top-ports N — самые распространённые N портов, быстрый контроль.
  • -sT — обычное подключение; работает без прав администратора.
  • -sS — полуоткрытое SYN-сканирование, режим по умолчанию при запуске с правами администратора, быстрее и меньше нагружает узел.
  • -sU — сканирование UDP; медленное, требует прав администратора, результат часто open|filtered.
  • -Pn — не проверять, жив ли узел; нужен, если узел не отвечает на ping и nmap пропускает его.
  • --reason — показать причину, по которой порту присвоен статус.
  • -sV — определить программу и версию, удобно для инвентаризации.
  • -oN файл — записать отчёт для сравнения в будущем.

В Windows установщик nmap ставит драйвер Npcap; без него запуск некоторых режимов невозможен. В Linux и macOS права администратора получают через sudo. Синтаксис ключей одинаков на всех платформах.

Как сделать из проверки регулярную практику

Один раз проверить порты недостаточно: конфигурация меняется, ставятся новые службы, обновления включают ранее отключённое. Договоритесь с самим собой о ритме: проверка после каждого изменения правил брандмауэра, проброса портов или установки службы, плюс плановая раз в месяц. Сохраняйте отчёты в файл и сравнивайте два последних, например командой diff в Linux и macOS или fc в Windows.

Для найденных лишних портов порядок такой: определить программу на сервере через ss или netstat; решить, нужна ли она; при необходимости ограничить доступ по адресам в брандмауэре или слушать только 127.0.0.1; иначе отключить службу. Не забывайте про UDP: забытая служба на UDP-порту тоже может быть открыта, хотя проверка TCP покажет чистоту.

Ограничьте темп на небольших каналах и слабых устройствах ключом -T3 и не запускайте полное сканирование в часы пиковой нагрузки. И ещё раз о границах: свои узлы либо явное разрешение владельца.

Ошибки интерпретации, которые встречаются чаще всего

Первая ошибка — считать закрытый порт признаком защищённости. Закрытый порт лишь означает, что на нём ничего нет, а вот открытый порт с устаревшей программой может оказаться уязвимым. Поэтому список открытых портов дополняйте контролем версий и обновлений.

Вторая ошибка — доверять единственному запуску. Фильтры бывают динамическими: часть систем блокирует адрес после серии обращений, и вторая половина сканирования покажет filtered там, где на самом деле порт открыт. Если результат необъяснимо меняется, снизьте темп и повторите проверку с другого адреса.

Третья ошибка — забыть про IPv6. У узла может быть и адрес IPv6, на котором брандмауэр настроен слабее, чем на IPv4. Ключ -6 включает сканирование по IPv6, и вам нужно выполнить его отдельно для адреса, который принадлежит вашему узлу. Четвёртая — забыть о виртуальных сетях и контейнерах, которые публикуют порты автоматически: список, увиденный снаружи, всегда сверяйте со списком опубликованных портов.

Для контроля результата достаточно простой таблицы: порт, служба, зачем открыт, кто отвечает. Любая строка без ответа на вопрос «зачем» — кандидат на закрытие.

🛡️ Остались проблемы с соединением?
Можно пользоваться постоянно: российские приложения работают, включать и выключать ничего не нужно. Без карты и регистрации, настройка за пару минут.
Попробовать бесплатно
nmapпортыбезопасностьсервер

Часто задаваемые вопросы

Читайте также