Безопасность баз данных: В чем опасность использования дефолтных портов (напр. 5432 для Postgres) и почему стоит настроить Listen Address только на localhost?

Безопасность баз данных — один из ключевых аспектов построения надёжной IT-инфраструктуры. Два распространённых упущения, которые существенно повышают риск компрометации данных, — это использование дефолтных портов и неправильная настройка Listen Address.

## Опасность дефолтных портов

Каждая СУБД имеет стандартный порт: PostgreSQL слушает 5432, MySQL — 3306, MongoDB — 27017, Redis — 6379. Эти значения общеизвестны, и именно их в первую очередь сканируют автоматические боты и злоумышленники. Атаки типа brute-force, эксплуатация CVE-уязвимостей и попытки несанкционированного доступа начинаются именно с массового сканирования стандартных портов.

Если ваш сервер доступен из интернета и PostgreSQL слушает 5432, вы буквально «приглашаете» атакующих. Инструменты вроде Shodan или Masscan позволяют за минуты найти миллионы открытых баз данных по всему миру. Смена порта на нестандартный (например, 54321 или любой другой из диапазона 1024–65535) — это security through obscurity, то есть не полноценная защита, но эффективный способ снизить количество автоматических атак.

Однако смена порта не заменяет другие меры: сильные пароли, шифрование трафика (SSL/TLS), ограничение доступа по IP и регулярное обновление СУБД.

## Почему Listen Address должен быть только localhost

По умолчанию PostgreSQL может быть настроен на прослушивание всех сетевых интерфейсов (`listen_addresses = ‘*’`). Это означает, что база данных принимает подключения не только с локальной машины, но и из внешней сети — интернета или корпоративной сети.

Настройка `listen_addresses = ‘localhost’` (или `127.0.0.1`) ограничивает СУБД только локальным интерфейсом. Это означает:

1. **Снижение поверхности атаки** — база данных физически недоступна снаружи, даже если firewall настроен неправильно.
2. **Защита от случайных ошибок конфигурации** — ошибка в правилах iptables или облачного security group не откроет доступ к БД.
3. **Принцип минимальных привилегий** — приложение, работающее на том же сервере, подключается локально, а удалённый доступ организуется через SSH-туннель.

Если приложение и база данных находятся на разных серверах, правильная архитектура — это закрытая внутренняя сеть (VPC, VLAN) с явным разрешением только для конкретных IP-адресов приложений, а не открытый доступ из интернета.

## Практические рекомендации

— Измените порт PostgreSQL в `postgresql.conf` (параметр `port`).
— Установите `listen_addresses = ‘localhost’` или укажите конкретный внутренний IP.
— Настройте `pg_hba.conf` для ограничения доступа по пользователям и IP.
— Используйте firewall (ufw, iptables, облачные security groups) как дополнительный слой защиты.
— Включите SSL для шифрования трафика между приложением и БД.
— Регулярно обновляйте PostgreSQL для устранения известных уязвимостей.

Комплексный подход к безопасности баз данных — это сочетание сетевой изоляции, аутентификации, шифрования и мониторинга подозрительной активности.


Задайте вопрос нейросети

Не нашли ответ? Спросите ИИ — он подготовит развёрнутую статью.