===== Gerenciamento do SELinux - Nível Básico ===== ==== Nível Básico ==== * **Verificar o status atual do SELinux:** - sestatus - Exibe o status do **SELinux**, incluindo o modo de operação atual (Enforcing, Permissive ou Disabled). * **Verificar o modo do SELinux no arquivo de configuração:** - cat /etc/selinux/config - Exibe o conteúdo do arquivo de configuração do SELinux, indicando o modo configurado para o próximo boot. * **Habilitar o modo Permissive temporariamente:** - sudo setenforce 0 - Coloca o SELinux no modo **Permissive**, onde as políticas são verificadas, mas não são aplicadas. Isso é útil para identificar problemas sem interromper o sistema. * **Habilitar o modo Enforcing temporariamente:** - sudo setenforce 1 - Coloca o SELinux no modo **Enforcing**, onde as políticas de segurança são aplicadas e qualquer violação será bloqueada. * **Verificar o contexto de segurança de um arquivo:** - ls -Z /caminho/arquivo - Exibe o **contexto de segurança** associado ao arquivo, mostrando informações como o usuário, papel, tipo e domínio do SELinux. * **Alterar o contexto de segurança de um arquivo ou diretório:** - sudo chcon -t httpd_sys_content_t /var/www/html/index.html - Altera o contexto de segurança de um arquivo ou diretório, no caso acima, ajustando para o tipo **httpd_sys_content_t**, usado por servidores web. * **Restaurar o contexto de segurança original de um arquivo:** - sudo restorecon /var/www/html/index.html - Restaura o contexto de segurança original de um arquivo ou diretório, baseado nas regras padrão do sistema. * **Verificar eventos recentes de violação de política do SELinux:** - sudo ausearch -m avc - Busca no log de auditoria do **SELinux** por eventos de controle de acesso violado (AVC), mostrando potenciais problemas. * **Exibir logs do SELinux:** - sudo cat /var/log/audit/audit.log | grep AVC - Exibe todos os logs do **audit.log** relacionados a violações de políticas do SELinux (denominação AVC). ===== Gerenciamento do SELinux - Nível Intermediário ===== ==== Nível Intermediário ==== * **Alterar permanentemente o modo de operação do SELinux:** - sudo nano /etc/selinux/config - Edite o arquivo de configuração para alterar o modo de operação do SELinux de forma permanente. Ajuste a linha `SELINUX=enforcing`, `permissive` ou `disabled`, conforme necessário. * **Listar os Booleans do SELinux disponíveis:** - sudo getsebool -a - Lista todas as configurações **Booleanas** do SELinux, que são opções de controle granular das políticas de segurança. * **Ativar ou desativar um Boolean temporariamente:** - sudo setsebool httpd_can_network_connect 1 - Ativa o Boolean **`httpd_can_network_connect`**, permitindo que o servidor web (HTTPD) faça conexões de rede. A configuração será perdida após o reinício do sistema. * **Ativar um Boolean de forma permanente:** - sudo setsebool -P httpd_can_network_connect 1 - Ativa o Boolean **`httpd_can_network_connect`** de forma permanente, preservando a configuração após o reinício do sistema. * **Verificar o contexto de segurança de um processo:** - ps -eZ | grep httpd - Exibe o **contexto de segurança** dos processos associados ao serviço HTTPD (ou qualquer outro processo), mostrando como o SELinux está gerenciando esses processos. * **Trocar o contexto de segurança de um processo em execução:** - sudo runcon -t httpd_t /bin/bash - Executa um novo shell com o contexto de segurança de **httpd_t**, simulando a execução de um processo com as permissões aplicadas ao serviço de HTTP. * **Exibir eventos de AVC detalhados e filtrar por data:** - sudo ausearch -m avc -ts today - Busca nos logs de auditoria do **SELinux** por eventos de **AVC** (Access Vector Cache) ocorridos hoje, ajudando a diagnosticar problemas de acesso. * **Gerar um relatório simplificado sobre as violações do SELinux:** - sudo sealert -a /var/log/audit/audit.log - Gera um relatório detalhado de violações, com explicações e sugestões para resolver os problemas encontrados no **audit.log**. * **Restaurar o contexto de segurança de um diretório recursivamente:** - sudo restorecon -R /var/www - Restaura o contexto de segurança de todos os arquivos e subdiretórios dentro de `/var/www`, garantindo que eles obedeçam às políticas padrão. * **Modificar o tipo de um arquivo para ser utilizado pelo Samba:** - sudo chcon -t samba_share_t /srv/samba/public - Altera o tipo de contexto de segurança de um diretório para **samba_share_t**, permitindo que o serviço **Samba** tenha acesso ao conteúdo. ===== Gerenciamento do SELinux - Nível Avançado ===== ==== Nível Avançado ==== * **Permitir um domínio específico acessar um arquivo específico (Usar audit2allow):** - **Gerar uma regra baseada em eventos de auditoria:** sudo ausearch -m avc -ts recent | audit2allow - Gera uma política SELinux para permitir um acesso bloqueado recente com base nos eventos de **AVC**. * **Criar um módulo de política para permitir acessos bloqueados:** - **Gerar o módulo:** sudo ausearch -m avc -ts recent | audit2allow -M mypolicymodule
- **Instalar o módulo gerado:** sudo semodule -i mypolicymodule.pp
- Cria e instala um módulo de política baseado nas violações recentes do SELinux, permitindo o acesso bloqueado. * **Listar todos os módulos de política instalados:** - sudo semodule -l - Exibe uma lista de todos os módulos de política instalados no sistema. * **Remover um módulo de política personalizado:** - sudo semodule -r mypolicymodule - Remove o módulo de política personalizado chamado `mypolicymodule`, revertendo quaisquer permissões que ele tenha aplicado. * **Verificar permissões para arquivos específicos:** - sudo sesearch --allow --source httpd_t --target file_t - Verifica se o contexto de origem `httpd_t` (por exemplo, um servidor web) tem permissão para acessar arquivos com o contexto `file_t`. * **Desbloquear permissões específicas para um serviço:** - **Exemplo para desbloquear o serviço SSH:**
sudo semanage permissive -a sshd_t
Coloca o domínio `sshd_t` em modo permissivo, permitindo que o serviço SSH funcione sem ser bloqueado por políticas SELinux. * **Criar uma política personalizada para um serviço:** - **Criar um arquivo de política de exemplo:**
sudo nano myservice.te
Adicione as definições de política no arquivo `.te`: ``` module myservice 1.0; require { type httpd_t; type myservice_exec_t; class file { read write execute }; } allow httpd_t myservice_exec_t:file { read write execute }; ``` - **Compilar e aplicar o módulo de política:**
sudo checkmodule -M -m -o myservice.mod myservice.te
sudo semodule_package -o myservice.pp -m myservice.mod
sudo semodule -i myservice.pp
Cria e instala uma política personalizada para um serviço chamado `myservice`, controlando as permissões de acesso a arquivos. * **Listar as permissões de Booleans e ajustá-las para múltiplos serviços:** - sudo semanage boolean -l | grep httpd - Filtra os Booleans relacionados ao serviço **httpd**, permitindo ajustes simultâneos em permissões como rede, scripts e serviços. * **Configurar permissões avançadas de rede (TCP e UDP) via Booleans:** - sudo setsebool -P allow_tcpd_read 1 - Permite que um serviço leia dados via TCP, ajustando permissões de rede no **SELinux**. * **Habilitar permissões de rede para containers (como Docker):** - sudo setsebool -P virt_use_nfs 1 - Ativa permissões no SELinux para que máquinas virtuais ou containers acessem sistemas de arquivos NFS. * **Restaurar o contexto de segurança para um sistema inteiro:** - sudo restorecon -R -v / - Restaura os contextos de segurança para todos os arquivos e diretórios do sistema, útil após modificações profundas nas políticas SELinux. * **Verificar o mapeamento de portas para contextos de segurança do SELinux:** - sudo semanage port -l - Lista todas as portas associadas a contextos de segurança no SELinux, mostrando quais serviços podem usar determinadas portas. * **Adicionar um mapeamento de porta personalizado para um serviço:** - sudo semanage port -a -t http_port_t -p tcp 8081 - Mapeia a porta TCP 8081 para o contexto de segurança **http_port_t**, permitindo que servidores HTTP usem essa porta.