统计
  • 建站日期:2022-01-17
  • 文章总数:4570 篇
  • 评论总数:34060条
  • 分类总数:43 个
  • 最后更新:今天

一键屏蔽恶意IP!保护你的服务器免受攻击

作者头像
首页 云服务器 正文
广告
广告
广告
广告
广告
广告

在当今互联网高速发展的时代,服务器安全显得尤为重要。恶意访问、SSH暴力破解等网络安全威胁层出不穷,如何有效地保护我们的服务器免受攻击成为了每个运维人员和网络管理员必须面对的问题。今天,阿影就来分享一些实用的脚本,帮助你轻松屏蔽恶意IP,提升服务器的安全性!

image.png

一、屏蔽每分钟访问超过200的IP

面对恶意的频繁访问,我们可以采取屏蔽IP的策略。以下是通过分析Nginx访问日志来屏蔽恶意IP的脚本:

#!/bin/bash  

DATE=$(date +%d/%b/%Y:%H:%M)  

# 通过tail读取最新的5000行Nginx访问日志,筛选出当前时间的记录,并统计每个IP的访问次数  
# 若某个IP的访问次数超过100次(可根据实际需求调整),则视为异常IP  
ABNORMAL_IP=$(tail -n5000 access.log | grep $DATE | awk '{a[$1]++}END{for(i in a)if(a[i]>100)print i}')  

# 遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则  
# 若不存在,则添加屏蔽规则,阻止该IP的访问  
for IP in $ABNORMAL_IP; do  
    if [ $(iptables -vnL | grep -c "$IP") -eq 0 ]; then  
        iptables -I INPUT -s $IP -j DROP  
    fi  
done

脚本解析:

  1. 首先,我们通过date命令获取当前的日期和时间,以便后续筛选日志。

  2. 使用tail命令读取Nginx访问日志的最新5000行,通过grepawk筛选出当前时间的记录,并统计每个IP的访问次数。若某个IP的访问次数超过设定的阈值(这里为100次),则将其视为异常IP。

  3. 遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则。若不存在,则使用iptables命令添加屏蔽规则,阻止该IP的访问。

二、屏蔽每分钟SSH尝试登录超过10次的IP

对于SSH暴力破解等恶意登录行为,我们也可以采取类似的策略进行屏蔽。以下是通过分析SSH登录日志来屏蔽恶意IP的脚本:

方法1:通过lastb获取登录状态

由于篇幅限制,这里仅展示部分关键代码。你可以通过lastb命令获取最近的登录记录,然后筛选出当前时间的记录,并统计每个IP的登录尝试次数。若某个IP的登录尝试次数超过设定的阈值(如10次),则将其视为异常IP,并进行屏蔽。

方法2:通过日志获取登录状态

对于使用OpenSSH的服务器,你可以通过分析/var/log/auth.log日志来屏蔽恶意IP。以下是相应的脚本示例:

#!/bin/bash  

DATE=$(date +"%b %d %H")  

# 通过tail读取最新的10000行SSH登录日志,筛选出当前时间的记录,并统计每个IP的登录尝试次数  
# 若某个IP的登录尝试次数超过5次(可根据实际需求调整),则视为异常IP  
ABNORMAL_IP="$(tail -n10000 /var/log/auth.log | grep "$DATE" | awk '/Failed/{a[$(NF-3)]++}END{for(i in a)if(a[i]>5)print i}')"  

# 遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则  
# 若不存在,则添加屏蔽规则,并记录操作日志  
for IP in $ABNORMAL_IP; do  
    if [ $(iptables -vnL | grep -c "$IP") -eq 0 ]; then  
        iptables -A INPUT -s $IP -j DROP  
        echo "$(date +"%F %T") - iptables -A INPUT -s $IP -j DROP" >> ~/ssh-login-limit.log  
    fi  
done

脚本解析:

  1. 与前面类似,我们首先通过date命令获取当前的日期和时间。

  2. 使用tail命令读取SSH登录日志的最新10000行,通过grepawk筛选出当前时间的记录,并统计每个IP的登录尝试次数。若某个IP的登录尝试次数超过设定的阈值(这里为5次),则将其视为异常IP。

  3. 遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则。若不存在,则使用iptables命令添加屏蔽规则,阻止该IP的访问,并将操作记录到日志文件中。

总结:

通过以上两个脚本示例,你可以轻松地屏蔽那些频繁访问或尝试SSH登录的恶意IP地址。这些脚本可以根据你的实际需求进行调整和优化。同时,请注意定期检查和更新你的iptables规则以及相关的日志文件以确保服务器的安全。在网络安全日益重要的今天希望这些实用的小技巧能帮助你更好地保护你的服务器免受攻击!

 

版权说明
文章采用: 《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权。
版权声明:本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系客服并出示版权证明以便删除!
迅速找出占用CPU和内存资源的“元凶”进程
« 上一篇 04-30
2024 Google SEO【流量下降的原因和解法】
下一篇 » 04-29

发表评论

  • 泡泡
  • 阿呆
  • 阿鲁
  • 蛆音娘
    没有更多评论了