Як уберегти IP камеру від ботнету Mirai з Flussonic Agent

Недавня серія рекордних DDoS атак під терабіт здорово розбурхала тих, хто начебто до такого вже звик. Цілком можливо, що ситуація повториться найближчим часом, причому з істотно більшою силою, адже базові причини виникнення такого потужного ботнету як Mirai не усунені.

Насправді несекьюрность IP камер це в цілому секрет Полішинеля і причин тому багато: це історично сформована практика роботи з ними, складність доступу до них, інертність виробників.

Я хочу розповісти про деякі аспекти цієї проблеми і які можуть бути кроки, щоб знизити гостроту цієї проблеми.

Поточне положення справ
Отже, зараз у світі продаються мільйони IP камер. Перша ж ссылка з інтернету заявляє про 200 мільйонів камер безпеки, і ця цифра виглядає цілком розумно.

Не всі CCTV камери — IP, до цих пір продається величезна кількість аналогових камер. Аналогові камери зрозумілі, у своєму роді зручні, передбачувані: адже в них немає ніякого глючащего софта, все апаратне. Але навіть незважаючи на останній сплеск AHD і HDCVI, IP камери чинності кращої якості картинки і більшої гнучкості заміщають аналог (прекрасний привід аргументовано обговорити настільки цікаве питання в коментарях).

IP камера складається з сенсора, чіпа з обробки і кодування відео, процесора для спільної обробки, периферії типу GPIO, SDcard і Ethernet, софта всередині всього цього, об'єктива і корпусу.

Незважаючи на удавану гігантське різноманітність IP камер на ринку (здається, «виробників» як мінімум багато тисяч, може ще більше), насправді тих, хто реально щось робить всередині дуже небагато. Якщо знизити цінову планку, викинувши з розгляду таких шанованих грандів як Axis, то в ціновому діапазоні, скажімо, «до $150 за камеру» виявиться зовсім небагато фірм.

Близько 3-4 виробників сенсорів, 4-6 виробників чіпів+процесорів (це комбінований чіп), кілька тих, хто збирає все на плату. Корпусу — і ті не дуже різноманітні, зате цілий Шеньжень тих, хто готовий це зібрати, скрутити і наклеїти потрібний логотип на коробку. А ось найцікавіше — це ті, хто робить софт. У чому їх інженерні рішення відкрили дорогу Mirai.

Таких теж небагато, тут не вийшло вирости великій кількості виробників. Вся інформація досить прихована і це джерело проблеми. Всередині майже всіх камер стоїть звичайний лінукс з модулями ядра. Ці модулі дозволяють конфігурувати чіп, обробний відео з сенсора і отримувати це відео в пам'яті програми. Є камери, які без лінукса: там фактично одна велика програма, яка живе у ring 0 (якщо так можна говорити про ARM), але це дуже дорого в розробці і сьогодні рідкість. Далі відправити відео в мережу — справа техніки, і ось це справа як раз вирішено досить посередньо.

Мало того, що більшість дешевих камер освоїли тонке мистецтво втрати даних через TCP, так там ще й майже скрізь один і той же пароль, що йде в серії. Що ми, власне кажучи, і бачили з исходников ботнету.

І це ми ще не будемо тут розповідати про чарівні магічні UDP пакети, які дозволяють змінювати налаштування мережі. Весь той брєд, над яким ми сміємося в голлівудських фільмах про «я увійшов в їх систему, зараз переключу їх відеокамери на статичну картинку» зовсім не маячня, а гірка й жорстока реальність.

Звідки береться така безпечність виробників? Адже їх поведінка викликає асоціацію насамперед з анекдотом про Вовочку і слово, якого немає, хоча сам об'єкт ніби як є. Добитися від виробника прошивки якої-небудь конкретної інформації про кишках камери дуже і дуже складно, вони, як правило, дотримуються тієї позиції, що це закрите пристрій, в якому ніби як і лінукса-то ніякого немає. А може і є, але вас це не стосується, не дивіться туди, дивіться в наші рекламні проспекти.

Передумови
Спробуємо подумати про те, що могло до цього привести.

