目录
前言
为什么会被攻击那?因为线上的redis服务端口对外开放且没有设密码。为什么没有密码?也不知道原来的开发怎么想的,已经人走茶凉了。我感觉入职这几个月,解决的bug多得让人沉默。因为没人交接,用户量使用又比较多,导致每次有问题都不太好锁定。每次线上出现了问题,我都感觉这个问题解决不了了,要离职了。最后,靠着专业素养一一解决Bug。
解决方案
阶段一:初次解决
- 关闭了对外开发的端口,确保不会再被攻击;
- kill 掉正在疯狂启动的各种redis程序,先是无数个redis客户端,然后又是无数个pnscan程序,光靠kill是kill不掉的,因为进程号在变,意味着他们在快速的创建消亡;
- 百度了一下,pnscan病毒解决,发现病毒升级了,靠着以前的文档已经解决不了他了;
- 分析一波,肯定有个定时任务,也有个redis的配置,找到删除;
# 删除命令
sudo kill -9 $(ps -ef|grep redis|gawk '$0 !~/grep/ {print $2}' |tr -s '\n' ' ')
sudo kill -9 $(pidof pnscan)
/usr/local/bin
# 删除redis配置
/etc
#删除newinit.sh 以及同时产生的文件,删多了导致了服务器登录不上
# 第一次删除直接chmod后rm
chmod 777 newinit.sh
# 删除定时任务
crontab -l
阶段二:再次解决
删除完成后,直到我下班一直未有异常,等到了半夜,运营给我打电话说用户无法使用。登录服务器,依然是pnscan, 我按着阶段一的再次删除,后面7点又出现。意识到事情不简单了,并且newinit.sh无法删除,无法得到文件权限。最后在大佬的帮助下,发现pnscan将/usr/bin/chattr命令赋予了只读属性,唉,pnscan是真的骚。最重要的一步:重启服务器!事实证明光删是没有用的,重启才能解决一切问题。
总结
在大佬的帮助下找到chattr命令无法使用。解决过程中对panscan病毒并不了解,删除病毒文件的时候,删除了同时生成的所有文件(删除之前进行了拷贝),导致阿里云服务器无法登录,最后联系阿里云的工程师恢复删除文件。做开发和运维的,应该更加谨慎,更加小心才行。启用不太成熟的方案,也许会解决问题,也许会导致更大的问题。