11.4. Adicionar regras de permissão e negação de fapolicida
O conjunto padrão de regras do pacote fapolicyd não afeta as funções do sistema. Para cenários personalizados, como armazenar binários e scripts em um diretório não-padrão ou adicionar aplicações sem os instaladores yum ou rpm, é necessário modificar as regras existentes ou adicionar novas regras. Os passos seguintes demonstram a adição de uma nova regra para permitir um binário personalizado.
Pré-requisitos
-
A estrutura
fapolicydestá implantada em seu sistema.
Procedimento
Copie seu binário personalizado para o diretório necessário, por exemplo:
cp /bin/ls /tmp /tmp/ls bash: /tmp/ls: Operation not permitted
$ cp /bin/ls /tmp $ /tmp/ls bash: /tmp/ls: Operation not permittedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Pare o serviço
fapolicyd:systemctl stop fapolicyd
# systemctl stop fapolicydCopy to Clipboard Copied! Toggle word wrap Toggle overflow Use o modo de depuração para identificar uma regra correspondente. Porque a saída do comando
fapolicyd --debugé verbosa e você só pode pará-la pressionando Ctrl+C ou matar o processo correspondente, redirecionar a saída de erro para um arquivo:fapolicyd --debug 2> fapolicy.output & [1] 51341
# fapolicyd --debug 2> fapolicy.output & [1] 51341Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alternativamente, você pode executar o modo de depuração
fapolicydem outro terminal.Repita o comando que não foi permitido:
/tmp/ls bash: /tmp/ls: Operation not permitted
$ /tmp/ls bash: /tmp/ls: Operation not permittedCopy to Clipboard Copied! Toggle word wrap Toggle overflow Parar o modo de depuração, retomando-o em primeiro plano e pressionando Ctrl+C:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alternativamente, mate o processo do modo de depuração
fapolicyd:kill 51341
# kill 51341Copy to Clipboard Copied! Toggle word wrap Toggle overflow Encontre uma regra que negue a execução de seu pedido:
cat fapolicy.output [...] rule:9 dec=deny_audit perm=execute auid=1000 pid=51362 exe=/usr/bin/bash : file=/tmp/ls ftype=application/x-executable [...]
# cat fapolicy.output [...] rule:9 dec=deny_audit perm=execute auid=1000 pid=51362 exe=/usr/bin/bash : file=/tmp/ls ftype=application/x-executable [...]Copy to Clipboard Copied! Toggle word wrap Toggle overflow Adicione uma nova regra
allowbefore a regra que negou a execução de seu binário personalizado no arquivo/etc/fapolicyd/fapolicyd.rules. A saída do comando anterior indicava que a regra é a regra número 9 neste exemplo:allow perm=execute exe=/usr/bin/bash trust=1 : path=/tmp/ls ftype=application/x-executable trust=0
allow perm=execute exe=/usr/bin/bash trust=1 : path=/tmp/ls ftype=application/x-executable trust=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Alternativamente, você pode permitir a execução de todos os binários no diretório
/tmp, adicionando a seguinte regra no arquivo/etc/fapolicyd/fapolicyd.rules:permitir perm=execute exe=/usr/bin/bash trust=1 : dir=/tmp/ all trust=0
permitir perm=execute exe=/usr/bin/bash trust=1 : dir=/tmp/ all trust=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow Para evitar mudanças no conteúdo de seu binário personalizado, defina a regra necessária usando um checksum SHA-256:
sha256sum /tmp/ls 780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836 ls
$ sha256sum /tmp/ls 780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836 lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow Mude a regra para a seguinte definição:
allow perm=execute exe=/usr/bin/bash trust=1 : sha256hash=780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836
allow perm=execute exe=/usr/bin/bash trust=1 : sha256hash=780b75c90b2d41ea41679fcb358c892b1251b68d1927c80fbc0d9d148b25e836Copy to Clipboard Copied! Toggle word wrap Toggle overflow Iniciar o serviço
fapolicyd:systemctl start fapolicyd
# systemctl start fapolicydCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Etapas de verificação
Verifique se seu binário personalizado já pode ser executado, por exemplo:
/tmp/ls ls
$ /tmp/ls lsCopy to Clipboard Copied! Toggle word wrap Toggle overflow