Zabezpečte připojení SSH systému Linux, abyste ochránili svůj systém a data. Správci systému i domácí uživatelé potřebují vytvrdit a zabezpečit počítače orientované na internet, ale SSH může být komplikované. Zde je deset snadných rychlých výher, které vám pomohou chránit váš server SSH.
Základy zabezpečení SSH
SSH znamená Zabezpečte Shell . Název „SSH“ se používá zaměnitelně a znamená buď samotný protokol SSH, nebo softwarové nástroje, které umožňují správcům systému a uživatelům provádět bezpečná připojení ke vzdáleným počítačům pomocí tohoto protokolu.
Protokol SSH je šifrovaný protokol navržený k zajištění bezpečného připojení přes nezabezpečenou síť, jako je internet. SSH v Linuxu je postaven na přenosné verzi OpenSSH projekt. Je implementován v a klasický model klient-server , přičemž server SSH přijímá připojení od klientů SSH. Klient se používá k připojení k serveru ak Zobrazit relace ke vzdálenému uživateli. Server přijímá připojení a vykonává zasedání.
Ve své výchozí konfiguraci bude server SSH naslouchat příchozím připojením na Transmission Control Protocol ( TCP ) port 22. Protože se jedná o standardizovaný, známý přístav , je cílem pro herci ohrožení a škodlivé roboty .
Aktéři hrozeb spouštějí roboty, kteří skenují řadu IP adres a hledají otevřené porty. Porty se poté prozkoumají, aby se zjistilo, zda existují chyby zabezpečení, které lze zneužít. Myšlení: „Jsem v bezpečí, na které mají padouchy zaměřit větší a lepší cíle než já,“ je falešné uvažování. Boti nevybírají cíle na základě žádných zásluh; metodicky hledají systémy, které by mohli narušit.
Pokud jste nezajistili svůj systém, nominujete se za oběť.
Bezpečnostní tření
Bezpečnostní tření je podráždění - jakéhokoli stupně -, které uživatelé a ostatní zažijí při implementaci bezpečnostních opatření. Máme dlouhé vzpomínky a pamatujeme si, že jsme zavedli nové uživatele do počítačového systému a slyšeli jsme je zděšeným hlasem, zda opravdu musel zadat heslo pokaždé přihlásili se do sálového počítače. To - pro ně - bylo bezpečnostní tření.
(Mimochodem, vynález hesla je připsán na Fernando J. Corbató , další postava v panteonu počítačových vědců, jejichž společná práce přispěla k okolnostem, které vedly k narození Unix .)
Zavedení bezpečnostních opatření obvykle pro někoho znamená určitou tření. Majitelé podniků to musí zaplatit. Uživatelé počítačů možná budou muset změnit své známé postupy nebo si zapamatovat jinou sadu podrobností ověřování nebo přidat další kroky k úspěšnému připojení. Správci systému budou mít další práci na implementaci a údržbě nových bezpečnostních opatření.
Kalení a uzamčení operačního systému podobného Linuxu nebo Unixu se může velmi rychle zapojit. To, co zde představujeme, je sada snadno implementovatelných kroků, které zlepší zabezpečení vašeho počítače bez nutnosti použití aplikací třetích stran a bez nutnosti procházet bránu firewall.
Tyto kroky nejsou posledním slovem v zabezpečení SSH, ale posunou vás daleko od výchozího nastavení a bez přílišného tření.
Použijte protokol SSH verze 2
V roce 2006 byl protokol SSH aktualizován z verze 1 na verze 2 . Byl to významný upgrade. Bylo provedeno tolik změn a vylepšení, zejména v oblasti šifrování a zabezpečení, že verze 2 není zpětně kompatibilní s verzí 1. Chcete-li zabránit připojení od klientů verze 1, můžete určit, že váš počítač bude přijímat připojení pouze od klientů verze 2.
Chcete-li tak učinit, upravte
/ etc / ssh / sshd_config
soubor. V tomto článku toho budeme hodně dělat. Kdykoli potřebujete upravit tento soubor, je to příkaz, který se má použít:
sudo gedit / etc / ssh / sshd_config
Přidejte řádek:
Protokol 2
A uložte soubor. Chystáme se restartovat proces démona SSH. V tomto článku to opět hodně provedeme. Toto je příkaz, který se použije v každém případě:
sudo systemctl restart sshd
Pojďme zkontrolovat, zda je v platnosti naše nové nastavení. Přeskočíme na jiný stroj a pokusíme se SSH na náš testovací stroj. A my použijeme
-1
(protokol 1) možnost vynutit
ssh
příkaz k použití protokolu verze 1.
ssh -1 [email protected]
Skvělé, náš požadavek na připojení je zamítnut. Zajistíme, že se můžeme stále připojit pomocí protokolu 2. Použijeme
-2
(protokol 2) možnost prokázat skutečnost.
ssh -2 [email protected]
Skutečnost, že server SSH požaduje naše heslo, je pozitivní známkou toho, že bylo navázáno připojení a že se serverem komunikujete. Protože moderní klienti SSH budou ve výchozím nastavení používat protokol 2, nemusíme specifikovat protokol 2, pokud je náš klient aktuální.
ssh [email protected]
A naše spojení je přijato. Odmítají se tedy pouze slabší a méně zabezpečená připojení protokolu 1.
Vyhněte se portu 22
Port 22 je standardní port pro připojení SSH. Pokud použijete jiný port, přidá to vašemu systému trochu bezpečí prostřednictvím neznáma. Zabezpečení pomocí temnoty se nikdy nepovažuje za skutečné bezpečnostní opatření a já jsem se proti němu v dalších článcích bránil. Ve skutečnosti někteří chytřejší útoční roboti zkoumají všechny otevřené porty a určují, které služby nosí, místo aby se spoléhali na jednoduchý vyhledávací seznam portů a předpokládali, že poskytují obvyklé služby. Ale použití nestandardního portu může pomoci se snížením šumu a špatného provozu na portu 22.
Chcete-li nakonfigurovat nestandardní port, upravte konfigurační soubor SSH:
sudo gedit / etc / ssh / sshd_config
Odstraňte hash # ze začátku řádku „Port“ a nahraďte „22“ číslem portu podle vašeho výběru. Uložte konfigurační soubor a restartujte démona SSH:
sudo systemctl restart sshd
Podívejme se, jaký účinek to mělo. Na jiném počítači použijeme
ssh
příkaz pro připojení k našemu serveru. The
ssh
výchozí příkaz pro použití portu 22:
ssh [email protected]
Naše spojení je odmítnuto. Zkusme to znovu a zadejte port 470 pomocí možnosti -p (port):
ssh -p 479 [email protected]
Naše spojení je přijato.
Filtrování připojení pomocí obalovačů TCP
TCP Wrappers je snadno pochopitelný seznam řízení přístupu . Umožňuje vám vyloučit a povolit připojení na základě charakteristik požadavku na připojení, jako je IP adresa nebo název hostitele. Obálky TCP by se měly používat ve spojení se správně nakonfigurovanou bránou firewall, a nikoli namísto ní. V našem konkrétním scénáři můžeme věci značně utáhnout pomocí obálek TCP.
Obaly TCP byly již nainstalovány na stroji Ubuntu 18.04 LTS použitém k prozkoumání tohoto článku. Muselo být nainstalováno na Manjaro 18.10 a Fedora 30.
Chcete-li nainstalovat na Fedoru, použijte tento příkaz:
sudo yum nainstalovat tcp_wrappers
Chcete-li nainstalovat na Manjaro, použijte tento příkaz:
sudo pacman -Syu tcp-wrappery
Jedná se o dva soubory. Jeden obsahuje seznam povolených a druhý seznam odmítnutých. Upravte seznam odepření pomocí:
sudo gedit /etc/hosts.deny
Tím se otevře
gedit
editor s načteným souborem odepření.
Musíte přidat řádek:
ALL: ALL
A uložte soubor. To blokuje veškerý přístup, který nebyl autorizován. Nyní musíme autorizovat připojení, která chcete přijmout. Chcete-li to provést, musíte upravit soubor povolení:
sudo gedit /etc/hosts.allow
Tím se otevře
gedit
editor s načteným souborem povolení.
Do názvu démona SSH jsme přidali,
SSHD
A IP adresa počítače, kterému umožníme připojení. Uložte soubor a podívejme se, zda platí omezení a oprávnění.
Nejprve se pokusíme připojit z počítače, který není v
hosts.allow
soubor:
Připojení je odmítnuto. Nyní se pokusíme připojit ze zařízení na IP adrese 192.168.4.23:
Naše spojení je přijato.
Náš příklad je trochu brutální - připojit se může pouze jeden počítač. Obálky TCP jsou poměrně univerzální a flexibilnější než toto. Podporuje to názvy hostitelů, zástupné znaky a masky podsítě přijímat připojení z rozsahů IP adres. Je vám doporučeno podívejte se na manuálovou stránku .
Odmítněte žádosti o připojení bez hesel
Ačkoli je to špatný postup, správce systému Linux může vytvořit uživatelský účet bez hesla. To znamená, že žádosti o vzdálené připojení z tohoto účtu nebudou mít žádné heslo, které by bylo možné zkontrolovat. Tato připojení budou přijata, ale nebudou ověřena.
Výchozí nastavení pro SSH přijímá žádosti o připojení bez hesel. Můžeme to velmi snadno změnit a zajistit, aby všechna připojení byla ověřena.
Musíme upravit váš konfigurační soubor SSH:
sudo gedit / etc / ssh / sshd_config
Procházejte soubor, dokud neuvidíte řádek, který čte s „#PermitEmptyPasswords no.“ Odstraňte hash
#
od začátku řádku a uložte soubor. Restartujte démona SSH:
sudo systemctl restart sshd
Místo hesel používejte klíče SSH
Klíče SSH poskytují bezpečný způsob přihlášení k serveru SSH. Hesla lze uhodnout, prolomit nebo hrubou silou . Klíče SSH nejsou pro tyto typy útoků otevřené.
Když generujete klíče SSH, vytvoříte pár klíčů. Jeden je veřejný klíč a druhý je soukromý klíč. Veřejný klíč je nainstalován na serverech, ke kterým se chcete připojit. Soukromý klíč, jak už název napovídá, je ve vašem počítači udržován zabezpečený.
Klíče SSH vám umožňují provádět připojení bez hesla, která jsou - neintuitivně - bezpečnější než připojení používající ověřování pomocí hesla.
Když zadáte požadavek na připojení, vzdálený počítač použije svou kopii veřejného klíče k vytvoření šifrované zprávy, která se odešle zpět do vašeho počítače. Protože byl zašifrován veřejným klíčem, může jej váš počítač pomocí soukromého klíče zašifrovat.
Váš počítač poté ze zprávy extrahuje některé informace, zejména ID relace, zašifruje je a odešle je zpět na server. Pokud jej server dokáže dešifrovat pomocí své kopie veřejného klíče a pokud se informace ve zprávě shodují s tím, co vám poslal server, je potvrzeno, že vaše připojení pochází od vás.
Zde probíhá připojení k serveru na 192.168.4.11 uživatelem s klíči SSH. Všimněte si, že nejsou vyzváni k zadání hesla.
ssh [email protected]
Klíče SSH si článek zaslouží samy pro sebe. Máme pro vás jeden. Tady je jak vytvořit a nainstalovat klíče SSH .
PŘÍBUZNÝ: Jak vytvořit a nainstalovat klíče SSH z prostředí Linux
Zakázat ověřování hesla úplně
Logickým rozšířením používání klíčů SSH je samozřejmě to, že pokud jsou všichni vzdálení uživatelé nuceni je adoptovat, můžete ověřování hesla úplně vypnout.
Musíme upravit váš konfigurační soubor SSH:
sudo gedit / etc / ssh / sshd_config
Procházejte souborem, dokud neuvidíte řádek, který začíná slovy „#PasswordAuthentication ano.“ Odstraňte hash
#
od začátku řádku změňte „ano“ na „ne“ a uložte soubor. Restartujte démona SSH:
sudo systemctl restart sshd
Zakázat přeposílání X11
Předávání X11 umožňuje vzdáleným uživatelům spouštět grafické aplikace z vašeho serveru přes relaci SSH. V rukou aktéra ohrožení nebo uživatele se zlými úmysly může rozhraní GUI usnadnit jejich zhoubné účely.
Standardní mantrou v kybernetické bezpečnosti je, že pokud nemáte bonafidní důvod, proč ji zapnout, vypněte ji. Uděláme to úpravou konfiguračního souboru SSH:
sudo gedit / etc / ssh / sshd_config
Procházejte souborem, dokud neuvidíte řádek, který začíná řetězcem „# X11Forwarding no.“ Odstraňte hash
#
od začátku řádku a uložte soubor. Restartujte démona SSH:
sudo systemctl restart sshd
Nastavte hodnotu časového limitu nečinnosti
Pokud je k vašemu počítači vytvořeno připojení SSH a po určitou dobu na něm neprobíhá žádná aktivita, může to představovat bezpečnostní riziko. Existuje šance, že uživatel opustil svůj stůl a je zaneprázdněn jinde. Kdokoli jiný, kdo projde kolem svého stolu, se může posadit a začít používat svůj počítač a prostřednictvím SSH váš počítač.
Je mnohem bezpečnější stanovit časový limit. Připojení SSH bude zrušeno, pokud neaktivní období odpovídá časovému limitu. Ještě jednou upravíme váš konfigurační soubor SSH:
sudo gedit / etc / ssh / sshd_config
Procházejte soubor, dokud neuvidíte řádek, který začíná „#ClientAliveInterval 0“ Odebrat hash
#
od začátku řádku změňte číslici 0 na požadovanou hodnotu. Použili jsme 300 sekund, což je 5 minut. Uložte soubor a restartujte démona SSH:
sudo systemctl restart sshd
Stanovte limit pro pokusy o heslo
Definování limitu počtu pokusů o ověření může pomoci zmařit hádání hesla a útoky hrubou silou. Po určeném počtu požadavků na ověření bude uživatel odpojen od serveru SSH. Ve výchozím nastavení není žádný limit. Ale to se rychle napraví.
Opět potřebujeme upravit váš konfigurační soubor SSH:
sudo gedit / etc / ssh / sshd_config
Procházejte souborem, dokud neuvidíte řádek, který začíná „#MaxAuthTries 0“. Odstraňte hash
#
od začátku řádku změňte číslici 0 na požadovanou hodnotu. Zde jsme použili 3. Po provedení změn soubor uložte a restartujte démona SSH:
sudo systemctl restart sshd
Můžeme to otestovat pokusem o připojení a záměrným zadáním nesprávného hesla.
Všimněte si, že číslo MaxAuthTries se zdálo být o jeden větší než počet pokusů, které uživatel povolil. Po dvou špatných pokusech je náš testovací uživatel odpojen. To bylo s MaxAuthTries nastaveným na tři.
Zakázat rootovací přihlášení
Je špatnou praxí přihlásit se jako root na počítači se systémem Linux. Měli byste se přihlásit jako normální uživatel a použít
sudo
provádět akce, které vyžadují oprávnění root. Ještě více byste neměli dovolit rootovi přihlásit se na váš server SSH. Připojení by měli mít povoleni pouze běžní uživatelé. Pokud potřebují provést administrativní úlohu, měli by ji použít
sudo
také. Pokud jste nuceni povolit přihlášení uživatele root, můžete ho přinutit alespoň k použití klíčů SSH.
Konečně budeme muset upravit váš konfigurační soubor SSH:
sudo gedit / etc / ssh / sshd_config
Procházejte soubor, dokud neuvidíte řádek, který začíná řetězcem „#PermitRootLogin prohibit-password“ Odebrat hash
#
od začátku řádku.
- Pokud chcete zabránit rootu v přihlašování, nahraďte „prohibit-password“ slovem „no“.
- Pokud se chystáte povolit root přihlášení, ale přinutit je používat klíče SSH, ponechte na místě „prohibit-password“.
Uložte změny a restartujte démona SSH:
sudo systemctl restart sshd
Konečný krok
Samozřejmě, pokud nepotřebujete, aby na vašem počítači běžel SSH, zkontrolujte, zda je deaktivován.
sudo systemctl stop sshd
sudo systemctl vypnout sshd
Pokud neotevřete okno, nikdo dovnitř nemůže vlézt.