未知命令占用了我的所有 CPU。“ ./4 -c/tmp/ ...”

未知命令占用了我的所有 CPU。“ ./4 -c/tmp/ ...”

这是这个问题 通常,重启几个小时后,我们会得到一个像这样的奇怪名称的进程 htop 输出 事实证明,这是来自 docker postgresql 服务,而 posgres 日志只是用户 postgres 身份验证失败的垃圾邮件,大约每秒 3 次

连接匹配文件“/var/lib/postgresql/data/pg_hba.conf”第 170 行:“host all all all scram-sha-256”2023-12-10 00:56:21.090 UTC [20986] 严重:用户“postgres”的密码验证失败

我尝试了上一篇文章中的一些命令,这是输出

❯ sudo ls -l /proc/729597/exe
[sudo] password for vchitanu:
lrwxrwxrwx 1 lxd docker 0 Dec 17 16:25 /proc/729597/exe -> '/memfd: (deleted)'

❯ sudo ls -l /proc/729597/cwd
lrwxrwxrwx 1 lxd docker 0 Dec 18 10:04 /proc/729597/cwd -> /proc/37027/fd

❯ sudo ls -l /proc/729597/root
lrwxrwxrwx 1 lxd docker 0 Dec 18 10:04 /proc/729597/root -> /

Chat gpt 表示该行为类似于恶意软件。数据库容器是否受到暴力攻击?

答案1

每秒 3 次登录对于暴力攻击来说很奇怪。攻击者需要非常耐心。登录更有可能来自配置错误的系统。在评论中,您表示登录来自未知 IP。这意味着您无法提醒系统所有者此问题。因此,阻止或监控并袖手旁观。

话虽如此,你为什么要允许未知 IP 访问你的数据库?你应该阻止组织外部的所有内容的访问。数据库不应该公开访问。

答案2

数据库容器是否遭受暴力攻击?

可能是这样,但更重要的是你的数据库容器很可能是来源一些未知的攻击。(这些当前的攻击是否真的针对你自己的 Postgres 大多无关紧要;如果进程在该容器中运行,那么容器(很可能是数据库)就是已经妥协。

因此,首先,请停止允许未知 IP 地址进入您的数据库服务器。但同时,请注意您在 tcpdump 中看到的连接是入站还是出站,即端口 5432 是在您这边还是在远程那边——该进程现在很可能正在戳向其他人的开放 Postgres 服务器以进行进一步的传输。

我会执行 acp /proc/729597/exe /root/bad_exe来获取正在运行的程序的副本。即使在使用 /proc/fd 和 memfd 技巧之后,这应该也能起作用。然后您可以尝试执行strings bad_exe该操作来搜索线索。

(此外,gcore -o /root/bad_core 729597 可能努力获取程序内存的副本;再次运行strings它可能会发现一些有趣的东西。)

无论哪种方式,都从头开始重建它,而不是尝试清理它。

相关内容