# **Лабораторная работа №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
В данной лабораторной работе будет использоваться следующая топология:

где
* 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
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

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

Далее нужно дождаться пока запуляться все контейнеры

и можно запускать их при помощи команды `sudo -E docker compose up -d`

Теперь осталось пройти по адресу `https://your.selks.IP.here/`, в моем случае это `https://192.168.28.99`
> ВАЖНО: обратите внимание, что протокол должен быть https, ибо при вводе только ip адреса в браузере автоматически может использоваться протокол http
Для входа используйте следующие данные:
```
user: selks-user
password: selks-user
```
После авторизации, можно изучить функционал, рассмотрим Administration и Kibana

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

Во вкладке Sources можно увидеть скачанные правила или добавить новые

-> Add Public Source

Также во вкладке Rulesets можно составлять разные наборы правил из скачанных.
**Kibana:**
Discover - можно посмотреть перехваченный трафик, фильтровать его по различным параметрам, указывая также период времени, за который будут выводится данные. Также можно персонализировать поля, которые будут выводится в логах.
На скриншоте мы просматриваем конкретно интерфейс ens3, куда прилетели логи при сканировании Pfsense (192.168.1.1) с Kali (192.168.1.102)

А также логи при попытке пропинговать ya.ru c Kali

Можно заметить что данные действия не проходят напрямую через интерфейсы SELKS, а значит Switch успешно зеркалирует трафик.

Dashboard - позваляет визулизировать данные. Можно самостоятельно выбрать интересующие нас данные и способ представления (диаграммы, гистограммы и тд).

Также есть возможность добавления новых index pattern


После добавления, его можно будет выбрать из списка

> ***Видеодемонстрацию описанных выше действий можно посмотреть по [ссылке](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