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
#obj-${build_TARPIT} += xt_TARPIT.o
extension/Mbuild
#obj-${build_TARPIT} += libxt_TARPIT.so
完成!!#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
评论
发表评论