Hugo博客公告弹窗

使用ufw防火墙自动检测和防御高频连接攻击

功能:

  • 实时监控TCP连接
  • 自动识别异常连接
  • 智能封禁可疑IP段
  • 白名单保护机制

ufw安装

如果已经安装可以滤过,如果没有安装必须正确安装后放行ssh端口,避免ssh连接不上,把自己关门外,推荐使用以下脚本一键安装,自动放行ssh

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/block_censys_ips.sh && chmod +x block_censys_ips.sh && ./block_censys_ips.sh

脚本

提示:脚本中的阈值和白名单可自行调整

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/monitor_and_block.sh && chmod +x monitor_and_block.sh

创建日志文件

sudo touch /var/log/ip_monitor.log
sudo chmod 644 /var/log/ip_monitor.log

后台运行

60秒监控频率

nohup ./monitor_and_block.sh > monitor.out 2>&1 &

查看连接数超过100的IP

正常情况下会看到127.0.0.1、172.19.0.2,是本地回环地址和Docker容器的内部IP地址,大量连接是正常的。

netstat -apn | grep 'tcp' | awk '{print $5}' | cut -d: -f1 | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | sort | uniq -c | awk '$1 > 100 {print $0}'

查看除了白名单之外的高连接数IP

netstat -apn | grep 'tcp' | awk '{print $5}' | cut -d: -f1 | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | grep -v "127.0.0.1" | grep -v "192.168.1." | sort | uniq -c | awk '$1 > 100 {print $0}'

显示连接数最多的前10个IP

netstat -apn | grep 'tcp' | awk '{print $5}' | cut -d: -f1 | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | grep -v "127.0.0.1" | grep -v "192.168.1." | sort | uniq -c | sort -nr | head -n 10

手动封禁整个IP段

sudo ufw insert 1 deny from 123.456.789.0/24 to any

解封ip

查看当前规则

sudo ufw status numbered

解封ip

sudo ufw delete [规则编号]

直接指定要解封的IP段

sudo ufw delete deny from 123.456.789.0/24 to any

检查脚本运行状态

ps aux | grep monitor_and_block.sh

查看实时监控输出

tail -f monitor.out

查看封禁日志

tail -f /var/log/ip_monitor.log

停止脚本

方法1:使用 kill 命令(推荐)

sudo kill 34500    # 使用实际的PID

方法2:使用 pkill

sudo pkill -f monitor_and_block.sh
CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-03-10 04:33
clarity统计