User Tools

Site Tools


wiki:linux:comandos:comando_selinux

Gerenciamento do SELinux - Nível Básico

Nível Básico

  • Verificar o status atual do SELinux:
    1. sestatus
    2. 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:
    1. cat /etc/selinux/config
    2. 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:
    1. sudo setenforce 0
    2. 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:
    1. sudo setenforce 1
    2. 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:
    1. ls -Z /caminho/arquivo
    2. 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:
    1. sudo chcon -t httpd_sys_content_t /var/www/html/index.html
    2. 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:
    1. sudo restorecon /var/www/html/index.html
    2. 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:
    1. sudo ausearch -m avc
    2. Busca no log de auditoria do SELinux por eventos de controle de acesso violado (AVC), mostrando potenciais problemas.
  • Exibir logs do SELinux:
    1. sudo cat /var/log/audit/audit.log | grep AVC
    2. 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:
    1. sudo nano /etc/selinux/config
    2. 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:
    1. sudo getsebool -a
    2. 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:
    1. sudo setsebool httpd_can_network_connect 1
    2. 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:
    1. sudo setsebool -P httpd_can_network_connect 1
    2. 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:
    1. ps -eZ | grep httpd
    2. 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:
    1. sudo runcon -t httpd_t /bin/bash
    2. 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:
    1. sudo ausearch -m avc -ts today
    2. 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:
    1. sudo sealert -a /var/log/audit/audit.log
    2. 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:
    1. sudo restorecon -R /var/www
    2. 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:
    1. sudo chcon -t samba_share_t /srv/samba/public
    2. 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):
    1. Gerar uma regra baseada em eventos de auditoria:
sudo ausearch -m avc -ts recent | audit2allow
  1. 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:
    1. Gerar o módulo:
sudo ausearch -m avc -ts recent | audit2allow -M mypolicymodule

<br>

  1. Instalar o módulo gerado:
sudo semodule -i mypolicymodule.pp

<br>

  1. 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:
    1. sudo semodule -l
    2. Exibe uma lista de todos os módulos de política instalados no sistema.
  • Remover um módulo de política personalizado:
    1. sudo semodule -r mypolicymodule
    2. 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:
    1. sudo sesearch --allow --source httpd_t --target file_t
    2. 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:
    1. 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:
    1. 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:
    1. sudo semanage boolean -l | grep httpd
    2. 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:
    1. sudo setsebool -P allow_tcpd_read 1
    2. 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):
    1. sudo setsebool -P virt_use_nfs 1
    2. 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:
    1. sudo restorecon -R -v /
    2. 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:
    1. sudo semanage port -l
    2. 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:
    1. sudo semanage port -a -t http_port_t -p tcp 8081
    2. 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