Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, баз данных и сетевого оборудования. Перед выполнением действий обязательно создайте резервную копию. При отсутствии необходимой квалификации обратитесь к ИТ-специалистам.

Настройка pg_hba.conf в PostgreSQL: Аутентификация, SCRAM-SHA-256 и SSL

Обновлено: 26.08.2026  ·  Официальная база знаний
  • Ошибка подключения FATAL: no pg_hba.conf entry for host ... user ... database ....
  • Ошибка FATAL: password authentication failed for user ... при правильном пароле.
  • Предупреждения аудита безопасности о передаче паролей через небезопасный алгоритм md5.

1. Структура записей файла pg_hba.conf

Файл конфигурации оценивает правила сверху вниз до первого совпадения. Формат строки:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

2. Рекомендуемая конфигурация безопасности (/etc/postgresql/16/main/pg_hba.conf)

# 1. Локальные подключения суперпользователя postgres через unix domain socket
local   all             postgres                                peer

# 2. Локальные подключения локальных пользователей ОС
local   all             all                                     peer

# 3. Подключения пула приложений (1С / Web) из доверенной подсети с шифрованием пароля SCRAM
hostssl app_production  app_user        192.168.10.0/24         scram-sha-256

# 4. Подключения репликации
hostssl replication     replicator      192.168.10.50/32        scram-sha-256

# 5. Разрешить локальный мониторинг по IPv4/IPv6 loopback
host    all             exporter        127.0.0.1/32            scram-sha-256
host    all             exporter        ::1/128                 scram-sha-256

# 6. Явный запрет всех остальных подключений (Best Security Practice)
host    all             all             0.0.0.0/0               reject

3. Перевод базы данных на SCRAM-SHA-256

Отредактируйте postgresql.conf:

password_encryption = scram-sha-256
ssl = on

Обновите пароли пользователей в СУБД для генерации SCRAM-хэшей:

ALTER USER app_user WITH PASSWORD 'Strong_Secure_Passw0rd!';

4. Применение настроек без перезагрузки

SELECT pg_reload_conf();
Практический опыт инженера: Никогда не используйте метод trust для удаленных host-подключений. Это полностью отключает проверку подлинности и позволяет любому клиенту в сети авторизоваться под учетной записью суперпользователя.

Частые вопросы (FAQ)

В чем разница между методами peer, md5 и scram-sha-256?

peer сверяет имя системного пользователя ОС ядра Linux с именем в PostgreSQL через Unix-сокет. md5 использует устаревшую уязвимую схему хэширования. scram-sha-256 реализует протокол SASL, исключающий перехват пароля и replay-атаки.

Почему после изменения pg_hba.conf подключения продолжают отклоняться?

PostgreSQL читает правила до первого совпадения. Если выше по файлу находится более общее правило (например, reject или md5), СУБД применит его. Проверьте порядок строк.

Что означает тип подключения hostssl?

hostssl требует от клиента обязательного использования TLS/SSL-соединения. Попытки незашифрованного TCP-подключения будут немедленно отклонены.

Как проверить, какой метод аутентификации использует активная сессия?

Запросите системное представление: SELECT usename, client_addr, backend_type, ssl FROM pg_stat_ssl JOIN pg_stat_activity USING (pid);