A arquitetura do SELinux consiste nos seguintes componentes:
Código a nível de Kernel: Monitora a atividade do sistema e verifica se as operações requisitadas são autorizadas pela política de segurança corrente, negando qualquer operação não expressamente autorizada. Para realizar esse monitoramento, é utilizada a arquitetura de ganchos LSM, conforme figura 2.2.
Figure Figura 2.2::
Arquitetura do módulo LSM SELinux
O AVC (Access Vector Cache) é utilizado para aumentar a performance das verificações das políticas de segurança.
Biblioteca compartilhada: A maioria dos componentes SELinux são linkados com uma biblioteca compartilhada, atualmente chamada libselinux.so.1. Essa biblioteca disponibiliza funções associadas à API do SELinux.
Política de segurança: O servidor de segurança SELinux baseia suas decisões nos arquivos de políticas que podem ser configurados pelo administrador. A arquitetura do servidor de políticas de segurança pode ser visto na figura 2.3.
Figure Figura 2.3::
Arquitetura do Servidor de Políticas
Ferramentas: podem ser comandos especiais usados para administrar e usar o SELinux (chcon, checkpolicy, getenforce, newrole, run_init, setenforce, setfiles, avcstat, getsebool, matchpathcon, selinuxenabled, togglesebool), comandos Linux modificados (ls, id, ps, cp, mv, cron, login, etc) e ferramentas suplementares, com propósito de análise de políticas e desenvolvimento (apol, .setroubleshoot, slide, etc).
Sistemas de arquivos rotulados: É o sistema de arquivos Linux com suporte a extensão de atributos (xattr).