По-перше, тематика відеоспостереження традиційно крутиться навколо ізольованих мереж. Все це виросло з 4 камер, підключених безпосередньо до монітора перед охоронцем в мозаїку (ми, до речі, серверну мозаїку вміємо робити і дуже круто, але раптово це не для охоронця, а для економії місця). Охоронець сидить з палицею в руках всю зміну і протягом 1250 мілісекунд зривається в сторону будь-якої проблеми. Нейромережа обробляє будь-які відхилення крутіше вашої Nvidia Tesla. Правда іноді любить випити або подрімати, ніж здорово псує всю картину.

Підключення до такої мережі вимагають для початку фізичної присутності, а проти цього можна тими ж самими камерами прикрити траєкторію проходу кабелю. Кажуть, що у похмурих людей ці кабелі прибрані мало не в герметичні трубки з підвищеним тиском, щоб при просверливании до кабелю спрацьовував датчик тиску.

Важливо розуміти: досі практично ніхто не пропонує навіть TLS шифрування відео, що минає з камер! Вся тематика відеоспостереження не особливо розрахована на внутрішню безпеку самої видеоинфраструктуры. Принаймні, не настільки, наскільки про це роздувають щоки ті, хто з радістю бере гроші на боротьбу зі страшними погрозами.

По-друге, IP камери зазвичай все-таки є частиною цілої інфраструктури за вирішення завдань охорони і є частиною програмно-апаратно-человече-сервісного комплексу. Тобто традиційно IP камера встромляється в реєстратор, до нього охоронець, охоронцю кнопку, кнопки група швидкого реагування. Те, що сьогодні раптом люди почали вішати камери собі в під'їзд, а міста вішають камери на вулицях тисячами — все це йде трохи врозріз з тим, для чого це все планувалося. Тобто виникли нові формати використання дуже вдалого пристрої, для яких цей пристрій не особливо призначено.

По-третє, IP камера — це дуже ізольоване пристрій. Надзвичайно складно взяти IP камеру в руки і налаштувати конкретно її, адже в ній практично немає ніяких інтерфейсів вводу-виводу.

Це тема для окремої статті і ми про це розповімо, але давайте просто запам'ятаємо цей момент: IP камеру дійсно незручно налаштовувати.

Онлайн
Отже, IP камери раптово стали потрібні як OTT пристрою, з онлайн-доступом до них. Термін OTT — over the top — означає, що сервіс виявляється не в контрольованій мережі, а через публічний інтернет, або хоча б через стик декількох мереж. Тобто в умовах, коли ніякої гарантії швидкості не буде і можна говорити лише про досить ефемерне поняття, як «швидкість інтернету». Однак, як ми вже з'ясували, швидкості інтернету» від камери в Бразилії до серверів Dyn цілком вистачило, щоб ті голову підняти не могли.

Там, де раніше вішалася ізольована система, терминировавшаяся на охоронця, тепер виникло пристрій, до якого ходять через інтернет за відео. Подивитися: як там справи в своєму маленькому магазинчику,
чи варто все ще поштову скриньку перед будинком, як там дітки в садочку грають. Безумовно, виробники камер (переважно китайці, тому що тільки їх камери можна собі дозволити) відповіли на виклик ринку. З'явилися мобільні додатки (IP камерах на сьогоднішній день практично відсутня можливість побачити відео без ActiveX, так що веб-доступ до відео камери по суті не пропонують), які ходять безпосередньо до камери і показують відео.

Тут виникла цікава ситуація: для онлайн доступу людей почали привчати до висунення якихось портів назовні. Багато з таких клієнтів не користуються навіть стандартним протоколом RTSP,
замість нього ганяють відео з цікавою і екзотичної штуці, що йде по протоколу 34567 (ми потихеньку розбираємо його структуру), але кому є до цього справа, коли простіше виставити всі порти назовні. І кому ж може знадобитися моя маленька камера, яка дивиться на парковку перед будинком?

Тобто важливою передумовою запуску Mirai стало те, що виробники для надання онлайн доступу масово змусили людей розібратися з пробросом портів і масово виставили в інтернет пристрої, здатні генерувати десятки мегабіт трафіку, причому в своїй масі це пристрої з одним і тим же рутовым паролем. Просто чудово, не знаходите? Все це багатство лежало тут під ногами останні років 5 мінімум.

Як цю проблему будуть вирішувати зараз — поки незрозуміло, і це вже не зовсім наша компетенція. Можна масово пройтися по всіх камерах, знайденим в інтернеті і перетворити їх на цеглу, можна масово їх запатчить, можна змусити провайдерів блокувати їх. Ми хочемо поговорити про інше: як сьогодні не перетворювати камеру в члена такого ботнету.

Сучасний доступ до камер
Прогрес не стоїть на місці і сьогодні сформувалося два базових способу доступу до IP камер онлайн: безпосередньо і через сервер в інтернеті.
Доступ безпосередньо розумний у випадку з локальною мережею, але як ми вже з'ясували, безпосередньо ходити до сучасної IP камері по інтернету — ідея не завжди хороша. Навіть коли усунуть проблеми з безпекою, збережеться проблема з одночасним доступом до камер. Так, наприклад, в дитячих садах зворушливо виглядає прохання адміністраторів батькам не заходити на камери більше ніж по чотири одночасно.

Сьогодні дуже багато ADSL інтернету, ключова особливість якого — A, asymmetric. Можна багато скачувати, але віддавати багато вже важко.

Так що поговоримо про онлайн сервіси, що надають доступ до камер.

Онлайн сервіс доступу до камер (VSaaS, video surveillance as a service) крім можливості дивитися камеру віддалено може запропонувати ще цікаві можливості, найголовніша з яких — віддалений реєстратор. Дуже часто відеореєстратор, пристрій на яке пишеться відео, першим страждає при протиправних діях. Коли відео відразу ж витекли в інтернет, то його звідти вже дуже складно дістати, завдання приблизно такого ж характеру, як спроба запхати хабар у дорожню камеру. Так, це звичайно не врятує самі камери і все одно запис перерветься, але шанс віднести в поліцію фотографії зловмисників зростає.

Скажете, дорого писати все відео в інтернет? Зовсім нещодавно одна думка про перегляд фільмів онлайн лякала і змушувала хапатися за гаманець, а сьогодні це вже норма замість полиць з CD. Те ж саме і з невикористаним зворотним напрямком трафіку: чому б не завантажити, особливо якщо сервіс надає ваш провайдер. Деякі роблять запис у хмару по руху, але тут і донині є аргументи як за, так і проти. Чого коштуватиме економія пари тисяч рублів, якщо камера не запише ті самі 10 хвилин, які були потрібні? З іншого боку, для багатьох випадків перемикання камери в режим запису по детекції руху робить сам хмарний сервіс практично безкоштовним для його постачальника.

Як же добираються до камер інтернет-сервіси, особливо OTT, тобто не володіють каналом зв'язку до камери?

Зв'язок з камерами
Як можна зробити більш безпечною зв'язок камери з онлайн сервісом, не виставляючи її назовні? Через канал зв'язку безпосередньо з сервісом.

Давайте піднімемо що-небудь типу VPN тунелю чи будемо публікувати відео з камери на сервер і тоді приберемо проблему з mirai. Деякі китайці тут пішли далі і продають камери, які нібито працюють тільки з їх сервісом. Тут, правда, ситуація знову як з Вовочка і забороненим словом, тому що незважаючи на запевнення китайських менеджерів, на таких камерах все-таки є RTSP сервер, так і логін зі стандартним паролем.

Любі наші південно-східні сусіди тут створюють масу інших цікавих джерел для майбутніх проблем. Так, наприклад, нам потрапила в руки камера з онлайн-сервісом щодо доступу до цієї камері на борту. В камері була така чудова нагода, як посилка пошти при спрацьовуванні детектора руху. Виробник камери вирішив піти backendless шляхом і зашив на всі камери один і той же логін-пароль від одного аккаунта на сайті 163.com (це такий китайський mail.ru). Як ви розумієте, можна не тільки подивитися, що цікавого є у інших покупців цієї камери, але і послати що-небудь цікаве і дуже активну покупцям такої камери.

Але давайте повернемося до більш стандартну на сьогоднішній день ситуацію: онлайн-доступ до камери доповнює традиційну роботу з реєстратором, а сама камера за NAT-му і зовні не видна.

Ми бачили два базових способу отримати відео з камери: якийсь софт на камері публікує відео на сервер, тобто є ініціатором початку передачі відео, і якийсь софт на камері робить камеру доступною для сервера в інтернеті (читай VPN тунель).

Другий спосіб майже завжди є набагато більш практичним, оскільки дозволяє серверу самому вирішувати, коли йому брати відео, якої якості або взагалі брати скріншоти з камери.

