Вопрос или проблема
У меня есть вопрос, как я могу разделить логи из файлов правил 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 только на логи с определенным ключом, выполните следующие шаги:
-
Редактирование конфигурации rsyslog:
Откройте файл конфигурации rsyslog, как правило, это
/etc/rsyslog.conf
или/etc/rsyslog.d/
.Добавьте следующее правило для фильтрации по ключу
user_changes
:if $programname == 'auditd' and $msg contains 'user_changes' then @<адрес_удаленного_сервера>:<порт>
Введите ваши данные:
<адрес_удаленного_сервера>
— IP или хост удаленного сервера логов.<порт>
— порт, используемый для приема логов (обычно 514).
-
Розовые настройки:
Чтобы избежать отправки всех других логов, добавьте также правило для игнорирования:
if $programname == 'auditd' and not ($msg contains 'user_changes') then stop
-
Перезапустите rsyslog:
После внесения изменений необходимо перезапустить службу rsyslog, чтобы новые настройки вступили в силу:
sudo systemctl restart rsyslog
3. Убедитесь в корректности работы
После настройки проверьте, что события, связанные с user_changes
, отправляются на удаленный сервер, а другие события из auditd2.rules
не отправляются.
- Подождите некоторое время и проверьте удаленный сервер на наличие новых логов.
-
Логи на основном сервере можно проверить с помощью команды:
sudo ausearch -k user_changes
Заключение
С помощью описанных шагов вы сможете эффективно фильтровать и отправлять только те логи, которые соответствуют определенному набору правил в auditd, на удаленный сервер. Это обеспечит вам удобство управления логами и позволит сосредоточиться на значимых событиях. Не забудьте регулярно проверять настройки и логи, чтобы обеспечить непрерывность и безопасность вашего мониторинга.