ufw не разрешает подключения к порту postgres 5432.

Вопрос или проблема

С ufw disable на удаленной системе postgres я могу подключаться с моего локального компьютера

Однако соединение не работает, когда я ufw enable, как показано ниже:

C:\Users\HOME>telnet 80.240.24.195 5432
Connecting To 80.240.24.195...Could not open connection to the host, on port 5432: Connect failed

Ниже приведена моя конфигурация postgres на момент перезапуска.

cat /etc/postgresql/12/main/postgresql.conf

# - Connection Settings -

listen_addresses="*"          # на каких IP-адресах слушать;
                                        # список адресов, разделённый запятыми;
                                        # по умолчанию 'localhost'; используйте '*' для всех
                                        # (изменения требуют перезапуска)
port = 5432                             # (изменения требуют перезапуска)
max_connections = 100                   # (изменения требуют перезапуска)
#superuser_reserved_connections = 3     # (изменения требуют перезапуска)
unix_socket_directories="/var/run/postgresql" # список директорий, разделённый запятыми

cat /etc/postgresql/12/main/pg_hba.conf

# Административный вход в базу данных через Unix-доменный сокет
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" только для подключений через Unix-доменный сокет
local   all             all                                     peer
# IPv4 локальные подключения:
host    all             all             127.0.0.1/32            md5

host    all             all             0.0.0.0/0               md5

# IPv6 локальные подключения:
host    all             all             ::1/128                 md5

telnet работает, когда пробую с самого хоста postgres, но когда я пытаюсь подключиться с моего локального ноутбука, это не удается.

root@DKERP:/# ufw status numbered
Статус: активно

     Кому                       Действие    Откуда
     --                         ------      ----
[ 1] 22                         ALLOW IN    Anywhere
[ 2] 8069                       ALLOW IN    Anywhere
[ 3] 443/tcp                    DENY IN     Anywhere
[ 4] 443                        DENY IN     Anywhere
[ 5] 80/tcp                     DENY IN     Anywhere
[ 6] 80,443,5432/tcp            DENY IN     Anywhere
[ 7] 80                         DENY IN     Anywhere
[ 8] 4433/tcp                   DENY IN     Anywhere
[ 9] 5432/tcp                   ALLOW IN    Anywhere
[10] 22 (v6)                    ALLOW IN    Anywhere (v6)
[11] 8069 (v6)                  ALLOW IN    Anywhere (v6)
[12] 443/tcp (v6)               DENY IN     Anywhere (v6)
[13] 443 (v6)                   DENY IN     Anywhere (v6)
[14] 80/tcp (v6)                DENY IN     Anywhere (v6)
[15] 80,443,5432/tcp (v6)       DENY IN     Anywhere (v6)
[16] 80 (v6)                    DENY IN     Anywhere (v6)
[17] 4433/tcp (v6)              DENY IN     Anywhere (v6)
[18] 5432/tcp (v6)              ALLOW IN    Anywhere (v6)

Можете ли вы, пожалуйста, подсказать, что еще нужно сделать, чтобы подключение postgres заработало с моего локального ноутбука?

Была запись в ufw, которая блокировала порт 5432, как видно из вывода. Я удалил эту запись и перезапустил сервис, чтобы это заработало.

[ 6] 80,443,5432/tcp            DENY IN     Anywhere

ufw delete 6

ufw disable

ufw enable

Ответ или решение

Чтобы обеспечить надежное соединение с сервером PostgreSQL через порт 5432 в условиях активированной ufw, важно правильно настроить ваше окружение. Ниже приведены шаги по устранению неполадок, которые помогут решить возникшую проблему.

Анализ проблемы

  1. Конфигурация PostgreSQL:

    • Файл postgresql.conf настроен на прием соединений со всех IP-адресов благодаря строке listen_addresses="*". Это правильно, поскольку позволяет доступ к базе данных из внешних источников.
  2. Настройка pg_hba.conf:

    • Ваша конфигурация pg_hba.conf также соответствует требованиям, поддерживая подключение для всех адресов через метод идентификации md5.

Проблемы с ufw

Вы отметили, что при отключенной ufw соединение успешно устанавливается, а при включении — нет. Это указывает на то, что ошибки связаны с правилами ufw.

  1. Анализ текущих правил ufw:
    • Ваша текущая конфигурация показывает, что порт 5432 включен для входящих соединений благодаря записи [9] 5432/tcp ALLOW IN Anywhere.
    • Однако правило [6] 80,443,5432/tcp DENY IN Anywhere означает, что порт 5432 одновременно блокируется. Это правило имеет более высокий приоритет, чем разрешающее правило, поэтому соединения блокируются.

Решение проблемы

Для решения проблемы выполните следующие шаги:

  1. Удаление конфликтующего правила:

    • Удалите запись [6] 80,443,5432/tcp с помощью команды:
      ufw delete 6
  2. Перезагрузка ufw:

    • После изменения правил, перезапустите ufw, чтобы применить новые настройки:
      ufw disable
      ufw enable

Эти шаги должны разрешить конфликтующие правила и позволить подключаться к базе данных через порт 5432, когда ufw включен.

Дополнительные рекомендации

  • Проверка логов: Регулярно проверяйте журналы ufw (/var/log/ufw.log) на предмет записей, которые могут указывать на блокировку трафика.
  • Мониторинг безопасности: Убедитесь, что разрешенные подключения приходят только от надежных источников, чтобы минимизировать угрозу несанкционированного доступа.

Следуя этим рекомендациям, вы сможете обеспечить стабильное и безопасное подключение к PostgreSQL.

Оцените материал
Добавить комментарий

Капча загружается...