👀 Обнаружение изменений критических файлов на Linux с помощью Auditbeat и ELK |

👀 Обнаружение изменений критических файлов на Linux с помощью Auditbeat и ELK

Мануал

В этом руководстве вы узнаете, как обнаружить изменения критических файлов в Linux с помощью Auditbeat и ELK.

Auditbeat – cогласно информации на оф сайте, собирает данные Linux и следит за целостностью файлов.

Он передает эти события в режиме реального времени остальной части стека Elastic для дальнейшего анализа.

Это позволяет выяснить, кто был действующим лицом и какое действие выполнили и когда.

Обнаружение изменений критических файлов на 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..

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий