Я установил веб-сервер на микроконтроллере ESP8266 внутри моей локальной сети. Запросы HTTP GET, отправленные на это устройство, могут включать и выключать сетевую розетку, и я планирую развернуть пару из них по дому.

Эта ЛВС подключена к Интернету с помощью стандартного интернет-бокса (маршрутизатор + модем). Я хочу запретить кому-либо извне локальной сети, в том числе кому-либо из Интернета, отправлять что-либо на микроконтроллер.

Давайте предположим, что люди не могут взломать мой Wi-Fi, защищенный WPA-PSK, мои настройки касаются нарушения безопасности? Насколько сложно кому-то взломать мои умные розетки DIY?

2 ответа2

1

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

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

1

Несмотря на то, что внешний доступ к серверу не должен быть доступным для всех (если вы не перенаправляете порты на маршрутизаторе), вы будете уязвимы для чего-то вроде подделки межсайтовых запросов. Например, если кто-то отправил вам сообщение электронной почты в формате HTML (или попросил загрузить веб-страницу, или ...) с встроенным изображением, загруженным с http://192.168.1.50/control?outlet=all&action=off (или каковы бы ни были его IP-адрес и синтаксис), ваш почтовый клиент попытается загрузить изображение с этого URL, и ваши розетки отключатся (или что-то еще).

Так что, если у вас есть достаточно отвратительные друзья, которые знают настройки вашей сети, ожидайте, что вас разыграют. На самом деле, вы также должны ожидать случайных попаданий XSRF, пытаясь использовать случайные другие устройства, которые вы можете иметь или не иметь; если веб-сервер контроллера запутывается каким-либо из них, они могут случайно его сломать.

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

Переключение с GET на POST также немного поможет, тем более что стандарт HTTP говорит, что запросы GET не должны изменять состояние сервера, то есть клиенты должны безопасно отправлять / не отправлять запросы GET. в зависимости, например, от состояния их кешей. Использование HTTPS поможет еще больше (если сервер его поддерживает). Использование дайджест-аутентификации WebDAV (вместо строки пароля) также было бы хорошо (опять же, если сервер поддерживает это), но вам нужно было бы добавить некоторую защиту от атак воспроизведения, чтобы она была действительно эффективной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .