SSHuttle
Autor: Nikola Hardi
Čemu služi i zašto ga koristiti?
S vremena na vreme se nađemo u situaciji da želimo dodatno da osiguramo našu vezu sa internetom ili da se snađemo i zaobiđemo neka od pravila na mreži na koju smo priključeni. Neki od konkretnih primera su upotreba interneta na javnim mrežama ili pristup mreži kada postoji proxy kao posrednik.
U prvoj situaciji, kada smo na javnoj mreži, uvek želimo da osiguramo podatke koji putuju do i od nas. Tor i VPN mogu da reše ove probleme donekle, ali imaju svojih problema (brzina, cena, bezbednost, dostupnost).
U drugom slučaju imamo problem sa ograničenim pristupom internetu. U pojedinim institucijama, recimo na akademskoj mreži, ne možemo da koristimo sve servise jer internetu pristupamo preko proxy servera koji na određeni način filtrira saobraćaj. Kao primer mogu da navedem pristup IRC serveru putem SSL-a, proxy ovaj saobraćaj blokira, a zanimljivo je, što je istovremeno SSH saobraćaj bio dozvoljen.
Kako autori ove alatke u šali kažu, sshuttle je VPN za siromašne. Sve što vam je potrebno, jesu server ka kojem imate obezbeđenu SSH konekciju i sshuttle na računaru sa kojeg želite da pristupate mreži.
Kako da ga koristim?
Za razliku od VPN-a i Tor-a, sshuttle je mnogo jednostavniji za upotrebu. Na serverskoj strani nisu potrebna nikakva podešavanja, već običan SSH pristup kao redovnom korisniku. Na svojem računaru je potrebno pokrenuti sshuttle sa podacima o korisničkom imenu na serveru, adresom servera i eventualno podešavanjima, koji deo mreže želite da preusmerite preko servera i to je to. Sshuttle će odraditi ostatak magije i dalje možete da krstarite internetom kao da se nalazite na svojem serveru, a ne na mreži u kojoj važe neka pravila koja vam se možda ne dopadaju.
Prednosti
- Slobodan pristup internetu
- Vaša konekcija je šifrovana i sav protok će biti predstavljen kao SSH konekcija ka vašem serveru i niko neće znati da li čitate poverljiv mail ili razgledate fotografije na društvenoj mreži.
Kako funkcioniše?
Ukratko, evo o čemu je zapravo reč, bez previše detalja o mrežnoj infrastrukturi Linux kernela i ostatka operativnog sistema.
Napomena: Koristimo nestandardizovanu terminologiju u slobodnoj interpretaciji
Zahtev: program, recimo browser, zahteva pristup računaru na udaljenoj mreži putem različitih protokola na osnovu adrese.
Tabela za rutiranje sadrži podatke o tome, na kojoj mreži se nalazi koji mrežni interfejs našeg računara. Recimo, možemo kablom biti priključeni na jednu, a WiFi-jem na drugu mrežu.
Proxy: računar posrednik u komunikaciji koji naše zahteve prosleđuje do trećeg računara.
iptables: alat, odnosno u ovom kontekstu skup pravila za upravljanje mrežnim paketima, njihovo odobravanje, odbijanje, posebna obrada itd.
Kada želimo da pristupimo sajtu koji se nalazi na računaru sa adresom A, naš program (internet pregledač na primer) će naziv sajta pretvoriti u IP adresu i određenim protokolom zahtevati sadržaj sa udaljenog računara. Taj zahtev potom preuzima sistem i na osnovu adrese udaljenog računara i tabele za rutiranje utvrđuje kojim putem će zahtev dalje da putuje. Ako smo na istoj mreži kao i taj udaljeni računar, možemo da ostvarimo direktnu komunikaciju sa njim. Međutim, ako nismo, zahtev putuje podrazumevanom putanjom (default gateway) ka sledećem računaru (ruteru) koji će dalje pokušati da nađe baš taj računar, kojem želimo da pristupimo i pogledamo sajt. Nakon što zahtev stigne do željenog računara, istim putem dobijemo odgovor koji stiže do internet pregledača i bude predstavljen korisniku u vidu redovne internet stranice.
Kada u priču uključimo proxy, tada sistem ili programi pojedinačno ne šalju zahtev direktno ka ciljanom računaru, već zahtev zadaju proxy serveru koji potom odlučuje, da li će da odobri zahtev i odobri dalju potragu za ciljanim računarom, ili će taj zahtev odbiti i umesto pravog odgovora, odgovoriti nam sa nekim vidom upozorenja.
Sshuttle ima svoje mesto u iptables i u tabeli za rutiranje i to tako što zahteve (samo one koje želimo ili sve) prosleđuje našem udaljenom serveru, koji će potom dalje potražiti ciljani računar, preuzeti odgovor i vratiti ga istim putem. Ovakva komunikacija je za proxy sasvim ista kao i redovna SSH sesija.
Dakle, na ovaj način je sshuttle izmenio tabelu rutiranja i dodao pravila u iptables koji menjaju naše zahteve, tako da za proxy izgledaju kao SSH sesija i usmerava ka našem serveru.
Slični alati
Na ovaj način smo uspeli da omogućimo sebi IRC komunikaciju kroz SSL port jer naravno da niko ne želi da koristi protokole koji komuniciraju čistim tekstom. Ovo nije jedini način da se izbavite u sličnim situacijama, a osim Tor-a i VPN-a jako su zanimljiva i sledeća dva saveta:
- SSH ima ugrađeni SOCKS proxy, tako da možete da postavite proxy server na svom serveru. Rezultat i način rada je vrlo sličan kao i sa sshuttle, s tim što će vas možda mrzeti da se konektujete na server i tamo otvorite dolazni port za proxy, što kod sshuttle-a nije neophodno jer sve putuje kroz port na kojem radi i SSH.
- Vrlo zanimljiv je i projekat pod nazivom iodine. Recimo da je reč o proxy serveru koji komunicira putem DNS zahteva, ali ovo zahteva još jedan poduži tekst koji ćemo možda objaviti uskoro. Do tada istražujte sami!
Javite nam, ako imate još sličnih saveta ili još bolje, napišite kako se vi snalazite u ovakvim situacijama!