Linux服务器新增IP过滤器
背景:2021/4/23 下午 公司多台服务器 CPU突增至100%,大概率是挖矿进程占用CPU进程。
病毒排查:
解决步骤:
第一步:使用top命令查看当前进程占用情况(目的:快速定位高占CPU的进程)
top
第二步:先停止对应恶意PID进程,为服务器CPU降压(注:这里不推荐直接删除进程,因为挖矿往往存在定时任务,删除后还会自动生成,但停止恶意进程会使其陷入一个执行的空窗期,为我们的清理排查赢得时间)
kill stop 888(进程Id)
第三步:查看定时任务(目的:挖矿进程常有写入定时任务的习惯,所以从定时任务中去定位挖矿文件往往效率较高)
crontab -l
发现可疑定时任务
rm -rf /root/.cache/upd 删除定时任务指向的文件
crontab -e 编辑删除定时任务
发现在定时任务指向目录下有可疑文件
分析后该病毒为挖矿病毒,通过占用Cpu为其他服务器提供算力,开启定时任务需要root权限,之前服务器密码设置简单已更改。
上热菜
Fail2Ban 其实最重要的就是如何根据日志制定有效的监狱规则,看过站点日志都知道,站 点经常收到很多返回码是 404 的请求,但是大多数目录和文件不存在,这些看似“正常”的无效访问,如果数量再大一些频率再高一些会影响服务器带宽和流量的,Fail2Ban通过我们配置的监狱规则文件筛选请求的Ip地址,进行封禁
Fail2Ban
安装
yum install fail2ban -y
yum install fail2ban -y yum install fail2ban-firewalld -y
配置
vi /etc /fail2ban /jail .d /jail .local
#defalut这里是设定全局设置,如果下面的监控没有设置就以全局设置的值设置。
[DEFAULT]
# 用于指定哪些地址ip可以忽略 fail2ban 防御,以空格间隔。
ignoreip = 127.0.0.1/8
# 客户端主机被禁止的时长(默认单位为秒)
bantime = 3600
# 过滤的时长(秒)
findtime = 600
# 匹配到的阈值(次数)
maxretry = 3
[ssh-iptables]
#是否开启
enabled = true
# 过滤规则
filter = sshd
# 动作 port自定义83
action = iptables[name=SSH, port=83, protocol=tcp]
# 日志文件的路径
logpath = /var/log/secure
# 匹配到的阈值(次数)
maxretry = 3
启动服务
systemctl start fail2ban .service
开机自启
systemctl enable fail2ban .service
查看被封禁的Ip
fail2ban-client status ssh-iptables
也可以在宝塔面板上直接配置
搞定收工,点赞关注不迷路哈哈哈哈哈哈~嗝