Otázka:
Je spuštění instance AWS s pouze ssh na portu 22 významně nejisté?
javadba
2020-06-26 01:51:03 UTC
view on stackexchange narkive permalink

Pokud někdo nemá můj soukromý klíč ssh, jak ponechá instanci AWS otevřenou na 0.0.0.0, ale pouze na portu 22 prostřednictvím nezabezpečeného ssh?

enter image description here

Klíč ssh bude distribuován malé skupině lidí. Raději nemusím předem uvádět jejich zdrojové adresy IP.

Vidím další podobnou otázku Zadání hrubou silou SSH v instanci aws ec2.

Pokud jste zakázali přihlašování založené na heslech přes SSH, pak je velmi těžké hrubě vynutit přihlášení SSH pomocí soukromého klíče (

Možná to pokrývá? ve světě zabezpečení nedostanete druhou šanci.

"Pokud někdo nemá můj soukromý klíč ssh, jak ponechá instanci aws otevřenou na 0.0.0.0, ale pouze na portu 22 přes ssh nejistou?"Není tomu tak, pokud váš server SSH neobsahuje chyby, které lze zneužít (ne neslýchané, pamatujte na hacky OpenSSH z roku 2003 nebo tak nějak) nebo pokud nejsou špatně nakonfigurovány.Je zajímavé nechat to na portu 22, z notoricky známých IP adres získáte okamžité pokusy o hrubou sílu.Text AWS je standardní právnická korektura.
Cítím se od _ "Doporučujeme ... povolit přístup pouze ze známých IP adres" _ (Amazon) na _ "triviálně nejistý" _ (název otázky) je tam trochu skok;)
„_Ssh klíč bude distribuován_“?Ehm, ne.Každá kombinace uživatel / počítač by měla mít svůj vlastní klíč.Mělo by to být skutečně vygenerováno každým uživatelem a jeho veřejným klíčem nastaveným na jeho účtu na serveru.
Výše uvedený komentář @jcaron by měl získat větší pozornost.Nedistribuujte klíč „(singulární), který instance AWS generuje.Nechte každého uživatele přidat do hostitele svůj vlastní veřejný klíč.Ne striktně se zabývat tématem otázky, ale důležité.
Není to odpověď na vaši otázku, ale mohlo by vás zajímat, že se můžete připojit přes SSH pomocí Systems Manager bez otevření portu 22 na veřejné IP adresy a bez použití klíče SSH
"Raději nemusím předem uvádět jejich zdrojové IP adresy."Nemusíte to dělat předem.Zeptejte se jich, z jaké IP adresy budou mít přístup na server, a zároveň od nich obdržíte jejich veřejný klíč.Pokud to považujete za součást nastavení přístupu uživatele, lze to sledovat zcela přirozeně.
Třináct odpovědi:
Demento
2020-06-26 02:20:29 UTC
view on stackexchange narkive permalink

Odpověď závisí na vaší ochotě riskovat. Omezení přístupu k portu SSH pouze na známé adresy IP výrazně snižuje povrch útoku. Ať už může nastat jakýkoli problém (úniky soukromého klíče, 0 dní v SSH atd.), Může ho zneužít pouze útočník pocházející z těchto konkrétních IP adres. V opačném případě může útočník přistupovat k portu odkudkoli, což je obzvláště špatné v případě neopravené chyby zabezpečení SSH s exploitem dostupným ve volné přírodě.

Je jen na vás, jak důležité je systém a jeho data jsou pro vás. Pokud to není tak kritické, může být vhodné pohodlí portu SSH otevřeného světu. Jinak bych pro každý případ doporučil omezit přístup. Těžkých 0 dní v SSH se neobjevuje každý den, ale nikdy nevíte, kdy nastane další.

