Pokud chcete uživatelům umožnit přístup ke konkrétním službám na vašem serveru bez otevření brány firewall, můžete použít klepání portů. Klepání portů je metoda, která vám umožňuje zabezpečit vaši službu před neoprávněnými uživateli. Klepání portu umožňuje příchozí připojení, když je přijata správná sekvence pokusů o připojení.
V tomto příspěvku zajistíme otevřený SSH port 22 pomocí klepání portu. Tento port bude otevřen pouze tehdy, když někdo požádá o porty 7000, 8000, 9000 v pořadí.
Předpoklady
- Server Ubuntu 20.04 na cloudové platformě Atlantic.Net
- Heslo uživatele root nakonfigurované na vašem serveru
Krok 1 – Vytvořte cloudový server Atlantic.Net
Nejprve se přihlaste ke svému cloudovému serveru Atlantic.Net. Vytvořte nový server a jako operační systém vyberte Ubuntu 20.04 s alespoň 2 GB RAM. Připojte se ke svému cloudovému serveru přes SSH a přihlaste se pomocí přihlašovacích údajů zvýrazněných v horní části stránky.
Jakmile se přihlásíte ke svému serveru Ubuntu 20.04, spusťte následující příkaz a aktualizujte svůj základní systém nejnovějšími dostupnými balíčky.
apt-get update -y
Krok 2 – Instalace a konfigurace Knockd
apt-get install knockd -y
Jakmile je balíček nainstalován, upravte výchozí konfigurační soubor klepání portu:
nano /etc/knockd.conf
Najděte výchozí sekvenci uvedenou níže:
sequence = 7000,8000,9000 sequence = 9000,8000,7000
A nahraďte je následujícím pořadím:
sequence = 7777,8888,9999 sequence = 9999,8888,7777
Najděte také následující řádek:
command = /sbin/iptables -A INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
A nahraďte jej následujícím řádkem:
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
Po dokončení uložte a zavřete soubor.
Ve výše uvedeném konfiguračním souboru se sekvence 7777, 8888, 9999 používá k otevření portu 22 pro klientský systém a sekvence 9999, 8888, 7777 se používá k uzavření portu 22 pro klientský systém.
Dále upravte /etc/default/knockd konfigurační soubor:
nano /etc/default/knockd
Změňte následující řádky:
# Start the Knockd service START_KNOCKD=1 # Name of your network interface KNOCKD_OPTS="-i eth0"
Po dokončení uložte a zavřete soubor, restartujte službu Knockd a povolte její spuštění při restartu systému:
systemctl restart knockd systemctl enable knockd
Dále ověřte stav služby Knockd pomocí následujícího příkazu:
systemctl status knockd
Ukázkový výstup:
● knockd.service - Port-Knock Daemon Loaded: loaded (/lib/systemd/system/knockd.service; disabled; vendor preset: enabled) Active: active (running) since Sun 2021-08-15 13:26:31 UTC; 5s ago Docs: man:knockd(1) Main PID: 6555 (knockd) Tasks: 1 (limit: 2353) Memory: 296.0K CGroup: /system.slice/knockd.service └─6555 /usr/sbin/knockd -i eth0 Aug 15 13:26:31 ubuntu2004 systemd[1]: Started Port-Knock Daemon. Aug 15 13:26:31 ubuntu2004 knockd[6555]: starting up, listening on eth0
Krok 3 – Instalace a konfigurace Iptables
Knockd používá pravidlo Iptables k otevření a zavření portu SSH, takže budete muset nainstalovat balíček Iptables na svůj server.
Spusťte následující příkaz pro instalaci balíčku Iptables:
apt-get install iptables iptables-persistent -y
Jakmile je balíček nainstalován, vytvořte pravidlo Iptables pro blokování portu SSH 22 pro všechny uživatele:
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j REJECT
Dále uložte pravidlo Iptables a znovu jej načtěte pomocí následujícího příkazu:
netfilter-persistent save netfilter-persistent reload
V tomto okamžiku je na vašem serveru nakonfigurováno klepání portů pro OpenSSH.
Krok 4 – Zkontrolujte připojení OpenSSH z klientského systému
Dále přejděte do klientského systému a zkontrolujte, zda je port OpenSSH 22 blokován nebo ne.
Můžete to zkontrolovat pomocí příkazu NMAP:
nmap your-server-ip
Měli byste vidět, že port 22 je na serveru filtrován.
Nmap scan report for your-server-ip Host is up (0.38s latency). Not shown: 998 closed ports PORT STATE SERVICE 21/tcp open ftp 22/tcp filtered ssh Nmap done: 1 IP address (1 host up) scanned in 277.58 seconds
Nyní se zkuste připojit k serveru pomocí SSH z klientského počítače:
ssh [email protected]
Měli byste vidět zprávu o odmítnutí připojení:
ssh: connect to host your-server-ip port 22: Connection refused
Krok 5 – Nakonfigurujte Knockd na klientovi pro připojení SSH serveru
Nyní budete muset nainstalovat klienta Knock na klientský systém, abyste se mohli připojit k serveru SSH.
Nejprve spusťte následující příkaz k instalaci klientského balíčku Knockd:
apt-get install knockd -y
Nyní použijte následující sekvenci klepání k otevření portu SSH 22 na serveru.
knock -v your-server-ip 7777 8888 9999
Když váš server obdrží správnou sekvenci, kterou jste definovali v konfiguračním souboru Knockd, otevře port SSH 22 pro váš klientský počítač a budete se moci připojit k serveru SSH.
ssh [email protected]
Po dokončení úkolu na vzdáleném serveru SSH můžete z klientského počítače znovu zavřít port SSH pomocí následující sekvence.
knock -v your-server-ip 9999 8888 7777
Závěr
Ve výše uvedené příručce jste se naučili, jak zabezpečit server SSH pomocí klepání portů. Stejnou metodu můžete použít k zabezpečení dalších portů na serveru Linux. Zkuste to na VPS hostingu od Atlantic.Net!