GNU/Linux >> Znalost Linux >  >> Linux

Jaké jsou možné bezpečnostní problémy s démonem SSH?

Největší starost by měli lidé přihlašující se jako správce počítače přes SSH. To lze provést hrubou silou, pokud máte snadno uhodnutelné heslo.

Existuje několik bezpečnostních opatření, která můžete přijmout, níže jsou některá z těch, která vždy dodržuji při nastavování serveru SSH, a další.

  1. Použijte silné heslo, které se skládá alespoň z (řekněme) 10 velkých a malých písmen, číslic a dalších znaků.

  2. Uvěznit uživatele do jejich domovského adresáře. Uvěznění uživatelé nebudou moci přistupovat/upravovat soubory, které jsou mimo jejich domovský adresář. Váš uživatel tedy nebude moci přistupovat/upravovat klíčové systémové soubory. Na internetu lze najít spoustu návodů, jak uvěznit uživatele. Většina z nich používá JailKit. Příklad takového tutoriálu naleznete zde. Případně můžete také použít nativní ChrootDirectory OpenSSH serveru směrnice. Příklad výukového programu na toto téma naleznete zde.

  3. Nainstalujte Fail2Ban. Fail2Ban je program, který kontroluje chybné záznamy v autentizačních protokolech. Když je dosaženo určitého limitu, přidá blok brány firewall pro tuto určitou IP na předem nastavenou dobu. Na internetu je také několik online tutoriálů o tom, jak nastavit Fail2Ban s SSH, příkladem může být tento. Domovská stránka Fail2Ban obsahuje také několik pěkných a úplných HOWTO.

  4. Zakázat přihlášení root přes SSH. Toto je uživatel, který má přístup téměř ke každému souboru ve vašem systému, proto se doporučuje deaktivovat jeho přihlášení do shellu. V nejnovějších verzích Ubuntu je uživatel root automaticky zakázán, ale stejně neuškodí zakázat jeho přístup SSH. To se provádí úpravou souboru /etc/ssh/sshd_config . Hledejte následující řádek a ujistěte se, že před ním není #.

    #PermitRootLogin no
    
  5. Použijte nestandardní port (např. ne 22) To se provádí buď přesměrováním portů ve vašem routeru (např. 16121 -> 22 místo 22 -> 22), nebo tím, že démon SSH naslouchá na jiném portu. Díky tomu bude vaše služba SSH méně snadno zjistitelná pro uživatele se zlými úmysly. To se provádí úpravou souboru /etc/ssh/sshd_config . Vyhledejte následující řádek a změňte 22 na libovolný port, který chcete. Poté nezapomeňte přesměrovat správný port ve vašem routeru.

    Port 22
    
  6. K přihlášení nepoužívejte hesla. Kromě hesel umožňuje SSH také přihlašování pomocí soukromých klíčů. To znamená, že ve vašem počítači je uložen klíč, na kterém přistupujete k SSH stroje SSH. Při pokusu o připojení klient SSH použije klíč k přihlášení k serveru namísto ověřování heslem. Autentizační klíče jsou kryptograficky mnohem silnější než hesla, a proto není tak snadné je prolomit. Na internetu je také několik online výukových programů o tom, jak nastavit autentizaci založenou na klíči pomocí SSH, příkladem může být tento. (Pokud používáte SSH z Windows pomocí PuTTY, podívejte se na tento odkaz, kde najdete návod na PuTTY.) Po nastavení ověřování na základě klíče můžete ověřování heslem zakázat úpravou souboru /etc/ssh/sshd_config . Hledejte následující řádek a ujistěte se, že před ním není #.

    #PasswordAuthentication no
    
  7. Volitelně, jak uvedl @Linker3000 ve svém komentáři, můžete nastavit VPN tunel k počítači, ke kterému chcete přistupovat prostřednictvím SSH, a poté zakázat přístup k nelokální síti na serveru SSH. Tímto způsobem nebude mít žádné externí zařízení bez připojení VPN přístup k vašemu serveru SSH. Toho lze dosáhnout odmítnutím VŠECH hostitelů a poté povolením přihlášení pouze IP adresám místní sítě. To se provádí úpravou /etc/hosts.deny a přidejte následující:

    sshd: ALL
    

    a na /etc/hosts.allow přidejte následující:

    sshd: 192.168.1.*
    

    kde IP odpovídá IP vaší místní síti. * je zástupný znak, takže všechny IP adresy začínající 192.168.1. bude přijat. Pokud to nefunguje, vaše distribuce může používat ssh místo sshd . V takovém případě byste měli zkusit ssh: 192.168.1.* a ssh: ALL místo toho.

  8. Můžete povolit pouze určité hostitele, totéž udělejte s /etc/hosts.allow a /etc/hosts.deny jak je popsáno v 6, ale v /etc/hosts.allow přidejte následující řádek a všechny hostitele, aby je bylo možné oddělit mezerami:

    sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
    
  9. Povolit pouze určitým uživatelům přístup k vašemu serveru SSH. To se provádí úpravou souboru /etc/ssh/sshd_config . Hledejte následující řádek a ujistěte se, že před ním není #. Pokud neexistuje, vytvořte jej. Pokud například chcete povolit pouze Jana, Toma a Mary, přidejte/upravte tento řádek:

    AllowUsers john tom mary
    

    Můžete také zakázat konkrétním uživatelům, například pokud chcete odepřít přístup Johnovi, Tomovi a Mary, přidejte/upravte tento řádek:

    DenyUsers john tom mary
    
  10. Povolit pouze protokol SSH2 pro příchozí připojení. Existují dvě verze protokolu SSH. SSH1 podléhá bezpečnostním problémům, proto se doporučuje používat SSH 2. To lze vynutit úpravou souboru /etc/ssh/sshd_config . Hledejte následující řádek a ujistěte se, že před ním není #. Pokud neexistuje, vytvořte jej.

    Protocol 2,1
    

    odstraňte ,1, takže řádek bude

    Protocol 2
    
  11. Nepovolit přihlášení uživatelům, kteří nemají nastavené heslo. To lze vynutit úpravou souboru /etc/ssh/sshd_config . Hledejte následující řádek a ujistěte se, že před ním není #. Pokud neexistuje, vytvořte jej.

    PermitEmptyPasswords no
    
  12. A přestože je to jednoduché a možná netřeba říkat, ale v mnoha případech se ukázalo jako zásadní, udržujte svůj software aktuální. Pravidelně aktualizujte nainstalované balíčky/software.

