SSH туннели
Life-Hack - Linux/Хакинг/Хакер/ИБ/OsintТуннель через SSH – стандарт, обеспечивающий безопасный удаленный доступ в систему и передачу файлов по защищённым сетям. Кроме того, он защищает трафик данных приложения за счёт переадресации портов, обычно это туннелирование произвольного порта TCP/IP через SSH. То есть трафик направляется на поток внутри зашифрованного SSH-соединения и не может быть перехвачен извне. SSH-туннелирование особенно актуально, если требуется обеспечить безопасность устаревших приложений, которые не поддерживают шифрование.
В рамках SSH-туннелирования устанавливается соединение между клиентом и сервером, оно зашифровывается и тем самым позволяет защитить конфиденциальность и целостность данных.
Приложение соединяется с сервером приложений по SSH, связываясь с портом на локальном хосте. Данные приложения в зашифрованном виде перенаправляются по туннелю на сервер, подключенный к фактическому серверу приложений. Благодаря SSH-туннелированию связь приложения остаётся защищённой, при этом не требуется менять рабочие процессы.
SSH-туннели применяются для:
- Предоставления зашифрованных каналов для протоколов, использующих открытый текст
- Открытия бэкдоров в частные сети
- Обхода сетевых экранов
Local ssh Port Forwarding
Вы можете использовать локальный ssh-туннель, когда хотите получить доступ к ресурсу, к которому вы не можете получить доступ напрямую, но ssh-сервер, к которому у вас есть доступ, может.
На изображении выше синий хост не может связаться с http://192.168.0.3, но может связаться по ssh с 192.168.0.2. Следующая команда ssh, выполненная на синем хосте, позволит синему хосту получить доступ к красному хосту.
ssh -L 8080:192.168.0.3:80 reduser@192.168.0.2
Теперь синий хост может открыть браузер, перейти к http://localhost:8080 и получить веб-страницу, размещенную на 192.168.0.3.
Local Port Forward
На изображении выше синий хост хочет подключиться к красному хосту через порт 80, но между ними есть брандмауэр, который запрещает это. Поскольку синий хост может подключаться по ssh к красному хосту, мы можем создать локальный туннель ssh, перенаправляющий порт для доступа к этому порту. Команда на синем хосте будет такой:
ssh -L 8080:192.168.0.2:80 reduser@192.168.0.2
Теперь, когда синий хост откроет браузер и перейдет в http://localhost:8080, он сможет увидеть все, что есть у красного сервера на порту 80.
Remote SSH Port Forwarding
В этом сценарии мы создаем обратный ssh-туннель. Здесь мы можем инициировать ssh-туннель в одном направлении, а затем использовать этот туннель для создания ssh-туннеля обратно в другом направлении. Это может быть полезно, когда вы помещаете дрон-компьютер в сеть и хотите, чтобы он «позвонил домой». Затем, когда он звонит домой, вы можете подключиться к нему через установленный туннель ssh.
Мы находимся на зеленом хосте и хотим подключиться по ssh к синему хосту. Однако брандмауэр блокирует это соединение напрямую. Поскольку синий хост может подключаться по ssh к зеленому хосту, мы можем подключаться с его помощью, и когда зеленый хост захочет подключиться по ssh к синему хосту, он сможет использовать ранее установленный туннель. Синий хост инициирует ssh туннель следующим образом:
ssh -R 2222:localhost:22 greenuser@192.168.0.2
Это откроет порт 2222 на зеленом хосте, который затем перенаправит его на порт 22 на синем хосте. Таким образом, если зеленый хост подключится к самому себе по ssh на порт 2222, он достигнет синего хоста. Зеленый хост теперь может обращаться по ssh на синий хост следующим образом:
ssh -p 2222 blueuser@localhost