FATAL: pg_hba.conf отклоняет соединение для хоста "127.0.0.1", пользователя "postgres", базы данных "prod", SSL выключен - PullRequest
0 голосов
/ 06 сентября 2018

Работает нормально последние несколько месяцев;и неожиданно начал замечать эту ошибку в приложении,

FATAL: pg_hba.conf rejects connection for host "127.0.0.1", user "postgres", database "prod", SSL off

pg_hba.conf имеет,

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5

postgresql.conf имеет,

listen_addresses = '*'

Оба файла не имеютменя трогали / меняли много месяцев.

Кто-нибудь сталкивался с подобной проблемой в работающей среде?

Я столкнулся с несколькими проблемами, связанными с подключением, в stoackoverflow;но все они указывают на неправильную настройку одного из этих двух файлов.Это не проблема в этом случае.


Основная причина найдена и исправлена ​​.

Это то, что произошло (в пользу тех, кто может столкнутьсятакая странная проблема)

  • В pg_hba.conf, прямо вверху файла, были найдены три загадочных объекта
  • Для них был настроен метод reject для пользователяpostgres, pgsql & pgdbadm
  • Никто из членов нашей команды не добавил их
  • Поскольку они были в самом верху, даже до того, как начинается комментарий "# PostgreSQL Client Authentication Configuration File ....", мыне могу заметить это.
  • Я до сих пор не уверен, как они там появились
  • Возможно, это проблема обновления, но мы не обновили Postgres
  • Возможно,быть частично успешной попыткой взлома - все еще исследуя это
  • Но чтобы быть на более безопасной стороне, мы изменили учетные данные сервера и изучили другие методы защиты.

Это просто может спасти кого-тобессонныйночью, если такая проблема возникает, в идеально работающей среде.

1 Ответ

0 голосов
/ 12 октября 2018

У меня такая же проблема. Это взломать То же самое описано здесь:

https://dba.stackexchange.com/questions/215834/postgres-9-6-10-pg-hba-conf-altered

Я получил нового администратора postgres "pgdbadm", которого невозможно удалить, поскольку от него зависели 3 объекта в базе данных template1. После восстановления базы данных template1 из template0 мне удалось удалить пользователя.

В верхней части файла pg_hba.conf появилось два новых правила:

host all postgres 0.0.0.0/0 reject
host all pgdbadm 0.0.0.0/0 md5

Остальная часть файла была такой же.

Мне удалось воспроизвести хак без доступа к оболочке, выполнив в pgAdmin 4 следующее:

-- creating a new table
create table test(a text);

-- inserting the contents of pg_hba.conf into the table
copy test from '/var/lib/pgsql/data/pg_hba.conf';

-- overwriting the pg_hba.conf file with the contents from the table prepended with one random rule (just to test it)
copy (select 'host    all             all             127.0.0.1/32            md5' union all select * from test) TO '/var/lib/pgsql/data/pg_hba.conf';

-- cleanup
drop table a;

-- reloading the server config
select pg_reload_conf();

Конечно, это было возможно только потому, что postgres был настроен на экземпляре AWS EC2 с открытыми всеми портами, пользователем по умолчанию postgres, портом по умолчанию, глупым паролем, который легко угадать: «asd123». Журналы безопасности в экземпляре были полны попыток подключиться к различным портам, с разными именами пользователей и т. Д., Поэтому, скорее всего, это была случайная атака.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...