• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья #BlueTeam SIEM Без Границ: Хакерская Эстетика в Мире Безопасности

defaultuser0

anime hater
Пользователь
Регистрация
07.07.2022
Сообщения
213
Реакции
432
Депозит
0.0003
SIEM Без Границ: Хакерская Эстетика в Мире Безопасности
Ловим хакеров и плохих парней с использованием SIEM + honeypot pt.1

Авторство: defaultuser0​

Источник: xss.pro​

Приветствую форумчане! В этой серии статей под хэштегом #BlueTeam мы будем познавать все тайны белых шляп. Конкретно эта статья посвященная SIEM будет разбита на 3 части:
  1. Знакомство с SIEM + установка
  2. Доработка SIEM + написание правил
  3. Анализ инцедентов с использованием SIEM
Знания представленные в этих 3 статьях будут охватывать много аспектов и тянуть на уровень аналитика L2 - Инженера SIEM. Любой кто осилит этот материал, сможет спокойно прединдовать на позиции аналитиков/инженеров.
Задаваясь вопросом кому будет интересны эти статьи? Можно ответить: Начиная от продвинутых хакреов - заканичвая новичками в сфере ИБ, которы смогут получить опытв случаи если все прочитать + понять + повторить и бесценный материал о котором нигде не напишут, а для хакеров это прекрасная возможность увидеть как все это выглядить на другой стороне.
Так же перед началом хотел поблагодраить всех, кто оставляет комментарии под моими постами и ставит лайки! - Спасибо вам большое.
Отдельно хотел поблагодарить ice80 и admin за пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam! - Спасибо вам огромное!

Один великий полководец сказал:
"Знай врага и знай себя: тогда в тысяче битв не потерпишь поражения.“
Это становиться понятно именно сейчас, когда в современном мире так много видов и техник атак, что порой приходиться задаваться вопросами - Кто? - Как? - Зачем?
Именно для этого нужны Honeypot - "горшочек с мёдом" - ресурс, компьютер, камера, принтер, роутер = представляющий собой приманку для злоумышленников.
В этой серии статей я буду описывать как развернуть полноценную систему защиты с использованием honeypot + SIEM, для того чтобы всегда знать врага в лицо.
Того саммого полководца звали Сунь цзы. Искусство войны
1704984333985.png

Знакомство с SIEM
Начнем как всегда с теории и закончим практикой!
SIEM (Система управления информационной безопасностью и событиями безопасности) - это решение, позволяющее организациям обнаруживать, анализировать и устранять угрозы безопасности раньше, чем они нанесут ущерб бизнесам. На рынке ИБ существуют множество различных SIEM, как коммерческих, так и опенсурсных. Самые популярные SIEM:
  • Elastic stack (ELK SIEM)
  • MaxPatrol SIEM
  • Kaspersky SIEM
  • IBM Qradar SIEM
  • Wazuh SIEM
Если описывать простыми словами, то SIEM это система которая выявляет инцеденты информационной безопасности, надо подметить она не предотвращает, а просто показывает где происходит что то не то. Дальше с этими данными работают аналитики SOC/CERT, если условно в момент анализа инцедента будет найден вредоносный файл, то уже будут подключаться вирусные аналитики. Вот это и есть принцип взаимодействия с SIEM. Им пользуються не только сотрудники SOC'a, а так же инженеры, вирусные аналитики, специалисты форензии, специалисты TI и тд.
Так же перед началом изучения такого материала нужно ознакомиться с базовыми понятиями. (все же я надеюсь что рядовой читатель уже имеет базовые знания программирования, администрирования и понимания работы сетей и протоколов)

Инцидент информационной безопасности - Любое непредвиденное или нежелательное событие, которое может нарушить деятельность или информационную безопасность.
Событие информационной безопасности - Идентифицированное возникновение состояния системы, услуги или сети, указывающее на возможное нарушение политики информационной безопасности, отказ защитных мер, а также возникновение ранее неизвестной ситуации, которая может быть связана с безопасностью.
Главная цель систем информационной безопасности – гарантия защиты данных от внешних и внутренних угроз.

Начнем с выбора SIEM, из всего ассортимента я лично предпочитаю Elastic stack, просто потому что он опенсурс + им пользуються во многих компаниях начиная от ИБ контор, зкакничвая Тинькофф Банком.
1704985497874.png
Окей мы опредились с SIEM и это будет ELK! Так что же это за монстор такой?
ELK — это аббревиатура из названий трех продуктов: Elasticsearch, Logstash и Kibana. Вместе все это добро обзываеться как Ёлка, или Эластик. Эти три продукта (4) состовляют базу SIEM и тут нужно по подробнее.
1704986795043.png

Elasticsearch — это ядро Elastic Stack. Поисковая система, которая хранит неструктурированные данные и выдаёт их по запросу..

