Ни один уважающий себя UTM-шлюз сетевой безопасности не обходится без системы обнаружения вторжений IDS (Intrusion Detection System). Другое дело, что опция зачастую указывается производителем для галочки, чтобы не отставать от конкурентов. Знаю по своему опыту тестировщика, как это бывает — вроде бы IDS есть, но по факту никуда не годится. Именно поэтому, когда мне предложили протестировать относительно недорогую UTM-“железку”, я предложил в первую очередь “прогнать” ее СОВ.

Если у вас есть опыт работы с IDS, интересно прочитать про него в комментариях к статье. Желательно — не про дорогие “железки” (понятное дело, что у какой-нибудь Cisco NGFW за миллион всё хорошо), а про решения, более доступные по цене. Думаю, администраторам локалок и потенциальным пользователям сетевых шлюзов будет любопытно обсудить, у кого как работает IDS, и стоит ли покупать задорого, когда можно, поплясав с бубном, добиться того же за меньшие деньги.

В данном тесте речь про модель S100 — самое демократичное по цене в линейке Traffic Inspector Next Generation (цифры означают, что она рассчитана на 100 абонентов). Вот ее описание на официальном сайте>>>. Если коротко, то в “железке” есть, например, сетевой фильтр, VPN, блокировщик ресурсов и, конечно же, IDS.

Методику тестирования предлагаю простую — проверяем пропускную способность, и строим зависимость количества отброшенных пакетов от интенсивности трафика с шагом: 50, 100, 150 и 200 Мб/с. Почему берем именно такие интервалы? Отталкиваемся от 100 Мб/с — самого популярного клиентского запроса, и от него откладываем плюс и минус, чтобы увидеть, что происходит в более и менее нагруженном режимах, а также в экстремальном режиме 200 Мб/с.

Жизненный опыт мне подсказывает, что со всеми активными правилами S100 может не потянуть, поэтому я предлагаю описанную процедуру провести в трех режимах: сначала когда все правила активны, затем с выключением части правил (назовем ее Группа № 1) и, наконец, только когда активно всего несколько правил (назовем ее Группа № 2). Формируем такие группы правил:

– Группа № 0: ну это понятно, все правила без исключения.
– Группа № 1: группа правил Emerging Threads (правила мне известны со времен тестирования IDS Snort, за исключением правил emerging-games).
– Группа № 2: группа правил, которые я считаю просто обязательными для работы IDS (см. ниже), в том числе добавим правила p2p, так как по собственному опыту знаю, как крупные компании негативно относятся к тому, что их сотрудники активно используют корпоративную сеть для скачивания любимых сериалов.

Тестирование осуществим с использованием утилиты tcpreplay. Данная утилита позволяет воспроизвести записанный предварительно сетевой трафик с определенной скоростью. Команда: tcpreplay –i <интерфейс> -l 0 testTI.pcap. Файл testTI.pcap содержит 1 146 313 пакетов (такой объем выбираем, чтобы, с одной стороны, была хорошая статистика, с другой — время на «прогон» не было бы слишком большим, в нашем случае — не более 15 минут ). Помимо этого, как я уже сказал, запускаем торрент-трекер.

Схема тестового стенда:




UTM-железка Traffic Inspector Next Generation S100 и свитч Cisco 2960G

Если у кого-то будут вопросы по методике тестирования — готов ответить в комментах.

Итак, результаты.

Группа № 0

Тестирование на полном наборе подразумевает загрузку всех правил, а их 30 305.

При тестировании используем настройки IDS по умолчанию:



Начинаем тестирование со 100 Мб/с и и понимаем, что железка еле тянет: из 114 тысяч пакетов 109 тысяч отброшено! Так что нет никакого смысла тестировать на 150 и тем более на 200 Мб/с. Наоборот, предлагаю дать девайсу шанс и провести дополнительный тест на 10 Мб/с. Результат в таблице:



Примечание:

kernel_packets — отправленные пакеты;
kernel_drops — отброшенные пакеты. Как видим, при настройках по умолчанию и при полном наборе правил происходят большие потери пакетов (> 30% относительно kernel_packets). Будем надеяться, что оптимизация правил настроек изменит ситуацию;
decoder_packets — количество пакетов, которые система корректно обработала;
detect_alerts — количество выявленных атак. Основную массу составляют атаки типа «Фрагментированный пакет», но и атаки «Выявление торрент-трекера» также были определены.

Группа № 1

Очевидно, что “железка” не оптимизирована работать как полноценная мощная IDS, но есть место для маневра, а именно — возможность изменить механизм поиска маршрутов, отключить загрузку в отчеты содержимого пакета (payload), а также отключить группы правил и собственно определенные группы пакетов. Немного экспериментов с настройками — и приходим к варианту, который представляю на следующем рисунке.



Список активных правил, которые оставляем:



Результат тестирования:



Как видим, с этой группой правил картина существенно улучшилась (процент отброшенных пакетов уменьшился в несколько раз). Атака типа «Выявление торрент-трекера» была успешно обнаружена (атаки «Фрагментированный пакет» больше не появлялись).

