Как запустить программу на роутере
Этот протокол не такой и старый появился он в 1999 году, в 2014 году стандартизирован, а в апреле 2019 года вышла MQTT v5.0
Основные особенности протокола MQTT:
Устройства протокола MQTT
Вот схема как все это выглядит.
Протокол MQTT работает на прикладном уровне поверх TCP/IP и использует порты:
- 1883 по умолчанию
- 8883 при подключении через SSL
Кроме этого существуют ещё некоторые термины, о которых необходимо знать:
QoS (Quality of Service – качество обслуживания)- этот показатель обозначает вероятность прохождения пакета между двумя точками сети.
- Connect – установить соединение с брокером
- Disconnect – разорвать соединение с брокером
- Publish – опубликовать данные в топик
- Subscribe – подписаться на топик
- Unsubscribe – отписаться от топика
Практическая реализация
Брокер (сервер) Mosquitto
Пожалуй это самый известный сервер (брокер)
Доступны два типа пакетов:
- nossl (mosquitto-nossl) без шифрования
- ssl (mosquitto-ssl) с шифрованием
Для создания пользователей и генерации паролей необходимо установить пакет mosquitto-client
Установим пакеты с шифрованием, конечно будем использовать командную\ю строку, терминал в данном случае PuTTY ( официальный сайт ):
После установки все само появляется в автозагрузке
Но если что, то включаем в автозагрузке и стартуем
Можно перезагрузить роутер
И все, мы все установили, но работать ничего не будет, дальше все это нужно настроить.
Настройка
Настройка пароля и пользователя
Настройку можно произвести двумя способами через WIndows или через роутер, через роутер легче и быстрее, но возможно кому то понадобится через Windows или привычнее, но еще раз так дольше
Через ОС Windows 10 (лучше делать через роутер так быстрее, см. ниже)
- Создаем файл с расширением . bat, например StartPWD.bat (имя может быть любое)
Отступление о запуске программы с параметрами командной строки
Запустить программу с определенными значениями в среде Windows можно двумя способами
С помощью ярлыка
Создаем ярлык, Свойства. Откроется окно, в котором нас интересует поле Объект. Именно в нем, после кавычек, и следует дописать нужную нам команду.
С помощью "bat" файла
start "" путь_к_программе
Если путь содержит пробелы, возьмите весь путь в двойные кавычки, например: start "" "C:\Program Files\program.exe"
После пути к программе можно также указать параметры, с которыми она должна запускаться, например (аналогично, если параметры запуска содержат пробелы, возьмите их в кавычки): start "" c:\windows\notepad.exe file.txt
Например создадим пользователя "test"
start "" "C:\Program Files\mosquitto\mosquitto_passwd.exe" -c C:\user.list test
"C:\Program Files\mosquitto\mosquitto_passwd.exe" - путь в кавычках где установлен mosquitto
-c C:\m user.list ИМЯ_Пользователя - ключ и путь расположения файла пароля
Файл пароля можно открыть в текстовом редакторе он имеет вид
Имя_пользователя: Зашифрованный пароль
Выглядит вот так
- Запускаем наш bat файл от администратора.
- Возникает окно с запросом пароля для пользователя имя которого мы указали выше. Вводим пароль два раза (он не отображается), Формируется файл mosquitto.pwd
- Находим файл который находится в корневом каталоге С: C:\user.list
- Загружаем программу WinSCP и переносим созданный файл на роутер в /etc/mosquitto/ config/
Настройка через OpenWRT и командую строку
Сначала создадим файлы и папки
Мы это делаем для того, что бы все файлы с настройками и паролями хранились в одном месте и их можно было легко перенести и сохранить. Все будем хранится в папке " config ". Создаем папку " config " в etc/mosquitto вот полный путь: /etc/mosquitto/config таким образом
Создаем файл "main.conf " в /etc/mosquitto/config получается вот так /etc/mosquitto/ config/main.conf
там же создаём файл /etc/mosquitto/ config/mosquitto.acl все вместе вот так:
Открываем любой терминал (чаще всего это Putty), заходим и вводим
mosquitto_passwd -c /etc/mosquitto/ config/user.list ИМЯ_ПОЛЬЗОВАТЕЛЯ
Ну например ИМЯ_ПОЛЬЗОВАТЕЛЯ будет test или dom
Возникает окно с запросом пароля для пользователя имя которого мы указали выше. Вводим пароль два раза (он не отображается ), Формируется файл user.list
Теперь редактируем основной конфигурационный файл "mosquitto.conf"
Таким образом что бы подгружать конфигурации из указанной папки, а мы ее создали выше (в нашем случае это файл main.conf )
Идем в mosquitto.conf это основной конфигурационный файл и открываем его, например с помощью nano
или с помощью vi
или с помощью SFTP и программы WinSCP и вносим единственную правку в секцию External config files добавляем (на самом деле пофиг куда добавлять, все равно там все закомментировано, но так по феншую, этот раздел находится в самом низу документа):
include_dir /etc/mosquitto/config
тем самым говорим где искать конфигурационные файлы
В файл main.conf например с помощью nano
или с помощью SFTP и программы WinSCP
Добавляем единственные строки
Что делают эти строки?
Первая строка запрещает подключение без пароля т. е. анонимным пользователям
Вторая строка объясняет где расположен файл пароля
Третья строка объясняет где расположен файл с доступам к топикам (см. ниже)
Получаем вот так (это можно скопировать и добавить в файл) ссылка на текстовый файл
Настройка доступа пользователей к топикам
Идем в файл mosquitto.acl
который мы создали ранее и редактируем его, настраиваем нужный доступ по нужным пользователям, для тестирование даём доступ пользователю test или dom ко всем топикам это знак решетки
Вот так, ссылка так как используется решетка
Символ решетки
- temp/2
- tempe/sensor
- temp/other/sensor
- temp/comp
Символ плюса (+)
К примеру, нам необходимо получить данные о температуры во всех комнатах:
/home/living-space/ + /temperature
В результате получаем данные с топиков:
- /home/living-space/living-room1/temperature
- /home/living-space/living-room2/temperature
- /home/living-space/living-room3/temperature
LWT - Last Will and Testament
Таким образом можно точно знать что устройство ушло в offline или вернулось в online.
В ESP8266 есть такие настройки:
Настройка завершена, теперь перезагружаем службу:
Настройка mosquitto завершена создан пользователь test или dom который имеет доступ ко всем топикам.
Проверка
Для проверки будем использовать MQTTLens клиент под Windows, а именно приложение Google Chrome, которое подключается к брокеру MQTT и может подписываться на топики MQTT и публиковать их.
Вот такое непримечательное окно, но нам с ним особо не работать, а только проверить.
Мне давно хотелось «потрогать руками» интернет-сервисы, настроив веб-сервер с нуля и выпустив его в Интернет. В этой статье хочу поделиться полученным опытом превращения домашнего роутера из узкофункционального устройства в практически полноценный сервер.
Началось всё с того, что служивший верой и правдой роутер TP-Link TL-WR1043ND перестал удовлетворять потребности домашней сети, захотелось 5ГГц диапазона и быстрого доступа к файлам на накопителе, подключенном к роутеру. Просмотрев профильные форумы (4pda, ixbt), сайты с отзывами и посмотрев на ассортимент местных магазинов — решил приобрести Keenetic Ultra.
В пользу именно этого устройства сработали хорошие отзывы владельцев:
- нет WiFi6, хотелось взять оборудование с запасом на будущее;
- 4 LAN порта, хотелось больше, но это уже не домашняя категория.
- слева оптический терминал Ростелекома;
- справа наш подопытный роутер;
- проводом к роутеру подсоединен завалявшийся m.2 SSD на 128 ГБ, помещенный в коробку USB3 с алиэкспресса, сейчас он аккуратно закреплен на стенке;
- на переднем плане удлинитель с независимым отключением розеток, провод от него идет к недорогому UPS;
- на заднем плане пучок витой пары — на этапе ремонта квартиры сразу запланировал RJ45 розетки в местах предполагаемого размещения техники, чтобы не зависеть от замусоренности WiFi.
- первичная настройка роутера занимает около 2 минут, указываем параметры подключения к провайдеру (у меня оптический терминал переключен в режим бриджа, PPPoE соединение поднимает роутер), название WiFi сети и пароль — в принципе всё, роутер запускается и работает.
Ставим переадресацию внешних портов на порты самого роутера в разделе «Сетевые правила — Переадресация»:
Теперь можно перейти к «продвинутой» части, чего я хотел от роутера:
- функционал небольшого NAS для домашней сети;
- выполнение функций веб-сервера для нескольких частных страничек;
- функционал персонального облака для доступа к личным данным из любой точки мира.
- берем предназначенный для этой роли накопитель (флешку, карту памяти в картридере, жесткий диск или SSD во внешнем боксе и форматируем в Ext4 с помощью MiniTool Partition Wizard Free Edition (у меня нет компьютера с linux под рукой, там можно встроенными средствами). Как я понимаю, при работе система пишет на флешку только логи, поэтому, если их ограничить после настройки системы — можно использовать и карты памяти, если планируете много и часто писать на накопитель — лучше SSD или HDD.
После этого подключаем накопитель к роутеру и наблюдаем его на экране системного монитора
Переходим щелчком по «USB-диски и принтеры» в раздел «Приложения» и настраиваем общий ресурс в разделе «Сеть Windows»:
И у нас имеется сетевой ресурс, который можно использовать с компьютеров под Windows, подключив при необходимости как диск: net use y: \\192.168.1.1\SSD /persistent:yes
Скорость такого импровизированного NAS вполне достаточна для домашнего применения, по проводу он использует весь гигабит, по WiFi скорость составляет около 400-500 мегабит.
Настройка хранилища — один из необходимых шагов для настройки сервера, далее нам нужно:
— приобрести домен и статический IP адрес (можно обойтись и без этого, используя Dynamic DNS, но статический IP у меня уже был, поэтому проще оказалось воспользоваться бесплатными сервисами Яндекса — делегировав туда домен, мы получаем DNS-хостинг и почту на своем домене);
— настроить DNS сервера и добавить A-записи, указывающие на ваш IP:
Вступление в силу настроек делегирования домена и DNS занимает несколько часов, поэтому параллельно занимаемся настройкой роутера.
Для начала необходимо установить репозиторий Entware, из которого мы сможем ставить на роутер необходимые пакеты. Я воспользовался этой инструкцией, только не заливал установочный пакет по FTP, а создал папку прямо на подключенном ранее сетевом диске и скопировал туда файл обычным способом.
Получив доступ по SSH, меняем пароль командой passwd и ставим командой opkg install [имена пакетов] все нужные пакеты:
В ходе настройки на роутере оказались установлены следующие пакеты (результат вывода команды opkg list-installed):
Возможно, тут что-то лишнее затесалось, но места на накопителе много, поэтому разбираться не стал.
И отмечу, что генерация dhparams.pem командой «openssl dhparam -out dhparams.pem 2048» на моем роутере занимает больше 2 часов, если бы не индикатор прогресса — потерял бы терпение и перезагрузил.
После получения сертификатов перезапускаем nginx командой "/opt/etc/init.d/S80nginx restart". В принципе на этом настройка закончена, но сайта еще нет — если положим в каталог /share/nginx/html файл index.html, увидим заглушку.
Выбираем подходящий шаблон — там есть на самые разные случаи, скачиваем архив, и раcпаковываем его в каталог /share/nginx/html, делать это можно уже со своего компьютера, затем редактируем шаблон (тут потребуются минимальные знания HTML, чтобы не нарушить структуру) и заменяем графику, как показано на рисунке ниже.
Резюме: роутер вполне пригоден для размещения на нем легкого сайта, в принципе — если не предполагается большой нагрузки, можно поставить и php, и экспериментировать с более сложными проектами (смотрю на nextcloud/owncloud, вроде есть успешные установки на такое железо). Возможность установки пакетов поднимает его полезность — например, когда надо было защитить RDP порт ПК в локальной сети, поставил knockd на роутер — и проброс порта к ПК открывался только после port knocking.
Почему именно роутер, а не обычный PC? Роутер — одна из немногих компьютерных железяк, круглосуточно работающих во многих квартирах, домашний роутер обычно абсолютно бесшумен и легкий сайт с числом посещений в сутки меньше сотни его совершенно не напряжет.
Многие современные домашние роутеры по сути представляют собой мини-компьютер — у которого разве что нет монитора и мыши/клавиатуры. Впрочем, учитывая назначение этих самых железяк, последнее — вовсе не проблема.
Как правило, в базовой прошивке роутер умеет раздавать интернет на один или несколько LAN-портов, а также обслуживать собственную беспроводную сеть. Более продвинутые модели зачастую включают один или несколько портов USB, куда можно подключить, например, принтер или флэшку с файлами.
Однако всё богатство возможностей этого железа открывается при использовании открытых прошивок. Для новичков — dd-wrt, для более продвинутых — серия open-wrt и прочие wrt-based.
В настоящей статье речь пойдёт о настройке анонимизированной wifi-точки на базе роутера Asus RT-N16 с прошивкой dd-wrt и optware.
Изначальная идея не нова — она давно витает в воздухе, и одна из реализаций даже как-то анонсировалась на Хабре. Тем не менее, что касается деталей — то их, как правило, не найти. В рядовых «how-to» я этого не нашёл, а явно знающим гуру, видимо, не до написания подобных инструкций. Поэтому пришлось во всём разбираться самому. Ну и заодно фиксировать сделанное — на будущее.
Итак, имеем роутер с прошитым dd-wrt. У этой специфической модели, увы, нет поддержки Open-wrt (или, по крайней мере, не было на тот момент, когда это потребовалось. Сейчас уже появилась бета, но она пока что не претендует на стабильность).
Для установки и настройки необходим доступ к роутеру через telnet или (что гораздо безопаснее) через ssh. Доступ можно устроить (или подсмотреть) в веб-интерфейсе dd-wrt.
Сперва устанавливаем tor:
Затем правим его конфиг. В случае с optware он располагается в /opt/etc/torrc. Опять же, замечу, что путь к конфигу по умолчанию вовсе не является обязательным. Программу всегда можно запустить с другим файлом конфигурации, но его придётся явно указывать в опциях запуска. В этом плане путь по умолчанию всё же проще, покуда делает запуск программы более лаконичным.
Конфиг по умолчанию хорошо прокомментирован, и основную настройку можно произвести, просто читая эти комментарии, без всяких сторонних руководств. В моём случае роутер обслуживает домашнюю сеть 192.168.1.0/24. В ней я решил сделать классический tor с доступом как через прокси socks5 на порту 9100. Помимо этого я решил сделать анонимизированную точку доступа, которая пустит пользователей в сеть 192.168.2.0/24, где вся связь с внешним миром будет лишь через tor (прозрачный прокси), либо просто обрублена. Иными словами — мы имеем wifi-точку, подключившись к которой мы никак не попадём ни к соседям из той же сети (192.168.2.0/24), ни в мою домашнюю сеть (192.168.1.0/24), ни на локальные сервисы роутера. А можем попасть только в интернет, причём только анонимным образом (через tor).
Для этого в конфиге прописаны следующие локальные параметры:
Для домашней сети:
По сути это означает, что для того, чтобы попасть анонимно в интернет я должен настроить браузер на подключение через socks5-прокси с указанным адресом (это внутренний адрес роутера).
Для анонимной сети:
TransPort 9040
TransListenAddress 192.168.2.1
DNSPort 9053
DNSListenAddress 192.168.2.1
В анонимной сети клиенты никуда подключаться не будут, а указанные порты и адрес нужны лишь для настройки правил iptables.
Помимо этих настроек также имеет смысл назначить адрес виртуальной сети:
Этот адрес необходим в случае перехода по внутренним анонимным сервисам (т.н. 'hidden service') тор-сети. Это адреса сайтов, располагающиеся в домене .onion. Такого домена в реальной жизни нет; однако будучи в tor, их собственный DNS распознаёт такие адреса и выводит вас к нужному ресурсу, спрятанному где-то в глубине сети. При этом фактический ip-адрес такого сайта скрыт, и узнать его невозможно. В этом случае для программ, которые сперва разрешают адрес узла через DNS, а потом подключаются к полученному ip-адресу, tor-демон создаёт временный адрес из указанной маски виртуальной сети. Иными словами, при попытке подключиться к какому-нибудь узлу superpuper.onion он «разрешится» в адрес, например, 10.192.0.1. И программа, подключаясь к этому адресу, будет через «луковые слои» tor-шифрования достигать нужного ресурса.
Что касается настройки «публичной» части конфига — там всё, согласно комментариям в самом файле.
В результате этих настроек мы получим демона, который
1) является proxy-socks с адресом 192.168.1.5:9100
2) является прозрачным proxy с адресом 192.168.2.1, причём помимо tcp-трафика умеет обрабатывать DNS-запросы.
С локальным socks-прокси всё ясно. Просто настраиваем любой браузер в домашней сети на выход в интернет через указанный прокси — и всё работает.
Ничуть не сложнее доступ с удалённой машины (у нас же есть ssh-консоль на роутер — значит, ничего не мешает просто пробросить порт:
ssh -L localhost:9100:192.168.1.5:9100 homerouter
— и после этого на той машине заработает Socks5 по адресу localhost:9100.
Теперь настраиваем точку доступа.
Для этого в gui dd-wrt заходим во вкладку wireless и там добавляем виртуальный интерфейс. Имя придумайте сами (я назвал бесхитростно: tor_network). Конфигурация сети — unbridged (т.е. точка не имеет связи с другими интерфейсами и как бы образует свой собственный замкнутый мирок). Запрещаем там же маскарадинг и мультикаст и назначаем адрес сети: 192.168.2.1/255.255.255.0. Затем на вкладке wireless security настраиваем, если нужно, доступ к точке. Я в своём случае поставил «disabled», т.е. создал открытую точку.
Таким образом у нас на роутере работают одновременно две разные сети: домашняя (защищённая WPA2) и вновь созданная tor_network, которая изначально открыта. Впрочем, это не даёт никому никаких привилегий, поскольку подключившись к этой открытой сети мы никуда не попадём :)
Двигаемся дальше. На вкладке Setup/Networking ищем в самом низу раздел DHCPD и добавляем запись для интерфейса wl0.1 (это, собственно, и есть железячное имя нового виртуального wifi-интерфейса), чтобы он назначал адреса из подсети 192.168.2.0/24. Скажем, 50 адресов начиная со 100 вполне хватит.
Теперь подключаясь к нашей открытой точке мы получим внутренний ip-адрес.
Осталось лишь подключить эту точку к прозрачному tor.
Это делается с помощью iptables:
CRNET="192.168.2.0/24"
TORCMD="iptables -t nat -A PREROUTING -i wl0.1"
TORPORT="9040"
TORDNS="9053"
Что делаем?
1. Редиректим весь udp-трафик на 53-й порт (dns) на порт нашего демона.
2. Пропускаем спокойно весь udp-трафик на 67-й порт (там висит dhcp)
3. Весь остальной трафик во внутреннюю открытую сеть, откуда бы он ни был, отсекаем.
4. Редиректим весь tcp-трафик на порт прозрачного прокси нашего демона.
5. Весь остальной трафик открытой сети отсекаем.
Этот скрипт можно вставить в Administration/commands и сохранить как firewall-скрипт.
В качестве дополнительного бонуса — изначально повышенная анонимность, поскольку демон, работающий на железячном роутере по умолчанию не пишет никуда никаких логов и не оставляет следов в системе
Порты позволяют сетевым и подключенным к интернету устройствам взаимодействовать через указанные каналы. Хотя серверы с назначенными IP адресами могут подключаться к интернету напрямую и делать порты публично доступными, система, находящаяся за роутером в локальной сети, может оказаться недоступной из интернета. Технология проброса портов (port forwarding) позволяет преодолеть это ограничение и сделать устройства доступными публично.
Сетевые сервисы и приложения, запущенные на различных устройствах, используют порты с определенными номерами с целью инициации соединений и организации коммуникаций. Разные порты могут использоваться одновременно для разделения типов трафика и запросов. Обычно порты ассоциируются с определенными службами, чтобы клиент мог подключиться к серверу по определенному порту, а сервер принять соединение и ответить соответствующим образом.
Ниже представлены наиболее распространенные порты:
Хотя порты упрощают задачу идентификации и обработки определенных запросов, соглашение о нумерации портов является стандартом, но не правилом. Порты могут использовать для любых задач при условии, что соединение между клиентом и сервером на указанном порту использует соответствующий протокол.
Хотя любой открытый порт должен позволять попытки соединения, чтобы эти попытки совершились, у клиента должен быть сетевой доступ к целевому устройству. В случае с сервером, подключенным к интернету напрямую, или при соединении через локальную сеть, сложностей обычно не возникает. Проблема появляется в тот момент, когда мы пытаемся подключиться к порту у устройства, находящегося за роутером или фаерволом.
Шаг 1. Выяснение IP адреса роутера
В Линуксе та же самая задача решается при помощи утилиты 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 с целью облегчения доступа к тестовому серверу, или могут быть добавлены новые порты для использования определенной службой. Проброс портов полезен для удаленного доступа, администрирования сервера, конфигурирования сети и даже во время пост-эксплуатации и пивотинга. Понимание этой технологии может быть ключом к бесчисленному множеству других проектов по безопасности.
Один хакер может причинить столько же вреда, сколько 10 000 солдат! Подпишись на наш Телеграм канал, чтобы узнать первым, как выжить в цифровом кошмаре!
Всем привет! Сегодня я расскажу вам про проброс портов на роутере ZyXEL Keenetic. Я постарался описать все как можно подробнее, если у вас будут возникать какие-то вопросы при прочтении, то пишите в комментариях. Если вы не знаете, что такое порты, то читаем эту статью.
ПРИМЕЧАНИЕ! Инструкции подходят для всех моделей ZyXEL Keenetic: OMNI 2, VIVA, GIGA, 4G, Lite, Start, Air, Extra, Duo, SpeedSter, Ultra и другие.
Все настройки мы будем производить через обычный Web-интерфейс, куда можно попасть с обычного браузера. Вы можете делать настройки с любого устройства – будь это компьютер, ноутбук, телефон или даже телевизор. Откройте браузер и в адресную строку впишите один из предложенных адресов (или перейдите по ссылкам):
Далее вам нужно будет вписать логин и пароль. По умолчанию используется комбинация admin-admin. Всю информацию по входу в админку маршрутизатора можно подсмотреть на этикетке, которая находится на нижней части аппарата.
Как открыть порты в роутере ZyXEL Keenetic? Далее мы и будем этим заниматься, но прежде чем мы начнем, то давайте будем правильно использовать это понятие. На маршрутизаторе все же не открывают, а именно пробрасывают (переадресовывают или перенаправляют) порты. Роутеру сами эти порты не нужны, а их используют конечные приложения или даже устройства, которые находятся в локальной сети. Интернет-центр в этом плане выступает неким проливом, через который идет трафик. Открывают же порты уже на конечном устройстве. Например, на компьютере – об этом я также расскажу чуть ниже. Надеюсь, с этим понятием мы разобрались.
ШАГ 2: Проверка или включение UPnP (Universal Plug and Play)
Для начала давайте разберем понятие UPnP на примере. Вообще по умолчанию на всех роутерах, в том числе на ZyXEL Keenetic запрещены входящие подключения из интернета за счет работы межсетевого экрана. Это сделано для безопасности в локальной сети. Технология UPnP позволяет автоматически делать проброс порта через роутер при запуске программ на компьютере, телефоне или даже телевизоре.
Например, запустили вы Torrent на компьютере. На роутере автоматически идет проброс этого порта. Когда вы программу закрываете, то порт и проброс закрывается. Аналогично касается почти всех программ, которые работают с интернетом. По умолчанию данная функция включена на роутере, но лучше это сразу проверить. По сути UPnP постоянно контролирует проброс именно тех портов, которые необходимы для работы приложений на компьютере, телефоне или других устройствах, работающих с интернетом.
Прежде чем мы приступим еще пару слов. Иногда даже при включенной функции UPnP некоторые программы могут не работать. А возможно вам нужно пробросить порты для работы отдельных устройств, например, для работы выделенного сервера или для доступа к камере видеонаблюдения. В таком случае проброс нужно делать вручную, а это описано в 3-м шаге. В любом случае вам нужно проверить, что данная функция включена, поэтому не пропускайте этот шаг.
Новая прошивка
В меню выберите раздел «Общие настройки» и далее выберите «Изменить набор компонентов». Убедитесь, что служба включена и установлена.
Старая прошивка
- Перейдите на вкладку «Обновление» и в списке найдите нашу службу. Если она включена, то рядом будет стоять галочка, а состояние будет в режиме «Установлен».
- Если вы хотите включить функцию, то включите галочку, а если хотите выключить, то уберите.
- Для того, чтобы изменения вступили в силу, нужно нажать на кнопку установки в самом низу.
ШАГ 3: Проброс портов
Для начала вам нужно выяснить, какой именно порт, а также протокол использует ваша программа или устройство. Список всех портов можно посмотреть в PDF файлике ниже.
Новая прошивка
В качестве примера я буду настраивать проброс порта для компьютера – для работы с удаленным рабочим столом из-под Windows. Для этого используется порт 3389 протокола TCP.
- В разделе «Мои сети и Wi-Fi» нажмите на «Список устройств».
- Вам нужно произвести регистрацию аппарата, на который вы будете пробрасывать порт. Просто нажмите по нему.
- Для начала просто вводим название и кликаем по кнопке регистрации.
- Этот аппарат появился в списке ниже, опять жмем по нему.
- Установите галочку, как на картинке ниже, чтобы устройство всегда имело один IP адрес. Далее ниже в разделе «Переадресация портов», кликаем «Добавить правило».
Старая прошивка
Я покажу пример проброса для подключения к FTP-серверу. То есть внутри локальной сети к роутеру еще будет подключен системный блок, на котором будет расположен FTP. Для этого будет использоваться 21 порт с протоколом TCP.
- Для начала нам нужно зарегистрировать устройство, которое подключено к сети – это нужно для того, чтобы этому аппарату выдавался постоянный IP адрес. Нажмите по значку «Домашняя сеть».
- На вкладке «Устройства», нажимаем по нашему аппарату. Устанавливаем галочку «Постоянный IP-адрес». Можно также ввести название. Кликаем «Применить».
- На первой вкладке «NAT» нажимаем по кнопке добавления правила.
ПРИМЕЧАНИЕ! Если вам нужно открыть какой-то порт для TCP и UDP протоколов, то нужно создавать два правила.
- Сохраняем правило. В моем случае нужно также включить компонент («Система» – «Обновление»), который работает с FTP. Возможно для вашей задачи понадобится какой-то другой компонент, поэтому можете пробежать глазами по компонентам, если у вас не будет что-то работать.
ШАГ 4: Открытие портов на компьютере с ОС Windows
Если вы пробрасывали порты для определенной программы или приложения, то на Windows вам нужно их открыть – по этому поводу есть детальная инструкция тут.
Решение проблем с удаленным доступом
Если вы делали проброс на ваш компьютер для определенного приложения, то больше ничего делать не нужно. Если же вы делали проброс, для доступа к серверу, компьютеру, камере-видеонаблюдения, то вам нужно еще зайти на эти устройства. И тут встает две проблемы.
Скорее всего ваш провайдер постоянно меняет вам внешний IP адрес, то есть он является динамический. Это значит, что в какой-то момент IP поменяется, и доступ к выделенному устройству оборвется. В таком случае вам поможет DDNS (или динамический DNS).
Но DDNS можно использовать только, если ваш провайдер использует динамический белый IP. Если же ваш провайдер использует серый IP, то настроить удаленный доступ можно только на новых прошивках Keenetic – для этого используется служба KeenDNS.
Есть еще одна проблема, с которой вы можете столкнуться. Например, если вы пытаетесь пробросить какой-то порт, а он уже используется. В таком случае вам нужно использовать DMZ. DMZ по сути открывает интернет подключение для вашего выделенного устройства.
Все эти темы уже описаны в отдельных статьях:
Если у вас еще остались вопросы, или я что-то не написал, то смело пишите в комментариях, я или кто-то из моей команды обязательно вам поможет. Всем добра!
Читайте также: