Početna » kako da » Naučite Ins i Out of OpenSSH na vašem Linux računalu

    Naučite Ins i Out of OpenSSH na vašem Linux računalu

    Mnogo puta smo veličali vrline SSH-a, kako za sigurnost tako i za udaljeni pristup. Pogledajmo sam poslužitelj, neke važne aspekte "održavanja" i neke varke koje mogu dodati turbulenciju inače glatkoj vožnji.

    Iako smo pisali ovaj vodič s obzirom na Linux, to se može primijeniti i na OpenSSH u Mac OS X i Windows 7 putem Cygwina.

    Zašto je sigurno

    Mnogo puta smo spomenuli kako je SSH sjajan način sigurnog povezivanja i tuneliranja podataka iz jedne točke u drugu. Pogledajmo vrlo kratko kako stvari funkcioniraju tako da bolje shvatite zašto stvari ponekad mogu ići čudno.

    Kada odlučimo pokrenuti vezu s drugim računalom, često koristimo protokole s kojima je lako raditi. I Telnet i FTP dolaze na pamet. Šaljemo informacije udaljenom poslužitelju i onda dobivamo potvrdu o našoj vezi. Kako bi se uspostavila neka vrsta sigurnosti, ovi protokoli često koriste kombinacije korisničkog imena i lozinke. To znači da su potpuno sigurni, zar ne? pogrešno!

    Ako proces povezivanja smatramo poštom, onda korištenje FTP-a i Telneta i slično nije poput standardnih poštanskih omotnica. Više je poput razglednica. Ako netko slučajno zakorači u sredinu, mogu vidjeti sve informacije, uključujući adrese oba dopisnika i poslano korisničko ime i zaporku. Zatim mogu promijeniti poruku, zadržati istu informaciju i oponašati jednog dopisnika ili drugog. To je poznato kao napad "čovjek-u-sredini", a ne samo da kompromitira vaš račun, nego dovodi u pitanje svaku poslanu poruku i primljenu datoteku. Ne možete biti sigurni razgovarate li s pošiljateljem ili ne, a čak i ako jeste, ne možete biti sigurni da nitko ne gleda na sve između.

    Pogledajmo sada SSL enkripciju, onu koja HTTP čini sigurnijom. Ovdje imamo poštansku službu koja upravlja prepiskom, koja provjerava je li vaš primatelj ono što on ili ona tvrdi da je, i ima zakone koji štite vašu poštu od toga da se gleda. Općenito je sigurniji, a središnje tijelo - Verisign je jedno, za naš HTTPS primjer - osigurava da se osoba koju šaljete šalje provjerava. Oni to čine tako što ne dopuštaju razglednice (nešifrirane vjerodajnice); umjesto toga oni propisuju stvarne omotnice.

    Konačno, pogledajmo SSH. Ovdje je postava malo drugačija. Ovdje nemamo središnji autentifikator, ali stvari su još uvijek sigurne. To je zato što šaljete pisma nekome čiju adresu već znate - recimo, čavrljanjem s njima telefonom - i koristite neku stvarno otmjenu matematiku da biste potpisali omotnicu. Predajete ga svom bratu, djevojci, tati ili kćeri da ga odnesu na adresu, i samo ako primateljeva matematika odgovara, pretpostavljate da je adresa ono što bi trebao biti. Zatim dobivate pismo natrag, također zaštićeno od znatiželjnih očiju ovom sjajnom matematikom. Naposljetku, svoje vjerodajnice šaljete u drugu tajnu algoritamski ovisnu omotnicu do odredišta. Ako se matematika ne podudara, možemo pretpostaviti da se izvorni primatelj pomaknuo i da moramo ponovno potvrditi njihovu adresu.

    Uz objašnjenje sve dok je, mislimo da ćemo ga tamo odrezati. Ako imate još uvida, slobodno razgovarajte u komentarima, naravno. Za sada, ipak, pogledajmo najvažniju značajku SSH-a, provjeru autentičnosti hosta.

    Tipke domaćina

    Provjera autentičnosti hosta je u biti dio u koji netko kome vjerujete uzima omotnicu (zapečaćena čarobnom matematikom) i potvrđuje adresu primatelja. To je prilično detaljan opis adrese i temelji se na nekoj kompliciranoj matematici koju ćemo preskočiti. Ipak, postoji nekoliko važnih stvari koje treba oduzeti:

    1. Budući da nema središnjeg tijela, prava sigurnost leži u ključu domaćina, javnim ključevima i privatnim ključevima. (Posljednja dva ključa konfigurirana su kada imate pristup sustavu.)
    2. Obično, kada se spojite na drugo računalo putem SSH-a, ključ hosta je pohranjen. Tako će buduće radnje biti brže (ili manje).
    3. Ako se ključ domaćina promijeni, najvjerojatnije ćete biti upozoreni i trebali biste biti oprezni!

    Budući da se ključ poslužitelja koristi prije provjere autentičnosti za utvrđivanje identiteta SSH poslužitelja, provjerite ključ prije povezivanja. Vidjet ćete dijaloški okvir za potvrdu kao u nastavku.

    Ne trebate se brinuti! Često kada je sigurnost zabrinjavajuća, postojat će posebno mjesto na koje se može potvrditi ključ domaćina (iznad ECDSA otiska prsta). U potpuno online poduhvatima, često će to biti samo na sigurnom mjestu za prijavu. Možda ćete morati (ili odabrati!) Nazvati svoj IT odjel kako biste potvrdili ovu tipku preko telefona. Čuo sam za neka mjesta gdje je ključ na vašoj radnoj znački ili na posebnom popisu "Hitni brojevi". A ako imate fizički pristup ciljanom stroju, možete i sami provjeriti!

    Provjera ključa hosta vašeg sustava

    Postoje 4 vrste algoritama šifriranja koji se koriste za izradu ključeva, ali za OpenSSH početkom ove godine zadana je 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

    Izlaz treba 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, tada je sam ključ, i na kraju imate datoteku u kojoj je pohranjena. Usporedite taj srednji dio s onim što vidite kada se od vas zatraži daljnja prijava. Trebalo bi odgovarati, i svi ste spremni. Ako ne, onda se nešto drugo može dogoditi.

    Možete pregledati sve hostove s kojima ste se povezali putem SSH-a tako da pogledate datoteku known_hosts. Obično se nalazi na:

    ~ / .Ssh / known_hosts

    To možete otvoriti u bilo kojem uređivaču teksta. Ako pogledate, pokušajte obratiti pozornost na način pohranjivanja ključeva. Oni se pohranjuju s imenom glavnog računala (ili web-adresom) i njegovom IP adresom.

    Promjena ključeva i problema s hostom

    Postoji nekoliko razloga zbog kojih se ključevi hostova mijenjaju ili ne odgovaraju onome što je zapisano u datoteku known_hosts.

    • Sustav je ponovno instaliran / ponovno konfiguriran.
    • Tipke hosta ručno su promijenjene zbog sigurnosnih protokola.
    • Poslužitelj OpenSSH se ažurira i koristi različite standarde zbog sigurnosnih problema.
    • Izmjena IP ili DNS najma. To često znači da pokušavate pristupiti drugom računalu.
    • Sustav je na neki način kompromitiran tako da se ključ hosta promijenio.

    Najvjerojatnije, problem je jedan od prva tri, a promjenu možete ignorirati. Ako se promijeni IP / DNS najam, možda postoji problem s poslužiteljem i možda ćete biti preusmjereni na drugi stroj. Ako niste sigurni koji je razlog za promjenu, vjerojatno biste trebali pretpostaviti da je to posljednja na popisu.

    Kako OpenSSH upravlja nepoznatim hostovima

    OpenSSH ima postavku za način rada s nepoznatim hostovima, što se odražava u varijabli "StrictHostKeyChecking" (bez navodnika).

    Ovisno o konfiguraciji, SSH veze s nepoznatim hostovima (čije tipke još nisu u vašoj 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 ključa glavnog računala. To je nesigurno i nije preporučljivo, osim ako dodajete hrpu hostova nakon ponovne instalacije OS-a, nakon čega ćete je promijeniti.
    • StrictHostKeyChecking je postavljen da pita; OpenSSH će vam pokazati nove ključeve hosta i zatražiti potvrdu prije nego ih dodate. On će spriječiti povezivanje s promijenjenim ključevima glavnog računala. Ovo je zadana postavka.
    • StrictHostKeyChecking je postavljeno na yes; Suprotno od "ne", to će spriječiti povezivanje s bilo kojim hostom koji već nije prisutan u vašoj datoteci known_hosts.

    Ovu varijablu možete lako promijeniti u naredbenom retku pomoću sljedeće paradigme:

    ssh -o 'StrictHostKeyChecking [opcija]' korisnik @ host

    Zamijenite [opcija] s “ne”, “pitajte” ili “da.” Budite svjesni da postoje samo jednostavni navodnici koji okružuju ovu varijablu i njezinu postavku. Također zamijenite user @ host s korisničkim imenom i nazivom poslužitelja na koji se povezujete. Na primjer:

    ssh -o 'StrictHostKeyChecking pitaj' [email protected]

    Blokirani domaćini zbog promjena ključeva

    Ako imate poslužitelj kojem pokušavate pristupiti, a ključ je već promijenjen, zadana konfiguracija OpenSSH onemogućit će vam pristup. Možete promijeniti vrijednost StrictHostKeyChecking za taj host, ali to ne bi bilo potpuno, temeljito, paranoično sigurno, zar ne? Umjesto toga, možemo jednostavno ukloniti vrijeđaj vrijednost iz naše known_hosts datoteke.

    To je definitivno ružna stvar koju imate na zaslonu. Srećom, naš razlog za to bio je ponovno instaliran OS. Dakle, povećajmo crtu koja nam je potrebna.

    Idemo tamo. Pogledajte kako citira datoteku koju trebamo urediti? Čak nam daje broj linije! Otvorimo tu datoteku u Nanu:

    Evo našeg ključa koji vrijeđa, u redu 1. Sve što trebamo učiniti je pritisnuti Ctrl + K za izrezivanje cijele linije.

    To je mnogo bolje! Dakle, sada smo pritisnuli Ctrl + O za pisanje (spremanje) datoteke, zatim Ctrl + X za izlaz.

    Umjesto toga sada dobivamo lijep poticaj, na koji možemo jednostavno odgovoriti sa "da".

    Stvaranje novih ključeva hosta

    Zapravo, ne postoji previše razloga da uopće promijenite ključ hosta, ali ako ikada nađete potrebu, možete lako.

    Prvo promijenite u odgovarajući sistemski direktorij:

    cd / etc / ssh /

    To je obično mjesto gdje su globalni ključevi domaćina, iako su neki distrosi postavljeni negdje drugdje. U nedoumici provjerite svoju dokumentaciju!

    Zatim ćemo izbrisati sve stare ključeve.

    sudo rm / etc / ssh / ssh_host_ *

    Ili ih možete premjestiti u siguran sigurnosni direktorij. Samo misao!

    Zatim, možemo reći OpenSSH poslužitelju da se ponovo konfigurira:

    sudo dpkg-reconfigure openssh-poslužitelj

    Vidjet ćete prompt dok vaše računalo stvara nove ključeve. Evo ga!


    Sada kada znate kako SSH radi malo bolje, trebali biste se moći izvući iz teških mjesta. Upozorenje / pogreška "Identifikacija udaljenog hosta promijenila se" je nešto što isključuje mnoge korisnike, čak i one koji su upoznati s naredbenim retkom.

    .