Estou estudando o funcionamento básico do SELinux e consideraria útil desencadear uma negação. Minha máquina de teste está executando o CentOS 7, é uma instalação básica do servidor sem serviços extras e a getenforce declara 'Reforçar'. Então, eu tinha certeza de que tornar o / root legível pelo mundo e tentar ler arquivos de lá como um usuário sem privilégios resolveriam o problema. Mas sem sorte! Alguém pode sugerir alguns testes rápidos? Tentando acessar caminhos, ou abrir portas, etc.
Idealmente, estou procurando comandos simples de shell que um DAC não teria restringido, mas um MAC notará e negará. Como tal, não pretendo compilar programas sob medida ou instalar serviços específicos (como um servidor Web) para conseguir isso. Isso é valioso, pois fornece uma maneira genérica e clara de ver o SELinux em ação.
Não tenho nenhum problema em modificar o DAC (ou seja, as permissões do sistema de arquivos) para torná-los menos restritivos do que seriam por padrão como parte de um teste.
Respostas:
Para demonstrar o utilitário do SELinux na detecção de bugs para código de terceiros / do seu próprio desenvolvedor, aqui está um teste de proteção de memória (modificando o primeiro exemplo de código aqui ):
Compilar e mostrar o padrão (não capturado)Altere os booleanos para detectar o problema:
fonte
Isso demonstra claramente uma política de MAC em que um DAC equivalente poderia ter sido ignorado em uma instalação básica do CentOS 7.
Por padrão (no CentOS no momento da gravação), sem privilégios, os usuários que não são do sistema fazem logon como a função 'unconfined_u'. No entanto, podemos mudar nosso sistema para que nosso usuário não privilegiado 'alice' seja colocado na função 'user_u'. As políticas padrão podem ser feitas para restringir claramente essa função com apenas uma pequena quantidade de configuração adicional.
Agora desative a capacidade desses usuários de executar arquivos localizados em seus diretórios pessoais e / tmp. Mais uma vez, o padrão é permitir esse comportamento. Este comando pode levar um momento para ser concluído .
Agora (com nosso usuário não privilegiado), podemos fazer login e tentar executar algo em uma dessas áreas proibidas. Como você pode ver, somos negados.
Finalmente, podemos ver o log do AVC para ver nossa negação do SELinux.
fonte
A menos que você tenha alterado suas políticas na guia Boolean do system-config-selinux (ou em / etc / selinux / policy), o padrão deve responder ao seguinte (NB, você também pode instalar o setroubleshoot para um mergulho mais profundo) :
Em seguida, reinicie o servidor da web e tente acessar http: // localhost / ks com o navegador da web. Você deve ver uma mensagem "Proibida". Se você estiver seguindo
/var/log/audit/audit.log
ou executandoausearch -m avc -ts recent
, poderá ver a mensagem:type=AVC msg=audit(1391277951.222:266): avc: denied { read } for pid=1731 comm="httpd" name="ks" dev=sda1 ino=22351 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined u:object r:default t:s0 tclass=dir
Você pode alterar o contexto do SELinux
chcon -Rv --reference /var/www/html /install/ks
se não quiser desabilitar o SELinux, mas conseguir acessar o recurso.EDIT: desculpe, não vi que você disse "não é um servidor web". Tente
chcon -u fake_u <filename>
usar uma conta não privilegiada em um arquivo do sistema.fonte
instalar dois pacotes pequenos - sem dependências
iniciar um servidor FTP
crie um arquivo na casa do root
mova do diretório raiz para o diretório FTP.
nota: mova, não copie, ou o fcontext do arquivo mudará
efetue login no servidor FTP como usuário do cliente FTP e tente acessar o novo arquivo.
Observação: o preenchimento automático da guia não funcionará aqui
visualizar a negação nos logs brutos
ou se você
setroubleshoot*
instaloufonte