Snort уже давно стал лидером среди опенсорсных сетевых IDS. Оставаясь практически единственным доступным и в то же время простым в настройке и работе решением, он получил заслуженное признание. Но в последнее время все больше стали говорить об альтернативе — проекте Suricata, в котором реализуются все современные тенденции IDS/IPS.
- Борьба с навязчивой рекламой
- Установка Suricata в Ubuntu
- IBM Security Network Intrusion Prevention System
- Где развернуть IDS/IPS?
- Рекламный идентификатор — ожидание
- Какая информация позволяет отследить ваше Android-устройство
- Зачем нам еще одна IDS?
- Конфигурационный файл Suricata
- Рекламный идентификатор — реальность
- Intrusion Prevention System (IPS)
- Разновидности и функции IPS
- McAfee Network Security Platform 7
- Samhain
- Настройки производительности Suricata
- Резюме
- Проект Suricata
- Отличия IPS/IDS от межсетевых экранов
- Технологии IDS/IPS
- StoneGate Intrusion Prevention System
- INFO
- Функции IDS
- Классификация IDS
- Способы обнаружения вторжений
- Обнаружение злоупотреблений
- Обнаружение аномалий
- Проблемы безопасности бизнес-сетей
- Заключение
- Выводы
Борьба с навязчивой рекламой
Однако для IMEI, серийных номеров и MAC-адресов ввести такую защиту нельзя. Да и телефонов с более старыми версиями Android на рынке немало. Поэтому рекомендуем ограничивать сбор данных, грамотно управляя приложениями.
- Регулярно удаляйте программы, которыми вы не пользуетесь: чем меньше на устройстве приложений, тем меньше данных получат рекламные сети.
- Не давайте оставшимся программам лишних разрешений. Это не избавит вас от слежки полностью, но не позволит тем же играм отправлять IMEI кому попало. На всякий случай: за этот идентификатор отвечает разрешение «Телефон». Оно же позволит приложению узнать ваш мобильный номер, посмотреть историю вызовов, позвонить (за ваш счет, разумеется) и многое другое, так что выдавать его в принципе не рекомендуется.
Установка Suricata в Ubuntu
Поддерживается установка Suricata на Linux, BSD, OS X и Win. Проект предлагает исходные тексты и несколько репозиториев Ubuntu (suricata-stable, suricata-beta и дневной срез suricata-daily), также пакеты Suricata добавлены в Debian Backports. Хотя лучшее решение для простого развертывания и поддержки Suricata, вероятно, именно Ubuntu. В пакетах для Ubuntu IPS-режим реализован через NFQUEUE, если нужен именно AF_PACKET, а также поддержка CUDA и прочего, придется пакет собирать самостоятельно.
Сборка и установка в различных дистрибутивах подробно расписана в Wiki проекта, хотя вот последующие настройки в документации освещены несколько запутанно, а многие параметры и подпараметры разобраны не совсем внятно, и их действительно много.
$ sudo add-apt-repository ppa:oisf/suricata-stable
$ sudo apt-get update
$ sudo apt-get install suricata
Вместе с текущей версией правил, поставляемых с Suricata, по ходу будут скачаны и установлены в /etc/suricata/rules последняя версия рулсетов ETOpen. Для дальнейшего автоматического обновления правил, в том числе и VRT, следует установить и настроить Oinkmaster. В /var/log/suricata будут образованы три подкаталога certs, core и files. Смотрим параметры сборки:
$ suricata -build-info
Информация о сборке Suricata
IBM Security Network Intrusion Prevention System
- Разработчик: IBM.
- Web: www.ibm.com/ru.
- Реализация: программно-аппаратная, образ VMware.
- Лицензия: коммерческая.
В продуктах IBM задействованы наработки онлайн-сервиса GTOC и X-Force
Где развернуть IDS/IPS?
Чтобы максимально эффективно использовать IDS/IPS, нужно придерживаться следующих рекомендаций:
- Систему необходимо разворачивать на входе защищаемой сети или подсети и обычно за межсетевым экраном (нет смысла контролировать трафик, который будет блокирован) — так мы снизим нагрузку. В некоторых случаях датчики устанавливают и внутри сегмента.
- Перед активацией функции IPS следует некоторое время погонять систему в режиме, не блокирующем IDS. В дальнейшем потребуется периодически корректировать правила.
- Большинство настроек IPS установлены с расчетом на типичные сети. В определных случаях они могут оказаться неэффективными, поэтому необходимо обязательно указать IP внутренних подсетей и используемые приложения (порты). Это поможет железке лучше понять, с чем она имеет дело.
- Если IPS-система устанавливается «в разрыв», необходимо контролировать ее работоспособность, иначе выход устройства из строя может запросто парализовать всю сеть.
Рекламный идентификатор — ожидание
По правилам магазина Google Play, в рекламных целях можно использовать только этот идентификатор. Площадка не запрещает связывать его с другими ID, но для этого приложению нужно получить согласие пользователя.
Увы, в действительности все несколько иначе.
Какая информация позволяет отследить ваше Android-устройство
Убедиться, что та или иная программа установлена именно на вашем устройстве, рекламной сети помогают специальные коды-идентификаторы. Как правило, их у смартфона, планшета и любого другого гаджета несколько, и большинство из них придуманы не для рекламы.
Так, уникальный номер IMEI нужен, чтобы распознавать ваш телефон в сотовых сетях и, например, блокировать краденые устройства. А при помощи серийного номера можно определить все гаджеты серии, в которых обнаружен брак, и отозвать их из магазинов.
Еще один уникальный идентификатор, MAC-адрес, нужен для подключения устройства к сети, а заодно может быть использован, чтобы ограничить набор гаджетов, которые имеют право подключаться к вашему домашнему WiFi. Наконец, Android ID (он же SSAID) разработчики приложений используют, чтобы продавать лицензии на ограниченное количество копий для платных версий своих продуктов.
Как узнать, какие данные на самом деле собирают приложения
Долгое время какого-то отдельного идентификатора для рекламы вообще не существовало, поэтому приложения отправляли своим партнерам те, к которым имели доступ. При этом спрятаться от объявлений по интересам пользователь практически не мог: те же IMEI или MAC-адреса — это уникальные номера, по которым устройство опознается однозначно. Каждый раз, когда очередное приложение передает в рекламную сеть один из них, та понимает, что его установили именно вы.
Теоретически существует возможность изменить эти номера — в том числе при помощи специальных приложений, но это непросто, и, что хуже, подвергает опасности ваш телефон. Дело в том, что для подобных экспериментов нужны root-права, а получая их, вы делаете устройство уязвимым. К тому же в некоторых странах манипуляции вроде смены IMEI запрещены законом.
Android ID поменять проще — для этого достаточно сбросить смартфон или планшет до заводских настроек. Но после этого придется заново задавать все параметры, устанавливать приложения, авторизоваться в каждом из них и так далее. В общем, куча мороки, так что желающих делать это часто, мягко говоря, не очень много.
- Разработчик: OISF (Open Information Security Foundation).
- Web: www.openinfosecfoundation.org.
- Платформа: программная.
- ОС: Linux, *BSD, Mac OS X, Solaris, Windows/Cygwin.
- Лицензия: GNU GPL.
Бета-версия этой IDS/IPS была представлена на суд общественности в январе 2010-го после трех лет разработок. Одна из главных целей проекта — создание и обкатка совершенно новых технологий обнаружения атак. За Suricata стоит объединение OISF, которое пользуется поддержкой серьезных партнеров, включая ребят из US Department of Homeland Security. Актуальным на сегодня является релиз под номером 1.1, вышедший в ноябре 2011 года. Код проекта распространяется под лицензией GPLv2, но финансовые партнеры имеют доступ к не GPL-версии движка, которую они могут использовать в своих продуктах. Для достижения максимального результата к работе привлекается сообщество, что позволяет достигнуть очень высокого темпа разработки. Например, по сравнению с предыдущей версией 1.0, объем кода в 1.1 вырос на 70%. Некоторые современные IDS с длинной историей, в том числе и Snort, не совсем эффективно используют многопроцессорные/многоядерные системы, что приводит к проблемам при обработке большого объема данных. Suricata изначально работает в многопоточном режиме. Тесты показывают, что она шестикратно превосходит Snort в скорости (на системе с 24 CPU и 128 ГБ ОЗУ). При сборке с параметром ‘–enable-cuda’ появляется возможность аппаратного ускорения на стороне GPU. Изначально поддерживается IPv6 (в Snort активируется ключом ‘–enable-ipv6’), для перехвата трафика используются стандартные интерфейсы: LibPcap, NFQueue, IPFRing, IPFW. Вообще, модульная компоновка позволяет быстро подключить нужный элемент для захвата, декодирования, анализа или обработки пакетов. Блокировка производится средствами штатного пакетного фильтра ОС (в Linux для активации режима IPS необходимо установить библиотеки netlink-queue и libnfnetlink). Движок автоматически определяет и парсит протоколы (IP, TCP, UDP, ICMP, HTTP, TLS, FTP, SMB, SMTP и SCTP), поэтому в правилах необязательно привязываться к номеру порта (как это делает Snort), достаточно лишь задать действие для нужного протокола. Ivan Ristic, автор Mod_security, создал специальную библиотеку HTP, применяемую в Suricata для анализа HTTP-трафика. Разработчики прежде всего стремятся добиться точности обнаружения и повышения скорости проверки правил.
С Suricata можно использовать все наработки к Snort, например Snorby
Вывод результатов унифицирован, поэтому можно использовать стандартные утилиты для их анализа. Собственно, все бэк-энды, интерфейсы и анализаторы, написанные для Snort (Barnyard, Snortsnarf, Sguil и т. д.), без доработок работают и с Suricata. Это тоже большой плюс. Обмен по HTTP подробно журналируется в файле стандартного формата Apache.
Резюмируя, отмечу, что Suricata — это более быстрый движок, чем Snort, полностью совместимый с ним по правилам и бэк-эндам и способный проверять большие сетевые потоки. Единственный недостаток проекта — скудная документация, хотя опытному админу ничего не стоит разобраться с настройками. В репозиториях дистрибутивов уже появились пакеты для установки, а на сайте проекта доступны внятные инструкции по самостоятельной сборке из исходников. Есть и готовый дистрибутив Smooth-sec, построенный на базе Suricata.
Конфигурационный файл Suricata понятен тем, кто возился с настройками Snort
Зачем нам еще одна IDS?
Статистика говорит, что трафик пользователей увеличивается каждый год на 50%. К такой нагрузке следует быть готовым заранее. В том числе к обработке большого сетевого потока должны быть готовы маршрутизаторы, файрволы и системы обнаружения/предотвращения атак. С коммерческими аппаратными решениями вопросов обычно не возникает, их мощность заранее рассчитана и проверена, а внедрением занимаются специалисты. Поэтому можно легко предусмотреть запас, но вот стоят они недешево. Альтернативой служат open source решения, зарекомендовавшие себя с хорошей стороны и при этом не требующие отчислений за софт. Но все вопросы по внедрению ложатся на плечи сисадмина.
Популярный Snort начал разрабатываться в 1998 году, когда для обработки сетевого трафика обычно использовался сервер с одним 32-битным процессором. Поэтому и была использована единственно актуальная в то время single-threaded архитектура — другая не имела смысла. За это время Snort применяет около 300 тысяч зарегистрированных пользователей, и почти сто поставщиков используют его в своих продуктах. Сама компания-разработчик Sourcefire была выкуплена Cisco (вместе со Snort, ClamAV и Razorback), а к работам над Snort подключились инженеры этой корпорации.
За более чем 17 лет разработок много изменилось в компьютером мире: появились многоядерные процессоры, IPv6, увеличилось количество пользовательских приложений, и, главное, стал большим трафик. Это все нашло отражение в Snort: поддержка IPv6, возможность инспектирования уровня приложений (из последних — препроцессор OpenAppID), универсальный модуль доступа к данным DAQ и многое другое. Но базовый движок, хотя и научился работать с несколькими ядрами, так и остался однопоточным. И фактически Snort оказался не готов к переходу на настоящий multi-threading. Так как ядро Linux на переключение между нитями затрачивает несколько ms, при старых алгоритмах обработки увеличение количества процессоров даже замедляло работу. Выходом из такой ситуации было ограничение ядер в параметрах загрузки maxcpus=2. То есть мы имели мощные серверы, а использовать их на полную не могли.
Когда Snort не справлялся с нагрузкой, то просто увеличивалась мощность CPU или использовалось несколько экземпляров с балансировкой нагрузки между ними (этакий multitasking) с помощью DAQ-модуля для PF_RING. Но проблемы это не решает, поэтому и возникли проекты вроде Gnort, задача которого — повысить эффективность обнаружения атак Snort за счет переноса на GPU кода, отвечающего за проверку регулярных выражений. Это позволило добиться почти двукратного увеличения пропускной способности Snort. Но проблема многопоточности требует полной модернизации всех важных компонентов внутри Snort.
Глобальным решением стали два проекта, стартовавших практически одновременно. Это Snort 3.0, развивающийся уже более пяти лет, но находящийся до сих пор в альфе, то есть пока застряли на экспериментальной стадии и заняты тестированием оптимальных алгоритмов. И герой статьи Suricata, написанный с нуля.
Конфигурационный файл Suricata
Все основные настройки работы производятся в конфигурационном файле suricata.yaml, параметров здесь очень много. Большинство переменных и параметров, касающихся обнаружения, по названию и назначению совпадает с используемым в Snort, это упрощает знакомство для тех, кто ранее работал с этой IDS. Отличается лишь синтаксис, здесь нужно признать, что у Suricata файл читается действительно легче. В поставке имеется готовый, преднастроенный пример с комментариями (размером почти 50 Кб). Поэтому можно запускать то, что есть из коробки, с минимумом адаптации, а в последующем донастраивать по мере знакомства. Например, секция outputs отвечает за сохранение событий (настройки журналирования в logging), в файле уже прописаны все 15 возможных вариантов вывода плюс показаны их установки. Большинство из них отключено (enabled: no). По умолчанию активны только fast, eve-log (JSON), unified2-alert и http-log.
Конфигурационный файл suricata.yaml
Поэтому обязательно следует внимательно изучить установки и включить те, которые действительно нужны. Готовые примеры из интернета не всегда работают и не всегда хорошо подходят для конкретной ситуации. При необходимости настройки выносятся во внешние файлы, которые подключаются при помощи include или !include. Восклицательный знак во втором варианте не означает, как это принято считать, отрицание. !include используется для хранения информации в файле определенного раздела или параметра. Например, все настройки вывода вынесены в отдельный файл outputs.yaml:
outputs: !include outputs.yaml
$ suricata –dump-config
Смотрим дамп конфигурационного файла
Перед первым запуском следует проверить значение переменных, определенных в разделе vars, по названию они полностью совпадают со снортовскими:
Параметр host-mode определяет режим работы IDS/IPS. По умолчанию установлен в auto, но в зависимости от конфигурации и задач, возможно, следует перестроить на router (IPS-режим AF_PACKET) или sniffer-only (IDS). Также рекомендуется установить оптимальное значение default-packet-size, указав MTU своей сети. Кроме этого, проверяем подключенные правила. Здесь все просто. Смотрим, что есть в /etc/suricata/rules, и прописываем, что нужно:
Политики для определенных ОС:
Список настроенных для проверки протоколов уровня приложения можем получить при помощи –list-app-layer-protos:
$ suricata –list-app-layer-protos
Список настроенных протоколов уровня приложения
Желательно перед запуском прогнать Suricata в режиме тестирования, проверить, нет ли ошибок в конфигурационном файле и правах доступа к ним:
$ sudo suricata -cT /etc/suricata/suricata.yaml
Тестовый запуск Suricata
Если все в порядке, то получим только сообщение о версии движка. Иначе перед запуском в работу следует разобраться с ошибками. Разработчики пакета предоставляют init-скрипт, но первый запуск стоит произвести в интерактивном режиме, чтобы наглядно видеть происходящее и не искать проблемы в логах:
$ sudo suricata -c /etc/suricata/suricata.yaml -i eth0
Стоит внимательно отнестись ко всем предупреждениям, полученным в процессе запуска. Может, текущие настройки захвата не совсем подходят. Проверим нашу IDS:
$ cd /var/log/suricata
$ sudo tail -f fast.log http.log
$ wget www.testmyids.com
В журналах появляется запись:
Можем посмотреть информацию о трафике в логах:
Рекламный идентификатор — реальность
Как обнаружил исследователь Серж Эгельман (Serge Egelman), более 70% приложений в Google Play используют хотя бы один дополнительный идентификатор без предупреждения. Некоторые из них, например 3D Bowling, Clean Master и CamScanner, скачали многие миллионы человек.
Чаще всего в ход идет Android ID, хотя IMEI, MAC-адреса и серийные номера разработчики тоже задействуют. Некоторые приложения отправляют партнерам сразу три идентификатора и более. Так, игра 3D Bowling — видимо, для верности — использует и рекламный идентификатор, и IMEI, и Android ID.
Такой подход делает саму идею специального рекламного идентификатора бессмысленной. Даже если вы против слежки и регулярно сбрасываете его, маркетологи при помощи более стабильной метки легко привяжут к существующему профилю новый идентификатор.
Троян в Google Play с сотней миллионов загрузок
Несмотря на то что подобное поведение не соответствует правилам Google Play, вовремя отловить злоупотребляющих идентификаторами разработчиков не так-то просто. Все приложения проверяют перед публикацией, но многие не совсем честные авторы успешно обходят эту проверку. Даже майнеры то и дело попадают в магазин — что уж говорить о программах, в которых нет откровенно вредоносных функций.
При этом просто запретить приложениям доступ к идентификаторам устройства Google не может: как мы уже говорили, их используют не только для рекламы. Лишая мобильные программы, например, возможности считывать Android ID, компания Google помешала бы разработчикам защищать свой продукт от нелегального копирования, а значит, нарушила бы их права.
Intrusion Prevention System (IPS)
IDS способны лишь уведомить ответственное лицо о нежелательной активности. Специалисту придется самостоятельно перенастроить фаервол во время просмотра отчетов. Но зачастую нужно среагировать в реальном времени, предотвратив вторжение на ранней стадии. Для этого используют уже упоминаемые ипс (системы предотвращения атак). Они способны автоматически пресекать вредоносные действия, например прервать сеанс или перенастроить пакетный фильтр.
Разновидности и функции IPS
Ипс — это одна из разновидностей IDS, так как использует те же методы обнаружения атак. Получается своеобразный гибрид IDS и фаервола. Зачастую IDS и IPS является одним и тем же устройством, которое можно по-разному настроить и подключить в сеть.
IDS и IPS классифицируют схожим образом. Существуют хостовые IPS (HIPS) и сетевые IPS (NIPS). NIPS предотвращает вторжения путем встраивания “в разрыв” сети и пропускания через себя трафика. Как правила у данного вида имеется внешний интерфейс, принимающий трафик, и внутренний, пропускающий легитимный трафик.
Также IPS делят на те, которые мониторят трафик и сравнивают его с известными сигнатурами, и те, которые выискивают подозрительный трафик на основе анализаторов протоколов и базе найденных уязвимостях. Второй метод помогает защищаться от еще неизвестных классов атак. Если говорить о способах реакции на вторжения, то основными являются следующие: перенастройка коммуникационного оборудования, блокировка конкретных пользователей и хостов, обрыв сеансов при помощи TCP RST или средствами фаервола.
McAfee Network Security Platform 7
- Разработчик: McAfee Inc.
- Web: www.mcafee.com.
- Реализация: программно-аппаратная.
- Лицензия: коммерческая.
IntruShield IPS, выпускавшийся компанией McAfee, в свое время был одним из популярных IPS-решений. Теперь на его основе разработан McAfee Network Security Platform 7 (NSP). В дополнение ко всем функциями классического NIPS новый продукт получил инструменты для анализа пакетов, передаваемых по внутренней корпоративной сети, что помогает обнаруживать зловредный трафик, инициируемый зараженными компами. В McAfee используется технология Global Threat Intelligence, которая собирает информацию с сотен тысяч датчиков, установленных по всему миру, и оценивает репутацию всех проходящих уникальных файлов, IP- и URL-адресов и протоколов. Благодаря этому NSP может обнаруживать трафик ботнета, выявлять 0day-угрозы и DDoS-атаки, а такой широкий охват позволяет свести к нулю вероятность ложного срабатывания.
Не каждая IDS/IPS может работать в среде виртуальных машин, ведь весь обмен происходит по внутренним интерфейсам. Но NSP не испытывает проблем с этим, он умеет анализировать трафик между VM, а также между VM и физическим хостом. Для наблюдения за узлами используется агентский модуль от компании Reflex Systems, который собирает информацию о трафике в VM и передает ее в физическую среду для анализа.
Движок различает более 1100 приложений, работающих на седьмом уровне OSI. Он просматривает трафик при помощи механизма контент-анализа и предоставляет простые инструменты управления.
Кроме NIPS, McAfee выпускает и хостовую IPS — Host Intrusion Prevention for Desktop, которая обеспечивает комплексную защиту ПК, используя такие методы детектирования угроз, как анализ поведения и сигнатур, контроль состояния соединений с помощью межсетевого экрана, оценка репутации для блокирования атак.
Samhain
- Разработчик: Samhain Labs.
- Web: www.la-samhna.de/samhain.
- Реализация: программная.
- ОС: Unix, Linux, Windows/Cygwin.
- Лицензия: GNU GPL
Выпускаемый под OpenSource-лицензией Samhain относится к хостовым IDS, защищающим отдельный компьютер. Он использует несколько методов анализа, позволяющих полностью охватить все события, происходящие в системе:
- создание при первом запуске базы данных сигнатур важных файлов и ее сравнение в дальнейшем с «живой» системой;
- мониторинг и анализ записей в журналах;
- контроль входа/выхода в систему;
- мониторинг подключений к открытым сетевым портам;
- контроль файлов с установленным SUID и скрытых процессов.
В конфиге Samhain указывается, какие файлы необходимо контролировать
Программа может быть запущена в невидимом режиме (задействуется модуль ядра), когда процессы ядра невозможно обнаружить в памяти. Samhain также поддерживает мониторинг нескольких узлов, работающих под управлением разных ОС, с регистрацией всех событий в одной точке. При этом установленные на удаленных узлах агенты отсылают всю собранную информацию (TCP, AES, подпись) по зашифрованному каналу на сервер (yule), который сохраняет ее в БД (MySQL, PostgreSQL, Oracle). Кроме того, сервер отвечает за проверку статуса клиентских систем, распространение обновлений и конфигурационных файлов. Реализовано несколько вариантов для оповещений и отсылки собранной информации: e-mail (почта подписывается во избежание подделки), syslog, лог-файл (подписывается), Nagios, консоль и др. Управление можно осуществлять с помощью нескольких администраторов с четко установленными ролями.
Пакет доступен в репозиториях практически всех дистрибутивов Linux, на сайте проекта есть описание, как установить Samhain под Windows.
Настройки производительности Suricata
Кроме собственно настроек работы движка обнаружения, в файле следует обратить внимание на установки, влияющие на производительность. Их здесь предостаточно: threading, detect-thread-ratio, defrag, stream, runmode и другие. Первые два имеют отношение больше к железу (в частности, числу CPU), defrag и stream к сетевой нагрузке, а runmode влияет на алгоритм запуска потоков, очередей, нитей. Список и характеристики runmode можно просмотреть с помощью параметра –list-runmodes.
$ suricata –list-runmodes
В настоящее время реализовано четыре режима: auto, autofp (по умолчанию, от auto flow pinning, является усовершенствованным auto), workers и single.
runmode: autofp
autofp-scheduler: active-packets
Вариантами может быть round-robin или hash (используется хеш-таблица, фактически более случайное распределение, был по умолчанию до версии 1.2.1). В случае workers каждый поток обрабатывается отдельно от захвата до логирования, при single вся обработка идет одним потоком. Но только autofp и workers гарантируют, что сетевое соединение будет всегда направлено по одному и тому же потоку.
Suricata может быть использована для журналирования HTTP, DNS и подобных запросов. Модуль обнаружения, забирающий много ресурсов, можно отключить при сборке (постоянно) или временно в строке запуска (параметр –disable-detection).
Резюме
В качестве заключения выделим конкретные задачи, выполняемые IPS/IDS, и сформулируем главные требования к таким системам при выборе того или иного решения.
Итак, системы обнаружения атак имеют две основные функции. Во-первых, они собирают доказательную базу для расследования инцидентов (например, когда злоумышленник продолжительное время пользуется ресурсами организации). Во-вторых, они производят мониторинг вредоносной активности. Следовательно, основные требования к IDS – это полнота охвата известных эксплойтов и уязвимостей (актуальность базы сигнатур), а также “живучесть” системы, чтобы она постоянна собирала необходимую информацию.
Системы предотвращения атак, в свою очередь, занимаются “нормализацией” трафика, блокированием атак и минимизацией нанесенного ущерба. Требования к IPS немного другие. Во-первых, это надежность, т.е. не должно прерываться функционирование системы. Сбои могут привести к таким неприятным последствия, как обрыв канала и отказ в обслуживании. Во-вторых, это низкий уровень ложных срабатываний.
Если вы задумываетесь о современном многофункциональном решении, то стоит обратить внимание на так называемые устройства UTM. Помимо IPS/IDS они включают все необходимые компоненты защиты: межсетевой экран, прокси-сервер, антиспам- и контент-фильтры, прокси-сервер, антивирус и межсетевой экран.
Проект Suricata
В 2009 году несколько частных компаний и US Department of Homeland Security создали организацию Open Information Security Foundation (OISF), основной из задач которой было финансирование и разработка многопоточной альтернативы Snort, получившей название Suricata. Работа над новой IDS/IPS шла гораздо быстрее, чем со Snort 3.0, и бета-версия появилась уже в декабре 2009-го, а первый официальный релиз — летом 2010-го. Разработка ведется с активным привлечением сообщества, поэтому темп очень высок. Код распространяется под лицензией GPLv2, но финансовые партнеры имеют доступ к не GPL-версии движка, которую они могут брать для своих продуктов.
Suricata изначально работает в многопоточном режиме, позволяющем оптимально использовать несколько CPU. До релиза 1.3 были некоторые проблемы с масштабируемостью, например количество ядер больше четырех не давало в тестах прироста скорости. Теперь все проблемы решены и Suricata вполне эффективно работает с 24 и более процессорами. Кроме того, Suricata может использовать вычисления на стороне GPU (CUDA и OpenCL, параметр при сборке –enable-cuda). В итоге эта IDS спокойно справляется на обычном оборудовании с потоками до 10 Гбит/с.
Как и Snort, Suricata состоит из нескольких модулей (захвата, сбора, декодирования, обнаружения и вывода), по умолчанию до декодирования захваченный трафик идет одним потоком, это оптимально с точки зрения детектирования, но больше нагружает систему. Но в отличие от Snort настройками можно переопределять такое поведение и буквально одной установкой в конфиге разделить потоки сразу после захвата, а другой указать, как будут распределяться потоки по процессорам. Это дает широкие возможности для оптимизации обработки трафика на конкретном оборудовании в конкретной сети.
Изначально поддерживается декодирование IPv6, в том числе и туннели IPv4-in-IPv6, IPv6-in-IPv6, Teredo и некоторые другие. Модульная компоновка движка дает возможность быстро подключить новый элемент для захвата, декодирования, анализа или обработки пакетов. Для перехвата трафика используется несколько интерфейсов — NFQueue, IPFRing, LibPcap, IPFW, AF_PACKET, PF_RING. Режим Unix Socket позволяет автоматически анализировать PCAP-файлы, предварительно захваченные другой программой (снифером, например).
В Snort режим IPS появился не сразу, а вот в Suricata режим блокировки вредоносного трафика реализован из коробки и производится средствами штатного пакетного фильтра ОС. В Linux, например, используется два режима IPS: через очередь NFQUEUE, которая может обрабатываться на уровне пользователя, и через zero copy режим AF_PACKET (появился с версии 1.4). Режим AF_PACKET обладает большим быстродействием, но требует наличия двух сетевых интерфейсов, система должна работать в качестве шлюза. Если пакет блокируется, он просто не пересылается на второй интерфейс. В случае с NFQUEUE алгоритм прост. После попадания пакета в iptables он направляется в очередь NFQUEUE, где прогоняется по правилам. Результатом может быть три действия: NF_ACCEPT, NF_DROP и NF_REPEAT. Последний позволяет маркировать пакеты и в дальнейшем прогнать их по следующим таблицам/правилам iptables.
Главная особенность Suricata — то, что, кроме своих уникальных наработок, он использует практически все, что уже наработано для Snort. Так, подходят все Snort-овские рулсеты — Sourcefire VRT, OpenSource Emerging Threats (ETOpen) и коммерческие Emerging Threats Pro. Унифицирован вывод (Unified2), поэтому результат можно анализировать при помощи привычных бэкендов — Barnyard2, Snortsnarf, Snorby, Aanval, BASE, FPCGUI, NSM-система Sguil и Squert. Возможен вывод в PCAP, Syslog, файлы и подобное. Например, Suricata ведет журнал ключей и сертификатов, фигурирующих в TLS/SSL-соединениях. В последних релизах появился Eve log, формирующий вывод событий в формате JSON для предупреждений. Наличие JSON существенно упрощает интеграцию Suricata со сторонними приложениями, включая и системы мониторинга и визуализации логов (вроде Kibana).
Вcе настройки Suricata и правил производятся в файлах формата YAML, он более нагляден и упрощает автоматическую обработку.
Одно из преимуществ Suricata заключается в обработке 7-го уровня OSI, что повышает его способность обнаруживать вредоносные программы для приложений. Движок автоматически определяет и парсит протоколы (IP, TCP, UDP, ICMP, HTTP, TLS, FTP, SMB, SMTP и другие), поэтому в правилах можно строго не привязываться к номеру порта, как это сделано в Snort, достаточно указать протокол и действие. Дальше модули Suricata сами уже разберутся с трафиком и обнаружат протокол, даже если используется нестандартный порт.
Собственный формат rules внешне напоминает снортовский. Правило содержит компоненты: действие (pass, drop, reject или alert), заголовок (IP/порт источника и назначения) и описание (что искать). В текущей поставке родных правил мало, и некоторые к тому же отключены (закомментированы) в самих файлах, поэтому пока следует больше ориентироваться на снортовские рулсеты.
Иногда между узлами открывается не одно, а несколько TCP-соединений. Некоторые IDS не видят картину в целом и обрабатывают каждый поток отдельно. Правила Suricata широко используют концепцию flowbits. Для отслеживания количества срабатываний правил используются различные переменные сессии (например, с помощью flowint), позволяющие создавать счетчики и флаги, а затем проверять их. Такой подход легко справляется с попыткой подбора пароля. В версии 2.1 появится возможность простого отслеживания в правилах связки IP источника — IP назначения (xbits), что позволит еще проще обнаруживать вредоносный трафик, распределенный по нескольким соединениям.
Отличия IPS/IDS от межсетевых экранов
Начинающему специалисту по информационной безопасности может быть трудно понять, зачем нужны IPSIDS, когда есть фаервол. Особенно когда они выполняют схожую функцию фильтрации трафика. Однако между этими инструментами существует фундаментальная разница.
Главная функция межсетевого экрана — контроль доступа на уровне сети. Фаервол указывает, какие компьютеры могут обращаться к участкам сети, основываясь на некотором наборе разрешающих правил. То есть, пропустить определенный трафик, остальное запретить. IPS/IDS в свою очередь работают по обратному принципу — заблокировать проблему безопасности (например какой-либо пакет), все остальное пропустить (в случае отсутствия поводов для подозрений на вторжение).
Помимо концептуального существует и техническое отличие. Фаерволы хорошо работают на 2-4 уровнях . Для приемлемой работы на более высоких уровнях у них мало встроенного функционала. Поэтому межсетевые экраны в основном контролируют только параметры сессии: состояние связей, номера портов, IP. IPS и IDS systems позволяют работать на более высоких уровнях, анализируя не только заголовки и их небольшие кусочки, но и содержимое пакетов. А если есть возможность распаковать пакет, то можно проверить передаваемые данные на предмет негативного поведения.
Технологии IDS/IPS
PHPIDS блокирует неправильные PHP-запросы
Сетевые NIDS (Network Intrusion Detection System) более универсальны, что достигается благодаря технологии DPI (Deep Packet Inspection, глубокое инспектирование пакета). Они контролируют не одно конкретное приложение, а весь проходящий трафик, начиная с канального уровня.
Чтобы полностью владеть ситуацией, необходимо контролировать и сопоставлять события как на сетевом уровне, так и на уровне хоста. Для этой цели были созданы гибридные IDS, которые коллектят данные из разных источников (подобные системы часто относят к SIM — Security Information Management). Среди OpenSource-проектов интересен Prelude Hybrid IDS, собирающий данные практически со всех OpenSource IDS/IPS и понимающий формат журналов разных приложений (поддержка этой системы приостановлена несколько лет назад, но собранные пакеты еще можно найти в репозиториях Linux и *BSD).
В разнообразии предлагаемых решений может запутаться даже профи. Сегодня мы познакомимся с наиболее яркими представителями IDS/IPS-систем.
StoneGate Intrusion Prevention System
- Разработчик: StoneSoft Corporation.
- Web: www.stonesoft.com.
- Реализация: программно-аппаратная, образ VMware.
- ОС: 32/64-битные Windows 2k3/Vista/7/2k8R2, Linux (CentOS, RHEL, SLES).
- Лицензия: коммерческая.
Это решение разработано финской компанией, которая занимается созданием продуктов корпоративного класса в сфере сетевой безопасности. В нем реализованы все востребованные функции: IPS, защита от DDoS- и 0day-атак, веб-фильтрация, поддержка зашифрованного трафика и т. д. С помощью StoneGate IPS можно заблокировать вирус, spyware, определенные приложения (P2P, IM и прочее). Для веб-фильтрации используется постоянно обновляемая база сайтов, разделенных на несколько категорий. Особое внимание уделяется защите от обхода систем безопасности AET (Advanced Evasion Techniques). Технология Transparent Access Control позволяет разбить корпоративную сеть на несколько виртуальных сегментов без изменения реальной топологии и установить для каждого из них индивидуальные политики безопасности. Политики проверки трафика настраиваются при помощи шаблонов, содержащих типовые правила. Эти политики создаются в офлайн-режиме. Администратор проверяет созданные политики и загружает их на удаленные узлы IPS. Похожие события в StoneGate IPS обрабатываются по принципу, используемому в SIM/SIEM-системах, что существенно облегчает анализ. Несколько устройств легко можно объединить в кластер и интегрировать с другими решениями StoneSoft — StoneGate Firewall/VPN и StoneGate SSL VPN. Управление при этом обеспечивается из единой консоли управления (StoneGate Management Center), состоящей из трех компонентов: Management Server, Log Server и Management Client. Консоль позволяет не только настраивать работу IPS и создавать новые правила и политики, но и производить мониторинг и просматривать журналы. Она написана на Java, поэтому доступны версии для Windows и Linux.
Консоль управления StoneGate IPS
INFO
На самом деле технологии IDS не являются чем-то принципиально новым. Средства обнаружения вторжений появились около 30 лет назад. Первые идс были разработаны для операционной системы SINEX (UNIX для систем производства Siemens). Они осуществляли контроль доступа пользователей с терминалов к основным ресурсам мейнфреймов.
Функции IDS
Ответим на вопрос «IDS, что это?»IDS – это система обнаружения атак, предназначенная для сканирования сетевого трафика, регистрации подозрительной активности в сети и оповещения при срабатывании определенных правил. Обычно IDS просматривает трафик и журналы, ищет в данных признаки вредоносной активности и в случае атаки уведомляет специалиста по безопасности через управляющую консоль, SMS-сообщение или электронную почту.
Важно помнить, что идс – это не средство непосредственного контроля, а инструмент улучшения видимости сети. IDS помогает специалистам по безопасности понять, насколько все хорошо с защищенностью. В этом плане эта технология похожа на анализатор протоколов (например, Wireshark), только в данном контексте речь идет об анализе и оценке безопасности.
Классификация IDS
Системы обнаружения атак бывают самыми разнообразными: аппаратными и программными, опенсорсными и проприетарными. Рассмотрим две классификации, важные при выборе того или иного решения.
По виду анализируемого трафика IDS делят на:
- основанные на протоколе (PIDS)
- основанные на прикладных протоколах (APIDS)
Первая разновидность мониторит коммуникационные протоколы со связанными пользователями или системами. Второй вид анализирует узкий список прикладных протоколов, специфичных для приложений. Примеры довольно популярных APIDS: PHPIDS, GreenSQL-FW и Mod_Security.
От места расположения в сети IDS разделяют на:
Здесь все более или менее очевидно. HIDS производит мониторинг в пределах единственного хоста, а NIDS – в пределах сетевого сегмента, где она установлена. Сетевые IDS более универсальны, чем прикладные или хостовые. Во многом это достигается благодаря технологии глубокого инспектирования пакетов (DPI), позволяющей анализировать весь трафик от канального уровня и выше. Однако за универсальность приходится платить дополнительной нагрузкой на вычислительные ресурсы.
Существуют и другие разновидности IDS, например VMIDS. Данный тип основан на использовании технологий виртуализации, позволяющей обойтись без развёртывания системы на отдельном устройстве.
Способы обнаружения вторжений
В технической литературе и статьях, посвященных методам обнаружения вторжений, можно найти два основных метода: обнаружение злоупотреблений (сигнатурные IDS) и обнаружение аномалий (IDS, основанные на аномалиях).
Обнаружение злоупотреблений
В основе обнаружений злоупотреблений лежит сигнатурный анализ трафика и/или узловых событий (журналы приложений, сисколы) плюс анализаторы протоколов. Если говорить по-простому, данный способ базируется на существовании описания известных атак. Система ищет в реальном трафике и поведении приложений паттерны, которые есть в базе. Подавляющее количество современных систем используют этот подход. Главный плюс такого метода — специалисту понятно, почему IDS среагировала. Если сработала сигнатура на трафик, мы можем взглянуть на ее текст, обратиться к логам системы, базе сигнатур и разобраться, что конкретно произошло. Однако базы нужно всегда поддерживать в актуальном состоянии.
Обнаружение аномалий
Метод обнаружения аномалий работает наоборот. Нам известно, что такое нормальный трафик и нормальное поведение приложений. Система пытается распознать отклонения от этого поведения. Удивительно, но IDS на основе аномалий были первыми и появились около 30 лет назад. В наше время такие системы обучают методами machine learning на примерах нормального функционирования.
Главный недостаток данных IDS – они должны обучаться на нормальных данных. Это означает, что система работает некоторое время в конкретной сети на определенном узле, на котором будут обнаруживаться атаки. Когда случается что-то плохое (система реагирует), аналитику очень сложно понять, почему пакет или сессия посчитались ненормальными. Хорошо, если у нас всего несколько параметров (например объем переданных данных и количество открытых соединений в секунду), по которым распознается нормальное поведение. Задача усложняется, если таких параметров несколько десятков плюс используется какой-нибудь замысловатый алгоритм машинного обучения. Однако есть класс задач, в котором IDS на основе аномалий нет равных — системы обнаружения DDoS атак. Такие системы способны быстро определять источник DDoS атаки, эффективно блокировать атакующий трафик и даже сбрасывать его на стороне провайдера.
Проблемы безопасности бизнес-сетей
В корпоративной сети обычно имеются несколько точек доступа к другим сетям. Они могут быть как частными, так и публичными. Главная задача состоит в том, чтобы поддерживать безопасность этих сетей, сохраняя при этом их открытыми для своих пользователей. Сегодня атаки бывают настолько комплексными, что могут помешать самым крутым системам безопасности. Особенно, если они работают, исходя и предположения, что ресурсы организации можно защитить с помощью брандмауэров или шифрования. Например, вредоносное ПО может отправлять пакеты, выглядящие полностью “нормальными” для фаервола. Поэтому одних этих технологий не хватает для противодействия современным угрозам. На первый план выходят так называемые системы обнаружения вторжений системы предотвращения вторжений
IDS/IPS системы — программные и аппаратные инструменты для защиты сетей от несанкционированного доступа. Они способны автоматически обнаруживать факты вторжений и предотвращать их, оповещая ответственных специалистов. Хотя с технологической точки зрения IDS и IPS очень похожи, задачи и требования к ним совершенно разные, поэтому следует различать эти понятия. Аббревиатура IDS означает Intrusion Detection System, а IPS – Intrusion Prevention System. Соответственно, первая технология производит мониторинг угроз, а вторая занимается их предотвращением.
Заключение
Победителей определять не будем. Выбор в каждом конкретном случае зависит от бюджета, топологии сети, требуемых функций защиты, желания админа возиться с настройками и, конечно же, рисков. Коммерческие решения получают поддержку и снабжаются сертификатами, что позволяет использовать эти решения в организациях, занимающихся в том числе обработкой персональных данных Распространяемый по OpenSource-лицензии Snort прекрасно документирован, имеет достаточно большую базу и хороший послужной список, чтобы быть востребованным у сисадминов. Совместимый с ним Suricata вполне может защитить сеть с большим трафиком и, главное, абсолютно бесплатен.
Выводы
Итак, Suricata — это более быстрый, чем Snort, движок, умеющий по максимуму использовать возможности современных процессоров и GPU, при этом полностью совместимый со Snort по правилам и бэкендам. Минус — большое количество настроек и недостаточно внятная в некоторых вопросах документация. Хотя после установки нормально работает с настройками по умолчанию, а с тонкой настройкой опытный админ без проблем разберется.