Работаем с SSH-туннелями

В этой статье будем разбирать практические примеры работы с SSH-туннелями.

Конфигурационные файлы

Клиентский конфиг располагается по пути: ~/.ssh / config и может выглядеть так:

В данном примере две директивы:

  • одна сообщает, что на все хосты ходим через порт 2222;
  • а вторая – что нужно использовать конкретное имя пользователя, порт и ключ для узла proglibserver.

Основы

В примере ниже используются основные параметры, часто применяемые при коннекте к удаленному серверу. Все нюансы настраиваются в файле sshd_config.

  • — C: использование компрессии. Если ожидается большой текст, этот ключ может улучшить ситуацию, сжимая данные на лету.
  • proglibserver: имя удаленного сервера.
  • author@: – это логин. При попытке подключиться без логина, система подставит учетку, под которой вы находитесь на родительской машине.
  • — p 2200: порт удаленной машины (22 обычно не используется, т. к. это дефолтное значение). Для подключения к другому порту используется ключ -p.
  • — v: вывод на экран дебага (пригодится при сбоях аутентификации). Можно совмещать с другими ключами для получения нужного эффекта.

 Все параметры, кроме имени хоста, являются необязательными.

Примеры работы с SSH-туннелями

Понимание данных трюков принесет пользу как начинающему специалисту, работающему с сетью, так и IT-безопаснику.

Копирование публичного ключа

Эта команда выполняет то, что вы обычно делаете вручную – копирование ~/.ssh/id_rsa.pub из вашей системы в ~/.ssh/authorized_keys на proglib-сервере:

Удаленное выполнение команд

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

После того, как файл будет получен, grep выполнится на локальной машине. Запустите grep на удаленной стороне, если ожидается много информации.

Ниже пример другого способа копирования ключа на удаленный сервер:

Проброс портов

В процессе проброса открывается порт в локальной ОС и подключается к порту на другом конце туннеля.

Порт 7777 слушается на localhost и пробрасывается на 90 порт proglibserver. 127.0.0.1 – это localhost удаленного сервера.

Локальная папка на удаленной машине

Используя sshfs, можно примонтировать локальный каталог на удаленную машину:

Динамическая настройка проброса портов

Вы глубоко «закопались» в сети, манипулируя SSH-туннелями, логинились полдюжины раз, и вам нужно получить порт на рабочем ПК, проброшенный с удаленной машины в рамках текущей сессии? Как это сделать, смотрите на примере ниже:

Обратный прокси в работе с SSH-туннелями

В данном примере устанавливается SOCKS прокси (весь трафик в туннеле будет идти от нашего localhost).

Траблшутинг

Если в процессе создания туннеля возникают трудности, используйте netstat для проверки привязки порта к интерфейсу. В нашем примере указано 0.0.0.0, но в случае, если не указан параметр GatewayPorts в sshd_config, все будет слушаться на 127.0.0.1.

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

Проксирование трафика SSH-туннелями через SOCKS

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

Мы запускаем сервер на порту 8888, а второй командой проверяем, слушается ли порт. Немного изменив команду, мы даем возможность другим приложениям подключаться к нашему прокси:

Чтобы проксирование заработало в браузере Chrome, выполните следующие шаги:

  • перейдите в Настройки -> Дополнительные -> Система -> Настройки прокси-сервера;
  • укажите IP и порт.

Разбираемся с SSH-туннелями

Вы можете это сделать одной строкой:

Использование других приложений с прокси-сервером

Существует много приложений, использующих SOCKS. Браузер – простой и самый популярный пример. Некоторые приложения придется «по хитрому» настроить для использования прокси-сервера, а другим может быть необходима «вспомогательная» программа, работающая по протоколу SOCKS. Примером этого является proxychains. С помощью этого инструмента можно использовать Microsoft RDP через SOCKS.

Копирование файлов через SCP

Для копирования в SSH-клиенте есть два инструмента: scp и sftp.

После выполнения команды копируется файл image.png в папку /home/santa и переименовывается в image _2.png.

Удаленный tcpdump и просмотр в Wireshark

Эта команда пригодится для удаленного графического анализа дампа:

Удаленный запуск GUI-приложения

Существует возможность запускать GUI-приложения удаленно. Это реально при наличии установленного пакета X11 и YES для X11Forwarding в файле sshd_config. Запустить можно любой софт. В примере используется консоль VMware:

rsync и копирование файлов

Если вам часто нужно делать бекапы больших папок и файлов, то rsync будет удачным выбором. Этот инструмент умеет восстанавливать неудачный сеанс передачи и копировать только отличия между двумя временными точками:

SSH через Tor

Команда из примера ниже проксирует SSH-сессию при помощи инструмента torsocks через сеть Tor (9050 порт):

К применению tor, как и обратного прокси, стоит подходить со всей ответственностью, понимая, какие проблемы безопасности ОС могут всплывать и предоставлять пути движения трафика.

Двойной проброс портов

Можно пробрасывать порт на удаленный сервер через свою машину:

Эта команда перенаправляет трафик с proglib-сервера на 20.20.20.20 (proglib-сервер будет выступать источником всего трафика).

Потоковое видео с использованием VLC + SFTP

Используйте опцию VLC Медиа | Открыть URL, чтобы указать адрес файла sftp: / / location. Если установлена защита, то появится запрос на ввод сведений для проверки подлинности.

SSH на образ EC2

Чтобы подключаться к вашему EC2-образу Amazon (ключ -i), необходимо использовать приватный ключ. Скачайте его в админке Amazon и поменяйте права (chmod 400 key.pem). Держите этот ключ в надежном месте или положите его в ~/.ssh/.

«Прыжки» через хосты

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

Использовать эту возможность можно после установки «YES» для параметра ProxyJump в ssh_config.

Reverse-SSH туннель

В этом примере рассматривается создание порта на удаленном сервере, который подключается обратно к локальному порту на нашем localhost (или другой ОС).

Установленное соединение с proglibserver по порту 1999 перенаправится в порт 902 нашего клиента.

Копирование папки

Данная команда сжимает папку (ключ -j) и извлекает ее, создавая дубликат:

Редактирование файлов через SCP

В локальной системе во время выполнения команды в папке /tmp создается файл, а затем копируется на сервер, как только редактирование завершилось:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

PHP Code Snippets Powered By : XYZScripts.com