GNU/Linux >> Znalost Linux >  >> Linux

5 Nejlepších postupů zabezpečení Linux SSH pro zabezpečení vašich systémů

Úvod

Minimalizace zranitelností ve vašem protokolu Secure Shell (SSH) je klíčem k zajištění bezpečnosti vašeho linuxového prostředí.

V tomto článku se zabýváme nejběžnějším zabezpečením Linux SSH opatření, která můžete přijmout, aby byly vaše servery bezpečnější. Změnou výchozího portu SSH, používáním párů klíčů a dodržováním dalších doporučených osvědčených postupů můžete výrazně zlepšit celkové zabezpečení svého systému.

Co je SSH?

Protokol Secure Shell (SSH) umožňuje kryptograficky chráněnou vzdálenou správu systému a přenos souborů přes nezabezpečené sítě. SSH pomocí několika metod šifrování zabezpečuje spojení mezi klientem a serverem a chrání příkazy, autentizaci a výstup uživatelů před neoprávněným přístupem a útoky.

Protokol SSH je nyní široce používán v datových centrech a téměř všemi velkými podniky běžícími na jakékoli z variant UNIX.

Pokud jde o bezpečnostní opatření, je nezbytné je kombinovat, aplikovat ve vrstvách a nevybírat jen jedno a spoléhat se pouze na toto řešení.

Chcete-li se dozvědět více o připojení SSH, navštivte náš článek o tom, jak SSH funguje.

1. Změňte výchozí port SSH

Použití nestandardního portu pro připojení SSH pomáhá vyhnout se automatizovaným útokům na váš server. Pomáhá také snížit pravděpodobnost, že se objeví na hackerově radaru, a dělá z něj méně zřejmý cíl.

Poznámka :Většina hackerů, kteří hledají servery OpenSSH, se zaměří na výchozí port SSH 22 .

V takovém případě budou skripty, které používají, hledat IP adresy pouze na portu 22. Pokud váš server spadá do této skupiny, každý takový automatizovaný útok bude mít dopad na vaše log soubory. V důsledku toho se zátěž vašeho serveru může podstatně zvýšit, protože mnoho exploitů SSH serverů běží nepřetržitě a klepe na dveře každého serveru.

Je důležité si uvědomit, že změna výchozího portu SSH nezlepší zabezpečení vašeho serveru. Pomáhá však zabránit automatickým útokům.

Jak změnit číslo portu

Než začnete, musíte se rozhodnout, který port použijete místo výchozího portu 22. Než se rozhodnete, měli byste zvážit několik věcí:

Změna portu na serveru Linux , postupujte takto:

  1. Připojte se k serveru přes SSH jako obvykle.
  2. Přepněte na uživatele root pomocí příkazu su, který vás vyzve k zadání hesla serveru.
  3. K úpravě konfiguračního souboru sshd umístěného v etc/ssh/ použijte libovolný textový editor adresář. Pokud jste nikdy nepoužívali textový editor v terminálu, doporučujeme použít Nano. Jinak použijte vi nebo vim, protože jsou dnes nejběžněji používanými editory. Před provedením jakýchkoli změn vám doporučujeme zálohovat původní soubor.
  4. Spusťte tento příkaz pro úpravu konfiguračního souboru:
nano /etc/ssh/sshd_config
  1. Ve výstupu souboru sshd_config vyhledejte řádek, který říká „Port 22 .“
  1. Změňte číslo portu na hodnotu podle svého výběru. Ujistěte se, že zde není „# ” na začátku řádku.
  2. Ukončete editor a potvrďte, že chcete změny uložit.
  3. Aby se změny projevily, restartujte službu sshd pomocí tohoto příkazu:
service sshd restart
  1. Připojením k portu, který jste zadali, ověřte, zda SSH naslouchá.

Pamatujte, že nyní budete muset při připojování zadat port, protože váš klient bude vždy používat výchozí port SSH, pokud není uvedeno jinak.

Výhody

I když postup pro změnu výchozího portu SSH nezvýší samotnou úroveň zabezpečení, vyřadí vás z radaru nejběžnějších skenů. Jeden snadný způsob, jak to otestovat, je nechat server běžet několik dní s nasloucháním sshd na výchozím portu a poté jej změnit na nestandardní. Porovnejte počet neúspěšných přihlášení na vašem serveru a uvidíte, že se výrazně sníží.

Použitím nestandardního portu pro SSH:

  • Vyhnete se tomu, že vás uvidí náhodná skenování.
  • Je obtížnější najít váš server. Většina útoků prohledá výchozí port nebo některé jeho varianty, ale po odmítnutí připojení bude pokračovat.
  • Démon SSH si může udělat přestávku, protože nebude dostávat požadavky na připojení ze skriptovaných útoků. Zatížení serveru se sníží a soubor protokolu zůstane čistý, což vám ušetří čas při jeho kontrole.
  • Neobdržíte tolik upozornění na neúspěšná přihlášení. Pokud používáte nestandardní port a někdo se stále pokouší o přístup k vašemu serveru, pravděpodobně to znamená, že váš server je konkrétně zaměřen a že alarm nepochází ze skriptovaného útoku.
  • Jste méně vystaveni hacknutí kvůli chybám v sshd nebo slabým soukromým klíčům.
  • Většina hackerů bude odražena, pokud uvidí, že nepoužíváte výchozí port. Bude to známkou toho, že server je řádně chráněn a že pravděpodobně byla přijata i jiná bezpečnostní opatření, takže váš server se stává nežádoucím cílem.

Nevýhody

Než se rozhodnete změnit výchozí port pro SSH, je třeba mít na paměti některá opatření. Nevýhody provozu nestandardního portu mohou znamenat, že:

  • Každý, kdo by měl mít možnost se připojit k vašemu serveru, bude muset být o změně informován a bude muset začít používat nový port.
  • Pokud pro svůj server používáte externí monitorování, musíte je také upozornit na změnu. V opačném případě to mohou považovat za potenciální hrozbu, která může vést k výpadku serveru.
  • Pravidla brány firewall související se službou SSH je třeba zkontrolovat a upravit podle provedených změn.

Některé z těchto nevýhod se pravděpodobně nebudou vztahovat na váš případ použití, ale je třeba je vzít v úvahu. Výhody změny portu převažují nad nevýhodami a ukazují se jako dobrá další vrstva zabezpečení vašeho serveru.

2. Vylepšete zabezpečení Linux SSH pomocí párů klíčů

Jednou z nejbezpečnějších metod ověřování klientů na serverech je použití párů klíčů SSH . Silná hesla mohou být dostatečná k udržení vašeho serveru v bezpečí, ale trvalé útoky hrubou silou je mohou stále prolomit. To je důvod, proč potřebujete další zesílení SSH pomocí párů klíčů.

SSH klíče jsou vůči takovým útokům odolné a je prakticky nemožné je dešifrovat. Pár klíčů SSH se skládá ze dvou dlouhých sérií znaků, soukromého klíče který je uchováván v tajnosti, a veřejný klíč které lze bezpečně sdílet. Jejich účel je podobný heslům a umožňují automaticky navázat relaci SSH bez nutnosti zadávat heslo.

Jak vygenerovat pár klíčů

Chcete-li nastavit klíče SSH, budete muset na klientském počítači vygenerovat pár klíčů, který bude použit pro připojení k serveru. Postup:

  1. Spusťte terminál a spusťte nástroj SSH keygen , dostupný se standardním nástrojem OpenSSH.
ssh-keygen –t rsa
  1. Obdržíte zprávu „Generování veřejného/soukromého páru klíčů RSA.“ Pokud chcete klíč uložit do výchozího umístění, stiskněte Enter po výzvě. Klíč bude uložen v adresáři domácího uživatele v ~/.ssh adresář. Chcete-li změnit umístění, stačí zadat novou cestu. Doporučení je držet se výchozího umístění, takže nemusíte provádět žádné změny ve svém SSH klientovi. Soukromý, neboli identifikační klíč, bude uložen jako id_rsa a odpovídající veřejný klíč jako id_rsa.pub .
  2. Volitelně můžete vložit přístupovou frázi . Pokud jej nechcete používat, stiskněte Enter pokračovat. Přístupová fráze poskytuje další vrstvu zabezpečení šifrováním soukromého klíče na místním počítači. K prolomení přístupové fráze bude muset mít hacker nejprve přístup do systému, protože soukromý klíč není v síti vystaven. I v tomto případě bude úspěch nějakou dobu trvat, což vám umožní změnit použitý klíč, než hacker získá přístup k jiným serverům. Nevýhodou je, že jej budete muset zadávat při každém pokusu o připojení pomocí tohoto klíče.

