news
Serverspace в «Рейтинге провайдеров IaaS Enterprise 2023» от Market.CNews
KA
3 августа 2023
Обновлено 2 августа 2023

SSH туннель: как создать и использовать?

VPS Сети

Введение

Цель туннелирования SSH — обеспечить надежную и безопасную передачу данных между двумя узлами или устройствами по ненадежным или открытым сетям, таким как Интернет. Когда трафик должен проходить через внутренние порты и безопасно перенаправляться наружу, туннелирование SSH может быть использовано для создания защищенного канала связи, позволяющего трафику безопасно покидать внутреннюю сеть и направляться во внешнюю.

Основные варианты использования SSH-туннелирования для этих целей включают:

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

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

Требования к установке

  • Root-права;
  • Debian 11 или более поздняя версия;
  • Начальные знания о работе ОС;
  • Подключение к Интернету.

Создадим туннель

Для безопасной передачи перед использованием утилиты нам необходимо обновить и установить все пакеты:

apt update && apt upgrade -y
Обновление и установка пакетов
Скриншот №1 — Обновление

Для создания туннеля по SSH нам необходимо сформировать открытый и закрытый ключ, что поможет более надежно авторизовать пользователя и автоматизировать процесс. Выполним команду ssh-keygen:

ssh-keygen -t rsa
Создание пары ключей
Скриншот №2 — Создание пары ключей

В этой части выберите путь для сохранения открытого и закрытого ключей для подключения по SSH, по умолчанию они будут сохраняться в папке /root/.ssh/. Затем введите ключевую фразу, если хотите усложнить компрометацию закрытого ключа:

Пути ключей
Скриншот №3 — Пути ключей

Также в результате хеширования открытого ключа мы видим хэш, по которому можно идентифицировать пользователя. Но основное назначение хеширования открытых ключей в контексте SSH — это удобство и эффективность аутентификации. После того как хэш открытого ключа клиента будет сохранен на сервере, сервер может быстро и эффективно сравнить его с хэшами, которые уже хранятся в его базе данных. Хотя хэширование открытых ключей не обеспечивает дополнительной безопасности в том смысле, что не делает ключи секретными (открытые ключи всегда должны оставаться открытыми), оно обеспечивает защиту от случайных или злонамеренных изменений ключей или ошибок копирования.

После этого необходимо скопировать открытый ключ и сохранить его на целевом сервере с помощью команды, приведенной ниже:

nano /root/.ssh/id_rsa.pub

После ввода команды появится длинная строка с различными символами, в текстовом редакторе nano необходимо нажать Alt + 6, а затем нажать комбинацию кнопок Ctrl + X!

Просмотр публичного ключа
Скриншот №4 — Просмотр публичного ключа

Переключите окна терминала и вставьте файл в нужную директорию, по умолчанию это /home/user/.ssh/id_rsa.pub на целевой машине или, как правило, для этих целей мы можем сразу отправить его на целевой сервер с помощью команды, приведенной ниже:

ssh-copy-id root@94.141.96.47

В этой команде необходимо заменить IP-адрес вашей целевой машины и добавить открытый ключ. В этот момент сервер будет сравнивать свою базу хэш-ключей и ваш хэш открытого ключа. В нашей ситуации мы не добавляем файл на сервер и подключаемся впервые:

Копирование ключа
Скриншот №5 — Копирование ключа

Для подтверждения того, что у вас есть разрешение на добавление ключа к данной учетной записи — введите пароль.

Добавление ключа
Скриншот №6 — Добавление ключа

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

Сменим SSH порт

Изменение стандартного порта SSH с 22 на нестандартный порт — простой, но эффективный способ усиления безопасности и защиты от автоматического сканирования и атак методом перебора. Для этого откройте конфигурационный файл на своей машине:

nano /etc/ssh/sshd_config
Конфигурация порта
Скриншот №7 — Конфигурация порта

В открывшемся окне удалите хэштег перед Port и измените значение на желаемое. После этого нажмите Ctrl+O для сохранения файла и перезапустите службу ssh, выполнив следующую команду:

systemctl restart ssh

Теперь ваш порт для SSH изменен и вы можете использовать его для установки соединения!

Использование туннеля

Кроме управления и передачи данных на другую машину с помощью туннелирования мы можем использовать его для перенаправления трафика и представлять наш туннель как прокси-сервер.

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

ssh  -L 9999:127.0.0.1:80 root@94.141.96.47
Статический проброс порта
Скриншот №8 — Статический проброс порта

Поэтапное объяснение:

  • При выполнении указанной команды она от имени пользователя инициирует SSH-соединение с удаленным сервером. После установления соединения ваша локальная машина начинает прослушивать порт 9999;
  • При каждом запросе на порт 9999 на локальной машине SSH перенаправляет этот трафик через установленное SSH-соединение на удаленный сервер. Затем удаленный сервер перенаправляет трафик на порт 80, который обычно используется для HTTP-серверов;
  • Таким образом, при обращении к адресу 127.0.0.1:9999 (localhost:9999) на локальной машине трафик фактически перенаправляется на удаленный сервер и подключается к его порту 80. Эта функциональность становится полезной, когда необходимо получить доступ к веб-серверу на удаленной машине, который не доступен напрямую из Интернета, но может быть доступен через SSH-туннель.

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

ssh -D 8888 root@94.141.96.47
Динамический проброс порта
Скриншот №9 — Динамический проброс порта

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

В отличие от локальной проброски портов, о которой мы говорили ранее (с помощью опции -L), динамическая проброска портов (с помощью опции -D) создает прокси-сервер SOCKS непосредственно на локальной машине. Когда приложение на локальной машине пытается получить доступ в Интернет, оно может использовать этот SOCKS-прокси-сервер, настроив его на подключение через localhost:8888.

В результате весь сетевой трафик с локальной машины будет перенаправляться через установленное SSH-соединение на удаленный сервер. Удаленный сервер будет обрабатывать исходящий трафик и перенаправлять его в конечный пункт назначения в Интернете.

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

Вывод

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

Оценка:
5 из 5
Аverage rating : 5
Оценок: 1
191028 Санкт-Петербург Литейный пр., д. 26, Лит. А
+7 (812) 403-06-99
700 300
ООО «ИТГЛОБАЛКОМ ЛАБС»
700 300

Вам также может быть интересно...