Как использовать SSH-туннелирование для доступа к ограниченным серверам и безопасного просмотра

Клиент SSH подключается к серверу Secure Shell, который позволяет вам выполнять команды терминала, как если бы вы сидели перед другим компьютером. Но клиент SSH также позволяет вам «туннелировать» порт между вашей локальной системой и удаленным сервером SSH.

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

Это можно сделать с помощью команды ssh , включенной в Linux, macOS и другие UNIX-подобные операционные системы. В Windows, в которой нет встроенной команды ssh, мы рекомендуем бесплатный инструмент PuTTY для подключения к SSH-серверам. Он также поддерживает SSH туннелирование.

Переадресация локальных портов: сделать удаленные ресурсы доступными в локальной системе

«Локальная переадресация портов» позволяет получить доступ к ресурсам локальной сети, которые не подключены к Интернету. Например, допустим, вы хотите получить доступ к серверу базы данных в вашем офисе из дома. По соображениям безопасности этот сервер базы данных настроен только на прием соединений из локальной офисной сети. Но если у вас есть доступ к SSH-серверу в офисе, и этот SSH-сервер разрешает подключения извне офисной сети, то вы можете подключиться к этому SSH-серверу из дома и получить доступ к серверу базы данных, как если бы вы были в офисе. Это часто имеет место, поскольку проще защитить один SSH-сервер от атак, чем защитить различные сетевые ресурсы.

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

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

 ssh -L local_port: удаленный_адрес: remote_port username@server.com 

Например, допустим, сервер базы данных в вашем офисе расположен по адресу 192.168.1.111 в офисной сети. У вас есть доступ к офисному SSH-серверу по адресу ssh.youroffice.com , а ваша учетная запись на SSH-сервере – bob . В этом случае ваша команда будет выглядеть так:

 ssh -L 8888: 192.168.1.111: 1234 bob@ssh.youroffice.com 

После выполнения этой команды вы сможете получить доступ к серверу базы данных через порт 8888 на локальном хосте. Таким образом, если сервер базы данных предлагает веб-доступ, вы можете подключить http: // localhost: 8888 в свой веб-браузер для доступа к нему. Если у вас был инструмент командной строки, которому нужен сетевой адрес базы данных, вы указали бы его на localhost: 8888. Весь трафик, отправляемый на порт 8888 на вашем ПК, будет транслироваться на 192.168.1.111:1234 в вашей офисной сети.

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

В этом случае вы можете выполнить команду, подобную следующей:

 ssh -L 8888: localhost: 1234 bob@ssh.youroffice.com 

Когда вы пытаетесь получить доступ к серверу базы данных через порт 8888 на вашем текущем ПК, трафик будет отправляться через соединение SSH. Когда он поступает в систему, где работает сервер SSH, сервер SSH отправит его на порт 1234 на «localhost», который является тем же ПК, на котором работает сам сервер SSH. Таким образом, «localhost» в приведенной выше команде означает «localhost» с точки зрения удаленного сервера.

Для этого в приложении PuTTY в Windows выберите «Соединение»> «SSH»> «Туннели». Выберите опцию «Local». Для «Source Port» введите локальный порт. В поле «Destination» введите адрес и порт назначения в форме remote_address: remote_port.

Например, если вы хотите настроить тот же туннель SSH, что и выше, вы должны ввести 8888 в качестве порта источника и localhost: 1234 в качестве пункта назначения.Затем нажмите «Добавить», а затем нажмите «Открыть», чтобы открыть SSH-соединение. Вам также нужно будет ввести адрес и порт самого SSH-сервера на главном экране «Сеанс» перед подключением, конечно.

Переадресация удаленных портов: сделать локальные ресурсы доступными в удаленной системе

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

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

Чтобы использовать удаленную пересылку, используйте команду ssh с аргументом -R . Синтаксис в основном такой же, как и при локальной пересылке:

 ssh -R remote_port: local_address: local_port username@server.com 

Допустим, вы хотите, чтобы серверное приложение, прослушивающее порт 1234 на локальном ПК, было доступно через порт 8888 на удаленном сервере SSH. Адрес сервера SSH: ssh.youroffice.com , а ваше имя пользователя на сервере SSH – bob . Вы бы запустили следующую команду:

 ssh -R 8888: localhost: 1234 bob@ssh.youroffice.com 

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

Для этого в PuTTY в Windows выберите Соединение> SSH> Туннели. Выберите опцию «Удаленный». В качестве «Source Port» введите удаленный порт. В поле «Пункт назначения» введите адрес и порт пункта назначения в форме local_address: local_port.

Например, если вы хотите настроить приведенный выше пример, введите 8888 в качестве порта источника и localhost: 1234 в качестве пункта назначения. Затем нажмите «Добавить», а затем нажмите «Открыть», чтобы открыть SSH-соединение. Вам также нужно будет ввести адрес и порт самого SSH-сервера на главном экране «Сеанс» перед подключением, конечно.

Затем пользователи могут подключиться к порту 8888 на сервере SSH, и их трафик будет направлен на порт 1234 в вашей локальной системе.

По умолчанию удаленный SSH-сервер будет прослушивать соединения только с одного хоста. Другими словами, только люди в той же системе, что и сам сервер SSH, смогут подключиться. Это из соображений безопасности. Вам нужно включить опцию «GatewayPorts» в sshd_config на удаленном SSH-сервере, если вы хотите переопределить это поведение.

Динамическая переадресация портов: используйте ваш SSH-сервер в качестве прокси

Существует также «динамическая переадресация портов», которая работает аналогично прокси-серверу или VPN. Клиент SSH создаст прокси-сервер SOCKS, который вы можете настроить для использования приложений. Весь трафик, отправленный через прокси, будет отправлен через сервер SSH. Это похоже на локальную переадресацию – она ​​берет локальный трафик, отправленный на определенный порт вашего ПК, и отправляет его через соединение SSH в удаленное местоположение.

Например, допустим, вы используете общедоступную сеть Wi-Fi. Вы хотите безопасно просматривать без слежки. Если у вас есть доступ к SSH-серверу дома, вы можете подключиться к нему и использовать динамическую переадресацию портов. Клиент SSH создаст прокси SOCKS на вашем ПК. Весь трафик, отправленный на этот прокси, будет передаваться через соединение с сервером SSH. Никто, контролирующий общедоступную сеть Wi-Fi, не сможет контролировать ваш просмотр или цензуру веб-сайтов, к которым у вас есть доступ. С точки зрения любых веб-сайтов, которые вы посещаете, это будет выглядеть так, как если бы вы сидели дома перед компьютером. Это также означает, что вы можете использовать этот трюк для доступа к веб-сайтам только в США, находясь за пределами США – при условии, конечно, что у вас есть доступ к SSH-серверу в США.

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

Чтобы использовать динамическую пересылку, выполните команду ssh с аргументом -D , например:

 ssh -D local_port username@server.com 

Например, допустим, у вас есть доступ к SSH-серверу по адресу ssh.yourhome.com , а ваше имя пользователя на SSH-сервере – bob . Вы хотите использовать динамическую пересылку, чтобы открыть прокси SOCKS на порту 8888 на текущем ПК. Вы бы запустили следующую команду:

 ssh -D 8888 bob@ssh.yourhome.com 

Затем вы можете настроить веб-браузер или другое приложение для использования вашего локального IP-адреса (127.0.01) и порта 8888. Весь трафик из этого приложения будет перенаправляться через туннель.

Для этого в PuTTY в Windows выберите Соединение> SSH> Туннели. Выберите «Динамический» вариант. Для «Source Port» введите локальный порт.

Например, если вы хотите создать прокси-сервер SOCKS на порту 8888, введите 8888 в качестве порта источника. Затем нажмите «Добавить», а затем нажмите «Открыть», чтобы открыть SSH-соединение. Вам также нужно будет ввести адрес и порт самого SSH-сервера на главном экране «Сеанс» перед подключением, конечно.

Затем вы можете настроить приложение для доступа к прокси-серверу SOCKS на вашем локальном ПК (то есть, IP-адрес 127.0.0.1, который указывает на ваш локальный ПК) и указать правильный порт.

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

При этом в Firefox выберите «Ручная настройка прокси», введите «127.0.0.1» в поле хоста SOCKS и введите динамический порт в поле «Порт». Оставьте поля HTTP-прокси, SSL-прокси и FTP-прокси пустыми.

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

Оцените статью
TutoryBird.Ru
Добавить комментарий