Como permitir que o apache exiba um arquivo escrito por rsyslogd (selinux)

0

Eu tenho um aplicativo que é executado como um serviço systemd no RHEL7 que faz uso do diário do sistema para log. Para facilitar o monitoramento deste aplicativo, configurei rsyslogd para gravar logs deste serviço (somente) em um arquivo de log dedicado.

Agora gostaria de exibir esse arquivo de log usando httpd para que os usuários possam monitorar facilmente o aplicativo.

O problema que estou enfrentando é que não importa como eu configure os contextos dos arquivos, selinux me impedirá de fazer o que eu quero:

  • rsyslog tem permissão para gravar em var_log_t
  • httpd tem permissão para ler a partir de httpd_sys_content_t

Até onde eu sei, não há contexto que permita escrever rsyslogd e ler httpd .

O que posso fazer para contornar este problema? Vou acabar precisando criar um módulo de política personalizada?

    
por marack 17.07.2017 / 06:47

1 resposta

0

Você pode verificar se existe um booleano para permitir o acesso usando audit2why , caso em que você faz não precisa criar um módulo de política personalizado.

Se nenhum booleano existir, para permitir que o apache leia os registros, você precisará anexar a política. Com audit2allow você pode criar o módulo de política diretamente ou criar as regras necessárias que você pode usar como modelo para o seu módulo .

Primeiro, você precisa gerar os registros que contêm violações de acesso. Para obter todas as violações de acesso durante o uso normal, defina link para o modo permissivo. No modo permissivo, a política do SELinux não é aplicada para o tipo especificado ( link ), mas os logs serão gerados normalmente:

semanage permissive -a httpd_t

Depois de verificar sua configuração e acessar os logs com o Apache, ative novamente o modo de imposição:

semanage permissive -d httpd_t

Agora use audit2allow para gerar o novo módulo e insira-o:

audit2allow -a -M apache_logs
semodule -i apache_logs.pp

Se você quer ter certeza de que as mensagens de auditoria apenas relacionadas a link são usadas para criar o módulo, grep as linhas relevantes do log de auditoria e usá-lo como entrada para audit2allow . Por exemplo:

grep "httpd_t" /var/log/audit/audit.log | audit2allow -M apache_logs

Se você quiser verificar ou modificar manualmente as regras geradas por audit2allow , gere o módulo no formato de origem usando a opção -m . Você pode verificar e editar a fonte do módulo gerado, se desejar. Depois de terminar, você precisa criar o módulo. As etapas são demonstradas no exemplo da página de manual .

    
por 13.09.2017 / 23:48