一键屏蔽恶意IP!保护你的服务器免受攻击
一键屏蔽恶意IP!保护你的服务器免受攻击
原创 脚本家园 脚本家园 2024-04-29 13:21 云南 听全文
在当今互联网高速发展的时代,服务器安全显得尤为重要。恶意访问、SSH暴力破解等网络安全威胁层出不穷,如何有效地保护我们的服务器免受攻击成为了每个运维人员和网络管理员必须面对的问题。今天,我们就来分享一些实用的脚本,帮助你轻松屏蔽恶意IP,提升服务器的安全性!
图片
一、屏蔽每分钟访问超过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
脚本解析:
首先,我们通过date命令获取当前的日期和时间,以便后续筛选日志。
使用tail命令读取Nginx访问日志的最新5000行,通过grep和awk筛选出当前时间的记录,并统计每个IP的访问次数。若某个IP的访问次数超过设定的阈值(这里为100次),则将其视为异常IP。
遍历异常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
脚本解析:
与前面类似,我们首先通过date命令获取当前的日期和时间。
使用tail命令读取SSH登录日志的最新10000行,通过grep和awk筛选出当前时间的记录,并统计每个IP的登录尝试次数。若某个IP的登录尝试次数超过设定的阈值(这里为5次),则将其视为异常IP。
遍历异常IP列表,检查iptables规则中是否已存在该IP的屏蔽规则。若不存在,则使用iptables命令添加屏蔽规则,阻止该IP的访问,并将操作记录到日志文件中。
总结:
通过以上两个脚本示例,你可以轻松地屏蔽那些频繁访问或尝试SSH登录的恶意IP地址。这些脚本可以根据你的实际需求进行调整和优化。同时,请注意定期检查和更新你的iptables规则以及相关的日志文件以确保服务器的安全。在网络安全日益重要的今天希望这些实用的小技巧能帮助你更好地保护你的服务器免受攻击!
脚本家园
阅读 6446
人划线
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2023-05-10 go的IO读取与写入
2023-05-10 go提醒操作
2023-05-10 使用blackbox_exporter监控接口的返回内容
2023-05-10 Prometheus 部署 Black Exporter 黑盒监控 DNS-TCP-ICMP
2023-05-10 iptables之forward转发
2022-05-10 TCP就没什么缺陷吗
2022-05-10 Nginx配置域名反向代理MQTT 配置mqtt /ws /wss访问域名连接。