| 后端 , PostgreSQL
在买入一台腾讯云服务器不久后,我在这里部署了我的博客后台。紧接着,腾讯云就提示我,这台云服务器被黑客入侵了!!??
当时我还不相信,天真地以为这是腾讯云误报。结果,当我连接到服务器终端的时候才发现,PostgreSQL CPU 使用率高达100%!!
所以,到底是什么情况?
首先,在云服务器控制台查看监控面板:
果然,很长一段时间内的 CPU 使用率都是极高的!!!
然后,在服务器的终端运行 top
命令,发现了一个进程的 %CPU
值非常高!如下所示:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
28923 70 20 0 633580 19664 488 S 96.7 0.0 2408:51 Dp2N
如果想清晰地看到进程之间的层级关系,建议使用 htop。
这时候,连接到 PostgreSQL 并执行 SELECT pid, datname, usename, query FROM pg_stat_activity
,你可能会看到类似的奇怪请求:
pid datname username query
19882 postgres postgres select Fun013301 ('./x3606027128 &')
19901 postgres postgres select Fun013301 ('./ps3597605779 &')
可能有人会认为这是死掉的事务导致的,但是执行以下命令在数据库中查询后,并没有发现相应的结果。
SELECT max(now() - xact_start) FROM pg_stat_activity WHERE state IN ('idle in transaction', 'active');
其实这是我第一次遇到这种情况,所以我有点手足无措。但是,我想先停掉这个 CPU 使用率非常高的进程。
而且,我往往会先确定是不是自己操作数据库的方式有问题,之后我才去排查导致问题的其他原因。
然而,我停掉这个进程还没超过一个小时,它就又自动启动了。不能忍,一定要干掉它!
经过一番仔细的搜索,终于知道这是什么情况了。原来,我的服务器已被黑客入侵,并被用于区块链数字货币挖矿!
黑客入侵的方式非常简单,连接我的服务器中的 PostgreSQL 数据库,然后执行自定义的函数。所以,腾讯云报警的时候提供的信息和 PostgreSQL 相关。
那么,黑客是怎么成功闯入的呢?反思时刻到了~
原因分析:
没有启用安全组
,所有的端口都是可以从外部访问的;没有自定义配置 iptables
,基本上所有的连接都是被允许的;黑客可以从外部连接到 docker 中的数据库
;没有设置高强度的密码
,而且竟然没有开启密码校验机制
;
知道问题产生的原因之后,我们就比较容易解决这个问题了。
针对以上原因,这些是我想到的解决方案:
以上方案中,我个人比较青睐第一种。简单省事,打开云服务器提供商的控制台面板即可完成操作。
你可以像这样,只关闭 PostgreSQL 数据库默认使用的 5432 端口:
也可以只启用常用的端口,其他的端口默认关闭:
强烈推荐后一种方式,这样可以避免很多类似的问题。否则,某天黑客可能又会通过 Redis 或者其他应用入侵你的服务器。
至于其他几种方案,不能从根本上解决这类问题,我也没有亲自尝试。
在配置完安全组之后,我迅速终止了 CPU 使用率极高的进程,然而它没过多久就又启动了。
可以确定,黑客已经为木马配置了自动启动。这时候,唯一的解决办法就是删掉数据库重装,甚至重装操作系统。
不过,由于我使用了 docker,我只需要删掉旧的 PostgreSQL 数据库容器,然后重新配置一个即可。
果然,如此一番操作之后,CPU 使用率再也没有达到非常高的水平。
遇事不要慌,咱们把问题缕清楚之后,各个击破就好!💪
首先,感谢黑客
没有删掉我的数据库里面的内容,非常感谢!🙏🙏🙏 即使我一边解决问题,一边在咒骂你,哈哈~
其次,我以后会更加重视安全问题,尤其是网络安全问题
。感谢黑客给我上了一课,谢谢!
当然,也要感谢腾讯云提供的报警、监控、安全组等优质的服务
,感谢!
最后,希望这篇文章可以帮助更多朋友去解放自己的“挖矿机”
。
参考资料:
CPU 100% usage caused by unknown postgres query
user postgres launches process that takes all CPUs 100% usage
Excessive Postgres Docker CPU Consumption
PostgreSQL: How to change PostgreSQL user password?
觉得不错?点个赞呗~
转载声明:本站文章如无特别说明,皆为原创。转载请注明:Ficow Shen's Blog