Proces generování páru klíčů je dokončen.

Poslední obrazovka bude vypadat podobně jako tato:

ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/home/demo/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /home/demo/.ssh/id_rsa.

Your public key has been saved in /home/demo/.ssh/id_rsa.pub.

The key fingerprint is:

8b:cd:0b:f7:38:4a:3f:ed:24:18:8d:54:34:2c:63:56 [email protected]

The key's randomart image is:

+--[ RSA 2048]----+

| ..o. |

| . E.o |

| + . o |

| . = = . |

| ..S |

| = + = + |

| . o + o . |

| . + + o |

| .. |

| |

+-----------------+

Poznámka: Autentizaci/autorizaci můžete ještě více zabezpečit vytvořením větších 4096bitových klíčů namísto výchozích 2048 bitů. Chcete-li tak učinit, připojte –b 4096 na ssh-keygen příkaz. Bude to vypadat takto:

ssh-keygen -t rsa -b 4096

Kopírování veřejného klíče

Chcete-li použít pár klíčů, který jste vytvořili na svém počítači pro ověřování SSH, musíte umístit veřejný klíč na požadovaný server. Nejjednodušší způsob, jak toho dosáhnout, je použít nástroj dostupný s OpenSSH:

ssh-copy-id

Postup je snadný:

  1. Zadejte ssh-copy-id [email protected]_host_address .
  2. Pokud se k tomuto hostiteli připojujete poprvé, obdržíte zprávu o pravosti. Zadejte Yes pokračovat.
  3. Zadejte své heslo na dotaz a nástroj zkopíruje obsah ~/.ssh/ id_rsa.pub klíč na authorized_keys soubor pod ~/.ssh domovský adresář na serveru.

Poznámka: Při psaní hesla nebudou z bezpečnostních důvodů viditelné žádné znaky.

  1. Obdržíte zprávu:

Váš veřejný klíč byl umístěn na vzdálený server a nyní se k němu můžete přihlásit bez zadání hesla účtu.

  1. Chcete-li otestovat, zda ověření pomocí klíčů funguje, připojte se k serveru pomocí ssh [email protected]_host_address . Pokud budete úspěšní, budete automaticky přihlášeni. V případě, že jste si dříve nastavili přístupovou frázi, budete ji muset nejprve zadat, než vám bude udělen přístup k serveru.

Jak fungují klíče

V podstatě jde oveřejný klíč není klíč. Chová se jako visací zámek, který můžete umístit na SSH účet na jiném počítači. Když spustíte nástroj „ssh-keygen“, vygenerujete jak visací zámek, tak klíč, který jej otevře, id_rsa.pub a id_rsa respektive.

Můžete vytvořit tolik kopií zámku podle potřeby je distribuujte na libovolný server, který se vám líbí, a pouze vy budete mít správný klíč k jejich odemčení. Proto je důležité uchovávat soukromý klíč v bezpečí, protože odemyká všechny kopie visacích zámků jste rozdali.

Nezáleží na tom, kam vložíte svůj veřejný klíč, pokud nedojde ke kompromitaci hlavního klíče. Protože nikdo jiný nevlastní soukromý klíč, je tato metoda autorizace a ověřování pravděpodobně nejbezpečnější a vysoce doporučená.

3. Zakázat přihlášení k serveru SSH root

Serverové distribuce Linuxu mají ve výchozím nastavení povolen přístup mimo root. To může být vážná bezpečnostní hrozba, protože hackeři se mohou pokusit prolomit heslo pomocí útoků hrubou silou. Doporučuje se zakázat přihlášení uživatele root a používat běžný účet a su – příkaz pro přepnutí na uživatele root.

Než zakážete přihlášení root, ujistěte se, že jste přidali účet, který může získat přístup root. Chcete-li tak učinit, postupujte podle následujících kroků:

  1. Pro přihlášení k serveru použijte SSH jako root.

2. Pomocí textového editoru otevřete hlavní konfigurační soubor. Tentokrát použijeme vi editor.

vi /etc/ssh/sshd_config

3. Najděte řádek, který říká „PermitRootLogin_yes a změňte na PermitRootLogin_no . Možná budete muset posunout o několik řádků dolů, abyste to našli.

4. Je důležité přidat uživatelský účet pomocí kterého se budete přihlašovat. Stačí přidat další řádek s příslušným uživatelským jménem:AllowUsers your_username_here

5. Uložte provedené změny a poté ukončete textový editor.

6. Restartujte službu SSH, ale ne zavřete ještě kořenovou relaci. Pro Ubuntu a Debian použijte sudo service ssh restart a pro Fedora/CentOS použijte service ssh restart příkaz.

Otevřete nové okno terminálu a ověřte, že se nyní můžete přihlásit jako uživatel, kterého jste přidali. Jakmile potvrdíte, že funguje, ukončete aktivní root session.

4. Zakázat přihlášení na základě hesla na vašem serveru

Pokud pro ověřování SSH používáte klíče SSH, můžete ověřování hesla serveru úplně zakázat. Toto je další způsob, jak ochránit váš server před útoky hrubou silou a pokusy prolomit vaše heslo. Než budete pokračovat, znovu zkontrolujte, zda ověřování na základě klíče SSH funguje pro účet root na serveru nebo pro účet s funkcí sudo přístup.

Až budete připraveni, proveďte tyto kroky:

  1. K přihlášení k serveru použijte klíče SSH jako root nebo s právy sudo.

2. Pomocí textového editoru otevřete soubor sshd_config soubor. Použijeme vi:

vi /etc/ssh/sshd_config

3. Hledejte řádek PasswordAuthentication a změňte na PasswordAuthentication_no . Pokud je # na řádku, nezapomeňte zrušit komentář je přítomen.

4. Uložit změny, které jste provedli, a poté ukončete textový editor.

5. Restartujte službu SSH aplikujte změny. Pro Ubuntu/Debian použijte sudo service ssh restart a pro Fedora/CentOS použijte service ssh restart příkaz.

Gratulujeme, úspěšně jste deaktivovali možnost přihlašování přes SSH pomocí hesel účtů. SSH Daemon bude jednoduše ignorovat všechny požadavky na ověření, které nezahrnují páry soukromých/veřejných klíčů.

5. Omezit přístup SSH pomocí iptables

Iptables je nástroj pro Linux, který se používá ke konfiguraci pravidel brány firewall a monitorování/filtrování příchozí a odchozí provoz na váš server. Ve výchozím nastavení je součástí většiny distribucí Linuxu.

Pomocí iptables můžete definovat pravidla které omezují nebo povolují provoz pro různé druhy služeb podle IP adresy, portu nebo síťového protokolu, a tím podstatně zlepšují zabezpečení vašeho serveru. V našem případě nastavíme pravidla brány firewall tak, aby omezila příchozí provoz SSH pro všechny kromě jedné IP adresy nebo podsítě.

Tímto způsobem blokování portu 22 nejen zastaví neoprávněný přístup k vašim serverům, ale může také zastavit nebo zabránit útokům DDoS.

Při provádění tohoto kroku byste se měli ujistit, že se nezablokujete úplným blokováním provozu SSH. K povolení konkrétní IP adresy nebo podsítě pro příchozí připojení SSH budete muset použít pouze několik příkazů.

Poznámka: Příkazy rozlišují velká a malá písmena.

Toto pravidlo přidá IP adresu, kterou jste zadali, na seznam povolených. Nahraďte prosím příklad IP v příkazu svou IP. Můžete také použít podsíť, například 10.10.10.0/24.

sudo iptables -A INPUT -p tcp -s 123.456.78.90 -dport 22 -j ACCEPT

Pravidla si musíte uložit, abyste je po restartu neztratili:

sudo iptables-save

Pokud chcete zobrazit seznam všech pravidel iptables, můžete použít iptables –L příkaz. Chcete-li zahrnout další podrobnosti, jako jsou pakety, bajty a informace o cíli, přidejte –v na příkaz výše. Přidejte -n všem a výstup se zobrazí v číselném formátu.

V případě, že chcete resetovat všechna pravidla a zahájit čištění, použijte příkaz flush iptables –F . Tím vymažete konfiguraci iptables, což je užitečné, pokud si nejste jisti, zda je vše nastaveno tak, jak chcete.

Parametry a definice možností iptables

Zde je několik vysvětlení parametrů, voleb a hodnot iptables použitých ve výše uvedených příkladech, stejně jako několik dříve nezmíněných.

Hodnota Popis
PŘIJMOUT Umožňuje procházet pakety
DROP Blokuje pakety
NÁVRAT Říká, že se má přeskočit aktuální řetězec a pokračovat u dalšího pravidla v předchozím (volajícím) řetězci
>Parametr Popis
-c počítadla umožňuje nastavení čítačů paketů a bajtů konkrétního pravidla
-d cíl – může být adresa, název hostitele nebo adresa atd.
-f fragment – ​​ aplikuje pravidlo na druhý a fragmenty, které ho následují
-g goto chain – uvádí, že akce bude pokračovat v uživatelsky zadaném řetězci
-i v rozhraní – uvádí název rozhraní, odkud pakety přicházejí
-j skok – určuje akci, pokud paket odpovídá pravidlu
-o out-interface – název rozhraní odchozího balíčku
-p protokol – jakýkoli dostupný protokol, jako je SSH, TCP, UDP a FTP
-s zdroj – může být adresa, název hostitele nebo adresa atd.
Řetěz Popis
INPUT Ovládá příchozí pakety
Vpřed Předává pakety přicházející na váš server, ale směřující jinam
VÝSTUP Filtruje pakety odcházející z vašeho serveru
Možnost Popis
-A připojit přidá jedno (nebo více) pravidel vybraného řetězce
-C kontrola – vyhledá pravidlo, které odpovídá kritériím ve vybraném řetězci
-D smazat – odstraní pouze jedno pravidlo z vybraného řetězce
-F spláchnout – smaže vše definovaná pravidla iptables
-I vložit – vložit pravidlo do vybraného řetězce
-L seznam – zobrazí pravidla vybraného řetězce
-n numerické – zobrazuje IP adresu/název hostitele a návratovou hodnotu v číselném formátu
-N new-chain vytvoří nový uživatelsky definovaný řetězec
-v podrobné – používá se v kombinaci s -L k poskytnutí dalších informací
-X delete-chain odstraní uživatelem definovaný řetězec

Závěr, zabezpečení SSH a doporučené postupy zpevnění

Ať už stavíte nový server nebo virtuální počítač, je dobrou praxí implementovat do vašeho prostředí více vrstev zabezpečení. Firmy mají obvykle zájem o co nejrychlejší zřízení své infrastruktury, ale nezbytná bezpečnostní opatření musí být aplikována hned od začátku.

Pokud použijete výše uvedené bezpečnostní metody Linux SSH, měli byste být schopni se vyhnout běžným bezpečnostním hrozbám v cloudu.

Ztěžujte hackerům proniknout na váš server (y) a omezte jakékoli poškození. Před zpřístupněním serveru v síti se ujistěte, že jste implementovali co nejvíce těchto osvědčených postupů.

Nezapomeňte se podívat na náš pravidelně aktualizovaný seznam nejlepších blogů o kybernetické bezpečnosti, které byste měli sledovat, abyste měli přehled o všech nejnovějších trendech.


Linux
  1. Nejlepší postupy zabezpečení OpenSSH

  2. Jak změnit port SSH v Linuxu

  3. Zabezpečení Linuxu:Chraňte své systémy pomocí fail2ban

  1. 13 kurzů zabezpečení Linuxu

  2. Změna portu SSH na systému Linux Ubuntu 20.04 – nejlepší metoda?

  3. Nejlepší postupy zabezpečení serveru Linux

  1. Prohledejte své zabezpečení Linuxu pomocí Lynis

  2. Doporučené postupy zabezpečení serveru Windows

  3. Osvědčené postupy zabezpečení Wordpress v systému Linux