Една от големите злини в компютърния свят е постоянното нарушаване на личната тайна на потребителите. Не става дума само за вирусите, които колекционират всичко, което знае за вас компютърът ви (а той знае за вас несравнимо повече, отколкото знаете вие). Нито пък само за злонамерените кракери (“хакери” значи друго!), които подслушват Интернет връзката ви, събират информацията и я продават на, хм, заинтересовани страни. (Чудите ли се откъде крадците разбраха кога сте на излет, за да ви оберат апартамента точно тогава?) Става дума за най-обикновените Интернет провайдери, които търсят средства, за да надконкурират колегите си. Ако вие сте управител на такъв провайдер, ще можете ли лесно да откажете оферта за милиони?…
Друга от големите злини е ограничаването на свързаността ви в Интернет. Формално то пак идва от провайдерите. Някои от тях например много обичат да ви орежат свързаността, и да ви искат повече пари за неорязана. (Науча ли за такива маймуни, пиша тук за тях, за да знаят хората да ги избягват.) Други обаче просто биват принудени да го правят от разни праводържателски корпорации, или държавно-службенски интереси. Независимо от причината, и в двата случая не е приятно. Най-сетне, разни фирми, хотели и прочее много обичат да орязват достъпа на Интернет вътре в тях. Понякога просто се грижат служителите да не висят по цял ден във Фейсбук, вместо да работят – уви, и това го има. Но понякога става дума единствено за нечие его, или пък за пари.
Двете злини се съчетават много добре в условията на “облачните” технологии. Най-нормално и разумно е да не искате да си качите важните файлове при някой външен “облачен” провайдер – ако мислите, че няма да ги продаде на секундата на дискретни купувачи, не живеете на този свят. Сигурно бихте предпочели да използвате за “облак” домашния си компютър, и да се свързвате към него с лаптопа, таблета или смартфона си. Да, но някои провайдери ще ви орежат този достъп. Други няма да ви го орежат, но ще запишат и продадат обменяната информация. Трети ще бъдат коректни с вас, но пък юнакът от паркираната пред хотела ви “баничарка” с подслушвателна апаратура – надали… А може би домашните ви провайдери са истински, но там, където ще ходите, ви режат достъпа до любимия ви сайт? Или искат куп пари специално за него? Също не е рядкост.
Едно елегантно решение на проблемите с блокирането на портове и подслушването на връзки е SSH тунелирането. Същността му е простичка: порт (ако не знаете какво е това, го разбирайте като услуга – уебсървър, поща или каквото и да е друго) на домашния ви компютър се пренасочва към порт на мобилното ви устройство. Трафикът тече между домашния ви компютър и мобилното ви устройство през дебело шифрован канал между портове, които провайдерът ви не блокира.
Звучи ви като на китайски? Не е хубаво. За да го разберете ви трябват съвсем основни познания по компютри, нищо сложно. Нещо като най-основна грамотност. Помислете си как би се чувствал неграмотен човек в непознат град и ще разберете колко полезно би ви било да отделите няколко часа (стигат и артисват), за да научите нещата дотолкова. Защото напоследък само овчарите живеят извън града, наречен Интернет…
Ако ли пък имате някаква представа, дори не съвсем точна, за какво става дума в по-горния абзац, ето и обяснение как се правят нещата. 🙂
Като начало, ви трябва домашен компютър под Линукс. Не е задължително да е супер-дупер-модерен. Чудесна работа ще ви свърши и старият компютър, който планирате да изхвърлите. А ако нямате такъв, купете си за към 150 лева на старо – ще е предостатъчен… Под Уиндоус той ще става в добрия случай за пишеща машина, но под Линукс ще е един чудесен сървър за всичко, което ви е необходимо. Уеб страници, поща, файлове (добавете му един голям харддиск, и той ще побере всичките ви файлове, и ще ги споделя удобно към всички компютри в дома ви), и не на последно място също може да е удобен за пишеща машина или браузване на Интернет. И най-вече, софтуерът ви на него ще е напълно легален – подкрепете легалния софтуер! 🙂
Друго, което ще ви трябва, е статичен IP адрес от провайдера ви. (Ако той не ви го предоставя, или ви иска повече пари за него, и това има заобикаляне – DynDNS и подобни неща. Ще ги опиша обаче някой друг път, да не става този запис прекалено дълъг.) След като имате и това, започваме.
Инсталирайте Линукс. (Писал съм преди някъде как става това, но версията, която описах, вече е доста стара – полезно е да опиша нова, но ще е в последващ запис.) Сложете му:
– ако ще го използвате за тунелиране – SSH сървър (това е темата на този запис – сложете го)
– ако ще го използвате за домашен файлов сървър – Samba
– ако ще го използвате за уеб сървър – Apache, lighthttpd или nginx
– ако ще го използвате за пощенски сървър – Postfix, fetchmail и/или друг пощенски софтуер
– ако ще го използвате за уеб прокси – Squid
и т.н.
Обикновено т.нар. “високи портове” (над 1024) не се блокират от провайдерите – настройте SSH сървъра да работи на такъв. (Влезте с администраторски достъп и отворете за редактиране файла /etc/ssh/sshd_config. Още в началото му ще видите ред, на който пише: Port 22. Сменете го на Port 5522, или което друго число над 1024 ви харесва, и престартирайте SSH сървъра. Ако не знаете как, просто престартирайте компютъра.) Пробвайте да се свържете отвън към вашия IP адрес и избрания от вас порт, най-лесно с програмката telnet – има я и за Уиндоус, и за Линукс. Ако системата ви плюе, че няма отговор, или провайдерът блокира този порт, или сте направили нещо не както трябва – потърсете си грешката и/или сменете порта. Ако излизат разни странни текстове, вероятно съдържащи неща като “OpenSSH”, имате връзка.)
Ще ви трябва също така пълноценен SSH клиент на мобилното ви устройство. Ако то е под Линукс (или Андроид), не е никакъв проблем. 🙂 Ако е под Уиндоус, помислете за вариант на SSH за Уиндоус, или за SSH клиент с поддръжка за форуардване на портове, примерно PuTTY (той ще се настройва по различен от описания начин, но принципно ще върши работа – просто го разцъкайте, и ще видите как става).
След като имате необходимото, се свържете с мобилното си устройство към Интернет извън дома си и стартирайте SSH със следната зловеща команда:
ssh -L localport:localhost:homeport -p homeSSHport user@homeIP
където думичките трябва да бъдат заместени със следното:
– localport: портът на мобилното устройство, на който искате да се появи съответната услуга
– localhost: адресът или името на локалния му хост (обикновено буквалното “localhost” върши работа)
– homeport: портът, на който се намира услугата на домашния ви компютър
– homeSSHport: портът, на който сте настроили да работи SSH сървъра у дома.
– user: потребителският ви акаунт на домашната ви машина
– homeIP: домашният ви IP адрес (става и DNS / DynDNS име, ако го имате)
Резултатът е, че ако насочите съответната програмка на мобилното ви устройство към неговия локален порт localport, тя ще се окаже свързана със съответната услуга на домашния ви сървър. И данните ще се преточват през обещания шифрован канал, към неблокирания порт. 🙂
Твърде омотано? Ето ви пример.
Да предположим, че на домашния си сървър имате импровизирано сайтче, чрез което си вършите някаква работа. (Например, скоро се очаква популярният свободен офис пакет LibreOffice да придобие възможността да работи през уебсървър и браузер, подобно на Google Docs – да кажем, че сте си направили личен “Google Docs” за документите ви.) Ако провайдерът ви блокира входящите връзки към порт 80 (уебсървър), няма да можете да се свържете с него отвън. А и да можете, идеята може да не е добра – не настроите ли HTTPS връзка, което е по-сложничко, всеки ще може да подслуша паролата ви… Затова е хубаво тази връзка да бъде преточена през шифрования канал на SSH.
В този вариант, настройките ви са следните:
– localport – да кажем, 1080 (може и да е 80, но ако портът е “нисък”, ще ви трябва локален администраторски достъп)
– homeIP – вашият домашен IP адрес, примерно 12.34.56.78
– homeport – 80 (уебсървърите обикновено чакат на този порт; ако специално сте конфигурирали вашия да чака на друг, впишете тук него)
– user – името на потребителския ви акаунт на домашния сървър (какъвто сте си го създали при инсталацията; да кажем, joe)
– homeSSHport – номерът, който вписахте в /etc/ssh/sshd_config срещу думата Port (да кажем, 5522)
При този вариант, “зловещата” командна инструкция ще изглежда така:
ssh -L 1080:localhost:80 -p 5022 joe@12.34.56.78
Въвеждате я. SSH ви пита за парола (тази на юзера joe на домашния ви сървър). Пишете я и се оказвате на командния ред на домашния ви сървър. Той може да ви е от полза за много неща (пак предмет на друг запис), но засега го зарежете – важното тук е друго. Отваряте браузера си и въвеждате в полето за сайт:
localhost:1080
и – о, чудо – мобилното ви устройство отваря “блокирания” ви домашен уебсървър. Или ви дава възможност да браузвате Интернет през него, без блокирания, ако сте настроили връзка за прокси. Или започва да сваля пощата ви, ако сте настроили връзка за пощенски клиент. Или ви предоставя каквато и да е друга услуга от домашния сървър. През обещания шифрован канал. 🙂
Разбира се, нещата могат да се опростят. Като начало, можете да запишете “зловещата” команда в шорткътче на екрана или на друго удобно място – само го цъкате и въвеждате парола. Ако сте много убедени, че никога няма да ви откраднат мобилното устройство, можете и да настроите домашния SSH сървър да позволява връзка по ключ от мобилката – тогава няма дори да въвеждате парола. (И можете да направите шорткътчето да отваря автоматично след това и браузера ви с подходящия адрес.) Може да се направят много удобства…
Но основното вече е готово. Честито! 🙂
Може да се напише още много. През SSH можете да форуарднете свой порт нанякъде другаде. Можете да свържете към “облака” си едновременно две мобилки, и да форуарднете порт от едната на другата. Или да ползвате от мобилното си устройство, където и да сте, услуга ограничена до само един IP адрес. Или, ако ви е нужен само порт форуардинг, без командния ред на SSH, да го махнете. Или да си препратите по същия начин екрана на служебния компютър, и да свършите на него спешната работа направо от плажа или хотелското легло с изглед към морето, без риск да ви подслушат. Или каквото още може ум да ви побере, свързано с подсигурено срещу подслушване прехвърляне на информация… Но успеете ли да направите това, със съвсем мъничко четене ще можете и другото сами. Съберете ли смелост да пробвате, ще сте стъпили на пътя на хакера – не кракера, а истинския хакер, онзи от легендите. Добре дошли!
А, щях да забравя. Искате да си ползвате файлсървъра, за да си дръпнете от него малко музика? Еквилибристиката с SSH клиента дори не ви е нужна, въпреки че и през нея става. Инсталирайте си какъв да е клиент, който поддържа SSH трансфери – Filezilla за Уиндоус или Линукс, WinSCP за Уиндоус – и точете каквото искате. Или си пуснете на сървърчето си аудиострийминг и си направете лично онлайн радио. Или…
Накратко – светът е пред вас. Имате свобода.