Logstash — это инструмент сбора, анализа логов и других типов данных. Подключается напрямую к Elasticsearch и загружает данные туда.

Kibana — это интерфейс для представления данных из Elasticsearch. В Kibana есть настриваемые представления: линейные графики, секторные диаграммы, географических карты.

Filebeat — это универсальный сборщик логов с удалённых систем и сервисов. Нативно поставляет логи в Logstash или напрямую в Elasticsearch. Имеет готовые обработчики для логов различных форматов: системные, Nginx, Apache, MySQL и других.
1704986935017.png

Filebeat агент на хосты, он как бы формально не входит в стек elk, но без него елк не елк... ну вы поняли -_0
У Эластика есть такое понятие как ноды, мастер ноды, кластер. Говорят коротко у вас есть возможность горизонтального масштабирования. Условно когда ваша SIEM разрастеться до сбора и анализа логов несколько тысячи хостов и ваша ёлка будет долго отвечать на ваши запросы + вероятно что сам эластик просто упадет от нагрузки, у вас есть возможность добавить ноды для распределения нагрузки на кластер. В любом случаии если что то не понятно, внизу будут линки на оффициальную документацию Эластика.
Теперь мы знаем базу и перейдем к развертыванию всего этого добра.


Установка SIEM
Сразу перед установкой нужно определиться с железом, у меня будет 1 сервер (Debian) на котором я разверну elastic, logstash, kibana - это не совсем хороший пример, но для образца сойдет:
  • 4 core
  • 8gb RAM
  • SSD 1TB
1705016248319.png
Требования к хосту конечно будут разными в зависимости от ваших планов, но где то в инете я нашел эту табличку и думаю что в действительности она подходит под нынешние кретерии. Опять же если вы разварачиваете как тестовый стенд для себя ( своего проекта ) то хватит банальных 4 ядер 8гб ОЗУ и 250гб ССД, но если вы пытаетесь развернуть что то большое то лучше присмотреться к покупке отдельных серверов. Когда я работал в SOC'e у нас были целые две стойки в дата-центре, т.к Эластику не хватло мощнастей, но вы всегда можете масштабировать эластик добавляя ноды!
минимальныерекомендуемые
CPU24+
Memory6 Gb8+ Gb
Disk10 Gb10+ Gb

При установке Elastic Stack вы должны использовать одну и ту же версию для всего стека.
Так же забыл написать что Elasticsearch построен с использованием Java и всеми его выходящими. В комплекте идет JVM и тут ниче менять не надо, JVM является рекомендуемой.
Не используйте сторонние агенты Java, подключаемые к JVM. Эти агенты могут снизить производительность Elasticsearch, включая зависание или сбой узлов.

Требования к сети​

Чтобы установить Elastic Stack локально, для каждого компонента должны быть открыты следующие порты.
Default port​
Component​
3002​
Enterprise Search​
5044​
Elastic Agent → Logstash
Beats → Logstash​
5601​
Kibana
Elastic Agent → Fleet
Fleet Server → Fleet​
8220​
Elastic Agent → Fleet Server
APM Server​
9200-9300​
Elasticsearch REST API​
9300-9400​
Elasticsearch node transport and communication​
9600-9700​
Logstash REST API​
Подключаемся к нашему серверу и скачиваем все добро с оффициального сайта Elastic -> сайт
На голый сервер Debian устанавливаем gpg
1705016618796.png
Код:
apt install gpg
Загружаем и устонавливаем публичный ключ
Код:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg
1705016767535.png

Дальше поставим все из APT репозитория:

Код:
sudo apt-get install apt-transport-https


1705016921236.png
Код:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
1705016950110.png
Поверьте так намного легче, нежели ставить это все руками =)
Ну и теперь основное, ставим Эластик
Код:
sudo apt-get update && sudo apt-get install elasticsearch
1705017075940.png
Не спешите прописывать "clear" в коносле, так как тут супер важная информация
1705017283636.png
Особенна важна та часть где сгенерировван пароль с рутправами для эластика.
Это все добро теперь надо запустить и добавить в автозапуск.
Код:
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
На моменте старта хост будет долго прогружаться, не переживайте просто дайте ему пару минут и с помощью команды можно узнать жив ли он?
Код:
systemctl status elasticsearch.service
1705017609286.png
Мы молодцы, но нужно убедиться что Эластик работает, для этого нужно отправить курлом (curl) запрос с нашим ключом о которм я писал вышеВ сырой дебиан нету курла поэтому apt install curl:
Код:
curl -k --user elastic:'ваш ключ' https://127.0.0.1:9200
1705018073639.png
Нам тут также оставили посхалочку: "You Know, for Search"
Окей сама поисковая система работает, мы убедились, теперь поставим Кибану и Логстеш.
Тут все по классике:
Код:
apt update && apt install kibana

