Aprenderemos cómo podemos bloquear el tráfico que se origina en direcciones IP de países específicos usando la base de datos GeoIP y linux iptables. Iptables es un programa de utilidad basado en comandos para configurar el firewall del kernel de Linux que se implementa dentro del proyecto Netfilter. Mientras que GeoIP es una colección de IP que se corresponden con las ubicaciones geográficas donde se mapea la ubicación geográfica con las direcciones IP asignadas en esas organizaciones, ciudades, estados y países específicos. Las coordenadas geográficas de la base de datos GeoIP suelen estar cerca del centro de la población, por lo que no deben utilizarse para identificar una dirección u hogar en particular. Y con la ayuda de un módulo llamado xt_geoip que consiste en una extensión de iptables xtables-addon y la base de datos GeoIP, realizaremos un filtrado de tráfico basado en países que nos ayuda a bloquear o permitir el tráfico de un país específico.
Actualización e instalación de dependencias
En primer lugar, necesitaremos actualizar nuestro sistema Linux y luego avanzaremos para la instalación de las dependencias que se requieren para xtables-addons. Para hacerlo, ejecutaremos los siguientes comandos correspondientes a las distribuciones que se ejecutan en nuestra máquina.
Sistema basado en Debian (Debian, Ubuntu, Linux Mint)
# apt-get update && apt-get upgrade # apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config
Sistema basado en RedHat (CentOS, RHEL, Fedora)
# yum update # yum install gcc-c ++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS
Instalación de complementos de Xtables
Una vez que nuestro sistema esté actualizado y las dependencias estén instaladas, ahora instalaremos los complementos xtables en nuestra máquina. Para hacerlo, descargaremos el último tarball del sitio oficial del proyecto xtables-addons usando wget. Una vez descargado, extraeremos el tarball, luego lo compilaremos e instalaremos en nuestra máquina.
# wget https://downloads.sourceforge.net/project/xtables-addons/Xtables-addons/xtables-addons-2.13.tar.xz
# tar xf xtables-addons-2.13.tar.xz
# cd xtables-addons-2.13
# ./configure
# make
# make install
Permitir que SeLinux cargue módulos (sistema basado en RedHat)
Como las distribuciones de Linux basadas en RedHat, es decir, CentOS, RHEL, Fedora tiene selinux habilitado de forma predeterminada, necesitaremos ajustar la política de selinux de la siguiente manera. De lo contrario, SeLinux evitará que iptables cargue el módulo xt_geoip.
# chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
# chcon -vR --type=lib_t /lib64/xtables/*.so
Instalar la base de datos GeoIP
A continuación, ejecutaremos un módulo llamado xt_geoip que viene con la extensión xtables-addons que descarga la base de datos GeoIP desde MaxMind y lo convierte en una forma binaria reconocida por xt_geoip. Una vez descargado, lo crearemos y lo trasladaremos a la ruta xt_geoip requerida, es decir, / usr / share / xt_geoip /.
# cd geoip
# ./xt_geoip_dl
# ./xt_geoip_build GeoIPCountryWhois.csv
# mkdir -p /usr/share/xt_geoip/
# cp -r {BE,LE} /usr/share/xt_geoip/
Bloquear el tráfico hacia y desde un país
Si todo salió como se esperaba, ahora deberíamos poder usar nuestro programa de utilidades de firewall iptables para usar el módulo geoip.
Usando Iptables
Aquí está la sintaxis básica para usar iptables con el módulo geoip para bloquear el tráfico que se origina o tiene como destino un país. Aquí, necesitamos usar código ISO3166 de dos letras en lugar del país, por ejemplo, EE. UU. para Estados Unidos, IE para Irlanda, IN para India, CN para China, etc.
# iptables -m geoip –src-cc país[,country…] –dst-cc país[,country…]
Ahora, si queremos bloquear el tráfico entrante de India (IN) y Estados Unidos (EE. UU.), El siguiente comando de iptables debería funcionar. # iptables -I INPUT -m geoip –src-cc IN, US -j DROP
Si queremos bloquear todo el tráfico entrante fuera de los EE. UU. En nuestro servidor, debemos ejecutar lo siguiente. # iptables -I ENTRADA -m geoip! –src-cc US -j DROP
Aquí hay una captura de pantalla que tomé cuando intenté hacer ping al servidor desde una red fuera de los EE. UU. No recibí ninguna respuesta del ping. Como las configuraciones de iptables se aplicaron en el tiempo de ejecución y no se guardaron, después de reiniciar el servidor, obtuve respuestas de ping del servidor.
Si queremos bloquear el tráfico saliente destinado a India (IN), debemos ejecutar el siguiente comando. # iptables -A SALIDA -m geoip –dst-cc IN -j DROP
Usando firewalld
Si estamos ejecutando un sistema basado en systemd y tenemos firewalld como controlador frontend para iptables, también podemos usar firewalld para el trabajo anterior, respectivamente.
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc IN,UN -j DROP
# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip ! --src-cc US -j DROP
# firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -m geoip --dst-cc IN -j DROP
Iptables con módulo GeoIP es muy esencial para prevenir ataques DOS, DDOS que se originan en ciertos países. Esto también es muy eficaz cuando desea restringir el acceso a su sitio web / servidor en particular desde un determinado país. Por lo tanto, tener el módulo GeoIP instalado con iptables-addons es imprescindible para tener una configuración para permitir o restringir ciertos países. Por lo tanto, si tiene preguntas, sugerencias o comentarios, escríbalos en el cuadro de comentarios a continuación. Gracias ! Disfrutar 🙂