Openwrt upnp: How to Enable UpNp with the LuCI interface? : openwrt
|/etc/config/dhcp | Конфигурация Dnsmasq и установки DHCP |
/etc/config/dropbear | Опции SSH сервера |
/etc/config/firewall | NAT, пакетная фильтрация, перенаправление портов, и т.д. |
/etc/config/network | Конфигурация коммутатора, интерфейсов и маршрутизатора |
/etc/config/system | Доп. системные настройки |
/etc/config/timeserver | Список серверов времени для rdate |
/etc/config/wireless | Настройки беспроводного подключения и сети wifi |
IPv6 | |
---|---|
/etc/config/ahcpd | Ad-Hoc Configuration Protocol (AHCP) server and forwarder configuration |
/etc/config/aiccu | AICCU client configuration |
/etc/config/dhcp6c | WIDE-DHCPv6 client |
/etc/config/dhcp6s | WIDE-DHCPv6 server |
/etc/config/gw6c | GW6c client configuration |
/etc/config/radvd | Router Advertisement (radvd) configuration |
Другое | |
/etc/config/bbstored | Конфигурация сервера резервного копирования BoxBackup |
/etc/config/etherwake | Wake-on-Lan: etherwake |
/etc/config/fstab | Точки монтирования и раздел подкачки |
/etc/config/hd-idle | Another idle-daemon for attached hard drives |
/etc/config/httpd | Установки веб-серввера (Busybox httpd, устарело) |
/etc/config/luci | Основные настройки LuCI |
/etc/config/luci_statistics | Настройка пакета статистики |
/etc/config/mini_snmpd | Настройки SNMP демона mini_snmpd |
/etc/config/minidlna | Настройки MiniDLNA |
/etc/config/mjpg-streamer | Настройки потокового вещания для Linux-UVC совместимых веб-камер |
/etc/config/mountd | Настройки демона автомонтирования OpenWrt |
/etc/config/mroute | Конфигурационные файлы для маршрутов мульти-WAN |
/etc/config/multiwan | Конфигурация простого мульти-WAN |
/etc/config/ntpclient | Настройки NTP клиента синхронизации времени |
/etc/config/p910nd | Настройки для без-буферного демона печати p910nd. server |
/etc/config/pure-ftpd | Конфигурация сервера Pure-FTPd |
/etc/config/qos | Реализация QoS для upload |
/etc/config/racoon | Настройки сервиса IPsec racoon |
/etc/config/samba | Настройки сервера SAMBA для шаринга файлов и принтеров сетей Microsoft |
/etc/config/snmpd | Настройки SNMP демона SNMPd |
/etc/config/sshtunnel | Установки пакета sshtunnel |
/etc/config/stund | Настройки сервера STUN |
/etc/config/transmission | Настройки BitTorrent |
/etc/config/uhttpd | Настройки веб-сервера (uHTTPd) |
/etc/config/upnpd | Настройки UPnP сервера miniupnpd |
/etc/config/users | База данных пользователей для различных сервисов |
/etc/config/ushare | Настройки сервера UPnP uShare |
/etc/config/vblade | vblade userspace AOE target |
/etc/config/vnstat | vnstat downloader settings |
/etc/config/wifitoggle | Скрипт для вкл. WiFi кнопкой |
/etc/config/wol | Wake-on-Lan: wol |
/etc/config/wshaper | wondershaper qos script settings |
/etc/config/znc | ZNC bouncer configuration |
Усиление OpenWrt — База мыслей Остина
:: {networking} :: #openwrt #router #security #hardening
Содержание
По нескольким причинам я снова упал в дыру OpenWrt поздно.
Работая над некоторыми пользовательскими сборками, я заметил некоторые области, в которых я мог бы значительно улучшить безопасность своих устройств. Честно говоря, я немного удивлен, что OpenWrt не делает некоторые из них по умолчанию.
Мы рассмотрим различные методы, которые большинство людей может использовать для защиты своей установки OpenWrt.
В этом руководстве предполагается, что вы знаете, как подключиться к маршрутизатору по SSH или получить доступ к веб-интерфейсу Luci, а также установить пакеты с помощью opkg
или меню System -> Software
. Если вы не знаете, как это сделать, просто прочитайте краткое руководство по OpenWrt.
При установке приложений Luci (любой пакет с именем, начинающимся с luci-app-
) вам может потребоваться выйти из системы и снова войти в нее, если ожидаемые пункты меню не отображаются сначала.
Ограничить доступ SSH к локальной сети (LAN)§
Прежде всего, давайте заблокируем сервер SSH (по умолчанию OpenWrt использует «dropbear»), чтобы он прослушивал только локальную сеть. По умолчанию он прослушивает все интерфейсы, включая и интерфейс WAN/интернет. Это означает, что любой человек в Интернете потенциально может войти в ваш маршрутизатор, если он знает ваш IP-адрес. Скорее всего, им придется подобрать ваш пароль администратора (вы , правильно его установили?), если только вы не заблокировали SSH-сервер для использования аутентификации с открытым ключом.
Тем не менее, я не хочу, чтобы общедоступный Интернет мог войти в мое устройство. У меня нет личной потребности в доступе к моему маршрутизатору, когда я нахожусь вдали от дома, поэтому давайте полностью отключим его.
Примечание. Брандмауэр OpenWrt по умолчанию не открывает порты SSH в зоне WAN, поэтому риск здесь низкий. Но этот дополнительный уровень безопасности никогда не помешает.
Метод 1 (uci)§
- SSH к вашему маршрутизатору (вероятно, что-то вроде
ssh [email protected]
) - Введите следующее, чтобы настроить dropbear для прослушивания только в локальной сети:
uci set dropbear.@dropbear[0].Interface="lan" uci совершить падение медведя перезапуск сервиса dropbear
Способ 2 (Luci)§
- Войдите в Luci (откройте браузер и перейдите по адресу
http://192.168.1.1
, введите свой пароль) - Перейдите к
System -> Administration -> SSH Access
. - Выберите
LAN
из интерфейса - Нажмите
Сохранить и применить
. - Перейдите в
System -> Startup
и нажмите кнопкуRestart
рядом с dropbear. - Примечание: Люси может фактически перезапустить dropbear для нас, так что этот последний шаг может быть излишним.
Ограничить доступ Luci/uhttpd к локальной сети, доступ через HTTPS.§
Как и SSH/dropbear, веб-интерфейс Luci (сервер uhttpd) по умолчанию предоставляет доступ к общедоступной сети.
Предполагая, что вам не нужно входить в свой маршрутизатор, когда вы находитесь вне дома, давайте заблокируем его, чтобы он был доступен только в локальной сети.
Примечание. Брандмауэр OpenWrt по умолчанию не открывает порты HTTP/HTTPS в зоне WAN, поэтому риск здесь низкий. Но этот дополнительный уровень безопасности никогда не помешает.
Ссылка OpenWrt Wiki для «Защиты uHTTPd»
Метод 1 (uci)§
Прослушивание IP-адресов локальной сети и включение переадресации HTTP на HTTPS. f’)» ]; тогда
echo «$ip6 начинается с f»
uci add_list uhttpd.main.listen_http=»[$ip6]:80″
uci add_list uhttpd.main.listen_https=»[$ip6]:443″
фи
Выполнено
# (Необязательно) Убедитесь, что мы всегда используем/перенаправляем на HTTPS
uci установить uhttpd.main.redirect_https=’1′
uci фиксирует uhttpd
перезапуск службы uhttpd
служба uhttpd включить
Примечание. Это также настраивает uhttpd для прослушивания адреса link-local/ULA IPV6. Документация OpenWrt (ссылка выше) предлагает полностью отключить адрес IPV6.
Делайте что хотите. Прослушивание локального адреса IPV6 не кажется мне риском. Прослушивание глобального адреса IPV6 было бы более проблематичным, но здесь мы этим не занимаемся.
Метод 2 (Luci)§
- Установите
luci-app-uhttpd 9Пакет 0016.
- Перейдите на страницу
Services -> uHTTPd
. - Заполните разделы прослушивателя HTTP и HTTPS адресами IPv4 и IPv6.
- Вы можете установить IPv4-адрес просто
192.168.1.1
или любой другой, который вы настроили для IP-адреса локальной сети вашего маршрутизатора. - Обязательно используйте квадратные скобки для заключения адресов IPv6 и добавьте номер порта в конце, например
[fd88:38bc:dd39::1]:443
.
- Вы можете установить IPv4-адрес просто
- (необязательно) Нажмите
Перенаправить все HTTP на HTTPS 9Установите флажок 0016, если вы хотите использовать HTTPS с самозаверяющим сертификатом.
- Нажмите
Сохранить и применить
.
BCP38§
Это не столько защита маршрутизатора, сколько предотвращение участия вашей сети в некоторых типах DoS/DDoS-атак.
Для получения дополнительной информации я настоятельно рекомендую информационный веб-сайт BCP38, который довольно хорошо объясняет корневую проблему.
Способ 1 (uci)§
- Установите пакет
bcp38
. - Запустите следующие команды
uci
uci set bcp38. @bcp38[0].enabled='1' uci set bcp38.@bcp38[0].interface='wan' # Настройте, чтобы он соответствовал вашему порту WAN - может быть, например, что-то вроде eth0.2. uci фиксирует bcp38 перезапуск службы bcp38 служба bcp38 включить
Метод 2 (Luci)§
- Установите пакет
luci-app-bcp38
. - Перейдите в Сеть
-> Брандмауэр -> BCP38
. - Установите флажок, чтобы включить.
- Выберите интерфейсы, относящиеся к вашей глобальной сети (вероятно, помеченные как
wan, wan6
). - Нажмите
Сохранить и применить
.
banIP§
Настоятельно рекомендуется устанавливать и настраивать banIP с помощью Luci, поскольку базовая конфигурация немного подробна, если выполняется из командной строки. Я говорю это, но я уже некоторое время настраиваю его из командной строки, поэтому не стесняйтесь копировать и вставлять мою конфигурацию ниже - она должна работать хорошо.
Примечание. Этот пакет рекомендует, чтобы ваш маршрутизатор имел не менее 128 МБ ОЗУ.
Страница проекта/документация banIP Тема поддержки banIP
Метод 1 (uci)§
- Установите пакет
banip
. - Включить и настроить основной набор списков блокировки:
uci set banip.global.ban_enabled='1' uci set banip.global.ban_trigger='wan' #Настройте правильный интерфейс WAN, например. eth0.2 или wan uci удалить banip.global.ban_sources uci add_list banip.global.ban_sources='черный список' uci add_list banip.global.ban_sources='debl' uci add_list banip.global.ban_sources='drop' uci add_list banip.global.ban_sources='feodo' uci add_list banip.global.ban_sources='firehol1' uci add_list banip.global.ban_sources='greensnow' uci add_list banip.global.ban_sources='iblockads' uci add_list banip.global.ban_sources='iblockspy' uci add_list banip.global.ban_sources='myip' uci add_list banip.global.ban_sources='nixspam' uci add_list banip. global.ban_sources='прокси' uci add_list banip.global.ban_sources='sslbl' uci add_list banip.global.ban_sources='талос' uci add_list banip.global.ban_sources='угроза' uci add_list banip.global.ban_sources='tor' uci add_list banip.global.ban_sources='uceprotect1' uci add_list banip.global.ban_sources='yoyo' # Разрешить несколько сайтов, которые, как я видел, блокировались ранее. echo "enro.com" >> /etc/banip/banip.whitelist эхо "www.reddit.com" >> /etc/banip/banip.whitelist эхо "yelp.com" >> /etc/banip/banip.whitelist учи совершить банип служба банип рестарт служба банип включить
Это включает banIP с набором черных списков, которые я рекомендую. В iblockads
и yoyo
перечислены специально предназначенные для рекламы объявления, и они могут быть избыточными в зависимости от настроек вашей сети (например, если вы используете PiHole или AdguardHome), но они могут помочь в любом случае. Я видел некоторые ложные срабатывания из iblockads
поэтому обязательно используйте функцию белого списка, если вы заметили какие-либо поломки, или просто полностью отключите ее использование.
Бонус — настройте cronjob для обновления черных списков§
Я рекомендую обновлять черные списки каждые 24 часа. Вот пример того, как настроить запуск cronjob один раз в день:
crontab -
ПРИМЕЧАНИЕ. Это ПЕРЕЗАПИСЫВАЕТ ваш существующий crontab. Если у вас уже есть другие задания cron, либо отредактируйте crontab вручную, либо добавьте их в эту команду по мере необходимости.
Способ 2 (Luci)§
- Установить
luci-app-banip
. - Перейдите к
Services -> banIP
. - Вы можете оставить большинство настроек по умолчанию (автоматическое определение banIP довольно хорошо), но вам нужно будет включить banIP и настроить черные списки напрямую.
- Включить banIP — просто установите флажок
Включено
на вкладкеОбщие настройки
. - Настройка черных списков — перейдите на вкладку
Источники черных списков
и используйте вкладкуИсточники
, чтобы выбрать нужные списки. Вы можете увидеть пример списков, которые я лично использую в команде, используемой в методе 1 выше. - Нажмите
Сохранить и применить
.
Включение banIP:
Настройка черных списков:
Бонус - настройка cronjob для обновления черных списков§
Так же, как и Метод 1 , можно настроить cronjob для обновления черных списков.
- Нажмите кнопку
Refresh Timer
на главной странице состояния. - Установите действие на
перезагрузка
(не "обновить", я знаю, это сбивает с толку...) - Выберите час в диапазоне 0-23, который вам подходит.
Вот пример моей собственной конфигурации:
Отключение или удаление UPNP§
Если вы не используете UPNP (служба для автоматического создания дыр в брандмауэре...), вам следует полностью отключить ее и/ или полностью удалить пакет.
- Перейдите к
Services -> UPnP
. - Снимите флажок
Запустить службу UPnP и NAT-PMP
. - Сохранить и применить.
- (необязательно) Перейдите к
System -> Startup
и остановите + отключите службуupnp
(илиminiupnp
). - (необязательно) Полностью удалите пакет с помощью меню
System -> Software
илиopkg --autoremove remove luci-app-upnp
Брандмауэр DROP внешних подключений §
По умолчанию конфигурация брандмауэра OpenWrt довольно «зашумлена» в том, как он отклоняет трафик из глобального Интернета.
Вы можете увидеть это в действии с помощью инструмента ShieldsUP Стива Гибсона. Нажмите кнопку Proceed
, а затем используйте кнопки Common Ports
или All Service Ports
для сканирования всего маршрутизатора. Кнопки плохо видны, я признаю, но они должны быть там.
Давайте настроим брандмауэр так, чтобы он молча отключал все внешние соединения вместо того, чтобы изящно говорить им «нет, спасибо».
Метод 1 (uci)§
# Примечание: Я ПРЕДПОЛАГАЮ, ЧТО ПОСЛЕДНЯЯ ЗОНА ЯВЛЯЕТСЯ ЗОНОЙ WAN. ЭТО РАЗРЫВАЕТСЯ, ЕСЛИ ЗОНА WAN НАХОДИТСЯ НА ДРУГОМ НОМЕРЕ ЗОНЫ. # Небольшая проверка безопасности - только попробуйте установить вход DROP на WAN. Пропустить/сохранить, если последний интерфейс не является WAN. если [ $(uci get firewall.@zone[-1].name) = 'wan' ]; тогда echo 'Блокировка брандмауэра' uci установить брандмауэр.@zone[-1].input='DROP' uci установить брандмауэр.@zone[-1].forward='DROP' uci фиксирует брандмауэр перезапуск сервисного брандмауэра фи
Способ 2 (Luci)§
- Перейдите к сети
-> Брандмауэр
. - В разделе
Zones
установите для зоныwan => REJECT
значениеdrop
(вместо значения по умолчаниюreject
) дляInput
иForward
с помощью соответствующих раскрывающихся списков. - Нажмите
Сохранить и применить
.
Заключение§
Надеемся, что это немного поможет защитить ваш домашний маршрутизатор. OpenWrt уже значительно более безопасен, чем стандартная прошивка, поставляемая с завода для большинства маршрутизаторов, но эти настройки должны заблокировать ее в максимальной степени.
Несколько других полезных ссылок:
- Безопасный доступ к веб-интерфейсу LuCI — вики OpenWrt
- Безопасный доступ к маршрутизаторам — вики OpenWrt
Домашняя страница проекта MiniUPnP
Домашняя страница проекта MiniUPnP
Последнее изменение: 26 мая 2017 г.
Зеркала
Если у вас возникли проблемы с этим веб-сайтом, у вас есть альтернативы:
Предисловие
Проект MiniUPnP предлагает программное обеспечение, поддерживающее
Спецификации устройства шлюза Интернета (IGD) UPnP.
NAT-PMP и
PCP
добавлена поддержка МиниУПнПД .
Для поддержки NAT-PMP на стороне клиента используйте
libnatpmp.
Демон MiniUPnP ( MiniUPnPd ) поддерживает
ОпенБСД,
FreeBSD,
NetBSD,
Драгонфлай БСД,
(Открыть)Солярис и
Mac OS X
в сочетании с пф
или ipfw (ipfirewall)
или IPF
и линукс с
сетевой фильтр.
Клиент MiniUPnP ( MiniUPnPc ) и MiniSSDPd являются переносными и должны работать
в любой системе POSIX. MiniUPnPc также работает под MS Windows и
AmigaOS (версии 3 и 4).
Облегченная библиотека клиента UPnP IGD и демон UPnP IGD
Протокол UPnP поддерживается большинством
домашние адсл/кабельные маршрутизаторы и Microsoft Windows 2K/XP.
Целью проекта MiniUPnP является
предоставить бесплатное программное решение для поддержки «устройства интернет-шлюза».
часть протокола.
Протокол UPnP MediaServer/MediaRenderer
(DLNA) также становится очень
популярны, но здесь речь идет о IGD.
ReadyMedia
(ранее известный как MiniDLNA) — это медиасервер UPnP.
используя некоторый код UPnP от MiniUPnPd.
Linux SDK для устройств UPnP (libupnp)
показался мне слишком тяжелым. Мне нужна самая простая библиотека,
с наименьшими размерами и без зависимостей
к другим библиотекам, таким как синтаксические анализаторы XML или
HTTP-реализации. Весь код чистый ANSI C.
Скомпилированная на ПК с архитектурой x86 клиентская библиотека miniupnp имеет
размер кода менее 50 КБ.
Демон miniUPnP намного меньше любого другого демона IGD
и по этой причине идеально подходит для использования на устройствах с малым объемом памяти.
Он также использует только ОДИН процесс и никакого дополнительного потока, не
используйте любой вызов system() или exec() ,
и, следовательно, сохраняет использование системных ресурсов
очень низкий.
Проект разделен на две основные части:
- MiniUPnPc, клиентская библиотека, обеспечивающая доступ приложений
услуги, предоставляемые
UPnP «устройство интернет-шлюза», присутствующее в сети.
В терминологии UPnP MiniUPnPc — это точка управления UPnP. - MiniUPnPd, демон, предоставляющий эти услуги вашей сети из Linux
или ящик BSD (или даже Solaris), являющийся шлюзом. Следуя терминологии UPnP,
MiniUPnPd — это устройство UPnP.
МиниSSDPd
был разработан для совместной работы с MiniUPnPc, MiniUPnPd и другими
совместное программное обеспечение:
MiniSSDPd прослушивает трафик SSDP в сети, поэтому MiniUPnPc или другой
Контрольные точки UPnP не
необходимо выполнить процесс обнаружения и может работать быстрее, чтобы настроить
перенаправление. MiniSSDPd также может отвечать на запросы M-SEARCH SSDP.
от имени MiniUPnPd или другого программного обеспечения сервера UPnP.
Это полезно для размещения нескольких служб UPnP на одном компьютере.
например MiniDLNA
и MediaTomb и MiniUPnPd.
MiniUPnPd изначально использует
MiniSSDPd, если он запущен на том же компьютере, но может потребоваться другое программное обеспечение UPnP.
будет исправлено: читать
Патч MiniSSDPd для MiniDLNA (не требуется для MiniDLNA 1.0.22 и выше)
и патч MiniSSDPd для MediaTomb.
MiniUPnPd был впервые разработан
на OpenBSD 3.0+ с pf.
Вы можете увидеть некоторые работы, которые я сделал для
интегрировать с pf на этой странице
(устаревший).
Поскольку pf также доступен для FreeBSD,
ребята из проекта pfSense
портировали miniupnpd на эту систему. Теперь это должно быть возможно
для компиляции и запуска на каждой платформе, где доступен pf.
Демон теперь также доступен для Linux 2.4.x и 2.6.x с использованием
сетевой фильтр. Это возможно сделать
работать на маршрутизаторах с OpenWRT.
Даррен Рид работал над
Реализация IP-фильтра (ipf).
Боюсь, не сохранилось...
Даррен также добавил поддержку Solaris/OpenSolaris.
Порт ipfw доступен для MacOS X. Должна быть возможность сделать
это работает и на FreeBSD, но я не получил никаких отзывов об этом.
По некоторым причинам это может быть не лучшим решением для вас.
код из проекта MiniUPnP напрямую.
Поскольку код небольшой и простой для понимания, это хорошая база
черпать вдохновение для собственной реализации UPnP.
KTorrent
Хорошим примером является плагин UPnP на C++.
Если вам интересно, какой домашний маршрутизатор работает с клиентом MiniUPnP,
вы можете найти ответ здесь. Фактически,
вы, скорее всего, поможете мне заполнить список, отправив мне электронное письмо 🙂
Полезность клиентской библиотеки MiniUPnP
Использование клиентской библиотеки MiniUPnP полезно
всякий раз, когда приложению необходимо прослушивать входящие соединения.
Примеры: приложения P2P, FTP-клиенты для активного режима,
Приложения IRC (для DCC) или IM, сетевые игры, любое серверное ПО.
Типичное использование возможностей UPnP IGD маршрутизатора — это файл
передача с помощью мессенджера MSN. Программное обеспечение MSN Messenger
использует UPnP API Windows XP для открытия порта для входящего соединения.
Чтобы имитировать программное обеспечение MS, рекомендуется также использовать UPnP.
Я сделал патч для XChat
чтобы показать, как приложение может использовать клиентскую библиотеку miniupnp.
Трансмиссия,
бесплатный клиент BitTorrent использует miniupnpc и libnatpmp.
Полезность демона MiniUPnP
UPnP и NAT-PMP используются для улучшения
подключение к интернету для
устройства за NAT-маршрутизатором. Любое одноранговое сетевое приложение
такие как игры, обмен мгновенными сообщениями и т. д., могут выиграть от маршрутизатора NAT, поддерживающего
UPnP и/или NAT-PMP.
Последнее поколение Microsoft XBOX 360 и Sony Playstation 3
игровые автоматы используют команды UPnP для включения
онлайн-игра с сервисом XBOX Live и Playstation Network.
Сообщалось, что MiniUPnPd корректно работает с двумя
консоли. Однако может потребоваться тонкая настройка конфигурации.
Ищите обсуждения на эту тему в
Форум.
Безопасность
Реализации
UPnP потенциально подвержены нарушениям безопасности.
Плохо реализованные или настроенные UPnP IGD уязвимы.
Исследователь безопасности HD Moore проделал хорошую работу по выявлению уязвимостей
в существующих реализациях: недостатки безопасности в Universal Plug and Play (PDF).
Распространенной проблемой является открытие портов SSDP или HTTP/SOAP для выхода в Интернет:
они должны быть доступны только из локальной сети.
В прошлом в MiniUPnPd было обнаружено несколько уязвимостей,
поэтому очень важно обновить код до последней версии.
История обновлений
Теперь он доступен здесь.
Участвовать
Вы можете скачать исходный код на странице загрузки
или получить исходники на github.
Если у вас возникнут какие-либо проблемы или вы хотите реализовать какую-либо функцию,
пойти в
Форум.