Jak blokovat SSH a FTP přístup ke konkrétní IP a síťovému rozsahu v Linuxu
Obvykle všichni používáme služby SSH a FTP pro přístup ke vzdáleným serverům a virtuálním privátním serverům. Jako správce Linuxu si musíte být vědomi toho, jak v Linuxu blokovat přístup SSH a FTP ke konkrétním IP nebo síťovým rozsahům, aby bylo možné zabezpečení ještě zpřísnit.
- 25 tipů pro posílení zabezpečení pro servery Linux
- 5 užitečných tipů pro zabezpečení a ochranu serveru SSH
Tento tutoriál vám ukáže, jak blokovat přístup SSH a FTP ke konkrétní IP adrese a/nebo síťovému rozsahu na serveru CentOS 6 a 7. Tato příručka byla testována na verzích CentOS 6.x a 7.x, ale pravděpodobně bude fungovat i na jiných distribucích Linuxu, jako jsou Debian, Ubuntu a SUSE/openSUSE atd.
Uděláme to dvěma způsoby. První metoda využívá IPTables/firewallD a druhá metoda využívá obaly TCP s pomocí hosts.allow a hosts.deny.
Další informace o IPTables a Firewallu naleznete v následujících příručkách.
- Základní příručka pro IPTables (Linux Firewall) Tipy/Příkazy
- Jak nastavit Iptables Firewall pro povolení vzdáleného přístupu ke službám v Linuxu
- Jak nakonfigurovat „FirewallD“ v RHEL/CentOS 7 a Fedora 21
- Užitečná pravidla „FirewallD“ pro konfiguraci a správu brány firewall v systému Linux
Nyní víte, co jsou IPTables a FirewallD a jsou to základy.
Metoda 1: Blokujte přístup SSH a FTP pomocí IPTables/FirewallD
Nyní se podívejme, jak zablokovat přístup SSH a FTP ke konkrétní IP adrese (například 192.168.1.100) a/nebo rozsahu sítě (například 192.168.1.0/24) pomocí IPtables na verzích RHEL/CentOS/Scientific Linux 6.x a FirewallD na CentOS 7.x.
Zablokujte nebo zakažte přístup 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
Chcete-li nová pravidla uplatnit, musíte použít následující příkaz.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Nyní zkuste SSH server z blokovaného hostitele. Mějte prosím na paměti, že zde je blokovaný hostitel 192.168.1.150.
ssh 192.168.1.150
Měli byste vidět následující zprávu.
ssh: connect to host 192.168.1.150 port 22: Connection refused
Odblokujte nebo povolte přístup SSH
Chcete-li odblokovat nebo povolit přístup SSH, přejděte na vzdálený server a spusťte následující příkaz:
--------------------- 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
Uložte změny pomocí následujícího pro přístup k vašemu serveru přes SSH.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Blokovat nebo deaktivovat FTP přístup
Výchozí porty pro FTP jsou obvykle 20 a 21. Chcete-li tedy zablokovat veškerý provoz FTP pomocí IPTables, spusťte následující příkaz:
--------------------- 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
Chcete-li nová pravidla uplatnit, musíte použít následující příkaz.
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Nyní se pokuste o přístup k serveru z blokovaného hostitele (192.168.1.100) pomocí příkazu:
ftp 192.168.1.150
Zobrazí se chybová zpráva podobná níže.
ftp: connect: Connection refused
Odblokujte nebo povolte přístup FTP
Chcete-li odblokovat a znovu povolit přístup FTP, spusťte:
--------------------- 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
Uložte změny příkazem:
service iptables save [On IPtables Firewall]
firewall-cmd --reload [On FirewallD]
Nyní se pokuste připojit k serveru přes FTP:
ftp 192.168.1.150
Zadejte své ftp uživatelské jméno a heslo.
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: Blokujte přístup SSH a FTP pomocí TCP Wrapperů
Pokud si nechcete zahrávat s IPTables nebo FirewallD, pak TCP wrappery představují lepší způsob, jak blokovat SSH a FTP přístup ke konkrétnímu IP a/nebo rozsah sítí.
OpenSSH a FTP jsou kompilovány s podporou TCP wrapperů, což znamená, že v následujících dvou důležitých souborech můžete určit, kteří hostitelé se mohou připojit, aniž byste se dotkli vašeho firewallu:
- /etc/hosts.allow
- /etc/hosts.deny
Jak název napovídá, první soubor obsahuje položky povolených hostitelů a druhý obsahuje adresy blokovaných hostitelů.
Zablokujme například SSH a FTP přístup k hostiteli, který má IP adresu 192.168.1.100 a síťový rozsah 192.168.1.0. Tato metoda je stejná pro řadu CentOS 6.xa 7.x. A samozřejmě bude fungovat i na jiných distribucích, jako je Debian, Ubuntu, SUSE, openSUSE atd.
Otevřete soubor /etc/hosts.deny
a přidejte následující adresy IP nebo rozsah sítě, které chcete blokovat, jak je znázorněno níže.
##### 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
Uložte a ukončete soubor.
Nyní restartujte službu sshd a vsftpd, aby se nové změny projevily.
--------------- 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]
Nyní zkuste SSH serveru nebo z blokovaného hostitele.
ssh 192.168.1.150
Uvidíte následující výstup:
ssh_exchange_identification: read: Connection reset by peer
Nyní zkuste FTP server nebo z blokovaného hostitele.
ftp 192.168.1.150
Uvidíte následující výstup:
Connected to 192.168.1.150.
421 Service not available.
Chcete-li znovu odblokovat nebo povolit služby SSH a FTP, upravte soubor hosts.deny a zakomentujte všechny řádky a nakonec restartujte služby vsftpd a sshd.
Závěr
To je prozatím vše. Abychom to shrnuli, dnes jsme se naučili, jak blokovat konkrétní IP adresu a rozsah sítě pomocí IPTables, FirewallD a TCP wrapperů. Tyto metody jsou docela snadné a přímočaré.
Dokonce i začínající správce Linuxu to zvládne za pár minut. Pokud znáte nějaké další způsoby blokování přístupu SSH a FTP, neváhejte je sdílet v sekci komentářů. A nezapomeňte sdílet naše články na všech vašich sociálních sítích.