Construindo um Módulo de Política SELinux

Mesmo que não seja uma tarefa comum, o administrador pode se ver obrigado a construir um módulo de política SELinux para atender uma necessidade, seja um erro ainda não corrigido na política atual disponível, até o confinamento na política de um programa específico. Quem se dispor a construir um módulo de política SELinux deve ter conhecimento de como o programa que se deseja confinar funciona e de todos os seus arquivos envolvidos, além de suas implicações no uso de cada arquivo e a comunicação via rede. Supondo que se deseje criar uma política de segurança targeted para o programa servidor de SSH (sshd daemon), de uma maneira superficial suas funções deveriam ser desmembradas da seguinte maneira:

Existem ainda muito mais detalhes que devem ser vistos para essa política específica do servidor ssh (o arquivo de interfaces da política atual do servidor ssh possui 416 linhas de regras excluindo-se os comentários e linhas em branco) [PEBENITO 2006].
Visto a complexidade de os módulos de políticas serem criados do zero, e também a dificuldade na interpretação das entradas AVC geradas no log, foi criado um software chamado audit2allow. Audit2allow é um script feito na linguagem de programação perl que verifica os registros de logs AVC negados e gera um conjunto de regras que podem ser adicionadas na política SELinux para liberar essas operações. Ele não tem a intenção de ser um gerador automático de políticas de segurança, mas ajuda muito no desenvolvimento das mesmas. A saída do comando audit2allow deve sempre ser lida com cuidado antes de ser adicionada na política do sistema, porque existe a possibilidade que ele libere mais acessos do que estritamente necessário na aplicação envolvida. Essa ferramenta é melhor utilizada como um guia para escrever políticas.

Jeronimo Zucco 2008-04-26