Jak zpevnit SSH server?

119

Jaká opatření můžu, abych ujistil, že bezpečnost kolem mého SSH serveru je naprosto nepropustná?

Bude to komunitní wiki od začátku, takže se můžete přesvědčit, co dělají lidé pro zabezpečení svých serverů.

    
dané LassePoulsen 30.01.2015 17:27

13 odpovědí

21

Vytvořte adresy IP pro klientské bloky sshd, které nedokázaly poskytnout správné přihlašovací údaje. " DenyHØsts " může tuto práci poměrně efektivně. Mám to instalováno ve všech mých Linuxových boxy, které jsou z nějakého důvodu dosažitelné z velkého vnějšího.

Ujistíte se, že útoky na SSHD nebudou účinné, ale nezapomeňte (!) tímto způsobem se můžete konečně zablokovat, pokud zapomenete heslo. Může to být problém na vzdáleném serveru, ke kterému nemáte přístup.

    
odpověděl LassePoulsen 10.06.2016 23:17
102

Použijte páry veřejných / soukromých klíčů k ověření místo hesel.

  1. Vygenerujte klíč SSH chráněný heslem pro každý počítač, který potřebuje přístup k serveru:

    ssh-keygen

  2. Povolení přístupu veřejného klíče SSH z povolených počítačů:

    Zkopírujte obsah~/.ssh/id_rsa.pub z každého počítače do jednotlivých řádků~/.ssh/authorized_keys na serveru nebo spusťtessh-copy-id [server IP address] v každém počítači, kterému udělujete přístup (budete muset zadat heslo serveru na výzva).

  3. Zakázat heslo SSH přístup:

    Otevřete/etc/ssh/sshd_config, najděte řádek, který říká#PasswordAuthentication yes, a změňte jej naPasswordAuthentication no. Restartujte démona SSH serveru a použijte změnu (sudo service ssh restart).

Nyní je jediný možný způsob, jak na server SSH použít server klíč, který odpovídá řádku v~/.ssh/authorized_keys. Při použití této metody se I nestará o útoky na hrubou sílu, protože i kdyby odhadli své heslo, budou odmítnuty. Bruté vynucení páru veřejného / soukromého klíče je nemožné s dnešní technologií.

    
odpověděl Evan Kroske 08.06.2016 02:31
67

Navrhuji:

  • Použijte fail2ban , abyste zabránili pokusům o přihlášení k brutální síle.

  • Zakázání přihlášení jako root pomocí SSH. To znamená, že útočník musel přijít na to, že uživatelské jméno a heslo, které činí útok, jsou obtížnější.

    PřidejtePermitRootLogin no do vašeho/etc/ssh/sshd_config.

  • Omezení uživatelů, kteří mohou SSH na server. Buď podle skupiny nebo jen konkrétních uživatelů.

    PřidejteAllowGroups group1 group2 neboAllowUsers user1 user2, abyste omezili, kdo může SSH na server.

odpověděl Mark Davidson 08.06.2016 02:07
22

Ostatní odpovědi poskytují zabezpečení, ale je tu jedna věc, kterou můžete udělat, aby se vaše protokoly ztišily a bylo méně pravděpodobné, že budete z vašeho účtu zablokováni:

Přesuňte server z portu 22 na jiný. Buď na vaší bráně nebo na serveru.

Nezvyšuje bezpečnost, ale znamená, že všechny náhodné internetové skenery nebudou zaplombovat soubory protokolu.

    
odpověděl Douglas Leeder 08.06.2016 02:15
21

Povolte ověření dvou faktorů HOTP nebo TOTP . Toto je k dispozici od 13.10.

To zahrnuje použití autentizace s veřejným klíčem přes autentizaci heslem jako v jiné odpovědi, ale také vyžaduje, aby uživatel dokázal, že kromě svého soukromého klíče má své zařízení s druhým faktorem.

Shrnutí:

  1. sudo apt-get install libpam-google-authenticator

  2. Každému uživateli spusťte příkazgoogle-authenticator, který generuje~/.google-authenticator a pomáhá jim nakonfigurovat zařízení s dvěma faktory (například aplikace Google Authenticator pro Android).

  3. Upravte/etc/ssh/sshd_config a nastavte:

    ChallengeResponseAuthentication yes
    PasswordAuthentication no
    AuthenticationMethods publickey,keyboard-interactive
    
  4. Spusťtesudo service ssh reload a vyzvedněte změny na/etc/ssh/sshd_config.

  5. Upravte/etc/pam.d/sshd a nahraďte řádek:

    @include common-auth
    

    s:

    auth required pam_google_authenticator.so
    

Další podrobnosti o různých možnostech konfigurace jsou moje příspěvky z minulého roku: Lepší dvoufázový ssh autentizace na Ubuntu .

    
odpověděl Robie Basak 23.05.2017 00:29
19

Zde je jedna jednoduchá věc: nainstalujte ufw ("nekomplikovaná brána firewall") a použijte ji pro ohodnocení limitů příchozích připojení.

Z příkazového řádku zadejte:

$ sudo ufw limit OpenSSH 

Pokud není nainstalována ufw , proveďte to a zkuste to znovu:

$ sudo aptitude install ufw 

Mnoho útočníků se pokusí použít váš SSH server k hrubému vynucení hesel. To umožní pouze 6 připojení každých 30 sekund od stejné IP adresy.

    
odpověděl mpontillo 15.08.2010 00:45
12

Pokud chci mít nějaké další zabezpečení nebo potřebuji přistupovat k SSH serverům hluboko uvnitř některé firemní sítě, nastavím skryté pomocí anonymní verze     

odpověděl qbi 08.06.2016 02:10
6

Můj přístup k vytvrzení SSH je ... složitý. Následující položky se týkají toho, jak to dělám, od okrajové hranice mé sítě (sítí) až po samotné servery.

  1. Filtrování provozu na hranicích prostřednictvím IDS / IPS se známými obslužnými skenery a podpisy v seznamu bloků. Dosahuji to pomocí služby Snort přes hraniční firewall (to je můj přístup, pfSense spotřebič). Někdy to však nemůžu udělat, jako například s VPS.

  2. Filtrování brány firewall / sítě portů SSH. I explicitně povolím, aby se některé systémy dostaly na mé SSH servery. To se provádí buď pomocí brány firewall pfSense na okraji mé sítě, nebo firewallů na každém serveru, které jsou explicitně konfigurovány. Existují případy, kdy to nemůžu udělat (což se téměř nikdy neděje, s výjimkou soukromých zkušebních zkušebních nebo zkušebních prostředí, kde firewally nepomáhají otestovat věci).

  3. Ve spojení s mým pfSense nebo hraniční firewall NAT - interní sítí a oddělením od Internetu a systémů VPN-Only Access to Servers . Mám VPN do svých sítí, abych se dostal na servery, protože neexistují žádné porty orientované na internet jako takové. To určitě nefunguje u všech mých VPS, ale ve spojení s č. 2 můžu mít jednu VPS jako bránu VPNing na tento server a pak povolit jeho IP adresy do ostatních políček. Tímto způsobem vím přesně, co může nebo nemůže SSH ve svém jednom poli, což je VPN. (Nebo v mé domácí síti za pfSense, moje VPN připojení a já jsem jediná s VPN přístupem).

  4. Kde # 3 není možné, fail2ban, nakonfigurován na blokování po 4 neúspěšných pokusech a zablokování IP na hodinu nebo více je slušná ochrana proti lidem, kteří neustále útočí na bruteforcing zablokujte em na firewallu automaticky s fail2ban a meh. Konfigurace fail2ban je bolest ...

  5. Zablokování portů změnou portu SSH. Nicméně to není dobrý nápad udělat bez dalších bezpečnostních opatření - mantra " Security through Obscurity "již bylo v mnoha případech vyvráceno a zpochybněno. Udělal jsem to ve spojení s IDS / IPS a filtrováním sítí, ale stále je to velmi špatné, co dělat samo.

  6. POVINNÉ dvoufaktorové ověřování pomocí dvoufaktorového ověřování Duo Security . Každý jeden z mých SSH serverů je na něm nakonfigurován Duo, takže pro to, aby se dokonce dostali, se vyskytnou výzvy 2FA a musím potvrdit každý přístup. (Jedná se o konečnou užitečnou funkci - protože i když má někdo mou přístupovou frázi nebo se v ní přestěhuje, nemohou překonat pluginy Duo PAM). Jedná se o jednu z největších ochran na SSH serverech před neoprávněným přístupem - každé přihlášení uživatele musí být vázáno zpět na konfigurovaného uživatele v systému Duo a protože mám omezující množinu, v systému nelze registrovat žádné nové uživatele.

Moje dva centy na zabezpečení SSH. Nebo alespoň mé myšlenky o přístupu.

    
odpověděl Thomas W. 10.06.2016 23:14
1

Chcete-li použít aplikaci FreeOTP od společnosti RedHat, místo aplikace Google Authenticator můžete provádět kontrolu. Někdy při aktualizaci aplikace zablokují vás! ; -)

Pokud chcete používat jiné hardwarové tokeny jako Yubikey nebo eToken PASS nebo NG, nebo pokud máte mnoho uživatelů nebo mnoho serverů, možná budete chtít použít backend s ověřením dvou faktorů opensource.

V poslední době jsem napsal jak o tom .

    
odpověděl cornelinux 08.06.2016 02:12
0

Nedávno jsem napsal malý návod. V podstatě musíte používat PKI a můj tutoriál také ukazuje, jak používat dvoufaktorové ověřování pro ještě větší bezpečnost. Dokonce i když nepoužíváte žádné z těchto věcí, existují také nějaké úskalí ohledně zabezpečení serveru odstraněním slabých šifrovacích sad a dalších základů. Odkaz

    
odpověděl 01000101 19.05.2015 15:52
0

Pro velké množství uživatelů / certifikátů zvažte integraci LDAP. Velké organizace používají protokol LDAP jako úložiště pro pověření uživatele a certifikáty uložené na odznaky nebo fobs, ať už jsou certifikáty používány k ověřování nebo podepisování e-mailů. Mezi příklady patří openLDAP, openDJ, Active Directory, univerzální adresář Oracle, IBM Directory Server, snareWorks ...

Počítače a skupiny mohou být spravovány také v LDAP, který poskytuje centrální správu pověření. Tímto způsobem pomáhají stoly k tomu, aby mohli jednat s velkými populacemi.

Zde je odkaz na integraci centOS: Odkaz

    
odpověděl weller1 29.04.2016 15:50
0

Můžete také zablokovat na základě země původu pomocí databáze geoIP.

V zásadě, pokud žijete v USA, není důvod, aby se někdo v Rusku připojil k SSH, takže budou automaticky zablokováni.

Scénář naleznete zde: Odkaz

K němu můžete také přidat příkazy iptables (pro mé kvapky), aby se automaticky vypustila veškerá návštěvnost z těchto IP adres.

    
odpověděl Michael A Mike 10.08.2017 07:09