Adicionar política 'allow' personalizada no SELinux

1

Eu gostaria de permitir que httpd executasse os arquivos a partir do diretório pessoal de um usuário. De audit2allow , entendo que isso implica a seguinte política:

allow httpd_t user_home_t:file execute;

Como faço para transformar isso em um script que habilita essa política em meus servidores CentOS? Eu já habilitei booleanos para httpd_read_user_content e httpd_enable_homedirs , mas isso não ajudou.

    
por Jeroen 23.06.2015 / 18:27

2 respostas

2

A política de segurança comum do SELinux para servidores Web fornece um conjunto de tipos que podem ser usados por usuários normais para informar ao SELinux como o servidor da Web pode operar em arquivos especificados. Os usuários podem usar o comando chcon para associar esses tipos aos arquivos e diretórios especificados.

Cada um desses tipos tem propriedades específicas, criadas para propósitos específicos.

O tipo httpd_user_script_exec_t é um tipo que seu servidor da Web pode executar. Além disso, há regras associadas a esse tipo que instruem o SELinux a executar o processo de script com o que é chamado de "transição de tipo de processo automático" do tipo de processo de servidores da Web para um tipo de processo projetado especificamente para processos de script cgi de usuário comuns. Esse tipo é associado a um conjunto específico de permissões comuns à maioria dos processos de script cgi.

O tipo httpd_user_rw_content_t é um tipo que seu servidor da Web pode ler e gravar. (exemplo ~ / public_content / myblog / wp_content)

O tipo httpd_user_content_t é um tipo que seu servidor da Web tem permissão para ler (exemplo ~ / public_content)

O tipo httpd_user_content_ra_t é um tipo que seu servidor da Web pode ler e anexar (por exemplo, ~ / public_content / myblog / logs)

Esses tipos geralmente podem ser úteis quando você alterna o booleano httpd_enable_homedirs para on. Este booleano está associado a regras que permitem ao seu servidor navegar através do $ HOME para que ele possa, por exemplo, alcançar ~ / public_content.

Usar os tipos e booleanos acima deve garantir uma integridade bastante decente. Por exemplo, o seu servidor web não poderá ler o seu ~ / .ssh ou o seu ~ / Documents, mas poderá ler o seu site.

O processo de script cgi do usuário também será contido, para que, se ficar comprometido, o dano que ele possa causar esteja contido em uma extensão razoável.

    
por 23.06.2015 / 19:22
1

Usando o chcon funciona, mas você perde o rótulo do selinux quando reinicia o servidor, a maneira mais clara é usar o semange e o restorecon

exemplo:

semanage fcontext -a -t httpd_user_script_exec_t '/home/pippo/file.bash'

restorecon -v /home/pippo/file.bash

restorecon reset /home/pippo/file.bash context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_user_script_exec_t:s0

-rwxr-xr-x. root root unconfined_u:object_r:httpd_user_script_exec_t:s0 /home/pippo/file.bash
    
por 23.06.2015 / 19:13