PostgreSQL无故自动关停,结合日志排查是否为黑客入侵导致
问题排查结论与建议
日志初步分析
你提供的PostgreSQL运行日志如下:
2021-11-03 07:15:23.704 UTC [354507] postgres@postgres FATAL: password authentication failed for user "postgres" 2021-11-03 07:15:23.704 UTC [354507] postgres@postgres DETAIL: Password does not match for user "postgres". Connection matched pg_hba.conf line 105: "host all all 0.0.0.0/0 md5" 2021-11-03 07:33:29.904 UTC [354788] pgsql@postgres FATAL: password authentication failed for user "pgsql" 2021-11-03 07:33:29.904 UTC [354788] pgsql@postgres DETAIL: Role "pgsql" does not exist. Connection matched pg_hba.conf line 105: "host all all 0.0.0.0/0 md5" 2021-11-03 07:52:40.628 UTC [355083] pgsql@postgres FATAL: password authentication failed for user "pgsql" 2021-11-03 07:52:40.628 UTC [355083] pgsql@postgres DETAIL: Role "pgsql" does not exist. Connection matched pg_hba.conf line 105: "host all all 0.0.0.0/0 md5" 2021-11-03 07:53:02.963 UTC [327839] LOG: received smart shutdown request 2021-11-03 07:53:02.976 UTC [327839] LOG: background worker "logical replication launcher" (PID 327846) exited with exit code 1 2021-11-03 07:53:02.980 UTC [327841] LOG: shutting down 2021-11-03 07:53:03.011 UTC [327839] LOG: database system is shut down
从现有日志记录来看,所有针对PostgreSQL的登录尝试均未成功:postgres用户密码校验失败,pgsql用户本身就不存在,这部分都是公网环境下常态化的数据库端口暴力扫描行为,不是导致服务关停的直接原因。
服务关停原因排查方向
PostgreSQL的smart shutdown request只会在有权限的操作下触发,你可以从两个方向排查:
自身操作/系统配置问题
- 首先确认你是否在对应时间点执行过重启Droplet、停止PostgreSQL服务的操作,服务器重启时系统会默认向PostgreSQL发送关停信号。
- 检查系统日志(
/var/log/syslog或者journalctl -u postgresql),确认对应时间点是否存在内存不足触发OOM、服务异常触发systemd自动停止的记录,小配置的Droplet如果同时运行应用和数据库,很容易出现内存不足导致的服务异常退出。
服务器被入侵的可能性
- 你开放了全端口的操作会大幅提升被入侵的风险,即使数据库密码没被破解,如果SSH等其他服务存在弱密码、未授权访问漏洞,黑客可以先拿到服务器操作系统权限,再手动关停PostgreSQL服务。你可以执行
last命令查看最近的服务器登录记录,核对是否有陌生IP的成功登录记录。 - 排查PostgreSQL的全量日志,确认关停前是否有未知IP成功登录
postgres超级用户的记录,若存在陌生IP成功登录的情况,说明数据库密码已经被暴力破解,超级用户本身有权限执行关停命令。
后续安全建议
即使是个人玩具项目,也不建议开放全端口,至少做以下基础安全配置:
- 在DigitalOcean的防火墙规则里,只放行你需要用到的端口,PostgreSQL的5432端口只允许你自己的常用IP访问,禁止所有未知IP的入站请求。
- SSH服务关闭密码登录,开启密钥登录,更换默认22端口为其他不常用端口,避免被批量爆破。
内容的提问来源于stack exchange,提问作者JayT
相关产品推荐
相关产品推荐

