搜尋此網誌

2015年9月1日 星期二

iptables阻檔特定國家連線 - 使用Xtables-addons xt_geoip

Xtables-addons是一套iptables/ip6tables的模組擴充軟體,它與patch-o-matic(-ng)相同,都是用來擴充iptables/ip6tables的功能,兩者的差別在於patch-o-matic(-ng)需要將kernel重新編譯,Xtables-addons不需要,在管理與維運上可以簡化許多工作,且patch-o-matic(-ng)已經好幾年沒有更新了。

Xtables-addons的模組清單可以參考這個網址: http://xtables-addons.sourceforge.net/modules.php

各個模組的使用方法可參考:  man Xtables-addons


Xtables-addons安裝

Xtables-addons雖然不需要重新編譯Kernel,但不同版本的Xtables-addons各自有支援的kernel,因此在安裝前需要查看系統Kernel版本:

[root@jyc-blog ~]# uname -r
3.10.0-229.11.1.el7.x86_64

Xtables-addons與kernel版本的對應: 

2.7與2.8版以上只支援Kernel 4+,因此我們下載2.6版 : 


安裝前有一些相依套件要先安裝:

[root@jyc-blog xtables-addons-2.6]# yum install gcc gcc-c++ make automake unzip zip xz kernel-devel-`uname -r` iptables-devel perl-Text-CSV_XS -y


編譯:

[root@jyc-blog xtables-addons-2.6]# ./configure ; make ; make install


xt_geoip module

xt_geoip模組的功能是用來比對封包的來源或目的地的國家,它支援ipv4和ipv6。

它使用的資料庫是MaxMind GeoLite版,因為是免費的所以比較慢,更新時間為每個月的第一個星期二。


開始使用前我們要先下載geoip資料庫:

[root@jyc-blog xtables-addons-2.6]# cd geoip/
[root@jyc-blog geoip]# ./xt_geoip_dl

執行完後會多出兩個檔案:GeoIPCountryWhois.csv與GeoIPv6.csv。
xt_geoip_dl是xtables-addons內建的工具,還有另一個工具用來將CSV檔轉換成Binary格式:

[root@jyc-blog geoip]# ./xt_geoip_build GeoIPCountryWhois.csv  GeoIPv6.csv

轉換後產生兩個資料夾BE和LE,要將這兩個資料夾搬到iptables搜尋的目錄:

[root@jyc-blog geoip]# mkdir -p /usr/share/xt_geoip
[root@jyc-blog geoip]# mv BE/ LE/ /usr/share/xt_geoip

也可以將指令簡化成:
[root@jyc-blog geoip]# ./xt_geoip_build -D /usr/share/xt_geoip *.csv

查看安裝是否成功:
[root@jyc-blog geoip]# lsmod | grep xt_geoip
xt_geoip               12775  3


xt_geoip Usage:
--src-cc, --source-country country[,country...]
--dst-cc, --destination-country country[,country...]


範例:
[root@jyc-blog ~]# iptables -N GEOIP_REJECT
[root@jyc-blog ~]# iptables -I GEOIP_REJECT -m geoip --src-cc CN,KR,KP -j DROP
[root@jyc-blog ~]# iptables -I INPUT -j GEOIP_REJECT
[root@jyc-blog ~]# iptables -I INPUT -m geoip --src-cc TW -j ACCEPT


xt_geoip的國碼是根據ISO-3166的格式,可以參考


定期更新geoip資料庫

[root@jyc-blog bin]# cat xt_geoip.sh
#!/bin/bash
XTABLE_PATH="/usr/local/src/xtables-addons-2.6"

cd ${XTABLE_PATH}/geoip
./xt_geoip_dl
./xt_geoip_build -D /usr/share/xt_geoip *.csv




修正SELinux權限 


[root@jyc-blog ~]# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*
[root@jyc-blog ~]# chcon -vR --type=lib_t /lib64/xtables/*

修正完後再手動將xt_geoip模組載入

[root@jyc-blog ~]# modprobe xt_geoip







沒有留言:

張貼留言