# **Лабораторная работа №6. Отчет. [Видеодемонстрация](https://drive.google.com/file/d/1i-ArLglcI1TVCEK00-FCDQCJVyv2rXLI/view?usp=sharing)** **Системы анализа аномального трафика в корпоративной сети (Network traffic anomaly analysers)** **SELKS** - дистрибутив на основе debian, который предназначен для реализации систем обнаружения и предотвращения сетевых вторжений, а также для реагирования на выявленные угрозы и контроля сетевой безопасности. Доступен в виде переносимого пакета Docker Compose или как готовые установочные образы (файлы ISO) SELKS состоит из следующих основных компонентов: * **S** - Suricata IDS/IPS * **E** - Elasticsearch * **L** - Logstash * **K** - Kibana * **S** - Scirius * EveBox В данной лабораторной работе будет использоваться следующая топология: ![](https://hackmd.io/_uploads/ByFUAivLh.png) где * Kali - это Kali Linux, с которого мы будем генерировать трафик * SELKS-Debian - это Debian 11, где будет развернута SELKS с использованием Docker compose * Switch - на нем будет настроен мониторинг проходящего через него трафика и зеркалирование его на интерфейс e0/3, чтобы можно было следить за всем трафиком в сети **Предварительная настройка** 1. Pfsense, switch и Kali будут работать и без какой-либо предварительной настройки. Switch и Pfsense по умолчанию пропускают весь трафик, а Kali получит ip-адрес по dhcp от Pfsense. На Switch настроем зеркалирование трафика для передачи его SELKS![](https://hackmd.io/_uploads/B1hqotv8h.png) 2. Установка Docker на SELKS-Debian: Воспользуемся [официальной документацией](https://docs.docker.com/engine/install/debian/). Set up the repository ``` sudo apt-get update sudo apt-get install ca-certificates curl gnupg sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null echo \ "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \ "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` Install Docker Engine ``` sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin ``` Configure Docker to start on boot with systemd ``` sudo systemctl enable docker.service sudo systemctl enable containerd.service ``` 3. Установка SELKS Воспользуемся [гайдом](https://github.com/StamusNetworks/SELKS/wiki/Docker) ``` git clone https://github.com/StamusNetworks/SELKS.git cd SELKS/docker/ ./easy-setup.sh ``` После того как вы склонировали с гита и запустили скрипт, у вас начнется настройка SELKS ![](https://hackmd.io/_uploads/Bkqsn9w8n.png) Из важного вас попросят выбрать интерфейсы, которые будут прослушиваться, также можно включить автоматический перезапуск контейнеров. ![](https://hackmd.io/_uploads/HJ1k69v82.png) Далее нужно дождаться пока запуляться все контейнеры ![](https://hackmd.io/_uploads/B1NVTqvLn.png) и можно запускать их при помощи команды `sudo -E docker compose up -d` ![](https://hackmd.io/_uploads/B10T69v8n.png) Теперь осталось пройти по адресу `https://your.selks.IP.here/`, в моем случае это `https://192.168.28.99` > ВАЖНО: обратите внимание, что протокол должен быть https, ибо при вводе только ip адреса в браузере автоматически может использоваться протокол http Для входа используйте следующие данные: ``` user: selks-user password: selks-user ``` После авторизации, можно изучить функционал, рассмотрим Administration и Kibana ![](https://hackmd.io/_uploads/Sk5akjwLh.png) **Administration:** Здесь можно наглядно увидеть состояние контейнеров по их цвету, если все горят голубым, значит все запустилось корректно. В противном случае незапустившийся контейнер будет подсвечен красным или серым цветом, тогда придется решать проблему с его запуском. ![](https://hackmd.io/_uploads/rkmBxivL2.png) Во вкладке Sources можно увидеть скачанные правила или добавить новые ![](https://hackmd.io/_uploads/S1wlbsD8h.png) -> Add Public Source ![](https://hackmd.io/_uploads/ryAR-sPU3.png) Также во вкладке Rulesets можно составлять разные наборы правил из скачанных. **Kibana:** Discover - можно посмотреть перехваченный трафик, фильтровать его по различным параметрам, указывая также период времени, за который будут выводится данные. Также можно персонализировать поля, которые будут выводится в логах. На скриншоте мы просматриваем конкретно интерфейс ens3, куда прилетели логи при сканировании Pfsense (192.168.1.1) с Kali (192.168.1.102) ![](https://hackmd.io/_uploads/Byk2jjP82.png) А также логи при попытке пропинговать ya.ru c Kali ![](https://hackmd.io/_uploads/H1ik6sw8n.png) Можно заметить что данные действия не проходят напрямую через интерфейсы SELKS, а значит Switch успешно зеркалирует трафик. ![](https://hackmd.io/_uploads/Byr3AiDL2.png) Dashboard - позваляет визулизировать данные. Можно самостоятельно выбрать интересующие нас данные и способ представления (диаграммы, гистограммы и тд). ![](https://hackmd.io/_uploads/rkwIJhv8h.png) Также есть возможность добавления новых index pattern ![](https://hackmd.io/_uploads/Bk9_e3w8h.png) ![](https://hackmd.io/_uploads/HJxS0xhP82.png) После добавления, его можно будет выбрать из списка ![](https://hackmd.io/_uploads/SyB--nP8n.png) > ***Видеодемонстрацию описанных выше действий можно посмотреть по [ссылке](https://drive.google.com/file/d/1i-ArLglcI1TVCEK00-FCDQCJVyv2rXLI/view?usp=sharing)*** **Возможные проблемы при настройке:** 1. Отказывается запускаться контейнер logstash *Up (unhealthy)* 2. Отказывается запускаться контейнер elasticsearch *Up (unhealthy)*, *Restarting* 3. Отказывается запускаться контейнер kibana *Up (unhealthy)* 4. Отказывается запускатсья контейнер suricata *Restarting* Решение: 1. Посмотреть логи контейнера. Возможное решение - сменить image на более новый. (При работе в docker-compose.yml версия (тег) была изменена на 8.8.0) 2. Посмотреть логи контейнера. Возможно, не запустился logstash и возникла ошибка. Если статус *Up (unhealthy)*, а ошибок в логах нет, то нужно подождать, пока health check пройдет корректно. 3. Посмотреть логи контейнера. Обычно ошибка возникает из-за не запустившихся (или *Up (unhealthy)*) контейнеров elasticsearch и logstash. В случае отсутствия ошибок в логах, следует просто подождать. 4. Посмотреть логи контейнера. При работе позникла ошибка, которая присуща старым версиям image, версия (тег) была изменена в docker-compose.yml с amd64-master на latest