Перейти к содержимому

Как открыть порт на сервере

  • автор:

Настройка проброса портов для создания интернет-сервисов

Порты позволяют сетевым и подключенным к интернету устройствам взаимодействовать через указанные каналы. Хотя серверы с назначенными IP адресами могут подключаться к интернету напрямую и делать порты публично доступными, система, находящаяся за роутером в локальной сети, может оказаться недоступной из интернета. Технология проброса портов (port forwarding) позволяет преодолеть это ограничение и сделать устройства доступными публично.

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

Ниже представлены наиболее распространенные порты:

  • 21: FTP (File Transfer Protocol; Протокол передачи файлов)
  • 22: SSH (Secure Shell; Безопасный шелл)
  • 23: Telnet (Teletype Network; Телетайпная сеть)
  • 25:SMTP (Simple Mail Transfer Protocol; Простой протокол передачи электронной почты)
  • 80 : HTTP (Hypertext Transfer Protocol; Протокол передачи гипертекста)
  • 194: IRC (Internet Relay Chat; Ретранслируемый интернет-чат)
  • 443: HTTPS (HTTP с поддержкой шифрования)

Если вы читаете это руководство в интернете при помощи веб-браузера, то вероятно используете протокол HTTPS, работающий на порту 443.

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

В веб-браузерах нестандартные HTTP порты могут быть указаны после двоеточия в конце IP адреса или URL с целью загрузки содержимого через этот порт. Если веб-сервер запущен на локальной машине на порту 8080, а не более общепринятом 80 порту, возможно получить доступ к этому серверу, если ввести в браузере адрес localhost:8080 или 127.0.0.1:8080. Если же ввести один из вышеуказанных адресов без суффикса «:8080» та же самая страница загружена не будет.

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

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

Шаг 1. Выяснение IP адреса роутера

Обычно у роутеров доступна административная панель по протоколу HTTP (порт 80). В большинстве случаев для доступа используется локальный IP адрес роутера (192.168.0.1 или 192.168.1.1). В Microsoft Windows подключенный роутер (или шлюз, используемый по умолчанию) легко обнаружить при помощи команды ipconfig/all.

В Линуксе та же самая задача решается при помощи утилиты netstat. Откройте терминал и введите следующую команду для выяснения IP адреса подключенного роутера.

В macOS используется та же самая команда:

Шаг 2. Доступ к конфигурационной панели роутера

После выяснения локального IP адреса роутера вы можете получить доступ к конфигурационной панели, если введете адрес в браузере, как и в случае с обычным URL (у некоторых роутеров, например, предусмотрено мобильное приложение, и задача упрощается).

Рисунок 2: Форма авторизации конфигурационной панели роутера

После загрузки панели управления необходимо выполнить авторизацию. Имя пользователя и пароль могут быть установлены производителем или интернет-провайдером или вами. Эту информацию можно найти в документации на роутер или на корпусе.

Хотя у разных роутеров панель управления может отличаться, в целом процедура настройки примерно одинаковая. После авторизации зайдите в раздел «Advanced» или найдите, где находится раздел «Port Forwarding». В нашем случае соответствующий раздел называется «Advanced Port Forwarding Rules».

Рисунок 3: Раздел с настройкой проброса портов

Шаг 3. Настройка правил проброса портов

Для демонстрации правил проброса портов рассмотрим простейший случай, когда у пользователя есть устройство Raspberry Pi, подключенное домашнему сетевому роутеру. На Pi запущена служба SSH, позволяющая залогиниться на устройстве при наличии корректного имени пользователя и пароля. Текущий IP адрес устройства Raspberry Pi — 192.168.0.105.

Правило было названо как «RBPi SSH» с целью упрощения идентификации в будущем. В целом имя правила полностью зависит от ваших личных предпочтений и не влияет на используемые порты.

Диапазон параметра Public Port (иногда именуемого как Source Port) установлен от 22 до 22 (стандартный порт протокола SSH). Этот порт роутер сделает доступным через интернет. Через этот же порт пользователь будет подключаться к Raspberry Pi.

Параметр Private Port (иногда именуемый как Destination Port) установлен как 22, поскольку демон SSH на устройстве Pi работает на 22 порту.

Параметр Traffic Type установлен как TCP, поскольку по протоколу SSH передается TCP трафик.

Параметр IP Address соответствует IP адресу устройства Pi в локальной сети (192.168.0.105).

Наконец, слева от правила отмечен флажок, чтобы правило стало активным.

У вашего роутера интерфейс может отличаться, но в целом суть настроек остается неизменной.

Рисунок 4: Настройки правила проброса портов для авторизации через протокол SSH

Вышеуказанное правило означает, что пользователь может подключаться по IP адресу роутера по протоколу SSH через интернет и впоследствии будет перенаправлен на сервер устройства Raspberry Pi. Эту схему можно использовать для создания веб-сервера, работающего на 80 порту, или, например, для прикрепления сервера видеоигр к указанному порту. Учитывайте, что у некоторых провайдеров есть правила, касательно хостинга и другого контента, которые нужно учитывать перед тем, как сделать доступным сервер из локальной сети.

Шаг 4. Защита от сканирования портов и атак

Одна из проблем, возникающая во время открытия портов в интернете при помощи проброса – порты становятся доступными для сканирования. Злоумышленники в интернете могут использовать автоматизированные средства для сканирования диапазонов IP адресов или утилиты навроде Shodan для поиска потенциально уязвимых устройств с определенными активными портами. Порты протокола SSH являются основной целью, поскольку дают доступ к шеллу, при помощи которого можно украсть данные или установить вредоносное приложение.

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

Рисунок 5: Настройка SSH на нестандартный порт

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

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

Проброс портов в Линуксе на системном уровне

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

Схожим образом, что и порт роутера связывается с указанным портом устройства внутри локальной сети, один порт можно связать с другим для упрощения использования. Например, при установке ханипота Cowrie демон SSH перемещается от порта 22 на порт 9022. Затем порт 2222, где работает ханипот, перенаправляется на порт 22, который будет доступен в интернете и, как следствие, с высокой степенью вероятности просканирован и атакован.

Для конфигурирования локального проброса портов в Линуксе вначале нужно выполнить следующую команду с целью установки в параметр ip_forward значения 1 (в этом случае проброс портов активируется на уровне операционной системы):

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

Наконец, для включения локального проброса портов, можно воспользоваться iptables. Команда ниже перенаправляет запросы с порта 22 на порт 2222, где эти запросы обрабатывает ханипот.

Другие сферы, где используется проброс портов

Перенаправление портов может использоваться и в других задачах. Например, порт 8080 может быть перенаправлен на порт 80 с целью облегчения доступа к тестовому серверу, или могут быть добавлены новые порты для использования определенной службой. Проброс портов полезен для удаленного доступа, администрирования сервера, конфигурирования сети и даже во время пост-эксплуатации и пивотинга. Понимание этой технологии может быть ключом к бесчисленному множеству других проектов по безопасности.

Открытие порта в брандмауэре Windows

В этой статье я расскажу о такой вещи, как открытие, портов в Windows Server 2012 R2. Эта инструкция актуальна только для штатного брандмауэра. Чаще всего его возможностей достаточно.

Данные действия актуально делать только в том случае, если заказана услуга «Виртуальный сервер». По умолчанию на нём все порты открыты. Для настройки брандмауэра в Linux воспользуйтесь ISP Manager Lite.

Процесс открытия портов