=po úpravě konfiguračního souboru SSH nezapomeňte restartovat démona, aby se změny projevily. Restartujte démona spuštěním:

sudo /etc/init.d/ssh restart

nebo

sudo /etc/init.d/sshd restart

podle toho, jakou distribuci Linuxu používáte.


Několik tipů:

  1. Používejte ověřování na základě klíče, které je MNOHEM bezpečnější než hesla
  2. Pouze SSH 2
  3. Zakažte přihlášení uživatele root
  4. Pro paranoiky změňte port ze standardního portu 22
  5. Pro usnadnění použijte nástroj k mapování vaší IP adresy na název DNS, jako je Dyndns nebo jemu podobný. Se stejnou IP můžete jít dlouhou dobu, ale když jednou budete cestovat a budete ji potřebovat, zjistíte, že vám byla vydána nová.
  6. Samozřejmě povolte přes bránu firewall pouze port potřebný pro SSH (port 22, nebo nestandardní, pokud se rozhodnete).

Hlavním rizikem je zapomenutí, že provozujete ssh server a zadání slabého hesla k účtu. Existují útočníci, kteří systematicky zkoušejí běžné názvy účtů (jako webmaster a bob ) a slabá hesla. Toto riziko můžete eliminovat zákazem přihlašování pomocí hesla (zadejte PasswordAuthentication no v sshd_config , a buď také vložte UsePAM No nebo deaktivujte ověřování heslem v nastavení PAM pro ssh). Mezilehlým opatřením je omezení přihlašování pomocí ssh na seznam povolených uživatelů s AllowUsers nebo AllowGroups v sshd_config .

Všimněte si, že povolení přihlášení pomocí hesla není samo o sobě bezpečnostní problém. Problémem jsou slabá hesla a odposlouchávaná hesla a povolení autentizace heslem na ssh serveru je aktivátor. Chcete-li se chránit před slíděním hesel, nikdy nezadávejte heslo na počítači, kterému plně nedůvěřujete (pokud ale počítači důvěřujete, můžete si na něj nainstalovat soukromý klíč, a pak nepotřebujete ověřování heslem).

Minimálním požadavkem pro použití ssh klienta na počítači je, že důvěřujete, že nedojde k aktivnímu únosu ssh komunikace (útok man-in-the-middle je možný, pokud běží na klientském počítači – myslíte si zadáváte příkazy do původního ssh klienta, ale klient ve skutečnosti věrně přenáší vaše autentizační data, ale následně do komunikace vkládá trojského koně). To je slabší požadavek než věřit, že nebude existovat slídič hesel (obvykle prováděný pomocí keyloggeru, ale existují i ​​​​jiné méně automatizované metody, jako je surfování přes rameno). Pokud máte minimální důvěru, ale stále se bojíte slídičů, můžete použít jednorázová hesla (OpenSSH je podporuje prostřednictvím podpory PAM).

Samozřejmě, jako každý jiný program, který komunikuje se stroji mimo vaši kontrolu (nejen se síťovými servery, ale také s klienty), musíte držet krok s aktualizacemi zabezpečení.


Linux
  1. Linux IPTables:Jak přidat pravidla brány firewall (s příkladem Allow SSH)

  2. Jak nakonfigurovat SSH pro omezení uživatelů/skupin pomocí direktiv povolení a zakázání

  3. Jak povolit ssh s prázdnými hesly v Linuxu

  1. Co jsou základní a základní?

  2. Jaké jsou nejběžnější soubory ke kontrole pomocí softwaru pro monitorování integrity souborů?

  3. Co se nyní děje s bezpečnostní zranitelností klíče Grub backspace?

  1. Co je nového s rdiff-backup?

  2. Jaké jsou bezpečnostní důsledky systemd ve srovnání s systemv init?

  3. Co jsou nevyřízené signály?