文章

记一次主机攻击处置经历

发生啥事

在零点时突然收到腾讯云助手的告警,业务的服务器出现异常的高负载。如下图。后面查明是主机受到了攻击,主要方法是尝试常用账户名&弱密码尝试登录ssh。整个过程大约持续十分钟,没有对服务器&业务系统产生大的影响。

处置过程

查明威胁

服务器负载异常高,首先是要看看是什么进程消耗了大量资源。因此我第一时间用glances(类似于top,但界面更加友好)查看进程占用,看到sshd占用率非常高,其实就已经猜出来,攻击方式是暴力破解我的ssh密码。

这里当时没有留截图,用一个腾讯云监控面板的图代替。其实就是看到cpu占用很高,但内存占用没有增长,磁盘读写这些也没什么,可以看得出来数据库没有受牵连,也不是业务系统负载问题(因为寒假期间,没什么人用),同时看到sshd占用非常高。

判断影响

首先是要看密码是否被破解了。这里如果你根本就没有密码(后面会提到)或者没有使用弱密码,其实不用担心。但是可以使用last命令查看一下最近成功登录的记录。

这里可以看到最近几次都是我自己的登录记录,没有异常ip登录成功,ok放心了。同时,如果你有打开腾讯云的主机安全,有异常ip(主要是跟平时登录的归属地不同)登录也会有告警提示的。

另外就是看一下登陆失败的用户信息,使用lastb命令,这里因为是倒序排列的(最新的记录在最前面),所以使用一下head命令。

可以看到这些尝试的用户都是一些常见的密码,例如postgres、mysql之类的常见的用户名。

同时也可以查看登录日志,使用

tail /var/log/secure 

可以看到其实这些尝试密码的攻击很多(今天又有新鲜的失败记录),最后一条是我登录成功的记录。

详细处置

其实就是没有处置,因为这些破解相对来说没有威胁,攻击的时候虽然cpu占用很高,但没有影响到业务系统的运行。另外,通过查看日志可以发现,这些攻击换ip非常频繁,通过ban ip的方式作用不大。放着不管就ok。

经验总结

这边分成事前&攻击发生时来讨论。

事前

  1. **(推荐)**ssh不要使用密码登录,使用密钥登录,root账号没有密码,你怎么尝试都没有用。

  2. **(必须)**不要设置弱密码!不要设置弱密码!不要设置弱密码!

  3. **(推荐)**如果需要为mysql、git等应用单独开设账号,请指定这些账号使用nologin而非bash,同时限制这些账号只能通过localhost登录。

  4. **(必须)**数据库等设置定时备份,即使被攻击(通常会被勒索)也不会损失太多数据。

  5. ssh服务开在一些非常规随机端口(国外vps常见做法)

License:  CC BY 4.0