1705018412332.png
Так же запускаем нашу кибану и добавляем в атвтозагрузку + сразу смотрим состояние демона(процесса).
Код:
systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana.service
systemctl status kibana.service
1705018591072.png

Пока не радуемся, нам осталось еще поставить логстешь.
Тут по классике
apt update && apt install logstash
1705019230354.png
Все как и везде, запускаем + добавляем в автозагрузку + сразу же смотрим состояние демона.
Код:
systemctl daemon-reload
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service

1705019390976.png

У логстеша есть два конфигурационных файла /etc/logstash/logstash.yml и наши конфиги /etc/logstash/conf.d/наш конфиг
Логика этого конфига как и любого другого yml cfg файла, если нам что то нужно то снимаем комментарий (стираем решетку).
Нам пока что нужен только 2 конфиг.
Открываем через vim
конечно же и вима нету в сыром дебиане, поэтому apt install vim
vim /etc/logstash/conf.d/input.conf
и добавляем туда
Код:
input {
  beats {
    port => 5044
  }
}

Это нужно для приёма информации агентов(хостов)
Не далеко уходя создаем второй конфиг файл vim /etc/logstash/conf.d/output.conf
Тут нам понадобиться тот самы пароль который вы получили при установке Эластика, что касаеться SSL/TLS, тут тоже можно его добавить
cacert => "/etc/elasticsearch/certs/http_ca.crt"
1705049720420.png
Код:
output {
  elasticsearch {
    hosts => ["https://ВАШ IP adrs:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}"
    action => "create"
    user => "elastic"
    password => "Ваш Pass"
    cacert => "/etc/logstash/certs/http_ca.crt"
  }
}
Вообще говоря про прод "наш любимый" то вот эту шизофрению с правами суперюзера надо урезать (Создать новую учетку и урезать ей права), ну и само собой поменять тут в конфиге где стоит user и password на соответствующие креды учетки.
Эти настройки позволят нам передавать все данные в elasticsearch под указанным индексом с маской в виде даты. Это в будующем будет очень удобно при анализе логов где будет нормальная разбивка по времени!!

Я совсем забыл про настройку elasticsearch, тут мы быстро все поправим!
Обзываем кластер как хотим, я лично назвал его xss-best-forum
1705022897687.png

Тут как я говорил есть такие вещи как ноды, пока сильно не загружайте голову, представляю ваши лица которые первый раз это все видят и тут какие-то ноды кластеры ху**еры -_0.
1705023061031.png

И самое главное, из-за чего у вас кластер может не запахать это:
Поменяйте с 192.168.0.1 на 127.0.0.1
1705023206887.png

Поменяйте с 192.168.0.1 на 127.0.0.1
1705023243263.png

Самое главное правило Эластика это- после любого изменения конфигов systemctl restart ******.service
systemctl restart elasticsearch.service
Готово, мы можем поднять нашу веб морду для этого нужно чутка покапаться в конфигах. Под раздачу попадает конфиг Кибаны - /etc/kibana/kibana.yml
Сразу прописываем эти команды, эти серты кибаны, без них она не заработает
Код:
cp -R /etc/elasticsearch/certs /etc/kibana
chown -R root:kibana /etc/kibana/certs
Путь до них = /etc/kibana/certs/
Открываем его через vim.
Код:
vim /etc/kibana/kibana.yml
1705018978716.png
Тут мы можем поправить пару вещей, во первых если у вы используюте отдельный сервер эластиксерча то нужно тут снять решетку и прописать адрес. Я ничего не меняю т.к. использую один сервер со всем. Опять же хочу напомнить для полноценного прода нужно разбивать это все по отдельным серверам, такой колхоз как у меня возможен только для тестовых стендов.
Убираем решетку и добавляем к http + s = https
1705024648051.png

Они идут вместе с ЕЛК поэтому тут ОБЯЗАТЕЛЬНО! делаем вот так
1705024615131.png

А вот это интересный момент, если опять же вы поднимаете прод и хотите чтобы все было по феншую, то вам нужен серт.
1705019788416.png

И самое главное вверху конфигурационного файла есть очень важная вещь, тут не забываем поменять, чтобы можно было коннектиться к панели не только из локалки. (Ну это только тут, в продакшене какого нибудь сока, все обернуто в локалку + впн и конечно же никакого доступа из вне)
1705019914038.png

Тут пишем "http://ip_сервера:5601"
https если включили tls

1705024720942.png

Так же нужно настроить аунтифкиацию в эластик. Для этого нужно создать внутреннего пользователя kibana_system
Код:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
1705020136342.png
Полученные креды переносим сюда и ОЧЕНЬ ВАЖНО разкомментировать строку с elasticsearch.host у нас есть выбор получать данные с агентов в логстеш или в эластик, чисто для теста сразу направим выводв в эластик!!!
1705024758371.png
Мы молодцы и можем ребутнуть процесс чтобы все встало на свои места
Код:
systemctl restart kibana.service
1705020225834.png
Теперь открываем наш браузер и пишем в адрессную строку "http://ip_сервера:5601"
https если включили tls

Можем увидеть такое в браузере - это плохо, смотрим что происходит с кибаной и почему она нам не дает войти =)...

