Как создать туннелирование SSH или перенаправление портов в Linux

SSH-туннелирование (также называемое пересылкой портов SSH) — это просто маршрутизация трафика локальной сети через SSH на удаленные хосты.

Это означает, что все ваши соединения защищены с помощью шифрования.

Он предоставляет простой способ настройки базовой виртуальной частной сети (Virtual Private Network), полезной для подключения к частным сетям через незащищенные общедоступные сети, такие как Интернет.

Вы также можете использовать это решение, чтобы показывать локальные серверы за NAT и брандмауэрами в Интернет через защищенные туннели, как реализовано в ngrok.

Сессии SSH разрешают туннельные сетевые подключения по умолчанию, и существует три типа пересылки портов SSH: локальная, удаленная и динамическая переадресация портов.

В этой статье мы продемонстрируем, как быстро и легко настроить туннелирование SSH или различные типы переадресации портов в Linux.

Тестовая среда

Для задач этой статьи мы используем следующую настройку:

  • Локальный узел: 192.168.43.31
  • Удаленный хост: Linode CentOS 7 VPS с именем хоста server1.example.com.

Как правило, вы можете безопасно подключиться к удаленному серверу с помощью SSH.

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

Локальный переброс портов SSH

Этот тип переадресации портов позволяет подключаться с локального компьютера к удаленному серверу.

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

Вы можете перенаправить локальный порт (например, 8080), который затем можно использовать для доступа к приложению локально следующим образом.

Флаг -L определяет порт, перенаправленный на удаленный хост и удаленный порт.

$ ssh admin@server1.example.com -L 8080: server1.example.com:3000

Добавление флага -N означает, что вы не выполняете удаленную команду, вы не получите оболочку в этом случае.

$ ssh -N admin@server1.example.com -L 8080: server1.example.com:3000

Параметр -f указывает ssh работать в фоновом режиме.

$ ssh -f -N admin@server1.example.com -L 8080: server1.example.com:3000

Теперь, на вашей локальной машине, откройте браузер, вместо того, чтобы обращаться к удаленному приложению, используя адрес server1.example.com:3000, вы можете просто использовать localhost: 8080 или 192.168.43.31:8080, как показано на скриншоте ниже.

Удаленное перенаправление портов SSH

Удаленная переадресация портов позволяет вам подключиться с удаленного компьютера к локальному компьютеру.

По умолчанию SSH не разрешает удаленное перенаправление портов.

Вы можете включить его с помощью директивы GatewayPorts в главном файле конфигурации SSHD /etc/ssh/sshd_config на удаленном хосте.

Откройте файл для редактирования, используя ваш любимый редактор командной строки.

$ sudo vim /etc/ssh/sshd_config 

Найдите требуемую директиву, раскомментируйте ее и установите ее значение «yes», как показано на скриншоте.

Сохраните изменения и выйдите. Затем вам необходимо перезапустить sshd, чтобы применить последнее изменение, которое вы сделали.

$ sudo systemctl restart sshd
или
$ sudo service sshd restart

Затем запустите следующую команду для перенаправления порта 5000 на удаленном компьютере на порт 3000 на локальном компьютере.

$ ssh -f -N admin@server1.example.com -R 5000:localhost:3000

Как только вы поймете этот метод туннелирования, вы можете легко и безопасно выявить локальный сервер разработки, особенно за NAT и брандмауэрами в Интернете по защищенным туннелям.

Аналогичным образом работают туннели, такие как Ngrok, pagekite, localtunnel и многие другие.

Динамическое перенаправление портов SSH

Это третий тип переадресации портов.

В отличие от локальной и удаленной переадресации портов, которые позволяют обмениваться данными с одним портом, этот метод делает возможным полный набор TCP-коммуникаций в разных портах.

Динамическая переадресация портов настраивает ваш компьютер как прокси-сервер SOCKS, который по умолчанию прослушивает порт 1080.

Для начала SOCKS — это интернет-протокол, который определяет, как клиент может подключаться к серверу через прокси-сервер (SSH в этом случае).

Вы можете включить динамическую переадресацию портов с помощью опции -D.

$ ssh -f -N -D 1080 admin@server1.example.com

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

Обратите внимание, что прокси-сервер SOCKS перестанет работать после закрытия сеанса SSH.

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

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

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Как создать туннелирование SSH или перенаправление портов в Linux: 2 комментария

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

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

5e7fa976b0640d40