xtables-addons
是一款基于国家GeoIP信息来识别网络流量,用于netfilter/iptables
的过滤器扩展。其采用了模块化设计理念,并通过内部的xt_geoip模块实现信息过滤。 在你的Linux系统上,可以很方便的自行编译或通过RPM包安装的方式来构建xtables-addons,而无需重新编译内核或是iptables,构建完成后即可立即使用而无需重启服务或系统。
xtables-addons
基于iptables和GeoIP作过滤,而这两者都是与应用无关的(相反,TCP Wrappers过滤则要求应用的构建方式须符合其设计理念)。
kmod-xtables-addons
,再安装xtables-addons
,因为后者依赖于前者。 # yum -y install kmod-xtables-addons # yum -y install xtables-addons- 利用xtables-addons源码包中的下载脚本
- 获取xtables-addons源码包
# wget -O /usr/src/xtables-addons-2.14.tar.xz https://sourceforge.net/projects/xtables-addons/files/latest/download?source=files
- 获取GeoIP数据库
# cd /usr/src/
# yum -y install xz unzip tree #如果是最小化安装的CentOS,需手动安装xz和unzip,通过脚本下载的数据库为zip格式,需借助unzip解压缩
# tar Jxf xtables-addons-2.14.tar.xz
# cd xtables-addons-2.14/geoip/
# tree
.
├── Makefile.am
├── Makefile.in
├── xt_geoip_build
├── xt_geoip_build.1
├── xt_geoip_dl
└── xt_geoip_dl.1
0 directories, 6 files
# ./xt_geoip_dl #下载GeoIP数据库
# tree
.
├── GeoIPCountryCSV.zip
├── GeoIPCountryWhois.csv
├── GeoIPv6.csv
├── Makefile.am
├── Makefile.in
├── xt_geoip_build
├── xt_geoip_build.1
├── xt_geoip_dl
└── xt_geoip_dl.1
0 directories, 9 files
- 将数据库转换成xtables-addons所能识别的格式
# yum -y install perl-Text-CSV_XS #安装CSV格式转换器
# mkdir -pv /usr/share/xt_geoip #创建数据库文件默认存储目录。使用RPM方式安装xtables-addons。必须将GeoIP数据存储在该路径下
# ./xt_geoip_build -D /usr/share/xt_geoip *.csv #进行格式转换
# tree /usr/share/xt_geoip/ -L 1 #生成两个目录BE和LE,目录下保存的文件分别有.iv6和.iv4
/usr/share/xt_geoip/
├── BE
└── LE
2 directories, 0 files
firewalld
的直接选项可以使服务和应用程序能够增加规则 firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc JP,CU -j DROP firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc CA -j DROP
xtables-addons
可以对特定国家/地区的流量作限制,但通过V**
等工具仍可绕过;同时,使用GeoIP数据库意味着你需要经常去更新数据库,并可能存在一定数量的信息准确度问题(至少免费版是这样的),因此我的建议是,在使用xtables-addons
前在团队内部确定可行性和必要性。