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