В этом руководстве вы узнаете, как обнаружить изменения критических файлов в Linux с помощью Auditbeat и ELK.
Auditbeat – cогласно информации на оф сайте, собирает данные Linux и следит за целостностью файлов.
Он передает эти события в режиме реального времени остальной части стека Elastic для дальнейшего анализа.
Это позволяет выяснить, кто был действующим лицом и какое действие выполнили и когда.
- Обнаружение изменений критических файлов на Linux с помощью Auditbeat и ELK
- Установка и настройка стека ELK
- Установка Auditbeat на хост
- Установка Auditbeat на системы на базе Ubuntu/Debian
- Установка Auditbeat на системы на базе RHEL
- Настройка подключения Auditbeat к Elasticsearch
- Настройка Auditbeat для сбора данных аудита
- Проверка конфигурации Auditbeat
- Загрузка шаблона индекса Auditbeat и дашбордов визуализации в Elasticsearch
- Настройка ведения логов Auditbeat
- Запуск Auditbeat
Обнаружение изменений критических файлов на Linux с помощью Auditbeat и ELK
Установка и настройка стека ELK
Для начала вам необходимо иметь работающий стек ELK.
🐧 Настройка кластера Elasticsearch на CentOS 8/7 | Ubuntu 20.04 / 18.04 с Ansible
Установка Auditbeat на хост
Чтобы иметь возможность обнаруживать изменения критических файлов в Linux с помощью Auditbeat и ELK, вам необходимо установить Auditbeat на хост, который вы отслеживаете.
В этом руководстве мы будем использовать два хоста, Ubuntu и Rocky Linux vms в качестве удаленных хостов для мониторинга любых изменений в критических файлах.
Установка Auditbeat на системы на базе Ubuntu/Debian
Выполните приведенные ниже команды для установки Auditbeat на системы на базе Ubuntu/Debian;
apt install gnupg2 apt-transport-https -y
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | gpg --dearmor > /etc/apt/trusted.gpg.d/elastic.gpg
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" > /etc/apt/sources.list.d/elastic-7.x.list
apt update
apt install auditbeat -y
Установка Auditbeat на системы на базе RHEL
Выполните приведенные ниже команды для установки Auditbeat на системы на базе RHEL;
rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch
cat > /etc/yum.repos.d/elastic.repo << EOL [elastic-7.x] name=Elastic repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=0 autorefresh=1 type=rpm-md EOL
yum --enablerepo=elastic-7.x install auditbeat -y
Настройка подключения Auditbeat к Elasticsearch
После завершения установки откройте файл конфигурации Auditbeat для редактирования;
Перейдите к разделу конфигурации Elasticsearch Output;
... ... # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch: # Array of hosts to connect to. hosts: ["localhost:9200"] # Protocol - either `http` (default) or `https`. #protocol: "https" # Authentication credentials - either API key or username/password. #api_key: "id:api_key" #username: "elastic" #password: "changeme" ...
Установите конфигурации вывода в зависимости от того, как настроен ваш Elasticsearch.
В моей настройке мне просто нужно обновить IP-адрес и порт Elasticsearch, заменив localhost:9200 на данные подключения Elasticsearch; 192.168.58.22:9200.
... ... # ---------------------------- Elasticsearch Output ---------------------------- output.elasticsearch: # Array of hosts to connect to. hosts: ["192.168.58.22:9200"] # Protocol - either `http` (default) or `https`. #protocol: "https" # Authentication credentials - either API key or username/password. #api_key: "id:api_key" #username: "elastic" #password: "changeme" ...
Сохраните изменения и выйдите из файла конфигурации.
Убедитесь, что порт Elasticsearch открыт и к нему можно подключиться;
nc -nvz 192.168.58.22 9200
Затем проверьте соединение Auditbeat с Elasticsearch (убедитесь, что служба auditbeat не запущена до выполнения этой команды);
auditbeat test output
elasticsearch: http://192.168.58.22:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: 192.168.58.22
dial up... OK
TLS... WARN secure connection disabled
talk to server... OK
version: 7.16.0
Настройка Auditbeat для сбора данных аудита
Далее необходимо настроить Auditbeat для сбора данных системного аудита, которые должны быть отправлены в Elasticsearch.
В стандартном файле конфигурации Auditbeat, /etc/auditbeat/auditbeat.yml, настройки по умолчанию для Auditbeat показаны ниже;
# =========================== Modules configuration ============================
auditbeat.modules:
- module: auditd
# Load audit rules from separate files. Same format as audit.rules(7).
audit_rule_files: [ '${path.config}/audit.rules.d/*.conf' ]
audit_rules: |
## Define audit rules here.
## Create file watches (-w) or syscall audits (-a or -A). Uncomment these
## examples or add your own rules.
## If you are on a 64 bit platform, everything should be running
## in 64 bit mode. This rule will detect any use of the 32 bit syscalls
## because this might be a sign of someone exploiting a hole in the 32
## bit API.
#-a always,exit -F arch=b32 -S all -F key=32bit-abi
## Executions.
#-a always,exit -F arch=b64 -S execve,execveat -k exec
## External access (warning: these can be expensive to audit).
#-a always,exit -F arch=b64 -S accept,bind,connect -F key=external-access
## Identity changes.
#-w /etc/group -p wa -k identity
#-w /etc/passwd -p wa -k identity
#-w /etc/gshadow -p wa -k identity
## Unauthorized access attempts.
#-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EACCES -k access
#-a always,exit -F arch=b64 -S open,creat,truncate,ftruncate,openat,open_by_handle_at -F exit=-EPERM -k access
- module: file_integrity
paths:
- /bin
- /usr/bin
- /sbin
- /usr/sbin
- /etc
- module: system
datasets:
- package # Installed, updated, and removed packages
period: 2m # The frequency at which the datasets check for changes
- module: system
datasets:
- host # General host information, e.g. uptime, IPs
- login # User logins, logouts, and system boots.
- process # Started and stopped processes
- socket # Opened and closed sockets
- user # User information
# How often datasets send state updates with the
# current state of the system (e.g. all currently
# running processes, all open sockets).
state.period: 12h
# Enabled by default. Auditbeat will read password fields in
# /etc/passwd and /etc/shadow and store a hash locally to
# detect any changes.
user.detect_password_changes: true
# File patterns of the login record files.
login.wtmp_file_pattern: /var/log/wtmp*
login.btmp_file_pattern: /var/log/btmp*
Auditbeat поддерживает различные модули, которые упрощают сбор, разбор и визуализацию различных данных аудита.
К таким модулям относятся:
- Auditd: определен как –
module: auditd.. Модуль получает события аудита от Linux Audit , который является частью ядра Linux. - Целостность файла: определяется –
module: file_integrityв конфигурационном файле Auditbeat. Этот модуль посылает события, когда файл изменяется (создается, обновляется или удаляется) на диске. События содержат метаданные файла и хэши. По умолчанию он отслеживает следующие каталоги;
/bin
/usr/bin
/sbin
/usr/sbin
/etc
System: определяется- module: systemв конфигурационном файле. - Этот модуль собирает различную информацию о системе, связанную с безопасностью.
В этой установке мы будем использовать конфигурации по умолчанию.
Если вы хотите отслеживать другой файл/каталог на предмет изменений целостности, добавьте его в модуль file_integrity.
Проверка конфигурации Auditbeat
Каждый раз, когда вы вносите изменения в конфигурацию Auditbeat, убедитесь, что вы проверили конфигурацию.
auditbeat test config
Если в выводе будет Config OK, значит, все в порядке.
Загрузка шаблона индекса Auditbeat и дашбордов визуализации в Elasticsearch
Выполните приведенную ниже команду для загрузки шаблона индекса Auditbeat:
auditbeat setup --index-management -E output.logstash.enabled=false -E 'output.elasticsearch.hosts=["192.168.58.22:9200"]' -E setup.kibana.host=192.168.58.22:5601
Вывод:
Index setup finished.
Выполните эту команду, чтобы загрузить дашборды визуализации в Elasticsearch;
auditbeat setup -e -E output.logstash.enabled=false -E output.elasticsearch.hosts=['192.168.58.22:9200'] -E setup.kibana.host=192.168.58.22:5601
Настройка ведения логов Auditbeat
Выполните приведенную ниже команду для обновления журналов Auditbeat;
cat >> /etc/auditbeat/auditbeat.yml << EOL logging.level: info logging.to_files: true logging.files: path: /var/log/auditbeat name: auditbeat keepfiles: 7 permissions: 0644 EOL
Обновим ограничение на размер исполняемого файла процесса, который будет хэшироваться.
По умолчанию это значение равно “100 Мб”.
При значении по умолчанию вы можете увидеть предупреждение, например:
failed to hash executable /usr/share/auditbeat/bin/auditbeat for PID 5888: failed to hash file /usr/share/auditbeat/bin/auditbeat: hasher: file size 111924496 exceeds max file size
sed -i '/ state.period:/a\ process.hash.scan_rate_per_sec: 50 MiB\n process.hash.max_file_size: 250 MiB\n process.hash.hash_types: [sha1]' /etc/auditbeat/auditbeat.yml
Запуск Auditbeat
Теперь вы можете запустить и включить службу Auditbeat;
systemctl enable --now auditbeat
Проверка состояния;
systemctl status auditbeat
● auditbeat.service - Audit the activities of users and processes on your system.
Loaded: loaded (/lib/systemd/system/auditbeat.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2021-12-09 20:46:09 EAT; 3s ago
Docs: https://www.elastic.co/beats/auditbeat
Main PID: 2621 (auditbeat)
Tasks: 5 (limit: 1133)
Memory: 41.8M
CPU: 109ms
CGroup: /system.slice/auditbeat.service
└─2621 /usr/share/auditbeat/bin/auditbeat --environment systemd -c /etc/auditbeat/auditbeat.yml --path.home /usr/share/auditbeat --path.config /etc/auditbeat >
Dec 09 20:46:09 debian11 systemd[1]: Started Audit the activities of users and processes on your system..
см. также:
- ⏳ Невозможно загрузить ОС Linux из-за Auditd (CentOS / RHEL)
- 📨 Как отправить выбранные события аудита в определенные файлы или хосты с помощью rsyslog & auditd
- ⏰ Сообщения Auditd заполняют /var/log/messages
- Как игнорировать / отключать определенные записи журнала auditd
- Как контролировать запуск / остановку службы с помощью auditd
- Как проверить все команды, выполняемые в системе Linux, с помощью auditd
- Как отследить, кто удаляет файл в CentOS / RHEL, используя Auditd
- Как исключить определенных пользователей, группы или службы с помощью Auditd для аудита системных вызовов




