diff --git a/docs/tutorial/audit_log.md b/docs/tutorial/audit_log.md index 2455cf0069ad042e004a2e5d7eac4b245b920897..b381a6d69bdd8d539aabd321cd9efdabccf24688 100644 --- a/docs/tutorial/audit_log.md +++ b/docs/tutorial/audit_log.md @@ -111,9 +111,126 @@ tail -f /tmp/audit.log инÑтанÑу Picodata, иÑпользуйте такую команду: ```bash -journalctl -f _COMM=picodata +journalctl -f | grep AUDIT ``` +## ÐžÐ¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¾ ÑобытиÑÑ… журнала аудита {: #notifications } +### Поддерживаемые ÑпоÑобы доÑтавки оповещений {: #supported_notifications } + +Ð’ Picodata ÑущеÑтвует возможноÑÑ‚ÑŒ получать Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¾ ÑобытиÑÑ…, +зафикÑированных в журнале аудита. ПоддерживаютÑÑ Ñледующие ÑпоÑобы +доÑтавки оповещений: + +- ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑкого рабочего Ñтола +- ÑƒÐ²ÐµÐ´Ð¾Ð¼Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñлектронной почте + +### ÐžÐ¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‡ÐµÐ³Ð¾ Ñтола {: #desktop_notifications } + +Ð”Ð»Ñ Ð´Ð¾Ñтавки оповещений на рабочий Ñтол иÑпользуетÑÑ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð° +`notify-send`, имеющаÑÑÑ Ð² ÑоÑтаве защищенной ОС. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы +иÑпользовать ее ÑовмеÑтно Ñ Picodata, потребуетÑÑ Ñоздать файл-обработчик +Ñледующего ÑодержаниÑ: + +```python +#!/usr/bin/env python + +import json +import subprocess +import sys +from systemd import journal + +for line in sys.stdin: + if line: + journal.send(f"AUDIT {line}") + entry = json.loads(line) + if entry['severity']: + subprocess.call(['notify-send', entry['message']]) + +``` + +Сохраните Ñтот код в файл `audit-sink.py` в директорию, из которой будет +запуÑкатьÑÑ `picodata`, Ñделайте его иÑполнÑемым (`chmod +x +audit-sink.py`) и затем запуÑтите инÑтанÑ: + +```shell +picodata run --admin-sock ./i1.sock --audit='|/tmp/audit-sink.py' +``` +Ð’ результате, ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð· журнала аудита будут ÑохранÑÑ‚ÑŒÑÑ Ð² `syslog` и +дублироватьÑÑ Ð² виде уведомлений на рабочем Ñтоле. + +### ÐžÐ¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ñ Ð¿Ð¾ Ñлектронной почте {: #email_notifications } + +Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð¾Ð¿Ð¾Ð²ÐµÑ‰ÐµÐ½Ð¸Ð¹ по Ñлектронной почте потребуютÑÑ: + +- программа `sendmail`, имеющаÑÑÑ Ð² ÑоÑтаве защищенной ОС +- наÑтройка `sendmail` Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ работы Ñ Ð¿Ð¾Ñ‡Ñ‚Ð¾Ð²Ñ‹Ð¼ Ñервером +- файл-обработчик Ð´Ð»Ñ Ð´ÑƒÐ±Ð»Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñобытий журнала аудит в виде Ñообщений Ð´Ð»Ñ `sendmail` + +Ð”Ð»Ñ Ð½Ð°Ñтройки `sendmail` нужно отредактировать файл наÑтроек +`/etc/mail/sendmail.mc` Ñледующим образом: + +``` +define(`SMART_HOST', `your.smtp.server')dnl +define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl +FEATURE(`authinfo',`hash -o /etc/mail/authinfo.db')dnl +``` + +где `your.smtp.server` — Ð°Ð´Ñ€ÐµÑ SMTP-Ñервера Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑем + +Далее Ñледует наÑтроить аутентификацию, отредактировав файл `/etc/mail/authinfo`: + +``` +AuthInfo:your.smtp.server "U:your_username" "P:your_password" "M:PLAIN" +``` + +где: + +- `your.smtp.server` — Ð°Ð´Ñ€ÐµÑ SMTP-Ñервера Ð´Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ пиÑем +- `your_username` — Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ +- `your_password` — пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ +- `PLAIN` — тип аутентификации + +Следующим шагом нужно Ñгенерировать базу данных Ð´Ð»Ñ Ð°ÑƒÑ‚ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ð¸: + +```shell +sudo makemap hash /etc/mail/authinfo < /etc/mail/authinfo +``` + +Ñгенерировать конфигурацию `sendmail`: + +```shell +sudo make -C /etc/mail +``` + +включить и запуÑтить `sendmail`: + +```shell +sudo systemctl enable --now sendmail.service +``` + +Теперь можно иÑпользовать модифицированный Ñкрипт `audit-sink.py` Ñо Ñледующим Ñодержанием: + +```python +#!/usr/bin/env python + +import json +import subprocess +import sys +from systemd import journal + +for line in sys.stdin: + if line: + journal.send(f"AUDIT {line}") + entry = json.loads(line) + if entry['severity']: + subprocess.call(['sendmail user@example.com <', entry['message']]) + +``` + +Ð’ результате, ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¸Ð· журнала аудита будут попадать в `syslog` от +имени процеÑÑа `python` и дублироватьÑÑ Ð² виде пиÑем на указанный вмеÑто +`user@example.com` почтовый Ñщик. + См. также: - [Журнал аудита в защищенной ОС](../security/audit_log.md)