1705020377053.png


Открываем статус кибаны и видим что там че то с нодой не может коннекшен (тут я дурак и забыл просто указать путь до сертификатов)
Все это дело под рестар вместе с эластиком и логстешем.
1705023598053.png

1705025337674.png

Открываем браузер заходим на панель и видим это..
1705025396408.png
Тут нужны креды от elastic аккаунта (мы их получили еще в самом начале при установке).
1705025560113.png
Вот мы и подняли ELK, это еще не SIEM в базовом ее понимании, но уже можно радоваться
1705025591041.png

У нас тут все работает по логам с сервера понимаем что пашет отлично, но теперь нам нужны боевые логи хостов.
И вот тут на сцену выходит Beats.
Как я уже писал выше Beats это агент на хосты который будет собирать все чихи нашего устройства и отправлять их в Logstash, вот на этом моменте нам нужны будут уже правила по которым ELK сможет выявлять вредоносную активность, а Кибана отрисовывать это все в красивые графики.
Начнем с настройки Beats на нашем сервере, так же у нас будет для начала виртуалка у которой будет стоять этот агент.
Windows - winlog beat
Unix - filebeat
Щас в виде тестового стенда я буду использовать свою виртуалку и поставлю на нее filebeat агента, и посмотрим как это все тут отрисовываеться и попадают ли логи вообще в логстеш?. Сам агент можно скачать тут -> Сайт
Или если линукс apt install filebeats
У нас есть выбор транслировать логи с агентов в эластик или помещать их в логстеш, чисто для быстроты эксперемента поставим все на эластик
Перед тем как скормить агента виртуалке само собой нужно подредачить конфиг файл. Он лежит в папке и называеться filebeats.yml
В конфиругационном файле вам обязательно нужно, обязательно указать ваш хост ( не оставляйте локалхост ) прописывайте руками адрес сервера эластика, даже если он в локалке, выставляйте руками https и два важных момента дать креды супер пользователя и обязательно прописать ssl.certificate_authoities: Без этого агент файлбита просто не будет передавать логи, серты лежат по пути /etc/elasticsearch/certs/http_ca.crt


1705045190442.png
Запускаем агента файлбита на хосте и заходим в панель где выставляем нужный датавью ( ну чтобы видеть имменно наши логи с filebeat) и сохраняем.
Как видим filebeat 8.11.4 активно дает логи, но пока это все очень в сыром виде и никуда нормально не дениться..
1705045076364.png


Теперь у нас есть полноценная база для напиание правил и уже к этому моменту можно подключать IDS/IPS, самый лучший совет это читайте логи, особенно логстеша..
Всем спасибо кто дочитал!! Ждите вторую часть.
Полезная инфа - https://www.elastic.co/guide/en/elasticsearch/reference/8.11/elasticsearch-intro.htmlБезработному блютимеру на ход ноги - bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f
 

Вложения

  • 1705024551008.png
    1705024551008.png
    2.6 КБ · Просмотры: 33
  • 1705022430228.png
    1705022430228.png
    28.9 КБ · Просмотры: 19
  • 1705021358040.png
    1705021358040.png
    32.8 КБ · Просмотры: 20
  • 1705020521830.png
    1705020521830.png
    5.7 КБ · Просмотры: 22
  • 1705025378025.png
    1705025378025.png
    37.8 КБ · Просмотры: 24
  • 1705024807426.png
    1705024807426.png
    27.5 КБ · Просмотры: 23
  • 1705016795584.png
    1705016795584.png
    2.6 КБ · Просмотры: 19
  • 1705016108368.png
    1705016108368.png
    68.3 КБ · Просмотры: 20
  • 1704985445677.png
    1704985445677.png
    26.5 КБ · Просмотры: 25
Последнее редактирование:
Пожалуйста, обратите внимание, что пользователь заблокирован
5dce99d08d95eee3e0a0fe22b0cba2a43155ef1f2f3a296de65f1c160d040d12
200usd -> bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f
пишите для нас еще, спасибо вам.
 
Ждем вторую часть.
Есть вариант рассказать про защиты на почтовых шлюзах?
Привет, конечно есть. Думаю после того как фулл siem поставлю на ноги и допишу статьи. Почтари так же моняторяться siem + фишинг фильтрами, я напишу статью про это
 
пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam!

0d06d524554734d1137bce197fffc872764cb45df4f9ac3d26603c19e4d0b0ba

еще немного мотивации, пиши еще )
 
SIEM Без Границ: Хакерская Эстетика в Мире Безопасности
Ловим хакеров и плохих парней с использованием SIEM + honeypot pt.1

Авторство: defaultuser0​

Источник: xss.pro​

Приветствую форумчане! В этой серии статей под хэштегом #BlueTeam мы будем познавать все тайны белых шляп. Конкретно эта статья посвященная SIEM будет разбита на 3 части:
  1. Знакомство с SIEM + установка
  2. Доработка SIEM + написание правил
  3. Анализ инцедентов с использованием SIEM
Знания представленные в этих 3 статьях будут охватывать много аспектов и тянуть на уровень аналитика L2 - Инженера SIEM. Любой кто осилит этот материал, сможет спокойно прединдовать на позиции аналитиков/инженеров.
Задаваясь вопросом кому будет интересны эти статьи? Можно ответить: Начиная от продвинутых хакреов - заканичвая новичками в сфере ИБ, которы смогут получить опытв случаи если все прочитать + понять + повторить и бесценный материал о котором нигде не напишут, а для хакеров это прекрасная возможность увидеть как все это выглядить на другой стороне.
Так же перед началом хотел поблагодраить всех, кто оставляет комментарии под моими постами и ставит лайки! - Спасибо вам большое.
Отдельно хотел поблагодарить ice80 и admin за пожертвования, благодаря им у меня есть желание и мотивация писать о том, что не пишут рядовые бойцы BlueTeam! - Спасибо вам огромное!

Один великий полководец сказал:
"Знай врага и знай себя: тогда в тысяче битв не потерпишь поражения.“
Это становиться понятно именно сейчас, когда в современном мире так много видов и техник атак, что порой приходиться задаваться вопросами - Кто? - Как? - Зачем?
Именно для этого нужны Honeypot - "горшочек с мёдом" - ресурс, компьютер, камера, принтер, роутер = представляющий собой приманку для злоумышленников.
В этой серии статей я буду описывать как развернуть полноценную систему защиты с использованием honeypot + SIEM, для того чтобы всегда знать врага в лицо.
Того саммого полководца звали Сунь цзы. Искусство войны
Посмотреть вложение 73280
Знакомство с SIEM
Начнем как всегда с теории и закончим практикой!
SIEM (Система управления информационной безопасностью и событиями безопасности) - это решение, позволяющее организациям обнаруживать, анализировать и устранять угрозы безопасности раньше, чем они нанесут ущерб бизнесам. На рынке ИБ существуют множество различных SIEM, как коммерческих, так и опенсурсных. Самые популярные SIEM:
  • Elastic stack (ELK SIEM)
  • MaxPatrol SIEM
  • Kaspersky SIEM
  • IBM Qradar SIEM
  • Wazuh SIEM
Если описывать простыми словами, то SIEM это система которая выявляет инцеденты информационной безопасности, надо подметить она не предотвращает, а просто показывает где происходит что то не то. Дальше с этими данными работают аналитики SOC/CERT, если условно в момент анализа инцедента будет найден вредоносный файл, то уже будут подключаться вирусные аналитики. Вот это и есть принцип взаимодействия с SIEM. Им пользуються не только сотрудники SOC'a, а так же инженеры, вирусные аналитики, специалисты форензии, специалисты TI и тд.
Так же перед началом изучения такого материала нужно ознакомиться с базовыми понятиями. (все же я надеюсь что рядовой читатель уже имеет базовые знания программирования, администрирования и понимания работы сетей и протоколов)

Инцидент информационной безопасности - Любое непредвиденное или нежелательное событие, которое может нарушить деятельность или информационную безопасность.
Событие информационной безопасности - Идентифицированное возникновение состояния системы, услуги или сети, указывающее на возможное нарушение политики информационной безопасности, отказ защитных мер, а также возникновение ранее неизвестной ситуации, которая может быть связана с безопасностью.
Главная цель систем информационной безопасности – гарантия защиты данных от внешних и внутренних угроз.

Начнем с выбора SIEM, из всего ассортимента я лично предпочитаю Elastic stack, просто потому что он опенсурс + им пользуються во многих компаниях начиная от ИБ контор, зкакничвая Тинькофф Банком.
Окей мы опредились с SIEM и это будет ELK! Так что же это за монстор такой?
ELK — это аббревиатура из названий трех продуктов: Elasticsearch, Logstash и Kibana. Вместе все это добро обзываеться как Ёлка, или Эластик. Эти три продукта (4) состовляют базу SIEM и тут нужно по подробнее.

Elasticsearch — это ядро Elastic Stack. Поисковая система, которая хранит неструктурированные данные и выдаёт их по запросу..

Logstash — это инструмент сбора, анализа логов и других типов данных. Подключается напрямую к Elasticsearch и загружает данные туда.

Kibana — это интерфейс для представления данных из Elasticsearch. В Kibana есть настриваемые представления: линейные графики, секторные диаграммы, географических карты.

Filebeat — это универсальный сборщик логов с удалённых систем и сервисов. Нативно поставляет логи в Logstash или напрямую в Elasticsearch. Имеет готовые обработчики для логов различных форматов: системные, Nginx, Apache, MySQL и других.

Filebeat агент на хосты, он как бы формально не входит в стек elk, но без него елк не елк... ну вы поняли -_0
У Эластика есть такое понятие как ноды, мастер ноды, кластер. Говорят коротко у вас есть возможность горизонтального масштабирования. Условно когда ваша SIEM разрастеться до сбора и анализа логов несколько тысячи хостов и ваша ёлка будет долго отвечать на ваши запросы + вероятно что сам эластик просто упадет от нагрузки, у вас есть возможность добавить ноды для распределения нагрузки на кластер. В любом случаии если что то не понятно, внизу будут линки на оффициальную документацию Эластика.
Теперь мы знаем базу и перейдем к развертыванию всего этого добра.


Установка SIEM
Сразу перед установкой нужно определиться с железом, у меня будет 1 сервер (Debian) на котором я разверну elastic, logstash, kibana - это не совсем хороший пример, но для образца сойдет:
  • 4 core
  • 8gb RAM
  • SSD 1TB
Требования к хосту конечно будут разными в зависимости от ваших планов, но где то в инете я нашел эту табличку и думаю что в действительности она подходит под нынешние кретерии. Опять же если вы разварачиваете как тестовый стенд для себя ( своего проекта ) то хватит банальных 4 ядер 8гб ОЗУ и 250гб ССД, но если вы пытаетесь развернуть что то большое то лучше присмотреться к покупке отдельных серверов. Когда я работал в SOC'e у нас были целые две стойки в дата-центре, т.к Эластику не хватло мощнастей, но вы всегда можете масштабировать эластик добавляя ноды!
минимальныерекомендуемые
CPU24+
Memory6 Gb8+ Gb
Disk10 Gb10+ Gb

При установке Elastic Stack вы должны использовать одну и ту же версию для всего стека.
Так же забыл написать что Elasticsearch построен с использованием Java и всеми его выходящими. В комплекте идет JVM и тут ниче менять не надо, JVM является рекомендуемой.
Не используйте сторонние агенты Java, подключаемые к JVM. Эти агенты могут снизить производительность Elasticsearch, включая зависание или сбой узлов.

Требования к сети​

Чтобы установить Elastic Stack локально, для каждого компонента должны быть открыты следующие порты.
Default port​
Component​
3002​
Enterprise Search​
5044​
Elastic Agent → Logstash
Beats → Logstash​
5601​
Kibana
Elastic Agent → Fleet
Fleet Server → Fleet​
8220​
Elastic Agent → Fleet Server
APM Server​
9200-9300​
Elasticsearch REST API​
9300-9400​
Elasticsearch node transport and communication​
9600-9700​
Logstash REST API​
Подключаемся к нашему серверу и скачиваем все добро с оффициального сайта Elastic -> сайт
На голый сервер Debian устанавливаем gpg
Код:
apt install gpg
Загружаем и устонавливаем публичный ключ
Код:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg

Дальше поставим все из APT репозитория:

Код:
sudo apt-get install apt-transport-https


Код:
echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/8.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-8.x.list
Поверьте так намного легче, нежели ставить это все руками =)
Ну и теперь основное, ставим Эластик
Код:
sudo apt-get update && sudo apt-get install elasticsearch
Не спешите прописывать "clear" в коносле, так как тут супер важная информация
Особенна важна та часть где сгенерировван пароль с рутправами для эластика.
Это все добро теперь надо запустить и добавить в автозапуск.
Код:
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl start elasticsearch.service
На моменте старта хост будет долго прогружаться, не переживайте просто дайте ему пару минут и с помощью команды можно узнать жив ли он?
Код:
systemctl status elasticsearch.service
Мы молодцы, но нужно убедиться что Эластик работает, для этого нужно отправить курлом (curl) запрос с нашим ключом о которм я писал вышеВ сырой дебиан нету курла поэтому apt install curl:
Код:
curl -k --user elastic:'ваш ключ' https://127.0.0.1:9200
Нам тут также оставили посхалочку: "You Know, for Search"
Окей сама поисковая система работает, мы убедились, теперь поставим Кибану и Логстеш.
Тут все по классике:
Код:
apt update && apt install kibana
Так же запускаем нашу кибану и добавляем в атвтозагрузку + сразу смотрим состояние демона(процесса).
Код:
systemctl daemon-reload
systemctl enable kibana.service
systemctl start kibana.service
systemctl status kibana.service

