De acordo com os próprios desenvolvedores do SELinux:
``NSA Security-enhanced Linux é um conjunto de patches ao kernel Linux que somados a alguns utilitários têm a função de incorporar uma forte e flexível arquitetura de controle de acesso mandatório na maioria dos subsistemas do kernel. Ele provê um mecanismo para forçar a separação da informação baseado em requisitos de confidencialidade e integridade. Ele previne ameaças de adulteração da informação e possibilita o confinamento do estrago que pode ser causado por aplicativos imperfeitos ou maliciosos. Isso inclui o conjunto de políticas exemplo feito para o propósito geral comum da segurança.''
Ou de forma mais objetiva, SELinux (Security-Enhanced Linux) é uma implementação de controle de acesso mandatório (MAC) no kernel Linux usando o framework LSM (Linux Security Modules).
O uso do SELinux tem por objetivos de segurança primários:
- Isolamento das aplicações: busca o nível do menor privilégio no uso de aplicações. Com isso, um problema de segurança em uma aplicação isolada (como bugs, vulnerabilidades e zero-days) não influencia o sistema como um todo, não comprometendo o funcionamento das outras aplicações. Desta maneira, diminui o efeito da exploração de vulnerabilidades, limitando a propagação de erros e reduzindo a necessidade de aplicação imediata de patches de segurança em aplicativos vulneráveis;
- Fluxo de informações: garantia de que a informação deve seguir caminhos predefinidos para acesso entre os processos;
- Confidencialidade: a informação não estará disponível ou será divulgada a indivíduos, entidades ou processos sem a devida autorização;
- Integridade: disponibilidade de informações confiáveis, corretas e dispostas em formato compatível com o de sua utilização. A informação manipulada mantém todas as características originais estabelecidas pelo proprietário da informação, incluindo controle de mudanças e garantia do seu ciclo de vida (nascimento, manutenção e destruição).
- Auto-proteção: como o SELinux é aplicado diretamente sobre o kernel do Linux, além de proteger as políticas de segurança, ele também tem por objetivo proteger o próprio sistema operacional (binários, configurações, recursos, etc) para se auto proteger;
- Menor privilégio: garante que as políticas aplicadas estão corretas e de que os processos possuem apenas o acesso necessário para realizar a sua função, e nada mais do que isso;
- Separação de papéis: definição das permissões de usuários e processos para evitar a elevação de privilégios e suas consequências.
Jeronimo Zucco
2008-04-26