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 состоит из зашифрованного туннеля, созданного через соединение протокола 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 user@example.com.

Ключевым моментом здесь является -L, в котором говорится, что мы выполняем локальную переадресацию портов. Затем команда сообщает, что мы пересылаем наш локальный порт 9000 на vk.com:80, который является портом по умолчанию для HTTP. Теперь необходимо открыть свой браузер и перейти по адресу http://localhost: 9000.

Неоспоримое преимущество SSH-туннелей заключается в том, что они зашифрованы. Никто не увидит, какие сайты вы посещаете — будут видны только SSH-соединения с сервером.

Подключение к базе данных за брандмауэром

Еще один хороший пример: если вам нужно получить доступ к порту на вашем сервере, к которому это можно сделать только с локального хоста, а не удаленно.

Примером здесь является необходимость подключения к консоли базы данных, которая позволяет только локальное подключение по соображениям безопасности. Допустим, вы используете PostgreSQL на своем сервере, который по умолчанию прослушивает порт 5432: $ ssh -L 9000: localhost: 5432 user@example.com.

Часть, которая здесь изменилась, - localhost: 5432, в которой говорится о переадресации соединений с вашего локального порта 9000 на localhost: 5432 и на ваш сервер. Теперь мы можем просто подключиться к нашей базе данных: $ psql -h localhost -p 9000.

Удаленная переадресация портов

Теперь объясним на реальном примере работу удаленной переадресации. Допустим, вы разрабатываете приложение Rails на своей локальной машине, и хотите показать его другу. К сожалению, ваш интернет-провайдер не предоставил вам публичный IP-адрес, поэтому невозможно напрямую подключиться к ПК через Интернет.

Иногда это можно решить, настроив NAT (трансляция сетевых адресов) на вашем маршрутизаторе, но это не всегда работает, и для этого требуется изменить конфигурацию вашего маршрутизатора, что не всегда желательно. Это решение также не работает, если у вас нет доступа администратора в вашей сети.

Чтобы устранить эту проблему, понадобится другой компьютер, который является общедоступным и имеет доступ к SSH. Это может быть любой сервер в Интернете, если вы можете подключиться к нему. Мы создадим SSH-туннель, который откроет новый порт на сервере и подключит его к локальному порту на вашем компьютере:

$ ssh-R 9000: localhost: 3000 user@example.com

Синтаксис здесь очень похож на локальную переадресацию портов, с одной заменой -L на -R. Но, как и при локальной переадресации портов, синтаксис остается неизменным.

Сфера применения и риски

Недостатком является то, что любой пользователь, который может войти на сервер, вправе включить переадресацию портов. Это широко используется внутренними ИТ-специалистами для входа в свои домашние машины или серверы в облаке, пересылки порта с сервера обратно в корпоративную интрасеть на их рабочий компьютер или подходящий сервер. Хакеры и вредоносное ПО также могут использовать его, чтобы оставить дефект алгоритма во внутренней сети. Его также можно использовать для сокрытия треков атакующих, путем атаки с помощью нескольких устройств, которые допускают неконтролируемое туннелирование.

Туннелирование часто используется вместе с ключами PHP SSH-туннеля и аутентификацией открытого ключа для полной автоматизации процесса.

Преимущества

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

Во многих случаях эти приложения и серверы приложений таковы, что внесение изменений в них, вероятно, окажется непрактичным или чрезмерно дорогостоящим. Исходный код может быть недоступен, продавец, возможно, обанкротился, продукт может оказаться вне поддержки или отсутствует команда разработчиков. Добавление защитной оболочки, такой как SSH-туннель putty, обеспечивает экономичный и практичный способ добавления безопасности для таких приложений. Например, все сети банкоматов нашей страны работают с использованием туннелирования для обеспечения безопасности.

Риски

В качестве полезной вещи, несомненно, выступает SSH-туннелирование. Оно включает риски, которые необходимо решать корпоративным ИТ-отделам безопасности. Соединения бесплатных SSH-туннелей защищены сильным шифрованием. Это делает их содержимое невидимым для большинства развертываемых решений сетевого мониторинга и фильтрации трафика. Эта невидимость несет значительный риск, если она используется для вредоносных целей, таких как фильтрация данных.

Киберпреступники или вредоносное ПО могут использовать брут SSH-туннелей для скрытия своих несанкционированных сообщений или для извлечения похищенных данных из целевой сети.

В SSH-туннельной атаке злоумышленник устанавливает сервер за пределами целевой сети (например, в Amazon AWS). Как только мошенник оказывается в целевой системе, он подключается к внешнему серверу SSH изнутри. Большинство организаций разрешают исходящие соединения в SSH-туннеле Linux, по крайней мере, если они имеют серверы в общедоступном облаке. Это SSH-соединение настроено с опцией, которая позволяет производить пересылку TCP-порта из порта на внешнем сервере в SSH-порт на сервере во внутренней сети. Для настройки этого туннеля SSH требуется одна однострочная команда внутри, и ее можно легко автоматизировать. Большинство брандмауэров практически не защищают от него.

Комментарии