Как работают системы обнаружения вторжений?

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

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

Но как только Вы приходите к решению что хотите открыть доступ к Вашей внутренней сети в режиме 24/7 Вам следует понимать что пользоваться этой «дверью» будут не только «хорошие парни». Обычно в ответ не такое утверждение можно услышать что-то типа «ну это не про нас, у нас маленькая компания», «да кому мы нужны», «что у нас ломать то, нечего».

И это не совсем верно. Даже если представить компанию, в которой на компьютерах нет ничего, кроме свежеустановленной ОС — это ресурсы. Ресурсы которые могут работать. И не только на Вас.

Поэтому даже в этом случае эти машины могут стать целью атакущих, например, для создания ботнета, майнинга биткоинов, крэкинга хэшей…

Еще существует вариант использования машин Вашей сети для проксирования запросов атакущих. Таким образом, их нелегальная деятельность ввяжет Вас в цепочку следования пакетов и как минимум добавит головной боли компании в случае разбирательств.

И тут возникает вопрос: а как отличить легальные действия от нелегальных?

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

Обычно, на этом моменте рассуждений возникает мысль что то, что описано выше может выполнять обычный firewall. И это правильно, но не во всем.

Разница между функциями firewall и IDS на первый взгляд может быть не видна. Но IDS обычно умеет понимать контент пакетов, заголовки и содержание, флаги и опции, а не только порты и IP адреса. То есть IDS понимает контекст чего обычно не умеет firewall. Исходя из того, можно сказать что IDS выполняет функции Firewall, но более интеллектуально. Для обычного Firewall нетипична ситуация когда нужно, например, разрешать соединения на порт 22 (ssh), но блокировать только некоторые пакеты, в которых содержатся определенные сигнатуры.

Современные Firewall могут быть дополнены различными плагинами, которые могут делать похожие вещи, связанные с deep-inspection пакетов. Часто такие плагины предлагают сами вендоры IDS чтобы усилить связку Firewall — IDS.

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

И эта особенность приводит к тому что в чистом виде IDS, скорее всего, не то что Вы хотите от Вашей системы безопасности (скорее всего, Вы не захотите такую систему для охраны Вашего дома или офиса — в ней нет никаких замков).

Поэтому сейчас почти любая IDS это комбинация IDS и IPS (Intrusion Prevention System — Система предотвращения вторжений).

Далее, необходимо четко понимать чем отличаются IDS и VS (Vulnerability Scanner — Сканер уязвимостей). А отличаются они по принципу действия. Сканеры уязвомостей — это превентивная мера. Вы можете просканировать все свои ресурсы. Если сканер что-нибудь найдет, можно это исправить.

Но, после того момента как Вы провели сканирование и до следующего сканирования в инфраструктуре могут произойти изменения, и Ваше сканирование теряет смысл, так как больше не отражает реальное положение дел. Измениться могут такие вещи как конфигурации, настройки отдельных сервисов, новые пользователи, права существующих пользователей, добавиться новые ресурсы и сервисы в сети.

Отличие же IDS в том что они проводят детектирование в реальном времени, с текущей конфигурацией.

Важно понимать, что IDS, по факту, не знает ничего об уязвимостях в сервисах в сети. Ей это не нужно. Она детектирует атаки по своим правилам — по факту появления сигнатур в трафике в сети. Таким образом, если IDS будет содержать, например, сигнатуры для атак на Apache WebServer, а у Вас его нигде нету — IDS все равно детектирует пакеты с такими сигнатурами (возможно, кто-то пытается направить эксплоит от апача на nginx по незнанию, либо это делает автоматизированный toolkit).

Конечно же, такая атака на несуществующий сервис ни к чему не приведет, но с IDS Вы будете в курсе что такая активность имеет место.

Хорошим решением является объединение периодических сканирований уязвимостей и включенной IDS/IPS.

Методы детектирования вторжений. Программные и аппаратные решения.

Сегодня много вендоров предлагают свои решения IDS/IPS. И все они реализуют свои продукты по разному.

Разные подходы обусловлены разными подходами к категоризации событий безопасности, атак и вторжений.

Первое, что надо учитывать — это масштаб: будет ли IDS/IPS работать только с трафиков конкретного хоста, или же она будет исследовать трафик целой сети.

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

Давайте посмотрим на, так называемые, Host-based IDS (HIDS — Host-based Intrusion Detection System)

HIDS является, как раз, примером программной реализации продукта и устанавливается на одну машину. Таким образом, система такого типа «видит» только информацию, доступную данной машине и, соответственно, детектирует атаки только затрагивающие эту машину. Преимущество систем такого типа в том, что будучи на машине, они видят всю ее внутреннюю структуру и могут контролировать и проверять намного больше объектов. Не только внешний трафик.

Такие системы обычно следят за лог-файлами, пытаются выявить аномалии в потоках событий, хранят контрольные суммы критичных файлов конфигураций и периодически сравнивают не изменил ли кто-то эти файлы.

А теперь давайте сравним такие системы с network-based системами (NIDS) о которых мы говорили в самом начале.

Для работы NIDS необходим, по сути, только сетевой интерфейс, с которого NIDS сможет получать трафик.

Далее все что делает NIDS — это сравнивает трафик с заранее заданными паттернами (сигнатурами) атак, и как только что-то попадает под сигнатуру атаки, Вы получаете уведомление о попытке вторжения. NIDS также способны детектировать DoS и некоторые другие типы атак, которые HIDS просто не может видеть.

Можно подойти к сравнению и с другой стороны:

Если Вы выбираете IDS/IPS реализованную как программное решение, то получаете контроль над тем на какое «железо» Вы будете ее устанавливать. И, в случае, если «железо» уже есть, Вы можете сэкономить.

Также в программной реализации существуют и бесплатные варианты IDS/IPS. Конечно, надо понимать, что используя бесплатные системы Вы не получаете такого же саппорта, скорости обновлений и решения проблем, как с платными вариантами. Но это хороший вариант для начала. В ними Вы можете понять что Вам действительно нужно от таких систем, увидите чего не хватает, что ненужно, выявите проблемы, и будете знать что спросить у вендоров платных систем в самом начале.

Если же Вы выбираете hardware решение, то получаете коробку, уже практически готовую к использованию. Плюсы от такой реализации очевидны — «железо» выбирает вендор, и он должен гарантировать что на этом железе его решение работает с заявленными характеристиками(не тормозит, не виснет). Обычно внутри находится некая разновидность Linux дистрибутива с уже установленным ПО. Такие дистрибутивы обычно сильно урезаны чтобы обеспечивать быструю скорость работы, оставляются только необходимые пакеты и утилиты (заодно решается проблема размера комплекта на диске — чем меньше тем меньше нужен HDD — тем меньше себестоимость — тем больше прибыль!).

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

Отчасти из-за того в «коробке» работает только IDS/IPS, а на серверах с программными IDS/IPS обычно запущено всегда очень много дополнительных вещей.