Aflați ins și out of OpenSSH pe PC-ul Linux
Am apreciat virtuțile SSH de nenumărate ori, atât pentru securitate, cât și pentru accesul la distanță. Să aruncăm o privire asupra serverului în sine, a unor aspecte importante legate de "întreținere" și a unor ciudățenii care pot adăuga turbulențe unei călătorii fără probleme.
În timp ce am scris acest ghid cu Linux în minte, acest lucru se poate aplica și pentru OpenSSH în Mac OS X și Windows 7 prin Cygwin.
De ce este sigur
Am menționat de mai multe ori cum SSH este o modalitate excelentă de a conecta în siguranță și tunel date de la un punct la altul. Să aruncăm o scurtă privire asupra modului în care lucrurile funcționează, astfel încât să aveți o idee mai bună de ce lucrurile pot deveni ciudate uneori.
Când ne hotărâm să inițiem o conexiune la un alt computer, folosim adesea protocoale ușor de utilizat. Telnet și FTP vin în minte. Trimiteți informații către un server de la distanță și apoi primim confirmări în legătură cu conexiunea noastră. Pentru a stabili un anumit tip de siguranță, aceste protocoale folosesc adesea combinații de nume de utilizator și parole. Asta înseamnă că sunt complet siguri, nu? Gresit!
Dacă ne gândim la procesul nostru de conectare ca și poștă, atunci folosind FTP și Telnet și altele similare nu este ca și cum ați folosi plicurile de corespondență standard. Este mai mult să folosiți cărți poștale. Dacă cineva se întâmplă să pară în mijloc, ei pot vedea toate informațiile, inclusiv adresele celor doi corespondenți și numele de utilizator și parola trimise. Ei pot schimba apoi mesajul, păstrând aceleași informații și impersonalizează un corespondent sau altul. Acest lucru este cunoscut sub numele de atac "om-in-mijloc", și nu numai compromite contul dvs., dar pune sub semnul întrebării fiecare mesaj trimis și fișierul primit. Nu poți fi sigur dacă vorbești cu expeditorul sau nu și chiar dacă ești, nu poți fi sigur că nimeni nu se uită la tot.
Acum, să examinăm criptarea SSL, genul care face ca HTTP să fie mai sigur. Aici avem un oficiu poștal care se ocupă de corespondență, care verifică dacă destinatarul este persoana pe care o susține că este și are legi care protejează corespondența dvs. de la a fi examinată. Este mai sigur în ansamblu, iar autoritatea centrală - Verisign este una, pentru exemplul nostru HTTPS - vă asigură că persoana pe care o trimiteți e-mailuri este verificată. Ei fac acest lucru prin a nu permite cărți poștale (acreditări necriptate); în schimb, ei impun plicuri reale.
În cele din urmă, să ne uităm la SSH. Aici, configurația este puțin diferită. Nu avem aici un autentificator central, dar lucrurile sunt încă sigure. Asta pentru că trimiteți scrisori unei persoane a cărei adresă deja o cunoașteți - să zicem, vorbind cu ei la telefon - și folosiți niște matematică cu adevărat fantezie pentru a vă înscrie plicul. Îi dai fratelui tău, prietenei, tatei sau fiicei tale să o primească la adresă și numai dacă meciurile matematice ale destinatarului presupun că adresa este ceea ce ar trebui să fie. Apoi, veți primi o scrisoare înapoi, de asemenea protejată de ochii curioși de această minunată matematică. În cele din urmă, îți trimiți acreditările într-un alt plic alcătuit din punct de vedere algoritmic, la destinație. Dacă matematica nu se potrivește, putem presupune că destinatarul inițial sa mutat și trebuie să-i confirmăm din nou adresa.
Cu explicația atâta timp cât este, credem că o vom tăia acolo. Dacă aveți mai multe informații, nu ezitați să discutați în cadrul comentariilor, desigur. Pentru moment, totuși, să examinăm cea mai relevantă caracteristică a SSH, autentificarea gazdei.
Taste Host
Gestionarea gazdă este, în esență, partea în care cineva în care aveți încredere preia plicul (sigilat cu matematică magică) și confirmă adresa destinatarului. Este o descriere destul de detaliată a adresei și se bazează pe unele matematici complicate pe care le vom trece imediat. Există câteva lucruri importante de luat în seamă:
- Deoarece nu există autoritate centrală, securitatea reală se află în cheia gazdă, cheile publice și cheile private. (Aceste două taste sunt configurate atunci când vi se oferă acces la sistem.)
- De obicei, când vă conectați la un alt computer prin SSH, cheia gazdă este stocată. Aceasta face ca acțiunile viitoare să fie mai rapide (sau mai puțin verbose).
- Dacă cheia gazdă se modifică, probabil că veți fi alertat și ar trebui să fiți precaut!
Deoarece cheia gazdă este utilizată înainte de autentificare pentru a stabili identitatea serverului SSH, trebuie să verificați cheia înainte de a vă conecta. Veți vedea un dialog de confirmare ca mai jos.
Nu trebuie să vă faceți griji, totuși! Adesea, atunci când securitatea este o preocupare, va exista un loc special pe care cheia gazdă (amprenta ECDSA de mai sus) poate fi confirmată. Într-o afacere exclusiv online, adesea va fi pe un site securizat numai pentru conectare. S-ar putea să trebuiască să telefonați departamentul IT pentru a confirma această tastă pe telefon. Am auzit chiar și despre unele locuri unde cheia este pe insigna dvs. de lucru sau pe lista specială "Numere de urgență". Și, dacă aveți acces fizic la mașina țintă, puteți verifica și dumneavoastră!
Verificarea cheii gazdă a sistemului
Există 4 tipuri de algoritmi de criptare folosiți pentru a face chei, dar implicit pentru OpenSSH de la începutul acestui an este ECDSA (cu unele motive bune). Ne vom concentra pe asta astăzi. Iată comanda pe care puteți rula pe serverul SSH la care aveți acces:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Rezultatul dvs. ar trebui să returneze așa ceva:
256 ca: 62: ea: 7c: e4: 9e: 2e: a6: 94: 20: 11: db: 9c: 78: c3: 4c /etc/ssh/ssh_host_ecdsa_key.pub
Primul număr este lungimea de biți a cheii, apoi este cheia în sine și, în sfârșit, aveți fișierul în care este stocată. Comparați partea intermediară cu ceea ce vedeți când vi se solicită să vă conectați de la distanță. Ar trebui să se potrivească și sunteți toți pregătiți. Dacă nu, atunci se poate întâmpla ceva altceva.
Puteți vizualiza toate gazdele la care v-ați conectat prin SSH, analizând fișierul dvs. known_hosts. De obicei se află la:
~ / .Ssh / known_hosts
Puteți să o deschideți în orice editor de text. Dacă te uiți, încercați să acordați atenție modului în care sunt stocate cheile. Sunt stocate cu numele computerului gazdă (sau cu adresa web) și cu adresa IP a acestuia.
Schimbarea cheilor gazdă și a problemelor
Există câteva motive pentru care cheile gazdă se modifică sau nu se potrivesc cu ceea ce este înregistrat în fișierul dvs. known_hosts.
- Sistemul a fost reinstalat / reconfigurat.
- Tastele gazdă au fost modificate manual din cauza protocoalelor de securitate.
- Serverul OpenSSH a fost actualizat și utilizează standarde diferite datorită problemelor de securitate.
- Transferul IP sau DNS a fost schimbat. Aceasta adesea înseamnă că încercați să accesați un alt calculator.
- Sistemul a fost compromis într-un fel încât cheia gazdă sa schimbat.
Cel mai probabil, problema este una dintre primele trei și puteți ignora schimbarea. Dacă se schimbă contractul de leasing IP / DNS, este posibil să existe o problemă cu serverul și este posibil să vi se trimită la o altă mașină. Dacă nu sunteți sigur care este motivul schimbării, ar trebui probabil să presupuneți că este ultima din listă.
Cum OpenSSH se ocupă de gazdele necunoscute
OpenSSH are o setare pentru modul în care se ocupă de gazde necunoscute, reflectate în variabila "StrictHostKeyChecking" (fără ghilimele).
În funcție de configurație, conexiunile SSH cu gazde necunoscute (ale căror chei nu se află deja în fișierul dvs. known_hosts) pot merge în trei moduri.
- StrictHostKeyChecking este setat la nu; OpenSSH se va conecta automat la orice server SSH indiferent de starea cheii gazdă. Acest lucru este nesigur și nu este recomandat, cu excepția cazului în care adăugați o grămadă de gazde după reinstalarea sistemului de operare, după care o veți schimba înapoi.
- StrictHostKeyChecking este setat să ceară; OpenSSH vă va arăta chei noi pentru gazdă și vă va solicita confirmarea înainte de a le adăuga. Acesta va împiedica conexiunile să treacă la cheile de gazdă modificate. Acesta este setarea implicită.
- StrictHostKeyChecking este setat la da; Opusul "nu", acest lucru vă va împiedica să vă conectați la orice gazdă care nu există deja în fișierul dvs. known_hosts.
Puteți modifica cu ușurință această variabilă pe linia de comandă utilizând următoarea paradigmă:
ssh -o 'StrictHostKeyChecking [opțiune]' user @ host
Înlocuiți [opțiunea] cu "nu", "întrebați" sau "da". Aveți grijă să aveți în jur de o singură citare în jurul acestei variabile și setarea acesteia. De asemenea, înlocuiți user @ host cu numele de utilizator și numele de gazdă al serverului la care vă conectați. De exemplu:
ssh -o 'StrictHostKeyChecking întreabă' [email protected]
Gazdele blocate din cauza modificării cheilor
Dacă aveți un server pe care încercați să-l accesați, dacă cheia sa schimbat deja, configurația implicită OpenSSH vă va împiedica să îl accesați. Ai putea schimba valoarea StrictHostKeyChecking pentru acea gazdă, dar asta nu ar fi în întregime, complet, paranoic sigur, nu-i așa? În schimb, putem elimina valoarea de ofensator din fișierul nostru known_hosts.
Este cu siguranță un lucru urât pe ecran. Din fericire, motivul pentru acest lucru a fost un OS reinstalat. Deci, să mărim linia de care avem nevoie.
Acolo mergem. Vedeți cum citează fișierul pe care trebuie să îl editați? Chiar ne dă numărul liniei! Deci, hai să deschidem dosarul în Nano:
Iată cheia de ofensator, în linia 1. Tot ce trebuie să faceți este să apăsați Ctrl + K pentru a decupa întreaga linie.
Asta-i mult mai bine! Deci, acum apăsăm Ctrl + O pentru a scrie (salva) fișierul, apoi Ctrl + X pentru a ieși.
Acum avem un prompt frumos, la care putem răspunde pur și simplu cu "da".
Crearea de noi taste gazdă
Pentru înregistrare, într-adevăr nu există prea multe motive pentru a vă schimba cheia gazdă, dar dacă veți găsi vreodată nevoia, puteți face ușor.
În primul rând, treceți la directorul sistem corespunzător:
cd / etc / ssh /
Aceasta este de obicei în cazul în care cheile globale gazdă sunt, deși unele distros au le plasate în altă parte. Când aveți dubii, verificați documentația!
În continuare, vom șterge toate cheile vechi.
sudo rm / etc / ssh / ssh_host_ *
Alternativ, este posibil să doriți să le mutați într-un director de rezervă sigur. Doar un gand!
Apoi, putem spune serverului OpenSSH să se reconfigureze:
sudo dpkg-reconfigura openssh-server
Veți vedea o solicitare în timp ce computerul își creează noile chei. Ta-da!
Acum că știi cum SSH funcționează puțin mai bine, ar trebui să te poți scoate din locurile grele. "Identificarea gazdei la distanță a schimbat" avertisment / eroare este ceva care aruncă o mulțime de utilizatori off, chiar și cei care sunt familiarizați cu linia de comandă.
.