第一步:安装xtables-addons
我们可以使用以下方式安装xtables-addons。
使用apt-get安装
sudo apt-get install xtables-addons-common
使用module-assistant安装
sudo apt-get install module-assistant xtables-addons-source
sudo module-assistant --verbose --text-mode auto-install xtables-addons
源码安装
sudo apt-get install git bc libncurses5-dev libtext-csv-xs-perl autoconf automake libtool xutils-dev iptables-dev
git clone git://git.code.sf.net/p/xtables-addons/xtables-addons
cd xtables-addons
./autogen.sh
./configure
make
sudo make install
第二步:创建国家数据库
sudo apt-get install libtext-csv-xs-perl unzip
sudo mkdir /usr/share/xt_geoip
sudo /usr/lib/xtables-addons/xt_geoip_dl
sudo /usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
sudo rm GeoIPCountryCSV.zip GeoIPCountryWhois.csv GeoIPv6.csv
重启系统
reboot
检测模块的依赖性(只需要执行一次即可):
sudo depmod
第三步:创建iptables规则
阻止来自俄罗斯和韩国的流入请求:
sudo iptables -A INPUT -m geoip --src-cc RU,KR -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
在ens3接口允许来自秘鲁的对22端口的流入请求:
sudo iptables -A INPUT -i ens3 -p tcp -m tcp --dport 22 -m geoip --src-cc PE -j ACCEPT
只允许来自中国的对443端口的流入请求:
sudo iptables -A INPUT -p tcp -m tcp --dport 443 -m geoip --src-cc CN -j ACCEPT
第四步:定时更新数据库
创建定时更新脚本:
vi /etc/cron.monthly/geoip-updater
脚本内容如下:
#!/usr/bin/env bash
# this script is intended to run with sudo privileges
echo 'Removing old database---------------------------------------------------'
rm -rf /usr/share/xt_geoip/*
mkdir -p /usr/share/xt_geoip
echo 'Downloading country databases-------------------------------------------'
mkdir /tmp/geoip-updater
cd /tmp/geoip-updater
/usr/lib/xtables-addons/xt_geoip_dl
echo 'Building geoip database-------------------------------------------------'
/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip *.csv
echo 'Removing temporary files------------------------------------------------'
cd /tmp
rm -rf /tmp/geoip-updater
设置该脚本可被执行:
sudo chmod +x /etc/cron.monthly/geoip-updater