O arquivo de configuração do SELinux é o /etc/selinux/config, e é lido somente em tempo de boot (algumas mudanças necessitam que os arquivos sejam rotulados novamente e sistema seja reinicializado para a configuração nesse arquivo ser efetivada). A biblioteca libselinux lê esse arquivo para descobrir como o sistema está configurado. Dentro desse arquivo, são configuradas quatro varáveis: SELINUX, SELINUXTYPE, SETLOCALDEFS e REQUIRESUSERS.
- SELINUX: Essa variável pode ter um desses três valores: enforcing, permissive e disabled.
- enforcing: Esse deveria ser o modo padrão, diz ao sistema para rodar o SELinux para verificar todos os acessos de sistema e não permitir todos os acessos não autorizados. O kernel bloqueia todos os acessos a menos que o acesso é explicitamente permitido na política. Todos os acessos negados são reportados no sistema de log como um AVC (Access Vector Cache), a menos que desenvolvedores da política de segurança tenham criado explicitamente uma regra para não auditar o acesso usando dontaudit.
- permissive: O kernel irá reportar todas as violações de acesso na forma de mensagens AVC, mas irá permitir o acesso, e também irá continuar a criar os rótulos dos arquivos de acordo com a política de segurança. O kernel irá gerar os logs AVC de uma maneira ligeiramente diferente da usada no modo enforcing. Exemplificando: no modo permissive apenas o primeiro log AVC da violação de acesso de um dado sujeito para um particular objeto é registrado. Já no modo enforcing, cada AVC de violação de acesso é registrado no log.
- disabled: Diz ao programa de inicialização para desabilitar o SELinux do sistema e pára de criar rótulos apropriados para cada arquivo, ou seja, caso seja necessário reabilitar o uso do SELinux, o sistema precisa recriar os rótulos de todo o sistema (através da criação do arquivo /.relabel e reinicialização da máquina).
Os valores da variável SELINUX podem ser alterados através de parâmetros passados ao kernel conforme visto anteriormente. Para verificar em qual modo SELinux o sistema corrente está rodando, é utilizado o comando sestatus:
- SELINUXTYPE: essa variável define em qual diretório verificar os demais arquivos de configuração do SELinux. Esses diretórios são por padrão nomeados de acordo com a política de segurança a ser adotada, portanto pode ser targeted, strict, mls, ou mesmo uma política personalizada (minha_política, por exemplo).
- SETLOCALDEFS: diz ao processo de inicialização e à carga da política de segurança se está sendo usada uma nova infra-estrutura de gerenciamento ou não. Se não estiver, ela carrega as customizações locais, variáveis booleanas SELinux e usuários. O valor dessa variável deveria ser sempre 0.
- REQUIRESUSERS: pode ser usado para questionar se existe relação entre usuários SELinux e com alguma entrada padrão. Se não existir, não será possível realizar o login e em última análise assume o valor user_u.
É altamente recomendado não alterar os valores das duas últimas variáveis (SETLOCALDEFS e REQUIRESUSERS). Nas distribuições Fedora e Red Hat Linux a configuração do SELinux também pode ser feita através de um utilitário gráfico, o system-config-selinux, demonstrado na figura 3.4:
Figure Figura 3.4::
Utilitário gráfico para configuração do SELinux
|
|
Jeronimo Zucco
2008-04-26