Capítulo 5. Criando perfil dos aplicativos web com o ChangeHat Apache

Sumário

5.1. Apache ChangeHat
5.2. Configuração do Apache para mod-apparmor

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.

[Note]Nota

Para obter mais informações, consulte a página de manual change_hat.


5.1. Apache ChangeHat

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.

[Note]Nota

Se você instalar o mod-apparmor sem o Novell AppArmor, será necessário verificar se o módulo para carregar o Apache tem um comando no arquivo de configuração que carrega o módulo mod-apparmor adicionando a seguinte linha ao arquivo de configuração do Apache:

LoadModule change_hat_module modules/mod_change_hat.so

5.1.1. Ferramentas para gerenciar aplicativos que reconheçam ChangeHats

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 Assistente para Adicionar Perfil, 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 Usar Hat Padrão 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.

  1. Com phpsysinfo-dev instalado, você está pronto para adicionar hats ao perfil do Apache. Na interface de usuário do Novell AppArmor, selecione Assistente para Adicionar Perfil.

    Assistente para Adicionar Perfil
  2. Em Perfil para Adicionar, digite httpd2-prefork.

  3. Clique em Criar Perfil. A janela Assistente de Perfil do AppArmor será exibida.

    Assistente de Perfil do AppArmor
  4. Reinicie o Apache digitando rcapache2 restart em uma janela de terminal.

    [Note]Nota

    Reinicie qualquer programa para o qual esteja criando perfis neste ponto.

  5. 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.

    [Note]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 Atualizar do browser para ter certeza que o Apache processará a solicitação para o URI phpsysinfo-dev.

  6. Clique em Explorar Entradas no Registro do Sistema para Adicionar a Perfis. 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.

  7. Na nossa demonstração, primeiro o logprof exibe Adicionar Hat Solicitado ou Usar Hat Padrão porque observou que um URI foi acessado phpsysinfo-dev. Selecione Adicionar Hat Selecionado.

    Assistente de Perfil do AppArmor: Adicionar hat solicitado
  8. Clique em Permitir.

    Escolher Adicionar Hat Solicitado 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 Herdar), delimitado por um perfil separado (escolha Perfil), ou que deve ser executado não delimitado ou sem qualquer perfil de segurança (escolha Não delimitado). Para o caso da opção Perfil, um novo perfil é criado para o programa se ainda não existir nenhum.

    [Note]Nota

    Selecionar Não delimitado pode criar uma brecha de segurança importante e deve ser feito com cautela.

    Assistente de Perfil do AppArmor: Herdar
    1. Selecione Herdar para o caminho /bin/bash. Isto adiciona /bin/bash/ (acessado pelo Apache) ao perfil de hat phpsysinfo-dev com as permissões necessárias.

    2. Clique em Permitir.

  9. 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 Concluir 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,
  }
[Note]Nota

O perfil, ^phpsysinfo-dev, só é válido no contexto de um processo sendo executado sob o perfil do pai httpd2-prefork.

5.1.2. Adicionando hats e entradas a hats

Quando usar a caixa de diálogo Editar Perfil (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 Adicionar Manualmente Perfil do Novell AppArmor (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 Caixa de Diálogo Perfil do AppArmor.

Caixa de diálogo Perfil do AppArmor
  1. Na janela Caixa de Diálogo Perfil do AppArmor, clique em Adicionar Entrada e selecione Hat. A caixa de diálogo Digitar Nome do Hat é aberta:

    Digitar nome do hat
  2. Digite o nome do hat a adicionar ao perfil do Novell AppArmor. O nome é o URI que, quando acessado, recebe as permissões configuradas no hat.

  3. Clique em Criar Hat. Você retornará à tela Caixa de Diálogo Perfil do AppArmor.

  4. Após adicionar o novo hat, clique em Concluído.

[Note]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).