Как разделить логи из файлов правил auditd

Вопрос или проблема

У меня есть вопрос, как я могу разделить логи из файлов правил auditd для передачи событий только из одного из них на удаленный сервер логов. Например, у меня есть auditd1.rules и auditd2.rules на одном сервере, и мне нужно отправить только auditd1.rules на удаленный сервер.

Могу ли я как-то настроить файл правил и/или rsyslog, чтобы определять события, генерируемые из файла auditd1.rules?

Заранее спасибо!

Ответ или решение

Чтобы разделить логи, создаваемые правилами auditd, и отправить их только с определенного файла правил (например, auditd1.rules) на удаленный сервер логов, вам необходимо выполнить несколько шагов. В данном ответе я опишу процесс настройки, учитывая использование auditd и rsyslog для достижения поставленной задачи.

1. Создание и наладка правила в auditd

Убедитесь, что ваши правила в файлах auditd1.rules и auditd2.rules настроены правильно и записывают необходимые события. Например:

auditd1.rules

-w /etc/passwd -p wa -k user_changes

auditd2.rules

-w /var/log/auth.log -p r -k auth_reads

Каждое правило должно содержать ключ -k, который можно использовать для фильтрации логов при дальнейшей обработке.

2. Настройка rsyslog для фильтрации логов

Для фильтрации логов на основе ключа, заданного в правилах auditd, необходимо настроить rsyslog. Обычно логи auditd отправляются в /var/log/audit/audit.log. Для того чтобы указать rsyslog только на логи с определенным ключом, выполните следующие шаги:

  1. Редактирование конфигурации rsyslog:

    Откройте файл конфигурации rsyslog, как правило, это /etc/rsyslog.conf или /etc/rsyslog.d/.

    Добавьте следующее правило для фильтрации по ключу user_changes:

    if $programname == 'auditd' and $msg contains 'user_changes' then @<адрес_удаленного_сервера>:<порт>

    Введите ваши данные:

    • <адрес_удаленного_сервера> — IP или хост удаленного сервера логов.
    • <порт> — порт, используемый для приема логов (обычно 514).
  2. Розовые настройки:

    Чтобы избежать отправки всех других логов, добавьте также правило для игнорирования:

    if $programname == 'auditd' and not ($msg contains 'user_changes') then stop
  3. Перезапустите rsyslog:

    После внесения изменений необходимо перезапустить службу rsyslog, чтобы новые настройки вступили в силу:

    sudo systemctl restart rsyslog

3. Убедитесь в корректности работы

После настройки проверьте, что события, связанные с user_changes, отправляются на удаленный сервер, а другие события из auditd2.rules не отправляются.

  • Подождите некоторое время и проверьте удаленный сервер на наличие новых логов.
  • Логи на основном сервере можно проверить с помощью команды:

    sudo ausearch -k user_changes

Заключение

С помощью описанных шагов вы сможете эффективно фильтровать и отправлять только те логи, которые соответствуют определенному набору правил в auditd, на удаленный сервер. Это обеспечит вам удобство управления логами и позволит сосредоточиться на значимых событиях. Не забудьте регулярно проверять настройки и логи, чтобы обеспечить непрерывность и безопасность вашего мониторинга.

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

Капча загружается...