У першому ж випадку необхідно продумувати складні механізми зворотного зв'язку, щоб завжди можна було сказати «горщик, не вари», інакше ви самі собі зробите мікро-mirai: 1000 камер, які намагаються залити мегабітний потік не туди, куди потрібно, цілком собі тягне на солідну проблему.

Давайте трохи подивимося на те, які бувають варіанти організувати VPN тунель або щось схоже.

OpenVPN
Найпростішим варіантом традиційно є OpenVPN. Серверна частина безкоштовна і відносно нескладно настроюється, коли потрібно зробити 100-300 камер. Головний плюс openvpn в тому, що він вже є з коробки в проекті buildroot, за допомогою якого збираються прошивки більшості камер.

OpenVPN клієнт запускається на камері, якимось чином при першому старті отримує сертифікат і далі ходить до сервісу. З тієї сторони є стриминговый сервер, який бачить, що камера підключилася, і починає з неї забирати відео, скріншоти або робити якісь інші речі.

VPN підхід ще зручний тим, що вся варіативність логіки на стороні сервісу. Там набагато простіше і зручніше щось оновлювати, підтримувати, змінювати, ніж на камері. Ціна помилки на камері — втрата не тільки камери, але ще і клієнта, та ще й веселих і приємних обговорень на форумах.

Є у такого підходу є і свої недоліки.

VPN — це все-таки потужний механізм для вирішення дуже загальних завдань і досить ресурсомісткий для сервера. На жаль, ми не отримали жодних практичних даних про те, чи можна на одному сервері прийняти гігабіт трафіку через OpenVPN і відправити його в стриминговый сервер, але судячи по всьому — це перебір.

Абсолютно точно можна сказати, що використання OpenVPN — це мінімум подвоєння серверної інфраструктури порівняно зі звичайною системою, тому що треба гнати трафік спочатку на окремий OpenVPN сервер, а потім вже на стриминговый сервер.

Ми в Эрливидео розробили власне рішення для доступу до камер за NAT, вимагає встановлення на камеру нашого агента. Він працює по-іншому.

Flussonic Agent
Отже, ми поставили перед собою мету розробити деякий софт, поставлений на камеру для того, щоб дістатися до камери з сервера в інтернеті.

Ми відмовилися від ідеї робити окремо VPN сервер, окремо стриминговый — адже трафік очікується великий на кожний сервер, навіщо його дублювати між різним софтом. Наш агент під'єднується безпосередньо до Flussonic і віддає відео з камери відразу в функцію розбору RTSP, тобто це не узагальнений транспорт, а спеціалізована штука для доставки відео та зображень з камери на Flussonic з мінімальними витратами.

Також ми вирішили декілька питань, а саме: на яку адресу йти цього агенту і що робити, якщо Flussonic вимкнеться.

З вимиканням Flussonic ми вирішили вчинити двофазної схемою протоколу: спочатку агент з'єднується з координатором (endpoint в нашій термінології) і потім вже від нього йде до стриминговому сервера. Якщо endpoint впав вже після підключення до стримеру, то нічого страшного, робота триває.

З адресою endpoint ситуація хитріше. Оскільки ми не сервісна компанія, а софтверна, то ми продаємо людям софт для організації їх сервісів. Таким чином ми не можемо зашити один фіксований адресу агента, треба щоб це було настроюється. Тут ми також продумали нескладне технічне рішення, що дозволяє відправити агента на потрібну адресу при первинної активації.

В результаті у нас є свій нескладний механізм отримання доступу до камери, що знаходиться за NAT-му. Навіть з включеним шифруванням він менш вибагливий, ніж низькорівневий OpenVPN, і, на відміну від останнього, допомагає вирішити «баг, якого немає», адже всі дані швидко забираються нашим агентом, а з нього вже з допомогою хозбытового libevent ллються в інтернет.

На сервері вже сам Flussonic вирішує відповідно до своїх налаштувань, що йому треба піти до камери і забрати з неї відео чи скріншот, або навіть почати зворотний аудіотрансляцію.

Такі підходи (штатний vpn, публікація з камери, саморобний тунель) дозволяють знизити ризик від виставлення камери в інтернет. У наступних статтях ми розповімо про те, як ми заливаємо нашого агента на камери, як він працює в сервісі по наданню відео з камер користувачам, які є цікаві моменти з його налаштуванням і, що найцікавіше, як камера прив'язується до користувача — тут ціла купа варіантів. Ще в чернетках є про власну прошивку IP камери — пишіть в коментарях, що цікавіше.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.