背景

某项目服务器响应慢,cpu严重超负荷运行,并且有大量的netstat进程,如图:

进程由oracle用户启动,说明是通过oracle用户并非root用户启动。

排查

这种情况,第一直觉就是中毒了,大概率是挖矿程序,Linux中毒第一步就是排查是否有cron记录,大部分病毒都是通过cron进行自启动,cron还能保证进程关闭后能够再次启动,达到死而复生的目的。crontab -l命令显示果然有病毒的定时任务程序脚本

将记录删除掉后,立马又出现,当然,这也是在意料之中,杀不死基本是病毒的标配,如果这个都无法做到,这病毒也拿不出手。之前碰到的病毒,至少过几分钟才重新写入,但这个病毒删除后立马重新写入,这样导致的结果是,你来不及重启服务器就又被写入了。这里简单介绍crontab的机制,crontab数据文件保存在/var/spool/cron目录下,每个用户都有一个单独的文件记录,该文件默认的权限是 rw----(400),也就是只有文件的拥有者有读写权限,并且文件的拥有者归属该用户

-rw------- 1 oracle oinstall 104 Jun 19  2018 oracle
-rw------- 1 root   root      33 Aug 24  2018 root

只要将oracle的crontab文件拥有者改为root,oracle用户就没权限写入

# chown root:root oracle
# ls
-rw------- 1 root root 104 Jun 19  2018 oracle
-rw------- 1 root   root      33 Aug 24  2018 root

修改完后将oracle文件清空,重启服务器

解决

服务器重启后,病毒也随着卷土重来,crontab文件权限被还原(这个是正常情况,重启后权限重置,不是病毒行为),看来病毒除了crontab还有其他复活方式,首先想到的是病毒设置了开机启动,检查了以下脚本

  • /etc/rc.local
  • ~/.bash_profile
  • ~/bashrc
  • /etc/bashrc

并没有发现异常地方,/etc/init.d/目录下都是开机启动的应用程序,怀疑病毒修改了这些应用程序加入了自己的代码,将应用程序的信息导出

# cd /etc/init.d/
# ll > 61.txt

并且找一个相同环境的主机,也导出同样的信息对比

并未发现不一样的地方。

陷入了长时间的僵局,病毒还在肆虐

重点部位打码,避免你们拿去做坏事,顺便说下,这病毒脚本写的真心好。

所有的进程父进程都是1,而进程1就是init进程,也就是初始化进程,两种情况会导致父进程为1

  • 孤儿进程(第一次听到这个词),父进程退出,被init进程领养
  • 初始化进程

所以一开始的重点放在了init上面,当排除init后,就陷入了僵局。

吃了个饭,突然想到,可能是通过远程执行脚本,所以不要饿着肚子解决问题,于是把oracle用户的ssh给禁用了

[root]
chsh oracle -s /sbin/nologin

照着上面的办法,把oracle的crontab给删了,重启服务器。病毒不再启动,说明确实是通过远程的方式执行,那接下来的问题就是如何找到这台服务器?

Linux用户通过ssh登录,如果登录成功都会记录在/var/log/secure文件中。

确实有台主机一直在登录,登录到这台主机上,果然也中毒了,也是同样的方式,借助crontab启动,删除记录后重启启动服务器,病毒不再启动,说明该服务器是0号病人,传染给了其他服务器,并且一直在监控其他服务器的状态,不断写入病毒。

其他

我们的认知里觉得Linux系统是很安全的,不像windows,打补丁是家常便饭,我之前也是这么认为的,但见得多了,反而觉得windows比Linux安全,出于以下几个原因

  • Linux有相比windows较为灵活的脚本语言,并且自带大量的命令,给病毒脚本提供了良好的运行环境,大部分病毒都是通过一个小脚本入侵。
  • 相比windows个人电脑,Linux作为服务器更有入侵的价值,比如最恶心的就是勒索病毒,需要支付大量赎金才能找回数据。
  • Linux作为服务器,更多的是对外提供服务,也就是给全世界打开了一扇门,门牢不牢固很多时候取决于造门的人,也就是各个服务的安全性很难保证。
  • Windows上有很多成熟傻瓜式的杀毒软件,隔壁的大爷都知道没事点开360杀杀毒,但Linux上的可选的杀毒软件并不多,而且由于Linux的特点,基本都是基于命令行,没有可视化。

堡垒机虽然一直被我深恶痛绝,但确实是一种保护环境很好的方式,如果通过你本地可以登录环境,那么环境就会存在以下风险:

  • 你的ssh登录工具如果带有病毒,那么病毒很容易感染环境,所以,ssh工具一定一定要从官网下载,不要随便百度下一个。
  • 内网只要有一台电脑中毒,那么病毒可以通过端口扫描,暴力破解等方式入侵服务器,如果服务器刚好是弱密码,很容易被攻破,这也是本次中毒的原因
Trackback

no comment untill now

Add your comment now