如何在Postgres错误日志中忽略认证类错误?
如何排除Postgres日志中的暴力破解认证错误条目
方法1:通过日志系统过滤(推荐)
PostgreSQL本身没有直接排除特定FATAL日志的原生配置,可借助系统日志工具(如rsyslog、syslog-ng)在日志写入阶段过滤掉这类暴力破解相关的认证失败条目。
以rsyslog为例:
- 在rsyslog配置目录下新建过滤规则文件(如
/etc/rsyslog.d/postgres-filter.conf),添加如下规则:
:msg, contains, "FATAL: password authentication failed" ~ :msg, contains, "Role does not exist" ~
- 重启rsyslog服务使配置生效:
systemctl restart rsyslog
该配置会直接丢弃匹配到的暴力破解日志行,不影响其他正常日志的记录。
方法2:调整PostgreSQL日志级别(谨慎使用)
若不想依赖外部工具,可通过调整日志级别过滤FATAL级日志,但此操作会屏蔽所有FATAL级错误(包括合法操作中的严重故障),需谨慎使用:
- 修改
postgresql.conf中的log_min_messages参数:
log_min_messages = PANIC
- 重启PostgreSQL服务:
systemctl restart postgresql
注意:此设置仅会记录数据库崩溃级的PANIC错误,可能遗漏重要的故障信息,不建议在生产环境使用。
方法3:缩小远程连接范围(源头减少日志)
在保留远程连接权限的前提下,可通过限制允许连接的IP段,减少机器人暴力破解的攻击面,从源头上降低这类日志的产生:
- 修改
pg_hba.conf,将原有的0.0.0.0/0替换为实际需要的远程IP段,例如:
host all all 192.168.1.0/24 scram-sha-256
- 重新加载PostgreSQL配置使修改生效:
pg_ctl reload
内容的提问来源于stack exchange,提问作者Leo Jiang
相关产品推荐
相关产品推荐

