Lunes, Noviembre 20, 2017

Cómo bloquear IPs de determinados países utilizando Iptables Geoip Addons

geoip-block-ip-iptables

Aprenderemos cómo bloquear el tráfico originado de IPs de países específicos utilizando la base de datos GeoIP y los iptables de Linux. Iptables es un programa de utilidad basado en comandos para configurar el firewall del kernel linux que se implementa dentro del proyecto Netfilter. Considerando que GeoIP es una colección de IPs correspondientes a las ubicaciones geográficas donde se localiza la ubicación geográfica con las direcciones IP asignadas en la organización específica, ciudad, estado y países. Las coordenadas geográficas en la base de datos GeoIP son las frecuentemente cercanas al centro de la población por lo que no debe utilizarse para identificar una dirección particular o un hogar. Y con la ayuda de un módulo llamado xt_geoip que consiste en una extensión iptables xtables-addon y la base de datos GeoIP, realizaremos un filtrado de tráfico basado en el país que nos ayuda a bloquear o permitir el tráfico desde un país específico.

Actualización e instalación de dependencias

En primer lugar, vamos a tener que actualizar nuestro sistema linux y luego vamos a seguir adelante para la instalación de las dependencias que se requiere para xtables-addons. Para ello, ejecutaremos los siguientes comandos en relación con las distribuciones que se ejecutan en nuestra máquina.

 (Debian, Ubuntu, Linux Mint)

# apt-get update && apt-get upgrade
# apt-get install iptables-dev xtables-addons-common libtext-csv-xs-perl pkg-config

(CentOS, RHEL, Fedora)

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

Xtables-addons

Una vez que nuestro sistema sea actualizado y las dependencias estén instaladas, ahora instalaremos los xtables-addons en nuestra máquina. Para ello, descargaremos el último tarball del sitio oficial del proyecto xtables-addons usando wget. Una vez descargado, extraeremos el archivo tar, luego lo compilaremos e instalaremos en nuestra máquina.

# 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 a SeLinux cargar módulos (RedHat based System)

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 GeoIP Database

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 de MaxMind y la convierte en una forma binaria reconocida por xt_geoip. Una vez descargado, lo construiremos y lo moveremos 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/

install-geoip-database

Bloquear 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

Esta es la sintaxis básica para usar iptables con el módulo geoip para bloquear el tráfico proveniente o destinado a un país. Aquí, necesitamos usar código ISO3166 de dos letras en lugar del país, por ejemplo, Estados Unidos, IE para Irlanda, IN para India, CN para China y así sucesivamente.

# iptables -m geoip –src-cc country[,country…] –dst-cc country[,country…]

Ahora, si queremos bloquear el tráfico entrante de India (IN) y Estados Unidos (US), el siguiente comando de iptables debería hacerlo.

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

Si queremos bloquear todo el tráfico entrante no estadounidense en nuestro servidor, necesitamos ejecutar lo siguiente.

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

ping-non-us-blocked

Aquí está una captura de pantalla que había tomado cuando intenté silbar como una bala al servidor de la red no-US. No estaba recibiendo 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, entonces recibí respuestas de ping desde el servidor.

ping-success-after-reboot

Si queremos bloquear el tráfico saliente destinado a India (IN), necesitamos ejecutar el siguiente comando.

# iptables -A OUTPUT -m geoip –dst-cc IN -j DROP

Usando firewalld

Si estamos ejecutando sistema basado en systemd y tenemos firewalld como controlador de 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 DOS, ataques DDOS originarios de ciertos países. Esto también es muy eficaz cuando deseas restringir el acceso a tu sitio web/servidor en particular de un país determinado. Por lo tanto, tener GeoIP módulo instalado con iptables-addons es una necesidad de tener la configuración para permitir o restringir ciertos países.

 

Fuente: Original | maslinux

¿Quién está en línea?

Hay 34 invitados y ningún miembro en línea

Contador de Visitas

9050151
Hoy Hoy 757
Ayer Ayer 1453
Esta semana Esta semana 757
Este mes Este mes 28642
Total de Visitas Total de Visitas 9050151

Día con más
visitantes

11-11-2017 : 2493

Gracias por su visita