记录一次Linux服务器被挖矿的经历(chattr文件权限被改)及解决办法
服务器被人挖矿,用sudo权限删除可疑进程后,发现有几个文件始终不能被具有sudo权限的用户删除。上网查找发现,这几个文件的属性被chattr文件(默认路径/usr/bin)修改,这里分两种情况:
一般情况
采用lsattr文件查看不能删除文件(例如temp.txt)的属性
lsattr temp.txt
得到如下结果
该temp.txt文件被增加了属性i,因此不能被具有sudo权限的用户删除。用chattr文件去除该属性后,即能够正常删除该文件,具体命令如下:
sudo chattr -i temp.txt
再次查看temp.txt的属性
lsattr temp.txt
此时,得到如下结果,则该文件能够被正常删除了。
特殊情况
特殊情况,挖矿的人还会进一步篡改或者替换chattr文件(例如,给chattr文件增加了i和a的属性),因此chattr文件不再具有更改temp.txt文件属性的能力,也就意味着无法删除temp.txt,那么ta就能继续挖矿了。在这种情况下,需要重新下载一个chattr文件,具体过程如下:
下载chattr对应的c文件,上传到服务器任意位置(例如/home)
下载地址:chattr.c
采用gcc编译chattr.c文件,得到文件a.out
sudo gcc chattr.c
修改a.out文件名为chattr
mv a.out chattr
用编译好的chattr文件,去除掉原本的chattr文件增加的属性(i和a),之后删除原有的chattr文件
sudo ./chattr -ia /usr/bin/chattr
sudo rm -rf /usr/bin/chattr
把编译好的chattr文件拷贝到/usr/bin中
sudo cp -r chattr /usr/bin
之后的操作和一般情况中介绍的一致。
PS
下面的两个方法可以加强服务器的安全性,如果只想了解如何删除文件的话,则不需要看下述的内容了。
关闭root用户远程登录权限
打开ssh的配置文件,关闭root用户的远程登录权限
sudo vi /etc/ssh/sshd_config
把PermitRootLogin这一行后面的yes或者prohibit-password改为no
重启sshd服务
sudo service sshd restart
修改ssh默认登录端口号22
打开ssh的配置文件,添加新端口
sudo vi /etc/ssh/sshd_config
在Port 22这一行下方的任意添加一个Port端口号(例如1234,端口号的范围0~65525)
Port 22
Port 1234
重新启动ssh
sudo service ssh restart
设置防火墙,允许通过新添加的端口号(1234)访问【默认修改端口前已开启防火墙 sudo ufw enable,且允许端口22访问】
sudo ufw allow 1234
重开一个终端,使用新端口(1234)通过ssh远程登录
ssh -p 1234 userid@ip地址
输入密码后,可以顺利登录,则继续下面的步骤
删除默认端口22
打开ssh配置文件
sudo vi /etc/ssh/sshd_config
删除Port 22这一行,再重新启动ssh服务
sudo service ssh restart
参考
- https://blog.csdn.net/weixin_44233841/article/details/105812937
- https://blog.csdn.net/id19870510/article/details/5701227
- https://blog.csdn.net/alex1997222/article/details/79328965