SSH je hlavní protokol používaný k připojení a správě linuxových serverů. Z tohoto důvodu je to jeden z nejčastěji napadaných portů, když se nepoctivci pokoušejí získat přístup k vašemu serveru. V tomto článku probereme několik metod, které můžete použít k většímu zabezpečení připojení SSH.
Poznámka: V závislosti na produktu, který máte se službou OVHcloud, mohly být některé z těchto kroků již provedeny. V takovém případě jednoduše přejděte k dalšímu kroku. Kroky v tomto článku navíc předpokládají, že se k serveru ověřujete pomocí klíčů SSH. Pokud místo toho použijete heslo, některé kroky v tomto článku nebudou fungovat.
Předpoklady
- Jak používat klíče SSH
- Server se systémem CentOS 7
Témata
- Vytvoření nového uživatele Sudo
- Změna démona SSH. Konfigurace
Vytvoření nového uživatele Sudo
Vždy je nejlepší zakázat ověřování roota přes SSH, protože to je uživatelské jméno, do kterého se lidé budou snažit nabourat nejvíce. Proto první věc, kterou chceme udělat pro zabezpečení našeho serveru, je vytvoření nového uživatele sudo pro SSH. Za tímto účelem zadejte následující příkaz, přičemž červené uživatelské jméno nahraďte uživatelským jménem podle vlastního výběru:
# adduser username
Dále nastavíme heslo pro uživatele:
# passwd username
Postupujte podle výzvy k vytvoření a potvrzení hesla. Nyní chceme našemu novému uživateli přidělit práva sudo, abychom se mohli stát rootem a spouštět příkazy, které vyžadují administrátorská práva. To provedeme zadáním následujícího příkazu.
# usermod -aG wheel username
Nakonec chceme našemu novému uživateli umožnit ověřování pomocí veřejného klíče SSH, který jsme již poskytli uživateli root. Ke zkopírování veřejného klíče do souboru authorized_keys našeho nového uživatele můžeme použít jednoduchý příkaz rsync.
# rsync --archive --chown=username:username ~/.ssh /home/username
Předtím, než přejdete k dalšímu kroku, odhlaste se a ujistěte se, že jste schopni ověřit se na serveru jako nový uživatel pomocí SSH. Pokud se vám nepodaří přihlásit jako nový uživatel, budete se moci přihlásit jako root; ověřte, že všechny příkazy byly zadány správně, a zkuste se znovu přihlásit jako nový uživatel.
Změna konfigurace démona SSH
Protože k ověřování na serveru používáme klíče SSH a nového uživatele, nikdy nechceme, aby se někdo ověřoval pomocí hesla nebo uživatelského jména root. Abychom toho dosáhli, chceme nejprve přejít do konfiguračního souboru pro démona OpenSSH. Za tímto účelem otevřete soubor ve zvoleném textovém editoru pomocí následujícího příkazu:
$ sudo vi /etc/ssh/sshd_config
V tomto souboru chceme provést tři změny. Zaprvé chceme změnit port, na kterém OpenSSH naslouchá požadavkům.
Upozornění: Pokud máte aktivní firewall, musíte povolit provoz přes zvolený port, jinak si zablokujete přístup k serveru. Pokud se vám podaří zablokovat přístup k serveru, můžete jej znovu získat prostřednictvím rozhraní IPMI nebo KVM. Chcete-li se dozvědět více, přečtěte si náš článek Začínáme s IPMI.
V horní části souboru se zobrazí část, která ve výchozím nastavení vypadá takto:
#Port 22#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::
Zakomentujte část „Port“ a vyberte libovolné platné číslo portu, jako v následujícím příkladu. V našem příkladu používáme port 12345.
Port 12345#AddressFamily any#ListenAddress 0.0.0.0#ListenAddress ::
Dále přejděte na část souboru # Authentication:
. Uvidíte pět možností, které se ve výchozím nastavení zobrazí takto:
#LoginGraceTime 2m#PermitRootLogin yes
PermitRootLogin yes#StrictModes#MaxAuthTries 6#MaxSessions 10
Zde chceme změnit „ano“ u položky „PermitRootLogin“ na „ne“. Zobrazí se takto:
#LoginGraceTime 2m
#PermitRootLogin yesPermitRootLogin no#StrictModes#MaxAuthTries 6#MaxSessions 10
Nyní chceme projít soubor sshd_config ještě o něco níže a provést poslední změnu – zakázat ověřování heslem. Uvidíte sekci, která ve výchozím nastavení vypadá takto:
# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication yes
Chceme změnit „yes“ u položky „PasswordAuthentication“ na „no“. Bude vypadat takto:
# To disable tunneled clear text passwords, change to no here!#PasswordAuthentication yes#PermitEmptyPasswords no
PasswordAuthentication no
Uložení a ukončení souboru. Nakonec musíme restartovat OpenSSH, aby se změny projevily. Uděláte to zadáním následujícího příkazu:
$ sudo systemctl restart sshd.service
Podívejme se na chvíli, co jsme zde udělali. Změnili jsme číslo portu, který používáme pro naslouchání požadavkům SSH. Poté jsme zakázali přístup SSH uživateli root nebo jakémukoli uživateli, který se pokouší ověřit pomocí hesla. Pokud jsme to udělali správně, následující příkaz již nebude pro přihlášení k serveru fungovat.
$ ssh [email protected]
Chceme-li se nyní přihlásit, budeme muset zadat číslo portu, které používáme pro naslouchání požadavkům SSH. To znamená, že od této chvíle budeme muset použít následující příkaz, přičemž číslo vedle „-p“ nahradíme číslem portu, které jsme zvolili dříve:
$ ssh -p 12345 [email protected]
Ujistěte se, že tento příkaz funguje a že předchozí ne. Pokud ano, máte vše připraveno k bezpečnému přístupu k serveru prostřednictvím SSH.
Závěr
V době, kdy internet využívá tolik zlých hráčů, nebylo nikdy důležitější zabezpečit všechny potenciální vstupní body na váš server. Postupem podle tohoto návodu jste napomohli zabezpečení nejčastějšího vstupního bodu na serverech Linux.