严重:pg_hba.conf拒绝连接主机“ 127.0.0.1”,用户“ postgres”,数据库“ prod”,关闭SSL

时间:2018-09-06 06:06:44

标签: postgresql

最近几个月一直运行良好;突然开始注意到应用程序中的错误,

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中发现了三个神秘的整体
  • 为用户postgres,pgsql和pgdbadm配置了 reject 方法
  • 我们的团队成员中没有一个添加了他们
  • 因为它们位于顶部,甚至在“#PostgreSQL客户端身份验证配置文件......”注释开始之前,我们就没有注意到它。
  • 我仍然不确定这些在这里的出现方式
  • 可能是一些升级问题-但我们尚未更新Postgres
  • 这可能是部分成功的黑客尝试-仍在对此进行调查
  • 为了安全起见,我们更改了服务器凭据,并研究了其他强化方法。

如果在完美运行的环境中发生此类问题,它可能会为某人节省一个不眠之夜。

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。这是一个hack。此处描述了相同的内容:

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

我有一个新的管理员postgres用户“ pgdbadm”,由于template1数据库中的3个对象依赖于此,因此无法删除。从template0恢复template1 db后,我设法删除了该用户。

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”。实例中的安全日志充满了尝试通过各种端口,使用各种用户名等进行连接的尝试,因此很可能是随机攻击。

相关问题