# 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. В конечном итоге должно появиться сообщение о том, что установка завершена. ![](https://i.imgur.com/135pjjQ.png) 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 Темплейты должны корректно установиться. ![](https://i.imgur.com/hUcbu7n.png) Далее устанавливаем дашборды: * 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, можно указывать любой. ![](https://i.imgur.com/hGOoyLA.png) Сохраняем по кнопке в конце страницы. Прежде, чем передавать логи со второго сервера необходимо разрешить на этом сервере для этого переходим по пути **Firewall>Rules** и во вкладке WAN добавляем разрешающее правило. ![](https://i.imgur.com/lWMxUPg.png) После этого заходим на наш второй pfsense, где suricata и настраиваем события аналогично как на первом. Проверяем, что события приходят. Заходим в kibana и проверяем. ![](https://i.imgur.com/aGUQ53c.png) Сразу же рекомендую внутри 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, например, ![](https://i.imgur.com/3MsIWav.png) Переходим к Snort, для того, чтобы настроить сбор событий со snort проходим по пути **Services>Snort**, там аналогично отключаем интерфейс (если включен) и заходим в его настройки, там необходимо найти раздел **Alert Settings** и в нем поставить галочку **Send Alerts to System Log**![](https://i.imgur.com/pxau4hY.png) После включения данного параметра, события должны направляться в ELK. ![](https://i.imgur.com/13Txmti.png) !!!Обращаю внимание что для удобства все события можно рассматривать в дашбордах, где при определенной настройки, можно в удобном виде отслеживать блокировки по правилам (дашборды для 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}" } }** Конечный вид конфига, должен выглядить следующим образом: ![](https://i.imgur.com/ra5PdOr.png) Сохраняем и выходим. Перезапускаем службу logstash и проверяем, что все стартануло нормально командой: **tail -f /var/log/logstash/logstash-plain.log** В логах не должно быть ошибок и служба не должны вырубаться. ![](https://i.imgur.com/UtMPFG0.png) После данной настройки, переходим непосредственно к конфигурированию машин 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. ![](https://i.imgur.com/1sppixd.png) После этого, скрипт отработает. Далее, там же в командной строке введите **services.msc** и руками запустите службу winlogbeat. ![](https://i.imgur.com/mNG9uuW.png) Аналогичные действия необходимо выполнить на остальных машинах windows. Если вы верно выполнили все действия в предыдущей инструкции то расширенный аудит у вас настроен верно. **!!!!Особое внимание обращаю на синхронизацию времени машин в домене, если время настроено неверно, то события не будут появлятся, вам необходимо синхронизировать время на контроллере, на машинах, А ТАКЖЕ НА ELK (попробуйте запустить службу NTP, если она не запущена).** В случае, если все настроено верно, то все события с машин будут успешно приходить в наш ELK. ![](https://i.imgur.com/cEVGup2.png) 5. Проведение атак на машины и просмотр их в ELK Прежде чем проводить атаки, настроим дашборд ELK для удобного просмотра событий. Для настройки можно открыть любое событие и выбрать поля, которые позволят нам удобно обозревать события. Для этого слева от поля содержащего событие есть кнопочка **Toogle column in table** с помощью нее можно формировать поля для обзора. ![](https://i.imgur.com/9x0pTyL.png) Я например, сформировал таким образом. ![](https://i.imgur.com/WWRQzJW.png) Попробуем провести атаку, например, Reverse Shell и посмотреть, увдим ли мы это событие. Итак, по инструкции https://hackmd.io/vviES5n1R7Kd_645sdTiPQ создаем пейлоад и включаем сервер, файл с пейлоадом передаем на машину для запуска. Запускаем файл на машине. ![](https://i.imgur.com/1BPqpmc.png) ![](https://i.imgur.com/IS1jCmy.png) Теперь посмотрим события в ELK по данной машине(добавив фильтр). ![](https://i.imgur.com/tm5Z4wx.png) Как видно из скриншота, появилось события запуска подозрительного процесса. Таким образом, мы можем видеть различные атаки. ###### tags: `Information Security Systems`