Cómo bloquear el tráfico de red por país en Linux
Todos estos casos de uso requieren la instalación de firewalls para filtrar el tráfico país por país. Hay varias formas de hacer esto. Por ejemplo, puede utilizar contenedores TCP para aplicaciones individuales como SSH, NFS y mon libtext-csv-xs-perl pkg-config
- Instalar paquetes dependientes en CentOS, RHEL o Fedora
CentOS/RHEL 6 requiere que se instale primero el repositorio EPEL (para perl-Text-CSV_XS).
$ sudo yum install gcc-c make automake kernel-devel-`uname -r` wget unzip iptables-devel perl-Text-CSV_XS
Compila e instala Xtables-addons p>
Descargue el último código fuente de xtables-addons del sitio web oficial () y compílelo/instale como se muestra a continuación.
$wget /project/xtables-addons/Xtables-addons/xtables-addons
-2.10.tar.xz
$ tar xf xtables-addons- 2.10.tar.xz
$ cd xtables-addons-2.10
$ ./configure
$make
$ sudo make install
Tenga en cuenta: si SELinux está habilitado de forma predeterminada en sistemas basados en Red Hat (CentOS, RHEL, Fedora), es necesario ajustar la política de SELinux de la siguiente manera. De lo contrario, SELinux impedirá que iptables cargue el módulo xt_geoip.
$ sudo chcon -vR --user=system_u /lib/modules/$(uname -r)/extra/*.ko
$ sudo chcon -vR --type= lib_t /lib64/xtables/*.so
Instalación de la base de datos GeoIP para Xtables-addons
El siguiente paso es instalar la base de datos GeoIP, que xt_geoip utilizará para el mapeo de IP a países. . Para mayor comodidad, el paquete de código fuente xtables-addons contiene dos scripts auxiliares que se pueden usar para descargar la base de datos GeoIP de MaxMind y convertirla a un formato binario reconocido por xt_geoip. Estos scripts se encuentran en la carpeta geoip dentro del paquete fuente. Siga las instrucciones a continuación para crear e instalar la base de datos GeoIP en su sistema.
$ cd geoip
$ ./xt_geoip_dl
$ ./xt_geoip_build GeoIPCountryWhois.csv
$ sudo mkdir -p /usr/ share/xt_geoip
$ sudo cp -r {BE,LE} /usr/share/xt_geoip_dl
$ ./usr/share/xt_geoip
Reclamaciones de MaxMind Su base de datos GeoIP tiene una tasa de precisión de 99,8 y se actualiza mensualmente. Para asegurarse de que su base de datos GeoIP instalada localmente esté actualizada, debe configurar una tarea programada mensual para actualizar la base de datos GeoIP local una vez al mes.
Bloquear el tráfico de red desde o hacia un país
Una vez que haya instalado el módulo xt_geoip y la base de datos GeoIP, puede usar inmediatamente la opción de coincidencia de geoip en el comando iptables.
$ sudo iptables -m geoip --src-cc país[, país...] --dst-cc país[, país...]
Lo que quieres Los países del bloque se designan utilizando códigos ISO3166 de dos letras, como EE. UU. (Estados Unidos), CN (China), IN (India) y FR (Francia).
Por ejemplo, si desea bloquear el tráfico entrante desde Yemen (YE) y Zambia (ZM), utilice el siguiente comando de iptables.
$ sudo iptables -I INPUT -m geoip --src-cc YE,ZM -j DROP
Si desea bloquear el tráfico saliente con destino a China (CN), simplemente ejecute el siguiente comando.
$ sudo iptables -A OUTPUT -m geoip --dst-cc CN -j DROP
También puedes pasar "--src-cc " o "--dst-cc Agregue "!" antes de "" para "cancelar" la condición coincidente. Por ejemplo:
Si desea bloquear todo el tráfico entrante fuera de EE. UU. en su servidor, puede ejecutar el siguiente comando:
$ sudo iptables -I INPUT -m geoip ! --src-cc US -j DROP
Para usuarios de Firewall-cmd
Algunas distribuciones (como CentOS/RHEL 7 o Fedora) han reemplazado iptables con el servidor de firewall predeterminado firewalld. En dichos sistemas, también puede usar xt_geoip para bloquear el tráfico usando firewall-cmd. Los tres ejemplos anteriores se pueden reescribir de la siguiente manera usando firewall-cmd.
$ sudo firewall-cmd --direct --add-rule filtro ipv4 ENTRADA 0 -m geoip --src-cc YE, ZM -j DROP
$ sudo firewall-cmd --direct --add-rule filtro ipv4 SALIDA 0 -m geoip -dst-cc CN -j DROP
$ sudo firewall-cmd --direct --add-rule filtro ipv4 ENTRADA 0 -m geoip ! --src-cc US -j DROP
Conclusión
En este tutorial presenté iptables/xt_geoip, una forma de filtrar paquetes de red según el país de origen/destino. Método simple. Si es necesario, puedes implementar esta útil arma en tu sistema de firewall. Finalmente, me gustaría advertir a todos: el filtrado de tráfico basado en GeoIP no es una forma infalible de bloquear ciertos países en su servidor. La base de datos GeoIP es intrínsecamente inexacta/incompleta, y es fácil falsificar el país de origen/destino si se utiliza una VPN, Tor o cualquier host de retransmisión comprometido. El filtrado basado en geolocalización puede incluso bloquear el tráfico legítimo que, en primer lugar, no debería prohibirse. No es demasiado tarde para comprender esta limitación antes de decidir implementarla en su entorno de producción.