功能:
- 实时监控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