CentOS 7上基于国别阻断网络流量

xtables-addons是什么

xtables-addons是一款基于国家GeoIP信息来识别网络流量,用于netfilter/iptables的过滤器扩展。其采用了模块化设计理念,并通过内部的xt_geoip模块实现信息过滤。
在你的Linux系统上,可以很方便的自行编译或通过RPM包安装的方式来构建xtables-addons,而无需重新编译内核或是iptables,构建完成后即可立即使用而无需重启服务或系统。

为什么要安装xtables-addons

基于模块化设计;
适用于针对特定国家或地区作批量化访问控制;
应用无关性;
● xtables-addons基于iptables和GeoIP作过滤,而这两者都是与应用无关的(相反,TCP Wrappers过滤则要求应用的构建方式须符合其设计理念)。

如何安装

1、首先安装依赖

在 Debian,Ubuntu 或 Linux Mint 中安装依赖

sudo apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

在 CentOS,RHEL 或 Fedora 中安装依赖

sudo yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

2、编译安装xtables-addons

经测试本人系统为centos7.2,内核版本为4.x,需要下载xtables-addons-3.0,否则会编译报一堆错,内核为3.x的系统可以下载2.14

wget https://jaist.dl.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-3.0.tar.xz
tar xf xtables-addons-3.0.tar.xz
cd xtables-addons-3.0/
./configure
make
make install

3、为 xtables-addons 安装 GeoIP 数据库

cd geoip/
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
mkdir -p /usr/share/xt_geoip
cp -r {BE,LE} /usr/share/xt_geoip

如何使用

前提:确保安装好xtables-addons和iptables

阻止来自美国的IP流量

iptables -I INPUT -m geoip --src-cc US -j DROP

阻止流向日本的IP流量

iptables -A OUTPUT -m geoip --dst-cc JP -j DROP

其余国家或地区参考如下:
https://en.wikipedia.org/wiki/ISO_3166-1
查看刚添加的规则

iptables -L -n --line-numbers

删除规则(按编号)

iptables -t filter -D OUTPUT 1

对于使用 Firewall-cmd 的用户

firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc YE,ZM -j DROP
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CN -j DROP
firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
添加新评论