wiki:linux:comandos:comando_selinux
Table of Contents
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
<br>
- Instalar o módulo gerado:
sudo semodule -i mypolicymodule.pp
<br>
- 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:<br>
sudo semanage permissive -a sshd_t
<br>
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:<br>
sudo nano myservice.te
<br>
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:**<br>
<code>sudo checkmodule -M -m -o myservice.mod myservice.te</code><br>
<code>sudo semodule_package -o myservice.pp -m myservice.mod</code><br>
<code>sudo semodule -i myservice.pp</code><br>
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.
wiki/linux/comandos/comando_selinux.txt · Last modified: by Wiki Administrator
