Enviado por admin el
Normalmente los clientes de una empresa que vende terminación SIP son casi siempre de una determinada aérea geográfica o, de todas formas, siempre habrán países donde no se vende trafico. En estos caso, para mejorar la seguridad de la PBX, es posible bloquear todas la IP de un determinado país y de esta forma evitar que se presenten ataques procedentes del país mismo.
Este tipo de solución se apoya a una base de datos que contiene todas las IP del mundo divididas por países y Xtables-addons que contiene una serie de módulos adicionales para IPtables entre los cuales se encuentra él que permite interactuar con la base de datos.
Los requerimientos para este tipo de instalación son:
- Tener instalados los paquetes para la compilación de las fuentes.
-
Versión de IPtables >= 1.4.3
-
versión del kernel-source >= 2.6.29
-
Perl
Primero se instalan algunos paquetes necesarios para la compilación de Xtables-addons:
yum install xz iptables-devel zip unzip
Para el paquete que sigue hay que instalar los repositorios de Fedora:
rpm -ivh http://ftp.rediris.es/mirror/fedora-epel/6/i386/epel-release-6-7.noarch.rpm
yum install perl-Text-CSV_XS
Luego se descargan las fuentes de Xtables-addons:
cd /usr/src
wget http://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/1...
Se descomprime el paquete:
tar -xf xtables-addons-1.43.tar.xz
Se entra en la carpeta creada, se compila e instala:
cd xtables-addons-1.43
./configure --prefix=/usr
make
make install
Se entra en la carpeta donde están presentes los script para descargar la base de datos de GeoIP:
cd geoip
Se descarga la base de datos en formato CSV:
./xt_geoip_dl
Desde la base de datos se crean los archivos de las IP por países:
./xt_geoip_build GeoIPCountryWhois.csv
El resultado será la creación de dos carpetas que contienen las IP por países en el formato que IPtables puede leer. Se crea la carpeta predefinida donde IPtables buscará las IP:
mkdir -p /usr/share/xt_geoip/
y se copian las dos carpetas:
cp -r {BE,LE} /usr/share/xt_geoip/
Para bloquear las direcciones IP de un determinado país en IPtables, la sintaxis es:
-A INPUT -m geoip --src-cc CN -j DROP
CN es la sigla del país (en este caso China)
Pueden hacer una prueba bloqueando todas las IP de su País (en este caso Colombia) para el puerto 5060. Se abre el archivo de configuración de IPtables:
nano /etc/sysconfig/iptables
antes de esta linea:
-A INPUT -p udp -m udp --dport 5060 -j ACCEPT
se pone:
-A INPUT -p udp --dport 5060 -m geoip --src-cc CO -j DROP
Se guardan las modificaciones y se reinicia IPtables:
service iptables restart
Ahora se intenta conectarse a Asterisk con las credenciales de unos de los clientes configurados en A2Billing. El registro no funcionará y en IPtables se verá que todos los paquetes han sidos rechazados en la regla recién añadida a IPtables:
Como la base de datos se actualiza periódicamente (una vez al mes), se puede crear uno script que se encargue de eso para luego añadirlo al crontab:
cd /home
nano geoip.sh
Se copias las líneas que siguen:
#!/bin/bash
/usr/src/xtables-addons-1.43/geoip/xt_geoip_dl
/usr/src/xtables-addons-1.43/geoip/xt_geoip_build GeoIPCountryWhois.csv
\cp -rf {BE,LE} /usr/share/xt_geoip/
service iptables restart
Se guardan los cambios y se vuelve el archivo ejecutable:
chmod +x geoip.sh
Se añade al cron para que se ejecute una vez al mes:
crontab -e
0 0 1 * * /home/geoip.sh
Listo.
Comentarios recientes