Группа № 2

Настройки — те же. Список активных правил:



Результат в таблице:


Тут картина по обработке пакетов еще лучше, что ожидаемо.

Резюме

Финальная таблица результатов, выраженная в процентах kernel_drops относительно kernel_packets, показана ниже:



Графически результат выглядит следующим образом:



Как видим, количество активных правил и настройки напрямую влияют на эффективность. Включать настройки по максимуму и все правила одновременно не имеет никакого смысла — потери сразу зашкаливают даже на 10 Мб/с. В оптимизированных режимах “железка” нормально себя чувствует вплоть до 100 Мб/с, но на более интенсивном трафике потери резко возрастают. Впрочем, для “офисного” использования 100 Мб/с вполне достаточно. Если гонять девайс на этой скорости и подбирать правила, можно добиться вполне удовлетворительной работы IDS.

Возможно, для использования полного набора правил нужны доработки по использованию механизма pf_ring (https://www.ntop.org/products/packet-capture/pf_ring/) в качестве механизма передачи пакета в userspace из буфера сетевой карты. Для этого придется задействовать несколько экземпляров Suricata, что, естественно, отберет ресурсы от других процессов, но, возможно, игра будет стоить свеч.

Повторю, что, на мой взгляд, главное назначение тестируемого девайса — межсетевой экран, а опция IDS носит вспомогательный характер. Честно говоря, я был готов к тому, что «железка» тест провалит. Оказалось, что при определенной гуттаперчивости сисадмина система обнаружения вторжений в S100 вполне работоспособна.

P.S. Как уже говорил выше, призываю читателей написать о своем опыте использования IDS в относительно недорогих решениях.

P.P.S. Тест выложен в аккаунте производителя, так как не хочу себя “светить”. Тем не менее, я готов ответить на все вопросы и подискутировать в комментариях, но, опять-таки, не от своего имени:)

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


  1. imbasoft
    31.08.2018 13:23

    Тестирование только по производительности как-то маловато, железка все-таки должна защищать.

    Могу поделиться опытом собственных тестов IPS для банка.
    Железка должна была защищать подсеть платежных систем. Данная подсеть находится во внутреннем периметре сети банка, но на нее DST-Nat'ится из Интернета трафик для системы Интернет Клиент-Банк (ИКБ). Соответственно, необходимо было защититься от атак которые прилетают из Интернетов и от потенциальных троянов проникнувших во внутреннюю сеть.

    ИКБ, работает через Web соответственно потенциально уязвим для атак из OWASPTop10. Из этих атак выбрал SQL-Inj, XSS и DoS-Атаки — TCP SYN Flood, UDP flood, HTTP slow lories

    В качестве объекта защиты выступала виртуалка с DVWA IPS ставилась перед ней в разрыв.

    Тест 1. Запускаем IPS с полностью активированным всеми правилами и начинаем мучить DVWA стандартными Web-атаками (SQL-Inj, XSS)

    Тест 2. Берем Kali linux и жестко флудим жертву TCP SYN, UDP, http slow lories

    Тест 3. С помощью Interceptor-NG делаем ARP poisoning

    Тест 4. С помощью metsploit запускаем RCE атаку (тогда делал MS08_067)

    В результате… чудо решение стоившее кучу килобаксов, имевших сертификаты Федеральных служб… смогло поймать только последнее.

    Попробуйте помучать вашу железку аналогичным образом. Интересно что получиться.


  1. Smart_Soft Автор
    31.08.2018 14:04

    Все верно говорите, IDS — это так, затравка. Планировал в следующий раз за IPS взяться, думал над методой. Спасибо за идеи:) Постараюсь их применить. Кстати "… чудо решение" — не можете назвать, какое? Интересно потом сравнить результаты. Тут тоже есть сертифицированный вариант ФСТЭК (не в той железке, которая у меня сейчас, но в принципе у производителя), но IDS/IPS помоему еще не сертифицировали, только проходят процедуру.


    1. imbasoft
      31.08.2018 14:09

      Кстати "… чудо решение" — не можете назвать, какое? Интересно потом сравнить результаты.

      К сожалению был NDA при тестировании. Беглый анализ подобных железок на выставках дает основание предположить что проблема имеет системный характер.


      1. Smart_Soft Автор
        31.08.2018 14:19

        Как думаете, попросить на тест сертифицированную железку или эту прогнать? С одной стороны, для чистоты сравнения нужна сертифицированная. С другой — врядли они чем-то отличаются…


        1. imbasoft
          31.08.2018 14:26

          На самом деле без разницы, так как 90% отечественных IPS / IDS — это русифицированные Snort или Suricata.

          Сертификация в общем случае не делает систему лучше, она только отсеивает «явный бред».

          Кстати, с точки зрения методики тестирования можно посмотреть в сторону противодействия IPS классическому kill chain в его описании как MITRE ATT&CK Matrix


          1. Smart_Soft Автор
            31.08.2018 14:33
            +1

            Я тоже так думаю. Ок, погоняю эту железочку в IPS. Спасибо за комменты, не зря значит ночь не спал:)