Nors mes tai parašėme vadovaudamiesi "Linux", tai taip pat gali būti taikoma "OpenSSH" operacinei sistemai "Mac OS X" ir "Windows 7" per "Cygwin".
Kodėl tai saugu
Daug kartų paminėjome, kaip SSH yra puikus būdas saugiai prisijungti ir kurti duomenis iš vieno taško į kitą. Pažiūrėkime, kaip viskas veikia, kad galėtumėte geriau suprasti, kodėl kartais tai gali būti keista.
Jei mes galvojame apie mūsų prisijungimo procesą kaip el. Laišką, tada naudojant FTP, "Telnet" ir pan. Panašus nepanaudojamas standartinių pašto vokų. Tai labiau tarsi naudoti atvirukus. Jei kas nors atsitiks viduryje, jie gali matyti visą informaciją, įskaitant abiejų korespondentų adresus ir išsiųstą vartotojo vardą bei slaptažodį. Tada jie gali pakeisti pranešimą, išlaikyti tą pačią informaciją ir įtvirtinti vieną korespondentą ar kitą. Tai vadinama "žmogus-a-the-middle" atakoje, ir tai ne tik kelia grėsmę jūsų paskyrai, bet ir kelia abejonių dėl kiekvienos siunčiamos ir gautos žinutės. Negalite būti tikri, ar kalbate su siuntėju, ar ne, ir net jei esate, negalite būti tikri, kad niekas nežiūrės į viską, kas yra tarp jų.
Dabar pažvelkime į SSL šifravimą, tokį, kuris užtikrina HTTP saugumą. Čia mes turime pašto tarnybą, kuri tvarko korespondenciją, kas tikrina, ar jūsų gavėjas yra tas, kurį jis teigia esąs, ir turi įstatymus, apsaugančius jūsų paštą. Tai yra labiau saugu, o centrinė institucija - "Verisign" yra viena, mūsų HTTPS pavyzdžiu - užtikrina, kad asmuo, kuriam siunčiate paštą, patikrintų. Jie tai daro neleidžiant atvirukuose (nekoduoti įgaliojimai); vietoj to jie įgalioja tikruosius vokus.
Su tokiu paaiškinimu, mes manome, kad mes jį iškirpti. Žinoma, jei norite sužinoti daugiau, pasikalbėkite su komentarais. Tačiau dabar pažvelkime į labiausiai tinkamą SSH, priimančiosios autentifikavimo funkciją.
Host raktai
Kompiuterio autentifikavimas iš esmės yra ta dalis, kur tavo pasitikėjimas paima voką (uždengtą magija matematika) ir patvirtina gavėjo adresą. Tai gana detalus adreso aprašymas, ir jis pagrįstas tam tikra sudėtinga matematika, kurią mes tiesiog praleidžiame. Yra keletas svarbių dalykų, kuriuos reikia pašalinti, nors:
- Kadangi nėra centrinės valdžios institucijos, tikrąjį saugumą sudaro pagrindinis raktas, viešieji raktiniai žodžiai ir privati raktų funkcija. (Šie du raktai yra sukonfigūruojami, kai jums suteikiama prieiga prie sistemos.)
- Paprastai, kai prisijungiate prie kito kompiuterio per SSH, pagrindinis raktas yra saugomas. Dėl to būsimi veiksmai bus greitesni (ar mažiau verbūs).
- Jei priimančiojo raktas pasikeis, greičiausiai bus įspėtas, ir jūs turite būti atsargūs!
Kadangi priimančiojo raktas naudojamas prieš autentifikavimą, norint nustatyti SSH serverio tapatybę, prieš įsijungdami būtinai patikrinkite raktą. Pamatysite patvirtinimo dialogą, aprašytą toliau.
Jūsų sistemos pagrindinio rakto patikrinimas
Yra keturių tipų šifravimo algoritmai, naudojami klavišams atlikti, tačiau "OpenSSH" numatytasis variantas nuo šių metų pradžios yra ECDSA (su tam tikromis priežastimis). Šiandien mes sutelksime dėmesį į tą.Štai komanda, kurią galite paleisti SSH serveryje, prie kurio galite prisijungti:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Jūsų išvestis turėtų kažką panašaus:
256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub
Pirmasis numeris yra rakto bitų ilgis, tada pats raktas, ir galiausiai yra failas, kuriame jis saugomas. Palyginkite šią vidurinę dalį su tuo, ką matote, kai raginama prisijungti nuotoliniu būdu. Tai turėtų atitikti, ir jūs visi esate pasiruošę. Jei taip nėra, tai gali įvykti kažkas kitas.
Galite peržiūrėti visus kompiuterius, su kuriais esate prisijungę per SSH, peržiūrėdami savo failą known_hosts. Paprastai jis yra:
~/.ssh/known_hosts
Galite jį atidaryti bet kuriame teksto redaktoriuje. Jei atrodysite, pabandykite atkreipti dėmesį į tai, kaip raktai saugomi. Jie saugomi su pagrindinio kompiuterio vardu (arba žiniatinklio adresu) ir jo IP adresu.
Keisti kompiuterio raktus ir problemas
Yra keletas priežasčių, kodėl priimančios raktos pasikeičia arba jie nesutampa su tuo, kas yra prisijungusi prie failo known_hosts.
- Sistema buvo iš naujo įdiegta / iš naujo konfigūruojama.
- Pagrindiniai raktai buvo pakeisti rankiniu būdu dėl saugumo protokolų.
- Dėl saugumo problemų "OpenSSH" serveris atnaujintas ir naudojasi skirtingais standartais.
- Pakeista IP ir DNS nuoma. Tai dažnai reiškia, kad bandote pasiekti kitą kompiuterį.
- Tam tikru mastu sistema buvo sugadinta taip, kad pagrindinis raktas pasikeitė.
Labiausiai tikėtina, kad klausimas yra vienas iš pirmųjų trijų, ir jūs galite ignoruoti pakeitimą. Jei IP / DNS nuoma pasikeitė, tai gali kilti serverio problema, todėl gali būti nukreipta į kitą įrenginį. Jei nesate tikri, kokia yra pakeitimo priežastis, turėtumėte tikriausiai manyti, kad tai yra paskutinis sąraše.
Kaip "OpenSSH" tvarko nežinomus kompiuterius
Priklausomai nuo jūsų konfigūracijos, SSH ryšiai su nežinomomis šeimos narėmis (kurių raktų dar nėra jūsų žinomame_hosts faile) gali būti trimis būdais.
- "StrictHostKeyChecking" yra nustatyta ne; OpenSSH automatiškai prisijungs prie bet kurio SSH serverio, nepriklausomai nuo pagrindinio kompiuterio raktų būsenos. Tai yra nesaugus ir nerekomenduojamas, išskyrus atvejus, kai iš naujo įdiekite savo operacinę sistemą pridedate daugybę kompiuterių, po kurių jį pakeisite.
- StrictHostKeyChecking nustatytas klausti; "OpenSSH" parodys naujus pagrindinius raktus ir paprašys patvirtinimo prieš jas pridėdamas. Tai leis išvengti jungčių, kai vyksta keisti pagrindinius raktus. Tai pagal nutylėjimą.
- StrictHostKeyChecking nustatytas taip; Priešingai nei "ne", tai neleis jums prisijungti prie bet kurio kompiuterio, kuris dar nėra jūsų žinomame failo "known_hosts".
Jūs galite lengvai pakeisti šį kintamąjį komandinę eilutę naudodami šią paradigmą:
ssh -o 'StrictHostKeyChecking [option]' user@host
Pakeiskite [parinktį] su "ne", "paklauskite" arba "taip". Atkreipkite dėmesį, kad šis kintamasis ir jo nustatymas yra vienišas tiesias kabučių. Taip pat pakeiskite vartotojo @ host vardą ir serverio, prie kurio prisijungiate, pavadinimą. Pavyzdžiui:
ssh -o 'StrictHostKeyChecking ask' [email protected]
Užblokuoti šeimininkai dėl pakeistų klavišų
Jei turite serverį, kuriuo bandote pasiekti tą raktą, kurio raktas jau pasikeitė, numatytoji "OpenSSH" konfigūracija neleis jums pasiekti. Galėtumėte pakeisti šio serverio "StrictHostKeyChecking" vertę, tačiau tai nebūtų visiškai, kruopščiai, paranojiškai saugi, ar tai būtų? Vietoj to mes galime paprasčiausiai pašalinti pažeidžiamą vertę iš failo known_hosts.
Dabar mes gauname malonų raginimą, į kurį mes galime tiesiog atsakyti "taip".
Naujų pagrindinių rakto kūrimas
Norėdami įrašyti, iš tikrųjų nėra per daug priežasties, kodėl jūs galite pakeisti pagrindinį raktą, bet jei jūs kada nors susirasite poreikį, galite tai padaryti lengvai.
Pirma, pakeiskite atitinkamą sistemos katalogą:
cd /etc/ssh/
Tai paprastai ten, kur yra globaliniai pagrindiniai raktai, nors kai kurie distros yra kitur. Jei kyla abejonių, patikrinkite savo dokumentus!
Toliau pašalinsime visus senus raktus.
sudo rm /etc/ssh/ssh_host_*
Arba galbūt norėsite perkelti jas į saugų atsarginių kopijų katalogą. Tiesiog mintis!
Tada mes galime pasakyti, kad "OpenSSH" serveris pertvarko save:
sudo dpkg-reconfigure openssh-server
Pamatysite raginimą, kol jūsų kompiuteris sukuria naujus raktus. Ta da!
Dabar, kai žinote, kaip SSH veikia šiek tiek geriau, turėtumėte sugebėti atsikratyti sunkumų. Įspėjimas / klaida "Nuotolinis kompiuterio identifikavimas pasikeitė" - tai kažkas, išmeta daug vartotojų, netgi tie, kurie yra susipažinę su komandų eilute.
Dėl bonusinių taškų galite sužinoti, kaip nuotoliniu būdu kopijuoti failus per SSH neužvedant slaptažodžio. Čia sužinosite šiek tiek daugiau apie kitus šifravimo algoritmus ir apie tai, kaip naudoti pagrindinius failus papildomam saugumui.