Cómo permitir el acceso SSH/FTP basado en el país utilizando GeoIP

Cómo permitir el acceso SSH/FTP basado en el país utilizando GeoIP

La base de datos de GeoIP tiene registros de ubicación geográfica basada en la dirección IP. Usando esta base de datos podemos buscar cualquier IP que pertenezca a qué país use la línea de comandos de Linux. Este artículo lo ayudará a permitir el acceso SSH o FTP (VSFTPD) basado en el país del usuario. Este ejemplo utiliza envoltorios TCP para asegurar sus servicios.

Instale la base de datos GeoIP y GeoIP

Primero, instale GeoIP Binary para Linux y su base de datos basada en su sistema operativo. Para los usuarios de CentOS y Redhat, GeoIP Binary y la base de datos se combinan en un solo paquete.

En Centos y Redhat:
sudo yum install geoip  
En Ubuntu y Debian:
sudo apt-get install geoip-bin geoip-database  

Cree el script de filtro SSH/FTP

Ahora cree un script de shell que verifique todas las direcciones IP de conexión entrante y busque en su país correspondiente utilizando la base de datos de GeoIP y permita solo aquellos países cuyo código se define en Permitirse_countries variable en el script.

vim/usr/local/bin/ipfilter.mierda  
#!/bin/bash # licencia: wtfpl # Los códigos de país separados con el espacio upcase para aceptar tOmion_countries = "en EE. UU." Logdeny_facility = "Authpriv.Observe "if [$ # -ne 1]; entonces echo" uso: 'Basename $ 0' "1> & 2 Salir 0 # Return TRUE EN CASO DE CONFIGUNCIO FI if [[" 'echo $ 1 | Grep ': "" != ""]]; luego país = "/usr/bin/geoiplookup6" $ 1 "| AWK -f": "" imprima $ 2 '| awk -f "," 'imprimir $ 1' | Head -n 1 'Else country = "/usr/bin/geoiplookup" $ 1 "| Awk -f": "" imprima $ 2' | awk -f "," 'imprimir $ 1' | head -n 1 'fi [[$ country = "Dirección IP no encontrada" || $ Dign_countries = ~ $ country]] && respuesta = "permitir" || Respuesta = "negar" if [["$ respuesta" == "permitir"]]; luego logger -p $ logdeny_facility "$ Respuesta SSHD Conexión desde $ 1 ($ país)" Salir 0 else logger -p $ logdeny_facility "$ respuesta SSHD Conexión desde $ 1 ($ país)" Salida 1 Fi 

Script srouce: https: // gist.github.COM/JOWEY2K/A74F56955124880749E7

Hacer que este script sea ejecutable

Chmod +x/usr/local/bin/ipfilter.mierda  

Restringir las conexiones SSH/FTP

Ahora aplique restricciones SSH y FTP usando envoltorios TCP. Primero tenemos que negar a todos agregando debajo de la línea en /etc/huéspedes.denegar.

/etc/huéspedes.denegar:

sshd: todos vsftpd: todos 

Ahora editar /etc/huéspedes.permitir y permita solo aquellos IP que están permitidos por su script de filtro de IP.

/etc/huéspedes.permitir:

SSHD: Todos: Spawn/USR/Local/Bin/IPFilter.SH %A VSFTP: Todos: Spawn/USR/Local/Bin/Ipfilter.sh %a 

Las restricciones de FTP anteriores son solo para VSFTPD. Además, asegúrese de haber habilitado (tcp_wrappers = sí) en su configuración vsftpd. También puede crear reglas similares para cualquier otro servicio respaldado por un envoltorio TCP.

Pruebas

Finalmente, pruebe su servidor iniciando sesión utilizando SSH o FTP desde diferentes 2 ubicaciones y analice los archivos de registro de acceso. A continuación se presentan algunos registros de demostración creados por IPFilter.mierda.

27 de febrero 13:03:29 Tecadmin raíz: Denegar la conexión SSHD de 212.191.246.202 (PL) 27 de febrero 13:34:28 Tecadmin raíz: Denegar la conexión SSHD de 212.181.246.202 (SE) 27 de febrero 13:34:36 Tecadmin raíz: Denegar la conexión SSHD de 211.181.246.203 (KR) 27 de febrero 13:35:00 Tecadmin raíz: Denegar conexión SSHD desde 221.191.146.204 (JP) 27 de febrero 15:11:04 Tecadmin Root: Permitir conexión SSHD de 49.15.212.12 (en) 27 de febrero 15:11:09 Tecadmin raíz: Permitir la conexión SSHD desde 149.15.212.12 (EE. UU.) 27 de febrero 15:11:22 Tecadmin raíz: Permitir la conexión SSHD de 49.15.156.123 (en) 27 de febrero 15:11:32 Tecadmin raíz: Permitir conexión SSHD desde 231.15.156.123 (Dirección IP no encontrada) 27 de febrero 15:14:04 Tecadmin Root: Denegar la conexión SSHD desde 111.15.15.123 (CN) 27 de febrero 15:14:56 Tecadmin raíz: Permitir conexión SSHD de 49.15.110.123 (in) 

En los registros, puede decir que todos los IP que pertenecen a los Estados Unidos (Estados Unidos) y en (India) están permitidos. Además, si alguna IP no coincide en la base de datos GeoIP, se permitirá de forma predeterminada. Se niega el resto de los IP de otros países que coinciden.