top of page

Adicionar aplicação ao SELinux sem desabilitá-lo


É comum na internet que quando se tenta rodar uma aplicação e se tem qualquer dificuldade relacionada ao SELinux a primeira sugestão é "desabilite o SELinux". Quando se faz uma pesquina na internet com a palavra selinux o que mais aparece é como desabilitar.

Isso não é recomendável pois ele possui vários recursos de segurança que são importantes e é um dos diferenciais que aumentam a fama de segurança do Linux.

O sistema é um pouco complicado realmente, mas não dá pra ficar sem.

Então vou demonstrar como permitir que um sistema em específico seja permitido.

O sistema utilizado como exemplo será o agente do Zabbix no Sistema Operacional CentOS 7.

O problema pode ser identificado quando instalamos o "zabbix-agent", efetuamos todas as configurações do "zabbix_agentd.conf" e tentamos coletar informações a partir do servidor Zabbix.

TESTANDO SE O PROBLEMA ESTÁ RELACIONADO AO SELINUX

  • No servidor Zabbix:

# zabbix_get -k system.uptime -s 10.0.0.60 zabbix_get [21773]: Get value error: cannot connect to [[10.0.0.60]:10050]: [113] No route to host

  • No Host a ser monitorado:

# getenforce Enforcing

* Se a resposta for "Permissive", pare por aqui pq seu problema é outro rsrs

# setenforce 0

  • No servidor Zabbix:

# zabbix_get -k system.uptime -s 10.0.0.60

1899549

Dessa forma concluímos que ao mudar a forma que o SELinux está tratando o zabbix_agent é que está impossibilitando a leitura de informações.

RESOLVENDO O PROBLEMA

  • No Host a ser monitorado:

# ausearch -c 'zabbix_agentd' --raw | audit2allow -M my-zabbixagentd # semodule -i my-zabbixagentd.pp

Onde:

ausearch -c 'zabbix_agentd' --raw -=> Ferramenta dos sistema de auditoria que procura por eventos ocorridos que tenham sido causados pelo binário, nesse caso, zabbix_agentd e retorna o conteúdo sem qualque formatação.

audit2allow -M my-zabbixagentd -=> Utiliza as informações geradas pelo comando anterior para criar um módulo permissivo para o SELinux.

semodule -i my-zabbixagentd.pp -=> Insere no SELinux o módulo criado pelo comando anterior.

Dessa forma foi inserido um módulo permissivo no SELinux fazendo com que o zabbix_agentd possa ter as permissões que ele precisa pra rodar. Não vi ainda quais são essas permissões exatamente mas estou considerando que o programa é confiável está em um ambiente seguro.

PS. não se esqueça de habilitar novamente o SELinux no host a ser monitorado usando o comando:

# setenforce 0

e testar com o comando zabbix_get.


Posts Em Destaque
Posts Recentes
Arquivo
Procurar por tags
Siga
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square
bottom of page