Você precisa aprender como filtrar as negações de AVC e como escrever um módulo de política personalizado para permitir o acesso a uma ação específica (você, neste caso, script).
Eu começaria removendo o módulo inserido acima para começar um novo:
# semodule -r mymodule.pp
Depois, execute seu script:
# date && ./my_script.sh
A invocação de date
é útil para filtrar negações de AVC com base no registro de data e hora.
Em seguida, use o método usual para depurar as negações do AVC, que faz uso do comando ausearch(8)
:
# ausearch -m avc -ts $timestamp | audit2allow
Verifique a página de manual para mais informações sobre os switches que você pode usar, especificamente o -ts
flag.
Com essas informações, você saberá o que está sendo negado com base na política existente.
Agora, você deve determinar se concederá ou não esse acesso. Vamos supor que você queira conceder acesso. Você precisaria criar um módulo de política personalizado descrevendo as regras que definem o acesso que você deseja conceder. Isso é mais ou menos simples, dependendo da complexidade do seu script:
# ausearch -m avc -ts 10:40:00 | audit2allow -m my_script > my_script.te
Isso produzirá uma descrição type enforcement
.
Você deve revisar o código para garantir a correção e compilar o código type enforcement
em module
:
# checkmodule -M -m -o my_script.mod my_script.te
O módulo deve ser empacotado em policy package
para que você possa carregá-lo e descarregá-lo à vontade:
# semodule_package -o my_script.pp -m my_script.mod
Agora, você pode carregar a política usando:
# semodule -i my_script.pp
Verifique se está corretamente carregado:
# semodule -l | grep my_script
Em seguida, tente acionar as negações novamente e veja se há mais alertas (diferentes) no registro de auditoria referentes a esse mesmo processo.
Outras edições do código type enforcement
precisarão que o version
( 1.0
) seja atualizado ou o carregamento do pacote falhará. Depois de compilado e empacotado, a atualização do policy package
é feita:
# semodule -u my_script.pp
Há muito a aprender quando se inicia com o SELinux. Algumas referências úteis:
- As páginas de manual dos comandos.
- Verifique também a saída de
apropos selinux
.
A partir dos documentos do RHEL
Uma boa apresentação introdutória de Dave Quigley: