Arhiva blog - tuneluri prin ssh sau - vpn pentru săraci

Tuneluri prin SSH sau "VPN pentru cei săraci"

"Dacă vedem lumina de la capătul tunelului, este lumina trenului care se apropie" (Robert Lowell)

De ce tunele SSH în loc de VPN? De fapt, folosesc acasă atât. Dacă ați citit articolul meu pe jaysonbroughton.com, știi că eu folosesc OpenVPN cu autentificare în trei etape (date de conectare, un certificat și o parolă o singură dată). Dar dacă vreau să verificați unul din serverele mele de la domiciliu, cu ajutorul Android-dispozitiv sau computer, pe care nu am drepturi de administrator (aceste drepturi sunt necesare pentru meu OpenVPN-client) sau conectați folosind VNC la un laptop de soția mea, pentru a rezolva problema ei , atunci în acest caz înlocuiesc utilizarea VPN pe SSH.

Voi da aici numai elementele de bază: vă voi spune cum să creați tuneluri, să explicați sintaxa comenzilor, să dați exemple de tuneluri inverse și motivele pentru utilizarea fiecăruia dintre ele. Atingeți scurt fișierul ssh_config; în detaliu, va fi luată în considerare în viitor.

Deci, cu ce vom lucra? Eu folosesc Debian într-un mediu virtual, astfel încât realitățile tale pot fi diferite de ale mele. În acest caz am folosit OpenSSH_5.3p1 ca server și diferite versiuni OpenSSH 5 clienți. Înainte de a se îngropa în tuneluri, aș dori să spun următoarele: dacă doriți să utilizați SSH-tuneluri pentru a cripta HTTP sau invers SSH-tuneluri pentru a trece de firewall-ul companiei, asigurați-vă că nu încalcă regulile companiei dumneavoastră. Inutil să spun că administratorii de sistem vă vor vâna imediat ce vor descoperi astfel de trucuri; fiind un administrator de sistem, primesc o plăcere inexprimabilă, atrăgând astfel de indivizi. Cel puțin, avertizați-i să nu fie surprinși. LinuxJournal.com și eu nu poartă nici o responsabilitate pentru încălcările dvs. de politică corporativă. Ei bine, acum să mergem la afaceri.

Este destul de ușor să creați un tunel SSH. Dar pentru a decide ce să faceți cu ea, poate fi ceva mai dificil. Prin urmare, voi da câteva exemple înainte de a intra în detaliu. Odată am călătorit puțin - era la locul de muncă anterior și înainte de a avea copii. În timpul călătoriilor, am rămas în cele mai bizare hoteluri (cred că sunteți familiarizați cu astfel de hoteluri), echipate cu puncte de acces wireless chiar mai ciudate. Doriți să vă conectați la un punct de acces de la hotel, care are un SSID greșit? Sau la aeroport, unde găsiți mai multe puncte deschise simultan? Dacă nu sunt acasă, voi porni traficul HTTP prin tunel între dispozitivul meu Android (cu acces root) și serverul meu de acasă. Dacă aș lucra pe un laptop, deschideți SSH tunel și HTTP-traficul prin SOCKS5, astfel vii că totul a fost criptate prin intermediul SSH. Nu am încredere în punctele de acces deschise cât de mult pot. Ce altceva să adăugați? A trebuit să integrez traficul SMTP în tuneluri când am ajuns în locurile în care au fost blocate pachetele SMTP expediate. Acelasi lucru am avut de-a face cu POP3, de unde am trecut recent la IMAPS. Alte exemple de tuneluri SSH includ transmiterea aplicațiilor X11 și a sesiunilor VNC. Anterior am menționat și tunelurile inverse. Ei sunt ... ei bine, voi înțelegeți - tuneluri îndreptate în direcția opusă. În acest caz, vă conectați de undeva unde nu există un server SSH către un server SSH extern. Apoi, prin înregistrarea pe acest server, inclusiv la nivel local, puteți restabili această conexiune. Care este folosirea, să zicem? Ei bine, de exemplu, VPN-serverul companiei dvs. „a căzut“, sau să lucreze numai cu un VPN client pentru Windows, dar absolut nu doresc să fie târât acasă cu un laptop pentru a verifica dacă un proces se execută. Când ajungeți acasă, puteți instala un tunel invers. În acest caz, trebuie să vă conectați de la serverul X la aparatul de acasă. Ajuns acasă, restabiliți conexiunea la server „X“, ocolind astfel firewall sau VPN și verificați operarea de proces, fără a fi nevoie de o conexiune VPN. Eu fac acest lucru este foarte rar, pentru că, în opinia noastră, conexiunea la server, ocolind firewall sau VPN - este „rea kung-fu“ și pot fi utilizate numai în ultimă instanță.

Deci, aveți câteva exemple de tuneluri SSH și acum vom vedea cum se face acest lucru.

Înainte de a intra în lucrul cu clientul, modificați puțin fișierul sshd_config de pe server. În / etc / ssh / sshd_config, de obicei, fac unele modificări. Dar nu uitați să faceți o copie de rezervă înainte de începerea editării, în cazul în care ceva nu merge bine.

Nu uitați că, dacă ați efectuat modificări la sshd_config, va trebui să reporniți serviciul sshd astfel încât aceste modificări să aibă efect.

Acum să trecem la chei. Nu, nu la cheile pe care tatăl tău le-a luat de la tine când ai rupt mașina mașinii mamei și pe tastele liniei de comandă SSH.

Un tunel tipic SSH fără redirecționarea X arată astfel:

Aici cheile înseamnă următoarele:

Vrei mai multe exemple?

POP3 și SMTP prin SSH:

Google Talk through SSH (comutatorul -g permite mașinilor de la distanță să se conecteze la porturile locale spulberate):

Practic, tot ceea ce este transmis ca text simplu poate fi securizat cu tuneluri SSH

Criptare HTTP

Un alt lucru, clar, fără cuvinte inutile. Dar dacă compania dvs. are o politică privind IT-ul, verificați dacă o încălcați. Am lăsat traficul HTTP prin SSH în cazurile în care nu am încredere în punctul de acces. În Android, folosesc aplicația SSHTunnel, iar pe laptop - această comandă:

Redirecționarea sesiunilor X și VNC

Amintiți-vă că ați adăugat "X11Forwarding yes" la sshd_config? Aceasta este ceea ce vă permite să săriți sesiunile X.

La transmiterea sesiunilor VNC, aveți grijă. În cazul în care clientul, cu MDM conectați tunel, care rulează VNC-server, de exemplu, pe portul 5900, asigurați-vă că nu specificați portul ca redirecționată, sau vă conectați la tine. În general, VNC este aruncat exact ca orice alt serviciu:

În acest exemplu, vă conectați la SSH pe portul extern 2022 al mylinuxserver.com în numele utilizatorului bob. Portul local 5900 este trimis la portul 5900 pe server. După stabilirea conexiunii, puteți deschide clientul VNC și îl puteți trimite localhost: 0 pentru a vă conecta la aparatul de la distanță. Dacă ați aruncat portul 5901, specificați "localhost: 1" și așa mai departe.

Tunelele SSH inversate

Ei bine, acum este momentul pentru versiunea mea preferată de tuneluri SSH. Desigur, accesul la orice serviciu prin intermediul SSH - este mare, „unitate“ Traficul Web este criptat prin SSH-tuneluri - de asemenea, dar cea mai placuta surpriza poate fi testată printr-un tunel invers. Așa cum am spus mai devreme, ei trebuie să utilizeze într-o situație în care există o mașină fără SSH-server, și vă simțiți nevoia de a avea acces în viitor (câteva minute, ore sau zile), dar nu vrea sau nu poate utiliza rețeaua VPN . Ar trebui să vă conectați la serverul SSH de la această mașină și apoi să instalați tunelul SSH invers prin conectarea la această conexiune. De ce aplic acest lucru? Din când în când - pentru a lucra cu un server de la distanță sau pur și simplu pentru a ajuta prietenii și rudele prin VNC via SSH. În acest ultim caz, ei rulează Putty cu setările de sesiune salvate și se conectează la serverul meu SSH în numele unui utilizator care nu are niciun drept. După crearea tunelului, pot merge la VNC pe mașinile lor. Totuși, nu trebuie să configureze firewall-ul sau să se ocupe de LogMeIn sau de alte site-uri similare.

Deci, pentru a crea un tunel SSH invers, trebuie să faceți următoarele:

  1. Pe mașina client:
  2. Pe partea de server:

Iată un tunel invers! Voila!

concluzie

Ei bine, ai cunoștințele inițiale în domeniul tunelurilor SSH. Nu uitați că acestea sunt doar elementele de bază, de fapt, domeniul acestor tuneluri este limitat doar de imaginația voastră. Mai târziu, voi descrie configurația fișierului ssh_config de pe partea clientului pentru a stoca parametrii individuali de conectare. Dar despre asta - data viitoare.

Articole similare