GeoIP tables Debian 9 + maxmind v2

Desde hace unos meses (finales 2018), ya no tenemos soporte para la v1 de las BBDD de Maxmind, con lo que, para usar los iptables-addon’s, hemos de convertir la base de datos.

Antes de nada, hemos de preparar el sistema operativo, instalando los siguientes paquetes:


# apt-get install module-assistant xtables-addons-source
# module-assistant auto-install xtables-addons-source
# aptitude install xtables-addons-common curl
# perl -MCPAN -e shell
> install NetAddr::IP
# /usr/bin/perl -MCPAN -e'install Text::CSV_XS'

Ahora, creamos una carpeta en /usr/src y descargamos el siguiente archivo:


# wget -c https://github.com/mschmitt/GeoLite2xtables/archive/master.zip
# unzip master.zip

Entramos dentro de la carpeta y ejecutamos los archivos:


# ./00_download_geolite2
# ./10_download_countryinfo

en la carpeta /tmp tenemos los csv para convertir:


root@sipusers01:/tmp# ls -l

-rw-r–r– 1 root root 12208785 Aug 19 22:02 GeoLite2-Country-Blocks-IPv4.csv
-rw-r–r– 1 root root 3792611 Aug 19 22:02 GeoLite2-Country-Blocks-IPv6.csv

 

Y ejecutamos la conversión:


root@sipusers01:/usr/src/geoip/GeoLite2xtables-master# cat /tmp/GeoLite2-Country-Blocks-IPv{4,6}.csv | ./20_convert_geolite2 /tmp/CountryInfo.txt > /usr/share/xt_geoip/GeoIP-legacy.csv

Este proceso, tardará unos segundos…. esperamos a que termine y importamos la BBDD como siempre, a partir del fichero que hemos convertido:


/usr/lib/xtables-addons/xt_geoip_build -D /usr/share/xt_geoip /usr/share/xt_geoip/GeoIP-legacy.csv

A partir de este momento, ya podemos usar el geoip –src-cc. Para banear, por ejemplo a Chile:


iptables -A INPUT -m geoip --src-cc cl -p udp -m udp --dport 5060 -j DROP

GEoIP Debian Wheezy (7)

Otra entrada de apunte…. esta vez, quiero permitir el acceso al puerto 25 de mi mailserver a mi red local, vpn y subredes de españa; ya tengo un antispam en una máquina separada y no me interesa que se acceda de manera habitual para entrega de correo.

La entrada original, se encuentra aquí:

https://terminal28.com/how-to-block-countries-using-iptables-debian/

Esto es solo un ejemplo, pero se puede aplicar a más cosas… ssh, VoIP o lo que necesites.

Primero de todo, instalamos las dependencias:


# apt-get install libtext-csv-xs-perl module-assistant geoip-database libgeoip1
# module-assistant --verbose --text-mode auto-install xtables-addons


Una vez instaladas las dependéncias, instalamos las bbdd de maxmind:

# mkdir /usr/share/xt_geoip
# cd /usr/share/xt_geoip
# wget http://terminal28.com/wp-content/uploads/2013/10/geoip-dl-build.tar.gz
# tar xvf geoip-dl-build.tar.gz
# ./xt_geoip_dl
# ./xt_geoip_build -D . *.csv
# rm -fr geoip-dl-build.tar.gz


Una vez aplicado, configuramos los iptables, tal que:


# Generated by iptables-save v1.4.14 on Fri Jan 3 15:57:31 2014
*filter
:INPUT ACCEPT [541:131352]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [528:125051]
:SIPDOS - [0:0]
:SSHDDOS - [0:0]
:MYSQLDOS - [0:0]
:SMTPDDOS - [0:0]
-A INPUT -m geoip --src-cc CN,UA,TW -j DROP
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 22109 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 22109 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s 192.168.0.0/16 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 10.0.0.0/8 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -m geoip --src-cc ES -p tcp -m tcp --dport 25 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22109 -j SSHDDOS
-A INPUT -p tcp -m tcp --dport 3306 -j MYSQLDOS
-A INPUT -p tcp -m tcp --dport 25 -j SMTPDDOS
-A SIPDOS -j LOG --log-prefix "firewall-sipdos: " --log-level 6
-A SIPDOS -j DROP
-A SMTPDDOS -j LOG --log-prefix "firewall-smtpddos: " --log-level 6
-A SMTPDDOS -j DROP
-A SSHDDOS -j LOG --log-prefix "firewall-sshddos: " --log-level 6
-A SSHDDOS -j DROP
-A MYSQLDOS -j LOG --log-prefix "firewall-mysqldos: " --log-level 6
-A MYSQLDOS -j DROP

COMMIT
Enjoy your iptables 😉