Логи 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.txt3. Включаем 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-config5. Настраиваем отдельный 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 rsyslog6. Генерируем тестовые события
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
- Fleet → Agent policies → политика Samba-сервера.
- Add integration → Custom Logs.
- Укажите путь
/var/log/samba/audit.log. - Dataset:
samba.audit. - Namespace:
productionили свой. - Сохраните 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-pager9. Проверяем события в 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 по пользователю, операции и имени тестового файла.