Díky - dělám malý prototyp pouze s náhodnými testovacími daty.To může být použitelné.
@javadba jen opakoval to, co řekl demento, takže budeme.Neexistuje nic jako „zabezpečený“ nebo „nejistý“.Vždy existuje jen „dost bezpečné pro mě“.Bezpečnostní potřeby pro anonymní hlasovací stránky roztomilých koček nebo ne stejné jako pro webové stránky, na kterých zahájíte jaderné útoky (což by samozřejmě neměly být ani webové stránky !!!).Amazon poskytuje osvědčené postupy, ale ne všechna bezpečnostní opatření mají cenu pro každého.
@ConorMancone ano dost fér.Oceňuji zpětnou vazbu, abychom zajistili, že alespoň nejde o situaci „chyť a jdi“.
+1 pro „0-den v SSH“ a „Zranitelnost SSH s exploitem dostupným ve volné přírodě“.
Jak nastavíte zdrojovou IP adresu?Firewalld není schopen a použití iptable paralelně s Firewalldem je nepořádek, který přidává další bezpečnostní obavy.
@Alexis varování zahrnuté v OP vám řekne, jak to udělat: aktualizací pravidel skupiny zabezpečení.Více informací o tom, jak IAM funguje v AWS, získáte z oficiální dokumentace AWS na [Identity and access management for Amazon VPC] (https://docs.aws.amazon.com/vpc/latest/userguide/security-iam.html)
Byla to specifická otázka AWS, správně, omlouvám se.
iBug
2020-06-26 13:12:25 UTC
view on stackexchange narkive permalink

Klíč ssh bude distribuován malé skupině lidí.

Ne, nedělejte to. Nikdy nesdílejte soukromé klíče. Vyzvěte své lidi, aby sami generovali páry klíčů a sbírali jejich veřejné klíče. Přijměte přiměřená opatření, abyste zajistili, že pubkeys skutečně pocházejí od správných lidí.

Nebo vám nevadí potíže, můžete místo toho vyzkoušet jednotné ověřovací schéma, například SSH CA, abyste se mohli podepsat jsou to certifikáty, které lze bezpečně distribuovat (certifikát je bez soukromého klíče k ničemu).

LDAP je ještě lepší, ale s malými servery bych se neobtěžoval. Je příliš složité jej nastavovat a udržovat.


Otevření portu SSH na internetu není nezabezpečené samo o sobě . Záleží na tom, jak se autentizuje. SSH skenování probíhá každou minutu na internetu. Zkuste jej nechat zapnutý jen jeden den a zkontrolujte /var/log/auth.log , zda neobsahuje neplatná uživatelská jména.

Řekl bych, že pokud používáte ověřování pomocí veřejného klíče a aby byla soukromá část zabezpečena, nikdo na váš server nemůže v reálném čase hrubou silou, vzhledem k tomu, že běžné implementace SSH, jako je OpenSSH, často nevyskakují 0 dní. Sdílení soukromého klíče není bezpečné ani pohodlné. Klíč může během přenosu uniknout, pravděpodobně v určitém okamžiku ani nevíte. To je nebezpečné.

Proč certifikát?Nechte lidi, aby vám posílali své veřejné klíče, přidejte tyto veřejné klíče do souboru .ssh / authorized_keys`.Dbejte na to, aby veřejný klíč skutečně pocházel od osoby, o které tvrdí, že pochází.Tak to bylo navrženo na prvním místě.
Dobrá věc, že OP by neměl sdílet soukromé klíče, ale nesouhlasím s většinou, co jste řekli.Guntramův návrh je mnohem lepším řešením a hrubá síla není jediným problémem.Riziko 0 dnů je větší.To vše však závisí na rizikové chuti OP.
Nikdy jsem neslyšel o „SSH CA“ (ale jsem obeznámen s X509 CA i SSH), je to to, o čem mluvíš?https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/sec-using_openssh_certificate_authentication
Souhlasím s tím, že sdílení klíčů SSH, stejně jako sdílení hesel, je špatná bezpečnostní praxe.Tento člověk však má jediný server, který je ochoten vystavit světu a není ochoten jej chránit za soukromou podsítí a VPN.Zdá se nepravděpodobné, že nastaví SSH CA, aby se vyhnul sdílení klíčů.
@CaptainMan Ano, to je vše.Shrnutí jako `ssh-keygen -s`.
Některé podrobnosti o konceptu ssh ca: https://engineering.fb.com/security/scalable-and-secure-access-with-ssh/
Považuji za ironii, že jedna odpověď (a komentáře) říká * Neexistuje nic jako „zabezpečený“ nebo „nejistý“.Vždy existuje pouze „dostatečně zabezpečené pro mě“ * a další odpověď říká * Sdílení soukromého klíče ** není bezpečné ***;)
@AndrewSavinykh Sdílení soukromého klíče pro instanci EC2 by pro většinu lidí nemělo být dostatečně bezpečné :)
Criggie
2020-06-27 06:35:25 UTC
view on stackexchange narkive permalink

Odpověď Ne, není to triviálně nejisté, ale stále to není ideální.

Spravuji několik instancí AWS a zatímco většina z nich má skupiny zabezpečení omezující příchozí přístup SSH, existuje obchodní potřeba, aby jeden z nich naslouchal na portu 22 pro všechna připojení.

Jako takový je tento hostitel každý den zasažen tisíci skriptovaných (skiddy) připojení. To je při přihlášení označeno zprávami MOTD jako

  Poslední přihlášení: Pá 19. června 23:17:36 UTC 2020 na bodech / 2 Poslední neúspěšné přihlášení: So 27. června 01:00:44 UTC 2020 od 120.70.103.239 na ssh: notty Od posledního úspěšného přihlášení došlo k 21655 neúspěšným pokusům o přihlášení. Host1234 ~ # dateSat 27. června 01:12:18 UTC 2020  

Takže to je zhruba 2500 denně sto za hodinu. Určitě většina z nich bude jednoduše automatizovaná sonda, ale co se stane, když bude nalezena a zneužita zranitelnost nulového dne?
Omezením expozice snížíte riziko.

Řešení zahrnují jedno / některé / všechny:

  • Použít skupiny zabezpečení AWS k povolení připojení pouze ze specifických IP adres na internetu
  • Použít VPN řešení a vyžadují, aby SSH bylo provedeno přes VPN. VPN může poslouchat všechny zdroje, mít certifikáty a 2FA a obecně přidávat další vrstvy. OpenVPN funguje dobře, nebo existuje několik nabídek AWS, které provádějí stejný úkol.
  • Přesuňte SSH na jiný port - není to žádné přidané zabezpečení, ale tím se sníží počet pokusů o připojení ssh, a proto hluk. Kdokoli, kdo si stojí za svou sůl, prohledá stejně všechny porty, nejen výchozí.
  • Pokud MUSÍTE poslouchat SSH promiskuitně, prozkoumejte řešení jako který přidá zdroje do /etc/hosts.deny , pokud selžou více než Xkrát za Y minuty, a může je po nějakém dni znovu odstranit.
  • Prozkoumejte IPv6 - jako změnou naslouchacího portu IPv6 prodlužuje čas potřebný na skenování, takže kluzáci mají více prostoru pro vyhledávání. Prohledávání v6 se však stále děje.

Sshing-in zařízení je pro mě hardware, takže mají platný uživatelský certifikát a vždy se úspěšně ověřují. Napsali jsme skript, který prohledá / var / log / secure a vyhledá výraz „uživatel nebyl nalezen“ nebo podobný a okamžitě tyto zdroje trvale přidá do souboru hosts.deny.
Uvažovali jsme o tom, že bychom to rozšířili tak, aby blokovaly celé podsítě na základě vyhledávání, ale to ještě nebylo potřeba.

Aktuálně blokujeme:

  host1235 ~ # grep -ci all /etc/hosts.*/etc/hosts.allow:79/etc/hosts.deny:24292

Nebudu sdílet seznam špatných zdrojových IP adres , protože některá místa považují adresy IP za osobně identifikovatelné informace (nebo PII).

Upozorňujeme, že naše adresy IP Office jsou v hosts.allow , které trumfují hosts.deny soubor, takže pokud někdo selže při přihlášení z kanceláře, pak to nezablokuje lidské uživatele.

Požádejte o vysvětlení - vím, že jsem dal mnoho detailů rukou.

Mohu ručit za fail2ban.Dokonce i hostování Raspberry Pi v mé domácí síti vidělo útoky hrubou silou!
Kromě existujících vrstev, které jste popsali, je možné dodatečně implementovat nějaký druh řešení 2FA, které by bylo nutné v případě pokusu o přihlášení z dříve neviditelných IP adres (nebo IP adres, které nejsou, je nějaký seznam povolených)?Mým problémem je, že bych chtěl připojení z mobilního hotspotu, který však má tendenci velmi často měnit IP.
Další věc, o změně portů z 22: podle toho, co chápu, je stále možné zjistit důkladným skenováním nmap - pokud je to tak, je možné je spoofovat?Např. Umístit několik „honeypot“ ssh portů, které nikam nevedou (nebo k nějakému prázdnému kontejneru dockeru?), V podstatě skrývají správný port, který vede k počítači?
Captain Man
2020-06-27 00:52:15 UTC
view on stackexchange narkive permalink

Možná budete chtít zvážit použití Správce relací AWS. Když moje společnost používala AWS, zdálo se, že to není super široce známý nástroj. V podstatě to jednoduše umožňuje přihlásit se k instanci EC2 z prohlížeče (nebo příkazového řádku ) přes konzolu AWS. K autorizaci používáte klíče IAM místo klíčů SSH.

S rizikem, že to bude znít jako reklama, budu pokračovat a cituji příslušnou část dokumentace.

  • Žádné otevřené příchozí porty a není třeba spravovat hostitele bašty nebo klíče SSH

    Ponechání otevřených příchozích portů SSH a vzdálených portů PowerShell ve vašich instancích výrazně zvyšuje riziko entit, které budou v instancích spouštět neautorizované nebo škodlivé příkazy. Správce relací vám pomůže zlepšit pozici zabezpečení tím, že vám umožní zavřít tyto příchozí porty a zbaví vás správy klíčů a certifikátů SSH, hostitelů bastionů a skoků.

Pokud tedy do máte podezření, že ponecháte port 22 otevřený, bude to problém (a myslím, že odpověď Dementa dobře pokrývá, zda byste měli nebo neměli) pak toto je přístup, který můžete použít k jeho udržení v uzavřeném stavu při současném umožnění přístupu SSH (alespoň z určitého hlediska).


†: K použití správce relací existuje nástroj třetí strany z příkazového řádku zde.

Opravdu neodpovídá na otázku OP týkající se zabezpečení SSH, ale toto je opravdu správné řešení.SSM lze také snadno [použít z příkazového řádku] (https://aws.nz/projects/ssm-session/).
+1 zde, SSM je skvělý nástroj.
@MLu Přidal jsem nástroj k odpovědi.Pokud vy (nebo někdo jiný) víte, jak to udělat pomocí nástrojů první strany, upravím to také.:)
Paul Draper
2020-06-27 00:14:09 UTC
view on stackexchange narkive permalink

A. Klíčový SSH je velmi bezpečný a široce důvěryhodný. Samozřejmě vždy existuje možnost zranitelnosti (např. Heartbleed) a omezení pomocí IP zvyšuje bezpečnost. Riskoval bych však, že uhodnete, že je větší pravděpodobnost, že vás někdo napadne jinými způsoby (řekněme phishing pro konzolu AWS). Zvažte vytvoření více klíčů SSH, abyste zabránili možnému kompromisu při jejich sdílení. (I když chápu, že to může být nepohodlné, protože AWS umožňuje při prvním spuštění instance pouze jeden klíč SSH.)

Ángel
2020-06-27 06:00:33 UTC
view on stackexchange narkive permalink

Ne. Není triviálně nezabezpečené mít server openssh otevřený pro příjem připojení odkudkoli.

openssh má opravdu dobrý bezpečnostní záznam a je nepravděpodobné, že by se téměř na povrch objevil nový „exploit zabijáka“ .

Mějte však na paměti, že vaše instance bude přijímat spoustu pokusů o hrubou sílu z celého světa. To nepokrývá slabé heslo!

  • Zakázat ověřování pomocí hesla na úrovni serveru ssh. Proto pro přihlášení potřebujete klíče ssh.
  • Nesdílejte soukromý klíč! Každý, kdo potřebuje přístup na server, by měl mít na server přidán vlastní klíč (vygenerovaný místně, nikdy neodeslaný). To zlepšuje sledovatelnost, umožňuje odebrání přístupu jedné osobě, že pokud je klíč dokonce podezřelý z ohrožení, lze jej snadno vyměnit a odstraní problémy s distribucí soukromých klíčů.
  • Můžete zvážit přesun serveru na jiný port. Nejedná se o samotné bezpečnostní opatření, ale poskytne vám čistší protokoly
  • Přístup můžete dále omezit tím, že budete vědět, odkud nebude připojen. Možná není možné nastavit seznam povolených přesných adres IP, které budou použity, ale možná budete vědět, ze které země budou. Nebo že se tam nikdo nepřipojuje.

Varování AWS je dobré a je dobré omezit příchozí zdroje, pokud můžete, ale nedělat to není nejisté. Všimněte si, že AWS neví, zda požadujete klíče ssh, nebo jestli máte pověření root / 1234. Toto varování bohužel odráží vysoký počet instancí, které jsou nakonec kompromitovány kvůli triviálně hloupým pověřením.

Peter Green
2020-06-26 23:51:48 UTC
view on stackexchange narkive permalink

openssh má docela dobrou pověst zabezpečení. Když se podívám do svého archivu výstrah zabezpečení Debianu (nejde o vyčerpávající hledání, v knihovnách používaných programem openssh mohly být problémy, které jsem nezjistil). Vidím asi jedno upozornění za rok, ale většina z nich se jeví jako relativně malé problémy (některé problémy s výčtem uživatelských jmen, některé problémy v klientovi, problémy s eskalací privilage pro uživatele, kteří jsou již ověřeni na serveru s jinou než výchozí konfigurací, některé obchází omezení proměnných prostředí

Jedna chyba však vyniká. V roce 2008 došlo v Debianu openssl k opravdu ošklivé chybě, což znamenalo, že klíče generované pomocí openssl nebo openssh ve zranitelném Debianu systémy mohly být vynuceně vynuceny. Kromě toho klíče DSA, které byly na zranitelném systému pouze použity , byly potenciálně ohroženy, pokud útočník provozoval zranitelný klíč (buď pomocí čichání, nebo v případě klíčů hostitele z Když se taková chyba zabezpečení stane veřejnou, můžete mít velmi omezený čas na přizpůsobení, než ji botneti začnou používat.

Takže nejlepší je minimalizovat množství věcí, které přímo vystavujete Internet, takže když přijde opravdu ošklivá chyba, kterou můžete rychle zmírnit. Nutnost provést nouzovou aktualizaci na několika systémech je mnohem lepší, než to udělat na každém systému najednou.

Samozřejmě je to nákladné, přístup pouze k jednotlivým systémy na vaší VPN nebo se musí odrazit přes více serverů se může stát hlavní PITA. Nakonec musíte rozhodnout, která rovnováha je pro vás to pravé.

TrypanosomaBruceii
2020-06-27 05:55:28 UTC
view on stackexchange narkive permalink

Ne, není to „triviálně nejisté“, ale AWS nikdy neřekla, že tomu tak bylo. Místo toho doporučuje dělat něco jiného, ​​protože dělat něco jiného je v souladu se standardními osvědčenými postupy. Těmto osvědčeným postupům se můžete vyhnout, pokud si myslíte, že to víte lépe, ale vzhledem k tomu, že váš OP pojednává o myšlence sdílení soukromého klíče mezi více uživateli, velmi důrazně doporučuji pouze vyhovět každému upozornění na zabezpečení, které vám AWS pošle. V nejhorším případě zbytečně strávíte čas „over-engineeringem“. V nejlepším případě se vyhnete vážným následkům.

tankmek
2020-06-27 18:18:06 UTC
view on stackexchange narkive permalink

Pokud někdo nemá můj soukromý klíč ssh, jak je možné ponechat instanci AWS na 0.0.0.0, ale pouze na portu 22 prostřednictvím nezabezpečeného ssh?

Není to „nejisté“ Zvyšte riziko porušení pouze v případě, že v SSH existuje neznámá nebo neopravená chyba zabezpečení.

Protože používáte AWS, můžete pomocí IAM umožnit členům týmu přidávat vzdálené adresy IP, které přicházejí od sebe .

eckes
2020-06-28 05:00:06 UTC
view on stackexchange narkive permalink

Upozorňujeme, že toto varování obsahuje několik dalších vrstev. Nejprve možná nebudete chtít přiřadit veřejnou IP adresu strojům ve vaší interní podsíti.

Místo (pouze) filtrování IP ve skupině zabezpečení a VPC ACL, které nemají síť dosažitelnou bez skoku hostitel, správce relací nebo VPN je další měření.

Pomáhá to také proti náhodnému překonfigurování skupin zabezpečení (a zachování a povolení dalších síťových služeb). Pomáhá také proti zneužití úrovně IP jádra nebo rizikům DOS. Je to součást zabezpečení do hloubky a vrstvených přístupů, které se řídí zásadou neumožnění jakéhokoli přístupu, kterému se lze vyhnout - i když tím nenajdete okamžitou hrozbu.

Před veřejnými cloudy Dáte-li velkou důvěru v ochranu perimetru, totéž lze použít pro softwarově definované architektury v cloudu, kde by mikro segmentace měla být ve skutečnosti normou.

CONvid19
2020-06-28 13:14:22 UTC
view on stackexchange narkive permalink

Krátká odpověď:

  • Změnit výchozí port ssh
  • Odstranit výchozí banner ssh
  • Nesdílejte soukromé klíče
  • Omezit povolené ips
  • Přidejte denní cronjob pro instalaci bezpečnostních aktualizací
Přidal bych, abych deaktivoval přihlášení uživatele root a přihlášení pomocí hesla.
trognanders
2020-06-29 05:05:50 UTC
view on stackexchange narkive permalink

Správná konfigurace sshd nedovolí náhodným lidem přihlásit se do vaší instance ec2 záměrně, ale je možná nesprávná konfigurace nebo zranitelnost.

Použití portu 22 je běžné a nesmírně populární cíl pro skenování zranitelností. S otevřenou konfigurací brány firewall bude testována vaše konfigurace sshd a software .

Většina uživatelů EC2 poskytuje SSH pouze pro sebe, takže ji nabízí jako veřejnou služba je rozhodně zbytečné riziko.

Pokud chcete poskytovat SSH koncovým uživatelům, pak je veřejná služba. Uvědomte si, že přijímáte tuto odpovědnost. Některé osvědčené postupy jsou (ale nejsou omezeny na): buďte velmi opatrní při úpravě konfigurace a ujistěte se, že jsou aktualizace pravidelně instalovány.

Někdo výše zmínil použití aplikace Amazon Session Manager, kterou také velmi doporučuji prozkoumat .

R.. GitHub STOP HELPING ICE
2020-06-29 08:20:07 UTC
view on stackexchange narkive permalink

Za předpokladu, že ji nakonfigurujete správně , nejenže není „výrazně nezabezpečená“; není vůbec zranitelný, kromě vulvů na úrovni celosvětové katastrofy, u nichž se neočekává, že budou existovat. Vážně, infrastruktura pro správu AWS je slabším článkem než OpenSSH.

Nyní existuje řada možných způsobů, jak ji špatně nakonfigurovat, včetně toho, který jste uvedli ve své otázce, distribuce sdílený soukromý klíč. Rozhodně to nedělejte. Nikdy byste neměli zacházet se soukromým klíčem někoho jiného; měli by vám dát své veřejné klíče. Rovněž by neměly být povoleny žádné jiné možnosti ověřování než pubkey - žádná hesla, žádná GSSAPI, žádná PAM atd.



Tyto otázky a odpovědi byly automaticky přeloženy z anglického jazyka.Původní obsah je k dispozici na webu stackexchange, za který děkujeme za licenci cc by-sa 4.0, pod kterou je distribuován.
Loading...