在服務器上增加 iptables chain
1iptables -N black_ip_list
2iptables -I INPUT -p tcp -m multiport --dports 80,443 -j black_ip_list
新建 bash 文件 banip.sh
在這個文件中,首先清空 black_ip_list 中的規則, 然後從 mitchellkrogza/nginx-ultimate-bad-bot-blocker
中獲取最新的IP BLACKLIST 列表,循環每一個IP地址,將其設為拒絕請求。
1#!/bin/bash
2iptables -F black_ip_list
3iptables -A black_ip_list -j RETURN
4
5wget https://raw.githubusercontent.com/mitchellkrogza/nginx-ultimate-bad-bot-blocker/master/_generator_lists/bad-ip-addresses.list -O old.blackip.txt 2>/dev/null
6
7for ip in `cat old.blackip.txt`; do
8iptables -I black_ip_list 1 -s $ip -j REJECT --reject-with icmp-port-unreachable;
9done
將 banip.sh 文件權限變更為可執行
1sudo chmod a+x banip.sh
執行 banip.sh 文件
1sudo ./banip.sh
TIPS:
- 可以隔段時間執行一下該scripts,以獲取最新的block ip 列表
- 解封ip
1iptables -D black_ip_list -s <ip> -j REJECT --reject-with icmp-port-unreachable
- 查看所有的 iptables chain 列表,並帶序號
1iptables -L INPUT -n --line-numbers
- 檢視當前 iptable 的所有規則
1iptables -nvL
- 清空和刪除 chain
1iptables -F black_ip_list
2iptables -X black_ip_list
注意,如果沒有先清空而直接刪除chain會拋出錯誤
1iptables: Too many links.
延伸閱讀: