Как ограничить доступ к базе PostgreSQL по IP-адресу: настройка pg_hba.conf
- Требуется защитить базу данных 1С от несанкционированного прямого подключения из внешней сети.
- Необходимо запретить доступ к порту 5432 для всех устройств, кроме сервера приложений 1С и рабочего ПК администратора.
- Аудит безопасности требует исключить анонимные и парольные подключения к СУБД с произвольных рабочих станций.
Как устроена безопасность PostgreSQL простыми словами?
Файл pg_hba.conf (Host-Based Authentication) — это главный «пропускной пункт» сервера PostgreSQL. В нем строгими правилами сверху вниз прописано: кому (пользователь), куда (к какой базе), откуда (с какого IP-адреса) и по какому методу проверки пароля разрешено подключаться. Все адреса, не попавшие в разрешающий список, сервер мгновенно отсекает.
Шаг 1. Находим файл pg_hba.conf
- В Windows: путь по умолчанию:
C:\Program Files\PostgreSQL\XX\data\pg_hba.conf(или в папкеC:\ProgramData\...). - В Linux (Ubuntu/Debian/Rocky): путь:
/etc/postgresql/XX/main/pg_hba.confили/var/lib/pgsql/data/pg_hba.conf.
Шаг 2. Структура правила безопасности
Каждая строчка в файле состоит из параметров: ТИП БАЗА ПОЛЬЗОВАТЕЛЬ IP-АДРЕС/МАСКА МЕТОД
Шаг 3. Настройка ограничений (Пример безопасной конфигурации)
Откройте pg_hba.conf в текстовом редакторе. Найдите секцию сетевых подключений и настройте доступ строго по правилам:
# 1. Разрешаем полный локальный доступ самому серверу (localhost)
host all all 127.0.0.1/32 scram-sha-256
host all all ::1/128 scram-sha-256
# 2. Разрешаем подключение к базе 1С ТОЛЬКО с сервера приложений 1С (например, IP 192.168.1.50)
host buh_db usr1cv8 192.168.1.50/32 scram-sha-256
# 3. Разрешаем доступ администратору базы с его рабочего ПК (IP 192.168.1.100)
host all postgres 192.168.1.100/32 scram-sha-256
# 4. ВСЕМ ОСТАЛЬНЫМ ПОДКЛЮЧЕНИЯ ЗАПРЕЩЕНЫ (отклонять любые другие IP)
host all all 0.0.0.0/0 rejectШаг 4. Применение настроек без остановки базы
Чтобы правила вступили в силу, перезагружать весь сервер не нужно. Достаточно отправить команду перечитывания конфига:
- В Linux:
sudo systemctl reload postgresql - В SQL-запросе (pgAdmin/psql): выполните команду
SELECT pg_reload_conf();
Частые вопросы (FAQ)
Что означает маска /32 после IP-адреса?
/32 указывает на один конкретный IP-адрес хоста. Если вам нужно разрешить всю бухгалтерскую подсеть, используйте маску /24 (например, 192.168.1.0/24).
Почему после изменения pg_hba.conf меня перестало пускать в базу?
PostgreSQL читает правила строго сверху вниз до первого совпадения. Если запрещающее правило 'reject' оказалось выше разрешающего, подключение будет заблокировано.
Нужно ли открывать доступ к PostgreSQL для обычных пользователей 1С?
НЕТ! Обычные пользователи 1С подключаются к Серверу приложений 1С (порт 1541/1560), а уже сам сервер 1С подключается к PostgreSQL. Прямой доступ клиентов к порту 5432 СУБД категорически запрещен правилами безопасности.
Какой метод шифрования паролей лучше указывать: md5 или scram-sha-256?
Используйте современный стандарт scram-sha-256. Метод md5 считается устаревшим и уязвимым для перехвата хешей.