Рассуждения на тему EEPROM, WDT, факта сработки WDT и внешнего мониторинга некой системы

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Можно читать заголовок темы как "WDT на Arduino", всмысле устройство на Arduino, которое выполняет функции WDT.

Хай all, тут посетила мысль о мониторинге, причём требуется учесть что и сама система мониторинга, возможно, несовершенна, и нуждается в мониторинге.

Ситуация. Под вами живёт кулхацкер Петя/Вася/Какъеготам, и ломает ваш роутер, пытаясь выяснить пароль к WPA2. На самом деле он не кулхацкер, а просто вшивый скрипткиддис, который пользуется метасплоитом, а ещё посмотрел овербафера1 про Кали Линукс. Короче. Петя ломает днём, пытаясь брутить ваш ключ сети. Роутер защищается от этого, кидая его в темпбан на минуток 5 отдыхать. Дабы прогресс шёл резвее, Петя вешает роутер ДДоСом, последствия которого - перезагрузка, и можно далее брутить, по словарю или циклом. Неважно. Роутер вешается, перезагружается, вы не можете читать пикабу и агритесь, иногда выходите на лестничную клетку и стучите Пете бейсбольной битой в дверь. Потом участковому пишете объяснительную, что у вас возникло непреодолимое желание поиграть в бейсбол. Без мяча, в помещении.

Теперь слегка изменим ситуаци. На самом деле Петя хоть и прыщавый, но продуманный (лол, а может у меня просто скрытая агрессия против школьников... блин, надо сходить к мозгоправу, провериться, галоперидолом поупарываться - мб результаты будут). Короче, он не просто вешает роутер, а делает это среди ночи, да ещё подглядывает за вами в окна с биноклем, чтобы убедиться что вы не читаете пикабу, и не выхватите от отвала интернетов лютую ярость. Роутер вешается, перезагружается, ключ брутится, всё чинно благородно. В оконцове Петя получает ключ, цепляется на вашу сеть, впаривает вам через MITM левую страницу форума/вконтакта, в общем социнженерно впаривает вам страницу, угоняющую пасс, потом размещает от вашего имени информацию, входящую в Федеральный список экстремистских материалов, ведётся следствие, в логах сайта где размещена информация находят ваши учётки, следователь обращается к судье, судья выносит постановление, постановление дают оперативным дядям, оперативные дяди приезжают к вам домой, забирают в следственный изолятор, а там уже дяди из исполнительного аппарата пытают вас и садят попой на бутылку. Занавес. И всё потому что вы не предприняли должных мер по аудиту безопасности вашей сети, ведь даже бабушки на лавочке знают что надо шифровать вайфай, и ключ регулярно менять, ибо в самой продвинутой многонациональной стране посадить попой на бутылку и пытать могут за любую херню. Ну или прыщавый недохакер Петя имеет на вас зуб с пяти лет, за то что вы в девяностые годы дали ему подзатыльника во дворе, за то что тот привязал к дереву за хвост кошку. На самом то деле проблемы из детства. Забавно, всего этого бы не было, если бы и Вы, и прыщавый скрипткидди Петя, возомнивший себя кул мега супа дупа хакером, вы оба бы ходили на сеансы психотерапии. Короче, не недооценивайте силу психотерапии. Все мы так или иначе, в какой-то степени, душевно больные.

А теперь к сути. Допустим, вы знаете что отвал функционала имеет некий внешний однозначный признак, идентифицируемый изолированной системой мониторинга. В случае прыщавого (типа) "хакера" (который на самом деле - тупой школяр, насмотревшийся "обучающих" видео по пентест-системам типа Kali Linux) Пети - такой признак - светодиод с зелёной планеткой в роутере, который гаснет или становится жёлтым, когда инет и надёжная связь с пикабу отваливается. Неважно, вследствие того что вашему провайдеру давно пора бить морду (пожалуй, психотерапия мне всё же будет полезна) за услуги связи ненадлежащего качества, или же вследствие дудоса, к каким бы тёмным сетевым делам этот дудос ни был приурочен - чисто хулиганским или группой лиц, с преступным умыслом. Короче, зелёный светодиод гаснет, и можно присоплить оптрон, чтобы регистрировать факт того, что зелёный светодиод гаснет.

