apparmor.html 23.1 KB
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head xmlns="http://www.w3.org/1999/xhtml">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title xmlns="">AppArmor</title>
    <link rel="stylesheet" href="../../libs/ubuntu-book.css" type="text/css" />
    <link rel="home" href="index.html" title="Guida a Ubuntu Server" />
    <link rel="up" href="security.html" title="Capitolo 8. Sicurezza" />
    <link rel="prev" href="firewall.html" title="Firewall" />
    <link rel="next" href="certificates-and-security.html" title="Certificati" />
    <link rel="copyright" href="legal.html" title="Riconoscimenti e licenza" />
  </head>
  <link href="http://help.ubuntu-it.org/favicon.ico" rel="shortcut icon" />
  <body>
    <div id="page-border-left-repeat">
      <div id="page-border-right-repeat">
        <script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
        <script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-8147493-2");
pageTracker._trackPageview();
} catch(err) {}</script>
        <div id="page-border-top-repeat">
          <div id="header">
            <div id="header-navigation">
              <ul>
                <li>
                  <a href="http://www.ubuntu-it.org">Web</a>
                </li>
                <li>
                  <a href="http://wiki.ubuntu-it.org">Documentazione</a>
                </li>
                <li>
                  <a href="http://forum.ubuntu-it.org">Forum</a>
                </li>
                <li>
                  <a href="http://planet.ubuntu-it.org">Planet</a>
                </li>
              </ul>
            </div>
            <form action="http://help.ubuntu-it.org/11.04/ubuntu/search.php" id="cse-search-box">
              <div>
                <input type="text" name="s" size="28" title="search" />
                <input type="submit" value="Cerca" title="search" />
              </div>
            </form>
          </div>
        </div>
        <div>
          <div id="bodyarea">
            <div class="pagelocation"><a href="http://help.ubuntu-it.org/">Documentazione di Ubuntu</a> &gt; <a href="http://help.ubuntu-it.org/11.04/ubuntu/index.html">Ubuntu 11.04</a> &gt; <span class="breadcrumb-link"><a href="index.html">Guida a Ubuntu Server</a></span> &gt; <span class="breadcrumb-link"><a href="security.html">Sicurezza</a></span> &gt; <span class="breadcrumb-node">AppArmor</span></div>
            <div xmlns="http://www.w3.org/1999/xhtml" class="sect1" title="AppArmor">
              <div class="titlepage">
                <div>
                  <div>
                    <h2 class="title" style="clear: both"><a id="apparmor"></a>AppArmor</h2>
                  </div>
                </div>
              </div>
              <p><span class="application"><strong>AppArmor</strong></span> è un'implementazione del «Linux Security Module» per il controllo degli accessi vincolante basato sul nome. AppArmor racchiude individualmente i programmi in un insieme di file e capacità posix 1003.1e draft.</p>
              <p><span class="application"><strong>AppArmor</strong></span> è installato e caricato in modo predefinito e utilizza i <span class="emphasis"><em>profili</em></span> di un'applicazione per determinare quali file e permessi siano necessari all'applicazione. Alcuni pacchetti installano i propri profili e ulteriori profili possono essere trovati nel pacchetto <span class="application"><strong>apparmor-profiles</strong></span>.</p>
              <p>Per installare il pacchetto <span class="application"><strong>apparmor-profiles</strong></span>, in un terminale digitare:</p>
              <pre class="screen">
<span class="command"><strong>sudo apt-get install apparmor-profiles</strong></span>
</pre>
              <p>I profili di AppArmor dispongono di due modalità di esecuzione:</p>
              <div class="itemizedlist">
                <ul class="itemizedlist" type="disc">
                  <li class="listitem">
                    <p>Apprendimento (complaining/learning): le violazioni del profilo sono consentite e vengono registrate. Utile per verificare e sviluppare nuovi profili.</p>
                  </li>
                  <li class="listitem">
                    <p>Esecutiva (enforced/confined): obbliga a rispettare la politica del profilo e registra le violazioni.</p>
                  </li>
                </ul>
              </div>
              <div class="sect2" title="Utilizzare AppArmor">
                <div class="titlepage">
                  <div>
                    <div>
                      <h3 class="title"><a id="apparmor-usage"></a>Utilizzare AppArmor</h3>
                    </div>
                  </div>
                </div>
                <p>Il pacchetto <span class="application"><strong>apparmor-utils</strong></span> contiene utilità a riga di comando che è possibile usare per modificare la modalità di esecuzione di <span class="application"><strong>AppArmor</strong></span>, trovare lo stato di un profilo, creare nuovi profili, ecc...</p>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p><span class="application"><strong>apparmor_status</strong></span> è utilizzata per visualizzare lo stato attuale dei profili AppArmor.</p>
                      <pre class="screen">
<span class="command"><strong>sudo apparmor_status</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p><span class="application"><strong>aa-complain</strong></span> posiziona un profilo nella modalità <span class="emphasis"><em>apprendimento</em></span>.</p>
                      <pre class="screen">
<span class="command"><strong>sudo aa-complain /percorso/al/binario</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p><span class="application"><strong>aa-enforce</strong></span> posiziona un profilo nella modalità <span class="emphasis"><em>esecutiva</em></span>.</p>
                      <pre class="screen">
<span class="command"><strong>sudo aa-enforce /percorso/al/bianrio</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p>Nella directory <code class="filename">/etc/apparmor.d</code> sono archiviati tutti i profili di AppArmor ed è possibile, da qui, modificare la <span class="emphasis"><em>modalità</em></span> di tutti i profili.</p>
                      <p>Usare il seguente comando per impostare tutti i profili nella modalità apprendimento:</p>
                      <pre class="screen">
<span class="command"><strong>sudo aa-complain /etc/apparmor.d/*</strong></span>
</pre>
                      <p>Per impostare tutti i profili nella modalità esecutiva:</p>
                      <pre class="screen">
<span class="command"><strong>sudo aa-enforce /etc/apparmor.d/*</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p><span class="application"><strong>apparmor_parser</strong></span> è utilizzata per caricare un profilo all'interno del kernel. Può essere usata anche per ricaricare profili attraverso l'opzione <span class="emphasis"><em>-r</em></span>. Per caricare un profilo:</p>
                      <pre class="screen">
<span class="command"><strong>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a</strong></span>
</pre>
                      <p>Per ricaricare un profilo:</p>
                      <pre class="screen">
<span class="command"><strong>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p><code class="filename">/etc/init.d/apparmor</code> può essere usato per <span class="emphasis"><em>ricaricare</em></span> tutti i profili:</p>
                      <pre class="screen">
<span class="command"><strong>sudo /etc/init.d/apparmor reload</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p>La directory <code class="filename">/etc/apparmor.d/disable</code> può essere usata con l'opzione <span class="application"><strong>apparmor_parser -R</strong></span> per <span class="emphasis"><em>disabilitare</em></span> un profilo.</p>
                      <pre class="screen">
<span class="command"><strong>sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/</strong></span>
<span class="command"><strong>sudo apparmor_parser -R /etc/apparmor.d/profile.name</strong></span>
</pre>
                      <p>Per <span class="emphasis"><em>riabilitare</em></span> un profilo disabilitato, rimuovere il collegamento simbolico al profilo in <code class="filename">/etc/apparmor.d/disable/</code>, quindi caricare il profilo usando l'opzione <span class="emphasis"><em>-a</em></span>.</p>
                      <pre class="screen">
<span class="command"><strong>sudo rm /etc/apparmor.d/disable/profile.name</strong></span>
<span class="command"><strong>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p>È possibile disabilitare <span class="application"><strong>AppArmor</strong></span> e scaricare il modulo del kernel attraverso i seguenti comandi:</p>
                      <pre class="screen">
<span class="command"><strong>sudo /etc/init.d/apparmor stop</strong></span>
<span class="command"><strong>sudo update-rc.d -f apparmor remove</strong></span>
</pre>
                    </li>
                    <li class="listitem">
                      <p>Per riabilitare <span class="application"><strong>AppArmor</strong></span>:</p>
                      <pre class="screen">
<span class="command"><strong>sudo /etc/init.d/apparmor start</strong></span>
<span class="command"><strong>sudo update-rc.d apparmor defaults</strong></span>
</pre>
                    </li>
                  </ul>
                </div>
                <div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
                  <table border="0" summary="Note">
                    <tr>
                      <td rowspan="2" align="center" valign="top" width="25">
                        <img alt="[Nota]" src="../../libs/admon/note.png" />
                      </td>
                      <th align="left"></th>
                    </tr>
                    <tr>
                      <td align="left" valign="top">
                        <p>Sostituire <span class="emphasis"><em>profile.name</em></span> con il nome del profilo da modificare e sostituire anche <code class="filename">/percorso/eseguibile/</code> con il percorso all'eseguibile. Per esempio, per il comando <span class="application"><strong>ping</strong></span>, usare <code class="filename">/bin/ping</code></p>
                      </td>
                    </tr>
                  </table>
                </div>
              </div>
              <div class="sect2" title="Profili">
                <div class="titlepage">
                  <div>
                    <div>
                      <h3 class="title"><a id="apparmor-profiles"></a>Profili</h3>
                    </div>
                  </div>
                </div>
                <p>I profili di <span class="application"><strong>AppArmor</strong></span> sono dei semplici file di testo posizionati in <code class="filename">/etc/apparmor.d/</code>. Questi file vengono nominati con il percorso completo all'eseguibile del profilo, sostituendo «/» con «.». Per esempio, <code class="filename">/etc/apparmor.d/bin.ping</code> è il profilo AppArmor del comando <code class="filename">/bin/ping</code>.</p>
                <p>Esistono due principali tipologie di regole usate nei profili:</p>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p><span class="emphasis"><em>Voci di percorso</em></span>: specificano a quali file nel file system un'applicazione può accedere.</p>
                    </li>
                    <li class="listitem">
                      <p><span class="emphasis"><em>Voci di capacità</em></span>: determinano quali privilegi un processo può utilizzare.</p>
                    </li>
                  </ul>
                </div>
                <p>Per un esempio, consultare <code class="filename">/etc/apparmor.d/bin.ping</code>:</p>
                <pre class="programlisting">
#include &lt;tunables/global&gt;
/bin/ping flags=(complain) {
  #include &lt;abstractions/base&gt;
  #include &lt;abstractions/consoles&gt;
  #include &lt;abstractions/nameservice&gt;

  capability net_raw,
  capability setuid,
  network inet raw,
  
  /bin/ping mixr,
  /etc/modules.conf r,
}
</pre>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p><span class="emphasis"><em>#include &lt;tunables/global&gt;</em></span>: asserzioni di inclusione da altri file. Consente di usare un file comune con le asserzioni di inclusione per molteplici applicazioni.</p>
                    </li>
                    <li class="listitem">
                      <p><span class="emphasis"><em>/bin/ping flags=(complain)</em></span>: percorso al programma con profilo, impostandone la modalità ad <span class="emphasis"><em>apprendimento</em></span>.</p>
                    </li>
                    <li class="listitem">
                      <p><span class="emphasis"><em>capability net_raw,</em></span>: consente all'applicazione di accedere alla capacità CAP_NET_RAW Posix.1e.</p>
                    </li>
                    <li class="listitem">
                      <p><span class="emphasis"><em>/bin/ping mixr,</em></span>: consente all'applicazione accesso in lettura e in esecuzione al file.</p>
                    </li>
                  </ul>
                </div>
                <div class="note" title="Nota" style="margin-left: 0.5in; margin-right: 0.5in;">
                  <table border="0" summary="Note">
                    <tr>
                      <td rowspan="2" align="center" valign="top" width="25">
                        <img alt="[Nota]" src="../../libs/admon/note.png" />
                      </td>
                      <th align="left"></th>
                    </tr>
                    <tr>
                      <td align="left" valign="top">
                        <p>Dopo aver modificato un profilo, è necessario ricaricarlo. Per maggiori informazioni, consultare <a class="xref" href="apparmor.html#apparmor-usage" title="Utilizzare AppArmor">la sezione chiamata «Utilizzare AppArmor»</a>.</p>
                      </td>
                    </tr>
                  </table>
                </div>
                <div class="sect3" title="Creare un profilo">
                  <div class="titlepage">
                    <div>
                      <div>
                        <h4 class="title"><a id="apparmor-profiles-new"></a>Creare un profilo</h4>
                      </div>
                    </div>
                  </div>
                  <div class="itemizedlist">
                    <ul class="itemizedlist" type="disc">
                      <li class="listitem">
                        <p><span class="emphasis"><em>Progettare un piano di verifica</em></span>: cercare di pensare a come l'applicazione dovrebbe essere eseguita. Il piano di verifica dovrebbe essere diviso in tanti piccoli casi d'uso, ognuno dei quali dovrebbe avere una breve descrizione e un elenco dei passi da compiere.</p>
                        <p>Alcuni casi standard da verificare sono:</p>
                        <div class="itemizedlist">
                          <ul class="itemizedlist" type="circle">
                            <li class="listitem">
                              <p>Avvio del programma.</p>
                            </li>
                            <li class="listitem">
                              <p>Arresto del programma.</p>
                            </li>
                            <li class="listitem">
                              <p>Ricaricamento del programma.</p>
                            </li>
                            <li class="listitem">
                              <p>Verifica di tutti i comandi supportati dallo script init.</p>
                            </li>
                          </ul>
                        </div>
                      </li>
                      <li class="listitem">
                        <p><span class="emphasis"><em>Generare il nuovo profilo</em></span>: usare <span class="application"><strong>aa-genprof</strong></span> per generare un nuovo profilo. Da un terminale:</p>
                        <pre class="screen">
<span class="command"><strong>sudo aa-genprof eseguibile</strong></span>
</pre>
                        <p>Per esempio:</p>
                        <pre class="screen">
<span class="command"><strong>sudo aa-genprof slapd</strong></span>
</pre>
                      </li>
                      <li class="listitem">
                        <p>Affinché il proprio nuovo profilo venga incluso nel pacchetto <span class="application"><strong>apparmor-profiles</strong></span>, segnalare un bug su <span class="emphasis"><em>Launchpad</em></span> riguardo il pacchetto <a class="ulink" href="https://bugs.launchpad.net/ubuntu/+source/apparmor/+filebug" target="_top">AppArmor</a>:</p>
                        <div class="itemizedlist">
                          <ul class="itemizedlist" type="circle">
                            <li class="listitem">
                              <p>Includere la pianificazione e le casistiche del test.</p>
                            </li>
                            <li class="listitem">
                              <p>Allegare il nuovo profilo al bug.</p>
                            </li>
                          </ul>
                        </div>
                      </li>
                    </ul>
                  </div>
                </div>
                <div class="sect3" title="Aggiornare i profili">
                  <div class="titlepage">
                    <div>
                      <div>
                        <h4 class="title"><a id="apparmor-profiles-update"></a>Aggiornare i profili</h4>
                      </div>
                    </div>
                  </div>
                  <p>Quando il programma si comporta stranamente, messaggi di audit vengono inviati ai file di registro. Il programma <span class="application"><strong>aa-logprof</strong></span> può essere usato per analizzare i file di registro per i messaggi di audit di <span class="application"><strong>AppArmor</strong></span>, per controllarli e per aggiornare i profili. Da un terminale:</p>
                  <pre class="screen">
<span class="command"><strong>sudo aa-logprof</strong></span>
</pre>
                </div>
              </div>
              <div class="sect2" title="Riferimenti">
                <div class="titlepage">
                  <div>
                    <div>
                      <h3 class="title"><a id="apparmor-references"></a>Riferimenti</h3>
                    </div>
                  </div>
                </div>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p>Per le opzioni avanzate di configurazione, consultare la <a class="ulink" href="http://www.novell.com/documentation/apparmor/apparmor201_sp10_admin/index.html?page=/documentation/apparmor/apparmor201_sp10_admin/data/book_apparmor_admin.html" target="_top">AppArmor Administration Guide</a></p>
                    </li>
                  </ul>
                </div>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p>Per maggiori informazioni su come usare AppArmor con altri rilasci di Ubuntu, consultare la <a class="ulink" href="http://wiki.ubuntu-it.org/Sicurezza/AppArmor" target="_top">documentazione della comunità italiana</a>.</p>
                    </li>
                  </ul>
                </div>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p>La pagina <a class="ulink" href="http://en.opensuse.org/AppArmor" target="_top">OpenSUSE AppArmor</a> è un'altra introduzione ad AppArmor.</p>
                    </li>
                  </ul>
                </div>
                <div class="itemizedlist">
                  <ul class="itemizedlist" type="disc">
                    <li class="listitem">
                      <p>Un buon posto per chiedere assistenza riguardo <span class="application"><strong>AppArmor</strong></span>, e per partecipare nella comunità di Ubuntu Server, è il canale IRC <span class="emphasis"><em>#ubuntu-server</em></span> su <a class="ulink" href="http://freenode.net" target="_top">freenode</a>.</p>
                    </li>
                  </ul>
                </div>
              </div>
            </div>
            <div xmlns="http://www.w3.org/1999/xhtml" class="navfooter">
              <hr />
              <table width="100%" summary="Navigation footer">
                <tr>
                  <td width="40%" align="left"><a accesskey="p" href="firewall.html"><img src="../../libs/navig/prev.png" alt="Indietro" /></a> </td>
                  <td width="20%" align="center">
                    <a accesskey="u" href="security.html">
                      <img src="../../libs/navig/up.png" alt="Risali" />
                    </a>
                  </td>
                  <td width="40%" align="right"> <a accesskey="n" href="certificates-and-security.html"><img src="../../libs/navig/next.png" alt="Avanti" /></a></td>
                </tr>
                <tr>
                  <td width="40%" align="left" valign="top">Firewall </td>
                  <td width="20%" align="center">
                    <a accesskey="h" href="index.html">
                      <img src="../../libs/navig/home.png" alt="Partenza" />
                    </a>
                  </td>
                  <td width="40%" align="right" valign="top"> Certificati</td>
                </tr>
              </table>
            </div>
          </div>
        </div>
        <div id="page-border-bottom-repeat">
          <div id="footer">
            <div id="copyright">
						Ubuntu e Canonical sono marchi registrati da Canonical Ltd.
					</div>
          </div>
        </div>
        <div id="page-border-right-top"></div>
        <div id="page-border-right-bottom"></div>
      </div>
      <div id="page-border-left-top"></div>
      <div id="page-border-left-bottom"></div>
    </div>
    <p></p>
  </body>
</html>