Jak umożliwić dostęp SSH/FTP na podstawie kraju za pomocą GeoIP

Jak umożliwić dostęp SSH/FTP na podstawie kraju za pomocą GeoIP

Baza danych GeoIP ma zapisy lokalizacji geograficznej na podstawie adresu IP. Korzystając z tej bazy danych, możemy wyszukiwać dowolny IP należący do tego kraju za pomocą linii poleceń Linux. Ten artykuł pomoże Ci umożliwić dostęp do SSH lub FTP (VSFTPD) na podstawie kraju użytkownika. W tym przykładzie wykorzystuje opakowania TCP, aby zabezpieczyć Twoje usługi.

Zainstaluj bazę danych GeoIP i GeoIP

Najpierw zainstaluj Geoip Binary dla Linux i ich bazy danych w oparciu o system operacyjny. Dla Centos i użytkowników Redhat Geoip Binary i baza danych są łączone w jednym pakiecie.

Na Centos i Redhat:
sudo yum instaluj geoipa  
O Ubuntu i Debian:
sudo apt-get instaluj geoip-bin-databazę  

Utwórz skrypt filtra SSH/FTP

Teraz utwórz skrypt powłoki, który sprawdza wszystkie przychodzące adresy IP i przeszukuje ich odpowiedni kraj za pomocą bazy danych GeoIP i pozwolił tylko na te kraje, których kod jest zdefiniowany Zezwalaj Zmienna w skrypcie.

vim/usr/local/bin/ipfilter.cii  
#!/bin/bash # licencja: wtfpl # wielkimi kodami krajowymi oddzielonymi przestrzeniami do zaakceptowania zezwoleń_countries = "w nas" logdeny_facility = "authpriv.Zwróć uwagę „if [$ # -Ne 1]; następnie echo” Użycie: „Basename 0” ”1> i 2 Wyjście 0 # Zwróć True w przypadku wydania konfiguracyjnego FI, jeśli [[" 'ECHO $ ​​1 | Grep ': „” != ""]]; Następnie country = "/usr/bin/geoipLookup6" $ 1 "| AWK -f": "" drukuj 2 $ '| awk -f "," 'drukuj 1 $' | Head -n 1 'else country = "/usr/bin/geoiplookup" $ 1 "| AWK -f": "" print $ 2' | awk -f "," 'drukuj 1 $' | Head -n 1 'fi [[$ country = "Nie znaleziono adresu IP" || $ Zezwolenie_countries = ~ $ country]] && response = "pozwól" || Response = „odmów”, jeśli [[„$ response” == „Zezwalaj”]]; Następnie logger -p $ logdeny_facility "$ response Sshd Connection z 1 $ ($ country)" exit 0 else logger -p $ logdeny_facility "$ response Sshd Connection z 1 USD ($ country) exit 1 fi 

Skrypt srouce: https: // gist.github.COM/JOKEY2K/A74F56955124880749E7

Uczyń ten skrypt wykonywany

CHMOD +X/USR/Local/Bin/IPfilter.cii  

Ogranicz połączenia SSH/FTP

Teraz zastosuj ograniczenia SSH i FTP za pomocą opakowań TCP. Najpierw musimy odmówić wszystkim, dodając poniżej linii /etc/hosts.zaprzeczyć.

/etc/hosts.zaprzeczyć:

SSHD: Wszystkie VSFTPD: Wszystkie 

Teraz edytuj /etc/hosts.umożliwić i zezwalaj tylko na te IP, które są dozwolone przez skrypt filtra IP.

/etc/hosts.umożliwić:

SSHD: All: Spawn/USR/Local/Bin/IPfilter.SH %A VSFTP: All: Spawn/USR/Local/Bin/Bin/ipfilter.sh %a 

Powyżej ograniczeń FTP są tylko dla VSFTPD. Upewnij się również, że masz włączone (tcp_wrappers = tak) w konfiguracji VSFTPD. Możesz także tworzyć podobne reguły dla dowolnych innych usług obsługiwanych przez opakowanie TCP.

Testowanie

Na koniec przetestuj serwer za pomocą SSH lub FTP z różnych 2 lokalizacji i przeanalizuj pliki dziennika dostępu. Poniżej znajdują się niektóre dzienniki demonstracyjne utworzone przez ipfilter.cii.

27 lutego 13:03:29 Tecadmin root: Odmowa połączenia SSHD od 212.191.246.202 (PL) 27 lutego 13:34:28 Tecadmin root: Odmowa połączenia SSHD od 212.181.246.202 (SE) 27 lutego 13:34:36 Tecadmin Root: Odmowa połączenia SSHD od 211.181.246.203 (KR) 27 lutego 13:35:00 Korzeń Tecadmin: Odmowa połączenia SSHD od 221.191.146.204 (JP) 27 lutego 15:11:04 TECADMIN root: Zezwalaj na połączenie SSHD od 49.15.212.12 (cal) 27 lutego 15:11:09 Korzeń tecadmin: Zezwalaj na połączenie SSHD od 149.15.212.12 (USA) 27 lutego 15:11:22 TECADMIN root: Zezwalaj na połączenie SSHD od 49.15.156.123 (cal) 27 lutego 15:11:32 Korzeń Tecadmin: Zezwalaj na połączenie SSHD od 231.15.156.123 (nie znaleziono adresu IP) 27 lutego 15:14:04 TECADMIN root: Odmowa połączenia sshd od 111.15.15.123 (CN) 27 lutego 15:14:56 Korzeń Tecadmin: Zezwalaj na połączenie SSHD od 49.15.110.123 (in) 

W dziennikach można powiedzieć, że wszystkie IP należące do USA (Stany Zjednoczone) i w (Indie) są dozwolone. Również jeśli jakikolwiek IP nie pasuje do bazy danych GeoIP, będzie domyślnie dozwolony. Reszta pasujących IPS innych krajów jest odrzucana.