SSH тунели: конфигурация, използване

SSH тунелирането е метод за транспортиране на произволни мрежови данни през криптирана SSH връзка. Може да се използва за добавяне на криптирани остарели програми. Може също да се използва за внедряване на VPN (виртуални частни мрежи) и достъп до интранет услуги чрез защитни стени.

Въведение

Пренасочването на SSH порт създава сигурна връзка между компютъра и отдалечената машина, чрез която могат да бъдат прехвърляни услуги. Тъй като връзката е кодирана, SSH тунелирането е полезно за предаване на информация, която използва некриптиран протокол като IMAP, VNC или IRC.


SSH тунелът на Windows използва порт 22 за осигуряване на криптиране на данни, предавани чрез публична мрежа (като интернет), като по този начин осигурява функции на VPN. IPsec има транзитен режим, но може да работи и в тунелен режим чрез защитен шлюз за сигурност.

Определение

Тунелът през SSH е стандарт за сигурно отдалечено влизане и прехвърляне на файлове през ненадеждни мрежи. Той също така осигурява начин за защита на трафика на данни от всяко конкретно приложение, използвайки препращане на портове, като основно тунелиране на всеки TCP /IP порт чрез SSH. Това означава, че трафикът е насочен към потока вътре в криптираната SSH връзка, така че да не може да бъде изслушан или прихванат по време на пътя. SSH тунелирането ви позволява да добавите мрежова сигурност към остарели програми, които не поддържат шифроване.


Сигурна връзка на ненадеждна мрежа се установява между клиентския SSH и SSH сървъра. Тази SSH връзка е криптирана, защитава поверителността и целостта и удостоверява връзките за свързване. SSH връзката се използва от приложението за свързване със сървъра на приложения. Когато се активира тунелирането, приложението се свързва с порта на локалния хост, слушайки SSH клиента. След това клиентът SSH пренасочва приложението през неговия шифрован тунел към сървъра. Последният се свързва със сървъра на приложението - обикновено на същия компютър или в същия център за данни като SSH сървъра. По този начин връзката на приложението е защитена, без да е необходимо да се променят работните потоци на приложенията или крайните потребители.

Протоколи за тунелиране - какво е това?

В компютърните мрежи тунелиращият протокол позволява на ползвателя на мрежата да има достъп или да предоставя мрежова услуга, която базовата мрежа не поддържа или не предоставя директно. Едно от важните приложения е да се позволи на външен протокол да работи в мрежа, която не поддържа този конкретен протокол (например, стартирането на IPv6 през IPv4). Друг важен момент е предоставянето на услуги, които са неподходящи или опасни за използване с използването само на основни мрежови услуги. Например, предоставянето на корпоративен мрежов адрес на отдалечен потребител, чийто физически мрежов адрес не е част от корпоративната мрежа. Тъй като тунелирането включва повторно пакетиране на данните за трафика в друга форма, вероятно използвайки стандартно криптиране,важна характеристика е да се скрие естеството на трафика, който минава през тунелите.

Secure Shell - Secure Shell

Secure Shell се състои от шифрован тунел, създаден чрез SSH връзка. Потребителите могат да конфигурират SSH тунели, за да изпращат некриптиран трафик през мрежата чрез шифрован канал. Например, компютрите с Microsoft Windows могат да споделят файлове, използвайки протокола за сървър за съобщения (SMB) - некриптиран протокол. Ако искате да свържете отдалечено файловата система Microsoft Windows през интернет, някой следи връзката, може да вижда прехвърлените файлове. За да свържете сигурно файлова система на Windows, можете да инсталирате SSH тунел, който насочва целия SMB трафик към отдалечен файлов сървър чрез шифрован канал. Въпреки факта, че самият SMB протокол не съдържа криптиране, криптираният SSH канал, чрез който се движи, осигурява сигурност.

Типове препращане на портове

