Jak zablokować dostęp SSH i FTP do określonego adresu IP i zakresu sieci w systemie Linux
Zazwyczaj wszyscy często korzystamy z usług SSH i FTP, aby uzyskać dostęp do serwerów zdalnych i wirtualnych serwerów prywatnych. Jako administrator Linuksa musisz wiedzieć, jak blokować dostęp SSH i FTP do określonego adresu IP lub zakresu sieci w systemie Linux, aby jeszcze bardziej zwiększyć bezpieczeństwo.
- 25 wskazówek dotyczących wzmacniania zabezpieczeń serwerów Linux
- 5 przydatnych wskazówek dotyczących zabezpieczenia i ochrony serwera SSH
W tym samouczku dowiesz się, jak zablokować dostęp SSH i FTP do określonego adresu IP i/lub zakresu sieci na serwerze CentOS 6 i 7. Ten przewodnik został przetestowany na wersjach CentOS 6.x i 7.x, ale prawdopodobnie będzie działać na innych dystrybucjach Linuksa, takich jak Debian, Ubuntu i SUSE/openSUSE itp.
Zrobimy to na dwa sposoby. Pierwsza metoda wykorzystuje IPTables/firewallD, a druga metoda wykorzystuje opakowania TCP za pomocą hosts.allow i plik hosts.deny.
Aby dowiedzieć się więcej o IPTables i zaporze Firewalld, zapoznaj się z poniższymi przewodnikami.
- Podstawowy przewodnik po IPTables (zaporze linuksowej) – porady/polecenia
- Jak skonfigurować zaporę sieciową Iptables, aby umożliwić zdalny dostęp do usług w systemie Linux
- Jak skonfigurować „FirewallD” w RHEL/CentOS 7 i Fedorze 21
- Przydatne reguły „FirewallD” do konfiguracji i zarządzania zaporą sieciową w systemie Linux
Teraz wiesz, czym są IPTables i FirewallD oraz jakie są podstawy.
Metoda 1: Zablokuj dostęp SSH i FTP za pomocą IPTables/FirewallD
Zobaczmy teraz, jak zablokować dostęp SSH i FTP do określonego adresu IP (na przykład 192.168.1.100) i/lub zakresu sieci (na przykład 192.168.1.0/24) używając IPtables w wersjach RHEL/CentOS/Scientific Linux 6.x i FirewallD w CentOS 7.x.
Zablokuj lub wyłącz dostęp SSH
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j REJECT
iptables -I INPUT -s 192.168.1.0/24 -p tcp --dport ssh -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j REJECT
Aby nowe reguły zaczęły obowiązywać, należy użyć następującego polecenia.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Teraz spróbuj wykonać SSH serwer z zablokowanego hosta. Pamiętaj, że tutaj 192.168.1.150 to zablokowany host.
ssh 192.168.1.150
Powinieneś zobaczyć następujący komunikat.
ssh: connect to host 192.168.1.150 port 22: Connection refused
Odblokuj lub włącz dostęp SSH
Aby odblokować lub włączyć dostęp SSH, przejdź do zdalnego serwera i uruchom następującą komendę:
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport ssh -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport ssh -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 22 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 22 -j ACCEPT
Zapisz zmiany, korzystając z poniższych poleceń, aby uzyskać dostęp do serwera przez SSH.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Zablokuj lub wyłącz dostęp FTP
Zazwyczaj domyślne porty dla FTP to 20 i 21. Aby więc zablokować cały ruch FTP za pomocą IPTables, uruchom następujące polecenie:
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j REJECT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j REJECT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j REJECT
Aby nowe reguły zaczęły obowiązywać, należy użyć następującego polecenia.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Teraz spróbuj uzyskać dostęp do serwera z zablokowanego hosta (192.168.1.100) za pomocą polecenia:
ftp 192.168.1.150
Otrzymasz komunikat o błędzie podobny do poniższego.
ftp: connect: Connection refused
Odblokuj lub włącz dostęp FTP
Aby odblokować i ponownie włączyć dostęp FTP, uruchom:
--------------------- On IPtables Firewall ---------------------
iptables -I INPUT -s 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
iptables -I INPUT -s 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
--------------------- On FirewallD ---------------------
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100 -p tcp --dport 20,21 -j ACCEPT
firewall-cmd --direct --add-rule ipv4 filter INPUT 1 -m tcp --source 192.168.1.100/24 -p tcp --dport 20,21 -j ACCEPT
Zapisz zmiany za pomocą polecenia:
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Teraz spróbuj uzyskać dostęp do serwera przez FTP:
ftp 192.168.1.150
Wprowadź swoją nazwę użytkownika i hasło FTP.
Connected to 192.168.1.150.
220 Welcome to TecMint FTP service.
Name (192.168.1.150:sk): tecmint
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
Metoda 2: Zablokuj dostęp SSH i FTP za pomocą opakowań TCP
Jeśli nie chcesz bawić się IPTables lub FirewallD, to opakowania TCP to lepszy sposób na zablokowanie dostępu SSH i FTP do określonego IP i/lub zasięg sieci.
OpenSSH i FTP są skompilowane z obsługą opakowań TCP, co oznacza, że możesz określić, które hosty mogą się łączyć bez dotykania zapory ogniowej, w następujących dwóch ważnych plikach i są to:
- /etc/hosts.allow
- /etc/hosts.deny
Jak sama nazwa wskazuje, pierwszy plik zawiera wpisy dozwolonych hostów, a drugi adresy zablokowanych hostów.
Przykładowo zablokujmy dostęp SSH i FTP do hosta o adresie IP 192.168.1.100 i zasięgu sieci 192.168.1.0. Ta metoda jest taka sama dla serii CentOS 6.xi 7.x. I oczywiście będzie działać na innych dystrybucjach, takich jak Debian, Ubuntu, SUSE, openSUSE itp.
Otwórz plik /etc/hosts.deny
i dodaj następujące adresy IP lub zakres sieci, które chcesz zablokować, jak pokazano poniżej.
##### To block SSH Access #####
sshd: 192.168.1.100
sshd: 192.168.1.0/255.255.255.0
##### To block FTP Access #####
vsftpd: 192.168.1.100
vsftpd: 192.168.1.0/255.255.255.0
Zapisz i wyjdź z pliku.
Teraz uruchom ponownie usługi sshd i vsftpd, aby nowe zmiany zaczęły obowiązywać.
--------------- For SSH Service ---------------
service sshd restart [On SysVinit]
systemctl restart sshd [On SystemD]
--------------- For FTP Service ---------------
service vsftpd restart [On SysVinit]
systemctl restart vsftpd [On SystemD]
Teraz spróbuj połączyć się z serwerem SSH lub z zablokowanego hosta.
ssh 192.168.1.150
Zobaczysz następujące dane wyjściowe:
ssh_exchange_identification: read: Connection reset by peer
Teraz spróbuj połączyć się z serwerem FTP lub z zablokowanego hosta.
ftp 192.168.1.150
Zobaczysz następujące dane wyjściowe:
Connected to 192.168.1.150.
421 Service not available.
Aby odblokować lub ponownie włączyć usługi SSH i FTP, edytuj plik hosts.deny i skomentuj wszystkie linie, a na koniec zrestartuj usługi vsftpd i sshd.
Wniosek
To wszystko na teraz. Podsumowując, dzisiaj nauczyliśmy się blokować konkretny adres IP i zakres sieci za pomocą IPTables, FirewallD i wrapperów TCP. Metody te są dość łatwe i proste.
Nawet początkujący administrator Linuksa może to zrobić w kilka minut. Jeśli znasz inne sposoby blokowania dostępu SSH i FTP, możesz udostępnić je w sekcji komentarzy. I nie zapomnij udostępnić naszych artykułów we wszystkich sieciach społecznościowych.