No Linux Fedora Core 3, foi introduzido o conceito de varíaveis booleanas para que o administrador de sistema tenha mais flexibilidade no gerenciamento das políticas SELinux, sem que tenha que criar ou modificar as políticas existentes. São várias declarações do tipo if-then-else que foram codificadas diretamente na política que permitem modificar a maneira que o SELinux trabalha somente ligando ou desligando essas variáveis booleanas.
Como as aplicações podem trabalhar de muitas maneiras diferentes, a tarefa do desenvolvedor SELinux de escrever uma política que atenda a todas as situações é difícil. Um bom exemplo de uma situação dessas é o servidor FTP que permite o usuário anônimo (anonymous, mas que o administrador deseja que os demais usuários também utilizem o servidor FTP para acessar seus diretórios home. Nesse caso torna-se necessária a utilização da variável booleana SELinux ftp_home_dir para habilitar ou desabilitar essa funcionalidade. Para que se tenha uma idéia do poder e da flexibilidade que o SELinux fornece somente com o uso de variáveis booleanas, segue uma relação de algumas variáveis relacionadas somente com o serviço de FTP:
- allow_ftpd_anon_write: permissão de escrita para o usuário anônimo no servidor FTP;
- allow_ftpd_full_access: o servidor FTP pode permitir acesso a todos os sistemas de arquivos visíveis pelo sistema operacional;
- allow_ftpd_use_cifs: permite que o servidor FTP acesse sistemas de arquivos CIFS (samba);
- allow_ftpd_use_nfs: permite que o servidor FTP acesse sistemas de arquivos NFS;
- ftp_home_dir: variável booleana desejada no exemplo, que permite que os diretórios homes dos usuários sejam disponibilizados através de FTP.
Além do nome dessas variáveis booleanas que já passam uma idéia da sua funcionalidade, essas variáveis são documentadas em diversos manuais relacionados com os serviços que elas atendem. Por exemplo, para verificar a documentação das variáveis relacionadas ao serviço de ftp, basta dar o comando: ``man ftpd_selinux''; as variáveis relacionadas com o serviço http são documentadas através do comando ``man httpd_selinux'', etc. Para listar todos os manuais disponíveis, basta executar o comando ``man -k selinux''.
Existem duas ferramentas de linha de comando usadas para o gerenciamento das variáveis booleanas:
- setsebool: realiza a mudança de valor de uma variável booleana. Múltiplas variáveis booleanas podem ser modificadas ao mesmo tempo como uma transação, se uma ou mais falhar todas irão falhar. Por padrão, a mudança só terá efeito até o próximo boot, a não ser que seja utilizado com a opção ``-P '' que torna as mudanças permanentes. Essas mudanças são registradas no arquivo
/etc/selinux/targeted/modules/active/booleans.local.
- getsebool: mostra os valores de variáveis booleanas. Com a opção ``-a'' mostra todas as variáveis. Para verificar todas as variáveis relacionadas com o serviço http, pode ser executado: ``getsebool -a | grep http''.
Além dessas ferramentas de linha de comando, existe uma interface GUI onde também é possível realizar mudanças nas variáveis booleanas e ter uma breve explicação do uso de cada uma, através do ``system-config-selinux'', mostrado na figura 3.7.
Figure Figura 3.7::
Configuração de variáveis booleanas SELinux
|
|
Jeronimo Zucco
2008-04-26