Что такое перенаправление портов
Настройка проброса портов для создания интернет-сервисов
Порты позволяют сетевым и подключенным к интернету устройствам взаимодействовать через указанные каналы. Хотя серверы с назначенными IP адресами могут подключаться к интернету напрямую и делать порты публично доступными, система, находящаяся за роутером в локальной сети, может оказаться недоступной из интернета. Технология проброса портов (port forwarding) позволяет преодолеть это ограничение и сделать устройства доступными публично.
Сетевые сервисы и приложения, запущенные на различных устройствах, используют порты с определенными номерами с целью инициации соединений и организации коммуникаций. Разные порты могут использоваться одновременно для разделения типов трафика и запросов. Обычно порты ассоциируются с определенными службами, чтобы клиент мог подключиться к серверу по определенному порту, а сервер принять соединение и ответить соответствующим образом.
Ниже представлены наиболее распространенные порты:
Если вы читаете это руководство в интернете при помощи веб-браузера, то вероятно используете протокол 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. Настройка правил проброса портов
Правило было названо как «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 с целью облегчения доступа к тестовому серверу, или могут быть добавлены новые порты для использования определенной службой. Проброс портов полезен для удаленного доступа, администрирования сервера, конфигурирования сети и даже во время пост-эксплуатации и пивотинга. Понимание этой технологии может быть ключом к бесчисленному множеству других проектов по безопасности.
Что такое переадресация портов и как ее настроить на маршрутизаторе
Если вы читаете эту статью, примите наши поздравления! Вы успешно взаимодействуете с другим сервером в Интернете, используя порты 80 и 443, стандартные открытые сетевые порты для веб-трафика. Если бы эти порты были закрыты на нашем сервере, вы бы не смогли прочитать эту статью. Закрытые порты защищают вашу сеть (и наш сервер) от хакеров.
Наши веб-порты могут быть открыты, но порты вашего домашнего маршрутизатора не должны быть открыты, поскольку это открывает лазейку для злонамеренных хакеров. Однако вам может потребоваться разрешить доступ к вашим устройствам через Интернет, время от времени используя переадресацию портов. Вот что вам нужно знать, чтобы помочь вам узнать больше о переадресации портов.
Что такое перенаправление портов?
Перенаправление портов — это процесс на маршрутизаторах локальной сети, который перенаправляет попытки подключения с сетевых устройств на определенные устройства в локальной сети. Это благодаря правилам переадресации портов на вашем сетевом маршрутизаторе, которые соответствуют попыткам подключения к правильному порту и IP-адресу устройства в вашей сети.
В локальной сети может быть один общедоступный IP-адрес, но каждое устройство в вашей внутренней сети имеет свой собственный внутренний IP-адрес. Перенаправление портов связывает эти внешние запросы от A (общедоступный IP-адрес и внешний порт) с B (запрошенный порт и локальный IP-адрес устройства в вашей сети).
Чтобы объяснить, почему это может быть полезно, давайте представим, что ваша домашняя сеть немного похожа на средневековую крепость. Хотя вы можете смотреть за стены, другие не могут заглядывать внутрь или ломать вашу защиту — вы защищены от нападения.
Благодаря встроенным сетевым брандмауэрам ваша сеть находится в таком же положении. Вы можете получить доступ к другим онлайн-сервисам, таким как веб-сайты или игровые серверы, но другие пользователи Интернета не могут получить доступ к вашим устройствам взамен. Подъемный мост поднят, так как ваш брандмауэр активно блокирует любые попытки внешних подключений нарушить работу вашей сети.
Однако в некоторых ситуациях такой уровень защиты нежелателен. Если вы хотите запустить сервер в домашней сети (используя Raspberry Pi, например), необходимы внешние подключения.
Здесь на помощь приходит переадресация портов, так как вы можете пересылать эти внешние запросы на определенные устройства без ущерба для вашей безопасности.
Например, предположим, что вы используете локальный веб-сервер на устройстве с внутренним IP-адресом 192.168.1.12, а ваш общедоступный IP-адрес — 80.80.100.110. Внешние запросы к порту 80 (80.90.100.110:80) будут разрешены благодаря правилам переадресации портов, при этом трафик будет перенаправляться на порт 80 на 192.168.1.12.
Для этого вам необходимо настроить вашу сеть так, чтобы разрешить переадресацию портов, а затем создать соответствующие правила переадресации портов в вашем сетевом маршрутизаторе. Вам также может потребоваться настроить другие брандмауэры в вашей сети, включая брандмауэр Windows, чтобы разрешить трафик.
Почему вам следует избегать UPnP (автоматическая переадресация портов)
Настроить переадресацию портов в вашей локальной сети не сложно для опытных пользователей, но для новичков это может создать всевозможные трудности. Чтобы решить эту проблему, производители сетевых устройств создали автоматизированную систему переадресации портов под названием UPnP (или Universal Plug and Play).
Идея UPnP заключалась (и есть) в том, чтобы разрешить интернет-приложениям и устройствам автоматически создавать правила переадресации портов на вашем маршрутизаторе, чтобы разрешить внешний трафик. Например, UPnP может автоматически открывать порты и пересылать трафик для устройства, на котором запущен игровой сервер, без необходимости вручную настраивать доступ в настройках вашего маршрутизатора.
Идея блестящая, но, к сожалению, исполнение некорректно — если не сказать чрезвычайно опасно. UPnP — это мечта вредоносного ПО, поскольку он автоматически предполагает, что любые приложения или службы, работающие в вашей сети, безопасны. В UPnP взламывает сайт раскрывает ряд уязвимостей, которые даже сегодня легко допускаются сетевыми маршрутизаторами.
С точки зрения безопасности лучше проявить осторожность. Вместо того, чтобы подвергать риску вашу сетевую безопасность, избегайте использования UPnP для автоматической переадресации портов (и, если возможно, полностью отключите его). Вместо этого вам следует вручную создавать правила переадресации портов только для приложений и служб, которым вы доверяете и которые не имеют известных уязвимостей.
Как настроить переадресацию портов в сети
Если вы избегаете UPnP и хотите настроить переадресацию портов вручную, обычно это можно сделать на странице веб-администрирования вашего маршрутизатора. Если вы не знаете, как получить к нему доступ, вы обычно можете найти информацию в нижней части маршрутизатора или включить ее в руководство по документации вашего маршрутизатора.
Вы можете подключиться к странице администратора вашего маршрутизатора, используя адрес шлюза по умолчанию для вашего маршрутизатора. Обычно это 192.168.0.1 или аналогичный вариант — введите этот адрес в адресную строку браузера. Вам также потребуется пройти аутентификацию, используя имя пользователя и пароль, предоставленные вашим маршрутизатором (например, admin).
Настройка статических IP-адресов с использованием резервирования DHCP
В большинстве локальных сетей используется динамическое выделение IP-адресов для назначения временных IP-адресов устройствам, которые подключаются. Через определенное время IP-адрес обновляется. Эти временные IP-адреса могут быть переработаны и использованы в другом месте, и вашему устройству может быть назначен другой локальный IP-адрес.
Однако переадресация портов требует, чтобы IP-адрес, используемый для любых локальных устройств, оставался прежним. Вы можете назначить статический IP-адрес вручную, но большинство сетевых маршрутизаторов позволяют назначать статический IP-адрес определенным устройствам на странице настроек вашего маршрутизатора с использованием резервирования DHCP.
К сожалению, каждый производитель маршрутизатора отличается, и шаги, показанные на скриншотах ниже (сделанные с использованием маршрутизатора TP-Link), могут не соответствовать вашему маршрутизатору. В этом случае вам может потребоваться просмотреть документацию к вашему маршрутизатору для получения дополнительной поддержки.
Для начала зайдите на страницу веб-администрирования вашего сетевого маршрутизатора с помощью веб-браузера и авторизуйтесь, используя имя пользователя и пароль администратора маршрутизатора. После входа в систему войдите в область настроек DHCP вашего маршрутизатора.
Вы можете сканировать локальные устройства, которые уже подключены (для автозаполнения необходимого правила распределения), или вам может потребоваться указать конкретный MAC-адрес для устройства, которому вы хотите назначить статический IP-адрес. Создайте правило, используя правильный MAC-адрес и IP-адрес, который вы хотите использовать, затем сохраните запись.
Создание нового правила переадресации портов
Если у вашего устройства статический IP-адрес (установленный вручную или зарезервированный в настройках распределения DHCP), вы можете перейти к созданию правила переадресации портов. Условия для этого могут быть разными. Например, некоторые маршрутизаторы TP-Link называют эту функцию виртуальными серверами, тогда как маршрутизаторы Cisco называют ее стандартным именем (переадресация портов).
В правильном меню на странице веб-администрирования вашего маршрутизатора создайте новое правило переадресации портов. Правилу потребуется внешний порт (или диапазон портов), к которому вы хотите, чтобы внешние пользователи подключались. Этот порт связан с вашим общедоступным IP-адресом (например, порт 80 для общедоступного IP-адреса 80.80.30.10).
Вам также необходимо определить внутренний порт, на который вы хотите перенаправить трафик с внешнего порта. Это может быть тот же порт или альтернативный порт (чтобы скрыть назначение трафика). Вам также необходимо указать статический IP-адрес для вашего локального устройства (например, 192.168.0.10) и используемый протокол порта (например, TCP или UDP).
В зависимости от вашего маршрутизатора вы можете выбрать тип службы для автоматического заполнения необходимых данных правила (например, HTTP для порта 80 или HTTPS для порта 443). После настройки правила сохраните его, чтобы применить изменение.
Ваш сетевой маршрутизатор должен автоматически применить изменения к правилам вашего брандмауэра. Любые попытки внешнего подключения к открытому порту должны быть перенаправлены на внутреннее устройство с использованием созданного вами правила, хотя вам может потребоваться создать дополнительные правила для служб, использующих несколько портов или диапазонов портов.
Если у вас возникли проблемы, вам также может потребоваться добавить дополнительные правила брандмауэра на ваш ПК или программный брандмауэр Mac (включая брандмауэр Windows), чтобы разрешить прохождение трафика. Например, брандмауэр Windows обычно не разрешает внешние подключения, поэтому вам может потребоваться настроить это в меню настроек Windows.
Если брандмауэр Windows вызывает у вас трудности, вы можете временно отключить исследовать. Однако из-за угроз безопасности мы рекомендуем повторно включить брандмауэр Windows после устранения проблемы, поскольку он обеспечивает дополнительную защиту от возможных попыток взлома.
Безопасность вашей домашней сети
Вы узнали, как настроить переадресацию портов, но не забывайте о рисках. Каждый порт, который вы открываете, добавляет еще одну дыру за брандмауэром вашего маршрутизатора, которую инструменты сканирования портов могут найти и использовать. Если вам нужно открыть порты для определенных приложений или служб, убедитесь, что вы ограничили их отдельными портами, а не огромными диапазонами портов, которые могут быть нарушены.
Если вы беспокоитесь о своей домашней сети, вы можете повысить безопасность сети, добавление стороннего брандмауэра. Это может быть программный брандмауэр, установленный на вашем ПК или Mac, или аппаратный брандмауэр, работающий круглосуточно и без выходных, например Firewalla Gold, подключенный к вашему сетевому маршрутизатору, чтобы защитить все ваши устройства одновременно.
Как сделать проброс портов на роутере
Что такое перенаправление порта
Перенаправление порта — это сопоставление определённого порта на внешнем интерфейсе роутера с определённым портом нужного устройства в локальной сети.
Перенаправление порта является одной из функций механизма NAT (трансляции сетевых адресов). Суть NAT заключается в использовании несколькими устройствами в локальной сети одного внешнего интерфейса. В домашних сетях внешний интерфейс — это WAN-порт роутера, а сетевые устройства — это компьютеры, планшеты и смартфоны. А суть перенаправления заключается в том, чтобы предоставить доступ к какому-то устройству в сети из Интернета, используя какой-либо открытый порт роутера.
Как сделать проброс порта на шлюзе (роутере, модеме)
Это то, что в народе называется «как открыть порт на роутере».
Допустим, есть задача предоставить доступ к удалённому рабочему столу компьютера, который подключён к Интернету через роутер. Для этого нужно создать правило перенаправления любого свободного порта WAN-интерфейса роутера на порт 3389 нужного компьютера. 3389 — это порт, который используется по умолчанию для приёма входящих подключений службы сервера удалённых рабочих столов. После создания такого правила и применения настроек на роутере запросы, поступившие на указанный внешний порт будут перенаправлены на 3389 нужного компьютера в сети.
Для этого на роутере необходимо зайти в настройки перенаправления портов и добавить правило.
Пример настройки перенаправления порта на роутере D-Link.
1 Откройте раздел Advanced (Расширенные настройки).
2 Выберите настройку Port Forwarding (перенаправление портов).
3 Настройте правило перенаправления:
4 Нажмите Save Setting (Сохранить настройки)
Проверка работы перенаправления порта
Для проверки работы перенаправления портов нужно подключиться к компьютеру, используя внешний IP-адрес или имя хоста.
Нажмите win+r, введите mstsc и нажмите Enter:
В поле Компьютер dведите внешний IP-адрес роутера (который присвоен провайдером WAN-интерфейсу) либо имя хоста.
Нажмите Подключить:
(Тем самым вы устанавливаете соединение с WAN-портом роутера на 3389. При этом на роутере срабатывает перенаправление порта согласно правилу на внутренний IP-адрес 192.168.1.100 и указанный порт 3389)
Если вы увидите подпись Настройка удалённого сеанса, значит перенаправление порта работает:
В итоге вы должны увидеть рабочий стол удалённого компьютера (сервера удалённых рабочих столов):
Примечание
В веб-интерфейсе маршрутизаторов вместо настройки Port Forwarding может присутствовать настройка Virtual Server. А иногда — и та, и другая.
Имейте в виду, что для публикации одного порта можно использовать как настройку Port Forwarding, так и Virtual Server. Разница в том, что настройка Виртуальный сервер позволяет переадресовывать (публиковать) только один порт на локальном компьютере, а с помощью настройки Перенаправление можно пробрасывать и отдельные порты, и диапазоны.