Um perfil do Novell® AppArmor representa política de segurança para uma instância de programa ou processo individual. Aplica-se a um programa executável, mas se uma parte do programa precisar de permissões de acesso diferentes de outras partes, o programa poderá “mudar hats” para usar um contexto de segurança diferente, distinto do acesso do programa principal. É conhecido como hat ou subperfil.
O ChangeHat permite que programas mudem para ou de um hat dentro de um perfil do Novell AppArmor. Ele permite que você defina segurança em um nível mais refinado que o processo.
Este recurso exige que cada aplicativo “reconheça changehats”, ou seja, ele é modificado para fazer uma solicitação ao módulo do Novell AppArmor para alternar domínios de segurança em horas arbitrárias durante a execução do aplicativo.
Um perfil pode ter um número arbitrário de subperfis, mas há apenas dois níveis: um subperfil não pode ter outros sub-subperfis. Um subperfil é escrito como um perfil separado e nomeado como o perfil que contém, seguido do nome do subperfil, separado por um ^. Os subperfis devem ser armazenados no mesmo arquivo do perfil do pai.
![]() | Nota |
|---|---|
Para obter mais informações, consulte a página de manual | |
O Novell AppArmor fornece um módulo mod-apparmor para o programa Apache. O módulo mod-apparmor funciona no seu SUSE Linux para fazer com que o servidor web do Apache “reconheça ChangeHats”. Ele é instalado se o Apache estiver no seu sistema.
Quando o Apache reconhece ChangeHats, ele verifica os seguintes perfis de segurança personalizados do Novell AppArmor na ordem dada para toda solicitação de URI recebida.
Hat específico de URI (por exemplo, ^phpsysinfo-dev/templates/classic/images/bar_left.gif)
DEFAULT_URI
HANDLING_UNTRUSTED_INPUT
Se você tiver o Apache 2 exigido no sistema, o módulo mod-apparmor será instalado automaticamente com o Novell AppArmor assim como adicionado à configuração do Apache. Não há suporte para o Apache 1.3.
![]() | Nota |
|---|---|
Se você instalar o LoadModule change_hat_module modules/mod_change_hat.so | |
Como na maioria das ferramentas do Novell AppArmor, você pode usar dois métodos para gerenciar ChangeHat, YaST ou a interface da linha de comando. O gerenciamento de aplicativos que reconheçam ChangeHats é muito mais flexível na linha de comando, mas o processo também é mais complicado. Ambos os métodos permitem que você gerencie os hats do aplicativo e os preencha com entradas de perfil.
Nas etapas a seguir, uma demonstração o orientará a adicionar hats a um perfil Apache usando o YaST. No , os utilitários de perfil do Novell AppArmor solicitarão que você crie novos hats para solicitações de URI distintas. Escolher criar um novo hat permite que você crie perfis individuais para cada URI. Isto permite criar regras muito rígidas para cada solicitação.
Se o URI em processamento não representar um processamento importante ou não representar um risco de segurança importante, você poderá selecionar com segurança para processar este URI no hat padrão, que é o perfil de segurança padrão.
Na demonstração, criamos um novo hat para o URI phpsysinfo-dev e seus acessos subseqüentes. Usando os utilitários de perfil, delegamos o que é adicionado a este novo hat. O hat resultante se torna um container de segurança rígida que abrange todo o processamento no servidor que ocorre quando o URI phpsysinfo-dev é passado para o servidor web do Apache.
Nesta demonstração, geramos um perfil para o aplicativo phpsysinfo (para obter mais informações, consulte http://phpsysinfo.sourceforge.net). Assume-se que o pacote phpsysinfo-dev esteja instalado em /srv/www/htdocs/phpsysinfo-dev/ em uma instalação limpa (nova) do Novell AppArmor.
Com phpsysinfo-dev instalado, você está pronto para adicionar hats ao perfil do Apache. Na interface de usuário do Novell AppArmor, selecione .
![]() |
Em , digite httpd2-prefork.
Clique em . A janela será exibida.
![]() |
Reinicie o Apache digitando rcapache2 restart em uma janela de terminal.
![]() | Nota |
|---|---|
Reinicie qualquer programa para o qual esteja criando perfis neste ponto. | |
Abra http://localhost/phpsysinfo-dev/ em uma janela de browser da web. A janela de browser deve exibir o uso da rede e informações do sistema.
![]() | Nota |
|---|---|
Para garantir que a solicitação será processada pelo servidor e você não analisará os dados em cache no seu browser, é necessário atualizar a página. Para isso, clique no botão do browser para ter certeza que o Apache processará a solicitação para o URI | |
Clique em . O Novell AppArmor inicia a ferramenta logprof, que explora todas as informações aprendidas na etapa anterior. Começa a solicitar as perguntas sobre perfil.
Na nossa demonstração, primeiro o logprof exibe ou porque observou que um URI foi acessado phpsysinfo-dev. Selecione .
![]() |
Clique em .
Escolher na etapa anterior cria um novo hat no perfil e especifica que as perguntas subseqüentes sobre as ações do script são adicionadas ao hat recentemente criado em vez do hat padrão deste aplicativo.
Na tela seguinte, o Novell AppArmor exibe um programa externo que foi executado pelo script. Você pode especificar que o programa deve ser executado delimitado pelo phpsysinfo-dev hat (escolha ), delimitado por um perfil separado (escolha ), ou que deve ser executado não delimitado ou sem qualquer perfil de segurança (escolha ). Para o caso da opção , um novo perfil é criado para o programa se ainda não existir nenhum.
![]() | Nota |
|---|---|
Selecionar pode criar uma brecha de segurança importante e deve ser feito com cautela. | |
![]() |
As questões restantes solicitam que você gere novos hats e adicione entradas para o perfil e seus hats. O processo de adicionar entradas aos perfis é abordado em detalhes na Seção 3.3.1, “Adicionando um perfil usando o assistente” (↑Guia de Administração do Novell AppArmor 2.0).
Quando todas as questões de perfil são respondidas, clique em para gravar as suas mudanças e sair do assistente.
A seguir um exemplo da aparência do phpsyinfo-dev hat.
Exemplo 5.1. Exemplo de phpsysinfo-dev Hat
^phpsysinfo {
#include <program-chunks/base-files>
/bin/df ix,
/bin/bash ix,
/dev/tty rw,
/etc/SuSE-release r,
/etc/fstab r,
/etc/hosts r,
/etc/mtab r,
/proc/** r,
/sbin/lspci ix,
/srv/www/htdocs/sysinfo/** r,
/sys/bus/pci/devices r,
/sys/devices/** r,
/usr/bin/who ix,
/usr/share/pci.ids r,
/var/log/apache2/{access,error}_log w,
/var/run/utmp r,
}
![]() | Nota |
|---|---|
O perfil, | |
Quando usar a caixa de diálogo (para obter instruções, consulte a Seção 3.3.3, “Editando um perfil” (↑Guia de Administração do Novell AppArmor 2.0)) ou quando adicionar um novo perfil usando (para obter instruções, consulte a Seção 3.3.2, “Adicionar Perfil Manualmente” (↑Guia de Administração do Novell AppArmor 2.0)), você receberá a opção de adicionar hats (subperfis) aos seus perfis do Novell AppArmor.
É possível adicionar um subperfil do ChangeHat da janela .
![]() |
![]() | Nota |
|---|---|
Para obter um exemplo de um perfil do Novell AppArmor, consulte o Exemplo 5.1, “Exemplo de phpsysinfo-dev Hat” (↑Guia de Administração do Novell AppArmor 2.0). | |