2016-12-09 9 views
3

В моей книге есть задача обновить audit.rules, а затем уведомить обработчика, который должен перезапустить службу auditd.ansible: как перезапустить службу аудита на centos 7 получить сообщение об ошибке

task: 
    - name: 6.6.7 - audit rules configuration 
    template: src=X/ansible/templates/auditd_rules.j2 
       dest=/etc/audit/rules.d/audit.rules 
       backup=yes 
       owner=root group=root mode=0640 
    notify: 
    - restart auditd 


    handlers: 
    - name: restart auditd 
     service: name=auditd state=restarted 

Когда играется в игру, правила аудита обновляются и выполняется запрос на перезапуск auditd, но это не так, как показано ниже.

RUNNING HANDLER [restart auditd] *********************************************** 
fatal: [ipX-southeast-2.compute.internal]: FAILED! => {"changed": false, "failed": true, "msg": "Unable to restart service auditd: Failed to restart auditd.service: Operation refused, unit auditd.service may be requested by dependency only.\n"} 

Когда я смотрю на определение единицы для auditd, я могу видеть refuseManualStop = yes. Это почему я не могу перезапустить службу? как это сделать, чтобы забрать новые правила аудита?

systemctl cat auditd.service 
# /usr/lib/systemd/system/auditd.service 
[Unit] 
Description=Security Auditing Service 
DefaultDependencies=no 
After=local-fs.target systemd-tmpfiles-setup.service 
Conflicts=shutdown.target 
Before=sysinit.target shutdown.target 
RefuseManualStop=yes 
ConditionKernelCommandLine=!audit=0 
Documentation=man:auditd(8) https://people.redhat.com/sgrubb/audit/ 

[Service] 
ExecStart=/sbin/auditd -n 
## To not use augenrules, copy this file to /etc/systemd/system/auditd.service 
## and comment/delete the next line and uncomment the auditctl line. 
## NOTE: augenrules expect any rules to be added to /etc/audit/rules.d/ 
ExecStartPost=-/sbin/augenrules --load 
#ExecStartPost=-/sbin/auditctl -R /etc/audit/audit.rules 
ExecReload=/bin/kill -HUP $MAINPID 
# By default we don't clear the rules on exit. To enable this, uncomment 
# the next line after copying the file to /etc/systemd/system/auditd.service 
#ExecStopPost=/sbin/auditctl -R /etc/audit/audit-stop.rules 

[Install] 
WantedBy=multi-user.target 
+0

Изменение ручной остановки для NO и попробовать 'Судо сервис auditd restart' Если это работает, то код будет работать. –

+0

'systemctl start auditd' и' systemctl enable auditd' для версии CentOS версии7. Перейдите по ссылке для получения дополнительной справки. [link] (https://skcave.wordpress.com/2014/11/07/using-audit-on-centos-7/) –

ответ

0

Я бы проверить службу auditd перезагрузки правильно, так как даже при использовании командного модуля с помощью команды, указанной не будет работать или вести себя таким образом можно было бы ожидать его в;

Confirm через

service auditd status 

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-starting_the_audit_service.html

Попробуйте вместо

service auditd condrestart 

:)

+0

Привет, спасибо за ваш вклад. Это отлично работает с командой, которую я опубликовал. Правила загружаются после обычного перезапуска – Matzuba

0

Может быть, это бросить поздно ответ, но если кто-то сталкивается с той же проблемой , вы можете импортировать новые правила для auditd с этим коммандом d:

auditctl -R /path/to_your_rules_file 

Таким образом, нет необходимости перезагружать auditd.service импортировать новые правила

+0

Я удалил ваш вопрос из вашего ответа. Ответ, безусловно, может остаться, но для вопросов вы должны [задать новый вопрос] (https://stackoverflow.com/questions/ask). См.: [Задавайте вопросы, получайте ответы, не отвлекайте внимание) (https://stackoverflow.com/tour). – g00glen00b

+1

Нет проблем, я разместил свой вопрос здесь https://stackoverflow.com/questions/46214714/overwritten-auditd-rules-in-pci-dss-environement – Abel

1

Это было исследовано, обсуждены и решены (в основном) в отчетах Red Hat Bugzilla #1026648 и Anisble Issue # 22171 (github).

Разрешение

  • Используйте анзибль service параметр модуля use=service, чтобы заставить выполнение /sbin/service утилиты вместо собраны-факт величины systemd (которая вызывает /sbin/systemctl) следующим образом:
    • - service: name=auditd state=restarted use=service
  • Example playbook (pastebin.com)

Обход:

  • Используйте анзибль command модуля для явного запуска службы исполняемого файла, как это:
    • - command: /sbin/service auditd restart

анализа - первопричина:

  • Это вопрос, созданный выше по течению упаковки блока auditd.service. Он не будет запускаться/останавливаться/перезапускаться при действии systemctl, по-видимому by design.
  • Он дополнительно усугубляется функцией управления сервисом Ansible, которая использует предпочтительный метод, идентифицированный при сборе системных фактов, и «ansible_service_mgr» возвращает «systemd». Это независимо от фактического модуля, используемого для управления service.unit.
  • RHEL команда разработчиков может решить, если рассматривать проблему в будущих обновлениях (Errata)
  • анзибль команда разработчиков предложила обходной путь и (как 2,2) обновили service модуль с параметром use.

 Смежные вопросы

  • Нет связанных вопросов^_^