# IDS & IPS установка и настройка
IDS и IPS системы
Схема для работы нужна такая:

С нашей win7-машинки будем подключаться к FW2.
FW-ы нужно обновить, т.к. IDS и IPS системы рассчитаны на последние версии FW-лов. Запускаем FW2, переходим в shell(8) и набираем: pfSense-upgrade
IDS и IPS системы - теория
У нас есть решение в виде сетевого экрана – пакет-FW (IP-paket-FW), так называемый нетворк-FW (сетевой FW) – для того, чтобы можно было фильтровать определенного рода сессии
Предположим, что у нас есть два интерфейса (черные квадратики) – WAN и LAN

Между интерфейсами есть форвад-трафик (форвардинг) – он вообще никак не контролируется
FW – это устройство на уровне L4 – на транспортном.
На уровне L4 можно контролировать только это:
- source IP
- destination IP
- протокол
- порты
Системы IDS, IPS – это тот же самый FW – та же самая железка, таким же образом работает, таким же самым образом контролирует. Но, внутри появляется новый движочек:
IDS/IPS – это система, которая начинает смотреть на трафик, проходящий через нее.
IDS-система – система, которая только обнаруживает: т.е. увидела трафик и кричит «ALARM, ALARM, печаль-беда» и ничего не делает
IPS- система – система, которая кричит «Печаль-беда», а потом еще и блочит.
Но у каждой системы есть свои ++ и --
Например, в IPS можно спокойно залочить себя же сканированием (начнем сканировать -> система распознает, залочит и дальше мы не сможем ничего делать – даже зайти с этой же машинки на FW и отключить). Останется только сбросить настройки FW ( а если настраивали лет 50? + а если еще и бэкапов нет?? )
Например: идет трафик внутри инф-ры из LANa в WAN и начинает система смотреть внутрь трафика

Теперь посмотрим как будет выглядеть IP-пакет: у него заголовок head, data, crc – сумма
В заголовке: destin IP/ sours IP – адрес откуда /куда отправлено ; возможно есть протокол, чтобы посмотреть на уровни L4 и есть данные, связанные с meta-данными
++ сама DATA – содержимое для передачи
FW может смотреть только на первые две части (голубые):

Но есть системы, которые могут смотреть абсолютно на весь IP-пакет:

При анализе IP-пакета «вычисляется» аномальное поведение – сравнивается с неким эталоном: но тут есть момент – если сравнивать с нормальным «правильным» поведением – это будет огромный список. Поэтому - легче проводить сравнение с «неправильным» (сравнение с вредоносной частью, как делают антивирусы - некая сигнатура – кусочек вредоносного кода) В нашем случае мы можем выделить кусочек вредоносного трафика.
И, если этот кусочек будет обнаружен и опознан в нашем трафике, мы сможем сказать, что трафик – вредоносный.
Открываем win7-машинку и коннектимся к нашему FW2.
Логинимся в pfSense. Фактически у нас здесь сейчас чистый FW – наша задача: сделать из него систему, которая будет детектить (а возможно и предотвращать) вредоносный трафик.
Нам придется настроить систему и попытаться ее атаковать, чтобы посмотреть как она будет работать. Атаковать мы будем сначала сканированием (просканируем изнутри через кали-линекс)
Переходим в system-package manager- available packages- поиск по названию- ищем suricata
На FW2 ставим: сурикату

