Sada OpenSSH je sada robustních nástrojů určených k usnadnění vzdáleného ovládání a přenosu dat mezi síťovými systémy. Skládá se z řady nástrojů, včetně SSH, SCP, SFTP, SSHD a mnoha dalších. Pokaždé, když používáte ssh pro přihlášení ke vzdálenému počítači, je vysoce pravděpodobné, že využijete server OpenSSH. V této příručce poskytneme podrobnou diskusi o tom, jak OpenSSH funguje a jak jej správně používat pro splnění rostoucích požadavků na zabezpečení. Pokud se tedy chcete dozvědět více o spletitosti OpenSSH, zůstaňte s námi v průběhu tohoto průvodce.
Ponořte se do hloubky OpenSSH Server &Services
Server OpenSSH je srdcem vzdálené komunikace mezi počítači se systémem Linux a/nebo BSD. Některé z jeho pozoruhodných funkcí zahrnují šifrování provozu, několik výkonných metod ověřování, zabezpečené tunelování a sofistikované možnosti konfigurace. Níže uvedené části poskytují smysluplné pochopení základních služeb a bezpečnostních tipů.
Základy OpenSSH serveru
Jak naznačuje jeho název, OpenSSH využívá protokol SSH (Secure Shell) pro poskytování vzdáleného připojení a zařízení pro přenos dat. Odstraňuje slabá místa zabezpečení spojená se staršími metodami, jako je příkaz Linux FTP a telnet. OpenSSH usnadňuje ověřování legitimních uživatelů a šifrování vzdálených připojení.
Základní nástroj sady OpenSSH odpovědný za správu vzdálených připojení je OpenSSH Server nebo sshd. Neustále naslouchá příchozím požadavkům a nastavuje vhodný typ připojení, když přijde nový požadavek.
Pokud například uživatel používá ke komunikaci se serverem klientský program ssh, sshd nastaví relaci vzdáleného ovládání, jakmile je ověření úspěšné. Pokud uživatel místo toho používá SCP, sshd zahájí relaci zabezpečeného kopírování.
Koncový uživatel musí zvolit vhodný komunikační mechanismus pro své připojení. To usnadňují nástroje jako ssh-add a ssh-keygen. Když se uživatel úspěšně připojí ke vzdálenému počítači pomocí příkazu ssh, uvítá ho textová konzole. Jakékoli příkazy zadané na této konzole jsou odesílány přes šifrovaný tunel SSH pro provedení na vzdáleném počítači.
Instalace a konfigurace serveru OpenSSH
Následující část pojednává o tom, jak nainstalovat démona serveru OpenSSH a nakonfigurovat jej. Ukážeme nejlepší možnosti konfigurace pro osobní použití i pro podnikové účely. Na konci této části také nastíníme nejlepší postupy pro konfiguraci a posílení OpenSSH.
Jak nainstalovat OpenSSH Server
--Většina moderních distribucí Linuxu je dodávána s již nainstalovaným OpenSSH. Pokud jej však potřebujete nainstalovat ručně, můžete to provést pomocí následujícího jednoduchého příkazu.
$ sudo apt install openssh-server
Tento příkaz nainstaluje démona serveru. Pomocí níže uvedeného příkazu nainstalujte klienta OpenSSH do vašeho systému.
$ sudo apt install openssh-client
Jak nakonfigurovat server OpenSSH
OpenSSH podporuje velké množství konfiguračních možností pro ovládání věcí, jako je nastavení komunikace a režimy ověřování. Soubor sshd_config specifikuje konfigurační parametry a obsahuje adresy dalších konfiguračních souborů, včetně jednoho nebo více klíčů hostitele soubory a autorizované_klíče soubory. Nachází se v /etc/ssh/ adresář vašeho souborového systému.
Než přejdete k vyladění některých jeho parametrů, doporučujeme vám zálohovat aktuální kopii souboru sshd_config soubor. Můžete to udělat tak, že otevřete svůj oblíbený emulátor terminálu Linux a vydáte následující příkaz.
$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
Tímto způsobem, pokud si pokazíte sshd_config soubor, můžete se vždy vrátit k původní konfiguraci. Nyní můžete pokračovat v konfiguraci vašeho ssh serveru. Před tím doporučujeme čtenářům otestovat jejich efektivní konfiguraci sshd pomocí níže uvedeného jednoduchého příkazu.
$ sudo sshd -T
Nyní, když jste si zazálohovali sshd_confi g a zobrazili jste výchozí nastavení, je čas upravit konfigurační soubor. K otevření a úpravě našeho konfiguračního souboru použijeme textový editor vim. Můžete však použít libovolný textový editor pro Linux.
$ sudo vim /etc/ssh/sshd_config
Jak byste si měli všimnout, existuje již řada předkonfigurovaných možností. Většina z nich je však okomentována. Můžete je aktivovat zrušením komentáře na konkrétním řádku, který určuje parametr options. Odstraňte libru „#“ symbol ze začátku řádku pro zrušení komentáře. Níže diskutujeme o některých důležitých možnostech.
- AcceptEnv
Tato možnost určuje, které proměnné prostředí zaslané klientem lze zkopírovat do vzdáleného prostředí.
- AddressFamily
Definuje rodinu IP adres pro použití sshd. Dostupné jsou tři možnosti – any, inet a inet6.
- AllowAgentForwarding
Tato volba určuje, zda je předávání agenta ssh povoleno nebo ne.
- AllowStreamLocalForwarding
Definuje, zda je či není povoleno předávání soketů domén Unix.
- AllowTcpForwarding
Definuje, zda je přesměrování TCP povoleno nebo ne.
- AllowUsers
Tato možnost může definovat seznam uživatelských jmen, kterým je povolen přístup na základě vzoru. Ve výchozím nastavení jsou povolena všechna uživatelská jména.
- AuthenticationMethods
Tato možnost uvádí metody ověřování, které musí uživatel provést před získáním přístupu.
- AuthorizedKeysFile
Tato možnost určuje soubor, který obsahuje veřejné klíče pro ověření uživatele.
- ChallengeResponseAuthentication
Když je tato možnost povolena, umožňuje ověřování typu výzva-odpověď.
- ChrootDirectory
Určuje kořenový adresář, který se zobrazí uživatelům, kteří se úspěšně ověřili.
- Šifry
Tato volba definuje kryptografické šifry povolené serverem OpenSSH. Existuje široká škála dostupných možností.
- Komprese
Určuje, zda je povolena komprese, a pokud ano, v jaké fázi.
- Odmítnout uživatele
Tuto volbu lze použít k definování seznamu uživatelských jmen, kterým byl odepřen přístup na základě vzoru.
- ForceCommand
Lze jej použít k vynucení provedení určitého příkazu. Přinutí server ignorovat jakýkoli příkaz poskytnutý klientem ssh a vše, co je v ~/.ssh/rc .
- Porty brány
Tato možnost určuje, zda se vzdálení hostitelé mohou připojit k portům, které byly předány na straně klienta.
- GSSAPIAuthentication
Používá se k označení, zda je či není povolena autentizace uživatele založená na GSSAPI.
- HostbasedAuthentication
Tato volba určuje, zda veřejný klíč přítomný v klientském počítači může ověřit hostitele na vzdáleném serveru.
- HostbasedUsesNameFromPacketOnly
Tato možnost určuje, zda server potřebuje provést zpětné vyhledání názvů jmen přítomných v /.shosts , ~/.rhosts a /etc/hosts.equiv soubory.
- HostKey
Lze jej použít k definování souboru, který obsahuje soukromý klíč hostitele. Správci mohou zadat více souborů klíčů. výchozí jsou /etc/ssh/ssh_host_dsa_key , /etc/ssh/ssh_host_ecdsa_key , /etc/ssh/ssh_host_ed25519_key a /etc/ssh/ssh_host_rsa_key .
- HostKeyAlgorithms
Tato volba definuje algoritmy klíče hostitele zpřístupněné serverem ssh. OpenSSH podporuje velké množství algoritmů pro tento účel.
- IgnorovatRhosts
Řekne serveru, aby ignoroval .rhosts a .shosts soubory pro RhostsRSAAuthentication a HostbasedAuthentication .
- KbdInteractiveAuthentication
Tato možnost určuje, zda server povoluje interaktivní ověřování pomocí klávesnice nebo ne.
- KexAlgorithms
Používá se k uvedení dostupných algoritmů pro výměnu klíčů ssh. OpenSSH podporuje všechny hlavní algoritmy výměny klíčů, včetně Diffie Hellmana a Elliptic Curves.
- ListenAddress
Definuje, které místní adresy by měl démon sshd naslouchat.
- LoginGraceTime
Tato volba definuje čas, po kterém sshd odpojí uživatele, pokud se nepodaří úspěšně přihlásit.
- Úroveň protokolu
Definuje úroveň upovídanosti zpráv protokolu pro sshd.
- MAC
Tato možnost se používá pro definování dostupných algoritmů Message Authentication Code (MAC). Používají se k ochraně integrity dat.
- MaxAuthTries
Tato možnost definuje maximální počet pokusů o ověření uživatele na serveru.
- Ověření heslem
Definuje, zda se vzdálený uživatel může přihlásit pomocí ověřování na základě hesla.
- PermitEmptyPasswords
Tato možnost určuje, zda mohou uživatelé používat prázdné heslo pro vzdálené přihlášení.
- PermitRootLogin
Tato možnost určuje, zda je přihlášení root povoleno nebo ne.
- PovolitTTY
Tato volba určuje, zda je pseudo TTY povoleno nebo ne.
Odkomentujte řádek, který obsahuje jednu z výše uvedených možností, a nastavte požadovanou hodnotu možnosti. Níže uvedená část ilustruje některé běžné postupy posílení zabezpečení pro OpenSSH.
Jak posílit zabezpečení serveru OpenSSH
Vzhledem k tomu, že OpenSSH funguje jako vstupní dveře k vašemu serveru, je nesmírně důležité posílit jeho zabezpečení. Pokuste se zachovat následující návrhy, aby bylo vzdálené přihlášení extra bezpečné.
1. Zakázat přihlášení roota
Nikdy byste neměli povolit přihlášení root na vašem ssh serveru, protože eskalace účtu root může ohrozit celý server. Uživatelský účet root je navíc neustále cílem uživatelů se zlými úmysly. Je tedy lepší vytvořit běžného uživatele a povolit mu oprávnění sudo. Přihlášení uživatele root můžete zakázat nastavením hodnoty PermitRootLogin na ne.
PermitRootLogin no
2. Omezit pokusy o ověření
Správci musí omezit počet pokusů o přihlášení ze vzdálených hostitelů, aby zabránili pokusům o přihlášení hrubou silou. Díky vzestupu obrovských armád bot je to důležitější než kdy jindy. Pomocí možnosti MaxAuthTries nastavte počet povolených pokusů o ověření vašeho serveru. Mnoho správců považuje tři za přijatelnou hodnotu pro tuto možnost. Můžete jej však nastavit na základě vašich bezpečnostních standardů.
MaxAuthTries 3
3. Snižte dobu odkladu přihlášení
Dalším způsobem, jak zabránit automatickým robotům, je zkrátit dobu odkladu přihlášení. Toto je doba, po kterou se musí uživatel po připojení k serveru úspěšně ověřit. Soubor sshd_config soubor definuje tuto hodnotu v sekundách.
LoginGraceTime 20
4. Zakázat ověřování hesla
Měli byste uživatelům povolit přihlášení k serveru pouze pomocí ověřování na základě klíče. Ujistěte se tedy, že jste deaktivovali schéma ověřování na základě hesla. Můžete to provést nastavením hodnoty Ověření heslem na ne.
PasswordAuthentication no
Je také dobré zakázat prázdná hesla. Nastavte hodnotu pole PermitEmptyPasswords na no.
PermitEmptyPasswords no
5. Zakázat jiné metody ověřování
OpenSSH podporuje některé další autentizační metody jiné než autentizace na základě klíče a hesla. Po nastavení ověřování na základě klíče a deaktivaci ověřování heslem byste je měli úplně zakázat.
ChallengeResponseAuthentication no KerberosAuthentication no GSSAPIAuthentication no
6. Zakázat X11 Forwarding
Přesměrování X11 se používá k zobrazení grafických aplikací na serveru na vzdáleném hostitelském počítači. U většiny podnikových serverů to však není potřeba. Pokud tuto funkci nepotřebujete, deaktivujte ji.
X11Forwarding no
Po zakázání X11 Forwarding musíte zakomentovat všechny odkazy na AcceptEnv . Jednoduše přidejte hash(#) před řádky a okomentujte je.
7. Zakázat různé možnosti
Zakažte následující možnosti používané pro tunelování a předávání, pokud je pro váš server nepotřebujete.
AllowAgentForwarding no AllowTcpForwarding no PermitTunnel no
8. Zakázat SSH Banner
Podrobný banner ssh je ve výchozím nastavení povolen a zobrazuje základní informace o serveru. Hackeři mohou tyto informace využít k plánování útoku na váš server. Je tedy dobré zakázat podrobný banner ssh.
DebianBanner no
Pokud tato možnost není ve vašem sshd_config přítomna přidejte jej pro deaktivaci banneru.
9. Implementujte seznam povolených adres IP
Ve většině případů budete ke vzdálenému serveru přistupovat z několika známých IP adres. Můžete vytvořit IP adresu, která umožní seznamu zabránit dalším lidem v přístupu k vašemu serveru. To snižuje riziko prolomení serveru, i když byly vaše soukromé klíče kompromitovány.
Při implementaci seznamu povolených IP byste však měli být opatrní a zdržet se používání dynamických adres, protože se velmi často mění.
Chcete-li definovat seznam povolených, nejprve zjistěte IP adresu, kterou aktuálně používáte pro připojení k serveru OpenSSH. Můžete to udělat spuštěním následujícího příkazu ve vašem terminálu.
$ w
Poznamenejte si IP adresu pod štítkem „OD ‘. Budeme předpokládat příklad IP adresy 203.0.113.1 pro zbytek tohoto průvodce. Nyní otevřete konfigurační soubor ssh a použijte AllowUsers konfigurační direktiva, jak je uvedeno níže.
AllowUsers *@203.0.113.1
Výše uvedený řádek omezí všechny vzdálené uživatele na vybranou IP adresu. Toto můžete změnit na rozsah IP adres pomocí zápisu Classless Inter-Domain Routing (CIDR), jak je znázorněno níže.
AllowUsers *@203.0.113.0/24
10. Omezit prostředí vzdálených uživatelů
Vždy je dobrou praxí omezit operace prováděné vzdáleným uživatelem. Můžete to udělat omezením shellu vzdáleného uživatele. OpenSSH umožňuje více možností konfigurace, které pomáhají v tomto úkolu. Ukážeme vám, jak pomocí těchto možností omezit uživatelský přístup pouze k SFTP.
Nejprve vytvoříme nového uživatele s názvem mary pomocí /usr/sbin/nologin skořápka. Tím se zakáže interaktivní přihlášení pro daného uživatele, ale stále budou poskytovány neinteraktivní relace k provádění operací, jako je přenos souborů.
$ sudo adduser --shell /usr/sbin/nologin mary
Tento příkaz vytvoří uživatele mary s nologin shell. Interaktivní shell pro stávajícího uživatele můžete také zakázat pomocí následujícího příkazu.
$ sudo usermod --shell /usr/sbin/nologin alex
Pokud se pokusíte přihlásit jako jeden z výše uvedených uživatelů, váš požadavek bude zamítnut.
$ sudo su alex This account is currently not available.
Pomocí těchto účtů však stále můžete provádět akce, které nevyžadují interaktivní prostředí.
Poté znovu otevřete konfiguraci sshd a použijte ForceCommand internal-sftp a ChrootDirectory direktiva pro vytvoření vysoce restriktivního uživatele pouze SFTP. V tomto příkladu omezíme uživatele alex. Důrazně se také doporučuje přidat jakékoli Match bloky na konec vašeho sshd_config .
Match User alex ForceCommand internal-sftp ChrootDirectory /home/alex/
Ukončete konfigurační soubor a otestujte, zda konfigurační soubor způsobuje nějakou chybu či nikoliv. Můžete to provést spuštěním následujícího příkazu v emulátoru terminálu Linux.
$ sudo sshd -t
Pokud vše půjde v pořádku, měli byste vytvořit robustní konfiguraci pro uživatele alex. Relace interaktivního přihlášení je pro tohoto uživatele zakázána a má přístup pouze do domovského adresáře svého účtu.
Konec myšlenek
Protože OpenSSH je nedílnou součástí zabezpečení vašeho vzdáleného serveru, je nezbytné se naučit, jak funguje. Proto naši redaktoři v této příručce představili různé užitečné informace týkající se serveru OpenSSH. Témata zahrnují, jak funguje OpenSSH, jak číst a upravovat konfigurační soubor a jak implementovat nejlepší bezpečnostní postupy.
Doufejme, že jsme byli schopni poskytnout informace, které jste hledali. Uložte si tuto příručku do záložek pro budoucí reference. A nezapomeňte zanechat komentář, pokud máte nějaké další dotazy nebo návrhy, jak tuto příručku učinit použitelnější.