Автор оригинала: iam_maker_leo

В наше время существует огромное количество проектов, связанных с Интернетом Вещей. Но многие девайсы подвержены атакам из сети, например DDOS. Соответственно, многие эксперты предупреждают о возможных проблемах в безопасности IoT. (Пример такой статьи)

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

Однажды я прочитал одну статью, которая и подтолкнула меня к моей идее.

Преимущества TCP Offload

Традиционно TCP / IP реализуется программно и выполняется на процессоре. С появлением сетей с более высокой пропускной способностью это стало основным bottleneck в передаче данных, поскольку процессор должен тратить больше времени на обработку входящих данных, а не на выполнение пользовательских алгоритмов. Это снижение производительности отрицательно сказывается на эффективности сети и несовместимо с приложениями реального времени. Более того, по мере того как для повышения производительности используются все более мощные процессоры, увеличивается стоимость спецификации, равно как и физический размер хост-карты или модуля. Чтобы решить эту проблему, все больше функций переносится в специализированное оборудование. Например, большинство сетевых карт будут выполнять разгрузку контрольной суммы (задача, для которой процессор особенно не подходит). Путем выборочной разгрузки частей TCP / IP стека на оборудование может быть достигнуто значительное улучшение полосы пропускания передачи. Разгрузив эти части стека TCP на выделенное оборудование, такое как TCP/IP Off-Load Engine (TOE), можно минимизировать задержку между приемом и подтверждением данных.

В данной статье сравниваются software TCP/IP Stack и Hardware. (прим.: к сожалению, автор не оставил ссылку на оригинал статьи)

Так мне пришла идея - использовать Hardware TCP/IP Stack для создания неприступного девайса. Я решил провести несколько тестов с ардуино и двумя видами ethernet шилдов (hardware и software).

Итак, давайте посмотрим, как hardware TCP/IP stack может стать решением проблемы с безопасностью от сетевых атак.

В данной статье мы будем измерять пропускную способность ардуино. Чтобы узнать больше о способах измерениях, пройдите по ссылке с моим прошлым постом.

Шаг 1. Используемые устройства для тестирования пропускной способности IoT девайса на ардуино.

Arduino Uno
Arduino Uno
WIZ550io - модуль с Hardware TCP/IP стеком
WIZ550io - модуль с Hardware TCP/IP стеком
ENC28J60
ENC28J60
  • ПК с Windows 10, который будет использоваться в качестве Iperf клиента, а также устроит DDoS атаку.

  • 3COM Gigabit Свитч

Используемое ПО:

  • Утилита для DDOS атаки : LOIC (Freeware)

  • Утилита для измерения пропускной способности: Iperf

Шаг 2. Подговка к тестированию.

На картинке выше показана схема, как мы будем проводить наши тесты.

  1. Ардуино с ethernet шилдом будет Iperf сервером.

  2. ПК будет Iperf клиентом и будет атаковать сервер.

  3. Сервер и клиент будут подсоединены используя свитч.

Для определения подверженности IoT девайса DDOS-атакам, я буду использовать результаты пропускной способности, измеренной с помощью Iperf. DDoS атака будет сгенерирована утилитой LOIC. Я проведу тесты, используя TCP/IP Ethernet модуль (WIZ550io) и Software TCP/IP Ethernet модуль(ENC28J60).

В итоге мы получим 4 результата:
1. Hardware TCP/IP Ethernet module / no DDOS network attack
2. Hardware TCP/IP Ethernet module / DDOS network attack
3. Software TCP/IP Ethernet module / no DDOS network attack
4. Software TCP/IP Ethernet module / DDOS network attack

Шаг 3. Устанавливаем ардуино библиотеки для WIZ550io и ENC28J60.

  1. WIZ550io
    Для установки WIZ550io библиотеки следуйте инструкции тут.

  2. ENC28J60
    Для начала установим библиотеку ENC28J60.

Код для использования ардуино в качестве Iperf сервера можно скачать здесь. При написании использовался пример из библиотеки ENC28J60. Программа будет считывать пакеты и отправлять ack.

