# SIEM (ElasticSearch Logstash and Kibana)
#### ELK Stack
https://github.com/pfelk/pfelk
По статье воспользуемся командами для установки ELK (Данная инструкция не подойдет, если вы разворачиваете обычный ELK, в этом случае вам нужна инструкция для стандартного ELK):
* wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/scripts/pfelk-installer.sh
* chmod +x pfelk-installer.sh
* ./pfelk-installer.sh
Во время установки он будет запрашивать различные варианты, везде можно указывать Yes, также он запросит базу данных GeoIP рекомендуется указать MaxMind, для получения ключа и пароля нужно зарегистрироваться по ссылке(https://www.maxmind.com/en/geolite2/signup). В дальнейшем, указываем везде Yes. В конечном итоге должно появиться сообщение о том, что установка завершена.

2. Загрузка pfelk-templates + dashboard
Для корректного отображения нужных нам данных с pfsense, suricata, snort и т.д. Необходимо установить templates. Для этого воспользуемся следующими командами:
* wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/scripts/pfelk-template-installer.sh
* chmod +x pfelk-template-installer.sh
* ./pfelk-template-installer.sh
Темплейты должны корректно установиться.

Далее устанавливаем дашборды:
* wget https://raw.githubusercontent.com/pfelk/pfelk/main/etc/pfelk/scripts/pfelk-dashboadrd-installer.sh
* chmod +x pfelk-template-installer.sh
* ./pfelk-dashboard-installer.sh
После установки рекомендуется перезагрузить машину.
После этого, вы сможете перейти через браузер в кибану, где можно посмотреть дшборды и темплейты. Для перехода в кибану воспользуемсяс ссылкой: http://192.168.100.150:5601
**!!Запасной вариант скачать образ и залить в EVE-NG: https://drive.google.com/u/0/uc?id=1Eiq51oZNQ_GEXRwskyMQwJS0M5I_dD_J&export=download
3. Передача логов pfsense, surica, snort в ELK.
Для начала, настроим передачу логов собственно самих pfsense, для этого заходим в первый наш pfsense (тот на котором snort). Заходим на Web-интерфейс и там переходим по пути **Status > System Logs > Settings**. Листаем в конец и щелкаем галочку в поле **Send log messages to remote syslog service**, далее указываем все как на скриншоте, но обратите внимание на **ip и порт**, их нужно указывать свои, по умолчанию, для событий от pfsense доступны порты 5140 и 5141, можно указывать любой.

Сохраняем по кнопке в конце страницы.
Прежде, чем передавать логи со второго сервера необходимо разрешить на этом сервере для этого переходим по пути **Firewall>Rules** и во вкладке WAN добавляем разрешающее правило.

После этого заходим на наш второй pfsense, где suricata и настраиваем события аналогично как на первом. Проверяем, что события приходят. Заходим в kibana и проверяем.

Сразу же рекомендую внутри kibana создать новый index pattern, для этого слева по вкладке **kibana** выберите **index pattern** далее в открывшейся странице щелкните **create index pattern** далее в строку вводим **\*** и нажимае далее в строке Time field выбираем **@timestamp**. Данный индекс будет показывать все события, которые приходят в elasticsearch.
Теперь, приступаем к настройке suricata и snort.
Итак, для настройки suricata переходим на наш внешний pfsense и там направляемся по следующему пути: **Services>Suricata** останавливаем интерфейс по кнопке и заходим в его настройки. Там листаем ниже и находим поле **EVE Output Settings** там ставим галочку в графе **EVE JSON Log**, там указываем следующие поля:
**EVE Output type: FILE (в случае ошибки выбериет Syslog)
EVE Syslog Output Facility: AUTH
EVE Syslog Output Priority: NOTICE
EVE Log Alerts: Suricata will output Alerts via EVE**
И сохраняем настройки. Затем выходим назад и запускаем интерфейс для проверки. В elk должны приходить события с suricata, например, 
Переходим к Snort, для того, чтобы настроить сбор событий со snort проходим по пути **Services>Snort**, там аналогично отключаем интерфейс (если включен) и заходим в его настройки, там необходимо найти раздел **Alert Settings** и в нем поставить галочку **Send Alerts to System Log**
После включения данного параметра, события должны направляться в ELK.

!!!Обращаю внимание что для удобства все события можно рассматривать в дашбордах, где при определенной настройки, можно в удобном виде отслеживать блокировки по правилам (дашборды для suricata и snort были загружена ранее).
4. Передача событий из журналов Windows.
Теперь, нам необходимо настроить передачу событий аудита Windows, который мы рассматривали в прошлой инструкции. Как уже было отмечено в начале данной инструкции необходимо в инфраструктуру добавить еще одну машину Windows 10. После того, как добавили все необходимое в рабочую область. Переходим непосредственно к настройке.
В первую очередь, необходимо поправить настройки logstash нашего ELK для корректного отображения событий в kibana. Заходим в наш ELK и выполняем следующую команду: **nano /etc/pfelk/conf.d/50-outputs.conf**
В самом конце, нужно добавить следующие строчки:
**else {
elasticsearch {
hosts => ["http://localhost:9200"]
index => "pthers-%{+YYYY.MM}"
}
}**
Конечный вид конфига, должен выглядить следующим образом:

Сохраняем и выходим.
Перезапускаем службу logstash и проверяем, что все стартануло нормально командой:
**tail -f /var/log/logstash/logstash-plain.log**
В логах не должно быть ошибок и служба не должны вырубаться.

После данной настройки, переходим непосредственно к конфигурированию машин Windows на отправку событий в ELK. Для отравки событий мы будем использовать отдельное ПО для отправки событий в ELK с Windows под названием winlogbeat. Настроенное ПО можно скачать по ссылке: https://drive.google.com/file/d/1aC4-Dx4nVYS4Y2HMJ00tIEOWbH2CgU60/view?usp=sharing
Переносим winlogbeat на 3 наши машины (Windows Server, Windows 7 и Windows 10) любым удобным способом, можно загрузить по той же ссылке выше или загрузить через winscp.
Извлекаем из архива папку winlogbeat на системный диск (C: по умолачнрию) в корень. Заходим на него и открываем конфигурационный файл **winlogbeat.yml** внутри файла необходимо изменить только последнюю строчку, а именно **output.logstash: hosts: ["192.168.100.150:5044"]** вместо данного ip необходимо указать свой. Сохраняем и закрываем файл.
Затем, запускаем командную строку от имени администратора и в ней выполняем следующие команды:
> **cd ‘C:\Winlogbeat’**
> **PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-winlogbeat.ps1**
На вопрос запустить ли скрипт вводим R.

После этого, скрипт отработает.
Далее, там же в командной строке введите **services.msc** и руками запустите службу winlogbeat.

Аналогичные действия необходимо выполнить на остальных машинах windows. Если вы верно выполнили все действия в предыдущей инструкции то расширенный аудит у вас настроен верно.
**!!!!Особое внимание обращаю на синхронизацию времени машин в домене, если время настроено неверно, то события не будут появлятся, вам необходимо синхронизировать время на контроллере, на машинах, А ТАКЖЕ НА ELK (попробуйте запустить службу NTP, если она не запущена).**
В случае, если все настроено верно, то все события с машин будут успешно приходить в наш ELK.

5. Проведение атак на машины и просмотр их в ELK
Прежде чем проводить атаки, настроим дашборд ELK для удобного просмотра событий.
Для настройки можно открыть любое событие и выбрать поля, которые позволят нам удобно обозревать события. Для этого слева от поля содержащего событие есть кнопочка **Toogle column in table** с помощью нее можно формировать поля для обзора.

Я например, сформировал таким образом.

Попробуем провести атаку, например, Reverse Shell и посмотреть, увдим ли мы это событие.
Итак, по инструкции https://hackmd.io/vviES5n1R7Kd_645sdTiPQ создаем пейлоад и включаем сервер, файл с пейлоадом передаем на машину для запуска.
Запускаем файл на машине.


Теперь посмотрим события в ELK по данной машине(добавив фильтр).

Как видно из скриншота, появилось события запуска подозрительного процесса.
Таким образом, мы можем видеть различные атаки.
###### tags: `Information Security Systems`