И вот тут самое непонятное. Допустим, роутер падал за ночь 110 раз. Как отразить это? Допустим, мы считаем разы, когда с оптрона приходила 1 (я считаю что он от земли к GPIO с подтяжкой к плюсу, то есть вся эта система - активный ноль). Больше N раз - зажечь красный светодиод. Но ведь и сама Arduino может повеситься? Ладно, включим WDT. Как ей помнить, сколько раз пикабу уже отваливалось? Хорошо, EEPROM. Но как отличить - записанное в EEPROM - это как на современных заводах - "дней без происшествий: ноль", или же это последние актуальные показания, или что. Окей, будем допустим писать показания типа "было", "стало". Не будем же мы просто логить все отвалы в память, и просто циферками показывать на TM1637-экране? Тогда там будет цифра, сегдня 1471, завтра 1473 - тогда придётся помнить наизусть цифры, короче пользоваться будет неудобно. Значит, придётся ещё хранить дату последних показаний, и приделать к всему этому мониторингу RTC.

Действующие лица типа вас, защищавшего в девяностые кошку, школьника, вставленной в попу бутылки - всё чисто случайно и вымышлено (но на психотерапии я всё же настаиваю). Подобный пример может быть присобачен не только к роутеру, обеспечивающему надёжную связь с пикабу, чтобы вы не агрились и не выбегали на лестницу с битой поиграть в бейсбол (очевидно, головой школьника) или не шли к провайдеру бить морду, за услуги связи ненадлежащего качества. В равной степени вопрос мониторинга актуален и для газового котла, и для паровой машины Джеймса Уатта, и для много чего. Клубнику там на гидропонике выращивать. Ну короче, вы меня поняли - типа там уже не дяди из УФСИН бутылку в попу вставили, а котёл взорвался, брага вытекла, клубника сгнила и т. п. Приведите более-менее чёткую идею мониторинга, было бы интересно почитать. Кажется, моя норма по интересному чтиву выполнена.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Когда системе мониторинга доступен SQL, то алгоритм такой: вычисляется таймштамп начала контролируемого интервала (например - "сутки назад"), делается запрос в таблицу (условно) с условием отобрать все записи с таймштампом больше вычисленного. Кол-во записей равно количеству инцидентов. 

Инциденты определяются, например, периодическим пингом точек с заведомо высоким уровнем доступности и сложными условиями (в течении пяти минут гейтвей провайдера пингуется, сайт фсб - нет). 

Надёжность системы обеспечивается дублированием вычислительных мощностей, своевременными бэкапами и пр. EEPROM тут наврядли подойдёт - по скорости доступа, доступному объёму хранения данных и износостойкости.

Так что на ардуине реализовать, в теории можно, но придётся серьёзно помаяться. Ведь нужно ещё как-то визуализировать таймлайн инцидентов, предусмотреть активное реагирование/оповещение и пр. и др... Если ориентироваться на некий сферический объект мониторинга, вполне может дешевле выйти поднять систему на кубитреке под линуксом, чем МК обвешивать всякой перефирией и писать алгоритмы, расчитанные на любой расклад и лёгкую переконфигурацию.

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

RTC + SD card....

SLKH
Offline
Зарегистрирован: 17.08.2015

Voodoo Doll пишет:

И вот тут самое непонятное. Допустим, роутер падал за ночь 110 раз. Как отразить это? Допустим, мы считаем разы, когда с оптрона приходила 1 (я считаю что он от земли к GPIO с подтяжкой к плюсу, то есть вся эта система - активный ноль). Больше N раз - зажечь красный светодиод. Но ведь и сама Arduino может повеситься? Ладно, включим WDT. Как ей помнить, сколько раз пикабу уже отваливалось? Хорошо, EEPROM. Но как отличить - записанное в EEPROM - это как на современных заводах - "дней без происшествий: ноль", или же это последние актуальные показания, или что. Окей, будем допустим писать показания типа "было", "стало". Не будем же мы просто логить все отвалы в память, и просто циферками показывать на TM1637-экране? Тогда там будет цифра, сегдня 1471, завтра 1473 - тогда придётся помнить наизусть цифры, короче пользоваться будет неудобно. Значит, придётся ещё хранить дату последних показаний, и приделать к всему этому мониторингу RTC.

Почему "не будем" ? пишем в RTC3231 дату/время всех событий (влезет 16 тыс записей), можно по кругу. Если этого мало - цепляем SD card. А уж как эти логи анализировать и что делать с результатами - отдельная песня.

Logik
Offline
Зарегистрирован: 05.08.2014

в EEPROM массив из N записей, обрабатываем циклически. Каждая запись - 3 счетчика в одном считаем инцинденты,  во втором -ребуты ардуино, в третем отмеряем интервал, например сутки как 24*60 минут, т.е. ежеминутно инкрементим пока до 24*60 не доросло. Как доросло - переходим на следующий элемент массива. Количество циклов прокрутки по массиву считаем. 

По этим данным получаем график инциндентов и ребутов ардуины за последние N интервалов. По текущему значению счетчика интервалов привязка к датевремени. RTC опционально. Если точность не критична а питание без перерывов, то и без её неплохо.

 

ПС. Если соседи ребутят роутер, я бы, учитывая пору года, начал с проверки БП роутера и электролитов в частности;) Хотя соседям ввалить тоже можна конечно. 

ratman
Offline
Зарегистрирован: 11.10.2015

А поставить сервер логирования и пусть сам роутер туда пишет что делает не?

Алексей.
Алексей. аватар
Offline
Зарегистрирован: 02.02.2018

Voodoo Doll пишет:
А теперь к сути. Допустим, вы знаете что отвал функционала имеет некий внешний однозначный признак, идентифицируемый изолированной системой мониторинга.

К сожалению, выявленные уязвимости WPA2 и методики атак, не приводят к падению роутера.
Сложно пока представить, что необходимо мониторить и какими средствами.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Алексей. пишет:

Сложно пока представить, что необходимо мониторить и какими средствами.

Слава богу - хацкеры в stealth-mode не умеют висеть на антенне. Через connection list, ARP-table и пр. низкоуровневые вещи можно обнаружить вторжение. Однако, конечно, WTD тут мало чем поможет. Да и точку доступа / роутер придётся взять нормальные. А там уж и ардуина не нужна будет.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

как написал выше лоджик, банальный блок питания, это было в 100% случаев падения роутеров и перезагрузки

Voodoo Doll
Voodoo Doll аватар
Offline
Зарегистрирован: 18.09.2016

Пример про роутер это просто пример - на самом деле меня больше интересует надёжный мониторинг. Всмысле, вообще мониторинг, абстрактный. Спасибо за мысль про SQL, учту, мб сделаю из малины.

ua6em, всю жизнь я про себя называл Logik'а Логиком, а он оказывается Лоджик... Мой мир рухнул, и теперь не будет прежним.

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Из малины как раз делать не надо. SQL уделает SD-карту очень быстро. Это я тебе, как дохтур говорю...

По мониторингу - можешь написать мне, я расскажу, как на кубике поднимал. Давеча "обновился" до стабильного армбиана. Уже лет пять, как на одноплатнике всё фурычит - с SQL-ем и дополнительным пробросом RTMP с камеры на локальную веб-страничку.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

Voodoo Doll пишет:

ua6em, всю жизнь я про себя называл Logik'а Логиком, а он оказывается Лоджик... Мой мир рухнул, и теперь не будет прежним.

ЛоХГик это у Наташки+ с ютуба, ну еще у михалсергееча )))

Пытался вспомнить, какие именно мы агенты для мониторинга ставили, не смог, старею, небольшая такая коробушка, выпускается серийно, ретроградная амнезия подбирается )))

sadman41
Онлайн
Зарегистрирован: 19.10.2016

Vutlan (он же SkyControl) наверное. Или UniPing какой-нибудь. Первый я тоже использую. Если в standalone-режиме их использовать, то задачи они не решают. Их назначение - реакция на текущие показатели датчиков, а не на исторические тенденции. Хранить данные в пределах коробки они не умеют. Анализировать - тоже.