Pokud pracujete na vzdálených Linux serverech nebo kontejnerech, můžete si myslet, že je to bezpečné. Bohužel, toto je omyl. I když je Secure Shell (SSH) bezpečnější než starší řešení jako Telnet, stále je potřeba přijmout další opatření k zajištění bezpečnosti vašich systémů a dat.

Ve výchozím nastavení SSH funguje na základě uživatelského jména a hesla. Pokud použijete příkaz ssh [email protected], budete vyzváni ke zadání hesla pro uživatele „ralph“ na serveru „example.com“.

Existuje však lepší způsob, který je méně náchylný k napadení serveru. Nazývá se SSH klíčová autentizace.

SSH klíčová autentizace funguje na základě dvojice klíčů vygenerovaných na vašem počítači. Klíčový pár se skládá z privátního klíče a veřejného klíče. Privátní klíč zůstává bezpečně na vašem počítači, zatímco veřejný klíč je odeslán na server, ke kterému chcete získat vzdálený přístup. Po nakonfigurování klíčů jsou při každém přihlášení na server ověřovány, zda se shodují. Pokud klíče odpovídají, získáte přístup k serveru. Pokud se klíče neshodují, nemáte štěstí.

Toto řešení je značně bezpečnější než tradiční autentizace pomocí uživatelského jména a hesla a mělo by být používáno pro jakýkoli Linux server, který používáte.

Ukážu vám, jak implementovat SSH klíčovou autentizaci.

Co budete potřebovat?

Pro provedení této ukázky budete potřebovat minimálně dva Linuxové stroje – jeden lokální a jeden vzdálený. Vzhledem k tomu, že všechno se provádí prostřednictvím příkazové řádky, nemusíte nastavovat grafické prostředí. Samozřejmě budete také potřebovat IP adresu nebo doménu vzdáleného serveru a lokální stroj musí být schopen vzdáleného přístupu k vzdálenému serveru.

Generujte SSH klíčový pár

První věc, kterou musíte udělat, je vygenerovat si svůj SSH klíčový pár. To proveďte na svém lokálním počítači. Přihlaste se na stroj a vytvořte klíčový pár pomocí příkazu:

ssh-keygen

Budete vyzváni, kam uložit klíč (výchozí umístění je ~/.ssh) a budete muset zadat a potvrdit heslo pro klíčový pár. Ujistěte se, že používáte silné/unikátní heslo.

Výše uvedený příkaz vygeneruje dva soubory: id_rsa (privátní klíč) a id_rsa.pub (veřejný klíč).

Zkopírujte klíč na vzdálený stroj

Dalším krokem je zkopírovat veřejný klíč na vzdálený stroj. Naštěstí SSH obsahuje vestavěnou funkci, která tento úkol usnadňuje. Chcete-li klíč zkopírovat, spusťte jednoduše následující příkaz:

ssh-copy-id UŽIVATEL@SERVER

Kde UŽIVATEL je vaše uživatelské jméno a SERVER je IP adresa nebo doména vzdáleného serveru. Budete vyzváni k zadání hesla SSH uživatele na vzdáleném stroji. Po úspěšné autentizaci bude veřejný klíč uložen v adresáři ~/.ssh na vzdáleném serveru.

Poté můžete vyzkoušet SSH klíčovou autentizaci tím, že se pokusíte znovu přihlásit na vzdálený stroj pomocí příkazu:

ssh UŽIVATEL@SERVER

Kde UŽIVATEL je uživatelské jméno a SERVER je IP adresa nebo doména vzdáleného serveru. Tentokrát vás bude vyzváno k zadání hesla SSH klíče (ne hesla uživatele).

Gratuluji, SSH klíčová autentizace funguje!

Ale bezpečnost můžeme ještě zvýšit.

Nakonfigurujte SSH server pro zvýšenou bezpečnost

Před pokračováním v této části se ujistěte, že jste vytvořili klíčové páry a zkopírovali veřejný klíč na server ve všech klientech, kterým bude umožněn přístup k vzdálenému serveru. Pokud to neuděláte, zjistíte, že tyto stroje nebudou mít schopnost se přihlásit (i při správných uživatelských účtech). Jediným způsobem, jak vyřešit tento problém, je manuálně zkopírovat obsah veřejného SSH klíče z klienta do souboru ~/.ssh/authorized_keys na serveru.

Dalším krokem je povolit veřejnou klíčovou autentizaci a zakázat autentizaci pomocí hesla (na vzdáleném serveru).

Otevřete konfigurační soubor SSH démona (na vzdáleném serveru) pomocí příkazu:

sudo nano /etc/ssh/sshd_config

Nejprve najděte řádek:

# PubkeyAuthentication yes

Tento řádek změňte na:

PubkeyAuthentication yes

Poté najděte řádek:

# PasswordAuthentication yes

Tento řádek změňte na:

PasswordAuthentication no

Uložte a zavřete soubor.

Restartujte SSH pomocí příkazu:

sudo systemctl restart sshd

Před ukončením aktuálního připojení otevřete nové okno terminálu (na stroji, na který jste zkopírovali veřejný klíč na server) a zkuste se znovu přihlásit přes SSH. Pokud dostanete přístup, jste dokázali, že jediným způsobem, jak se přihlásit přes SSH, je pomocí klíčové autentizace.

Nyní bude každý pokus o přihlášení na váš Linux server bez odpovídajících klíčových párů odmítnut.

FAQ

1. Jaké řešení zajišťují bezpečnost serveru?
Řešení zabezpečující serverovou autentizaci pomocí SSH klíčů.

2. Jak funguje SSH klíčová autentizace?
SSH klíčová autentizace funguje na principu dvojice klíčů: privátního a veřejného. Privátní klíč zůstává na lokálním počítači a veřejný klíč je odeslán na server, ke kterému chcete získat přístup. Oba klíče se ověřují při přihlášení, zda se shodují.

3. Proč je SSH klíčová autentizace bezpečnější než tradiční přihlašování pomocí uživatelského jména a hesla?
SSH klíčová autentizace je bezpečnější, protože nepotřebuje při přihlášení zadávat heslo. Privátní klíč zůstává na lokálním počítači, což ztěžuje neautorizovaným osobám odposlech.

4. Jak vygenerovat SSH klíčový pár?
SSH klíčový pár můžete vygenerovat na lokálním počítači pomocí příkazu „ssh-keygen“.

5. Jak zkopírovat veřejný klíč na vzdálený stroj?
Veřejný klíč můžete zkopírovat na vzdálený stroj pomocí příkazu „ssh-copy-id UŽIVATEL@SERVER“.

6. Jak nastavit SSH server pro zvýšenou bezpečnost?
Pro zvýšení bezpečnosti SSH serveru je třeba povolit veřejnou klíčovou autentizaci a zakázat autentizaci pomocí hesla v konfiguračním souboru SSH démona.

7. Jak restartovat SSH po provedení změn v konfiguraci?
SSH můžete restartovat pomocí příkazu „sudo systemctl restart sshd“.

Definice

Secure Shell (SSH) – bezpečný komunikační protokol pro síťová připojení. Často se používá pro vzdálený přístup na servery.

Privátní klíč – tajný kryptografický klíč, který zůstává na lokálním počítači. Používá se k odemčení zašifrovaných dat.

Veřejný klíč – kryptografický klíč, který je odeslán na server, ke kterému chcete získat přístup. Používá se při SSH klíčové autentizaci.

Autentizace – proces ověřování identity uživatele nebo systému.

Příkazová řádka – textové rozhraní na interakci s počítačem prostřednictvím příkazů.

The source of the article is from the blog jomfruland.net