Naučte se ze systému OpenSSH z vašeho počítače se systémem Linux
Mnohokrát jsme vyzdvihovali ctnosti SSH, a to jak pro zabezpečení, tak pro vzdálený přístup. Podívejme se na samotný server, na některé důležité aspekty "údržby" a na některé námitky, které mohou přidat turbulence k jinak hladké jízdě.
Zatímco jsme tuto příručku napsali s Linuxem, může se to týkat i OpenSSH v Mac OS X a Windows 7 prostřednictvím Cygwin.
Proč je to bezpečné
Mnohokrát jsme se zmínili o tom, jak SSH je skvělý způsob, jak bezpečně propojit a tunelovat data z jednoho místa do druhého. Podívejme se velmi stručně na to, jak fungují věci, abyste získali lepší představu, proč se věci někdy mohou dělat divně.
Když se rozhodneme zahájit spojení s jiným počítačem, často používáme protokoly, s nimiž lze snadno pracovat. Telnet a FTP mají na mysli. Informace odesíláme na vzdálený server a poté nám o našem připojení obdržíme potvrzení. Aby bylo možné určit určitý typ bezpečnosti, tyto protokoly často používají kombinace uživatelských jmen a hesel. To znamená, že jsou naprosto bezpečné, že? Špatně!
Pokud si myslíme na náš spojovací proces jako poštu, pak pomocí FTP a Telnet a podobně není jako použití standardních poštovních obálek. Je to spíš jako použití pohlednic. Pokud se někdo stane uprostřed, mohou vidět všechny informace, včetně adres oba korespondenty a vyslaného uživatelského jména a hesla. Mohou pak změnit zprávu, udržet informace stejné a vydávat se za jeden korespondent nebo druhého. Toto je známé jako útok typu "man-in-the-middle" a nejen to ohrožuje váš účet, ale zpochybňuje každou zaslanou zprávu a přijatý soubor. Nemůžete si být jisti, zda mluvíte s odesílatelem nebo ne, a dokonce i když jste, nemůžete si být jisti, že se nikdo nedívá na vše od.
Nyní se podíváme na šifrování SSL, což způsobuje, že HTTP je bezpečnější. Tady máme poštovní úřad, který zpracovává korespondenci, který kontroluje, zda je vaším příjemcem, kdo tvrdí, že je, a má zákony, které chrání vaši poštu před tím, než se na ni podíváte. Je celkově bezpečnější a ústřední orgán - Verisign je jeden, pro náš příklad HTTPS - zajišťuje, aby osoba, která posíláte poštu, zkontrolovala. Dělají to tím, že nepovolují pohlednice (nezašifrované pověření); místo toho povolují skutečné obálky.
Nakonec se podíváme na SSH. Nastavení se zde trochu liší. Nemáme centrální autentifikaci, ale věci jsou stále bezpečné. Je to proto, že posíláte dopisy někomu, jehož adresa už víte - řekněme, že si s nimi telefonujete - a používáte opravdu okouzlující matematiku, abyste podepsali vaši obálku. Předáte to svému bratrovi, přítelkyni, tátovi nebo dceři, aby to vzali na adresu, a pouze v případě, že se fantazijní matematika příjemce shoduje, předpokládáte, že adresa je to, co by mělo být. Pak dostanete dopis zpět, který je také chráněn před zvědavými očima touto úžasnou matematikou. Nakonec odešlete své pověření do jiné tajné algoritmicky okouzlené obálky do cíle. Pokud matematika neodpovídá, můžeme předpokládat, že se původní příjemce přesunul a musíme znovu potvrdit jeho adresu.
S vysvětlením, jak dlouho to je, myslíme, že tam budeme řezat. Máte-li nějaký další vhled, můžete se samozřejmě v komentářích rozloučit. Prozatím se však podíváme na nejdůležitější funkci SSH, autentizaci hostitele.
Hostitelské klíče
Ověřování hostitele je v podstatě ta část, kde někdo, koho důvěřujete, obdrží obálku (zapečetěnou magickou matematikou) a potvrdí adresu příjemce. Je to docela podrobný popis adresy a je založen na nějakém komplikovaném matematickém výkladu, že přesně přeskočíme. Existuje však několik důležitých věcí, které je třeba odstranit:
- Vzhledem k tomu, že neexistuje žádná ústřední autorita, skutečná bezpečnost spočívá v hostitelském klíči, veřejných klíčích a soukromých klíčích. (Tyto dva klíče jsou nakonfigurovány, když máte přístup k systému.)
- Obvykle se při připojení k jinému počítači pomocí protokolu SSH ukládá klíč hostitele. To činí budoucí akce rychleji (nebo méně verbózní).
- Pokud se změní klíč hostitele, budete s největší pravděpodobností upozorněni a měli byste být opatrní!
Vzhledem k tomu, že klíč k hostiteli je použit před ověřením pro zjištění totožnosti serveru SSH, měli byste si před připojením zkontrolovat klíč. Zobrazí se potvrzovací dialog, jak je uvedeno níže.
Neměli byste se však bát! Často, když se jedná o bezpečnost, bude zvláštní místo, které může potvrdit klíč hostitele (otisk prstu ECDSA výše). V plně online aktivitách se bude často jednat pouze o bezpečné přihlášení. Možná budete muset (nebo zvolit!) Zavolat IT oddělení, abyste potvrdili tento klíč po telefonu. Dokonce jsem slyšel o některých místech, kde je klíč na vašem pracovním odznaku nebo na zvláštním seznamu "Nouzové čísla". A pokud máte fyzický přístup k cílovému počítači, můžete také zkontrolovat sami!
Kontrola hostitelského klíče systému
Existují 4 typy druhů šifrovacích algoritmů, které se používají k vytváření klíčů, ale výchozí pro OpenSSH od počátku tohoto roku je ECDSA (s některými dobrými důvody). Zaměříme se na to dnes. Zde je příkaz, který můžete spustit na serveru SSH, na který máte přístup:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Váš výstup by měl vrátit něco takového:
256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub
První číslo je délka klíče, pak je klíč samotný a nakonec máte soubor, který je uložen. Porovnejte střední část s tím, co se zobrazí, když budete vyzváni k vzdálenému přihlášení. Mělo by to odpovídat a vy jste všichni připraveni. Pokud tomu tak není, může se dělat něco jiného.
Můžete si prohlédnout všechny hostitele, ke kterým jste se připojili přes SSH, a to pomocí souboru known_hosts. Obvykle se nachází na adrese:
~ / .ssh / known_hosts
Můžete ho otevřít v libovolném textovém editoru. Pokud se podíváte, zkuste věnovat pozornost tomu, jak jsou klíče uloženy. Jsou uloženy s názvem hostitele (nebo webovou adresou) a jeho adresou IP.
Změna hostitelských klíčů a problémů
Existuje několik důvodů, proč se klíče hostitele změní nebo neodpovídají tomu, co je přihlášeno v souboru known_hosts.
- Systém byl znovu nainstalován / znovu nakonfigurován.
- Klíče hostitele byly ručně změněny díky bezpečnostním protokolům.
- Server OpenSSH byl aktualizován a využívá odlišné standardy kvůli bezpečnostním problémům.
- Změna pronájmu IP nebo DNS. To často znamená, že se snažíte přistupovat k jinému počítači.
- Systém byl ohrožen nějakým způsobem tak, že klíč hostitele byl změněn.
Problém je s největší pravděpodobností jedním z prvních tří a změnu můžete ignorovat. Pokud se změna nájmu IP / DNS změnila, může dojít k problému se serverem a může být směrován na jiný počítač. Pokud si nejste jisti, jaký je důvod pro změnu, měli byste pravděpodobně předpokládat, že je to poslední na seznamu.
Jak OpenSSH zachází s neznámými hostiteli
OpenSSH má nastavení pro to, jak pracuje s neznámými hostiteli, což se odráží v proměnné "StrictHostKeyChecking" (bez uvozovek).
V závislosti na konfiguraci mohou připojení SSH s neznámými hostiteli (jejichž klíče již nejsou ve vašem souboru known_hosts) mohou probíhat třemi způsoby.
- StrictHostKeyChecking je nastaven na ne; OpenSSH se automaticky připojí k libovolnému serveru SSH bez ohledu na stav klíče hostitele. Toto je nejisté a nedoporučuje se, s výjimkou přidání hromady hostitelů po přeinstalaci operačního systému, po kterém je změníte zpět.
- StrictHostKeyChecking je nastaven na dotaz; OpenSSH vám před přidáním zobrazí nové klávesy hostitele a požádá o potvrzení. Zabrání tomu, aby se spojení změnilo na změněné klávesy hostitele. Toto je výchozí nastavení.
- StrictHostKeyChecking je nastaven na ano; Opačný údaj "ne" zabrání tomu, abyste se připojili k žádnému hostiteli, který ještě není ve vašem souboru known_hosts.
Tuto proměnnou můžete snadno změnit na příkazovém řádku pomocí následujícího vzorce:
ssh -o 'StrictHostKeyChecking [volba]' user @ host
Nahradit volbu "ne", "požádat" nebo "ano". Uvědomte si, že kolem této proměnné a jejích nastavení existují jednorázové citace. Nahraďte také adresu host @ host s uživatelským jménem a názvem hostitele serveru, ke kterému se připojujete. Například:
ssh -o 'StrictHostKeyChecking zeptejte se' [email protected]
Blokované hostitele kvůli změněným klávesám
Pokud máte server, ke kterému se pokoušíte přistupovat a který již byl změněn, bude výchozí konfigurace OpenSSH zabránit jeho přístupu. Mohli byste změnit hodnotu StrictHostKeyChecking pro daného hostitele, ale to by nebylo zcela, důkladně paranoidně bezpečné, že? Namísto toho můžeme jednoduše odstranit hodnotu, která byla porušena, z našeho souboru known_hosts.
To je určitě ošklivá věc, kterou máte na obrazovce. Naštěstí, náš důvod pro to byl přeinstalovaný operační systém. Takže přiblížme linku, kterou potřebujeme.
Tam jedeme. Podívejte se, jak cituje soubor, který potřebujeme upravit? Dokonce nám dává číslo linky! Takže otevřete soubor v Nano:
Zde je náš útočný klíč v řádku 1. Vše, co musíme udělat, je stisknout klávesy Ctrl + K, aby se vystřihla celá řada.
To je mnohem lepší! Takže nyní stiskneme klávesy Ctrl + O, abychom soubor napsali (uložit), a pak Ctrl + X pro ukončení.
Nyní dostáváme příjemnou výzvu, na kterou můžeme jednoduše odpovědět "ano".
Vytváření nových klíčů hostitele
Pro záznam, není opravdu příliš velký důvod, proč byste měli vůbec změnit klíč vašeho hostitele, ale pokud jste někdy zjistili, že to potřebujete, můžete to udělat snadno.
Nejprve změňte příslušný systémový adresář:
cd / etc / ssh /
Obvykle se jedná o globální hostitelské klíče, ačkoli některé distribuce jsou umístěny jinde. V případě pochybností zkontrolujte dokumentaci!
Dále odstraníme všechny staré klíče.
sudo rm / etc / ssh / ssh_host_ *
Případně je můžete přesunout do bezpečného adresáře zálohování. Jen myšlenka!
Poté můžeme říci serveru OpenSSH, aby se znovu konfiguroval:
sudo dpkg - změňte konfiguraci openssh serveru
Během vytvoření nového klíče se zobrazí výzva. Ta-da!
Nyní, když víte, jak SSH funguje trochu lépe, měli byste se dostat ze silných míst. Označení "Vzdálený identifikátor hostitele se změnilo" varování / chyba je něco, co hodí spoustu uživatelů, dokonce i ty, kteří jsou obeznámeni s příkazovým řádkem.
.