yum install xz gcc make wget unzip kernel-devel-$(uname -r) iptablesdevel.$(uname -p) perl-Text-CSV_XS

#安裝必要套件

uname -r

#確認目前的kernel版本

ls /usr/src/kernels/

#請確認底下的目錄名稱必須要跟上個步驟的版號完全相同,若不同時請確認yum安裝的kerneldevel套件版本,對不上時有下列幾種做法。

1) 一般、非客制化Linux版本,請參照下述
---

rpm -e kernel-devel

#移除目前裝的版本

wget *.rpm

#至 rpm包網站 http://rpm.pbone.net 下載與kernel相同版號的 kernel-devel

rpm -hiv *.rpm

#安裝kernel-devel套件

uname -r

#確認目前的kernel版本ls /usr/src/kernels/
#確認套件版本
---
2) Aamzon EC2請參照下述
---

rpm -e kernel-devel

#移除目前裝的版本

yum install kernel

#kernel版本升級

reboot

#重開機

uname -r

#確認目前的kernel版本

yum install kernel-devel-$(uname -r)

#再次yum安裝kernel-devel套件

ls /usr/src/kernels/

#確認套件版本
---
iptables -V
#確認iptables版本

wget xtables-addons-*.tar.xz

#至 https://sourceforge.net/projects/xtables-addons/files/Xtablesaddons/ 下載與iptables相對應的套件版本。
#iptables 1.47請用 xtables-addons-1.47.tar.xz
#aws-ec2 請用 xtables-addons-3.0.tar.xz

tar Jxf xtables-addons-1.47.tar.xz
cd xtables-addons-1.47
./configure
make
make install

#編譯遇到以下錯誤

請安裝iptables-devel

yum -y install iptables-devel

#其中若有遇到問題,可調整mconfig中的模組留geoip即可。若遇到 xtnu_ipv6_find_hdr' 錯誤處理程序如下

vim /lib/modules/`uname -r`/build/include/linux/autoconf.h
#define CONFIG_IP6_NF_IPTABLES_MODULE 1 #

#使用/* */注解此行

或是進入extensions資料夾執行

sed -i '/define WITH_IPV6/d' compat_xtables.c xt_psd.c xt_length2.c xt_TARPIT.c xt_SYSRQ.c xt_RAWNAT.c

若鍽譯時遇到 /lib/modules/XXXX.x86_64/build/ 路徑錯誤時

cd /lib/modules/XXXX.x86_64/
rm -rf build
ln -s ../../../usr/src/kernels/XXX.x86_64/ build

#重新連結到正確的目錄

cd geoip

#開始建立IP資料庫

##若是使用付費版的GeoIP2 Databases源##
./xt_geoip_dl
./xt_geoip_build GeoIPCountryWhois.csv
##

##若是使用免費版的GeoLite2 Databases源##
wget https://github.com/mschmitt/GeoLite2xtables/archive/master.zip
#下載轉格式工具程式GeoLite2xtables
unzip master.zip
cd GeoLite2xtables-master
./00_download_geolite2
./10_download_countryinfo
cat /tmp/GeoLite2-Country-Blocks-IPv4.csv | ./20_convert_geolite2 /tmp/CountryInfo.txt > ../GeoIPCountryWhois.csv
cd ..
./xt_geoip_build GeoIPCountryWhois.csv

mkdir /usr/share/xt_geoip 
mv BE LE /usr/share/xt_geoip/ 
lsmod|grep geo

若是遇到下圖錯誤表示perl缺少模組

yum install *YAML* perl-CPAN
perl -MCPAN -e shell
#預設回答yes即可

What approach do you want?  (Choose 'local::lib', 'sudo' or 'manual')
 [local::lib] sudo #輸入sudo
cpan[1]> install NetAddr::IP
cpan[1]> exit

若是處理csv檔案有出現錯誤如下

Can't locate Text/CSV_XS.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at ./xt_geoip_build line 10.
BEGIN failed--compilation aborted at ./xt_geoip_build line 10.

解決方式

perl -MCPAN -e'install Text::CSV_XS'

#確認是否有安裝成功

iptables -I INPUT -m geoip --src-cc PH,KR -j DROP
#
使用範例
#一行命令中最多可以使用10個國家
iptables -A except -p TCP --dport 80 -m geoip --src-cc CN -j ACCEPT
#
範例:只允許中國IPTCP80連線
iptables -A except -p TCP -m multiport --dports 80,443 -m geoip --src-cc CN -j ACCEPT
#
範例:只允許中國IPTCP80443連線
iptables -A pig -m geoip --src-cc tw -j DROP
#
若是要加進火牆shell請用這組。
iptables -n --list INPUT
#
確認規則是不是有吃到

 

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料