GNU/Linux >> Tutoriales Linux >  >> Linux

Bloquear rango de IP de países con GeoIP e iptables

Este artículo describe cómo bloquear el tráfico que se origina en IP de países específicos, por ejemplo, mediante el uso de la base de datos GeoIP y las iptables de Linux®. También puede usarlo para prevenir ataques DOS y DDoS que se originen en ciertos países.

Requisitos

Asegúrese de que el módulo GeoIP esté instalado con iptables-addons.

GeoIP es una colección de direcciones IP correspondientes a las ubicaciones geográficas mapeadas con las direcciones IP asignadas para una organización, ciudad, estado y país específicos.

iptables es una utilidad de firewall de línea de comandos que utiliza cadenas de políticas para permitir o bloquear el tráfico. Cuando una conexión intenta establecerse en su sistema, iptables busca una regla coincidente en su lista. Si no encuentra ninguno, recurre a la acción por defecto.

Además, con la ayuda de un módulo llamado xt_geoip , que consta de un iptables extensión (xtables-addon ) y la GeoIP base de datos, podemos realizar un filtrado de tráfico basado en países para ayudar a bloquear o permitir el tráfico de un país específico.

Actualizar e instalar dependencias

Debe actualizar su sistema Linux e instalar las dependencias necesarias de xtables-addons. Ejecute el siguiente comando que corresponda con la distribución que está ejecutando en su máquina.

Sistema basado en Debian (sistema operativo Debian®, Ubuntu®)

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

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# make

Instalar xtables-addons

A continuación, instale xtables-addons en su máquina. Descargue el tarball más reciente del sitio oficial del proyecto xtables-addons usando wget .

Después de descargar el archivo, extraiga el tarball. Luego compílelo e instálelo en su 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 que SeLinux cargue módulos (sistema basado en RedHat)

Las distribuciones de Linux basadas en RedHat® (como CentOS, RHEL, Fedora) tienen selinux habilitado por defecto, pero debe ajustar el selinux política. Si no ejecuta los siguientes comandos, seLinux previene iptables desde cargar el xt_geoip módulo.

# 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

El módulo llamado xt_geoip viene con los xtables-addons extensión, que descarga el GeoIP base de datos de MaxMind® y la convierte en un arreglo binario reconocido por xt_geoip . Debe construir y moverse a la ruta requerida. En este ejemplo, la ruta es /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

Ahora puedes usar el geoip módulo con su programa de utilidades de firewall, iptables o firewalld .

Usando Iptables

La sección proporciona la sintaxis básica para usar iptables y el geoip módulo para bloquear el tráfico con origen o destino en un país. Debe usar el código ISO3166 de dos letras en lugar del país. Por ejemplo, use RU para la Federación Rusa, US para Estados Unidos, IN para la India, BR para Brasil, y así sucesivamente.

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

Para bloquear el tráfico entrante de Canadá (CA) y Estados Unidos (US), use las siguientes iptables comando:

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

Para bloquear todo el tráfico entrante no estadounidense en su servidor, ejecute el siguiente comando:

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

Para bloquear el tráfico saliente con destino a China (CN), ejecute el siguiente comando:

# iptables -A OUTPUT -m geoip --dst-cc CN -j DROP

Usando el cortafuegos

Si está ejecutando systemd -sistema basado y tiene firewalld como controlador de interfaz para iptables , puede usar el siguiente firewalld comandos para bloquear el tráfico:

# firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -m geoip --src-cc CA,US -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 CN -j DROP

Linux
  1. Bloqueo de todo el tráfico de países individuales usando IPSet e IPTables

  2. Bloqueo de listas negras de hosts e iptables

  3. ¿Recortar con Lvm y Dm-crypt?

  4. Ejecutar secuencia de comandos con ". ¿Y con “fuente”?

  5. Bloquear direcciones IP y países usando .htaccess

Lea y escriba datos desde cualquier lugar con redirección en la terminal de Linux

Cómo instalar Nginx con Lets encrypt y obtener A+ de SSLLabs Test

Usa tu Chromecast desde Linux y MacOS con mkchromecast

Bash Auto_completion con Xubuntu y Xrdp desde Windows?

Usar iptables con CentOS 7

¿Preguntas sobre IPTables y DHCP?