Шаг 4. Настраиваем утилиту для DDoS атаки.

LOIC - бесплатная утилита для осуществления DDoS атак. Как пользоваться утилитой показано на картинке выше.

Внимание!
1. Не используйте данную утилиту в других целях.
2. Возможно необходимо отключить антивирус перед запуском утилиты.

Шаг 5. Проводим измерения пропускной способности

Всего будет 4 видео с тестами, которые упоминались выше. В видео показана пропускная способность каждого из тестов.

Video 1 : Arduino & Software TCP/IP Ethernet (ENC28J60) and no DDOS attack

Video 2 : Arduino & Software TCP/IP Ethernet (ENC28J60) and DDOS attack

Video 3 : Arduino & Hardware TCP/IP Ethernet (WIZ550io) and no DDOS attack

Video 4 : Arduino & Hardware TCP/IP Ethernet (WIZ550io) and DDOS attack

Шаг 6. Анализируем результаты.

На картинке выше показаны результаты измерений из видео выше.

Очевидно, что когда используется Hardware TCP/IP stack, DDOS атака на ардуино была неэффективной.

P.S.

  1. Пропускная способность не является главным в этих тестах. Можно добиться увеличения пропускной способности, переписав программу. Я хотел проверить как будет меняться пропускная способность во время DDoS атаки.

  2. Перемены пропускной способности Hardware TCP/IP стека возможно являются ошибками измерений утилиты.

  3. На видео видно, что после того как я нажал кнопку DDOS Attack, не было пропускной способности. Поэтому в таблице я указал 0.

Комментарии (5)


  1. dcoder_mm
    24.08.2021 15:00

    У w5500 8 аппаратных TCP/IP сокетов
    Автор на видео сначала запускает iperf (у него кстати TCP Window Size меньше MSS) и iperf занимает один из сокетов.

    LOIC (которая в количестве 1шт не имеет отношения DDoS) будет пытаться спамить на оставшиеся 7 сокетов, но пока всё не упрется в канал проблем не будет.

    В реальных кейсах (кто-то использует DDoS атаки на IoT девайсы в реальных кейсах вообще?) важно не только сохранение текущего подключения (один сокет оставшийся за iperf) но и возможность создать новое. И вот тут уже будут проблемы


    1. AlanDrakes
      25.08.2021 06:05

      А ещё он мог просто занять все сокеты, используя SYN пакеты и всё. И аппаратный стэк так же превращается в тыкву.

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


      1. predator86
        25.08.2021 20:11

        Означает ли это что IoT устройства беззащитны в Интернете? Можно хоть как то их обезопасить? Или им всегда придётся быть только клиентами?


        1. AlanDrakes
          26.08.2021 09:38

          Роутер, который умеет фаервол и правила фаервола. Автобан возможностями того же фаервола.

          В остальном - Да. Даже имеется такая шутка:
          Буква 'S' в аббревиатуре 'IoT' означает "Secude" / "Безопасность".

          Технология изначально не была безопасной и вряд ли будет. Для такого требуется код. А код занимает место, и код всегда имеет ошибки. И так далее и тому подобное. Можно лишь немного обезопасить устройства чем-то, что будет находиться между ними и интернетом.


        1. dcoder_mm
          26.08.2021 17:09

          Не понятно, что подразумевается под "беззащитны".

          DDoS атаки ведь не главная проблема IoT. Главная — дыры в прошивках и короткий срок поддержки (+ отсутствие комьюнити которое собирало бы сторонние прошивки после окончания поддержки). Поэтому мы гораздо чаще читаем про ботнеты из лампочек и вибраторов, а не про DDoS атаки на них.

          Или им всегда придётся быть только клиентами?

          А в чем проблема? Ну то есть, какую задачу решает вывешивание IoT устройства сервером в интернет? С локальной сетью для этого есть применения (условный контроллер умного дома), но локальная сеть считается условно безопасной.