4.3. Breves Fundamentos e História do SELinux
O SELinux foi originalmente um projeto de desenvolvimento da National Security Agency (NSA )[6], entre outros. O SELinux é uma implementação do Flask [7], uma arquitetura de segurança de sistemas operacionais. A NSA integrou o SELinux ao kernel do Linux usando a estrutura dos Módulos de Segurança Linux (LSM ). O SELinux motivou a criação dos LSM, conforme sugestão do Linus Torvalds, que queria uma abordagem modular para segurança, ao invés de simplesmente aceitar o SELinux no kernel.
Originariamente, a implementação do SELinux usava IDs de segurança persistente (PSIDs) armazenadas em um campo vago do inode ext2. Estas representações numéricas (ou seja, ilegíveis para o usuário) eram associadas pelo SELinux à uma etiqueta de contexto de segurança. Infelizmente, isto implicava a modificação de cada tipo de sistema de arquivos para suportar PSIDs, e portanto não era uma solução redimensionável nem tampouco uma solução que seria suportada upstream no kernel do Linux.
A evolução subseqüente do SELinux veio na forma de um módulo de kernel carregável para a série de kernels de versões 2.4.<x> do Linux. Este módulo armazenava PSIDs em um arquivo normal, e o SELinux podia suportar mais sistemas de arquivos. Esta solução não foi ideal em termos de desempenho, e era inconsistente de uma plataforma para outra. Finalmente, o código do SELinux foi integrado upstream ao kernel 2.6.x, o qual oferece completo suporte para os LSM e possui funções extendidas (xattrs ) no sistema de arquivos ext3. O SELinux mudou para a utilização de xattrs para o armazenamento de informações de contexto de segurança. O espaço de nome (namespace) xattr oferece a separação útil para múltiplos módulos de segurança existentes no mesmo sistema.
Muito do trabalho despendido em aprontar o kernel para upstream, assim como o desenvolvimento subseqüente do SELinux tem sido um esforço conjunto entre a NSA, a Red Hat, e a comunidade de desenvolvedores do SELinux.
Para maiores informações sobre a história do SELinux, o site definitivo é o http://www.nsa.gov/selinux/.
[6] A NSA é a agência de criptanálise do governo Federal dos Estados Unidos da América, responsável pela confiabilidade de informações e inteligência de comunicações. Você pode ler mais sobre a NSA no site da agência em http://www.nsa.gov/about/.
[7] O Flask foi concebido num projeto visando a integração do Distribuição de Sistema Operacional Confiável (DTOS ) ao sistema operacional de pesquisas chamado Fluke. Flask era o nome da arquitetura e da implementação no sistema operacional Fluke.