Сисадминство

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

SSH-туннелирование (также называемое перенаправление портов SSH) — это просто маршрутизация трафика локальной сети через SSH на удаленные хосты. Это означает, что все ваши соединения защищены с помощью шифрования. Это обеспечивает простой способ настройки основного VPN (Virtual Private Network), полезного для подключения к частным сетям по незащищенным сетям общего пользования, таким как Интернет.

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

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

Если вы интересуетесь защитой компьютерной сети на предприятии, можно заказать Касперский стандартный у золотого партнера Лаборатории Касперского: его предложение отличается более привлекательной ценой и доставкой во все регионы РФ.

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

Испытательная среда:

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

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

$ ssh admin@server1.example.com
Подключение удаленного 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

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

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

$ sudo vim/etc/ssh/sshd_config

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

GatewayPorts yes
Включение удаленного перенаправления портов SSH

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

$ sudo systemctl restart sshd
OR
$ 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 .

Следующая команда запустит прокси SOCKS на порту 1080, что позволит вам подключиться к удаленному хосту.

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

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

Резюме

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

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

Exit mobile version