Napriek tomu, že sme napísali túto príručku s Linuxom, toto sa môže vzťahovať aj na OpenSSH v systémoch Mac OS X a Windows 7 cez Cygwin.
Prečo je to bezpečné
Spomenuli sme mnohokrát, ako SSH je skvelý spôsob, ako bezpečne spojiť a tunelovať údaje z jedného miesta do druhého. Pozrime sa na krátky pohľad na to, ako fungujú veci, aby ste získali lepšiu predstavu, prečo sa niekedy môžu veci diviť.
Ak premýšľame o našom procese pripojenia ako pošty, potom pomocou FTP a Telnet a podobne nie je ako použitie štandardných poštových obálok. Je to skôr používanie pohľadníc. Ak sa niekto stane v strede, uvidí všetky informácie vrátane adries oboch korešpondentov a odoslaného používateľského mena a hesla. Môžu potom zmeniť správu, uchovávať informácie rovnaké a zosobňovať jedného korešpondenta alebo druhého. Toto je známe ako útok typu "man-in-the-middle" a nielen to ohrozuje váš účet, ale spochybňuje každú odoslanú správu a prijatý súbor. Nemôžete si byť istí, či hovoríte s odosielateľom alebo nie, a dokonca aj keď ste, nemôžete si byť istí, že nikto nevidí všetko odvtedy.
Teraz sa pozrime na šifrovanie SSL, čo robí HTTP bezpečnejším. Tu máme poštovú adresu, ktorá spracúva korešpondenciu, ktorá kontroluje, či je váš príjemca ten, kto tvrdí, že je, a má zákony na ochranu vašej pošty pred tým, než sa pozrie. Celkovo je to celkom bezpečné a ústredný orgán - Verisign je jeden, pre náš príklad HTTPS - ubezpečuje sa, že osoba, ktorej posielate poštu, kontroluje. Robia to tým, že nepovoľujú pohľadnice (nezašifrované poverenia); namiesto toho povoľujú skutočné obálky.
S vysvetlením tak dlho, ako to je, myslíme, že tam budeme prerušovať. Ak máte nejaký ďalší pohľad, môžete sa samozrejme rozprávať v komentároch. Pre túto chvíľu sa pozrime na najdôležitejšiu funkciu SSH, autentifikáciu hostiteľa.
Hostiteľské klávesy
Hostiteľská autentifikácia je v podstate tá časť, v ktorej dôveruje niekto, kto má dôveru, obálku (zapečatený magickou matematikou) a potvrdzuje adresu príjemcu. Je to docela podrobný popis adresy a je založený na nejakej komplikovanej matematike, ktorú práve preskočíme. Z toho však treba odstrániť niekoľko dôležitých vecí:
- Keďže neexistuje ústredný orgán, skutočná bezpečnosť spočíva v kľúčoch hostiteľa, verejných kľúčoch a súkromných kľúčoch. (Tieto dva posledné kľúče sú nakonfigurované, keď máte prístup k systému.)
- Zvyčajne sa pri pripájaní k inému počítaču prostredníctvom protokolu SSH ukladá kľúč hostiteľa. Týmto sa budúce opatrenia rýchlejšie (alebo menej verbálne).
- Ak sa zmení kľúč hostiteľa, budete s najväčšou pravdepodobnosťou upozornení a mali by ste byť opatrní!
Pretože kľúč hosta sa používa pred autentifikáciou na určenie totožnosti SSH servera, mali by ste skontrolovať kľúč pred pripojením. Uvidíte potvrdzovacie dialógové okno, ako je uvedené nižšie.
Kontrola kľúča hostiteľa systému
Existujú 4 typy druhov šifrovacích algoritmov, ktoré sa používajú na vytváranie kľúčov, ale predvolené pre OpenSSH od začiatku tohto roka je ECDSA (s niektorými dobrými dôvodmi). Zameriavame sa na to dnes.Tu je príkaz, ktorý môžete spustiť na serveri SSH, ku ktorému máte prístup:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Váš výstup by mal vrátiť niečo takéto:
256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub
Prvým číslom je dĺžka kľúča, potom kľúč samotný a nakoniec máte súbor, ktorý je uložený. Porovnajte strednú časť s tým, čo sa zobrazuje, keď sa zobrazí výzva na vzdialené prihlásenie. Mal by sa zhodovať a vy ste všetci pripravení. Ak tomu tak nie je, potom sa môže stať niečo iné.
Môžete si pozrieť všetky hostiteľské počítače, ktoré ste pripojili cez SSH, a pozrieť sa na súbor known_hosts. Zvyčajne sa nachádza na adrese:
~/.ssh/known_hosts
Môžete ho otvoriť v akomkoľvek textovom editore. Ak sa pozriete, skúste venovať pozornosť tomu, ako sú uložené kľúče. Sú uložené s názvom (alebo webovou adresou) hostiteľského počítača a jeho adresou IP.
Zmena kľúčov hostiteľa a problémov
Existuje niekoľko dôvodov, prečo sa zmenili hostiteľské kľúče, alebo sa nezhodujú s tým, čo sa prihlásilo do vášho súboru known_hosts.
- Systém bol opätovne nainštalovaný / nakonfigurovaný.
- Kľúče hostiteľa boli ručne zmenené v dôsledku bezpečnostných protokolov.
- Server OpenSSH bol aktualizovaný a používa rôzne štandardy kvôli bezpečnostným problémom.
- Zmena IP alebo DNS sa zmenila. Často to znamená, že sa snažíte pristupovať k inému počítaču.
- Systém bol kompromitovaný nejakým spôsobom tak, že kľúč hostiteľa sa zmenil.
Problém je s najväčšou pravdepodobnosťou jedným z prvých troch a túto zmenu môžete ignorovať. Ak sa zmena prenájmu IP / DNS zmenila, môže sa vyskytnúť problém so serverom a môže byť smerovaný na iný počítač. Ak si nie ste istí, prečo je dôvodom zmeny, mali by ste pravdepodobne predpokladať, že je to posledná v zozname.
Ako OpenSSH zachytáva neznámych hostiteľov
V závislosti od vašej konfigurácie môžu pripojenia SSH s neznámymi hostiteľmi (ktorých kľúče ešte nie sú vo vašom súbore known_hosts) môžu prejsť tromi spôsobmi.
- StrictHostKeyChecking je nastavené na nie; OpenSSH sa automaticky pripája k akémukoľvek SSH serveru bez ohľadu na stav kľúča hostiteľa. Toto je neisté a neodporúča sa, s výnimkou prípadov, keď pridáte po preinštalovaní operačného systému veľké množstvo hostiteľov, a potom ich budete môcť zmeniť.
- StrictHostKeyChecking sa nastaví na otázku; OpenSSH vám ukáže nové kľúče hostiteľa a pred ich pridaním požiada o potvrdenie. Zabráni tomu, aby sa pripojenia nezmenili na zmenené klávesy hostiteľa. Toto je predvolené nastavenie.
- StrictHostKeyChecking je nastavené na áno; Opak "nie" to zabráni pripojeniu k akémukoľvek hostiteľovi, ktorý ešte nie je prítomný vo vašom súbore known_hosts.
Túto premennú môžete jednoducho zmeniť na príkazovom riadku pomocou nasledujúceho modelu:
ssh -o 'StrictHostKeyChecking [option]' user@host
Nahradiť možnosť s možnosťou "nie", "požiadať" alebo "áno". Uvedomte si, že v okolí tejto premennej a jej nastavenia existujú jednorazové cenové ponuky. Tiež nahradiť user @ host s používateľským menom a názvom hostiteľa servera, ku ktorému sa pripájate. Napríklad:
ssh -o 'StrictHostKeyChecking ask' [email protected]
Zablokované hostiteľské počítače v dôsledku zmenených kľúčov
Ak máte server, ku ktorému sa pokúšate pristupovať a jeho kľúč sa už zmenil, predvolená konfigurácia OpenSSH vám zabráni v prístupe k nemu. Môžete zmeniť hodnotu StrictHostKeyChecking pre daného hostiteľa, ale to by nebolo úplne dôkladne paranoidne bezpečné, že? Namiesto toho môžeme jednoducho odstrániť chybu z nášho súboru known_hosts.
Teraz dostávame peknú výzvu, na ktorú môžeme jednoducho odpovedať "áno".
Vytváranie nových kľúčov hostiteľa
Pre záznam, naozaj nie je príliš veľa dôvodu, aby ste zmenili kľúč hostiteľa vôbec, ale ak ste niekedy zistili potrebu, môžete to urobiť ľahko.
Najprv prejdite na príslušný systémový adresár:
cd /etc/ssh/
Toto je zvyčajne miesto, kde sa nachádzajú globálne hostiteľské kľúče, hoci niektoré distribúcie ich majú umiestniť inde. V prípade pochybností skontrolujte dokumentáciu!
Potom odstránime všetky staré kľúče.
sudo rm /etc/ssh/ssh_host_*
Prípadne ich môžete presunúť do bezpečného adresára zálohovania. Iba myšlienka!
Potom môžeme povedať, server OpenSSH, aby sa prekonfiguroval:
sudo dpkg-reconfigure openssh-server
Keď počítač vytvorí nové kľúče, zobrazí sa výzva. Ta-da!
Teraz, keď viete, ako SSH funguje trochu lepšie, mali by ste byť schopní dostať sa z ťažkých miest. Označenie "Vzdialená identifikácia hostiteľa sa zmenila" varovanie / chyba je niečo, čo hodí veľa užívateľov preč, dokonca aj tých, ktorí sú oboznámení s príkazovým riadkom.
Pre bonusové body môžete zistiť, ako môžete vzdialene kopírovať súbory cez SSH bez zadania hesla. Tu sa dozviete trochu viac o iných druhoch šifrovacích algoritmov ao tom, ako používať kľúčové súbory na zvýšenie bezpečnosti.