Base de datos GeoIP tiene los registros de ubicación geográfica basados en la dirección IP. El uso de esta base de datos podemos buscar cualquier ip pertenece a cada país utilizando la línea de comandos de Linux. Este artículo le ayudará a usted para permitir SSH o FTP (vsftpd) de acceso basado en usuarios país. Este ejemplo utiliza TCP wrappers para asegurar sus servicios.
Instale GeoIP y GeoIP Database
Primero instale binario GeoIP para Linux y su base de datos basado en el sistema operativo.Para CentOS y RedHat binario usuarios GeoIP y base de datos se combinan en un solo paquete.
En CentOS y Red Hat:
# yum install GeoIP
En Ubuntu y Debian:
$ sudo apt-get install geoip-bin geoip-database
Cree el filtro de secuencias de comandos SSH / FTP
Ahora crea un shell script que comprueba todas las direcciones de conexión IP entrantes y buscar su correspondiente país, utilizando la base de datos GeoIP y sólo permiten a los países que se define en la variable código ALLOW_COUNTRIES en escritura.
# vim /usr/local/bin/ipfilter.sh
#!/bin/bash # License: WTFPL # UPPERCASE space-separated country codes to ACCEPT ALLOW_COUNTRIES="IN US" LOGDENY_FACILITY="authpriv.notice" if [ $# -ne 1 ]; then echo "Usage: `basename $0`" 1>&2 exit 0 # return true in case of config issue fi if [[ "`echo $1 | grep ':'`" != "" ]] ; then COUNTRY=`/usr/bin/geoiplookup6 "$1" | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1` else COUNTRY=`/usr/bin/geoiplookup "$1" | awk -F ": " '{ print $2 }' | awk -F "," '{ print $1 }' | head -n 1` fi [[ $COUNTRY = "IP Address not found" || $ALLOW_COUNTRIES =~ $COUNTRY ]] && RESPONSE="ALLOW" || RESPONSE="DENY" if [[ "$RESPONSE" == "ALLOW" ]] ; then logger -p $LOGDENY_FACILITY "$RESPONSE sshd connection from $1 ($COUNTRY)" exit 0 else logger -p $LOGDENY_FACILITY "$RESPONSE sshd connection from $1 ($COUNTRY)" exit 1 fi
Script srouce: https://gist.github.com/jokey2k/a74f56955124880749e7
Haga este script ejecutable
# chmod + x /usr/local/bin/ipfilter.sh
Restringir SSH / Conexiones FTP
Ahora aplique SSH y FTP restricciones utilizando TCP wrappers. Primero tenemos que negar todos añadiendo debajo de la línea en /etc/hosts.deny.
sshd: ALL vsftpd: ALL
Ahora edita /etc/hosts.allow y permitir sólo aquellas ips que está permitido por su guión de filtro IP.
sshd: ALL: desovar /usr/local/bin/ipfilter.sh% un vsftp: ALL: desovar /usr/local/bin/ipfilter.sh% un
Por encima de FTP restricciones son sólo para vsftpd. También asegúrese de que ha habilitado (tcp_wrappers = YES) en la configuración de vsftpd. También puede crear reglas similares para otros servicios soportados envoltura TCP.
Pruebas
Finalmente probar el servidor de inicio de sesión mediante SSH o FTP desde diferentes 2-locations y analizar el archivo de registro de acceso. A continuación se muestra los unos troncos de demostración creados por ipfilter.sh.
Feb 27 13:03:29 TecAdmin root: DENY sshd connection from 212.191.246.202 (PL) Feb 27 13:34:28 TecAdmin root: DENY sshd connection from 212.181.246.202 (SE) Feb 27 13:34:36 TecAdmin root: DENY sshd connection from 211.181.246.203 (KR) Feb 27 13:35:00 TecAdmin root: DENY sshd connection from 221.191.146.204 (JP) Feb 27 15:11:04 TecAdmin root: ALLOW sshd connection from 49.15.212.12 (IN) Feb 27 15:11:09 TecAdmin root: ALLOW sshd connection from 149.15.212.12 (US) Feb 27 15:11:22 TecAdmin root: ALLOW sshd connection from 49.15.156.123 (IN) Feb 27 15:11:32 TecAdmin root: ALLOW sshd connection from 231.15.156.123 (IP Address not found) Feb 27 15:14:04 TecAdmin root: DENY sshd connection from 111.15.15.123 (CN) Feb 27 15:14:56 TecAdmin root: ALLOW sshd connection from 49.15.110.123 (IN)
En los registros se puede decir que todas las ips pertenece a los US (Estados Unidos) y IN (India) están permitidos. Además, si cualquier ip no coincidencias en la base de datos GeoIP se permitirá de forma predeterminada. Resto del reconocimiento de otros ips países se les niega.
Fuente: http://tecadmin.net/allow-server-access-based-on-country/
GENIAL! GRACIAS!
ResponderEliminar