如何在Linux上按国别阻止网络流量?
作者:网络转载 发布时间:[ 2016/1/4 10:50:25 ] 推荐标签:操作系统 Linux
阻止来自或发往某个的网络流量
一旦xt_geoip模块和GeoIP数据库都已安装好,你可以立即使用iptables命令中的geoip匹配选项。
$ sudo iptables -m geoip --src-cc country[,country...] --dst-cc country[,country...]
你想要阻止的使用两个字母ISO3166代码来指定,比如说US(美国)、CN(中国)、IN(印度)和FR(法国)。
比如说,如果你想阻止来自也门(YE)和赞比亚(ZM)的入站流量,下面这个iptables命令能实现。
$ sudo iptables -I INPUT -m geoip --src-cc YE,ZM -j DROP
如果你想阻止发往中国(CN)的出站流量,只要运行下面这个命令。
$ sudo iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
匹配条件也可以被“抵消”,只要将“!”放在“–src-cc”或“–dst-cc”的前面。比如说:
如果你想在服务器上阻止所有非美国的入站流量,可以运行这个命令:
$ sudo iptables -I INPUT -m geoip ! --src-cc US -j DROP
针对Firewall-cmd用户
像CentOS/RHEL 7或Fedora这一些发行版已将iptables换成firewalld,作为默认防火墙服务器。在这类系统上,你同样可以利用xt_geoip,使用firewall-cmd阻止流量。上面三个例子可以用firewall-cmd来改写,如下所示。
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc YE,ZM -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
结束语
我在本教程中介绍了iptables/xt_geoip,这是一种简单方法,可以根据来源/目的地,对网络数据包进行过滤。如果需要的话,可以将这件有用的武器部署到你的防火墙系统中。后提醒一句,我应该提到:基于GeoIP的流量过滤并不是在你服务器上阻止某些的万无一失的方法。GeoIP数据库天生不准确/不完整,如果使用VPN、Tor或任何受到危及的中继主机,很容易欺骗来源/目的地。基于地域的过滤甚至会阻止本不该被禁止的合法流量。明白这个局限性后,再决定将它部署到你的生产环境中也不迟。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11