четвртак, 2 маја, 2024
Интернет, мреже и комуникације

SSHuttle

Аутор: Никола Харди

Чему служи и зашто га користити?

С времена на време се нађемо у ситуацији да желимо додатно да осигурамо нашу везу са интернетом или да се снађемо и заобиђемо нека од правила на мрежи на коју смо прикључени. Неки од конкретних примера су употреба интернета на јавним мрежама или приступ мрежи када постоји proxy као посредник.

У првој ситуацији, када смо на јавној мрежи, увек желимо да осигурамо податке који путују до и од нас. Tor и VPN могу да реше ове проблеме донекле, али имају својих проблема (брзина, цена, безбедност, доступност).

У другом случају имамо проблем са ограниченим приступом интернету. У појединим институцијама, рецимо на академској мрежи, не можемо да користимо све сервисе јер интернету приступамо преко proxy сервера који на одређени начин филтрира саобраћај. Као пример могу да наведем приступ IRC серверу путем SSL-а, proxy овај саобраћај блокира, а занимљиво је, што је истовремено SSH саобраћај био дозвољен.

Како аутори ове алатке у шали кажу, sshuttle је VPN за сиромашне. Све што вам је потребно, јесу сервер ка којем имате обезбеђену SSH конекцију и sshuttle на рачунару са којег желите да приступате мрежи.

Како да га користим?

За разлику од VPN-а и Tor-а, sshuttle је много једноставнији за употребу. На серверској страни нису потребна никаква подешавања, већ обичан SSH приступ као редовном кориснику. На својем рачунару је потребно покренути sshuttle са подацима о корисничком имену на серверу, адресом сервера и евентуално подешавањима, који део мреже желите да преусмерите преко сервера и то је то. Sshuttle ће одрадити остатак магије и даље можете да крстарите интернетом као да се налазите на својем серверу, а не на мрежи у којој важе нека правила која вам се можда не допадају.

Предности

  1. Слободан приступ интернету
  2. Ваша конекција је шифрована и сав проток ће бити представљен као SSH конекција ка вашем серверу и нико неће знати да ли читате поверљив mail или разгледате фотографије на друштвеној мрежи.

Како функционише?

Укратко, ево о чему је заправо реч, без превише детаља о мрежној инфраструктури Linux кернела и остатка оперативног система.

Напомена: Користимо нестандардизовану терминологију у слободној интерпретацији

Захтев: програм, рецимо browser, захтева приступ рачунару на удаљеној мрежи путем различитих протокола на основу адресе.

Табела за рутирање садржи податке о томе, на којој мрежи се налази који мрежни интерфејс нашег рачунара. Рецимо, можемо каблом бити прикључени на једну, а WiFi-јем на другу мрежу.

Proxy: рачунар посредник у комуникацији који наше захтеве прослеђује до трећег рачунара.

iptables: алат, односно у овом контексту скуп правила за управљање мрежним пакетима, њихово одобравање, одбијање, посебна обрада итд.

Када желимо да приступимо сајту који се налази на рачунару са адресом А, наш програм (интернет прегледач на пример) ће назив сајта претворити у IP адресу и одређеним протоколом захтевати садржај са удаљеног рачунара. Тај захтев потом преузима систем и на основу адресе удаљеног рачунара и табеле за рутирање утврђује којим путем ће захтев даље да путује. Ако смо на истој мрежи као и тај удаљени рачунар, можемо да остваримо директну комуникацију са њим. Међутим, ако нисмо, захтев путује подразумеваном путањом (default gateway) ка следећем рачунару (рутеру) који ће даље покушати да нађе баш тај рачунар, којем желимо да приступимо и погледамо сајт. Након што захтев стигне до жељеног рачунара, истим путем добијемо одговор који стиже до интернет прегледача и буде представљен кориснику у виду редовне интернет странице.

Када у причу укључимо proxy, тада систем или програми појединачно не шаљу захтев директно ка циљаном рачунару, већ захтев задају proxy серверу који потом одлучује, да ли ће да одобри захтев и одобри даљу потрагу за циљаним рачунаром, или ће тај захтев одбити и уместо правог одговора, одговорити нам са неким видом упозорења.

Sshuttle има своје место у iptables и у табели за рутирање и то тако што захтеве (само оне које желимо или све) прослеђује нашем удаљеном серверу, који ће потом даље потражити циљани рачунар, преузети одговор и вратити га истим путем. Оваква комуникација је за proxy сасвим иста као и редовна SSH сесија.

Дакле, на овај начин је sshuttle изменио табелу рутирања и додао правила у iptables који мењају наше захтеве, тако да за proxy изгледају као SSH сесија и усмерава ка нашем серверу.

Слични алати

На овај начин смо успели да омогућимо себи IRC комуникацију кроз SSL порт јер наравно да нико не жели да користи протоколе који комуницирају чистим текстом. Ово није једини начин да се избавите у сличним ситуацијама, а осим Tor-а и VPN-а јако су занимљива и следећа два савета:

  1. SSH има уграђени SOCKS proxy, тако да можете да поставите proxy сервер на свом серверу. Резултат и начин рада је врло сличан као и са sshuttle, с тим што ће вас можда мрзети да се конектујете на сервер и тамо отворите долазни порт за proxy, што код sshuttle-а није неопходно јер све путује кроз порт на којем ради и SSH.
  2. Врло занимљив је и пројекат под називом iodine. Рецимо да је реч о proxy серверу који комуницира путем DNS захтева, али ово захтева још један подужи текст који ћемо можда објавити ускоро. До тада истражујте сами!

Јавите нам, ако имате још сличних савета или још боље, напишите како се ви сналазите у оваквим ситуацијама!