CodeGym /Cursos /Docker SELF /Introdução ao SELinux: verificando o status, ativando, co...

Introdução ao SELinux: verificando o status, ativando, comandos básicos

Docker SELF
Nível 5 , Lição 2
Disponível

1. O que é SELinux e por que ele é necessário?

SELinux (Security-Enhanced Linux) — é um módulo de segurança que fortalece o modelo tradicional de controle de acesso, adicionando o conceito de controle obrigatório. Ele permite que o administrador configure restrições mais rígidas para usuários e até mesmo para processos, minimizando os danos potenciais de possíveis ataques.

O que o torna único?

Imagine que seu sistema é uma casa. Os controles tradicionais de acesso (rwx para usuário, grupo e outros) são como as chaves das fechaduras nas portas. Mas e se alguém arrombar a porta? O SELinux se torna uma segunda linha de defesa, fortalecendo a proteção com regras de comportamento: "Ei, mesmo que você esteja dentro, não pode entrar no banheiro!"

Principais funções do SELinux:

  1. Proteger contra acesso não autorizado para processos e arquivos.
  2. Reduzir os danos de ataques, mesmo que um processo tenha sido comprometido.
  3. Princípios de "proteção por padrão" (tudo é proibido, exceto o que é permitido).

Modos de operação do SELinux

O SELinux pode operar em três modos:

  1. Enforcing — ativo, aplica políticas de segurança e bloqueia processos que violam as regras.
  2. Permissive — apenas registra violações nos logs, mas não bloqueia ações.
  3. Disabled — completamente desativado
Curiosidade:

O SELinux no modo enforcing é como aquele irmão mais velho rigoroso no seu sistema. O Permissive é o irmão mais novo que só reclama, mas não faz nada.


2. Verificando o status do SELinux

Pra começar, bora ver se o SELinux tá ativo e em qual modo ele tá rodando. Pra isso, existem alguns comandos práticos.

Comando getenforce

Esse comando só vai te dizer qual modo tá sendo usado agora: Enforcing, Permissive, ou Disabled.

$ getenforce
Enforcing

Se a saída for Disabled, então o SELinux tá desativado — e isso significa que você vai precisar de um pouco de esforço pra ativar, mas a gente fala sobre isso mais tarde.

Comando sestatus

Um relatório mais completo sobre o status do SELinux pode ser obtido com esse comando. Ele vai mostrar o estado atual, o modo ativo e a política em uso.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

Aqui você pode ver:

  • enabled/disabled — se o SELinux tá ativado ou não.
  • current mode — o modo ativo (enforcing, permissive).
  • loaded policy name — qual política tá carregada. Por exemplo, "targeted" significa que o SELinux aplica controle só em processos chave.

3. Alternando modos no SELinux

Pra mudar o modo atual do SELinux, você usa o comando setenforce.

Alternar para o modo permissive

Se você quiser relaxar temporariamente as regras do SELinux, dá pra ativar o modo permissive.

$ sudo setenforce 0

Agora o SELinux só vai registrar violações, mas não bloqueá-las. Você pode verificar a nova configuração com o comando getenforce:

$ getenforce
Permissive

Alternar de volta para o modo enforcing

Quando você quiser habilitar o controle rígido novamente, execute:

$ sudo setenforce 1

E claro, cheque o resultado:

$ getenforce
Enforcing

Essa alteração funciona imediatamente, mas só até o próximo reboot do sistema.


4. Ativando o SELinux

Se o SELinux estava desativado, você precisa fazer alterações no arquivo de configuração. O SELinux é gerenciado através do arquivo /etc/selinux/config.

Verificando o arquivo de configuração atual

Bora dar uma olhada no que está configurado por lá. Você pode usar qualquer editor de texto, tipo o nano:

$ sudo nano /etc/selinux/config

Você vai ver algo tipo isso:

# This file controls the state of SELinux on the system.
SELINUX=disabled
SELINUXTYPE=targeted

Alterando o SELinux para estado ativo

Pra ativar o SELinux, é só trocar a linha SELINUX=disabled pra SELINUX=enforcing ou SELINUX=permissive.

Olha só como o arquivo fica depois das mudanças:

# This file controls the state of SELinux on the system.
SELINUX=enforcing
SELINUXTYPE=targeted

Depois de editar, salva o arquivo e reinicia o sistema:

$ sudo reboot

Quando reiniciar, você pode conferir o status usando sestatus pra garantir que o SELinux tá ativo.


5. Analisando os contextos do SELinux

O que são contextos?

Contextos são rótulos que o SELinux usa para gerenciar acesso. Cada arquivo, processo e usuário tem seu próprio contexto.

Você pode verificar os contextos dos arquivos usando o comando ls -Z. Aqui está um exemplo:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

O que isso significa?

  1. unconfinedu — o usuário no SELinux.
  2. objectr — tipo de objeto.
  3. httpdsyscontent_t — tipo de acesso (nesse caso, relacionado ao servidor web).
  4. s0 — nível de segurança.

Alterando o contexto

Se o SELinux estiver impedindo o funcionamento do seu aplicativo, talvez seja necessário alterar o contexto do arquivo. Use o comando chcon:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

Esse comando altera temporariamente o tipo de contexto do arquivo. No entanto, após a reinicialização, as alterações podem desaparecer, então, para configurações permanentes, é melhor modificar a política do SELinux (falaremos disso mais tarde).


6. Exemplo de como usar o SELinux

Bora analisar um exemplo. Você é administrador de servidor e quer configurar um servidor web, mas o SELinux bloqueia o acesso aos arquivos no diretório /var/www/html.

Passos:

  1. Cheque o status do SELinux:

    $ sestatus
    

    Certifique-se de que o SELinux está ativado e rodando no modo enforcing.

  2. Veja os contextos dos arquivos:

    $ ls -Z /var/www/html
    
  3. Se o contexto estiver errado, altere ele:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Verifique o funcionamento do servidor web.


7. Erros e problemas comuns

  1. SELinux está desabilitado e você nem percebe isso. Sempre verifica o status com o comando sestatus. Muitos admins esquecem de habilitar o SELinux depois de instalar o sistema.

  2. "Por que meu serviço não está funcionando?" O SELinux tá bloqueando o acesso. Usa o audit.log pra analisar:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. As mudanças de contexto não são salvas. Não usa chcon, usa os comandos pra alterações permanentes, tipo semanage.

Aprender SELinux é como treinar pra uma maratona: no começo é difícil, mas com o tempo você vai sacar como essa ferramenta pode aumentar pra caramba a segurança do sistema. Usa esse conhecimento pra ser aquele admin que até o hacker mais esperto não consegue derrubar.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION