Comment permettre un accès SSH / FTP basé sur le pays à l'aide de GEOIP

Comment permettre un accès SSH / FTP basé sur le pays à l'aide de GEOIP

La base de données GEOIP a des enregistrements de localisation géographique basée sur l'adresse IP. En utilisant cette base de données, nous pouvons rechercher toute IP appartenant au pays à l'aide de la ligne de commande Linux. Cet article vous aidera à permettre l'accès SSH ou FTP (VSFTPD) en fonction du pays de l'utilisateur. Cet exemple utilise des emballages TCP pour sécuriser vos services.

Installez la base de données GEOIP et GEOIP

Tout d'abord, installez GeOIP Binary pour Linux et leur base de données en fonction de votre système d'exploitation. Pour les utilisateurs de CentOS et de Redhat, GeOIP Binary et la base de données sont combinés dans un seul package.

Sur Centos et Redhat:
sudo yum install geoip  
Sur Ubuntu et Debian:
sudo apt-get install geoip-bin geoip-database  

Créer le script de filtre SSH / FTP

Créez maintenant un script shell qui vérifie toutes les adresses IP de connexion entrante et recherche leur pays correspondant à l'aide de la base de données GEOIP et n'a autorisé que les pays dont le code est défini dans Perte_countries variable dans le script.

vim / usr / local / bin / ipfilter.shot  
#!/ bin / bash # Licence: WTFPL # codes de pays séparés dans l'espace pour accepter perte_countries = "dans les États.Remarquez "Si [$ # -ne 1]; alors echo" Utilisation: 'Basename 0' 0 '"1> & 2 Exit 0 # return true dans le cas du problème de configuration FI If [["' Echo 1 $ | grep ': "" != ""]]; alors 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' | tête -n 1 'fi [[$ country = "adresse IP introuvable" || $ Allow_countries = ~ $ country]] && réponse = "allow" || Réponse = "deny" si [["$ réponse" == "permettre"]]; Ensuite, logger -p $ logdeny_factility "$ Response Sshd Connection à partir de 1 $ ($ country)" Exit 0 Else Logger -p $ logdeny_factility "$ Response Sshd Connection à partir de 1 $ ($ country)" Exit 1 fi 

Script srouce: https: // gist.github.com / jokey2k / a74f56955124880749e7

Rendre ce script exécutable

chmod + x / usr / local / bin / ipfilter.shot  

Restreindre les connexions SSH / FTP

Appliquez maintenant des restrictions SSH et FTP à l'aide de Wrappers TCP. Nous devons d'abord nier tout le monde en ajoutant sous la ligne / etc / hôtes.refuser.

/ etc / hôtes.refuser:

sshd: tout vsftpd: tout 

Modifiez maintenant / etc / hôtes.permettre et autoriser uniquement les IP qui sont autorisés par votre script de filtre IP.

/ etc / hôtes.permettre:

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

Ci-dessus les restrictions FTP sont destinées à VSFTPD uniquement. Assurez-vous également que vous avez activé (tcp_wrappers = oui) dans votre configuration VSFTPD. Vous pouvez également créer des règles similaires pour tous les autres services pris en charge par un wrapper TCP.

Essai

Enfin, testez votre serveur en vous connectant en utilisant SSH ou FTP à partir de différents emplacements et analysez les fichiers journaux d'accès. Vous trouverez ci-dessous quelques journaux de démonstration créés par ipfilter.shot.

27 février 13:03:29 Tecadmin Root: refuser la connexion SSHD à partir de 212.191.246.202 (PL) 27 février 13:34:28 Tecadmin Root: refuser la connexion SSHD à partir de 212.181.246.202 (SE) 27 février 13:34:36 Tecadmin Root: refuser la connexion SSHD à partir de 211.181.246.203 (KR) 27 février 13:35:00 Root de Tecadmin: refuser la connexion SSHD à partir de 221.191.146.204 (JP) 27 février 15:11:04 Tecadmin Root: Autoriser la connexion SSHD à partir de 49.15.212.12 (en) 27 février 15:11:09 Root de Tecadmin: Autoriser la connexion SSHD à partir de 149.15.212.12 (US) 27 février 15:11:22 Root de Tecadmin: Autoriser la connexion SSHD à partir de 49.15.156.123 (in) 27 février 15:11:32 Root de Tecadmin: Autoriser la connexion SSHD à partir de 231.15.156.123 (Adresse IP non trouvée) 27 février 15:14:04 Tecadmin Root: refuser la connexion SSHD à partir de 111.15.15.123 (CN) 27 févr.15.110.123 (in) 

Dans les journaux, vous pouvez dire que tous les IP appartenant aux États-Unis (États-Unis) et en Inde) sont autorisés. Si une IP ne correspond pas à la base de données GEOIP sera autorisée par défaut. Le reste des IPS des autres pays correspondants sont refusés.