Wyszukiwanie w witrynie

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.

  1. 25 wskazówek dotyczących wzmacniania zabezpieczeń serwerów Linux
  2. 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.

  1. Podstawowy przewodnik po IPTables (zaporze linuksowej) – porady/polecenia
  2. Jak skonfigurować zaporę sieciową Iptables, aby umożliwić zdalny dostęp do usług w systemie Linux
  3. Jak skonfigurować „FirewallD” w RHEL/CentOS 7 i Fedorze 21
  4. 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:

  1. /etc/hosts.allow
  2. /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.