So ermöglichen Sie SSH/FTP -Zugriff basierend auf dem Land mit GeoIP

So ermöglichen Sie SSH/FTP -Zugriff basierend auf dem Land mit GeoIP

Die GEOIP -Datenbank enthält Aufzeichnungen über geografischen Standorte basierend auf der IP -Adresse. Mit dieser Datenbank können wir nach jeder IP suchen, die zu welchem ​​Land mit der Linux -Befehlszeile gehört. Dieser Artikel hilft Ihnen dabei, SSH- oder FTP (VSFTPD) -Access basierend auf dem Land des Benutzers zuzulassen. In diesem Beispiel werden TCP -Wrapper verwendet, um Ihre Dienste zu sichern.

Installieren Sie die Geoip- und GeoIP -Datenbank

Installieren Sie zunächst Geoip -Binary für Linux und ihre Datenbank basierend auf Ihrem Betriebssystem. Für CentOS und Redhat -Benutzer werden Geoip -Binär- und Datenbank in einem einzigen Paket kombiniert.

Auf Centos und Redhat:
sudo yum Installieren Sie Geoip  
Auf Ubuntu und Debian:
sudo apt-Get Installieren Sie Geoip-Bin-Geoip-Datenabase  

Erstellen Sie das SSH/FTP -Filterskript

Erstellen Sie nun ein Shell -Skript, das über alle IP -Adressen aller eingehenden Verbindungen überprüft wird und ihr entsprechendes Land mithilfe der GEOIP -Datenbank durchsucht und nur diejenigen Länder zugelassen hat, deren Code definiert ist in Zulassungen Variable im Skript.

vim/usr/local/bin/ipfilter.Sch  
#!/bin/bash # Lizenz: WTFPL # UPSAME-Space-getrennte Landcodes, um degitle_countries = "In US" Logdeny_Facility = "AuthPriv zu akzeptieren.Beachten Sie "if [$ # -ne 1]; dann echo" uage: 'BasisName $ 0' "1> & 2 Exit 0 # return true im Fall von config problem fi if [" 'echo $ 1 | Grep ': "" != ""]; dann Country = "/usr/bin/GeoiPlookup6" $ 1 "| awk -f": "print $ 2 '| awk -f "," 'print $ 1' | head -n 1 'else country = "/usr/bin/geiplookup" $ 1 "| awk -f": "" print $ 2' | awk -f "," 'print $ 1' | Head -n 1 'fi [[$ Country = "IP -Adresse nicht gefunden" || $ Degly_countries = ~ $ Country]] && response = "erlauben" || Response = "leugnen", wenn [["$ response" == "erlauben"]; dann logger -p $ logdeny_facility "$ response sshd connection aus $ 1 ($ land)" beenden 0 sonst logger -p $ logdeny_facility "$ response sshd connection ab 1 $ ($ lande)" Exit 1 Fi 

Skript SROUCE: https: // Gist.Github.com/jokey2k/a74f56955124880749e7

Machen Sie dieses Skript ausführbar

Chmod +X/usr/local/bin/ipfilter.Sch  

SSH/FTP -Verbindungen einschränken

Wenden Sie nun SSH- und FTP -Beschränkungen mit TCP -Wrappern an. Zuerst müssen wir alle verweigern, indem wir die folgende Linie hinzufügen /etc/hosts.leugnen.

/etc/hosts.leugnen:

SSHD: Alle vsftpd: alle 

Jetzt bearbeiten /etc/hosts.erlauben und erlauben Sie nur die IPs, die von Ihrem IP -Filterskript zulässig sind.

/etc/hosts.erlauben:

SSHD: ALL: Spawn/usr/local/bin/ipfilter.sh %a vsftp: alle: Spawn/usr/local/bin/ipfilter.Sh %a 

Oben FTP -Beschränkungen sind nur für VSFTPD. Stellen Sie außerdem sicher, dass Sie in Ihrer VSFTPD. Sie können auch ähnliche Regeln für alle anderen Dienste erstellen, die von einem TCP -Wrapper unterstützt werden.

Testen

Testen Sie Ihren Server schließlich, indem Sie SSH oder FTP anhand der verschiedenen 2-Stellen anmelden und die Zugriffsprotokolldateien analysieren. Im Folgenden finden Sie einige Demo -Protokolle, die von IpFilter erstellt wurden.Sch.

27. Februar 13:03:29 Tecadmin Wurzel: Verweigern Sie die SSHD -Verbindung von 212.191.246.202 (PL) 27. Februar 13:34:28 Tecadmin Wurzel: Verweigern Sie die SSHD -Verbindung von 212.181.246.202 (SE) 27. Februar 13:34:36 Tecadmin Root: Verweigern Sie die SSHD -Verbindung von 211.181.246.203 (KR) 27. Februar 13:35:00 Tecadmin Wurzel: Verweigern Sie die SSHD -Verbindung von 221.191.146.204 (JP) 27. Februar 15:11:04 Tecadmin Root: SSHD -Verbindung von 49 zulassen.15.212.12 (in) 27. Februar 15:11:09 Tecadmin Root: SSHD -Verbindung von 149 zulassen.15.212.12 (USA) 27. Februar 15:11:22 Tecadmin Root: SSHD -Verbindung von 49 zulassen.15.156.123 (in) 27. Februar 15:11:32 Tecadmin Root: SSHD -Verbindung von 231 zulassen.15.156.123 (IP -Adresse nicht gefunden) 27. Februar 15:14:04 Tecadmin Root: Verweigern Sie die SSHD -Verbindung von 111.15.15.123 (CN) 27. Februar 15:14:56 Tecadmin Root: SSHD -Verbindung von 49 zulassen.15.110.123 (in) 

In Protokollen können Sie sagen, dass alle IPs der USA (Vereinigten Staaten) und in (Indien) zugelassen sind. Auch wenn eine IP in der GEOIP -Datenbank nicht übereinstimmt, ist standardmäßig zulässig. Der Rest der IPs anderer Länder wird abgelehnt.