Problème de permission rsyslog sur un fichier Nexus

Besoin:

"Afficher le contenu du fichier /var/lib/nexus/log/nexus.log de la machine localnexus sur l'instance Graylog(c) logs.dgfip"

Résultat:

Graylog affiche le message : file '/var/lib/nexus/log/nexus.log': open error: Permission denied [v8.24.0-41.el7_7.2 try http://www.rsyslog.com/e/2433 ]

Configuration:

  • Sur logs.dgfip /etc/host contient 192.168.0.x localnexus
  • Sur localnexus /etc/host contient 192.168.0.y logs.dgfips
  • Sur localnexus /etc/rsyslog.conf contient la règle *.* /var/lib/nexus/log/nexus.log
  • Sur localnexus le fichier /etc/rsyslog.d/31-nexus.conf contient *.* @@logs.dgfip;RSYSLOG_SyslogProtocol23Format

La bonne méthode consiste à checker les logs d'audit -ou mieux d'utiliser sealert- pour extraire le process qui essaye d'utiliser le fichier comm:

type=AVC msg=audit(1580393251.876:2068): avc:  
denied  { getattr } for  pid=25217 
comm="in:imfile" 
path="/var/lib/nexus/log/nexus.log" 
dev="vda1" 
ino=953317 
scontext=system_u:system_r:syslogd_t:s0 
tcontext=system_u:object_r:var_lib_t:s0 
tclass=file 
permissive=0

Pour passer créer une nouvelle politique et l'appliquer

ausearch -c 'in:imfile' --raw | audit2allow -M my-rsyslog
semodule -i my-rsyslog.pp

Conformément à selinux :

*****  Plugin catchall (1.41 confidence) suggests   **************************

If you believe that httpd should be allowed getattr access on the file1 file by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'httpd' --raw | audit2allow -M my-httpd
# semodule -i my-httpd.pp

-- SELinux User's and Administrator's Guide

_Note: Il est aussi possible d'opter pour la labélisation en accès publique des fichiers.

*****  Plugin public_content (7.83 confidence) suggests   ********************

If you want to treat file1 as public content
Then you need to change the label on file1 to public_content_t or public_content_rw_t.
Do
# semanage fcontext -a -t public_content_t '/var/www/html/file1'
# restorecon -v '/var/www/html/file1'
Afficher les commentaires