Intereting Posts
Сбой ядра Linux: как собрать информацию? Импорт ключа gpg замораживает терминал Создание запроса подписи сертификата для SSL-сервера Почему curl -O -C на Mac не загружается Проблема с трубами. Труба прекращается, когда читатель делает Программа для выбора компьютеров для запуска X-клиентов – назовите такие программы? Ошибка копирования файла в установленном usb Использовать конфигурационный файл для ftp с автоматическим подключением при первом подключении Является ли этот сумасшедший vim voodoo (увеличение альфа-регистров) возможным внутри макроса? как запускать несколько версий одной оболочки на одной машине Что заставляет logcheck загружать 100% загрузки процессора? Настройка имен DNS-зон (Centos7), в частности CNAME Параметры функции Bash – Пробелы в имени файла Сравнение двух файлов с использованием awk-языка Каков наилучший способ разработки графического интерфейса на серверной машине?

события аудита linux не перешли на go-аудит

Мы пытаемся использовать инструмент аут-аута slack для сбора / обработки событий аудита Linux. Дополнительная информация: https://github.com/slackhq/go-audit

Проблема заключается в том, что аудит linux правильно подбирает события, но они не подхватываются аутом go или не корректно выводятся go-audit.

Пример файла конфигурации go-audit был изменен, чтобы иметь единственное правило для сбора информации о доступе к файлу /opt/secret.txt

rules: - -a exit,always -F path=/opt/secret.txt -F perm=wra -k test_changes 

Полный конфигурационный файл go-audit находится здесь: https://gist.github.com/tom-chaoscube/fc2f14b448650ea4018620bbbf2c3345

После запуска go-audit мы видим, что это правило успешно развернуто:

 # auditctl -l -w /opt/secret.txt -p rwa -k test_changes 

Сделана попытка доступа к файлу, и в журнале журнала аудита можно увидеть запись аудита:

 $ cat secret.txt # cat /var/log/audit/audit.log type=SYSCALL msg=audit(1485357520.702:868): arch=c000003e syscall=2 success=yes exit=3 a0=7ffee46830dc a1=0 a2=1fffffffffff0000 a3=7ffee4681670 items=1 ppid=5199 pid=5469 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts5 ses=7 comm="cat" exe="/usr/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="test_changes" type=CWD msg=audit(1485357520.702:868): cwd="/opt" type=PATH msg=audit(1485357520.702:868): item=0 name="secret.txt" inode=26244598 dev=ca:01 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:usr_t:s0 objtype=NORMAL 

Однако при просмотре вывода go-audit никаких событий не записывается. Мы попробовали оба с настройкой go-audit для вывода в stdout, а также в файл.

Запуск strace в go-audit, похоже, что он открывает сокет NETLINK, который, как я полагаю, является подключением к auditd. Также можно видеть, что некоторые данные принимаются по сокету в соответствии с периодическими записями в audit.log, однако, похоже, что некоторые данные не получаются специально, когда записи аудита доступа к файлам записываются аудитом. (Не обязательно сказать это категорически).

 socket(PF_NETLINK, SOCK_RAW, 9) = 4 bind(4, {sa_family=AF_NETLINK, pid=0, groups=00000000}, 12) = 0 setsockopt(4, SOL_SOCKET, SO_RCVBUF, [16384], 4) = 0 getsockopt(4, SOL_SOCKET, SO_RCVBUF, [32768], [4]) = 0 ... ... ... ... write(1, "Started processing events\n", 26) = 26 recvfrom(4, "L\0\0\0\2\0\0\0\1\0\0\0\261\25\0\0\357\377\377\3778\0\0\0\351\3\5\0\1\0\0\0"..., 8970, 0, {sa_family=AF_NETLINK, pid=0, groups=00000000}, [12]) = 76 futex(0xa0f1d0, FUTEX_WAIT, 0, NULL) = 0 

Любые предложения относительно:

  • Почему go-audit не подбирает события?
  • Дальнейшие шаги, которые можно предпринять, чтобы исследовать, действительно ли go-audit получает информацию о событиях через сокет. (Т.е. шаги, чтобы установить, что они не теряются на стороне аудита)

Редактирование: я с тех пор пробовал это локально на Ubunutu 16.10 (а также на оригинальной машине Centos 7) и получил те же результаты.

Приветствия.

Решено.

Ответ на эту проблему заключается в том, что auditd все еще работает в системах.

Простое прекращение аудита и перезапуск go-audit позволили получить данные аудита:

 sudo service stop auditd