Официальный сайт компании Arduino по адресу arduino.cc
Рассуждения на тему EEPROM, WDT, факта сработки WDT и внешнего мониторинга некой системы
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Можно читать заголовок темы как "WDT на Arduino", всмысле устройство на Arduino, которое выполняет функции WDT.
Хай all, тут посетила мысль о мониторинге, причём требуется учесть что и сама система мониторинга, возможно, несовершенна, и нуждается в мониторинге.
Ситуация. Под вами живёт кулхацкер Петя/Вася/Какъеготам, и ломает ваш роутер, пытаясь выяснить пароль к WPA2. На самом деле он не кулхацкер, а просто вшивый скрипткиддис, который пользуется метасплоитом, а ещё посмотрел овербафера1 про Кали Линукс. Короче. Петя ломает днём, пытаясь брутить ваш ключ сети. Роутер защищается от этого, кидая его в темпбан на минуток 5 отдыхать. Дабы прогресс шёл резвее, Петя вешает роутер ДДоСом, последствия которого - перезагрузка, и можно далее брутить, по словарю или циклом. Неважно. Роутер вешается, перезагружается, вы не можете читать пикабу и агритесь, иногда выходите на лестничную клетку и стучите Пете бейсбольной битой в дверь. Потом участковому пишете объяснительную, что у вас возникло непреодолимое желание поиграть в бейсбол. Без мяча, в помещении.
Теперь слегка изменим ситуаци. На самом деле Петя хоть и прыщавый, но продуманный (лол, а может у меня просто скрытая агрессия против школьников... блин, надо сходить к мозгоправу, провериться, галоперидолом поупарываться - мб результаты будут). Короче, он не просто вешает роутер, а делает это среди ночи, да ещё подглядывает за вами в окна с биноклем, чтобы убедиться что вы не читаете пикабу, и не выхватите от отвала интернетов лютую ярость. Роутер вешается, перезагружается, ключ брутится, всё чинно благородно. В оконцове Петя получает ключ, цепляется на вашу сеть, впаривает вам через MITM левую страницу форума/вконтакта, в общем социнженерно впаривает вам страницу, угоняющую пасс, потом размещает от вашего имени информацию, входящую в Федеральный список экстремистских материалов, ведётся следствие, в логах сайта где размещена информация находят ваши учётки, следователь обращается к судье, судья выносит постановление, постановление дают оперативным дядям, оперативные дяди приезжают к вам домой, забирают в следственный изолятор, а там уже дяди из исполнительного аппарата пытают вас и садят попой на бутылку. Занавес. И всё потому что вы не предприняли должных мер по аудиту безопасности вашей сети, ведь даже бабушки на лавочке знают что надо шифровать вайфай, и ключ регулярно менять, ибо в самой продвинутой многонациональной стране посадить попой на бутылку и пытать могут за любую херню. Ну или прыщавый недохакер Петя имеет на вас зуб с пяти лет, за то что вы в девяностые годы дали ему подзатыльника во дворе, за то что тот привязал к дереву за хвост кошку. На самом то деле проблемы из детства. Забавно, всего этого бы не было, если бы и Вы, и прыщавый скрипткидди Петя, возомнивший себя кул мега супа дупа хакером, вы оба бы ходили на сеансы психотерапии. Короче, не недооценивайте силу психотерапии. Все мы так или иначе, в какой-то степени, душевно больные.
А теперь к сути. Допустим, вы знаете что отвал функционала имеет некий внешний однозначный признак, идентифицируемый изолированной системой мониторинга. В случае прыщавого (типа) "хакера" (который на самом деле - тупой школяр, насмотревшийся "обучающих" видео по пентест-системам типа Kali Linux) Пети - такой признак - светодиод с зелёной планеткой в роутере, который гаснет или становится жёлтым, когда инет и надёжная связь с пикабу отваливается. Неважно, вследствие того что вашему провайдеру давно пора бить морду (пожалуй, психотерапия мне всё же будет полезна) за услуги связи ненадлежащего качества, или же вследствие дудоса, к каким бы тёмным сетевым делам этот дудос ни был приурочен - чисто хулиганским или группой лиц, с преступным умыслом. Короче, зелёный светодиод гаснет, и можно присоплить оптрон, чтобы регистрировать факт того, что зелёный светодиод гаснет.
И вот тут самое непонятное. Допустим, роутер падал за ночь 110 раз. Как отразить это? Допустим, мы считаем разы, когда с оптрона приходила 1 (я считаю что он от земли к GPIO с подтяжкой к плюсу, то есть вся эта система - активный ноль). Больше N раз - зажечь красный светодиод. Но ведь и сама Arduino может повеситься? Ладно, включим WDT. Как ей помнить, сколько раз пикабу уже отваливалось? Хорошо, EEPROM. Но как отличить - записанное в EEPROM - это как на современных заводах - "дней без происшествий: ноль", или же это последние актуальные показания, или что. Окей, будем допустим писать показания типа "было", "стало". Не будем же мы просто логить все отвалы в память, и просто циферками показывать на TM1637-экране? Тогда там будет цифра, сегдня 1471, завтра 1473 - тогда придётся помнить наизусть цифры, короче пользоваться будет неудобно. Значит, придётся ещё хранить дату последних показаний, и приделать к всему этому мониторингу RTC.
Действующие лица типа вас, защищавшего в девяностые кошку, школьника, вставленной в попу бутылки - всё чисто случайно и вымышлено (но на психотерапии я всё же настаиваю). Подобный пример может быть присобачен не только к роутеру, обеспечивающему надёжную связь с пикабу, чтобы вы не агрились и не выбегали на лестницу с битой поиграть в бейсбол (очевидно, головой школьника) или не шли к провайдеру бить морду, за услуги связи ненадлежащего качества. В равной степени вопрос мониторинга актуален и для газового котла, и для паровой машины Джеймса Уатта, и для много чего. Клубнику там на гидропонике выращивать. Ну короче, вы меня поняли - типа там уже не дяди из УФСИН бутылку в попу вставили, а котёл взорвался, брага вытекла, клубника сгнила и т. п. Приведите более-менее чёткую идею мониторинга, было бы интересно почитать. Кажется, моя норма по интересному чтиву выполнена.
Когда системе мониторинга доступен SQL, то алгоритм такой: вычисляется таймштамп начала контролируемого интервала (например - "сутки назад"), делается запрос в таблицу (условно) с условием отобрать все записи с таймштампом больше вычисленного. Кол-во записей равно количеству инцидентов.
Инциденты определяются, например, периодическим пингом точек с заведомо высоким уровнем доступности и сложными условиями (в течении пяти минут гейтвей провайдера пингуется, сайт фсб - нет).
Надёжность системы обеспечивается дублированием вычислительных мощностей, своевременными бэкапами и пр. EEPROM тут наврядли подойдёт - по скорости доступа, доступному объёму хранения данных и износостойкости.
Так что на ардуине реализовать, в теории можно, но придётся серьёзно помаяться. Ведь нужно ещё как-то визуализировать таймлайн инцидентов, предусмотреть активное реагирование/оповещение и пр. и др... Если ориентироваться на некий сферический объект мониторинга, вполне может дешевле выйти поднять систему на кубитреке под линуксом, чем МК обвешивать всякой перефирией и писать алгоритмы, расчитанные на любой расклад и лёгкую переконфигурацию.
RTC + SD card....
И вот тут самое непонятное. Допустим, роутер падал за ночь 110 раз. Как отразить это? Допустим, мы считаем разы, когда с оптрона приходила 1 (я считаю что он от земли к GPIO с подтяжкой к плюсу, то есть вся эта система - активный ноль). Больше N раз - зажечь красный светодиод. Но ведь и сама Arduino может повеситься? Ладно, включим WDT. Как ей помнить, сколько раз пикабу уже отваливалось? Хорошо, EEPROM. Но как отличить - записанное в EEPROM - это как на современных заводах - "дней без происшествий: ноль", или же это последние актуальные показания, или что. Окей, будем допустим писать показания типа "было", "стало". Не будем же мы просто логить все отвалы в память, и просто циферками показывать на TM1637-экране? Тогда там будет цифра, сегдня 1471, завтра 1473 - тогда придётся помнить наизусть цифры, короче пользоваться будет неудобно. Значит, придётся ещё хранить дату последних показаний, и приделать к всему этому мониторингу RTC.
Почему "не будем" ? пишем в RTC3231 дату/время всех событий (влезет 16 тыс записей), можно по кругу. Если этого мало - цепляем SD card. А уж как эти логи анализировать и что делать с результатами - отдельная песня.
в EEPROM массив из N записей, обрабатываем циклически. Каждая запись - 3 счетчика в одном считаем инцинденты, во втором -ребуты ардуино, в третем отмеряем интервал, например сутки как 24*60 минут, т.е. ежеминутно инкрементим пока до 24*60 не доросло. Как доросло - переходим на следующий элемент массива. Количество циклов прокрутки по массиву считаем.
По этим данным получаем график инциндентов и ребутов ардуины за последние N интервалов. По текущему значению счетчика интервалов привязка к датевремени. RTC опционально. Если точность не критична а питание без перерывов, то и без её неплохо.
ПС. Если соседи ребутят роутер, я бы, учитывая пору года, начал с проверки БП роутера и электролитов в частности;) Хотя соседям ввалить тоже можна конечно.
А поставить сервер логирования и пусть сам роутер туда пишет что делает не?
К сожалению, выявленные уязвимости WPA2 и методики атак, не приводят к падению роутера.
Сложно пока представить, что необходимо мониторить и какими средствами.
Сложно пока представить, что необходимо мониторить и какими средствами.
Слава богу - хацкеры в stealth-mode не умеют висеть на антенне. Через connection list, ARP-table и пр. низкоуровневые вещи можно обнаружить вторжение. Однако, конечно, WTD тут мало чем поможет. Да и точку доступа / роутер придётся взять нормальные. А там уж и ардуина не нужна будет.
как написал выше лоджик, банальный блок питания, это было в 100% случаев падения роутеров и перезагрузки
Пример про роутер это просто пример - на самом деле меня больше интересует надёжный мониторинг. Всмысле, вообще мониторинг, абстрактный. Спасибо за мысль про SQL, учту, мб сделаю из малины.
ua6em, всю жизнь я про себя называл Logik'а Логиком, а он оказывается Лоджик... Мой мир рухнул, и теперь не будет прежним.
Из малины как раз делать не надо. SQL уделает SD-карту очень быстро. Это я тебе, как дохтур говорю...
По мониторингу - можешь написать мне, я расскажу, как на кубике поднимал. Давеча "обновился" до стабильного армбиана. Уже лет пять, как на одноплатнике всё фурычит - с SQL-ем и дополнительным пробросом RTMP с камеры на локальную веб-страничку.
ua6em, всю жизнь я про себя называл Logik'а Логиком, а он оказывается Лоджик... Мой мир рухнул, и теперь не будет прежним.
ЛоХГик это у Наташки+ с ютуба, ну еще у михалсергееча )))
Пытался вспомнить, какие именно мы агенты для мониторинга ставили, не смог, старею, небольшая такая коробушка, выпускается серийно, ретроградная амнезия подбирается )))
Vutlan (он же SkyControl) наверное. Или UniPing какой-нибудь. Первый я тоже использую. Если в standalone-режиме их использовать, то задачи они не решают. Их назначение - реакция на текущие показатели датчиков, а не на исторические тенденции. Хранить данные в пределах коробки они не умеют. Анализировать - тоже.