使用iptables阻止任何国家/地区的IP地址
本文介绍如何在iptables的帮助下阻止任何国家/地区的IP地址。
资料来源: http : //blogama.org/node/获取IP地址的API阻止
首先,您需要知道要阻止的国家/地区的代码(ISO 3166格式)。 完整的列表可以在这里 。
一旦你有国家代码,你现在可以通过以下url获得列表(在这个例子中是阿富汗和阿根廷):
http://blogama.org/country_query.php?country=AF,AR
如果您不看到IP地址,请查看页面代码。
数据更新的频率
在每个月的第一个星期。
完整的SQL数据库
有关此数据的完整SQL数据库,请阅读此页面 。
自动bash脚本来阻止iptables中的这些IP地址
以下脚本将:
- 从我们的API获取要阻止的国家/地区的正确IP地址
- 在iptables中添加这些规则。
#!/bin/bash ###PUT HERE COMA SEPARATED LIST OF COUNTRY CODE### COUNTRIES="AK,AR" WORKDIR="/root" ####################################### cd $WORKDIR wget -c --output-document=iptables-blocklist.txt http://blogama.org/country_query.php?country=$COUNTRIES if [ -f iptables-blocklist.txt ]; then iptables -F BLOCKDB="iptables-blocklist.txt" IPS=$(grep -Ev "^#" $BLOCKDB) for i in $IPS do iptables -A INPUT -s $i -j DROP iptables -A OUTPUT -d $i -j DROP done fi rm $WORKDIR/iptables-blocklist.txt