Сканер портов

Двадцать известных портов, по одному TCP-подключению к каждому, с сервера sysosx — и три честных ответа, а не два. Порт может быть открытым (что-то отвечает), закрытым (хост активно отказывает) или фильтруемым (тишина — обычно файрвол, сбрасывающий пакеты, а не доказательство, что там ничего нет). Цель по умолчанию — scanme.nmap.org, публичный хост, который проект nmap держит именно для того, чтобы люди могли учиться сканированию; для любого другого хоста сканируйте свои собственные серверы или те, которые вам разрешено тестировать.

Хотите, чтобы это отслеживалось непрерывно? Отслеживайте бесплатно с myeventwatch — оповещения об истечении срока и простоях, без карты.

Что измеряет сканирование

Сканирование портов часто описывают как «проверку, какие двери открыты», и метафора достаточно точна, чтобы быть полезной, — с одной поправкой. Дверь может быть открытой, запертой или просто без ответа: постучать и ничего не услышать — не то же самое, что найти дверь запертой, а сканер, сообщающий только об открытых и закрытых, прячет третий случай. Поэтому этот сканер сообщает об открытых, закрытых и фильтруемых как о трёх разных состояниях. Открытый означает, что подключение удалось, значит, служба слушает и принимает подключения. Закрытый означает, что хост прислал сброс — он жив, и на этом порту у него ничего нет. Фильтруемый означает, что целая секунда ожидания прошла в тишине — именно так снаружи выглядит файрвол, сбрасывающий пакеты; у порта за этим файрволом может быть служба, и сканирование не может утверждать обратное. Держать фильтруемые отдельно — это разница между результатом, по которому можно действовать, и результатом, который тихо вводит вас в заблуждение.

Сканирование намеренно узкое. Оно проверяет фиксированный список из примерно двадцати портов — веб (80, 8080, 8443, 443), почта (25, 110, 143, 993, 995), DNS (53), удалённый доступ (22, 23, 3389, 5900), общий доступ к файлам (445), базы данных (3306, 5432, 27017) и ещё несколько — простыми TCP-подключениями и ничем больше. Никакого чтения баннеров, поэтому сканирование никогда не узнаёт (и не выдаёт) версию службы; никакого UDP, чьи «фильтруемые» ответы куда более шумные; и никакого способа указать свои порты, потому что ввод произвольных портов превращает инструмент первого взгляда в универсальную службу картографирования. Сама цель разрешается один раз, и каждое подключение идёт на этот единственный закреплённый адрес, так что имя, изменившееся посреди сканирования, не может перенаправить пробы в другое место. Под капотом страница вызывает GET /api/check/port-scan на сервере sysosx, который выполняет двадцать подключений параллельно и кэширует результат на десять минут.

Как читать результат

Начните с открытых портов — это настоящая поверхность атаки, службы, до которых может дотянуться интернет. Открытые 22 или 3389 означают, что удалённый доступ достижим отовсюду, что может быть преднамеренным (сервер, которым вы управляете) или может быть первым, что стоит ограничить вашими собственными адресами. Открытый порт базы данных (3306, 5432, 27017), обращённый в интернет, почти никогда не бывает преднамеренным и заслуживает немедленного внимания: базы данных предназначены для того, чтобы к ним обращались приложения, а не весь интернет. Открытые 80 и 443 нормальны для веб-сервера; открытые почтовые порты нормальны для почтового сервера; всё остальное открытое должно уметь объяснить само себя. Закрытым портам ничего не нужно: хост жив и отказывает, что и есть ожидаемое состояние для большей части списка на большинстве серверов. Фильтруемые порты заслуживают второго взгляда только если вы ожидали там что-то — служба, которую вы запускаете и которую сканирование не видит, обычно означает правило файрвола, делающее свою работу, или службу, привязанную не к тому интерфейсу, и одно сканирование не может различить эти два случая. Результат совсем без открытых портов — нормальный результат, а не ошибка: он означает, что ни одна из двадцати обычных служб не достижима с позиции этого сервера, а именно так выглядит усиленный хост.

Связанные инструменты: оценщик SSL для настройки TLS на порту 443, как только вы узнаете, что он открыт, проверка здоровья сайта для достижимости и записей вместе, и проверка распространения DNS, когда вопрос в том, куда указывает имя, а не что на нём отвечает.

Дополнительное чтение: что открытые порты говорят о сервере — как читать сканирование как оператор, какие открытые порты нормальны, а какие — это вызов в 3 часа ночи, который только ждёт, чтобы случиться.

Частые вопросы

Чем это отличается от запуска nmap?

Nmap сканирует всё и всячески: полные диапазоны портов, UDP, определение версий, отпечаток операционной системы. Этот инструмент делает с сервера sysosx одну узкую вещь — TCP-подключения к фиксированному списку из примерно двадцати известных портов, и больше ничего. Никакого чтения баннеров, никакого определения версий, никакого UDP, никаких пользовательских портов. Эта узость и есть смысл: он отвечает на вопрос «что слушает на обычных портах?», не становясь сканером общего назначения, который любой может навести на что угодно.

Что на самом деле означают открытый, закрытый и фильтруемый?

Открытый означает, что TCP-подключение удалось — что-то слушает и принимает подключения на этом порту. Закрытый означает, что хост активно отказал в подключении (пакет сброса) — так отвечает живой хост, у которого на этом порту ничего нет. Фильтруемый означает, что порт не дал вообще никакого ответа в течение секунды — обычно это файрвол, тихо сбрасывающий пакеты. Фильтруемый — не закрытый: у фильтруемого порта за файрволом может быть служба, и единственное честное утверждение — «нет ответа». Таблица результатов держит все три состояния отдельно именно по этой причине.

Почему только двадцать портов, и почему я не могу добавить свои?

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

Почему по умолчанию scanme.nmap.org?

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

Почему результат кэшируется на десять минут и почему пять свежих сканирований в час?

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