Neste post vou falar o uso do SELinux , abordando dicas para o RHCE .
A estrutura SELinux é uma camada de segurança extra para o sistema operacional, limitando as ações dos usuários , programas e permissionamento de algum processo não autorizado.
1) Modos de Operação
O SELinux pode operar em 3 modos :
- permissive : Modo que aceita várias interações com a máquina sem exigir qualquer restrição.
- enforcing : Este modo precisa ser bem configurado , pois a interação com este modo depende da permissão de porta e liberação do serviço como será mostrado abaixo.
- disabled : Desabilita o SELINUX, se você está fazendo a prova da Redhat não é aconselhável para o RHCSA ou RHCE.
Para ver ou setar o estado atual do SELinux é podemos usar os comandos :
getenforce – Ver o estado atual
setenforce – Seta o modelo de operação do SELinux , 0 para permissive e 1 para enforcing
2) Booleanos
Booleanos são as opções que são alterados no comportamento do SElinux para regras habilitadas ou não.
Com o comando getsebool -a podemos observar quais são os estados dos booleanos, se estão habilitados ou não :
Caso precise habilitar algum parâmetro se usa setsebool <label> on
Alterando o contexto de um diretório :
Podemos observar se um diretório está habilitado para o contexto a ser utilizado como virtual host do Apache usando os seguintes passos :
O label utilizado será o httpd_sys_content_t , pois é o label utilizado pelo Apache .
Verificando o label do diretório a ser utilizado com o ls -Zd <direrório> :
Alterando o contexto e definindo como padrão com o semanage :
Após estas definições no diretório sempre que for necessário criar um diretório ou arquivo sempre use o comando restorecon -Rv <diretorio> para os arquivos criados poder pegar a permissão de raíz :
3) Port security
Após configurarmos o contexto de um determinado diretório devemos ver se a porta está habilitada para aquele determinado serviço .
Podemos verificar se a porta está listada para o serviço específico com semanage port -l
Para setarmos a porta usamos o semanage :
semanage port -a -t <label> -p <tcp ou udp> <porta>
No nosso exemplo a porta 80 já estava definida definida para o label http_port_t .
A gerência de portas também pode ser feita através da gui com a instalação do pacote policycoreutils -gui .
Links úteis :