По умолчанию все команды, выполненные от sudo записываются в /var/log/secure
, помимо sudo в этот файл пишется еще немало других событий. Логично что найти потом кто и что выполнил в куче логов не так просто. Поэтому сконфигурируем ОС так, чтобы логи писались в другой файл, например, /var/log/sudo
.
Укажем в какой файл писать события
Для этого отредактируем файл /ets/sudoers
и добавим переменную logfile
.
sudo visudo
Defaults logfile=/var/log/sudo
Для выходи из visudo выполните :wq
, или нажмите дважды CRTL+Z
.
Логирование в одну строку
По умолчанию лог о том, что пользователь выполнил команду под sudo разбивается на несколько строк, что не совсем удобно для отправки в систему мониторинга, в моём случае elasticsearch
. Поэтому я сделаю так чтобы всё помещалось в одну строку.
sudo visudo
Defaults loglinelen=0
Для выходи из visudo выполните :wq
, или нажмите дважды CRTL+Z
.
Проверка
Теперь, когда всё настроено просто выполняем sudo команду и проверяем что появилось об этом событие в файле /var/log/sudo
.
cat /var/log/sudo
Nov 21 10:44:35 : user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/ls
Настройка filebeat
В качестве агента для отправки событий в elasticsearch я буду использовать filebeat. Писать о том, как его установить я не буду, так как там ничего необычного.
Добавим новый input для filebeat:
sudo vim /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
id: "sudo"
enabled: true
paths:
- /var/log/sudo
fields:
tag: sudo
sudo systemctl restart filebeat
Grok для pipeline
Для того чтобы разбить событие на поля в Elasticsearch можно воспользоваться pipeline, для этого можно использовать следующий Pattern для Grok:
%{SYSLOGTIMESTAMP:system.syslog.timestamp} : %{USERNAME:sudo.user} : TTY=%{NOTSPACE:sudo.tty} ; PWD=%{NOTSPACE:sudo.pwd} ; USER=%{USERNAME:sudo.userbecome} ; COMMAND=%{GREEDYDATA:sudo.command}|%{SYSLOGTIMESTAMP:system.syslog.timestamp} : %{USERNAME:sudo.user} : %{GREEDYDATA:sudo.allow} ; TTY=%{NOTSPACE:sudo.tty} ; PWD=%{NOTSPACE:sudo.pwd} ; USER=%{USERNAME:sudo.userbecome} ; COMMAND=%{GREEDYDATA:sudo.command}
Комментарии