5.2. Configurazione di Apache per mod-apparmor

Per configurare Apache, č necessario specificare le direttive nel file di configurazione di testo normale. In genere, il file di configurazione principale č httpd.conf. Durante la compilazione di Apache č possibile specificare il percorso di questo file. Č possibile inserire le direttive in uno di questi file di configurazione per modificare il comportamento di Apache. Quando si apportano modifiche ai file di configurazione principali, č necessario avviare o riavviare Apache per applicarle.

5.2.1. Direttive dell'host virtuale

Le direttive dell'host virtuale controllano se le richieste contenenti le informazioni sul nome del percorso finale, che segue un nome di file reale (o file inesistente in una directory esistente), vengono accettate o rifiutate. Per la documentazione Apache sulle direttive dell'host virtuale, vedere http://httpd.apache.org/docs-2.0/mod/core.html#virtualhost.

La parola chiave di configurazione di change_hat č ImmDefaultHatName e viene utilizzata in modo simile a ImmHatName, ad esempio ImmDefaultHatName My_Funky_Default_Hat.

L'opzione di configurazione si basa in realtā su una direttiva del server per consentire di utilizzare la parola chiave all'esterno delle altre opzioni e quindi di impostarla per il server predefinito. Gli host virtuali vengono considerati in Apache come "server" separati, pertanto č possibile specificare un nome hat predefinito per il server predefinito e un nome per ciascun server virtuale.

Quando arriva una richiesta, i passaggi successivi rispecchiano la sequenza con cui mod-apparmor tenta di applicare gli hat.

  1. Un hat di percorso o directory come specificato dalla parola chiave ImmHatName.

  2. Un hat con nome corrispondente all'intero percorso URI.

  3. Un hat di server predefinito come specificato dalla parola chiave ImmDefaultHatName.

  4. DEFAULT_URI (se non esiste alcuno di questi hat, viene visualizzato l'hat di Apache "padre").

5.2.2. Direttive di directory e percorso

Le direttive di percorso e di directory specificano i nomi degli hat nel file di configurazione del programma in modo che venga invocato relativo alla sua sicurezza. Per la documentazione Apache sulle direttive di percorso e di directory, vedere http://httpd.apache.org/docs-2.0/sections.html.

Nell'esempio di direttiva di percorso seguente viene specificato che per un determinato percorso mod-apparmor deve utilizzare un hat specifico:

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

Il modulo proverā a utilizzare MY_HAT_NAME per tutti gli URI che iniziano con /foo/ (/foo/, /foo/bar, /foo/cgi/path/blah_blah/blah, ecc.).

La direttiva di directory si comporta in modo simile a quella di percorso, solo che fa riferimento a un nome di percorso del file system. Nell'esempio seguente:

<Directory "/srv/www/www.immunix.com/docs"> # Si noti che la barra finale č mancante 
      ImmHatName immunix.com 
</Directory>

Esempio:  Nell'esempio phpsysinfo viene utilizzato per illustrare una direttiva del percorso. Č possibile scaricare il tarball da http://phpsysinfo.sourceforge.com.

  1. Dopo aver scaricato il tarball, installarlo in /srv/www/htdocs/sysinfo/.

  2. Creare /etc/apache2/conf.d/sysinfo.conf e aggiungervi il testo seguente:

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

    A questo punto, phpsyinfo supporta l'hat seguente::

       ^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, 
      }
    
  3. Ricaricare i profili Novell AppArmor immettendo rcapparmor restart nella finestra del terminale come root.

  4. Riavviare Apache immettendo rcapache2 restart nella finestra principale mentre si č connessi come utente root.

  5. Immettere http://hostname/sysinfo/ in un browser per ricevere le informazioni di sistema trasmesse da phpsysinfo.

  6. Individuare eventuali errori di configurazione aprendo il file /var/log/syslog oppure eseguendo dmesg e cercando eventuali rifiuti nell'output.