LINUX

Cómo bloquear direcciones IP de países utilizando complementos de Iptables Geoip

iptables del ip del bloque del geoip
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.

Actualizar e instalar 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

RedHat based system (CentOS, RHEL, Fedora)

# yum update # yum install gcc-c++ make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS

Installing Xtables-addons

Once our system is upgraded and dependencies are installed, we’ll now install the xtables-addons in our machine. To do so, we’ll download the latest tarball from the official xtables-addons project site using wget. Once it’s downloaded, we’ll extract the tarball, then compile and install it in our machine.

# wget http://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 tienen 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 compilaremos 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/

instalar la base de datos 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…]

Now, if we want to block incoming traffic from India (IN) and United States (US), the following iptables command should do.

# iptables -I INPUT -m geoip –src-cc IN,US -j DROP

If we want to block all incoming non-US traffic on our server, we need to execute the following.

# iptables -I INPUT -m geoip ! –src-cc US -j DROP

ping non us bloqueado

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.

ping exitoso después de reiniciar

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 filtro ipv4 SALIDA 0 -m geoip --dst-cc IN -j DROP

Iptables con el 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 alguna pregunta, sugerencia o comentario, escríbalos en el cuadro de comentarios a continuación. Gracias ! Disfrutar 🙂

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar