1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
<?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> > <a href="http://help.ubuntu-it.org/11.04/ubuntu/index.html">Ubuntu 11.04</a> > <span class="breadcrumb-link"><a href="index.html">Guida a Ubuntu Server</a></span> > <span class="breadcrumb-link"><a href="security.html">Sicurezza</a></span> > <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 <tunables/global>
/bin/ping flags=(complain) {
#include <abstractions/base>
#include <abstractions/consoles>
#include <abstractions/nameservice>
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 <tunables/global></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>