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:
- Proteger contra acesso não autorizado para processos e arquivos.
- Reduzir os danos de ataques, mesmo que um processo tenha sido comprometido.
- 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:
- Enforcing — ativo, aplica políticas de segurança e bloqueia processos que violam as regras.
- Permissive — apenas registra violações nos logs, mas não bloqueia ações.
- Disabled — completamente desativado
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?
- unconfinedu — o usuário no SELinux.
- objectr — tipo de objeto.
- httpdsyscontent_t — tipo de acesso (nesse caso, relacionado ao servidor web).
- 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:
Cheque o status do SELinux:
$ sestatusCertifique-se de que o SELinux está ativado e rodando no modo enforcing.
Veja os contextos dos arquivos:
$ ls -Z /var/www/htmlSe o contexto estiver errado, altere ele:
$ sudo chcon -t httpd_sys_content_t /var/www/html/*Verifique o funcionamento do servidor web.
7. Erros e problemas comuns
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."Por que meu serviço não está funcionando?" O SELinux tá bloqueando o acesso. Usa o
audit.logpra analisar:$ sudo cat /var/log/audit/audit.log | grep deniedAs mudanças de contexto não são salvas. Não usa
chcon, usa os comandos pra alterações permanentes, tiposemanage.
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.
GO TO FULL VERSION