Тонкости использования SSH

11/03/2019


Наверное, каждый системный администратор и программист в процессе своей работы пользуются ssh для подключения к удаленным серверам. Сложно себе представить современный IT мир без SSH. Если раньше это был стандартный протокол для удаленного управления NIX систем, то теперь практически все IT и телекоммуникационное оборудование использует его в своей работе. Протокол SSH использует современные алгоритмы шифрования для передачи трафика между сервером и клиентом. Что передается внутри зашифрованного SSH канала узнать для внешнего наблюдателя невозможно.

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

Типы туннелирования трафика через SSH

SSH позволяет организовать три типа туннелирования трафика, которые могут быть полензы в различных ситуация. Классификация типов SSH туннелей представлена ниже:

  1. Перенаправление на локальный порт (Local Port Forwarding).
  2. Перенаправление на удаленный порт (Remote Port Forwarding).
  3. Динамическое перенаправление (Dynamic Forwarding).

Local Port Forwarding

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

Для этого на клиентском компьютере выполняем команду ssh:

ssh -L 9000:192.168.100.100:8080 sshuser@xx.xx.xx.xx

После чего образуется SSH туннель между нашим компьютером и проксирующим сервером. При этом точкой входа для нас становится 9000 TCP порт на локальном компьютере. А точкей выхода трафика из туннеля — 8080 TCP порт на внутреннем сервере в сети 192.168.100.100. Теперь достаточно в браузере указать адрес localhost:9000 и мы попадем на наш корпоративный веб портал.

С помощью аналогичной схемы, можно прокинуть туннели до любого сервиса в корпоративной сети из вне, имея только один сервер с ssh сервисом, доступным в Интернете.

Remote Port Forwarding

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

Для этого на сервере, находящимся в сети организации, выполняем команду ssh:

ssh -R 9000:192.168.100.100:8080 sshuser@xx.xx.xx.xx

Теперь на удаленном компьютере, к котому была организована ssh сессия, можно через 9000 TCP порт получить доступ к серверу 192.168.100.100 во внутренней сети на порт 8080. По сути так же, как и при Local Port Forwarding, у нас появляется доступ на корпоративный портал через SSH туннель. Единственная разница, туннель инициализируется изнутри наружу.

Dynamic Forwarding

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

Такой туннель легко создается с помощью следующей комманды:

ssh -D 9000 sshuser@xx.xx.xx.xx

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

Другой возможный случай использования данного типа туннелирования — доступ в Интернет к ресурсам, которые заблокированы по тем или иным причинам в Вашем сегменте сети. С помощью данного туннеля Вы сможете получить доступ ко всем нужным ресурсами Интернета. Скажем, у Вас есть подключение по WiFi со множеством ограничений, но при этом открыт порт, через который Вы можете поднять ssh туннель. Этого будет достаточно, чтобы Вы смогли беспрепятсвенно пользоваться сервисами Интернет с помощью ssh туннеля.

Выводы

Обычный ssh доступ предоставляет как мощнейший инструмент для организации доступа в нужные участки сети, так и огромную брешь в безопасности, которую практически сложно контролировать. ssh туннель может быть организован по любому порту. Для того, чтобы отслеживать на каком порту передается ssh трафик, необходимы средства типа NG Firewall или IPS. Но такие средства доступны далеко не каждой организации.

Любому сетевому администратору и специалисту по информационной безопасности необходимо знать эти нюансы работы ssh и учитывать их при организации защиты сети и серверов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *