Bloquear GOIP con Iptables Linux / Ubuntun 22.04
Instalar depentencias
apt install curl unzip perl
sudo apt-get install xtables-addons-common
sudo apt-get install libtext-csv-xs-perl libmoosex-types-netaddr-ip-perl
Crear directorio
sudo mkdir /usr/share/xt_geoip
geo-update.sh
Crear el archivo /usr/local/bin/geo-update.sh
con el siguiente contenido:
#!/bin/bash
MON=$(date +"%m")
YR=$(date +"%Y")
cd /usr/share/xt_geoip/
wget https://download.db-ip.com/free/dbip-country-lite-${YR}-${MON}.csv.gz -O /usr/share/xt_geoip/dbip-country-lite.csv.gz
gunzip /usr/share/xt_geoip/dbip-country-lite.csv.gz
/usr/libexec/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip/
rm /usr/share/xt_geoip/dbip-country-lite.csv
Ejecutar por primera vez
/usr/local/bin/geo-update.sh
Agregar actualizacion atumatica con crontab
Agregar la siguiente linea en el archivo /etc/crontab
0 0 * * * root /usr/local/bin/geo-update.sh > /dev/null 2>&1
Activar modulo y Verificar
modprobe xt_geoip
lsmod | grep ^xt_geoip
Deberia responder algo asi:
xt_geoip 16384 2
tambien se puede verificar iptables si devuelve ayuda
iptables -m geoip -h
Ejemplos de uso
iptables -I INPUT -m geoip --src-cc CN -j DROP
iptables -I INPUT -m geoip ! --src-cc US -j DROP
iptables -A INPUT -m geoip -p tcp --dport 25 --src-cc RU,CN -j DROP
Para cargar aumaticamente las reglas, se pueden agregar el el siguiente archivo : /etc/ufw/before.rules
pero sacando el "iptables" y claro teniendo activando el ufw