服务器收到攻击的处理方法
情况简介
实验室有两台gpu服务器在托管在学校的机房,因为是内网所以一直觉得不会被攻击,结果就中招了。一开始发现有一个进程始终占满所有显卡,kill掉以后会自动重启,遂发现是在挖矿。 根据nvidia-smi显示,任务路径为:
/anacodna3/bin/pytorch/python
在这个路径下有三个文件,分别是python,python3和config.ini 查看config.ini:
wallet = 0x8744E800633C8aBeCe080B032484E2BE9Ef7c00c
# wallet = 0x2f3a7C81cec4fF061A1C1FD69613cEc174ecdEcd
coin = ETC
# coin = ETH
rigName = R3-
pool1 = 147.135.10.88:11010
# pool2= 141.95.34.186:11010
# # # # # # # # # # # # # # #
# pool1 = 138.197.183.92:12020
# pool2 = 172.67.179.48:12020
devices = 0,1,2,3,4,5,6,7,8
# devices = 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8
noLog = true
checkForUpdates = true
autoUpdate = true
于是确认是挖矿病毒。
第一次处理
根据学长的提醒,先按特征搜索一下病毒,找找有没有别人写了怎么处理,于是找到了这篇博客Ubuntu的一次惊心动魄的查杀挖矿病毒的经历:病毒伪装成python。 这篇博客简直和我发现的情况一模一样,按照博客里面的步骤,先删除恶意脚本。
删除恶意脚本
但是这里有个坑,删除恶意脚本的时候,明明是root用户,但是却显示没有权限 rm: cannot remove 'python': Opreation not permitted 使用lasttr命令发现目录下的三个文件 ---ia----------- python 被加了不可删除属性,lasttr具体情况参考chattr和lsattr命令 解决方法是用chattr去掉这个属性,命令如下:
chatrr -ia python
但是很坑的一点是系统的chattr文件也被黑了,导致我没法用这条命令去掉不可删除属性,我也无法删除系统的chattr文件。 我只好自己下载chattr重新编译,参考这条博客Linux服务器chattr文件被黑问题解决方法。 成功处理好chattr的问题后,我去掉了上面这三个文件的ia属性,然后删除了恶意脚本:
chattr -ia python
rm -f python
然后查看一下服务器其他用户的文件夹下时候还有恶意脚本
locate config.ini
把这条命令返回的路径下的恶意脚本全部删除,删除的时候注意别把系统的文件也给删了。 但是这样删除完后第二天还是会有新的脚本产生。 接着按照Linux服务器chattr文件被黑问题解决方法安装杀毒软件扫描全盘,分析被感染目录找到木马病毒并删除木马病毒即可。
第二次处理
就是这么倒霉,本来按照上面这篇博客处理完后以为高枕无忧了,结果一个星期之后一切卷土重来,恶意脚本又出现了,并且还没找到木马病毒。在咨询了YirongChen大佬之后,判断是被校内其他主机攻击了,于是对服务器进行了安全策略的升级。
首先和上面一样清理恶意脚本。
然后修改root密码
再修改所有其他用户密码
我用的是chpasswd命令,把其他用户用户名和密码按照
name passwd
的格式放在一个文本里,然后
cat pass.txt | chpasswd
就改好了其他用户的密码
然后清理服务器上的公钥
locate .pub
搜索公钥文件,然后删除id_ras.pub和authorized_keys
限制登录次数,防止密码爆破
# vim /etc/pam.d/login
添加
#auth required pam_tally2.so deny=3 lock_time=600 even_deny_root root_unlock_time=600
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=600
# vim /etc/pam.d/sshd
添加
#auth required pam_tally2.so deny=3 lock_time=600 even_deny_root root_unlock_time=600
auth required pam_tally2.so deny=3 unlock_time=600 even_deny_root root_unlock_time=600
限制root远程登录
vim /etc/ssh/sshd_config
修改
PermitRootLogin no
修改后
systemctl restart sshd.service #重启
增加管理员账号
adduser admin
passwd admin
usermod -G wheel admin
/etc/pam.d/su
去掉注释
auth required pam_wheel.so use_uid
vim /etc/login.defs
文末添加
SU_WHEEL_ONLY yes
添加自动拉黑ip脚本
其他可能用到的命令
查看用户的登录失败次数
pam_tally2 --user name
解锁登录失败被锁定的用户
pam_tally2 --user name --reset
查看远程登录失败的ip和次数(查找攻击源) lastb | awk '{ print $3}' | sort | uniq -c | sort -n