
Открытые порты мониторят отдельно для каждого сервиса: проверяют, что каждый ожидаемый порт принимает подключения, что на нём отвечает правильный протокол, и сравнивают время подключения с базовым уровнем. Порты веба и почты стоит проверять из нескольких публичных регионов, а порты баз данных — с внутренней или разрешённой через allowlist точки, с алертом в тот момент, когда они становятся доступны из интернета.
Почему TCP-подключения недостаточно
Успешное TCP-рукопожатие доказывает лишь то, что на порту что-то слушает. Зависший пул воркеров или неверно настроенный прокси может принимать соединения и не возвращать ничего полезного. Поэтому грамотный мониторинг портов проверяет ответ протокола: строку статуса HTTP, TLS-рукопожатие, приветствие SMTP 220 или handshake базы данных. Fingerprinting сервиса даёт второй сигнал, подтверждая, какое ПО и какой версии отвечает.
Справочная таблица по сервисам
| Сервис | Порт(ы) | Что проверять | Ожидаемая доступность |
|---|---|---|---|
| HTTP | 80 | Редирект на HTTPS | Публичный |
| HTTPS | 443 | TLS-рукопожатие, сертификат, статус | Публичный |
| MySQL | 3306 | Приветствие сервера и версия | Только внутренний |
| PostgreSQL | 5432 | Ответ на SSLRequest | Только внутренний |
| MongoDB | 27017 | Ответ на команду hello |
Только внутренний |
| Redis | 6379 | +PONG или -NOAUTH |
Только внутренний |
| SQL Server | 1433 | Ответ TDS pre-login | Только внутренний |
| SMTP | 25 | Баннер 220, STARTTLS |
Публичный (MX) |
| Submission | 587 / 465 | 220; STARTTLS / неявный TLS |
Публичный или ограниченный |
| IMAP | 143 / 993 | * OK; TLS на 993 |
Публичный или ограниченный |
| POP3 | 110 / 995 | +OK; TLS на 995 |
Публичный или ограниченный |
Веб-серверы: порты 80 и 443
Проверяйте оба порта из нескольких регионов. На порту 80 ожидается редирект 301 или 308 на HTTPS; ответ 200 может означать, что редирект потерялся при изменении конфигурации. На порту 443 проверяйте TLS-рукопожатие и сертификат: просроченный или несовпадающий сертификат ломает клиентов, даже если порт открыт. Отслеживайте время подключения отдельно от задержки ответа: рост времени подключения указывает на нагрузку на сеть или балансировщик, рост времени ответа — на приложение.
Базы данных: мониторинг изнутри и алерт при экспозиции
Порты баз данных никогда не должны быть доступны из интернета, поэтому нужны две отдельные проверки:
- Проверка работоспособности изнутри. Запускайте её с внутреннего хоста или из источника, внесённого в allowlist. MySQL отправляет приветствие сразу после открытия соединения, а PostgreSQL, MongoDB, Redis и SQL Server ждут клиента, поэтому проверка должна заговорить первой.
- Проверка экспозиции снаружи. Опрашивайте порты 3306, 5432, 27017, 6379 и 1433 из публичных локаций и считайте состояние «открыт» сбоем. Одна правка security group или контейнер с неверным пробросом портов может открыть базу за считаные минуты, а автоматические сканеры быстро находят такие экземпляры.
Почтовые сервисы: читайте баннер
Почтовые протоколы представляются сами, поэтому их легко проверять. SMTP-серверы должны отвечать 220; код 421 означает, что сервис отклоняет подключения. На порту 587 убедитесь, что STARTTLS объявляется после EHLO; на 465, 993 и 995 — что TLS-рукопожатие проходит успешно. IMAP должен приветствовать * OK, POP3 — +OK. Некоторые облачные сети блокируют исходящий трафик на порт 25, поэтому проверяйте из локаций, где он разрешён.
Интервалы и пороги
Типичные стартовые значения, которые нужно подстроить под свой базовый уровень:
- Веб (80/443): каждую минуту минимум из трёх регионов; алерт, если две и более локации дают сбой на двух проверках подряд.
- Почта (25/587/993): каждые 1–5 минут; алерт после двух сбоев подряд или при неожиданном баннере.
- Работоспособность БД (изнутри): каждую минуту; алерт после двух-трёх сбоев подряд.
- Экспозиция БД (снаружи): каждые 5–15 минут; алерт при первом результате «открыт».
- Задержка: предупреждение, если время подключения стабильно в два-три раза выше базового уровня.
Более широкий взгляд — в наших лучших практиках мониторинга портов.
Как это сделать в UpScanX
Мониторинг портов UpScanX выполняет проверки TCP- и UDP-портов из более чем 15 локаций по всему миру, с fingerprinting сервисов и определением версий, валидацией ответов с учётом протокола и отслеживанием времени подключения и задержки ответа. Он сравнивает состояние портов с эталонной конфигурацией, выявляет неожиданные сервисы и отправляет алерты по Email, в Slack, Telegram, Microsoft Teams или через Webhook.
Главное
- Проверяйте ответ протокола на каждом порту, а не только TCP-подключение.
- Проверяйте публичные порты веба и почты из нескольких регионов и требуйте совпадения результатов перед алертом.
- Мониторьте работоспособность баз данных изнутри и считайте любую публичную доступность инцидентом.
- Ведите реестр ожидаемых портов и получайте алерт при любом отклонении от него.