GNU/Linux >> Znalost Linux >  >> Linux

Jak zabezpečit službu SSH pomocí funkce Port Knocking

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!


Linux
  1. SSH na jiný port než 22:Jak na to (s příklady)

  2. Jak nastavit SSH tunelování

  3. Jak zabezpečit server Ubuntu pomocí brány firewall CSF

  1. Jak nainstalovat službu SSH (zabezpečený shell) na Kali Linux

  2. Jak povolit službu SSH v Ubuntu 22.04 LTS

  3. Jak změnit port SSH v Linuxu

  1. Jak vytvořit osobní souborový server s SSH na Linuxu

  2. Jak změnit port SSH na VPS

  3. Jak SSH na server pomocí jiného serveru?