Iako smo napisali ovaj vodič uz pomoć Linuxa, to se može primijeniti i na OpenSSH u Mac OS X i Windows 7 putem Cygwina.
Zašto je sigurno
Mnogo smo puta spomenuli kako je SSH sjajan način za sigurno povezivanje i tuneliranje podataka s jedne točke u drugu. Uzmimo vrlo kratak uvid u to kako stvari funkcioniraju kako biste dobili bolju predodžbu zašto se stvari ponekad mogu činiti čudnim.
Ako mislimo na naš proces spajanja kao mail, onda korištenje FTP i Telnet i slično nije kao pomoću standardne mailing omotnice. To je više poput korištenja razglednica. Ako se netko usredotoči na sredinu, mogu vidjeti sve informacije, uključujući adrese oba dopisnika i korisničko ime i zaporku poslane. Zatim mogu promijeniti poruku, čuvati podatke istim, i predstavljati jedan dopisnik ili drugi. To je poznato kao napad "čovjek u sredini", a ne samo da to ugrožava vaš račun, ali dovodi u pitanje svaku primljenu poruku i zaprimljenu datoteku. Ne možete biti sigurni jeste li razgovarali s pošiljateljem ili ne, a čak i ako jeste, ne možete biti sigurni da nitko ne gleda sve između njih.
Pogledajmo sada SSL šifriranje, vrsta koja čini HTTP sigurnijima. Ovdje imamo poštansku službu koja obrađuje dopisivanje, koja provjerava je li vaš primatelj tko tvrdi da jest i ima zakone koji štite vašu poštu. Općenito je sigurnije, a središnja vlast - Verisign je jedan, za naš primjer HTTPS-a - osigurava da osoba koja šaljete poštu provjerava. To čine tako što ne dopuštaju razglednice (neispisane vjerodajnice); Umjesto toga, oni nalažu stvarne omotnice.
Uz objašnjenje koliko god to bilo, mislimo da ćemo ga rezati. Ako imate još više uvida, slobodno razgovarajte u komentarima, naravno. Za sada, ipak, pogledajmo najrelevantniju značajku SSH, autentifikaciju domaćina.
Tipke domaćina
Autentikacija host je u suštini dio u kojem je povjerljiva osoba preuzela omotnicu (zapečaćena čarobnim matematikom) i potvrđuje adresu primatelja. To je prilično detaljan opis adrese, a temelji se na nekoj složenoj matematici koju ćemo jednostavno preskočiti. Postoji nekoliko važnih stvari za oduzimanje toga, iako:
- Budući da ne postoji središnja vlast, stvarna sigurnost leži u ključu glavnog računala, javnim ključevima i privatnim ključevima. (Ova posljednja dva ključa konfigurirana su kada dobijete pristup sustavu.)
- Obično, kada se povežete s drugim računalom putem SSH, ključ glavnog računala je pohranjen. To čini buduće radnje brže (ili manje glomazne).
- Ako se ključ domaćina mijenja, najvjerojatnije ćete biti upozoreni i trebali biste biti oprezni!
Budući da se ključ za host koristi prije autentifikacije da bi se utvrdio identitet SSH poslužitelja, trebali biste provjeriti ključ prije nego se povežete. Vidjet ćete dijaloški okvir za potvrdu kao u nastavku.
Provjera ključa glavnog računala vašeg sustava
Postoje 4 vrste vrsta algoritama za šifriranje koji se koriste za izradu ključeva, no zadani je za OpenSSH od ranije ove godine ECDSA (s nekim dobrim razlozima). Danas ćemo se usredotočiti na to.Evo naredbe koju možete pokrenuti na SSH poslužitelju kojem imate pristup:
ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l
Vaš output bi trebao vratiti nešto ovako:
256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub
Prvi broj je bit duljina ključa, a zatim je ključ i konačno imate datoteku u kojoj je pohranjena. Usporedite taj srednji dio s onim što vidite kada se od vas zatraži prijava na daljinu. Trebao bi se podudarati, a vi ste svi postavljeni. Ako ne, onda se može dogoditi nešto drugo.
Možete pregledati sve hostove s kojima ste se povezali putem SSH-a proučavanjem datoteke known_hosts. Obično se nalazi na adresi:
~/.ssh/known_hosts
Možete ga otvoriti u bilo kojem uređivaču teksta. Ako pogledate, pokušajte obratiti pozornost na to kako se ključevi pohranjuju. Pohranjene su uz ime računala (ili web adresu) i njegovu IP adresu.
Promjena ključeva i problema domaćina
Postoji nekoliko razloga zbog kojih se ključevi domaćina mijenjaju ili ne odgovaraju onome što je prijavljeno u datoteci known_hosts.
- Sustav je ponovno instaliran / ponovo konfiguriran.
- Ključevi glavnog računala ručno su izmijenjeni zbog sigurnosnih protokola.
- OpenSSH poslužitelj ažurira i koristi različite standarde zbog sigurnosnih problema.
- IP ili DNS zakup promijenjen. To često znači da pokušavate pristupiti drugom računalu.
- Sustav je bio na neki način ugrožen tako da se ključ domaćina promijenio.
Najvjerojatnije je ovo pitanje jedno od prva tri, a promjenu možete zanemariti. Ako se IP / DNS zakup promijenio, možda postoji problem s poslužiteljem i možda ćete ga preusmjeriti na drugi stroj. Ako niste sigurni koji je razlog za promjenu, vjerojatno biste trebali pretpostaviti da je posljednji na popisu.
Kako OpenSSH upravlja nepoznatim hostovima
Ovisno o vašoj konfiguraciji, SSH veze s nepoznatim hostovima (čiji ključevi već nisu u datoteci known_hosts) mogu ići na tri načina.
- StrictHostKeyChecking je postavljen na ne; OpenSSH će se automatski povezati s bilo kojim SSH poslužiteljem bez obzira na status glavnog računala. Ovo je nesigurno i nije preporučljivo, osim ako nakon ponovne instalacije vašeg sustava dodate hrpu hostova, nakon čega ćete je vratiti.
- StrictHostKeyChecking je postavljen na pitanje; OpenSSH će vam pokazati nove ključeve domaćina i zatražiti potvrdu prije nego što ih dodate. To će spriječiti veze od odlaska na izmjene ključeva domaćina. Ovo je zadana postavka.
- StrictHostKeyChecking je postavljen na da; Suprotno od "ne", to će vam spriječiti povezivanje s bilo hostom koji već nije prisutan u datoteci known_hosts.
Jednostavno možete promijeniti ovu varijablu na naredbenom retku pomoću sljedeće paradigme:
ssh -o 'StrictHostKeyChecking [option]' user@host
Zamijenite [opciju] s "ne", "pitaj" ili "da". Budite svjesni da postoje jednake pravocjene citate koji okružuju ovu varijablu i njegovu postavku. Također zamijenite korisnik @ host s korisničkim imenom i nazivom poslužitelja poslužitelja na koji se povezujete. Na primjer:
ssh -o 'StrictHostKeyChecking ask' [email protected]
Blokirani domaćini zbog promijenjenih ključeva
Ako imate poslužitelj kojem pokušavate pristupiti, već je promijenjen ključ, već će zadana OpenSSH konfiguracija spriječiti pristup toj usluzi. Možete promijeniti StrictHostKeyChecking vrijednost za tog domaćina, ali to ne bi bilo potpuno, temeljito, paranoidno sigurno, zar ne? Umjesto toga, jednostavno možemo ukloniti uvredljivu vrijednost iz datoteke known_hosts.
Umjesto toga, dobivamo lijep potez, na koji možemo jednostavno odgovoriti s "da".
Stvaranje novih ključeva domaćina
Za zapis, doista nema previše razloga za promjenu ključa domaćina, ali ako ikada pronađete potrebu, možete to učiniti lako.
Najprije promijenite odgovarajući direktorij sustava:
cd /etc/ssh/
To je obično mjesto gdje su glavni ključovi domaćina, iako ih neki distribuiraju negdje drugdje. U slučaju sumnje provjerite dokumentaciju!
Zatim ćemo izbrisati sve stare ključeve.
sudo rm /etc/ssh/ssh_host_*
Alternativno, možete ih premjestiti u sigurnosni rezervni direktorij. Samo misao!
Tada možemo reći OpenSSH poslužitelju da se ponovno konfigurira:
sudo dpkg-reconfigure openssh-server
Vidjet ćete upit dok računalo stvara nove ključeve. Evo ga!
Sada kada znate kako SSH radi malo bolje, trebali biste biti u mogućnosti izvući se iz teških mjesta. Upozorenje / pogreška "Identifikacija udaljenog računala je promijenjena" je ono što baca puno korisnika, čak i onih koji poznaju naredbeni redak.
Za bonus bodove, možete provjeriti kako daljinski kopirati datoteke preko SSH bez unošenja vaše lozinke. Tu ćete naučiti nešto više o drugim vrstama algoritama za šifriranje i kako koristiti ključne datoteke za dodatnu sigurnost.