Baixe o app para aproveitar ainda mais
Prévia do material em texto
Funcionamento do MAC do SELinux O Linux possui um alto nível de segurança, e este é um dos principais fatores que contribui para o usuário a optar por sistemas baseados em Unix. Existe uma proteção adicional que é possível adicioná-la ao sistema, o SELinux (Security-Enhanced Linux), que é um mecanismo de controle de acesso que restringe ao máximo os privilégios de usuário (inclusive o root), aumentando a proteção de usuários, arquivos e processos inseridos no sistema Linux. O SElinux pode ser implantado ao sistema, habilitando no Kernel o MAC (Mandatory Access Control). Com o SELinux instalado ao sistema Linux, é possível implementar políticas de segurança, e gerenciar as interações entre o usuário e as aplicações, processos e arquivos de sistema. Os usuários do sistema operacional, podem ser gerenciados através do SELinux, criando regras, atribuindo papéis ou herdar permissões. Os usuários do SELinux não são os mesmos do Linux. O Mandatory Access Control (MAC), provido pelo SELinux, restringe o nível de controle que os usuários tem sobre os objetos que eles criam, e adiciona categorias e rótulos a todos os objetos do sistema de arquivos, ou seja, a hierarquia do MAC é maior que o DAC (Discretionary Access Control), que é utilizado pela maioria dos sistemas, para prover segurança aos objetos, usuários, aplicações e etc. Quando o MAC está implantado ao sistema, usuários e processos devem ter acesso adequado a estas categorias e rótulos para que então possam interagir com esses objetos, assim garantindo ao sistema uma defesa mais robusta e consistente. Veja o exemplo a seguir de restrição de uso à um arquivo: O usuário apache está sendo utilizado para executar o software Apache. Durante sua execução, devido uma falha de programação no código da página, o processo recebe uma requisição para acessar o arquivo /etc/passwd. As permissões do arquivo são as seguintes: # ls -l /etc/passwd -rw-r--r-- 1 root root 1760 Out 23 11:12 /etc/passwd Como aplicação do SELinux, o que se tem são rótulos contendo informações relevantes para a segurança de processos e arquivos. Essa informação é chamada de Contexto SELinux (SELinux context), e pode ser obtida utilizando a opção “-Z” no comando “ls”: # ls -lZ /etc/passwd -rw-r--r--. root root system_u:object_r:etc_t:s0 /etc/passwd No arquivo acima temos o contexto do usuário (system_u), a regra (object_r), o tipo (etc_t) e o nível (s0). Estas informações são utilizadas para determinar o acesso do usuário ao arquivo. Agora, vamos voltar ao exemplo anterior, e considerar que neste sistema o SELinux está ativo. Verificaremos então o contexto do processo do Apache: # ps axZ | grep httpd unconfined_u:system_r:httpd_t:s0 6906 ? Ss 0:00 /usr/sbin/httpd Logo, como o contexto do processo não coincide com o contexto do arquivo, o acesso ao mesmo será NEGADO, mesmo que nas permissões DAC o mesmo tenha permissão para tanto. Referência: SELinux - Aprimorando a segurança do sistema Linux - E-tinet (e-tinet.com) https://e-tinet.com/linux/selinux/#:~:text=%20Estrutura%20do%20SELinux%20%201%20SELinux%20user,ele%20classifica%20objetos%20%28arquivos%29%20e%20sujeitos...%20More%20 SELinux: Um importante aliado na Segurança de Servidores Linux (unicamp.br) https://www.security.unicamp.br/blog/54-selinux-um-importante-aliado-na-seguranca-de-servidores-linux-parte-1/
Compartilhar