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

O Apache é configurado pela colocação de diretivas nos arquivos de configuração de texto simples. O principal arquivo de configuração normalmente é httpd.conf. Quando você compila o Apache, pode indicar a localização deste arquivo. As diretivas podem ser colocadas em quaisquer destes arquivos de configuração para alterar o comportamento do Apache. Quando você efetua mudanças nos arquivos de configuração principais, precisa iniciar ou reiniciar o Apache para que as mudanças sejam reconhecidas.

5.2.1. Diretivas de hosts virtuais

As diretivas de hosts virtuais controlam se as solicitações que contêm informações de nome de caminho à direita, após um nome de arquivo real (ou arquivo não existente em um diretório existente), são aceitas ou rejeitadas. Para obter a documentação do Apache sobre diretivas de hosts virtuais, consulte http://httpd.apache.org/docs-2.0/mod/core.html#virtualhost

A tecla de configuração específica de change_hat é ImmDefaultHatName e é usada da mesma maneira que ImmHatName, por exemplo, ImmDefaultHatName My_Funky_Default_Hat.

A opção de configuração é na realidade baseada em uma diretiva de servidor, que lhe permite usar a palavra-chave para outras opções, desta maneira configurando-a para o servidor padrão. Hosts virtuais são considerados internamente no Apache como “servidores” separados, de maneira que você pode configurar um nome de hat padrão para o servidor padrão, assim como um para cada host virtual, se desejar.

Quando chega uma solicitação, as seguintes etapas refletem a seqüência em que mod-apparmor tenta aplicar hats.

  1. Um hat de localização ou diretório conforme especificado pela palavra-chave ImmHatName.

  2. Um hat nomeado por todo o caminho do URI.

  3. Um hat de servidor padrão conforme especificado pela palavra-chave ImmDefaultHatName.

  4. DEFAULT_URI (e se não existir nenhum, volta para o hat “pai” do Apache).

5.2.2. Diretivas de localização e diretório

Diretivas de localização e diretório especificam nomes de hat no arquivo de configuração de programa, de maneira que o programa chama o hat relativo à sua segurança. Para o Apache, é possível encontrar documentações sobre diretivas de localização e diretório em http://httpd.apache.org/docs-2.0/sections.html.

O exemplo de diretiva de localização abaixo especifica que, para um determinado local, mod-apparmor deve usar um hat específico:

<Location /foo/>
      ImmHatName MY_HAT_NAME
</Location>

Tenta usar MY_HAT_NAME para qualquer URI iniciando com /foo/ (/foo/, /foo/bar, /foo/cgi/path/blah_blah/blah, etc.).

A diretiva de diretório funciona da mesma maneira que a diretiva de localização, salvo que se refere a um nome de caminho no sistema de arquivos, no exemplo a seguir:

<Directory "/srv/www/www.immunix.com/docs"> # Note lack of trailing slash
      ImmHatName immunix.com
</Directory>

Exemplo:  O programa phpsysinfo é usado para ilustrar uma diretiva de localização no exemplo a seguir. O tarball pode ser descarregado de http://phpsysinfo.sourceforge.com.

  1. Após descarregar o tarball, instale-o em /srv/www/htdocs/sysinfo/.

  2. Crie /etc/apache2/conf.d/sysinfo.conf e adicione o texto a seguir a ele:

    <Location "/sysinfo">
              ImmHatName sysinfo
    </Location>

    O hat a seguir deve, então, funcionar para phpsyinfo:

       ^sysinfo {
      #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,
      }
    
  3. Recarregue perfis do Novell AppArmor digitando rcapparmor restart na janela de terminal como Root.

  4. Conectado como Root, reinicie o Apache digitando rcapache2 restart na janela de terminal.

  5. Digite http://hostname/sysinfo/ em um browser para receber as informações do sistema enviadas por phpsysinfo.

  6. Para rastrear os erros de configuração, vá para /var/log/syslog ou execute dmesg e procure quaisquer rejeições na saída.