前言

近日,检查阿里云服务器账单时,发现莫名其妙少了10块钱;仔细一看,费用都是由服务器流量产生的。

但在这段时间里,我几乎没怎么使用服务器进行大流量操作,相必是被 Hack 了。

抱着这样的想法,我开始检查服务器环境...

检查网络

由于费用都是由服务器流量产生的,第一步自然是检查网络。

使用 nethogs 检查后发现,流量来自多个海外 IP,而且 IP 一直在改变;一直都在连接 RDP 协议的端口;同时还有一个固定不变的 IP ,随机连接服务器上的任意端口。

此时,可推测对方使用了代理 IP 池,尝试对远程桌面服务进行爆破;以及使用一台 IP 不变的设备对服务器进行全端口扫描。

排查问题

本人平时也算是比较注重安全管理,基本上不会存在配置不当而导致被钻空子的情况。

不过由于服务器上也没有什么重要的东西,以防万一,便对服务器硬盘进行重置了。

重置之后,再使用 nethogs 检查流量,发现即使服务全部删除了,始终还是有IP在尝试连接 RDP 协议的端口。

此时,可以排除服务器被挂马、Hack或是中毒的情况;同时确定对方只是在尝试爆破。

应对思路

要解决这种网络问题,只能上防火墙了。

  • 大致思路:只要把所有攻击 IP 都添加到防火墙规则里拒绝掉,那么就无法产生新的流量攻击。

由于使用的是阿里云的服务器,对于固定 IP 的流量,可以使用安全组 Ban 掉。(彻底的)

而 IP 不固定,使用 IP 池进行操作的流量就没那么好处理了;因为安全组需要人工操作,不可能逐个IP进行屏蔽。(应该可调用阿里云 API,但复杂,不考虑)

虽然没办法使用安全组来屏蔽这些恶意 IP,但是 Ubuntu 系统下有 ufw 这个防火墙,使用简单,与程序交互也方便。

  • 那么,只要写一个程序,从 nethogs 获取到可疑的IP,然后调用 ufw 添加拒绝该 IP 所有连接的规则,运行一段时间之后便无法产生新的攻击。

    • 由于是私人服务器,只在国内使用;那么使用 GeoIP 对所连接的 IP 进行检测,除了 Country 为 CN 外的所有 IP 都 Ban 掉即可。

代码实现

代码使用Python3实现,请到GitHub查看。

后话

攻击的 IP,是真的多;跑了一天,添加了 1400+ 条规则。

再后来(01.22)听说,深 圳 网 安在那段时间里似乎有对阿里云的服务器在扫描。