Пока не радуемся, нам осталось еще поставить логстешь.
Тут по классике
apt update && apt install logstash
Все как и везде, запускаем + добавляем в автозагрузку + сразу же смотрим состояние демона.
Код:
systemctl daemon-reload
systemctl enable logstash.service
systemctl start logstash.service
systemctl status logstash.service


У логстеша есть два конфигурационных файла /etc/logstash/logstash.yml и наши конфиги /etc/logstash/conf.d/наш конфиг
Логика этого конфига как и любого другого yml cfg файла, если нам что то нужно то снимаем комментарий (стираем решетку).
Нам пока что нужен только 2 конфиг.
Открываем через vim
конечно же и вима нету в сыром дебиане, поэтому apt install vim
vim /etc/logstash/conf.d/input.conf
и добавляем туда
Код:
input {
  beats {
    port => 5044
  }
}

Это нужно для приёма информации агентов(хостов)
Не далеко уходя создаем второй конфиг файл vim /etc/logstash/conf.d/output.conf
Тут нам понадобиться тот самы пароль который вы получили при установке Эластика, что касаеться SSL/TLS, тут тоже можно его добавить
cacert => "/etc/elasticsearch/certs/http_ca.crt"
Код:
output {
  elasticsearch {
    hosts => ["https://ВАШ IP adrs:9200"]
    index => "%{[@metadata][beat]}-%{[@metadata][version]}"
    action => "create"
    user => "elastic"
    password => "Ваш Pass"
    cacert => "/etc/logstash/certs/http_ca.crt"
  }
}
Вообще говоря про прод "наш любимый" то вот эту шизофрению с правами суперюзера надо урезать (Создать новую учетку и урезать ей права), ну и само собой поменять тут в конфиге где стоит user и password на соответствующие креды учетки.
Эти настройки позволят нам передавать все данные в elasticsearch под указанным индексом с маской в виде даты. Это в будующем будет очень удобно при анализе логов где будет нормальная разбивка по времени!!

Я совсем забыл про настройку elasticsearch, тут мы быстро все поправим!
Обзываем кластер как хотим, я лично назвал его xss-best-forum
Посмотреть вложение 73362
Тут как я говорил есть такие вещи как ноды, пока сильно не загружайте голову, представляю ваши лица которые первый раз это все видят и тут какие-то ноды кластеры ху**еры -_0.
Посмотреть вложение 73363
И самое главное, из-за чего у вас кластер может не запахать это:
Поменяйте с 192.168.0.1 на 127.0.0.1
Посмотреть вложение 73364
Поменяйте с 192.168.0.1 на 127.0.0.1
Посмотреть вложение 73365
Самое главное правило Эластика это- после любого изменения конфигов systemctl restart ******.service
systemctl restart elasticsearch.service
Готово, мы можем поднять нашу веб морду для этого нужно чутка покапаться в конфигах. Под раздачу попадает конфиг Кибаны - /etc/kibana/kibana.yml
Сразу прописываем эти команды, эти серты кибаны, без них она не заработает
Код:
cp -R /etc/elasticsearch/certs /etc/kibana
chown -R root:kibana /etc/kibana/certs
Путь до них = /etc/kibana/certs/
Открываем его через vim.
Код:
vim /etc/kibana/kibana.yml
Тут мы можем поправить пару вещей, во первых если у вы используюте отдельный сервер эластиксерча то нужно тут снять решетку и прописать адрес. Я ничего не меняю т.к. использую один сервер со всем. Опять же хочу напомнить для полноценного прода нужно разбивать это все по отдельным серверам, такой колхоз как у меня возможен только для тестовых стендов.
Убираем решетку и добавляем к http + s = https
Посмотреть вложение 73371
Они идут вместе с ЕЛК поэтому тут ОБЯЗАТЕЛЬНО! делаем вот так
Посмотреть вложение 73370
А вот это интересный момент, если опять же вы поднимаете прод и хотите чтобы все было по феншую, то вам нужен серт.
Посмотреть вложение 73354
И самое главное вверху конфигурационного файла есть очень важная вещь, тут не забываем поменять, чтобы можно было коннектиться к панели не только из локалки. (Ну это только тут, в продакшене какого нибудь сока, все обернуто в локалку + впн и конечно же никакого доступа из вне)
Посмотреть вложение 73355
Тут пишем "http://ip_сервера:5601"
https если включили tls

Посмотреть вложение 73372
Так же нужно настроить аунтифкиацию в эластик. Для этого нужно создать внутреннего пользователя kibana_system
Код:
/usr/share/elasticsearch/bin/elasticsearch-reset-password -u kibana_system
Полученные креды переносим сюда и ОЧЕНЬ ВАЖНО разкомментировать строку с elasticsearch.host у нас есть выбор получать данные с агентов в логстеш или в эластик, чисто для теста сразу направим выводв в эластик!!!
Мы молодцы и можем ребутнуть процесс чтобы все встало на свои места
Код:
systemctl restart kibana.service
Теперь открываем наш браузер и пишем в адрессную строку "http://ip_сервера:5601"
https если включили tls

Можем увидеть такое в браузере - это плохо, смотрим что происходит с кибаной и почему она нам не дает войти =)...

Посмотреть вложение 73358

Открываем статус кибаны и видим что там че то с нодой не может коннекшен (тут я дурак и забыл просто указать путь до сертификатов)
Все это дело под рестар вместе с эластиком и логстешем.
Посмотреть вложение 73366
Посмотреть вложение 73376

Открываем браузер заходим на панель и видим это..
Тут нужны креды от elastic аккаунта (мы их получили еще в самом начале при установке).
Вот мы и подняли ELK, это еще не SIEM в базовом ее понимании, но уже можно радоваться
Посмотреть вложение 73380
У нас тут все работает по логам с сервера понимаем что пашет отлично, но теперь нам нужны боевые логи хостов.
И вот тут на сцену выходит Beats.
Как я уже писал выше Beats это агент на хосты который будет собирать все чихи нашего устройства и отправлять их в Logstash, вот на этом моменте нам нужны будут уже правила по которым ELK сможет выявлять вредоносную активность, а Кибана отрисовывать это все в красивые графики.
Начнем с настройки Beats на нашем сервере, так же у нас будет для начала виртуалка у которой будет стоять этот агент.
Windows - winlog beat
Unix - filebeat
Щас в виде тестового стенда я буду использовать свою виртуалку и поставлю на нее filebeat агента, и посмотрим как это все тут отрисовываеться и попадают ли логи вообще в логстеш?. Сам агент можно скачать тут -> Сайт
Или если линукс apt install filebeats
У нас есть выбор транслировать логи с агентов в эластик или помещать их в логстеш, чисто для быстроты эксперемента поставим все на эластик
Перед тем как скормить агента виртуалке само собой нужно подредачить конфиг файл. Он лежит в папке и называеться filebeats.yml
В конфиругационном файле вам обязательно нужно, обязательно указать ваш хост ( не оставляйте локалхост ) прописывайте руками адрес сервера эластика, даже если он в локалке, выставляйте руками https и два важных момента дать креды супер пользователя и обязательно прописать ssl.certificate_authoities: Без этого агент файлбита просто не будет передавать логи, серты лежат по пути /etc/elasticsearch/certs/http_ca.crt


Запускаем агента файлбита на хосте и заходим в панель где выставляем нужный датавью ( ну чтобы видеть имменно наши логи с filebeat) и сохраняем.
Как видим filebeat 8.11.4 активно дает логи, но пока это все очень в сыром виде и никуда нормально не дениться..
Посмотреть вложение 73386

Теперь у нас есть полноценная база для напиание правил и уже к этому моменту можно подключать IDS/IPS, самый лучший совет это читайте логи, особенно логстеша..
Всем спасибо кто дочитал!! Ждите вторую часть.
Полезная инфа - https://www.elastic.co/guide/en/elasticsearch/reference/8.11/elasticsearch-intro.htmlБезработному блютимеру на ход ноги - bc1qxzw0u2hl40hxpw0zjz82zzkl5mgjtp9xwkex6f
Как всегда четко, ждём следующие статьи
 
И самое главное, из-за чего у вас кластер может не запахать это:
Поменяйте с 192.168.0.1 на 127.0.0.1
Посмотреть вложение 73364
Поменяйте с 192.168.0.1 на 127.0.0.1
Посмотреть вложение 73365
Самое главное правило Эластика это- после любого изменения конфигов systemctl restart ******.service
systemctl restart elasticsearch.service
Важное дополнение, я чуть факапнул тут вместо 127.0.0.1 нужно поставить адрес 0.0.0.0
Это нужно для того чтобы вы могли не только в локалке обращаться к ноде(Хотя если вы разварачиваете это все в локалке, то оставьте как было)
 
Не останайливайся!
В следующей статье ждем подробный обзор полезных интеграций для агентов, какие логи смотреть и как.
Спасибо.
бро уже все написал! спасибо за поддержку
https://xss.pro/threads/107983/
https://xss.pro/threads/106622/
https://xss.pro/threads/107634
 
В обратку тоже есть:

Скрытый контент для зарегистрированных пользователей.
https:// github. com/outflanknl/RedELK


Вот знал бы ты defaultuser0 про такое поподробней, а то ковыряю всё его одного.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх