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.