Препращането на портове е широко поддържана функция, която се намира във всички основни SSH клиенти и сървъри. С функцията за пренасочване на SSH порт, можете да прехвърляте различни видове интернет трафик през мрежата. Това се използва, за да се избегне проследяването на мрежата или да се заобиколят неправилно конфигурираните рутери в Интернет. Има три вида препращане на портове от SSH:
  • локално - SSH клиентските връзки се пренасочват към SSH сървъра, а след това към сървъра;
  • дистанционно - връзките към SSH сървъра се пренасочват чрезSSH клиент, а след това към сървъра;
  • Динамични - връзките от различни приложения се изпращат през SSH клиента, след това през SSH сървъра и накрая до няколко целеви сървъра.
  • Пренасочването на локални портове е най-често срещаният тип и по-специално ви позволява да заобиколите защитната стена на компания, която блокира Уикипедия. Дистанционното пренасочване на портове е по-рядко. Позволява ви да се свържете със своя SSH сървър към компютъра си в интранет на вашата компания. Динамичното пренасочване на портове се използва рядко. Позволява ви да заобиколите защитната стена на компания, която напълно блокира достъпа до интернет. Това изисква много работа по персонализиране и обикновено е по-лесно да се използва пренасочването на локални портове за конкретни сайтове, до които искате да имате достъп.

    Спецификации

    За да използвате препращане на портове, трябва да се уверите, че пренасочването на портовете е активирано на вашия сървър. Също така трябва да предоставите на клиента си номера на изходния и целевия порт. Ако използвате локално или отдалечено пренасочване, трябва да информирате клиента за крайния сървър. Ако се използва динамично пренасочване, трябва да конфигурирате вашите приложения да използват SOCKS прокси сървъра. Отново, как да направите това зависи от кой SSH клиент, който използвате, така че може да се наложи да прочетете повече за документацията.

    Примери за изпълнение

    Най-добрият начин да се разбере как се работи това е - да се разгледа пример с местно пренасочване. Представете си какво стеВие се намирате в частна мрежа, която не ви позволява да се свързвате с конкретен сървър. Да предположим, че сте на работа и vk.com е блокиран. За да заобиколим заключването, можем да създадем тунел през сървър, който не е в нашата мрежа и по този начин да има достъп до необходимия ресурс: $ ssh -L 9000: vk.com: 80 [email protected]. Ключът тук е -L, който заявява, че извършваме локално пренасочване на портове. След това екипът съобщава, че изпращаме нашия 9000 локален порт на vk.com:80, който е по подразбиране за HTTP. Сега трябва да отворите браузъра си и да отидете на http: //localhost: 9000. Безспорното предимство на SSH тунелите е, че те са криптирани. Никой няма да види кои сайтове посещавате - само SSH връзката със сървъра ще бъде видима.

    Свързване към база данни на защитната стена

    Друг добър пример е, ако имате нужда от достъп до порт на вашия сървър, към който той може да се направи само от локален хост, а не отдалечено. Пример тук е необходимостта от свързване към конзолата на базата данни, която позволява само локална връзка от съображения за сигурност. Например, използвате PostgreSQL на вашия сървър, който по подразбиране слуша за порт 5432: $ ssh -L 9000: localhost: 5432 [email protected]. Променената част е - localhost: 5432, която се отнася до пренасочването на връзки от локалния порт 9000 към localhost: 5432 и към вашия сървър. Сега можем просто да се свържем с нашата база данни: $ psql -h localhost -p 9000.

    Отдалечено пренасочване на портове

    Сега нека обясним в реалния пример работата на дистанционнотоизпращане на повикване. Да предположим, че разработвате Rails приложение на вашата локална машина и искате да го покажете на приятел. За съжаление вашият интернет доставчик не ви е предоставил публичен IP адрес, така че е невъзможно да се свържете директно с компютъра си чрез интернет. Понякога това може да бъде решено чрез задаване на NAT (Broadcast Network Addresses) на вашия рутер, но това не винаги работи и трябва да промените конфигурацията на рутера, което не винаги е желателно. Това решение също не работи, ако нямате достъп до мрежата си. За да разрешите този проблем, ще ви е необходим друг компютър, който е обществено достъпен и има достъп до SSH. Това може да бъде всеки сървър в Интернет, ако можете да се свържете с него. Ще създадем SSH тунел, който ще отвори нов порт на сървъра и ще го свърже с локалния порт на вашия компютър: $ ssh-r 9000: localhost: 3000 [email protected] Тук синтаксисът е много подобен на пренасочването на локален порт с един заместител -L на -R Но както при локалното препращане на портове, синтаксисът остава непроменен.

    Обхват и рискове

    Недостатъкът е, че всеки потребител, който може да влезе в сървъра, има право да разреши пренасочване на портове. Широко се използва от вътрешни ИТ специалисти, за да влязат в техните домашни машини или сървъри в облака, препращане на портове от сървъра към корпоративния интранет на работния им компютър или на съответния сървър. Хакерите и зловредният софтуер също могат да го използват, за да оставят дефект в алгоритъма във вътрешната мрежа. Може да се използва и закрие следите на нападателите, като атакува с няколко устройства, които позволяват неконтролирано тунелиране. Тунелирането често се използва във връзка с PHP SSH тунелните ключове и удостоверяването на публичния ключ за пълна автоматизация на процеса.

    Предимства

    Продажбите на SSH тунели са широко използвани в много корпоративни среди, които използват системите на мейнфрейм като приложения. В тези среди самите приложения могат да имат много ограничена поддръжка на сигурността. Използването на тунелиране, съвместимост със SOX, HIPAA, PCI-DSS и други стандарти може да бъде постигнато без необходимост от промяна на приложенията. В много случаи тези приложения и сървъри на приложения са такива, че извършването на промени в тях вероятно е непрактично или скъпо. Изходният код може да не е наличен, продавачът може да е фалирал, продуктът може да е извън кутията или да няма екип от разработчици. Добавянето на защитна обвивка, като замазка към SSH тунела, осигурява икономичен и практичен начин за добавяне на сигурност към такива приложения. Например всички банкомати на нашата страна работят с тунели за целите на сигурността.

    Рискове

    Като полезно нещо несъмнено подкрепя тунелирането на SSH. Тя включва рисковете, които трябва да бъдат разгледани от отдела за корпоративна информационна сигурност. Свързването на безплатни SSH тунели е защитено от силно кодиране. Това прави съдържанието им невидимо за повечето внедрени решения за мрежово наблюдение и филтриране на трафика. Тази невидимост се носизначителен риск, ако се използва за злонамерени цели, като например филтриране на данни. Киберпрестъпниците или зловредният софтуер могат да използват SSH тунели, за да скрият неоторизираните си съобщения или да премахнат откраднати данни от целевата мрежа.
    В SSH тунелна атака, нападателят инсталира сървър извън целевата мрежа (например, Amazon AWS). След като се открие измамникът в целевата система, той се свързва с външен SSH сървър отвътре. Повечето организации позволяват на Linux SSH тунелите да се извеждат, поне ако имат сървъри в публичен облак. Тази SSH връзка е конфигурирана с опция, която ви позволява да изпращате TCP порт от порта на външния сървър към SSH порта на сървъра във вътрешната мрежа. За да конфигурирате този SSH тунел, трябва да имате една единствена команда и лесно можете да я автоматизирате. Повечето защитни стени почти не я защитават.

    Свързани публикации