Centos7 安裝 xtables-addons 和一些解決方案




依賴包:

1# yum install gcc gcc-c++ make automake unzip zip xz kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

下載 xtables-addons 的版本:

1# wget http://ufpr.dl.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.10.tar.xz

extract, compile and install :


1# tar -xJf xtables-addons-2.10.tar.xz
2# cd xtables-addons-2.10
3# ./configure
4# make && make install
完成!!
安裝到這裡是可能會遇到問題出現, 我在這裡遇到很多問題:

1. 错误信息 :
make -C /lib/modules/3.10.0-693.el7.x86_64/build M=/home/kpatch/kmod/core kpatch.ko
make: Entering an unknown directory
make: *** /lib/modules/3.10.0-693.el7.x86_64/build: 没有那个文件或目录。 停止。
make: Leaving an unknown directory
make[2]: *** [kpatch.ko] 错误 2
make[2]: Leaving directory `/home/kpatch/kmod/core'
make[1]: *** [all] 错误 2
make[1]: Leaving directory `/home/kpatch/kmod'
make: *** [build-kmod] 错误 2

解决思路:
1、进入/usr/src/kernels/下看有没有相应的内核开发包,没有,就安装,若有跳过第一步
# UNAME=$(uname -r)
# yum install gcc kernel-devel-${UNAME%.*}

2、进入/lib/modules/3.10.0-693.el7.x86_64,创建软连接
# ln -s /usr/src/kernels/3.10.0-693.el7.x86_64/ /lib/modules/3.10.0-693.el7.x86_64/build

2. 错误信息 :
/xtables-addons-2.10/extensions/xt_TARPIT.c: In function ‘tarpit_tcp4’:
/xtables-addons-2.10/extensions/xt_TARPIT.c:295:3: warning: passing argument 3 of ‘NF_HOOK’ from incompatible pointer type [enabled by default]
[….]
make[4]: *** [/tmp/xtables-addons-2.10/extensions/xt_TARPIT.o] Error 1
make[3]: *** [_module_/tmp/xtables-addons-2.10/extensions] Error 2
make[3]: Leaving directory `/usr/src/kernels/3.10.0-327.36.1.el7.x86_64′
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/tmp/xtables-addons-2.10/extensions’
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/xtables-addons-2.10′
make: *** [all] Error 2

解决思路:
在以下的文件里把這兩個打上 # 號就可以了, 忽略此错误。
extension/Kbuild
#obj-${build_TARPIT} += xt_TARPIT.o
extension/Mbuild
#obj-${build_TARPIT} += libxt_TARPIT.so
完成!!

現在为 xtables-addons 安装 GeoIP 数据库


1# cd geoip
2# ./xt_geoip_dl
3# ./xt_geoip_build GeoIPCountryWhois.csv
4# mkdir -p /usr/share/xt_geoip
5# cp -r {BE,LE} /usr/share/xt_geoip
6# modprobe xt_geoip




如何使用

使用規則添加iptables 來執行,  ID 里的是國家的代碼
以下是阻止新加坡 SG 登入 22端口
iptables -A INPUT -p tcp --dport 80 -m geoip ! --src-cc SG -j DROP

阻止来自美国的IP流量
iptables -A INPUT -m geoip --src-cc US -j DROP

阻止流向日本的IP流量
iptables -A OUTPUT -m geoip --dst-cc JP -j DROP
查看刚添加的规则
iptables -L -n --line-numbers

对于使用 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
其余国家或地区参考如下:
https://en.wikipedia.org/wiki/ISO_3166-1


评论

热门博文