# IDS & IPS установка и настройка IDS и IPS системы Схема для работы нужна такая: ![](https://i.imgur.com/yFRouE0.png) С нашей win7-машинки будем подключаться к FW2. FW-ы нужно обновить, т.к. IDS и IPS системы рассчитаны на последние версии FW-лов. Запускаем FW2, переходим в shell(8) и набираем: pfSense-upgrade IDS и IPS системы - теория У нас есть решение в виде сетевого экрана – пакет-FW (IP-paket-FW), так называемый нетворк-FW (сетевой FW) – для того, чтобы можно было фильтровать определенного рода сессии Предположим, что у нас есть два интерфейса (черные квадратики) – WAN и LAN ![](https://i.imgur.com/JRyBBre.png) Между интерфейсами есть форвад-трафик (форвардинг) – он вообще никак не контролируется FW – это устройство на уровне L4 – на транспортном. На уровне L4 можно контролировать только это: - source IP - destination IP - протокол - порты Системы IDS, IPS – это тот же самый FW – та же самая железка, таким же образом работает, таким же самым образом контролирует. Но, внутри появляется новый движочек: IDS/IPS – это система, которая начинает смотреть на трафик, проходящий через нее. IDS-система – система, которая только обнаруживает: т.е. увидела трафик и кричит «ALARM, ALARM, печаль-беда» и ничего не делает IPS- система – система, которая кричит «Печаль-беда», а потом еще и блочит. Но у каждой системы есть свои ++ и -- Например, в IPS можно спокойно залочить себя же сканированием (начнем сканировать -> система распознает, залочит и дальше мы не сможем ничего делать – даже зайти с этой же машинки на FW и отключить). Останется только сбросить настройки FW ( а если настраивали лет 50? + а если еще и бэкапов нет?? ) Например: идет трафик внутри инф-ры из LANa в WAN и начинает система смотреть внутрь трафика ![](https://i.imgur.com/iW84BMX.png) Теперь посмотрим как будет выглядеть IP-пакет: у него заголовок head, data, crc – сумма В заголовке: destin IP/ sours IP – адрес откуда /куда отправлено ; возможно есть протокол, чтобы посмотреть на уровни L4 и есть данные, связанные с meta-данными ++ сама DATA – содержимое для передачи FW может смотреть только на первые две части (голубые): ![](https://i.imgur.com/icYjA5T.png) Но есть системы, которые могут смотреть абсолютно на весь IP-пакет: ![](https://i.imgur.com/AbOIUQI.png) При анализе IP-пакета «вычисляется» аномальное поведение – сравнивается с неким эталоном: но тут есть момент – если сравнивать с нормальным «правильным» поведением – это будет огромный список. Поэтому - легче проводить сравнение с «неправильным» (сравнение с вредоносной частью, как делают антивирусы - некая сигнатура – кусочек вредоносного кода) В нашем случае мы можем выделить кусочек вредоносного трафика. И, если этот кусочек будет обнаружен и опознан в нашем трафике, мы сможем сказать, что трафик – вредоносный. Открываем win7-машинку и коннектимся к нашему FW2. Логинимся в pfSense. Фактически у нас здесь сейчас чистый FW – наша задача: сделать из него систему, которая будет детектить (а возможно и предотвращать) вредоносный трафик. Нам придется настроить систему и попытаться ее атаковать, чтобы посмотреть как она будет работать. Атаковать мы будем сначала сканированием (просканируем изнутри через кали-линекс) Переходим в system-package manager- available packages- поиск по названию- ищем suricata На FW2 ставим: сурикату ![](https://i.imgur.com/se18HcQ.png) Заходим на 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- регистрационный код для авторизации на сайте, чтобы использовать правила Регистрация по голубой строчке: ![](https://i.imgur.com/aNuMZVJ.png) Открываем и регистрируемся на сайте Snort (если сайт не грузится – можно автоматически получить днс, или прописать 8.8.8.8 в настройках интернета) При регистрации не ставить нижние галочки – иначе заспамят: ![](https://i.imgur.com/8sMUhNO.png) После регистрации, заходим на акк и выбираем oinkcode: ![](https://i.imgur.com/vmNVeah.png) (если одновременно обновляться с одного и того же оинкода на несколько пользаков – акк на время уходит в бан – банят всех участников) Копируем код и вставляем в настройки в соответствующее поле: ![](https://i.imgur.com/F5iF3Di.png) И еще нужен файлик: Snort Rules Filename. Это нужно имя файла – вот такое, например: ![](https://i.imgur.com/pixH0Wv.png) Имя можно взять на сайте снорта: переходим в downloads Здесь есть такая штучка, как Snort v2.9 – ![](https://i.imgur.com/0jTUi59.png) В списке копируем последнюю строчку с названием: ![](https://i.imgur.com/Zg1Yzx4.png) И вставляем ее в соответствующее поле в настройках сурикаты: ![](https://i.imgur.com/s7l6ebp.png) У сурикаты включаем бесплатные правила и правила снорт: ![](https://i.imgur.com/70wWx2G.png) Нужно будет указать, что есть такая версия как: комьюнити правила ![](https://i.imgur.com/gboapxe.png) ![](https://i.imgur.com/npewFDV.png) чтобы старые правила (недействительные ) скрывал Интервал апдейта: можно выбрать 1 день и время для обновления ![](https://i.imgur.com/YkDtApK.png) ![](https://i.imgur.com/o8Jsz4p.png) - когда обновились правила – мы обновляем их «на лету» и не нужно перезапускать сервис ![](https://i.imgur.com/Pxc3DFM.png) - можно к сурикате привязать гео-апдейт – будет показывать с какой стороны идет атака. Лицензионный ключ: ![](https://i.imgur.com/xLL6M0H.png) (ключ может быть другим) внести в pfSense (копипаст тут не работает). Итог: ![](https://i.imgur.com/1DeGIpS.png) Далее, есть еще одна важная вещь: Включить запись системных логов, чтобы можно было с ними работать и отправлять ![](https://i.imgur.com/9ZNXiJf.png) Сохраняем и переходим в updates и нажимаем – апдейт:![](https://i.imgur.com/PYwxeVI.png) После установки обновления сурикаты – переходим в: ![](https://i.imgur.com/D0qxeej.png) ![](https://i.imgur.com/Vfd7tZQ.png) Как работают интерфейсы Система IDS/IPS может слушать трафик либо на LAN-интерфейсе, либо на WAN-интерфейсе. Это нужно смотреть куда идет у нас тот или иной трафик ( с какой на какую сеть) IDS/IPS будет фильтровать, или обрабатывать, либо еще что-то с ним делать. Правила как раз и сделаны, чтобы просматривать: где, на каком интерфейсе вся эта штука работает У нас есть: ![](https://i.imgur.com/hwo68lN.png) интерфейс е1 – на самом деле не е1, а е1/1, е1/2, е1/3 и т.д. (внутренние интерфейсы). Когда на внутренний интерфейс ставится какой-то анализатор трафика (снорт или суриката), а злоумышленник сканирует всё, что внутри на уровне L2? То наша система покажет нам, что кто-то пытался нас атаковать. Но обнаружить мы сможем это не сразу, потому что пропускная способность интернета примерно 300мбит/сек – а системе нужно обработать каждый пакетик трафика, а это требует много ресурсов и скорость фактически должна сильно падать. Этого не происходит, потому что процесс сравнения происходит «выборочно». В правилах для любой IDS/IPS системы (суриката, снорт или другая) есть определенного рода фильтры: сначала идет фильтр, а потом то, по чему мы это все будем сравнивать Настраиваем интерфейсы: Добавляем интерфейс add вписываем LAN: ![](https://i.imgur.com/F6dNE1f.png) Далее настройки, связанные с логированием: они нужны, чтобы понять, что данный конкретный лог (когда к вам приходит список логов) относится к безопасности системы. Можно выставить приоритетные логи – со стороны сурикаты есть смысл выбрать для них название – ALERT и раздел – SECURITY ![](https://i.imgur.com/DHTnuyC.png) - суриката может извлекать из трафика определенного рода объекты (например – передаете картинку и суриката может эту картинку спокойно вытащить) Получаем: ![](https://i.imgur.com/ddHUzYh.png) eve output settings - корневая фишка сурикаты: мы можем со стороны сурикаты напрямую без разного преобразования и парсинга логов, отправлять сразу в Json ( в систему мониторинга безопасности системы). В нашем случае, нам это пока не нужно, потому что у нас нет внешнего сервера, на который нужно отправлять данные. ALERT AND BLOCK SETTINGS - здесь мы можем сделать блок-offenders – фактически включить IPS – режим. PERFOMANCE AND DETECTION ENGINE SETTINGS - тюнинг производительность. Трогать не рекомендуется, только в редких случаях. ![](https://i.imgur.com/UBkQunP.png) NETWORKS SURICATA SHOULD INSPECT AND PROTECT - есть определения у любой IDS/IPS системы, как home и Network – т.е. какая твоя сеть внутренняя и какая External. Зачем это? - в правилах есть особенность, что там указывается home network и external network (либо все сети, либо же home network и external) – бывает такое, что экплойт работает снаружи, и смысла проверять трафик внутри нет… и IDS/IPS системы и работают так, чтобы не весь трафик сканировать, а только определенную его часть. И эта часть и является элементом фильтрации. Здесь мы указываем оба по дефолту, но всегда можно посмотреть какие у нас есть (выбор по стрелке) – ![](https://i.imgur.com/vlxrbOx.png) ![](https://i.imgur.com/s5ypjlF.png) Итоговая: ![](https://i.imgur.com/vLyMO2t.png) ![](https://i.imgur.com/nRWnffS.png) Получаем такие настройки интерфейсов: ![](https://i.imgur.com/kebUmcQ.png) ![](https://i.imgur.com/2OqOaKy.png) ![](https://i.imgur.com/JMgNbUl.png) ![](https://i.imgur.com/QPPBOdF.png) ![](https://i.imgur.com/1jruQDp.png) ![](https://i.imgur.com/9gM4c4t.png) Теперь посмотрим настройки для апдейтов: Они у нас обновились: ![](https://i.imgur.com/7JjU768.png) Глобальные настройки тоже все есть ![](https://i.imgur.com/nNBQlgn.png) Мы настроили сурикату, но не выбирали правила по которым она будет работать. Зайдем в настройки системы – карандашик – ![](https://i.imgur.com/26Abtgx.png) У нас есть lan setting - его настроили (глобал для LAN сеттинга) и есть lan categories - это фактически та ситема – какие правила будут работать на том или ином интерфейсе. Для надежности – выбираем ВСЕ! Select all и save (после обычно что-то ломается, или НЕ ломается) ![](https://i.imgur.com/ORaY1wt.png) Посмотрим, для примера, как выглядит правило: ![](https://i.imgur.com/2grmaZ3.png) Откроем и увидим код: ![](https://i.imgur.com/3nsqzlQ.png) Итак, в правиле есть: - «что делать»: действие, которое выполняется - Alert или дропать - протокол – udp - с какой сети и до какой сети $home - по какому порту - any - и в какую сеть это всё выходит: $external_net any Эта часть очень сильно похожа на FW. Далее: есть такая часть как меседж - ![](https://i.imgur.com/lv8DV7t.png) - основная часть нашей сигнатуры (правила) . правило может состоять из нескольких сигнатур (как наш пример) – - как называется сигнатура: ![](https://i.imgur.com/HEcAqds.png) - смотрится сам запрос, чтобы определить относится ли наш трафик к нашему запросу ![](https://i.imgur.com/bcZ3nXo.png) - эта часть легло копируется, и его можно просмотреть. У нас есть трафик, и если в трафике есть определенная последовательность данных, то это условие может сработать: - след.условие - depth 14 длина 14 - и еще одно: content: ![](https://i.imgur.com/sF8KvZK.png) Есть 2 глобальных условия, которые позволят за-алертить систему, чтобы не было ложно-положительных срабатываний Чтобы система не сработала «просто так» есть - - еще один контент: на каком расстоянии от начала данных distance 55 И следующая часть: ![](https://i.imgur.com/x4VidfV.png) - тип трафика, который идет внутри – здесь определяются дополнительные условия, которые работают в этом правиле ![](https://i.imgur.com/WFroVRB.png) - где можно посмотреть данные об уязвимости, (подробнее ) Главное: ![](https://i.imgur.com/BerVrJa.png) - нет, то в этом случае правило у нас не сработает Как FW система бы работала, если бы не было части в скобке (со 2 строчки и до конца) ![](https://i.imgur.com/ZSGl72X.png) Правила можно увидеть по пути: интерфейсы – настройка – LAN Rules: все, которые у нас есть – видно какие включены, какие нет ![](https://i.imgur.com/qY02qPB.png) ![](https://i.imgur.com/i4GsyjV.png) **Главное: не включать на pfSense чтобы он их отобразил.** При данном действии pfSense встанет в стопор и ничего нельзя будет сделать Здесь мы можем выбирать правила из категории «правил» ![](https://i.imgur.com/KHd4LBa.png) Можем запустить нашу сурикату: посмотрим как всё выглядит в работе ![](https://i.imgur.com/HhMc7mT.png) Теперь можно перейти в алерты: и увидим какие алерты начинают сыпаться ![](https://i.imgur.com/Zp0cgam.png) Видим, что есть алерты, просто информирующие нас, что чек-сумма не совпадает и такие можно отключить, чтобы не засоряли важные данные: ![](https://i.imgur.com/fUdZ53s.png) После отключения надо нажать Clear чтобы ничего не осталось когда наша суриката обнаружит, что есть какой-то вредоносный трафик – она запишет определенную информацию ДО, и определенную информацию ПОСЛЕ (просто запишет тот кусочек информации, который обнаружила)