Чтобы это сделать, выполните следующую последовательность шагов:

  1. Откройте меню пуск и нажмите на квадрат Панель управления;
  2. Выберите опцию просмотра «Крупные значки», чтобы проще было добраться до нужного меню;
  3. Откройте «Брандмауэр Windows, а затем «Дополнительные параметры»;
  1. Должно открыться окно «Брандмауэр Windows в режиме повышенной безопасности. В этом окне выберите в списке слева «Правила для входящих подключений».
  1. Затем, в списке справа щёлкните на пункт «Создать правило», чтобы открыть «Мастер создания правила для нового входящего подключения».
  2. На первом шаге этот мастер спросит Вас, правило какого типа Вы хотите создать. Выберите «Для порта» и нажмите кнопку «Далее».
  1. На шаге «Протокол и поты мастер спросит номер порта, который Вы хотите открыть, или диапазон этих портов. Необходимо ввести номер порта в поле «Определённые локальные порты». В случае, если Вам необходимо открыть более одного порта, то укажите их диапазон, используя знак дефиса, например, «27015-27019». Если нужен не диапазон портов, а несколько разных, то вместо дефиса поставьте запятую, например: «80,443». После этого нажмите кнопку «Далее».
  1. На следующем шаге Вас спросят о действии, которое должно выполнятся для данного порта. Поскольку Вы открываете порт, то убедитесь, что выбран пункт «Разрешить подключение», после чего нажмите «Далее».
  1. Далее, у Вас будет возможность выбрать профиль. Если Вы не вполне понимаете, что это такое, то оставьте все 3 пункта отмеченными флажками.
  1. Затем введите имя создаваемого правило, такое, чтобы оно давало понять, для чего создано. Нажмите кнопку «Готово», после чего Вы увидите только что созданное правило должно в самом верху списка.
  1. Чтобы отредактировать какое-либо правило, выделите его в списке, а затем нажмите справа пункт «Свойства».

Примечание

Если у Вас установлена другая программа, выполняющая фукнции брандмауэра, то настраивайте открытие портов в ней, согласно прилагающейся к ней инструкции. Некоторые антивирусы также могут выполнять функции брандмауэра.

Если брандмауэр установлен отдельно, то настройки открытия портов нужно делать в нём.

Проверить результат можно на этом сайте, а также, обратившись со своего компьютера по порту, который открыли. Для этого воспользуйтесь программой Nmap. Установщик для Windows.

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

Как научиться открывать сетевые порты в Windows 7 и 10

Довольно часто люди сталкиваются с непонятными, на первый взгляд, проблемами в работе программ или игр, связанными с невозможностью их подключения к серверу. Многие начинают искать причину не там, где нужно, пеняя на плохое интернет-соединение, несовместимость ПО или его высокие системные требования. Ответ может крыться в заблокированном канале передачи данных. Для этого нужно открыть порты в операционной системе Windows.

В нашей новой статье мы кратко расскажем вам об общем назначении портов и как их разблокировать в ОС Windows, приведя несколько примеров.

Что такое «Порт» и зачем он нужен

Основная задача персонального компьютера – обрабатывать информацию, используя для этого множество программ разного назначения. Большая часть программ обращается к собственному серверу для получения и отправки пакетов данных, например, регулярных обновлений или отдельных файлов (файлообменники). Передача информации происходит по определенному каналу – порту. Каждый порт (туннель) имеет свой номер, являющийся идентификатором и определяющий его назначение. Например, чтобы воспользоваться удаленным рабочим столом другого компьютера, нужно проверить статус и при необходимости открыть порт 3389.

При установке новой игры или другого софта по умолчанию происходит автоматическая проверка туннеля и подключение к серверу. Брандмауэр Windows выводит окно на экран с предложением о разрешении или запрете активности данной программы в сети. Если такового не наблюдается и ПО не хочет подключаться – нужно открыть его порт на компьютере.

Проверка статуса портов

Перед открытием туннеля сначала нужно проверить открытые порты в Windows. Для этого отлично подойдет обычная командная строка.

  1. Открываем меню «Пуск/Программы/Стандартные» и выбираем программу «Командная строка».

Другой способ – введите «cmd» (без кавычек) в поисковую строку Пуска и нажмите «Enter».

  1. В открывшейся командной строке задаем команду «netstat –aon | more» без кавычек. Система отобразит состояние всех активных туннелей.

Смотрим на два последних столбца и находим нужный номер. Напротив номера выведен его статус:

  • Listening – идет опрос свободного порта системой. Он является открытым.
  • Established – идет передача данных, порт занят.
  • Close wait – процесс прекращения передачи данных.
  • Time wait – порт не отвечает.
  1. Открыв «Диспетчер задач» комбинацией клавиш Ctrl+Alt+Delete, вы сможете узнать, чем занят нужный порт, сопоставив его номер из консоли с идентификатором процесса.

Если требуемый порт отсутствует или занят – переходим к следующему пункту.

Открываем порт через Брандмауэр Windows

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

Процесс деблокирования выглядит так:

  1. Заходим в «Пуск/Панель управления/Система и безопасность» и находим «Брандмауэр ЗащитникаWindows» (либо «Брандмауэр Windows»).
  2. Выбираем пункт «Дополнительные параметры».

  1. В этом меню содержится список процессов, использующих каналы для подключения к серверам. Для того чтобы открыть порты в брандмауэре, нажимаем на «Правила для входящих подключений» и «Создать правило».
  2. Если вам известно, какой именно канал вам нужен, то указываем пункт «Для порта».

Ради примера попробуем открыть порт 27015 для сетевого шутера Counter-Strike 1.6.

Выбираем «Разрешить подключение» и жмем «Далее».

Выделяем галочками все варианты.

Вписываем имя программы, например, «CS 1.6» и нажимаем кнопку «Готово».

Созданное нами правило появится в общем списке. Теперь порт для игры открыт. Этот способ является стандартным и он идентичен для последних версий Windows, начиная с «семерки».

Важно: если порт так и не заработал, то нужно включить его «проброс» в меню роутера. Но это отдельная тема для статьи.

По тому же принципу вы можете открыть порт 8080 и 443, которые отвечают за передачу данных через http-сервер и https-сервер повышенной безопасности для онлайн-игр, сервисов, кассовых аппаратов и прочих услуг.

Открываем порт 80

Данный канал является главным для передачи данных между ПК и Всемирной сетью по протоколу http. Порт 80 не освободить вышеописанным способом, так как он контролируется специальным системным драйвером http.sys.

На этот раз мы обратимся к командной строке.

  1. Открываем командную строку известным способом и вводим команду «netsh http «add iplisten ipaddress=::» (без кавычек) и жмем «Enter».
  2. Второй шаг – это внесение изменения в файл блокнота hosts, находящийся по пути «C:\Windows\System32\drivers\etc\hosts». В нем необходимо добавить запись «127.0.0.1 local» (без кавычек). После этого перезагрузить свой ПК и проверить статус порта 80.
  1. Если это не помогло, то открываем меню «Пуск/Панель управления/Программы/Программы и компоненты» и нажимаем на «Включение или отключение компонентовWindows».
  2. Отключаем службы IIS, снимая все галочки с пунктов.

Перезагружаем компьютер и опять проверяем доступность 80 порта.

Применение стороннего софта CurrPorts

В рассмотренных выше способах использовались лишь стандартные ресурсы Windows, однако, в Сети есть несколько программ для открытия портов на Windows. Первой на обзоре мы выбрали «CurrPorts» версии 2.51 от разработчика Nir Sofer. Она помогает узнать все свои активные порты на Windows и пригодится для их быстрого освобождения, удаляя ненужный или опасный процесс. Программа бесплатна и легка в освоении.

Для ее использования:

  1. Переходим на сайт разработчика https://www.nirsoft.net/utils/cports.html и скачиваем программу и русификатор на ПК. Русификатор распаковываем в папку с файлами ПО.
  1. Программа предлагает массу информации о процессе, включая занимаемый им порт.

На скриншоте мы видим, что антивирус Avast занимает два порта: 80 и 443. При желании мы можем закрыть данное соединение из контекстного меню или панели инструментов программы (но делать этого не советуем по понятным причинам). Закрывайте только те ненужные процессы, назначение которых вам известно.

Преимущества

  • Бесплатная программа на русском языке.
  • Не требует установки.
  • Отображает все запущенные процессы и занимаемые ими порты в реальном времени.
  • Предоставляет самую подробную информацию.
  • Можно освобождать порты от одного или всех процессов.
  • Классический понятный интерфейс.

Недостатки

  • Не выявлено.

Работаем с UPnP Wizard

Простая программка для управления портами «UPnP Wizard», работающая почти со всеми модемами по технологии UPnP. Вам не составит труда посмотреть открытые порты в Windows и освободить самые необходимые из них. ПО бесплатно, но не поддерживает русский язык, что может осложнить управление для некоторых пользователей.

Начинаем работу с UPnP Wizard так:

  1. По ссылке https://www.xldevelopment.net/upnpwiz.php переходим на ресурс разработчиков и скачиваем ПО бесплатно.
  2. Устанавливаем и запускаем UPnP Wizard. Перед пользователем появятся все активные порты и занимаемые их процессы.

Для примера попробуем открыть порт 7777, который нужен для обмена данными с сервером игры SAMP (San Andreas Multiplayer Mod). Нажимаем на зеленый плюс панели инструментов.

Важно: если программа не может найти процессы – проверьте, подключена ли функция UPnP на вашем роутере, зайдя в его настройки.

  1. В окне создания порта вводим произвольное название (например, SAMP), номер порта (7777) и тип протокола (TCP). После этого подтверждаем данные кнопкой «ОК».

В таблице появится новый пункт с открытым портом для игры SAMP.

Преимущества

  • Бесплатная лицензия.
  • Красивый интерфейс без нагромождений.
  • Работает со многими моделями роутеров, поддерживающих технологию UPnP.
  • Можно быстро открывать и освобождать порты.

Недостатки

  • Нет перевода на русский язык.
  • Малоинформативная сводка о запущенных процессах.

Онлайн-сервис 2ip.ru

Ну и напоследок мы воспользуемся простым онлайн-сервисом «2ip.ru», предназначенным для отображения разной полезной информации на компьютере, включая сетевые порты.

Для посещения сервиса:

  1. Открываем интернет-браузер и переходим по ссылке https://2ip.ru/check-port.
  2. В свободную строку вводим номер порта, например, 25565 и нажимаем «Проверить».

  1. Как видно на скрине выше, туннель 25565 уже занят. Таким образом вы сможете проверить любой канал на занятость.

Преимуществами такого способа выступают его доступность и отсутствие необходимости в установке отдельного ПО. Но он лишь служит как дополнение предыдущим двум вариантам.

Подводим итоги вышесказанному

В этой статье мы постарались дать вам ответ на вопрос: «как открыть порты на Windows 7 и 10?». Для этого нами было выбрано и описано самые востребованные способы решения данной проблемы с примерами.

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

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

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

Несмотря на отсутствие русскоязычного интерфейса, UPnP Wizard очень практична и может как создавать, так и освобождать порты. Единственным ограничением является требование к поддержке роутером UPnP интерфейса. Мы считаем, что этот вариант самый удобный для повсеместного использования.

Наглядное руководство по SSH-туннелям

Туннели SSH — это зашифрованные TCP-соединения между клиентами и серверами SSH. Трафик входит с одной стороны туннеля и прозрачно выходит с другой. Изначально этот термин относился к туннелям на виртуальных сетевых интерфейсах TUN/TAP, однако сейчас так обычно называют проброс портов SSH.

Например, вот так будет выглядеть схема обратного туннеля, в котором обращение к порту 80 SSH-клиента выполняется через SSH-сервер с определенного IP-адреса ( 1.2.3.4 ):

Здесь и далее все схемы взяты из оригинала статьи

Здесь и далее все схемы взяты из оригинала статьи

Сценарии использования туннелей*:

Предоставление зашифрованных каналов для протоколов, передающих данные «открытым текстом».

Открытие бэкдоров в частные сети.

Обход межсетевых экранов.

Перечень дополняется. Не стесняйтесь предлагать примеры или исправления
на GitHub.

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

Перенаправляет порт из одной системы (локальной или удаленной) в другую.

Проброс локального порта

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

доступ к удаленному сервису (Redis, Memcached и т. д.) по внутреннему IP-адресу;

локальный доступ к ресурсам, размещенным в частной сети;

прозрачное проксирование запроса к удаленному сервису.

Проброс удаленного порта

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

открытие доступа к локальному серверу разработки через публичную сеть;

предоставление доступа с ограничением по IP-адресу к удаленному ресурсу в частной сети.

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

При динамической переадресации портов на SSH-клиенте поднимается SOCKS-прокси для перенаправления TCP-трафика через SSH-сервер на удаленный хост.

Пересылка с системных (privileged) портов

Для пересылки трафика с системных портов (1–1023) необходимо запустить SSH с правами суперпользователя в системе, на которой открывается порт.

Флаги командной строки SSH

Ниже приведены несколько полезных флагов при создании туннелей:

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

Для краткости примеры ниже приводятся без флагов командной строки.

Проброс локального порта

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

Перенаправляет локальные подключения к 127.0.0.1:8080 на 80-й порт example.org через SSH-сервер. Трафик между локальной системой и SSH-сервером идет по SSH-туннелю. Трафик между SSH-сервером и example.org — нет. С точки зрения example.org трафик идет от SSH-сервера.

Команды выше открывают доступ к example.org:80 через SSH-туннель для подключений на порт 8080 на всех интерфейсах локальной системы.

Переадресует соединения с 192.168.0.1:5432 в локальной системе на 127.0.0.1:5432 на SSH-сервере. Обратите внимание, что здесь 127.0.0.1 — localhost с точки зрения SSH-сервера.

Конфигурации SSH

Убедитесь, что на SSH-сервере включена переадресация TCP (по умолчанию так и должно быть). Проверьте запись в файле /etc/ssh/sshd_config :

При переадресации портов на интерфейсы, отличные от 127.0.0.1, в локальной системе необходимо включить GatewayPorts (в /etc/ssh/ssh_config или в командной строке):

Сценарии использования

Подходит для случаев, когда требуется защищенное соединение для доступа к удаленному сервису, который работает с незашифрованными данными. Например, Redis и Memcached используют протоколы на основе plaintext-данных.

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

Проброс удаленного порта

Пробрасывает порт на удаленной системе в другую систему.

Перенаправляет трафик с порта 8080 SSH-сервера для всех интерфейсов на порт localhost:80 на локальном компьютере. Если один из интерфейсов смотрит в Интернет, трафик, адресуемый на порт 8080, будет перенаправляться на локальную систему.

Переадресует трафик с порта 8080 SSH-сервера на localhost:80 в локальной системе, при этом доступ ко входу в SSH-туннель со стороны сервера разрешен только с IP-адреса 1.2.3.4 (обратите внимание: директиву GatewayPorts необходимо установить в clientspecified ).

Прим. переводчика: здесь, возможно, ошибка. Флаг -R — это binding_address , выбор IP адреса на машине, на котором SSH-сервер будет слушать порт. Соответственно вместо одного человечка с IP должны быть человечки, а вместо ssh_server:8080 должно быть 1.2.3.4:8080 .

Переадресует трафик с порта 8080 SSH-сервера для всех интерфейсов на localhost:80 в локальной системе. Далее трафик из локальной системы направляется на example.org:80. С точки зрения example.org источником трафика выступает локальная система.

Конфигурация SSH-сервера

SSH-сервер конфигурируется в файле /etc/ssh/sshd_config .

По умолчанию переадресуемые порты недоступны для доступа из Интернета. Для переадресации публичного интернет-трафика на локальный компьютер добавьте в sshd_config на удаленном сервере такую строку:

Также в sshd_config можно указать, каким клиентам разрешен доступ:

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

Перенаправление трафика с нескольких портов на удаленный сервер.

Команда выше поднимает SOCKS-прокси на порту 3000 для всех интерфейсов в локальной системе. Теперь трафик, отправленный через прокси-сервер на SSH-сервер, можно адресовать на любой порт или конечный хост. По умолчанию используется протокол SOCKS5, поддерживающий TCP и UDP.

Поднимает SOCKS-прокси на 127.0.0.1:3000 в локальной системе.

При работающем SOCKS-прокси можно настроить браузер на его использование для доступа к ресурсам так, как будто соединения исходят от SSH-сервера. Например, если у SSH-сервера есть доступ к другим серверам в частной сети, с помощью SOCKS-прокси можно заходить на эти серверы локально (словно вы находитесь в той же сети), и не нужно настраивать VPN.

Работу SOCKS-прокси можно проверить командой:

Конфигурация SSH-клиента

SSH-клиент настраивается в файле /etc/ssh/ssh_config .

Включите GatewayPorts в системе, чтобы открыть доступ другим интерфейсам к SOCKS-прокси:

Поскольку GatewayPorts конфигурируется на SSH-клиенте, вместо ssh_config для настройки можно использовать параметры командной строки:

Jump-хосты и команды прокси-сервера

Прозрачное подключение к удаленному хосту через промежуточные.

Устанавливает SSH-соединение с jump-хостом и переадресуют трафик на удаленный хост.

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

Можно указать несколько jump-хостов через запятую.

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

Конфигурация SSH-клиента

SSH-клиент конфигурируется в файле /etc/ssh/ssh_config .

Для подключения agent forwarding можно добавить локальный SSH-ключ к локальному SSH-агенту с помощью ssh-add :

Надежные SSH-туннели

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

По умолчанию TCP-соединение, используемое для создания SSH-туннеля, может разрываться после некоторого периода бездействия. Чтобы это предотвратить, нужно настроить сервер ( /etc/ssh/sshd_config ) на отправку heartbeat-сообщений:

На отсылку таких сообщений также можно настроить клиент ( /etc/ssh/ssh_config ):

Использование AutoSSH

Указанные выше настройки могут предотвратить разрывы из-за неактивности, но они не в состоянии восстановить прерванные соединения. Для автоматического перезапуска SSH-туннеля можно воспользоваться утилитой autossh — она создает SSH-туннель и отслеживает его работоспособность.

AutoSSH принимает те же аргументы для настройки переадресации портов, что и SSH:

Эта команда создает туннель, способный восстанавливаться после сетевых сбоев. По умолчанию AutoSSH открывает дополнительные порты на SSH-клиенте/сервере для проверки работоспособности (healthcheck). Если трафик не проходит между healthcheck-портами, AutoSSH перезапускает туннель.

Флаг -M 0 отключает healthcheck-порты (за проверку работоспособности в этом случае отвечает SSH-клиент). В примере выше сервер должен посылать сигналы каждые 10 секунд. Если не проходят три подряд сигнала, SSH-клиент завершает работу, а AutoSSH поднимает новый туннель.

Дополнительные примеры и сценарии использования

Прозрачный доступ к удаленному ресурсу в частной сети.

Предположим, в частной сети есть Git-репозиторий, доступ к которому возможен только через выделенный сервер в этой сети. Сервер не подключен к Интернету. Есть прямой доступ к серверу, но нет VPN-доступа к частной сети.

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

Команда выше пробрасывает порт 2222 на промежуточном хосте на порт 22 выделенного сервера. Теперь можно подключиться к SSH-серверу на выделенном сервере, несмотря на то, что он недоступен из Интернета.

Прим. переводчика: возможно, что здесь тоже ошибка: перепутаны местами 22 и 2222 порты в команде.

Для большего удобства можно добавить несколько директив в локальный

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

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

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