it-swarm.dev

Jak ztuhnout SSH server?

Jaká opatření mohu/měl bych přijmout, abych zajistil, že zabezpečení kolem mého SSH serveru je naprosto nepropustné?

Toto bude komunitní wiki od začátku, takže se uvidíme, co lidé dělají pro zabezpečení svých serverů.

130
LassePoulsen

Proveďte IP adresy klienta sshd, které se nepodařilo poskytnout správné přihlašovací informace. " DenyHØsts " může tuto úlohu vykonat docela efektivně. Mám to nainstalované na všech mých linuxových krabicích, které jsou nějakým způsobem dostupné zvenčí.

Tím zajistíte, že násilné útoky na SSHD nebudou účinné, ale nezapomeňte (!) Tímto způsobem se můžete nakonec zamknout, pokud zapomenete heslo. To může být problém na vzdáleném serveru, ke kterému nemáte přístup.

21
LassePoulsen

Pro autentizaci místo hesel použijte páry veřejných/soukromých klíčů.

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

    ssh-keygen

  2. Povolit přístup 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ťte ssh-copy-id [server IP address] na každém počítači, ke kterému udělujete přístup (budete muset zadat heslo serveru na výzvu).

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

    Otevřeno /etc/ssh/sshd_config, najděte řádek, který říká #PasswordAuthentication yes a změňte ji na PasswordAuthentication no. Chcete-li použít změnu, restartujte démona serveru SSH (Sudo service ssh restart).

Jediným možným způsobem SSH na serveru je použití klíče, který odpovídá řádku v ~/.ssh/authorized_keys. Při použití této metody [~ # ~] i [~ # ~] se nestarají o útoky brutální silou, protože i když uhodnou moje heslo, bude odmítnuto. Brute-nutit pár veřejného/soukromého klíče je nemožné s dnešními technologiemi.

109
Asa Ayers

Navrhoval bych:

  • Pomocí fail2ban zabráníte pokusům o přihlášení brutální silou.

  • Zakázání přihlášení jako root pomocí SSH. To znamená, že útočník musel zjistit uživatelské jméno i heslo, což útok ztěžuje.

    Přidat PermitRootLogin no tvému ​​/etc/ssh/sshd_config.

  • Omezení uživatelů, kteří mohou SSH na server. Buď skupinou, nebo jen konkrétními uživateli.

    Přidat AllowGroups group1 group2 nebo AllowUsers user1 user2 omezit, kdo může SSH na server.

72
Mark Davidson

Další odpovědi poskytují zabezpečení, ale můžete udělat jednu věc, která způsobí, že vaše protokoly budou tišší, a bude méně pravděpodobné, že budete ze svého účtu uzamčeni:

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

Nezvyšuje to bezpečnost, ale to znamená, že všechny náhodné internetové skenery vám nepomůžou při protokolování souborů.

24
Douglas Leeder

Povolte dvoufázové ověření pomocí HOTP nebo TOTP . To je k dispozici od 13.10.

To zahrnuje použití ověřování pomocí veřejného klíče při ověřování pomocí hesla jako v jiné odpovědi zde, ale také vyžaduje, aby uživatel dokázal, že kromě svého soukromého klíče drží také své druhé zařízení s faktorem.

Souhrn:

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

  2. Nechat každého uživatele spustit google-authenticator příkaz, který vygeneruje ~/.google-authenticator a pomáhá jim nakonfigurovat jejich dvě faktorová zařízení (např. Google Authenticator Android aplikace).

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

    ChallengeResponseAuthentication yes
    PasswordAuthentication no
    AuthenticationMethods publickey,keyboard-interactive
    
  4. Spustit Sudo service ssh reload pro vyzvednutí změn do /etc/ssh/sshd_config.

  5. Upravit /etc/pam.d/sshd a nahradit řádek:

    @include common-auth
    

    s:

    auth required pam_google_authenticator.so
    

Více podrobností o různých možnostech konfigurace je můj blogový příspěvek z minulého roku: Lepší dvoufaktorová autentizace ssh na Ubunt .

23
Robie Basak

Zde je jedna jednoduchá věc: nainstalovat fw („nekomplikovaný firewall“) a použít jej k ohodnocení omezení příchozích připojení.

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

$ Sudo ufw limit OpenSSH 

Pokud fw není nainstalováno, proveďte toto a zkuste to znovu:

$ Sudo aptitude install ufw 

Mnoho útočníků se bude snažit použít váš server SSH k brute-force hesla. To umožní pouze 6 připojení každých 30 sekund ze stejné IP adresy.

20
mpontillo

Pokud chci mít nějaké další zabezpečení nebo potřebuji přístup k SSH serverům hluboko uvnitř nějaké firemní sítě, nastavím skrytá služba pomocí anonymizačního softwaru Tor .

  1. Nainstalujte Tor a nastavte samotný server SSH.
  2. Ujistěte se, že sshd poslouchá pouze při localhost.
  3. Otevřeno /etc/tor/torrc. Set HiddenServiceDir /var/lib/tor/ssh a HiddenServicePort 22 127.0.0.1:22.
  4. Podívat se na var/lib/tor/ssh/hostname. Existuje jméno jako d6frsudqtx123vxf.onion. Toto je adresa skryté služby.
  5. Otevřeno $HOME/.ssh/config a přidejte několik řádků:

    Host myhost
    HostName d6frsudqtx123vxf.onion
    ProxyCommand socat STDIO SOCKS4A:127.0.0.1:%h:%p,socksport=9050
    

Dále potřebuji Tor na svém místním hostiteli. Pokud je nainstalován, mohu zadat ssh myhost a SSH otevře spojení přes Tor. Server SSH na druhé straně otevírá svůj port pouze na localhost. Nikdo to nemůže připojit přes „normální internet“.

12
qbi

Toto téma obsahuje článek pro správu Debianu. Pokrývá základní konfiguraci serveru SSH a také pravidla brány firewall. To by mohlo být také zajímavé pro zpřísnění SSH serveru.

Viz článek: Zabezpečení SSH přístup .

8
Huygens

Můj přístup k tvrdnutí SSH je ... komplexní. Následující položky se týkají způsobu, jakým to dělám, od okraje mého okraje mé sítě (sítí) k samotným serverům.

  1. Hraniční filtrování provozu přes IDS/IPS se známými servisními skenery a podpisy v seznamu blokovaných. Toho dosahuji pomocí Snoretu přes můj hraniční firewall (to je můj přístup, pfSense zařízení). Někdy to však nemůžu udělat, například s mými VPS.

  2. Filtrování brány firewall/sítě portů SSH. Výslovně povoluji pouze určitým systémům přístup na mé servery SSH. To se provádí buď pomocí brány firewall typu pfSense na hranici mé sítě, nebo se výslovně konfigurují brány firewall na každém serveru. Existují však případy, kdy to nemůžu udělat (což je téměř nikdy případ, s výjimkou soukromých testovacích laboratoří nebo bezpečnostních testovacích laboratoří, kde firewally nepomůžou testovat věci).

  3. Ve spojení s mým pfSense nebo hraničním firewallem NAT-ing interní síť a oddělením od internetu a systémů Přístup pouze k VPN serverům . Musím VPN do mých sítí, abych se dostal na servery, protože neexistují žádné porty směřující k Internetu jako takové. To rozhodně nefunguje pro všechny mé VPS, ale ve spojení s # 2, mohu mít jeden VPS být 'bránou' VPNingem na tomto serveru, a pak povolit jeho IP do ostatních polí. Tímto způsobem přesně vím, co může nebo nemůže SSH v - mé krabici, kterou je VPN. (Nebo v mé domácí síti za pfSense, moje připojení VPN a já jsem jediný s přístupem VPN).

  4. Kde # 3 není proveditelné, fail2ban, nakonfigurovaný tak, aby blokoval po 4 neúspěšných pokusech a blokoval IP na hodinu nebo více , je slušná ochrana proti lidem neustále útočí s brutální silou - jednoduše blokujte em na firewallu automaticky pomocí fail2ban a meh. Konfigurace fail2ban je ale bolest ...

  5. Zmatení portu změnou portu SSH. Nicméně, NENÍ to dobrý nápad udělat bez jakýchkoli dalších bezpečnostních opatření - mantra „Zabezpečení skrze tajnost“ byla již v mnoha případech vyvrácena a zpochybněna. Udělal jsem to ve spojení s IDS/IPS a síťovým filtrováním, ale stále je to VELMI špatná věc.

  6. POVINNÁ dvoufaktorová autentizace prostřednictvím řešení dvoufaktorové autentizace Duo Security . Každý z mých serverů SSH má nakonfigurováno Duo na to, aby se dokonce dostalo, dojde k výzvám 2FA a každý přístup musím potvrdit. (Toto je konečná užitečná funkce - protože i když někdo má moje přístupové heslo nebo se vloupá, nemůže přeskočit pluginy Duo PAM). Toto je jedna z největších ochran na mých serverech SSH 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 Duo a protože mám omezující sadu, nemohou být v systému registrováni žádní noví uživatelé.

Moje dva centy na zabezpečení SSH. Nebo alespoň moje myšlenky na přístup.

6
Thomas Ward

Možná budete chtít místo aplikace Google Authenticator vyzkoušet aplikaci FreeOTP z RedHat. Někdy při aktualizaci aplikace vás zamknou! ;-)

Pokud chcete použít jiné hardwarové tokeny, jako je Yubikey nebo eToken PASS nebo NG nebo pokud máte mnoho uživatelů nebo mnoho serverů, můžete použít backend dvoufaktorové autentizace opensource.

V poslední době jsem napsal jak na to .

1
cornelinux

U velkého počtu uživatelů/certifikátů zvažte integraci LDAP. Velké organizace používají LDAP jako úložiště pro pověření uživatele a certifikáty uložené na odznakech nebo fobech, ať už jsou certifikáty použity pro ověřování nebo podepisování e-mailů. Příklady zahrnují openLDAP, openDJ, Active Directory, Oracle Universal Directory, IBM Directory Server, snareWorks ...

Počítače a skupiny lze také spravovat v LDAP, což umožňuje centrální správu pověření. Tímto způsobem mohou asistenční pracoviště disponovat jednotným kontaktním místem, které bude řešit velké populace.

Zde je odkaz na integraci CentOS: http://itdavid.blogspot.com/2013/11/howto-configure-openssh-to-fetch-public.html

0
weller1

Pomocí databáze geoIP můžete také blokovat podle země původu.

Pokud v zásadě žijete v USA, není důvod, aby se někdo v Rusku připojil k vašemu SSH, takže bude automaticky zablokován.

Skript najdete zde: https://www.axllent.org/docs/view/ssh-geoip/

Můžete také přidat příkazy iptables (udělal jsem pro své kapičky), aby se automaticky přerušil veškerý provoz na/z těchto IP.

0
Michael A Mike

Nedávno jsem napsal malý návod, jak to udělat. V zásadě musíte používat PKI a můj tutoriál také ukazuje, jak používat Two-Factor Authentication pro ještě větší zabezpečení. I když žádnou z těchto věcí nepoužíváte, je zde také několik věcí o zabezpečení serveru odstraněním slabých šifrovacích sad a dalších základů. https://joscor.com/blog/hardening-openssh-server-ubuntu-14-04/

0
01000101