Služba SSH je hlavním přístupovým bodem k vašemu cloudovému serveru a zároveň jednou ze služeb nejvíce vystavených útokům. Tato příručka vám pomůže zlepšit zabezpečení služby díky různým trikům a technikám.
Změna naslouchacího portu
Výchozí port pro naslouchání připojení SSH je 22:změna tohoto nastavení umožní cloudovou službu a zvýší bezpečnost připojení.
Abyste se vyhnuli interferenci s jinými existujícími službami na počítači, je dobrou praxí zkontrolovat, které porty jsou aktuálně používány, pomocí příkazu netstat:
$ netstat -n -l
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp6 0 0 :::80 :::* LISTEN
tcp6 0 0 :::22 :::* LISTEN
udp 0 0 127.0.0.53:53 0.0.0.0:*
Prostřednictvím parametru -l předaného do netstat vynutí tisk všech připojení, která jsou ve stavu LISTEN. V tomto příkladu jsou použity následující porty:
služba MySQL 3306
22 SSH
80 Apache2 / HTTP
53 DNS
Chcete-li změnit porty, jednoduše upravte konfigurační soubor v /etc/ssh/sshd_config, odkomentujte direktivu Port:
#Port 22
Potom nastavte novou hodnotu, možná vysokou, abyste zabránili jejímu zachycení jakýmkoli softwarem pro automatické skenování portů (například 2200, 5574, 1022):
Port 5574
Chcete-li použít změnu, nahrajte službu prostřednictvím:
$ sudo service sshd reload
. Udržujte připojení naživu pomocí opětovného načtení takovým způsobem, abyste opravili jakoukoli chybu a zkontrolovali jakýkoli nový přístup s jiným klientem SSH
Jakmile se změna použije, připojte se k serveru a zadejte nový port. Pokud například používáte klienta SSH z příkazového řádku:
$ ssh [email protected]<SERVER.IP> -p 5574
Použití klíčů pro ověření
Široce používaný pro své zabezpečení je přístup pomocí RSA klíčů alternativou k přihlašování pomocí hesla. Při tomto typu ověřování klient generuje soukromý klíč a související veřejný klíč, který je nainstalován na počítači serveru, aby bylo možné klienta jednoznačně ověřit. .
Pro instalaci veřejného klíče by klient měl nejprve vygenerovat pár klíčů pomocí příkazu ssh-keygen:
$ ssh-keygen
Generating public/private rsa key pair.
Enter file where to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
Před pokračováním v generování se ssh-keygen zeptá na volitelnou přístupovou frázi, kterou lze použít k ověření. V tomto příkladu byl pro usnadnění přístupu následující soubor ponechán prázdný.
Po dokončení software uloží dva soubory do určeného :
id_rsa:soukromý klíč klienta, který nelze s nikým sdílet.
id_rsa.pub:veřejný klíč ke sdílení .
Chcete-li připravit prostředí serveru, vytvořte soubor s názvem author_keys ve složce .ssh v uživatelské složce, kterou budete používat pro přihlášení:
$ sudo mkdir ~/.ssh
$ sudo touch ~/.ssh/authorized_keys
$ sudo chmod 600 ~/.ssh/authorized_keys
Ujistěte se, že soubor má oprávnění jako výše .
Potom pokračujte vložením veřejného klíče dříve připraveného klientským počítačem:
$ sudo nano ~/.ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCoTzd9RnqT0yioQG1klsLEK/VG9myo7CQ47aRXu7hnPit6Lgw5kAjC7vzNWYLTy2oIlsrVI7R/tvWmVNISGkWDp9U3fONbSLp+vgBKDzRUVAIqP/AIJ2THanyZxj2b8XU/4s2uzGoTLSR3ViX0JU6zTc+IkaBp1o3W3OolvO15E10/VYJCKN3TkxPsSSGE3QReXnCcnIZYAnrPf9f1DPP1Lo+VUCIzZ7IzcZajAWQ53hC71mTYNHkUgIlWxpRyEhnsRfmqEfUSFbTwpNEarv7vGlK686C4xVxlVfKbqlNa3/g2Vrae4ArVBM958JPZ6aa+7KDZfH5TDgPPtlFCIGkd [email protected]
Uložte soubor a znovu načtěte službu SSH:
$ sudo service sshd reload
V tomto okamžiku by měl být možný přístup k serveru bez vyžadování jakéhokoli hesla:
$ ssh [email protected]<SERVER.IP>
Pokud vše funguje správně, zakažte přístup pomocí hesla ze serveru úpravou souboru / etc / ssh / sshd_config s následujícími parametry:
ChallengeResponseAuthentication no
PasswordAuthentication no
Nezapomeňte, že můžete přidat další veřejné klíče tak, že je jednoduše uložíte na konec souboru ~ / .ssh / author_keys souboru v počítači serveru.
Omezení doby dostupnosti služby
Strategií pro omezení nežádoucího přístupu a útoků hrubou silou je zkrátit dobu dostupnosti služby SSH. Pokud jste si jisti, že se v určitou dobu (například od 23:00 do 08:00 následujícího dne) k serveru nepotřebujete připojovat, nastavte automatický plán blokování portu připojení.
K tomu použijte výchozí firewall s názvem iptables, ale než budete pokračovat v konfiguraci, nezapomeňte, že iptables ze své podstaty neukládá zadanou konfiguraci.
Pro rychlejší uložení a načtení konfigurace použijte balíček iptables-persistent, který znovu načte konfiguraci uloženou při startu systému.
Pak pokračujte v instalaci balíčku:
$ sudo apt-get install iptables-persistent
Po dokončení instalace zadejte „řetězec“ pro zablokování služby SSH:
$ sudo iptables -N chain-ssh
$ sudo iptables -A INPUT -p tcp --dport 22 -j chain-ssh
Tímto způsobem projdou všechna připojení určená pro port 22 (pokud vaše služba SSH používá jiný port, změňte tuto hodnotu) nově vytvořeným řetězcem „chain-ssh“.
Uložte aktuální konfiguraci (kterou načte iptables-persistent) pomocí příkazu:
$ sudo iptables-save > /etc/iptables/rules.v4
Potom vytvořte časový plán pro zadání a odstranění pravidla v řetězci úpravou crontab následovně:
$ sudo crontab -e
# m h dom mon dow command
0 23 * * * iptables -A chain-ssh -j DROP
0 8 * * * iptables -F chain-ssh
Jak vidíte, s první operací je přidáno pravidlo DROP spojení ve 23:00, zatímco druhá operace vyprázdní řetězec v 08:00, aby se služba obnovila.
Uložte soubor pro použití změn.