Открытый порт PostgreSQL: риски публичного доступа к порту 5432
PostgreSQL использует стандартный порт 5432. Доступность порта из публичной сети подвергает СУБД брутфорс-атакам и сканированию.
При слабых паролях пользователя postgres или ошибках в pg_hba.conf злоумышленник подключается к базе и получает прямой SQL-доступ.
Степень критичности и чем опасна уязвимость
Прямой доступ к базе позволяет считывать любые данные, модифицировать записи и выполнять системные команды через функции PostgreSQL.
Как наш сканер находит эту уязвимость
Site Check выполняет проверку открытости порта 5432 для внешних входящих подключений.
Проверка защищенности хранилищ данных производится тестированием открытости стандартных портов и HTTP-шлюзов с проверкой флагов авторизации. Сканер не выполняет SQL-запросов и команд выборки, ограничиваясь диагностикой сетевого рукопожатия и заголовков ответа сервиса.
Как устранить уязвимость (Пошаговое руководство)
Для ликвидации риска выполните следующие действия в конфигурации вашего сервера или приложения:
# В postgresql.conf:
listen_addresses = 'localhost'
# В pg_hba.conf:
host all all 127.0.0.1/32 md5
- Установите listen_addresses = 'localhost' в postgresql.conf.
- Закройте порт 5432 правилом файрвола: ufw deny 5432.
Анатомия атаки и реальные последствия для проекта
Открытый порт 5432 PostgreSQL подвергается массированному перебору паролей к учетной записи postgres. Получив доступ, злоумышленник может использовать функцию COPY FROM PROGRAM для выполнения произвольных команд в ОС сервера.
Влияние на соответствие стандартам: Нарушение требований безопасности стандартов OWASP Top 10 (A05:2021 Security Misconfiguration), ISO/IEC 27001 и отраслевых норм 152-ФЗ.
Матрица эшелонированной защиты (Defense-in-Depth)
| Уровень защиты | Техническое действие | Инструмент / Механизм |
|---|---|---|
| Периметр веб-сервера (Nginx / Edge) | Применение изолирующих правил блокировки для маршрутов, связанных с postgresql-exposure | Nginx Security Directives |
| Среда исполнения и конфигурация | Отключение отладочных механизмов и разграничение прав доступа к компоненту postgresql-exposure | Runtime Security Hardening |
| Пайплайн DevSecOps контроля | Автоматическое тестирование конфигурации postgresql-exposure в CI/CD пайплайне при каждом релизе | Site Check Security Gate |
Верификация устранения: команды для быстрой проверки
После внесения изменений в настройки сервера или исходный код приложения проверьте отсутствие уязвимости с помощью терминальных утилит:
nc -zv ваш-домен.com 5432 2>&1 | grep "open"
# Порт должен быть закрыт для внешнего мира
Рекомендации DevSecOps для безопасного развертывания
В postgresql.conf задайте listen_addresses = 'localhost', а в pg_hba.conf ограничьте входящие подключения только доверенными подсетями.
- ✓ Закрыть порты 5432, 6379, 27017, 9200 на внешнем сетевом интерфейсе сервера
- ✓ Включить криптографическую аутентификацию со сложными сгенерированными паролями
- ✓ Настроить создание резервных копий с шифрованием и изоляцией в холодном хранилище
- ✓ Проверить права доступа публичных бакетов и включить блокировку Public Access
Часто задаваемые вопросы по устранению
Открытые во внешнюю сеть СУБД (PostgreSQL, Redis, MongoDB, Elasticsearch) или публичные бакеты S3 служат первоочередной мишенью программ-вымогателей (Ransomware). Обязательна сетевая изоляция через файрвол (UFW/iptables), включение криптографической аутентификации SCRAM/TLS и применение принципа минимальных привилегий доступа.
Для предотвращения вектора «Открытый порт PostgreSQL: риски публичного доступа к порту 5432» зафиксируйте проверочные правила в CI/CD пайплайне и настройте непрерывный мониторинг внешнего периметра через Site Check.