Nos sistemas ativados por SELinux, cada objeto (processos, arquivos, etc) possui uma etiqueta de segurança. A política do SELinux contém as regras que descrevem as operações permitidas para esses rótulos. A política padrão é bastante complexa e extensa. Configurar a política pode já ser suficiente para impedir a montagem na maioria das localizações (com base na etiqueta).
A política não impõe restrições a usuários não limitados. Além disso, allow_mount_anyfile controla se o comando mount pode usar (quase) qualquer arquivo como um ponto de montagem. Usando usuários confinados colocará muitos limites em como os usuários podem acessar o sistema. O SELinux Controle de Acesso Baseado na Função (RBAC) coloca o usuário confinado em uma função confinada. As funções limitam quais domínios (etiquetas de segurança do processo) são permitidos para a função. Além disso, um usuário confinado em user_r não pode alternar para outra função.
Podemos inspecionar a política instalada para determinar se é possível para um usuário em papel confinado usar um arquivo / diretório rotulado como um ponto de montagem (diretamente ou abusando de outro domínio permitido).
Primeiro, verifique com quais domínios user_r podem fazer a transição com seinfo :
seinfo -r user_t -x
O idioma de política do SELinux tem a mounton permissão que permite que um domínio use o arquivo / diretório de destino como ponto de montagem. Para consultar a política instalada para encontrar domínios, é permitido usar o objeto de destino como ponto de montagem:
sesearch --allow -t <target file/directory type> -p mounton
Se não houver regras com um domínio ao qual user_r tenha permissão, um usuário em user_r não poderá usar o destino como ponto de montagem (mesmo se forem root em user_r ). Além disso, deve-se verificar se não há permissões relabelfrom (reclassificação) ou unlink que poderiam ser usadas para contornar a política.
Restringir o administrador (root em sysadm_r ) não é trivial. Ele requer um módulo de política com um novo tipo personalizado e / ou personalizando a política base, já que sysadm_t provavelmente tem as permissões mencionadas anteriormente. A política personalizada precisa ter um tipo acessível apenas aos domínios permitidos. Além disso, a política precisa negar qualquer coisa que possa permitir contornar a política, resultando em um usuário root que é um pouco mais próximo do usuário confinado que o usuário root.