ITLinuxАдминистрирование

Логи Samba в Elastic Stack: Elastic Agent, отдельный audit.log и проверка событий

Ниже — рабочая схема: Samba пишет значимые файловые операции через vfs_full_audit в отдельный syslog facility, rsyslog складывает их в /var/log/samba/audit.log, а Elastic Agent отправляет файл в data stream.

1. Проверяем Samba и журнал

smbd --version
systemctl status smbd --no-pager
journalctl -u smbd -n 50 --no-pager
ls -lah /var/log/samba/

2. Сохраняем конфигурацию

install -d -m 700 /root/samba-elastic-backup
cp -a /etc/samba/smb.conf /root/samba-elastic-backup/smb.conf.$(date +%F-%H%M)
testparm -s > /root/samba-elastic-backup/testparm-before.txt

3. Включаем vfs_full_audit на нужной share

[files]
    path = /srv/samba/files
    read only = no
    vfs objects = full_audit
    full_audit:prefix = user=%u|ip=%I|machine=%m|share=%S
    full_audit:success = mkdir rmdir rename unlink pwrite chmod chown
    full_audit:failure = all
    full_audit:facility = local5
    full_audit:priority = NOTICE

Если в share уже используются recycle или acl_xattr, добавьте full_auditvfs objects, а не заменяйте его.

4. Проверяем и применяем

testparm -s
testparm -s --section-name=files
smbcontrol all reload-config

5. Настраиваем отдельный audit.log

cat > /etc/rsyslog.d/30-samba-audit.conf <<'EOF'
local5.notice    /var/log/samba/audit.log
& stop
EOF
install -d -o root -g adm -m 0750 /var/log/samba
touch /var/log/samba/audit.log
chown root:adm /var/log/samba/audit.log
chmod 0640 /var/log/samba/audit.log
rsyslogd -N1
systemctl restart rsyslog

6. Генерируем тестовые события

echo 'elastic samba test' > /tmp/samba-elastic-test.txt
smbclient //127.0.0.1/files -U testuser -c 'mkdir elastic-test; put /tmp/samba-elastic-test.txt elastic-test/test.txt; rename elastic-test/test.txt elastic-test/renamed.txt; del elastic-test/renamed.txt; rmdir elastic-test'
tail -n 50 /var/log/samba/audit.log

В журнале должны появиться пользователь, IP, share, операция, результат и путь.

7. Подключаем Custom Logs в Fleet

  1. Fleet → Agent policies → политика Samba-сервера.
  2. Add integration → Custom Logs.
  3. Укажите путь /var/log/samba/audit.log.
  4. Dataset: samba.audit.
  5. Namespace: production или свой.
  6. Сохраните policy и дождитесь статуса Healthy.

8. Проверяем Elastic Agent

elastic-agent status
elastic-agent inspect output -o default 2>/dev/null | head -100
journalctl -u elastic-agent --since '15 min ago' --no-pager

9. Проверяем события в Elasticsearch

curl -sS -u elastic:'PASSWORD' \
  'https://elastic.example.com:9200/_data_stream/logs-samba.audit-*?pretty'

curl -sS -u elastic:'PASSWORD' -H 'Content-Type: application/json' \
  'https://elastic.example.com:9200/logs-samba.audit-*/_search?pretty' \
  -d '{"size":5,"sort":[{"@timestamp":"desc"}],"query":{"match":{"message":"elastic-test"}}}'

10. Поиск в Kibana

data_stream.dataset : "samba.audit"
message : "*unlink*"
message : "*rename*"
message : "*testuser*"

11. Типовые проблемы

  • audit.log пустой — ошибка в VFS operation, facility или share не перезагружена;
  • Agent не читает файл — проверьте права и путь;
  • события приходят одной строкой без полей — сначала сохраните message, затем добавляйте ingest pipeline;
  • слишком много данных — сократите список success-операций;
  • нет data stream — проверьте status Agent и policy revision.

12. Rollback

cp -a /root/samba-elastic-backup/smb.conf.YYYY-MM-DD-HHMM /etc/samba/smb.conf
rm -f /etc/rsyslog.d/30-samba-audit.conf
rsyslogd -N1
systemctl restart rsyslog
testparm -s
smbcontrol all reload-config

Критерий успеха: тестовые SMB-операции появляются в локальном audit.log, Elastic Agent находится в Healthy, data stream создан, а события находятся в Kibana по пользователю, операции и имени тестового файла.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *