我在 AWS EC2 微型实例上运行 PostgreSQL 10.10(Ubuntu 10.10-0ubuntu0.18.04.1)。以前,我允许从任何地方远程连接到 postgres db。几天后,我看到用户运行的未知进程postgres
占用了 100% 的 CPU 使用率。运行top
命令给出类似的输出。
8092 postgres 20 0 302872 266776 0 S 99.3 26.5 2574:21 WI0oUt
没有在后台长时间运行的活动查询。我停止了 postgres DB,但即使这样,那个幽灵进程仍在运行。我得到了问题的可能答案这里。但我需要知道哪个父进程正在启动此类幽灵子进程的执行?如果我使用 运行ps
,PID
我得到的结果PPID
是 1。我需要知道运行这些子进程的受感染程序是什么?
我已经尝试运行man
,appros
对于进程名,我尝试重置postgres
用户密码以解决此问题,但没有效果。有没有办法找出是哪个受感染的程序导致了这种情况?或者如何在不格式化服务器的情况下处理这种情况?
答案1
很难不妥协服务器。最佳做法是:
- 倾倒您的数据库(使用
pg_dump
), - 删除EC2 实例,
- 创造新实例,
- 重新安装postgres,以及
- 重新加载数据。
课:永远不要让数据库服务器向外界开放。使用安全组将访问权限限制为实际需要访问的 IP。最好使用可以自动修补数据库以缓解安全问题的 AWS RDS。