Am înălțat virtuțile SSH de mai multe ori, atât pentru securitate, cât și pentru acces la distanță. Să aruncăm o privire asupra serverului în sine, a unor aspecte importante de „întreținere” și a unor ciudățenii care pot adăuga turbulențe unei călătorii altfel netede.
Deși am scris acest ghid având în vedere Linux, acest lucru se poate aplica și OpenSSH în Mac OS X și Windows 7 prin Cygwin .
De ce este sigur
Am menționat de multe ori că SSH este o modalitate excelentă de a conecta în siguranță și de a transfera date dintr-un punct în altul. Să aruncăm o scurtă privire asupra modului în care funcționează lucrurile, astfel încât să aveți o idee mai bună despre motivul pentru care lucrurile pot deveni uneori ciudate.
Când decidem să inițiem o conexiune la un alt computer, folosim adesea protocoale cu care sunt ușor de lucrat. Telnet și FTP vin în minte. Trimitem informații către un server la distanță și apoi primim confirmarea în legătură cu conexiunea noastră. Pentru a stabili un anumit tip de siguranță, aceste protocoale utilizează adesea combinații de nume de utilizator și parolă. Asta înseamnă că sunt total siguri, nu? Gresit!
Dacă ne gândim la procesul nostru de conectare ca la poștă, atunci utilizarea FTP și Telnet și altele asemenea nu este ca utilizarea plicurilor de poștă standard. Este mai mult ca folosirea cărților poștale. Dacă cineva pășește în mijloc, poate vedea toate informațiile, inclusiv adresele ambilor corespondenți și numele de utilizator și parola trimise. Aceștia pot apoi să schimbe mesajul, păstrând informațiile la fel și să suplinească un corespondent sau altul. Acest lucru este cunoscut sub numele de atac „om în mijloc” și nu numai că vă compromite contul, dar pune în discuție fiecare mesaj trimis și fișierul primit. Nu poți fi sigur dacă vorbești sau nu cu expeditorul și, chiar dacă ești, nu poți fi sigur că nimeni nu privește totul din mijloc.
Acum, să ne uităm la criptarea SSL, genul care face HTTP mai sigur. Aici avem un oficiu poștal care se ocupă de corespondență, care verifică dacă destinatarul dvs. este cine pretinde că este și are legi care vă protejează e-mailul. În general, este mai sigur, iar autoritatea centrală - Verisign este una, pentru exemplul nostru HTTPS - se asigură că persoana căreia i-ați trimis mesaje verifică. Acestea fac acest lucru nepermițând cărți poștale (acreditări necriptate); în schimb, acestea mandatează plicuri reale.
În cele din urmă, să ne uităm la SSH. Aici, configurarea este puțin diferită. Nu avem un autentificator central aici, dar lucrurile sunt încă sigure. Acest lucru se datorează faptului că trimiteți scrisori către cineva a cărui adresă o cunoașteți deja - să zicem, vorbind cu ei la telefon - și folosiți niște matematici foarte fanteziste pentru a vă semna plicul. Îl predai fratelui tău, prietenei, tatălui sau fiicei tale să-l ducă la adresă și numai dacă potrivirile de matematică fanteziste ale destinatarului presupui că adresa este ceea ce ar trebui să fie. Apoi, primești o scrisoare înapoi, protejată și de ochii curioși de această matematică minunată. În cele din urmă, vă trimiteți acreditările într-un alt plic secret încântat algoritmic la destinație. Dacă matematica nu se potrivește, putem presupune că destinatarul inițial s-a mutat și trebuie să confirmăm din nou adresa.
Cu explicația atât 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 comentarii, desigur. Deocamdată, însă, să analizăm cea mai relevantă caracteristică a SSH, autentificarea gazdei.
Taste gazdă
Autentificarea gazdei este în esență partea în care cineva de încredere ia plicul (sigilat cu matematică magică) și confirmă adresa destinatarului dvs. Este o descriere destul de detaliată a adresei și se bazează pe niște matematici complicate pe care doar le vom trece peste. Cu toate acestea, există câteva lucruri importante de eliminat:
- Deoarece nu există autoritate centrală, securitatea reală stă în cheia gazdă, cheile publice și cheile private. (Aceste două ultime chei sunt configurate atunci când vi se oferă acces la sistem.)
- De obicei, atunci când vă conectați la un alt computer prin SSH, cheia gazdă este stocată. Acest lucru face ca acțiunile viitoare să fie mai rapide (sau mai puțin detaliate).
- Dacă cheia gazdă se schimbă, cel mai probabil vei fi alertat și ar trebui să fii precaut!
Deoarece cheia gazdă este utilizată înainte de autentificare pentru a stabili identitatea serverului SSH, ar trebui să fiți sigur că verificați cheia înainte de a vă conecta. Veți vedea un dialog de confirmare ca mai jos.
Totuși, nu ar trebui să vă faceți griji! Adesea, atunci când securitatea este o problemă, va exista un loc special în care cheia gazdă (amprenta ECDSA de mai sus) poate fi confirmată. În cadrul unor întreprinderi complet online, de multe ori se va face pe un site securizat de autentificare. Este posibil să trebuiască (sau să alegeți să!) Telefonați departamentului IT pentru a confirma această tastă prin telefon. Am auzit chiar de unele locuri în care cheia este pe insigna de lucru sau pe lista specială „Numere de urgență”. Și, dacă aveți acces fizic la mașina țintă, puteți verifica și dvs.!
Verificarea cheii gazdă a sistemului
Există 4 tipuri de tipuri de algoritmi de criptare folosite pentru realizarea cheilor, dar implicit pentru OpenSSH începând cu anul acesta este ECDSA ( cu câteva motive întemeiate ). Ne vom concentra asupra acesteia astăzi. Iată comanda pe care o 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 acea porțiune din mijloc 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 gata. Dacă nu, atunci s-ar putea întâmpla altceva.
Puteți vizualiza toate gazdele la care v-ați conectat prin SSH uitându-vă la fișierul cunoscut_hosts. De obicei se află la:
~ / .ssh / cunoscut_hosts
Puteți deschide acest lucru în orice editor de text. Dacă privești, încearcă să fii atent la modul în care sunt stocate cheile. Sunt stocate cu numele (sau adresa web) a computerului gazdă și adresa IP a acestuia.
Schimbarea tastelor gazdă și a problemelor
Există câteva motive pentru care cheile de gazdă se schimbă sau nu se potrivesc cu ceea ce este înregistrat în fișierul cunoscut_hosts.
- Sistemul a fost reinstalat / reconfigurat.
- Cheile gazdă au fost schimbate manual datorită protocoalelor de securitate.
- Serverul OpenSSH s-a actualizat și folosește standarde diferite din cauza problemelor de securitate.
- Contractul de închiriere IP sau DNS s-a schimbat. Aceasta înseamnă adesea că încercați să accesați un alt computer.
- Sistemul a fost compromis într-un fel, astfel încât cheia gazdă sa schimbat.
Cel mai probabil, problema este una dintre primele trei și puteți ignora schimbarea. Dacă contractul de închiriere IP / DNS s-a schimbat, atunci poate exista o problemă cu serverul și este posibil să fiți direcționat către o altă mașină. Dacă nu sunteți sigur care este motivul modificării, probabil că ar trebui să presupuneți că este ultima din listă.
Cum gestionează OpenSSH gazdele necunoscute
OpenSSH are o setare pentru modul în care gestionează gazdele necunoscute, reflectată în variabila „StrictHostKeyChecking” (fără ghilimele).
În funcție de configurația dvs., conexiunile SSH cu gazde necunoscute (ale căror chei nu se află deja în fișierul cunoscut_hosts) pot merge pe trei căi.
- StrictHostKeyChecking este setat la nr; OpenSSH se va conecta automat la orice server SSH, indiferent de starea cheii de gazdă. Acest lucru este nesigur și nu este recomandat, cu excepția cazului în care adăugați o grămadă de gazde după o reinstalare a sistemului dvs. de operare, după care îl veți schimba înapoi.
- StrictHostKeyChecking este setat să ceară; OpenSSH vă va arăta noi chei de gazdă și vă va cere confirmarea înainte de a le adăuga. Acesta va împiedica conexiunile să meargă la tastele gazdă modificate. Aceasta este valoarea implicită.
- StrictHostKeyChecking este setat la yes; Opusul „nu”, acest lucru vă va împiedica să vă conectați la orice gazdă care nu este deja prezentă în fișierul dvs. known_hosts.
Puteți schimba această variabilă cu ușurință pe linia de comandă utilizând următoarea paradigmă:
ssh -o 'StrictHostKeyChecking [option]' user @ host
Înlocuiți [option] cu „nu”, „întrebați” sau „da”. Rețineți că există ghilimele simple în jurul acestei variabile și a setării acesteia. Înlocuiți, de asemenea, user @ host cu numele de utilizator și numele gazdei serverului la care vă conectați. De exemplu:
ssh -o 'StrictHostKeyChecking ask' [email protected]
Gazde blocate din cauza tastelor modificate
Dacă aveți un server pe care încercați să-l accesați și care avea cheia deja modificată, configurația implicită OpenSSH vă va împiedica să accesați. Ați 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 pur și simplu valoarea jignitoare din fișierul nostru known_hosts.
Acesta este cu siguranță un lucru urât pe ecran. Din fericire, motivul nostru pentru acest lucru a fost un sistem de operare reinstalat. Deci, să mărim linia de care avem nevoie.
Iată-ne. Vedeți cum citează fișierul pe care trebuie să-l edităm? Ne oferă chiar numărul de linie! Deci, să deschidem fișierul în Nano:
Iată cheia noastră ofensatoare, în linia 1. Tot ce trebuie să facem este să apăsăm Ctrl + K pentru a tăia întreaga linie.
Asta-i mult mai bine! Deci, acum lovim Ctrl + O pentru a scrie (salva) fișierul, apoi Ctrl + X pentru a ieși.
Acum primim în schimb un prompt frumos, la care putem răspunde pur și simplu cu „da”.
Crearea de noi chei de gazdă
În concluzie, nu există un motiv prea mare pentru a vă schimba deloc cheia de gazdă, dar dacă veți găsi vreodată nevoia, o puteți face cu ușurință.
Mai întâi, treceți la directorul de sistem adecvat:
cd /etc/ssh/
De obicei, aici se află cheile de gazdă globale, deși unele distribuții le au plasate în altă parte. Când aveți dubii, verificați documentația!
Apoi, vom șterge toate tastele vechi.
sudo rm / etc / ssh / ssh_host_ *
Alternativ, poate doriți să le mutați într-un director de backup sigur. Doar un gand!
Apoi, putem spune serverului OpenSSH să se reconfigureze singur:
sudo dpkg-reconfigure openssh-server
Veți vedea o solicitare în timp ce computerul dvs. își creează noile chei. Ta-da!
Acum, că știi cum funcționează SSH puțin mai bine, ar trebui să poți ieși din locurile dificile. Avertismentul / eroarea „Identificarea gazdei la distanță s-a schimbat” este ceva care îi îndepărtează pe mulți utilizatori, chiar și cei care sunt familiarizați cu linia de comandă.
Pentru puncte bonus, puteți verifica Cum să copiați de la distanță fișiere pe SSH fără a introduce parola . Acolo, veți afla mai multe despre celelalte tipuri de algoritmi de criptare și despre cum să utilizați fișiere cheie pentru securitate suplimentară.