Сегодня возникла потребность в мониторинге изменений определенных файлов на сервере, существует много разных способов например osquery от facebook, но так как недавно я начал пользоваться Open Distro for Elasticsearch решил мониторить файлы эластиком, одним из его beat'ов.
Установку Elastics stack и Auditbeat описывать не буду, все по мануалам, единственное, после установки отредактируйте файл auditbeat.yml, в модуль file_integrity добавьте путь к отслеживаемому файлу.
После настройки и запуска в kibana появится индекс auditbeat-*
Далее создаем мониторинг, указываем имя мониторинга, интервал проверки, а так же тип мониторинга и файл индекса:
в Define extraction query пишем следующее:
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"file.path": {
"query": "<путь/к отслеживаемому файлу>"
}
}
}
],
"filter": [
{
"term": {
"event.action": {
"value": "attributes_modified" #изменения атрибутов, возможно created или deleted
}
}
},
{
"range": {
"@timestamp": {
"from": "now-1m" #период за который отслеживаем изменение
}
}
}
],
"adjust_pure_negative": true,
"boost": 1
}
}
}
После нажимаем кнопку Run и проверяем запрос, должно появиться вот такое:
Пробуем изменить целевой файл и опять запустить запрос:
как видите hits изменился на 2, нажимаем update и создаем тригер на изменение значения:
Оставляем все, как на картинке.
Далее можно настроить уведомления в slack или другой мессенджер.
Автор: nordby