Заходим на FW1 и переходим в shell и тоже обновляем до последней версии.
Возвращаемся к FW2, и переходим к настройке системы.
Идем services-suricata-global settings
Сначала делаются Глобал настройки, потом апдейты и только потом уже – интерфейсы. (сначала задают параметры – глобал- откуда брать обновления; потом уже обновляем базы при необходимости и только после этого добавляем интерфейс)
У сурикаты есть база, откуда она может брать правила. Базы в виде - install ETOpen Emerging Treads rules (выходят как бесплатные через 30 дней после PRO-версии) ->
install ETPro Emerging Treads rules (актуальны здесь и сейчас, PRO-версия платная)
И есть еще правила install Snort rules но подходят только для версии 2.9 (для версии 3 – уже нет)
Snort Oinkmaster Cod- регистрационный код для авторизации на сайте, чтобы использовать правила
Регистрация по голубой строчке: 
Открываем и регистрируемся на сайте Snort (если сайт не грузится – можно автоматически получить днс, или прописать 8.8.8.8 в настройках интернета)
При регистрации не ставить нижние галочки – иначе заспамят:

После регистрации, заходим на акк и выбираем oinkcode:

(если одновременно обновляться с одного и того же оинкода на несколько пользаков – акк на время уходит в бан – банят всех участников)
Копируем код и вставляем в настройки в соответствующее поле:

И еще нужен файлик: Snort Rules Filename. Это нужно имя файла – вот такое, например:

Имя можно взять на сайте снорта: переходим в downloads Здесь есть такая штучка, как Snort v2.9 –

В списке копируем последнюю строчку с названием:

И вставляем ее в соответствующее поле в настройках сурикаты:

У сурикаты включаем бесплатные правила и правила снорт:

Нужно будет указать, что есть такая версия как: комьюнити правила
 
чтобы старые правила (недействительные ) скрывал
Интервал апдейта: можно выбрать 1 день и время для обновления

 - когда обновились правила – мы обновляем их «на лету» и не нужно перезапускать сервис
 - можно к сурикате привязать гео-апдейт – будет показывать с какой стороны идет атака.
Лицензионный ключ:
 (ключ может быть другим) внести в pfSense (копипаст тут не работает).
Итог:

Далее, есть еще одна важная вещь: Включить запись системных логов, чтобы можно было с ними работать и отправлять

Сохраняем и переходим в updates и нажимаем – апдейт:
После установки обновления сурикаты – переходим в:


Как работают интерфейсы
Система IDS/IPS может слушать трафик либо на LAN-интерфейсе, либо на WAN-интерфейсе. Это нужно смотреть куда идет у нас тот или иной трафик ( с какой на какую сеть) IDS/IPS будет фильтровать, или обрабатывать, либо еще что-то с ним делать. Правила как раз и сделаны, чтобы просматривать: где, на каком интерфейсе вся эта штука работает
У нас есть:

интерфейс е1 – на самом деле не е1, а е1/1, е1/2, е1/3 и т.д. (внутренние интерфейсы). Когда на внутренний интерфейс ставится какой-то анализатор трафика (снорт или суриката), а злоумышленник сканирует всё, что внутри на уровне L2? То наша система покажет нам, что кто-то пытался нас атаковать. Но обнаружить мы сможем это не сразу, потому что пропускная способность интернета примерно 300мбит/сек – а системе нужно обработать каждый пакетик трафика, а это требует много ресурсов и скорость фактически должна сильно падать. Этого не происходит, потому что процесс сравнения происходит «выборочно». В правилах для любой IDS/IPS системы (суриката, снорт или другая) есть определенного рода фильтры: сначала идет фильтр, а потом то, по чему мы это все будем сравнивать
Настраиваем интерфейсы:
Добавляем интерфейс add вписываем LAN:

Далее настройки, связанные с логированием: они нужны, чтобы понять, что данный конкретный лог (когда к вам приходит список логов) относится к безопасности системы. Можно выставить приоритетные логи – со стороны сурикаты есть смысл выбрать для них название – ALERT и раздел – SECURITY
 - суриката может извлекать из трафика определенного рода объекты (например – передаете картинку и суриката может эту картинку спокойно вытащить)
Получаем:

eve output settings - корневая фишка сурикаты: мы можем со стороны сурикаты напрямую без разного преобразования и парсинга логов, отправлять сразу в Json ( в систему мониторинга безопасности системы). В нашем случае, нам это пока не нужно, потому что у нас нет внешнего сервера, на который нужно отправлять данные.
ALERT AND BLOCK SETTINGS - здесь мы можем сделать блок-offenders – фактически включить IPS – режим.
PERFOMANCE AND DETECTION ENGINE SETTINGS - тюнинг производительность. Трогать не рекомендуется, только в редких случаях.

NETWORKS SURICATA SHOULD INSPECT AND PROTECT - есть определения у любой IDS/IPS системы, как home и Network – т.е. какая твоя сеть внутренняя и какая External. Зачем это? - в правилах есть особенность, что там указывается home network и external network (либо все сети, либо же home network и external) – бывает такое, что экплойт работает снаружи, и смысла проверять трафик внутри нет… и IDS/IPS системы и работают так, чтобы не весь трафик сканировать, а только определенную его часть. И эта часть и является элементом фильтрации.
Здесь мы указываем оба по дефолту, но всегда можно посмотреть какие у нас есть (выбор по стрелке) –
 
Итоговая:


Получаем такие настройки интерфейсов:






Теперь посмотрим настройки для апдейтов: Они у нас обновились:

Глобальные настройки тоже все есть

Мы настроили сурикату, но не выбирали правила по которым она будет работать. Зайдем в настройки системы – карандашик –

У нас есть lan setting - его настроили (глобал для LAN сеттинга) и есть lan categories
- это фактически та ситема – какие правила будут работать на том или ином интерфейсе.
Для надежности – выбираем ВСЕ! Select all и save (после обычно что-то ломается, или НЕ ломается)

Посмотрим, для примера, как выглядит правило: 
Откроем и увидим код:

Итак, в правиле есть:
- «что делать»: действие, которое выполняется - Alert или дропать
- протокол – udp
- с какой сети и до какой сети $home
- по какому порту - any
- и в какую сеть это всё выходит: $external_net any
Эта часть очень сильно похожа на FW.
Далее: есть такая часть как меседж -  - основная часть нашей сигнатуры (правила) . правило может состоять из нескольких сигнатур (как наш пример) –
- как называется сигнатура:  - смотрится сам запрос, чтобы определить относится ли наш трафик к нашему запросу
 - эта часть легло копируется, и его можно просмотреть.
У нас есть трафик, и если в трафике есть определенная последовательность данных, то это условие может сработать:
- след.условие - depth 14 длина 14
- и еще одно: content: 
Есть 2 глобальных условия, которые позволят за-алертить систему, чтобы не было ложно-положительных срабатываний
Чтобы система не сработала «просто так» есть -
- еще один контент: на каком расстоянии от начала данных
distance 55
И следующая часть:
 - тип трафика, который идет внутри – здесь определяются дополнительные условия, которые работают в этом правиле
 - где можно посмотреть данные об уязвимости, (подробнее )
Главное:  - нет, то в этом случае правило у нас не сработает
Как FW система бы работала, если бы не было части в скобке (со 2 строчки и до конца)

Правила можно увидеть по пути: интерфейсы – настройка – LAN Rules: все, которые у нас есть – видно какие включены, какие нет


**Главное: не включать на pfSense чтобы он их отобразил.** При данном действии pfSense встанет в стопор и ничего нельзя будет сделать
Здесь мы можем выбирать правила из категории «правил»

Можем запустить нашу сурикату: посмотрим как всё выглядит в работе

Теперь можно перейти в алерты: и увидим какие алерты начинают сыпаться

Видим, что есть алерты, просто информирующие нас, что чек-сумма не совпадает и такие можно отключить, чтобы не засоряли важные данные:

После отключения надо нажать Clear чтобы ничего не осталось
когда наша суриката обнаружит, что есть какой-то вредоносный трафик – она запишет определенную информацию ДО, и определенную информацию ПОСЛЕ (просто запишет тот кусочек информации, который обнаружила)