В компьютерных сетях , перенаправление портов или отображение портов является применение преобразования сетевых адресов (NAT) , который перенаправляет запрос на связь с одного адресом и номер порта комбинации к другому в то время как пакеты , которые обход сетевого шлюза, такие как маршрутизатор или брандмауэра . Этот метод чаще всего используется для того, чтобы сделать сервисы на хосте, находящемся в защищенной или замаскированной (внутренней) сети, доступными для хостов на противоположной стороне шлюза (внешней сети), путем переназначения IP-адреса назначения и номера порта связи на внутренний хост.[1] [2]
Цель
Переадресация портов позволяет удаленным компьютерам (например, компьютерам в Интернете ) подключаться к определенному компьютеру или службе в частной локальной сети (LAN). [3]
В типичной жилой сети узлы получают доступ в Интернет через DSL или кабельный модем, подключенный к маршрутизатору или преобразователю сетевых адресов (NAT / NAPT). Хосты в частной сети подключены к коммутатору Ethernet или обмениваются данными через беспроводную локальную сеть . Внешний интерфейс устройства NAT настроен с использованием общедоступного IP-адреса. С другой стороны, компьютеры за маршрутизатором невидимы для хостов в Интернете, поскольку каждый из них обменивается данными только с частным IP-адресом.
При настройке переадресации портов сетевой администратор выделяет один номер порта на шлюзе для исключительного использования связи со службой в частной сети, расположенной на определенном хосте. Внешние хосты должны знать этот номер порта и адрес шлюза для связи с внутренней службой сети. Часто номера портов хорошо известных Интернет-служб, такие как номер порта 80 для веб-служб (HTTP), используются при переадресации портов, так что общие Интернет-службы могут быть реализованы на узлах в частных сетях.
Типичные приложения включают следующее:
- Запуск общедоступного HTTP- сервера в частной локальной сети
- Разрешение доступа Secure Shell к узлу в частной локальной сети из Интернета
- Разрешение FTP- доступа к хосту в частной локальной сети из Интернета
- Запуск общедоступного игрового сервера в частной локальной сети
Администраторы настраивают переадресацию портов в операционной системе шлюза. В ядрах Linux это достигается с помощью правил фильтрации пакетов в компонентах ядра iptables или netfilter . Операционные системы BSD и macOS до Yosemite (OS 10.10.X) реализуют его в модуле Ipfirewall (ipfw), а операционные системы macOS, начиная с Yosemite, реализуют его в модуле Packet Filter (pf).
При использовании на шлюзовых устройствах переадресация портов может быть реализована с помощью одного правила для преобразования адреса назначения и порта. (В ядрах Linux это правило DNAT). В этом случае адрес источника и порт не меняются. При использовании на машинах, которые не являются шлюзом сети по умолчанию, исходный адрес должен быть изменен на адрес машины трансляции, иначе пакеты будут обходить транслятор и соединение не будет установлено.
Когда переадресация портов реализуется прокси-процессом (например, в брандмауэрах прикладного уровня, брандмауэрах на основе SOCKS или через прокси-серверы TCP), то фактически никакие пакеты не транслируются, проксируются только данные. Обычно это приводит к тому, что исходный адрес (и номер порта) изменяется на адрес прокси-машины.
Обычно только один из частных хостов может использовать конкретный переадресованный порт одновременно, но иногда возможна конфигурация, позволяющая дифференцировать доступ по исходному адресу исходного хоста.
Unix-подобные операционные системы иногда используют переадресацию портов, когда номера портов меньше 1024 могут быть созданы только программным обеспечением, запущенным от имени пользователя root. Работа с привилегиями суперпользователя (для привязки порта) может представлять угрозу безопасности для хоста, поэтому переадресация портов используется для перенаправления порта с меньшим номером на другой порт с большим номером, чтобы прикладное программное обеспечение могло работать как обычная операционная система. системный пользователь с ограниченными правами.
Universal Plug и Play протокол (UPnP) обеспечивает возможность автоматической установки экземпляров переадресации портов в жилых интернет - шлюзов. UPnP определяет протокол Интернет-шлюза (IGD), который является сетевой службой, с помощью которой Интернет-шлюз объявляет о своем присутствии в частной сети через протокол обнаружения простых служб (SSDP). Приложение, предоставляющее услуги на основе Интернета, может обнаруживать такие шлюзы и использовать протокол UPnP IGD, чтобы зарезервировать номер порта на шлюзе и заставить шлюз пересылать пакеты в свой слушающий сокет .
Типы переадресации портов
Переадресацию портов можно разделить на следующие конкретные типы: локальная, удаленная и динамическая переадресация портов. [4]
Перенаправление локального порта
Перенаправление локальных портов - это наиболее распространенный тип перенаправления портов. Он используется, чтобы позволить пользователю подключаться с локального компьютера к другому серверу, то есть безопасно пересылать данные из другого клиентского приложения, работающего на том же компьютере, что и клиент Secure Shell (SSH). Используя локальную переадресацию портов, можно обойти брандмауэры, блокирующие определенные веб-страницы. [5]
Соединения от SSH-клиента перенаправляются через SSH-сервер на предполагаемый целевой сервер. Сервер SSH настроен для перенаправления данных с указанного порта (который является локальным по отношению к узлу, на котором работает клиент SSH) через безопасный туннель на определенный целевой узел и порт. Локальный порт находится на том же компьютере, что и клиент SSH, и этот порт является «перенаправленным портом». На том же компьютере любой клиент, который хочет подключиться к тому же целевому узлу и порту, может быть настроен для подключения к перенаправляемому порту (а не напрямую к целевому узлу и порту). После того, как это соединение установлено, клиент SSH прослушивает перенаправленный порт и направляет все данные, отправляемые приложениями, на этот порт через безопасный туннель на сервер SSH. Сервер расшифровывает данные, а затем перенаправляет их на целевой хост и порт. [6]
В командной строке «-L» указывает переадресацию локального порта. Необходимо указать целевой сервер и два номера порта. Номера портов меньше 1024 или больше 49150 зарезервированы для системы. Некоторые программы будут работать только с определенными исходными портами, но по большей части можно использовать любой номер исходного порта.
Некоторые варианты использования переадресации локальных портов:
- Использование переадресации локального порта для получения почты [7]
- Подключитесь с ноутбука к веб-сайту с помощью туннеля SSH.
Удаленная переадресация портов
Эта форма переадресации портов позволяет приложениям на стороне сервера соединения Secure Shell (SSH) получать доступ к службам, находящимся на стороне клиента SSH. [8] Помимо SSH, существуют патентованные схемы туннелирования, которые используют переадресацию удаленных портов для тех же общих целей. [9] Другими словами, переадресация удаленных портов позволяет пользователям подключаться со стороны сервера туннеля, SSH или другого, к удаленной сетевой службе, расположенной на стороне клиента туннеля.
Чтобы использовать переадресацию удаленного порта, необходимо знать адрес целевого сервера (на стороне клиента туннеля) и два номера порта. Выбранные номера портов зависят от того, какое приложение будет использоваться.
Удаленная переадресация портов позволяет другим компьютерам получать доступ к приложениям, размещенным на удаленных серверах. Два примера:
- Сотрудник компании размещает FTP-сервер у себя дома и хочет предоставить доступ к FTP-службе сотрудникам, использующим компьютеры на рабочем месте. Для этого сотрудник может настроить переадресацию удаленного порта через SSH на внутренних компьютерах компании, указав адрес своего FTP-сервера и используя правильные номера портов для FTP (стандартный порт FTP - TCP / 21) [10]
- Открытие сеансов удаленного рабочего стола - это обычное использование переадресации удаленных портов. Через SSH это можно сделать, открыв вычислительный порт виртуальной сети (5900) и указав адрес конечного компьютера. [6]
Динамическое перенаправление портов
Динамическая переадресация портов (DPF) - это метод обхода межсетевого экрана или NAT по запросу с использованием отверстий в межсетевом экране. Цель состоит в том, чтобы позволить клиентам безопасно подключаться к доверенному серверу, который действует как посредник с целью отправки / получения данных на один или несколько целевых серверов. [11]
DPF может быть реализован путем настройки локального приложения, такого как SSH, в качестве прокси-сервера SOCKS, который можно использовать для обработки передачи данных по сети или через Интернет. Программы, такие как веб-браузеры, должны быть настроены индивидуально для направления трафика через прокси-сервер, который действует как безопасный туннель к другому серверу. После того, как прокси больше не нужен, необходимо восстановить исходные настройки программ. Из-за ручных требований к DPF он не часто используется. [6]
Как только соединение установлено, DPF может использоваться для обеспечения дополнительной безопасности для пользователя, подключенного к ненадежной сети. Поскольку данные должны пройти через безопасный туннель на другой сервер, прежде чем быть перенаправлены в исходное место назначения, пользователь защищен от перехвата пакетов, который может произойти в локальной сети. [12]
DPF - мощный инструмент, имеющий множество применений; например, пользователь, подключенный к Интернету через кафе, отель или иным образом минимально защищенную сеть, может пожелать использовать DPF как способ защиты данных. DPF также можно использовать для обхода брандмауэров, ограничивающих доступ к внешним веб-сайтам, например, в корпоративных сетях.
Смотрите также
- Отверстие в брандмауэре
- Обход NAT
- Пересылка пакетов
- Трансляция адреса порта (PAT)
- Запуск порта
- Адрес помощника UDP
- Безопасная оболочка
Рекомендации
- ^ «Определение: переадресация портов» . Журнал ПК . Проверено 11 октября 2008 .
- ^ Рори Краузе. «Использование переадресации порта ssh для печати в удаленных местах» . Linux Journal . Проверено 11 октября 2008 .
- ^ Джефф «Крэш» Голдин. «Как настроить домашний веб-сервер» . Красная шляпа . Архивировано из оригинала на 2008-10-04 . Проверено 11 октября 2008 .
- ^ Переадресация портов OpenSSH
- ^ «Перенаправление локальных и удаленных портов и отражение для защищенного IT-клиента версии 7.1 или выше - Техническая записка 2433» . Support.attachmate.com. 2012-11-09 . Проверено 30 января 2014 .
- ^ а б в «SSH / OpenSSH / PortForwarding - документация сообщества Ubuntu» . Help.ubuntu.com. 2013-12-13 . Проверено 30 января 2014 .
- ^ «Пример - использование переадресации локального порта для получения почты (Руководство системного администратора: службы безопасности)» . Docs.oracle.com . Проверено 30 января 2014 .
- ^ http://www.vandyke.com (12.06.2005). «Туннелирование с помощью Secure Shell - Приложение A: Перенаправление удаленного порта» . Vandyke.com . Проверено 30 января 2014 .
- ^ «Перенаправление локального порта в сравнении с удаленным» . NetworkActiv . Проверено 8 июня 2014 .
- ^ «Номер порта FTP 21 - порт 21 TCP» . Compnetworking.about.com. 2013-12-19 . Проверено 30 января 2014 .
- ^ «Механизм DPF» . Pages.cs.wisc.edu . Проверено 30 января 2014 .
- ^ «Динамическая переадресация портов SSH (обучающие видеоролики по взлому иллюстрированной серии InfoSec)» . Irongeek.com . Проверено 30 января 2014 .
Внешние ссылки
- Алан Стаффорд. «Веб-доступ с деформацией скорости: совместное использование полосы пропускания» . Мир ПК . Архивировано из оригинала на 2008-03-18 . Проверено 11 октября 2008 .
- Использование UPnP для программной переадресации портов и обхода NAT - бесплатное программное обеспечение, которое использует UPnP и протокол Интернет-шлюза (IGD) для автоматизации переадресации портов.
- Исходный код пересылки TCP на C # - Исходный код на C #, объясняющий / PoC Пересылка TCP.
- Open.NAT - легкая и простая в использовании библиотека классов .NET, позволяющая переадресацию портов в устройствах NAT, поддерживающих UPNP и PMP.