服务器被频繁扫描?用自动化脚本快速封禁恶意 IP

每天都有大量服务器暴露在公网,遭受 SSH 暴力破解、Web 目录探测、RDP 扫描等自动化攻击。即使你改了默认端口、禁用了 root 登录,攻击者仍会持续尝试。手动封 IP 效率低下,且容易遗漏。

本文介绍一套轻量、可自动化、低成本的恶意 IP 封禁方案,适合资源有限的中小企业。

一、识别恶意行为:从系统日志入手

1. SSH 暴力破解

查看 /var/log/auth.log(Ubuntu/Debian)或 /var/log/secure(CentOS):

# 查找失败登录超过 5 次的 IP
awk '/Failed password/ {ip[$11]++} END {for (i in ip) if (ip[i] > 5) print i}' /var/log/auth.log

2. Web 扫描行为

从 Nginx 日志识别高频 404 请求:

# 单 IP 1 小时内 404 超过 20 次
awk -v t=$(date -d '1 hour ago' +"%d/%b/%Y:%H") '$4 > "["t && $9 == 404 {bad[$1]++} END {for (i in bad) if (bad[i] > 20) print i}' /var/log/nginx/access.log

二、自动化封禁:用 iptables + 定时任务

将可疑 IP 自动加入防火墙规则:

#!/bin/bash
# block_malicious.sh

LOG_FILE="/var/log/nginx/access.log"
BLOCK_FILE="/tmp/malicious_ips.txt"

# 提取恶意 IP
awk '$9 == 404 {bad[$1]++} END {for (i in bad) if (bad[i] > 30) print i}' $LOG_FILE > $BLOCK_FILE

# 封禁 IP(跳过已封的)
while read ip; do
  if ! iptables -C INPUT -s "$ip" -j DROP 2>/dev/null; then
    iptables -A INPUT -s "$ip" -j DROP
    echo "$(date): Blocked $ip" >> /var/log/block.log
  fi
done < $BLOCK_FILE

设置 cron 每 10 分钟执行一次:

*/10 * * * * /root/block_malicious.sh

⚠️ 注意:iptables 规则重启后会丢失,建议配合 iptables-persistent 保存。

三、局限性:自动化脚本的短板

  1. 无法应对分布式扫描(每个 IP 只试几次)
  2. 误封风险(如 CDN 回源 IP 被误判)
  3. 无全局情报(不知道某个 IP 是否在攻击其他客户)

此时,云防护服务的优势就体现出来了

四、生产级方案:联动云防护实现智能封禁

我们在客户环境中采用 群联AI云防护 + 高防IP 组合:

  • 高防IP:在攻击流量到达服务器前清洗 DDoS
  • AI云防护
    • 实时分析请求行为,识别扫描、爆破、爬虫
    • 共享威胁情报库,自动封禁全网已知恶意 IP
    • 支持自定义封禁策略(如“1 分钟内 5 次 404”即拦截)

部署后,客户服务器收到的恶意请求下降 98%,运维不再需要半夜处理告警。

五、总结

  • 自动化脚本适合应对低强度、集中式攻击
  • 面对分布式、智能化攻击,建议结合云防护
  • 关键是:让防护从“被动响应”变为“主动拦截”

如果你也在处理服务器扫描问题,欢迎加入我们的技术交流群,群里有不少运维和安全朋友,经常讨论怎么用低成本方案做好防护,也欢迎分享你的自动化脚本!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值