]> git.piffa.net Git - doc/.git/blob - servizi.html
Aggiunta parte sulle schede di rete
[doc/.git] / servizi.html
1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
3
4 <html lang="it">
5 <head>
6   <meta name="generator" content=
7   "HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org">
8   <meta http-equiv="Content-Type" content=
9   "text/html; charset=iso-8859-1">
10   <meta name="generator" content=
11   "Docutils 0.5: http://docutils.sourceforge.net/">
12
13   <title>Servizi di rete passo a passo</title>
14   <style type="text/css">
15
16   /*
17   Author: Peter Parente
18   Date: 2008/01/22
19   Version: 1.0
20   Copyright: This stylesheet has been placed in the public domain - free to edit and use for all uses.
21   */
22
23   body {
24   font: 100% sans-serif;
25   background: #ffffff;
26   color: black;
27   margin: 2em;
28   padding: 0em 2em;
29   }
30
31   p.topic-title {
32   font-weight: bold;
33   }
34
35   table.docinfo {
36   text-align: left;
37   margin: 2em 0em;
38   }
39
40   a[href] {
41   color: #436976;
42   background-color: transparent;
43   }
44
45   a.toc-backref {
46   text-decoration: none;
47   }
48
49   h1 a[href] {
50   color: #003a6b;
51   text-decoration: none;
52   background-color: transparent;
53   }
54
55   a.strong {
56   font-weight: bold;
57   }
58
59   img {
60   margin: 0;
61   border: 0;
62   }
63
64   p {
65   margin: 0.5em 0 1em 0;
66   line-height: 1.5em;
67   }
68
69   p a:visited {
70   color: purple;
71   background-color: transparent;
72   }
73
74   p a:active {
75   color: red;
76   background-color: transparent;
77   }
78
79   a:hover {
80   text-decoration: none;
81   }
82
83   p img {
84   border: 0;
85   margin: 0;
86   }
87
88   p.rubric {
89   font-weight: bold;
90   font-style: italic;
91   }
92
93   h1.title {
94   color: #003a6b;
95   font-size: 250%;
96   margin-bottom: 0em;
97   }
98
99   h2.subtitle {
100   color: #003a6b;
101   border-bottom: 0px;
102   }
103
104   h1, h2, h3, h4, h5, h6 {
105   color: #555;
106   background-color: transparent;
107   margin: 0em;
108   padding-top: 0.5em;
109   }
110
111   h1 {
112   font-size: 160%;
113   margin-bottom: 0.5em;
114   border-bottom: 2px solid #aaa;
115   }
116
117   h2 {
118   font-size: 140%;
119   margin-bottom: 0.5em;
120   border-bottom: 1px solid #aaa;
121   }
122
123   h3 {
124   font-size: 130%;
125   margin-bottom: 0.5em;
126   }
127
128   h4 {
129   font-size: 110%;
130   font-weight: bold;
131   margin-bottom: 0.5em;
132   }
133
134   h5 {
135   font-size: 105%;
136   font-weight: bold;
137   margin-bottom: 0.5em;
138   }
139
140   h6 {
141   font-size: 100%;
142   font-weight: bold;
143   margin-bottom: 0.5em;
144   }
145
146   dt {
147   font-style: italic;
148   }
149
150   dd {
151   margin-bottom: 1.5em;
152   }
153
154   div.admonition, div.note, div.tip, div.caution, div.important {
155   margin: 2em 2em;
156   padding: 0em 1em;
157   border-top: 1px solid #aaa;
158   border-left: 1px solid #aaa;
159   border-bottom: 2px solid #555;
160   border-right: 2px solid #555;
161   }
162
163   div.important {
164   background: transparent url('../images/important.png') 10px 2px no-repeat;
165   }
166
167   div.caution {
168   background: transparent url('../images/caution.png') 10px 2px no-repeat;
169   }
170
171   div.note {
172   background: transparent url('../images/note.png') 10px 2px no-repeat;
173   }
174
175   div.tip {
176   background: transparent url('../images/tip.png') 10px 2px no-repeat;
177   }
178
179   div.admonition-example {
180   background: transparent url('../images/tip.png') 10px 2px no-repeat;
181   }
182
183   div.admonition-critical-example {
184   background: transparent url('../images/important.png') 10px 2px no-repeat;
185   }
186
187   p.admonition-title {
188   font-weight: bold;
189   border-bottom: 1px solid #aaa;
190   padding-left: 30px;
191   }
192
193   table.docutils {
194   text-align: left;
195   border: 1px solid gray;
196   border-collapse: collapse;
197   width: 100%;
198   margin: 1.5em 0em;
199   }
200
201   table.docutils caption {
202   font-style: italic;
203   }
204
205   table.docutils td, table.docutils th {
206   padding: 0.25em 0.5em;
207   }
208
209   table.docutils th {
210   background-color: #dddddd;
211   }
212
213   div.sidebar {
214   width: 33%;
215   float: right;
216   margin: 0em 2em;
217   padding: 0em 1em;
218   border-top: 1px solid #aaa;
219   border-left: 1px solid #aaa;
220   border-bottom: 2px solid #555;
221   border-right: 2px solid #555;
222   }
223
224   p.sidebar-title {
225   margin-bottom: 0em;
226   color: #003a6b;
227   border-bottom: 1px solid #aaa;
228   font-weight: bold;
229   }
230
231   p.sidebar-subtitle {
232   margin-top: 0em;
233   font-style: italic;
234   color: #003a6b;
235   }
236
237   </style>
238 </head>
239
240 <body>
241   <div class="document" id="servizi-di-rete-passo-a-passo">
242     <h1 class="title">Servizi di rete passo a passo</h1>
243
244     <h2 class="subtitle" id=
245     "appunti-sulla-installazione-e-configurazione-dei-servizi">
246     Appunti sulla installazione e configurazione dei servizi</h2>
247
248     <blockquote>
249       <table class="docutils field-list" frame="void" rules="none">
250         <col class="field-name">
251         <col class="field-body">
252
253         <tbody valign="top">
254           <tr class="field">
255             <th class="field-name">Author:</th>
256
257             <td class="field-body">Andrea Manni</td>
258           </tr>
259
260           <tr class="field">
261             <th class="field-name">Copyright:</th>
262
263             <td class="field-body">GFDL</td>
264           </tr>
265
266           <tr class="field">
267             <th class="field-name">Version:</th>
268
269             <td class="field-body">0.7</td>
270           </tr>
271         </tbody>
272       </table>
273     </blockquote>
274
275     <p>Questa guida e' dedicata agli studenti delle lezioni di
276     informatica tenute da Andrea nel lab208. Nella parte iniziale
277     sono presenti alcuni richiami alle impostazioni di rete e di
278     installazione del laboratorio 208 (lab208) dove generalmente si
279     tengono le lezioni. Questi parametri non sono interessanti per
280     chiunque si trovasse al di fuori della rete piffa.net .</p>
281
282     <div class="contents topic" id="indice-degli-argomenti">
283       <p class="topic-title first">Indice degli argomenti</p>
284
285       <ul class="auto-toc simple">
286         <li>
287           <a class="reference internal" href=
288           "#configurazione-sistema" id="id6" name=
289           "id6">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a>
290
291           <ul class="auto-toc">
292             <li><a class="reference internal" href=
293             "#solo-per-uso-interno" id="id7" name=
294             "id7">1.1&nbsp;&nbsp;&nbsp;Solo per uso
295             interno</a></li>
296
297             <li>
298               <a class="reference internal" href="#rete" id="id8"
299               name="id8">1.2&nbsp;&nbsp;&nbsp;Rete</a>
300
301               <ul class="auto-toc">
302                 <li><a class="reference internal" href=
303                 "#interfaces" id="id9" name=
304                 "id9">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></li>
305               </ul>
306             </li>
307
308             <li><a class="reference internal" href=
309             "#bash-completion" id="id10" name=
310             "id10">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></li>
311
312             <li><a class="reference internal" href="#vim" id="id11"
313             name="id11">1.4&nbsp;&nbsp;&nbsp;Vim</a></li>
314
315             <li><a class="reference internal" href="#vnc" id="id12"
316             name="id12">1.5&nbsp;&nbsp;&nbsp;VNC</a></li>
317
318             <li><a class="reference internal" href=
319             "#lista-dei-pacchetti-di-base" id="id13" name=
320             "id13">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
321             base</a></li>
322
323             <li>
324               <a class="reference internal" href=
325               "#apt-configurazione" id="id14" name=
326               "id14">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a>
327
328               <ul class="auto-toc">
329                 <li><a class="reference internal" href=
330                 "#sources-list" id="id15" name=
331                 "id15">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></li>
332
333                 <li><a class="reference internal" href=
334                 "#etc-apt-apt-conf" id="id16" name=
335                 "id16">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></li>
336               </ul>
337             </li>
338           </ul>
339         </li>
340
341         <li>
342           <a class="reference internal" href="#squid" id="id17"
343           name="id17">2&nbsp;&nbsp;&nbsp;Squid</a>
344
345           <ul class="auto-toc">
346             <li>
347               <a class="reference internal" href=
348               "#configurazione-squid-conf" id="id18" name=
349               "id18">2.1&nbsp;&nbsp;&nbsp;Configurazione:
350               squid.conf</a>
351
352               <ul class="auto-toc">
353                 <li><a class="reference internal" href="#cache-dir"
354                 id="id19" name=
355                 "id19">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a></li>
356
357                 <li><a class="reference internal" href=
358                 "#tag-maximum-object-size" id="id20" name=
359                 "id20">2.1.2&nbsp;&nbsp;&nbsp;TAG:
360                 maximum_object_size</a></li>
361
362                 <li><a class="reference internal" href=
363                 "#tag-cache-mem" id="id21" name=
364                 "id21">2.1.3&nbsp;&nbsp;&nbsp;TAG:
365                 cache_mem</a></li>
366
367                 <li><a class="reference internal" href=
368                 "#tag-minimum-object-size" id="id22" name=
369                 "id22">2.1.4&nbsp;&nbsp;&nbsp;TAG:
370                 minimum_object_size</a></li>
371               </ul>
372             </li>
373
374             <li>
375               <a class="reference internal" href=
376               "#negoziazione-degli-accesi-al-servizio" id="id23"
377               name="id23">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli
378               accesi al servizio</a>
379
380               <ul class="auto-toc">
381                 <li><a class="reference internal" href=
382                 "#acl-e-http-access" id="id24" name=
383                 "id24">2.2.1&nbsp;&nbsp;&nbsp;ACL e http
384                 access</a></li>
385               </ul>
386             </li>
387
388             <li>
389               <a class="reference internal" href="#testare-squid"
390               id="id25" name="id25">2.3&nbsp;&nbsp;&nbsp;Testare
391               Squid</a>
392
393               <ul class="auto-toc">
394                 <li><a class="reference internal" href=
395                 "#client-wgetrc" id="id26" name=
396                 "id26">2.3.1&nbsp;&nbsp;&nbsp;Client:
397                 ~/.wgetrc</a></li>
398
399                 <li><a class="reference internal" href=
400                 "#server-access-log" id="id27" name=
401                 "id27">2.3.2&nbsp;&nbsp;&nbsp;Server:
402                 access.log</a></li>
403               </ul>
404             </li>
405           </ul>
406         </li>
407
408         <li>
409           <a class="reference internal" href="#apache" id="id28"
410           name="id28">3&nbsp;&nbsp;&nbsp;Apache</a>
411
412           <ul class="auto-toc">
413             <li><a class="reference internal" href=
414             "#pacchetti-da-installare" id="id29" name=
415             "id29">3.1&nbsp;&nbsp;&nbsp;Pacchetti da
416             installare::</a></li>
417
418             <li><a class="reference internal" href=
419             "#configurazione-di-apache" id="id30" name=
420             "id30">3.2&nbsp;&nbsp;&nbsp;Configurazione di
421             Apache</a></li>
422
423             <li><a class="reference internal" href="#apache-conf"
424             id="id31" name=
425             "id31">3.3&nbsp;&nbsp;&nbsp;apache.conf</a></li>
426
427             <li>
428               <a class="reference internal" href=
429               "#installazione-di-php" id="id32" name=
430               "id32">3.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a>
431
432               <ul class="auto-toc">
433                 <li><a class="reference internal" href=
434                 "#test-del-modulo-php" id="id33" name=
435                 "id33">3.4.1&nbsp;&nbsp;&nbsp;Test del modulo
436                 php</a></li>
437
438                 <li><a class="reference internal" href=
439                 "#installazione-del-supporto-per-mysql" id="id34"
440                 name="id34">3.4.2&nbsp;&nbsp;&nbsp;Installazione
441                 del supporto per Mysql</a></li>
442
443                 <li><a class="reference internal" href=
444                 "#phpmyadmin" id="id35" name=
445                 "id35">3.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></li>
446
447                 <li><a class="reference internal" href=
448                 "#installazione-del-supporto-per-postgresql" id=
449                 "id36" name=
450                 "id36">3.4.4&nbsp;&nbsp;&nbsp;Installazione del
451                 supporto per Postgresql</a></li>
452
453                 <li><a class="reference internal" href=
454                 "#phppgadmin" id="id37" name=
455                 "id37">3.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></li>
456               </ul>
457             </li>
458
459             <li>
460               <a class="reference internal" href="#virtual-hosts"
461               id="id38" name="id38">3.5&nbsp;&nbsp;&nbsp;Virtual
462               hosts</a>
463
464               <ul class="auto-toc">
465                 <li><a class="reference internal" href=
466                 "#gestione-dns" id="id39" name=
467                 "id39">3.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></li>
468
469                 <li><a class="reference internal" href=
470                 "#virtual-host" id="id40" name=
471                 "id40">3.5.2&nbsp;&nbsp;&nbsp;Virtual host</a></li>
472               </ul>
473             </li>
474
475             <li>
476               <a class="reference internal" href=
477               "#negoziazione-accessi" id="id41" name=
478               "id41">3.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a>
479
480               <ul class="auto-toc">
481                 <li><a class="reference internal" href=
482                 "#limiti-su-base-ip" id="id42" name=
483                 "id42">3.6.1&nbsp;&nbsp;&nbsp;Limiti su base
484                 ip</a></li>
485               </ul>
486             </li>
487
488             <li>
489               <a class="reference internal" href=
490               "#user-authentication" id="id43" name=
491               "id43">3.7&nbsp;&nbsp;&nbsp;User Authentication</a>
492
493               <ul class="auto-toc">
494                 <li><a class="reference internal" href=
495                 "#definire-la-cartella" id="id44" name=
496                 "id44">3.7.1&nbsp;&nbsp;&nbsp;Definire la
497                 cartella</a></li>
498
499                 <li><a class="reference internal" href=
500                 "#creazione-del-database-delle-passwords" id="id45"
501                 name="id45">3.7.2&nbsp;&nbsp;&nbsp;Creazione del
502                 database delle passwords</a></li>
503
504                 <li><a class="reference internal" href="#id3" id=
505                 "id46" name=
506                 "id46">3.7.3&nbsp;&nbsp;&nbsp;Configurazione di
507                 Apache</a></li>
508               </ul>
509             </li>
510
511             <li><a class="reference internal" href="#cavets" id=
512             "id47" name="id47">3.8&nbsp;&nbsp;&nbsp;Cavets</a></li>
513           </ul>
514         </li>
515
516         <li>
517           <a class="reference internal" href="#domain-name-system"
518           id="id48" name="id48">4&nbsp;&nbsp;&nbsp;Domain Name
519           System</a>
520
521           <ul class="auto-toc">
522             <li><a class="reference internal" href=
523             "#nomi-di-dominio" id="id49" name=
524             "id49">4.1&nbsp;&nbsp;&nbsp;Nomi di dominio</a></li>
525
526             <li><a class="reference internal" href=
527             "#tipologie-di-record" id="id50" name=
528             "id50">4.2&nbsp;&nbsp;&nbsp;Tipologie di
529             record</a></li>
530
531             <li><a class="reference internal" href="#utilizzo" id=
532             "id51" name=
533             "id51">4.3&nbsp;&nbsp;&nbsp;Utilizzo</a></li>
534
535             <li><a class="reference internal" href=
536             "#risoluzione-dei-nomi-di-dominio" id="id52" name=
537             "id52">4.4&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
538             dominio</a></li>
539
540             <li><a class="reference internal" href="#dig" id="id53"
541             name="id53">4.5&nbsp;&nbsp;&nbsp;Dig</a></li>
542
543             <li><a class="reference internal" href="#resolv-conf"
544             id="id54" name=
545             "id54">4.6&nbsp;&nbsp;&nbsp;resolv.conf</a></li>
546
547             <li><a class="reference internal" href="#etc-hosts" id=
548             "id55" name=
549             "id55">4.7&nbsp;&nbsp;&nbsp;/etc/hosts</a></li>
550
551             <li><a class="reference internal" href="#hostname" id=
552             "id56" name=
553             "id56">4.8&nbsp;&nbsp;&nbsp;Hostname</a></li>
554           </ul>
555         </li>
556
557         <li>
558           <a class="reference internal" href="#dnsmasq" id="id57"
559           name="id57">5&nbsp;&nbsp;&nbsp;DNSmasq</a>
560
561           <ul class="auto-toc">
562             <li><a class="reference internal" href=
563             "#configurazione" id="id58" name=
564             "id58">5.1&nbsp;&nbsp;&nbsp;Configurazione</a></li>
565
566             <li><a class="reference internal" href="#dhcp" id=
567             "id59" name="id59">5.2&nbsp;&nbsp;&nbsp;DHCP</a></li>
568
569             <li><a class="reference internal" href="#dns-cache" id=
570             "id60" name="id60">5.3&nbsp;&nbsp;&nbsp;DNS
571             cache</a></li>
572
573             <li><a class="reference internal" href="#dhcpd" id=
574             "id61" name="id61">5.4&nbsp;&nbsp;&nbsp;DHCPd</a></li>
575           </ul>
576         </li>
577
578         <li>
579           <a class="reference internal" href="#samba" id="id62"
580           name="id62">6&nbsp;&nbsp;&nbsp;Samba</a>
581
582           <ul class="auto-toc">
583             <li><a class="reference internal" href="#pacchetti" id=
584             "id63" name=
585             "id63">6.1&nbsp;&nbsp;&nbsp;Pacchetti</a></li>
586
587             <li><a class="reference internal" href=
588             "#passwords-e-autenticazione" id="id64" name=
589             "id64">6.2&nbsp;&nbsp;&nbsp;Passwords e
590             autenticazione</a></li>
591
592             <li><a class="reference internal" href=
593             "#creazione-utenti" id="id65" name=
594             "id65">6.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></li>
595
596             <li>
597               <a class="reference internal" href=
598               "#creare-la-condivisione" id="id66" name=
599               "id66">6.4&nbsp;&nbsp;&nbsp;Creare la
600               condivisione</a>
601
602               <ul class="auto-toc">
603                 <li><a class="reference internal" href=
604                 "#sicurezza-permessi-di-esecuzione-sul-server" id=
605                 "id67" name=
606                 "id67">6.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi
607                 di esecuzione sul server</a></li>
608               </ul>
609             </li>
610
611             <li><a class="reference internal" href=
612             "#configurazione-dell-applicativo-samba-vero-e-proprio"
613             id="id68" name=
614             "id68">6.5&nbsp;&nbsp;&nbsp;Configurazione
615             dell'applicativo Samba vero e proprio.</a></li>
616
617             <li><a class="reference internal" href=
618             "#testare-il-servizio" id="id69" name=
619             "id69">6.6&nbsp;&nbsp;&nbsp;Testare il
620             Servizio</a></li>
621           </ul>
622         </li>
623
624         <li>
625           <a class="reference internal" href=
626           "#server-di-posta-postfix" id="id70" name=
627           "id70">7&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a>
628
629           <ul class="auto-toc">
630             <li>
631               <a class="reference internal" href="#imap-e-pop" id=
632               "id71" name="id71">7.1&nbsp;&nbsp;&nbsp;Imap e
633               pop</a>
634
635               <ul class="auto-toc">
636                 <li><a class="reference internal" href=
637                 "#web-client" id="id72" name=
638                 "id72">7.1.1&nbsp;&nbsp;&nbsp;Web client</a></li>
639               </ul>
640             </li>
641           </ul>
642         </li>
643
644         <li>
645           <a class="reference internal" href="#firewall" id="id73"
646           name="id73">8&nbsp;&nbsp;&nbsp;Firewall</a>
647
648           <ul class="auto-toc">
649             <li><a class="reference internal" href="#links" id=
650             "id74" name="id74">8.1&nbsp;&nbsp;&nbsp;Links</a></li>
651
652             <li><a class="reference internal" href="#ipfilter" id=
653             "id75" name=
654             "id75">8.2&nbsp;&nbsp;&nbsp;Ipfilter</a></li>
655
656             <li>
657               <a class="reference internal" href=
658               "#progettazione-di-un-firewall" id="id76" name=
659               "id76">8.3&nbsp;&nbsp;&nbsp;Progettazione di un
660               firewall</a>
661
662               <ul class="auto-toc">
663                 <li><a class="reference internal" href=
664                 "#collocazione" id="id77" name=
665                 "id77">8.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></li>
666
667                 <li><a class="reference internal" href=
668                 "#policy-di-default" id="id78" name=
669                 "id78">8.3.2&nbsp;&nbsp;&nbsp;Policy di
670                 default</a></li>
671
672                 <li><a class="reference internal" href="#hardware"
673                 id="id79" name=
674                 "id79">8.3.3&nbsp;&nbsp;&nbsp;Hardware</a></li>
675               </ul>
676             </li>
677
678             <li><a class="reference internal" href=
679             "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
680             "id80" name="id80">8.4&nbsp;&nbsp;&nbsp;Percorso dei
681             pacchetti tra tabelle e catene</a></li>
682
683             <li>
684               <a class="reference internal" href=
685               "#concetti-di-base" id="id81" name=
686               "id81">8.5&nbsp;&nbsp;&nbsp;Concetti di base</a>
687
688               <ul class="auto-toc">
689                 <li><a class="reference internal" href=
690                 "#tabelle-catene-regole" id="id82" name=
691                 "id82">8.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
692                 regole</a></li>
693
694                 <li><a class="reference internal" href="#match" id=
695                 "id83" name=
696                 "id83">8.5.2&nbsp;&nbsp;&nbsp;Match</a></li>
697
698                 <li><a class="reference internal" href="#targets"
699                 id="id84" name=
700                 "id84">8.5.3&nbsp;&nbsp;&nbsp;Targets</a></li>
701               </ul>
702             </li>
703
704             <li><a class="reference internal" href=
705             "#tabella-filter" id="id85" name=
706             "id85">8.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></li>
707
708             <li><a class="reference internal" href=
709             "#flush-automatico-per-macchine-remote" id="id86" name=
710             "id86">8.7&nbsp;&nbsp;&nbsp;Flush automatico per
711             macchine remote</a></li>
712
713             <li><a class="reference internal" href=
714             "#gestione-regole-rules" id="id87" name=
715             "id87">8.8&nbsp;&nbsp;&nbsp;Gestione regole
716             (rules)</a></li>
717
718             <li>
719               <a class="reference internal" href=
720               "#salvataggio-regole" id="id88" name=
721               "id88">8.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a>
722
723               <ul class="auto-toc">
724                 <li><a class="reference internal" href=
725                 "#iptables-save" id="id89" name=
726                 "id89">8.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></li>
727
728                 <li><a class="reference internal" href=
729                 "#iptables-restore" id="id90" name=
730                 "id90">8.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></li>
731               </ul>
732             </li>
733           </ul>
734         </li>
735
736         <li><a class="reference internal" href="#note" id="id91"
737         name="id91">9&nbsp;&nbsp;&nbsp;NOTE</a></li>
738       </ul>
739     </div>
740
741     <p>Generato con: <a class="reference external" href=
742     "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
743
744     <div class="section" id="configurazione-sistema">
745       <h1><a class="toc-backref" href=
746       "#id6">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a></h1>
747
748       <div class="section" id="solo-per-uso-interno">
749         <h2><a class="toc-backref" href=
750         "#id7">1.1&nbsp;&nbsp;&nbsp;Solo per uso interno</a></h2>
751
752         <p>Impostazioni di base per la configurazione del sistema
753         operativo e della rete nel laboratorio 208 facente parte
754         della rete piffa.net .</p>
755
756         <p>Qui riportati per comodita' degli studenti (e del
757         docente che non sara' <strong>mai piu'</strong> costretto a
758         ripeterli continuamente! ). Gli altri lettori potranno
759         tenerli presenti per cercare di comprendere gli esempi nel
760         testo. Ad esempio: quando leggerete <tt class=
761         "docutils literal"><span class=
762         "pre">10.10.208.254:3128</span></tt> saprete che si tratta
763         del nostro <em>proxy http</em>, stara' quindi a voi
764         sostituire i dati con gli <em>ip</em> della vostra
765         rete.</p>
766       </div>
767
768       <div class="section" id="rete">
769         <h2><a class="toc-backref" href=
770         "#id8">1.2&nbsp;&nbsp;&nbsp;Rete</a></h2>
771
772         <p>Parametri della rete attualmente in uso:</p>
773
774         <table border="1" class="docutils">
775           <colgroup>
776             <col width="42%">
777             <col width="58%">
778           </colgroup>
779
780           <tbody valign="top">
781             <tr>
782               <td colspan="2">Parametri della rete</td>
783             </tr>
784
785             <tr>
786               <td>rete</td>
787
788               <td>10.10.208.0/24</td>
789             </tr>
790
791             <tr>
792               <td>netmask</td>
793
794               <td>255.255.255.0</td>
795             </tr>
796
797             <tr>
798               <td>broadcast</td>
799
800               <td>10.10.208.255</td>
801             </tr>
802
803             <tr>
804               <td>gateway</td>
805
806               <td>10.10.208.254</td>
807             </tr>
808
809             <tr>
810               <td>gateway</td>
811
812               <td>10.10.208.250 persistente</td>
813             </tr>
814
815             <tr>
816               <td>DNS</td>
817
818               <td>10.10.208.254</td>
819             </tr>
820
821             <tr>
822               <td>DNS</td>
823
824               <td>10.10.208.250 persistente</td>
825             </tr>
826
827             <tr>
828               <td>proxy http</td>
829
830               <td>10.10.208.254:3128</td>
831             </tr>
832           </tbody>
833         </table>
834
835         <p>Sul portatile di Andrea, corrispondente all'ip 254, gira
836         un DHCP, proxy http e mirror di Debian ( <a class=
837         "reference external" href=
838         "http://debian.piffa.net">http://debian.piffa.net</a>). Se
839         Andrea non e' in aula (o ancora peggio non c'e' il suo
840         portatile Net) gli studenti dovranno darsi un indirizzo ip
841         manualmente e disabilitare il proxy (che pero' e
842         trasparente, quindi fate pure come se non ci fosse ;) .
843         Questo in attesa che si sappia se sara' nuovamente
844         utilizzabile il vecchio server Bender.</p>
845
846         <div class="section" id="interfaces">
847           <h3><a class="toc-backref" href=
848           "#id9">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></h3>
849
850           <p>Segue un esempio del file di configurazione della
851           scheda di rete con configurazione statica:</p>
852
853           <p>/etc/network/interfaces:</p>
854           <pre class="literal-block">
855 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
856
857 # The loopback interface
858 iface lo inet loopback
859
860 # La prima scheda di rete (se si chiama eth0)
861 # (network, broadcast and gateway sono optional)
862 iface etho inet static
863   # esempio con dhcp
864   # iface etho inet dhcp
865 address 212.22.136.101
866 netmask 255.255.255.0
867 network 212.22.136.0
868 broadcast 212.22.136.255
869 gateway 212.22.136.254
870
871 # Quali interfaccie devono partire automaticamente:
872 auto lo eth0
873 </pre>
874
875           <p>Controllare il nome della propia scheda di rete: a
876           volte <em>udev</em> rinomina la prima scheda a <tt class=
877           "docutils literal"><span class="pre">eth1</span></tt>,
878           oppure potreste avere piu' di una scheda di rete (anche
879           un'interfaccia <em>firewire</em> puo' essere
880           automaticamente abilitata come scheda di rete).</p>
881
882           <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
883           , eth0:1 , ...) ricordarsi che queste dipendono dalla
884           scheda fisica a cui sono associate: abbattere con
885           <tt class="docutils literal"><span class=
886           "pre">ifconfig</span> <span class="pre">down</span>
887           <span class="pre">eth0</span></tt> la scheda principale
888           fara' cadere anche queste. Tornando ad attivare la schda
889           principale con <tt class="docutils literal"><span class=
890           "pre">ifconfig</span> <span class="pre">eth0</span>
891           <span class="pre">up</span></tt> la virtuale tornera'
892           attiva: nel caso voleste disabilitarla dovrete quindi
893           sempre abbattere manualmente la scheda virtuale
894           <em>prima</em> della scheda reale.</p>
895         </div>
896       </div>
897
898       <div class="section" id="bash-completion">
899         <h2><a class="toc-backref" href=
900         "#id10">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></h2>
901
902         <p>Il completamento automatico della shell (che si attiva
903         premendo il tasto tab una o due volte mentre si sta
904         scrivendo un termine) permette di comporre automaticamente
905         i nomi dei comandi e i percorsi dei file, sopratutto la
906         composizione automatica dei percorsi dei file e' di grande
907         importanza.</p>
908
909         <p>Bash_completion permette di integrare il completamento
910         automatico con i nomi dei pacchetti e oggetti dei comandi:
911         ad es. volendo digitare <tt class=
912         "docutils literal"><span class="pre">apt-get</span>
913         <span class="pre">inst[TAB]</span> <span class=
914         "pre">xtigh[TAB]</span></tt> ora verra' completatato
915         automaticamente sia la parola <tt class=
916         "docutils literal"><span class="pre">install</span></tt>
917         che il nome del pacchetto <tt class=
918         "docutils literal"><span class=
919         "pre">xtightvncviewer</span></tt>.</p>
920
921         <p>Abilitare /etc/bash_completion nel file <tt class=
922         "docutils literal"><span class=
923         "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
924         proprio <tt class="docutils literal"><span class=
925         "pre">~/.bashrc</span></tt> (che sarebbe il file
926         <em>nascosto</em>, quindi con un punto all'inizio del nome
927         del file, di configurazione della shell bash per ogni
928         utente, presente nella propria <em>home
929         directory</em>):</p>
930         <pre class="literal-block">
931 echo ". /etc/bash_completion" &gt;&gt; ~/.bashrc
932 </pre>
933
934         <p>Esempio di ~/.bahsrc</p>
935         <pre class="literal-block">
936 # ~/.bashrc: executed by bash(1) for non-login shells.
937
938 export PS1='\h:\w\$ '
939 umask 022
940
941 # Decommentare le seguenti righr per abilitare la colorazione dei
942 # nomi dei file:
943  export LS_OPTIONS='--color=auto'
944  eval "`dircolors`"
945  alias ls='ls $LS_OPTIONS'
946  alias ll='ls $LS_OPTIONS -l'
947  alias l='ls $LS_OPTIONS -lA'
948
949 # Some more alias to avoid making mistakes:
950 # alias rm='rm -i'
951 # alias cp='cp -i'
952 # alias mv='mv -i'
953
954 # questo abilita bash completion
955 . /etc/bash_completion
956 </pre>
957
958         <p>Il file <tt class="docutils literal"><span class=
959         "pre">/etc/bash_completion</span></tt> deve essere presente
960         nel sistema, in caso contrario installare il pacchetto:
961         <tt class="docutils literal"><span class=
962         "pre">bash-completion</span></tt>. Generalmente l'utente
963         <tt class="docutils literal"><span class=
964         "pre">root</span></tt> ha un file <tt class=
965         "docutils literal"><span class="pre">.bashrc</span></tt>
966         preimpostato analogo a quello citato sopra, a differenza
967         dei normali utenti di sistema.</p>
968
969         <p>Links:</p>
970
971         <ul class="simple">
972           <li><a class="reference external" href=
973           "http://www.debian-administration.org/articles/316">An
974           introduction to bash completion</a></li>
975
976           <li><a class="reference external" href=
977           "http://www.caliban.org/bash/">Working more productively
978           with bash 2.x/3.x</a></li>
979         </ul>
980       </div>
981
982       <div class="section" id="vim">
983         <h2><a class="toc-backref" href=
984         "#id11">1.4&nbsp;&nbsp;&nbsp;Vim</a></h2>
985
986         <p>Vim e' l'editor di testo preferito dai sistemisti,
987         quindi sara' conveniente impostare fin da subito alcune
988         impostazioni per renderlo piu' comodo.</p>
989
990         <p>Assicurarsi che sia installata nel sistema la versione
991         completa dell'editor <tt class=
992         "docutils literal"><span class="pre">vim</span></tt>
993         nstallando il pacchetto vimi:</p>
994         <pre class="literal-block">
995        # apt-get install vim
996
997 e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
998
999    " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1000    " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1001    " you can find below.  If you wish to change any of those settings, you should
1002    " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1003    " everytime an upgrade of the vim packages is performed.  It is recommended to
1004    " make changes after sourcing debian.vim since it alters the value of the
1005    " 'compatible' option.
1006
1007    " This line should not be removed as it ensures that various options are
1008    " properly set to work with the Vim-related packages available in Debian.
1009    runtime! debian.vim
1010
1011    " Uncomment the next line to make Vim more Vi-compatible
1012    " NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
1013    " options, so any other options should be set AFTER setting 'compatible'.
1014    "set compatible
1015
1016    " Vim5 and later versions support syntax highlighting. Uncommenting the next
1017    " line enables syntax highlighting by default.
1018    syntax on
1019
1020    " If using a dark background within the editing area and syntax highlighting
1021    " turn on this option as well
1022    set background=dark
1023
1024    " Uncomment the following to have Vim jump to the last position when
1025    " reopening a file
1026
1027    if has("autocmd")
1028      au BufReadPost * if line("'\"") &gt; 0 &amp;&amp; line("'\"") &lt;= line("$")
1029        \| exe "normal! g'\"" | endif
1030    endif
1031
1032    " Uncomment the following to have Vim load indentation rules and plugins
1033    " according to the detected filetype.
1034    if has("autocmd")
1035      filetype plugin indent on
1036    endif
1037
1038    " The following are commented out as they cause vim to behave a lot
1039    " differently from regular Vi. They are highly recommended though.
1040    set showcmd             " Show (partial) command in status line.
1041    "set showmatch          " Show matching brackets.
1042    set ignorecase          " Do case insensitive matching
1043    "set smartcase          " Do smart case matching
1044    "set incsearch          " Incremental search
1045    set autowrite           " Automatically save before commands like :next and :make
1046    "set hidden             " Hide buffers when they are abandoned
1047    "set mouse=a            " Enable mouse usage (all modes) in terminals
1048
1049    " Source a global configuration file if available
1050    " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1051    if filereadable("/etc/vim/vimrc.local")
1052      source /etc/vim/vimrc.local
1053    endif
1054 </pre>
1055       </div>
1056
1057       <div class="section" id="vnc">
1058         <h2><a class="toc-backref" href=
1059         "#id12">1.5&nbsp;&nbsp;&nbsp;VNC</a></h2>
1060
1061         <p>I Virtual Network Computing (o VNC) sono software di
1062         controllo remoto e servono per amministrare il proprio
1063         computer a distanza o visuallizare la sessione di lavoro di
1064         un altro computer sul proprio a scopo didattico.
1065         Installando un server VNC sulla propria macchina ed
1066         impostando una opportuna password si consente ai client VNC
1067         di ricevere una immagine dello schermo ed eventualmente di
1068         inviare input di tastiera e mouse al computer server
1069         (durante le lezioni questo non e' possibile per gli
1070         studenti, solo Andrea esegue i comandi). In pratica si può
1071         gestire il computer server da un'altra postazione, come se
1072         fosse il proprio computer fisico.</p>
1073
1074         <p>Scaricare il pacchetto <tt class=
1075         "docutils literal"><span class=
1076         "pre">xtightvncviewer</span></tt> e lo script <tt class=
1077         "docutils literal"><span class="pre">guarda.sh</span></tt>
1078         in una posizione (collocazione nel <em>path</em> degli
1079         utenti, es <tt class="docutils literal"><span class=
1080         "pre">echo</span> <span class="pre">$PATH</span></tt> per
1081         visualizzare l'attuale path ) comoda per gli utenti ( in
1082         genere <tt class="docutils literal"><span class=
1083         "pre">/bin</span></tt> ), rndere eseguibile lo script.</p>
1084
1085         <p>Procedura:</p>
1086         <pre class="literal-block">
1087 su root
1088 cd /bin
1089 wget http://debian.piffa.net/guarda.sh
1090 chmod +x guarda.sh
1091 exit
1092 </pre>
1093
1094         <p>Si noti che non e' possibile lanciare un applicativo sul
1095         server grafico di un utente da una shell in cui si sta
1096         lavorando come altro utente, anche se root. E' quindi
1097         necessario essere l'utente di sistema che si e' loggato
1098         inizialmente nella sessione grafica per poter lanciare lo
1099         script guarda.sh da una shell.</p>
1100
1101         <p>Controllare con <tt class=
1102         "docutils literal"><span class="pre">whoami</span></tt> di
1103         essere l'utente normale (es <tt class=
1104         "docutils literal"><span class="pre">utente</span>
1105         <span class="pre">|</span> <span class=
1106         "pre">studente</span> <span class="pre">|</span>
1107         <span class="pre">proprio</span> <span class=
1108         "pre">nome</span></tt> ), in caso si sia assunta una altra
1109         <tt class="docutils literal"><span class=
1110         "pre">id</span></tt> si apra un altra shell o si esca da
1111         quella attuale con <tt class=
1112         "docutils literal"><span class="pre">exit</span></tt> .</p>
1113       </div>
1114
1115       <div class="section" id="lista-dei-pacchetti-di-base">
1116         <h2><a class="toc-backref" href=
1117         "#id13">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
1118         base</a></h2>
1119
1120         <p>I pacchetti installati generalmente <a class=
1121         "footnote-reference" href="#id2" id="id1" name=
1122         "id1">[1]</a> per poter seguire le lezioni sono:</p>
1123         <pre class="literal-block">
1124 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1125 </pre>
1126
1127         <table class="docutils footnote" frame="void" id="id2"
1128         rules="none">
1129           <colgroup>
1130             <col class="label">
1131             <col>
1132           </colgroup>
1133
1134           <tbody valign="top">
1135             <tr>
1136               <td class="label"><a class="fn-backref" href=
1137               "#id1">[1]</a></td>
1138
1139               <td><tt class="docutils literal"><span class=
1140               "pre">kde-core</span></tt> e' piu' leggero del
1141               pacchetto <tt class="docutils literal"><span class=
1142               "pre">kde</span></tt>, esiste anche un equivalente
1143               <tt class="docutils literal"><span class=
1144               "pre">gnome-core</span> <span class=
1145               "pre">gnome</span></tt> e il log-in manager
1146               <tt class="docutils literal"><span class=
1147               "pre">gdm</span></tt> per il l'ambiente grafico
1148               Gnome.</td>
1149             </tr>
1150           </tbody>
1151         </table>
1152       </div>
1153
1154       <div class="section" id="apt-configurazione">
1155         <h2><a class="toc-backref" href=
1156         "#id14">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a></h2>
1157
1158         <p>Vediamo i due file principali di apt:</p>
1159
1160         <ul class="simple">
1161           <li><tt class="docutils literal"><span class=
1162           "pre">/etc/apt/sources.list</span></tt></li>
1163
1164           <li><tt class="docutils literal"><span class=
1165           "pre">/etc/apt/apt.conf</span></tt></li>
1166         </ul>
1167
1168         <div class="section" id="sources-list">
1169           <h3><a class="toc-backref" href=
1170           "#id15">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></h3>
1171
1172           <p>Questo file contiene i sorgenti da cui <em>apt</em>
1173           preleva i pacchetti da installare tramite <em>dpkg</em>,
1174           vengono quindi precisati i metodi (ad es. http / ftp /
1175           cdrom / file), la release che si vuole tracciare (es
1176           <tt class="docutils literal"><span class=
1177           "pre">stable,</span> <span class="pre">testing,</span>
1178           <span class="pre">unstable</span></tt> oppure i
1179           corrispondenti release name es: <tt class=
1180           "docutils literal"><span class="pre">Lenny,</span>
1181           <span class="pre">Squeeze,</span> <span class=
1182           "pre">Sid</span></tt>), i rami di interesse (es:
1183           <tt class="docutils literal"><span class=
1184           "pre">main</span></tt> che e' l'archivio principale,
1185           <tt class="docutils literal"><span class=
1186           "pre">non-free</span></tt> per il software non libero,
1187           <tt class="docutils literal"><span class=
1188           "pre">contrib</span></tt> per i pacchetti non realizzati
1189           dai manutentori ufficiali).</p>
1190
1191           <p>Gli archivi sono generalmente:</p>
1192
1193           <ul class="simple">
1194             <li><tt class="docutils literal"><span class=
1195             "pre">deb</span></tt> per pacchetti Debian binari</li>
1196
1197             <li><tt class="docutils literal"><span class=
1198             "pre">deb-src</span></tt> per i pacchetti sorgenti
1199             (quindi da compilare, come il kernel) degli stessi
1200             pacchetti binari. In genere se non compilate spesso
1201             potete evitare di tracciare i sorgenti per risparmiare
1202             tempo e banda.</li>
1203           </ul>
1204
1205           <p><tt class="docutils literal"><span class=
1206           "pre">/etc/apt/sources.list</span></tt></p>
1207           <pre class="literal-block">
1208 # esempio di accesso a un CDROM:
1209 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1210
1211 # Archivio principale debian via http su piffa.net,
1212 # non funziona al difuori dell'aula dei corsi
1213 deb http://debian.piffa.net/debian/ Lenny main
1214 # deb http://debian.piffa.net/debian/ Lenny  non-free contrib
1215
1216 # Mirror da kernel.org da usare a casa:
1217 deb http://mirrors.eu.kernel.org/debian/ Lenny main
1218
1219 # Security dal sito principale
1220 deb http://security.debian.org/ Lenny/updates main
1221 deb-src http://security.debian.org/ Lenny/updates main
1222
1223 # Debian volatile per le cose soggette a cambiamenti non legati
1224 # a dinamiche di sicurezza
1225 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1226 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1227
1228 # Esempio di accesso a un filesystem locale contenente i pacchetti:
1229 # deb file:/mnt/mirror Sid main non-free contrib
1230 </pre>
1231         </div>
1232
1233         <div class="section" id="etc-apt-apt-conf">
1234           <h3><a class="toc-backref" href=
1235           "#id16">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></h3>
1236
1237           <p>Questo file contiene le opzioni di apt, come ad
1238           esempio il proxy:</p>
1239           <pre class="literal-block">
1240 Acquire::http::Proxy "http://10.10.208.254:3128";
1241 </pre>
1242
1243           <p>Si tenga conto che se si imposta un proxy per apt sul
1244           proprio portatile e tornati a casa propria si vuole
1245           scaricare nuovi pacchetti si dovra' disabilitare il
1246           proxy.</p>
1247         </div>
1248       </div>
1249     </div>
1250
1251     <div class="section" id="squid">
1252       <h1><a class="toc-backref" href=
1253       "#id17">2&nbsp;&nbsp;&nbsp;Squid</a></h1>
1254
1255       <p>Squid e' un proxy cache http (ma anche FTP e https)
1256       robusto e strutturato, puo' essere usato sia in reti
1257       relativamente piccole grazie alla semplicita' di
1258       configurazione che in scenari piu' complessi grazie alla
1259       possibilita' di gestirne in modo granulare le risorse
1260       partendo dalle configurazioni piu' semplici per la semplice
1261       <em>condivisione della navigazione</em> internet, la gestione
1262       degli accessi, il filtraggio dei contenuti (Squid e' una
1263       applicazione che si muove nel 4' livello del modello TCP/IP a
1264       differenza di un <em>ipfilter</em> limitato al 2') nel l
1265       bilanciamento del carico tra piu' hosts.</p>
1266
1267       <dl class="docutils">
1268         <dt>Inoltre svolge la funzione di <em>anonymizer</em>:</dt>
1269
1270         <dd>nasconde i client http alla rete internet: risulta solo
1271         il server proxy nei log dei server web frequentati dagli
1272         utenti di Squid.</dd>
1273       </dl>
1274
1275       <p>Cosa a volte sottovalutata, squid permette la navigazione
1276       web a una rete basata su <em>indirizzi ip privati</em> (es
1277       una 192.168.0.0/24). E se la rete privata deve <em>solo
1278       navigare</em> in internet, non serve un <em>NAT</em> od
1279       altro, basta il solo Squid. Per altro non servira' neanche un
1280       servizio DNS dato che <em>sara' il solo squid a risolvere i
1281       nomi di dominio</em> per i suoi client http.</p>
1282
1283       <p>Squid ascolta di default sulla porta 3128, per impostare
1284       <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
1285       "docutils literal"><span class=
1286       "pre">/etc/apt/apt.conf</span></tt></p>
1287       <pre class="literal-block">
1288 Acquire::http::Proxy "10.10.208.254:3128";
1289 </pre>
1290
1291       <p>Per installare Squid si usino i pacchetti:</p>
1292       <pre class="literal-block">
1293 squid3
1294 </pre>
1295
1296       <div class="section" id="configurazione-squid-conf">
1297         <h2><a class="toc-backref" href=
1298         "#id18">2.1&nbsp;&nbsp;&nbsp;Configurazione:
1299         squid.conf</a></h2>
1300
1301         <p>Segue un estratto delle direttive principali viste in
1302         aula presenti nel file di configurazione <tt class=
1303         "docutils literal"><span class=
1304         "pre">/etc/squid3/squid.conf</span></tt> .</p>
1305
1306         <div class="section" id="cache-dir">
1307           <h3><a class="toc-backref" href=
1308           "#id19">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a></h3>
1309
1310           <p>Cache dir serve per impostare dimensione e percorso
1311           della cache creata sul supporto di storaggio. Essendo la
1312           dimensione di default della cache pari a <tt class=
1313           "docutils literal"><span class="pre">~100</span>
1314           <span class="pre">MB</span></tt> e' altamente
1315           consigliabili aumentare questo parametro se si vuole
1316           poter utilizzare la funzione di <em>cache</em> http del
1317           software.</p>
1318
1319           <p>La dimensione ovviamente dipendera' dallo spazio
1320           disponibile, dimensioni tipiche e massime degli oggetti
1321           che si vuole tenere in cache (un solo file <em>.iso e'
1322           circa ``700 MB``, il pacchetto *Openoffice.org</em> cira
1323           <tt class="docutils literal"><span class="pre">150</span>
1324           <span class="pre">MB</span></tt>, un pacchetto debian
1325           circa <tt class="docutils literal"><span class=
1326           "pre">20</span> <span class="pre">MB</span></tt>), numero
1327           dei client.</p>
1328
1329           <p>Si presti poi attenzione alla natura dei dati che
1330           saranno salvati nella cache: sono tutti dati facilmenti
1331           sostituibili (gli originali sono <em>on-line</em>) la cui
1332           perdita non arreca danni permanenti. Questo rende la
1333           cache di Squid un possibile candidato ad un <em>RAID
1334           stripe</em> (livello 0), con vantaggi sia per le
1335           prestazioni (e la velocita' di navigazione e' uno dei
1336           motivi per cui si installa Squid) che per l'utilizzo
1337           estensivo dello spazio di storaggio. Questo fino al
1338           momento in cui per voi non sia piu' importante
1339           <em>garantire la disponibilita' del servizio</em> (se il
1340           RAID stripe dovesse rompersi gli utenti non potrebbero
1341           piu' navigare, cosa che per natura dello stripe e'
1342           maggiormente probabile rispetto ad un <em>mirror</em> o a
1343           un filesytem <em>normale</em>) con un RAID mirror o
1344           5.</p>
1345
1346           <p>Altra considerazione: i dati del proxy vengono slavati
1347           sul filesytem del server dietro richiesta di utenti
1348           esterni talvolta sconosciuti. Come per i servizi di file
1349           sharing o per la posta elettronica non c'e' motivo che il
1350           filesystem su cui sono ospitati questi dati abbia i
1351           privilegi di eseguibilita' o suid (in genere si puo'
1352           anche usare <em>noatime</em> per renderlo piu' veloce,
1353           che si usi o meno il journal dipende dalle preferenze:
1354           affidabilita' oppure prestazioni):</p>
1355
1356           <p>/etc/fstab</p>
1357           <pre class="literal-block">
1358 ...
1359 # Filesystem per Squid http cache
1360 /dev/md3/       /var/spool/squid/       ext3,noexec,nosuid,noatime  0 3
1361 </pre>
1362
1363           <p>Ora possiamo impostare la cache direttamente nel file
1364           <tt class="docutils literal"><span class=
1365           "pre">/etc/squid3/squid.conf</span></tt>:</p>
1366           <pre class="literal-block">
1367 #TAG: cache_dir (riga 1628)
1368 #       Usage:
1369 #
1370 #       cache_dir Type Directory-Name Fs-specific-data [options]
1371 #
1372 #       You can specify multiple cache_dir lines to spread the
1373 #       cache among different disk partitions.
1374 #       ...
1375 #Default:
1376 # cache_dir ufs /var/spool/squid3 100 16 256
1377 cache_dir aufs /var/spool/squid3 300 24 256
1378 #         algoritmo
1379 #              path della cache
1380 #                                dimensione in MB
1381 #                                    directory primo livello
1382 #                                       secondo livello di directory
1383 </pre>
1384
1385           <p>Se si modifica la struttura del filesytem della cache
1386           di Squid, ad esempio variando il numero delle directory,
1387           puo' essere opportuno rigenerare la struttura della cache
1388           di squid (per lo meno se si <em>aumenta</em> il numero
1389           delle directory di primo o secondo livello). Tipicamente
1390           e' consigliabile cancellare (se si ha <em>ridotto</em> il
1391           numero delle diectory) la vecchia cache e poi generare
1392           una nuova struttura. Se si vuole <em>star nel sicuro</em>
1393           ogni volta che si modifica l'impostazione delle directory
1394           <em>si svuoti la vecchia cache e se ne generi una
1395           nuova</em></p>
1396           <pre class="literal-block">
1397 # /etc/init.d/squid3 stop
1398 # rm -r /var/spool/squid3/??
1399 # squid3 -z
1400 # /etc/init.d/squid3 start
1401 </pre>
1402         </div>
1403
1404         <div class="section" id="tag-maximum-object-size">
1405           <h3><a class="toc-backref" href=
1406           "#id20">2.1.2&nbsp;&nbsp;&nbsp;TAG:
1407           maximum_object_size</a></h3>
1408
1409           <p>Questa direttiva imposta la dimensione massima degli
1410           oggetti che vengono slvati sul supporto di storaggio,
1411           oggetti di dimensioni superiori saranno comunque
1412           scaricati ma non tenuti in cache.</p>
1413
1414           <p>TAG: maximum_object_size (1760):</p>
1415           <pre class="literal-block">
1416 # TAG: maximum_object_size (1760)
1417 #       Objects larger than this size will NOT be saved on disk.  The
1418 #       value is specified in kilobytes, and the default is 4MB.  If
1419 #       you wish to get a high BYTES hit ratio, you should probably
1420 #       increase this (one 32 MB object hit counts for 3200 10KB
1421 #       hits).  If you wish to increase speed more than your want to
1422 #       save bandwidth you should leave this low.
1423 #
1424 #       NOTE: if using the LFUDA replacement policy you should increase
1425 #       this value to maximize the byte hit rate improvement of LFUDA!
1426 #       See replacement_policy below for a discussion of this policy.
1427 #
1428 #Default:
1429 # maximum_object_size 4096 KB
1430 maximum_object_size 150 MB
1431 </pre>
1432         </div>
1433
1434         <div class="section" id="tag-cache-mem">
1435           <h3><a class="toc-backref" href=
1436           "#id21">2.1.3&nbsp;&nbsp;&nbsp;TAG: cache_mem</a></h3>
1437
1438           <p><em>Cache_mem</em> imposta quanta memoria RAM venga
1439           utilizzata per la cache di Squid. Questo dipendera' dalla
1440           RAM disponibile sul sistema, e da quanta di questa volete
1441           mettere a disposizione di Squid (altri servizi
1442           iimportanti girano sulla stessa macchina?). Questo
1443           paramentro influisce sulle prestazioni e sul degrado dei
1444           supporti di storaggio (sopratutto se magnetici).</p>
1445
1446           <p>Se si stesse pensando di usare dell'hardware
1447           <em>embedded</em> a basse prestazioni / consumo per
1448           realizzare un server gateway / NAT / Squid si tenga
1449           presente che Squid e' relativamente esoso di risorse:
1450           avra' bisogno di una macchina con <tt class=
1451           "docutils literal"><span class="pre">~25MB</span></tt>
1452           (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1453           servire decorosamente una decina di client http su una
1454           rete ethernet 10/100. In questo caso non fate scendere
1455           <tt class="docutils literal"><span class=
1456           "pre">cache_mem</span></tt> sotto i <tt class=
1457           "docutils literal"><span class="pre">2/4</span>
1458           <span class="pre">MB</span></tt> pena un accesso continuo
1459           al supporto di storaggio.</p>
1460
1461           <p>Se invece si disponesse di una macchina dedicata a
1462           Squid con gigabytes di RAM non si esiti a dedicarne buona
1463           parte a <em>cache_mem</em>.</p>
1464
1465           <p>TAG: cache_mem (1566):</p>
1466           <pre class="literal-block">
1467 #       'cache_mem' specifies the ideal amount of memory to be used
1468 #       for:
1469 #               * In-Transit objects
1470 #               * Hot Objects
1471 #               * Negative-Cached objects
1472 #Default:
1473 # cache_mem 8 M
1474 cache_mem 100 M
1475 </pre>
1476         </div>
1477
1478         <div class="section" id="tag-minimum-object-size">
1479           <h3><a class="toc-backref" href=
1480           "#id22">2.1.4&nbsp;&nbsp;&nbsp;TAG:
1481           minimum_object_size</a></h3>
1482
1483           <p>Questo parametro imposta la dimensione minima degli
1484           oggetti salvati nella cache. Settato a <tt class=
1485           "docutils literal"><span class="pre">0</span></tt> o a
1486           valori molto piccoli puo' influire negativamente sulla
1487           deframmentazione del filesytem e consumare un numero
1488           elevato di <em>inode</em> (cosa non piu' importante con
1489           ext4 o altri filesytem).</p>
1490
1491           <p>TAG: minimum_object_size:</p>
1492           <pre class="literal-block">
1493 #  TAG: minimum_object_size     (bytes)
1494 #       Objects smaller than this size will NOT be saved on disk.  The
1495 #       value is specified in kilobytes, and the default is 0 KB, which
1496 #       means there is no minimum.
1497 #
1498 #Default:
1499 # minimum_object_size 0 KB
1500 minimum_object_size 0 KB
1501 </pre>
1502         </div>
1503       </div>
1504
1505       <div class="section" id=
1506       "negoziazione-degli-accesi-al-servizio">
1507         <h2><a class="toc-backref" href=
1508         "#id23">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli accesi al
1509         servizio</a></h2>
1510
1511         <p>Squid e' uno di quei servizi soggetto a problemi di tipo
1512         <em>open relay</em> , si deve quindi limitare la rete che
1513         puo' accedere al servizio.</p>
1514
1515         <dl class="docutils">
1516           <dt>Open Relay:</dt>
1517
1518           <dd>Un servizio a cui possono accedere tutti
1519           indiscriminatamente. La cosa puo' andare bene per servizi
1520           come i server web, che aspirano per loro natura al
1521           maggior numero possibile di utenti, ma non a servizi come
1522           i proxy http oppure ai server di posta elettronica (che
1523           permetterebbero l'invio di SPAM).</dd>
1524         </dl>
1525
1526         <p>Generalmente non volete che il vostro proxy http venga
1527         usato da persone sconosciute le quali sostanzialmente
1528         <em>navigherebbero sotto l'identita' del vostro proxy</em>
1529         (probabilmente per visionare materiali che non vorrebbero
1530         fossero ricondotti direttamente a loro, per motivi che sta
1531         a voi prendere in considerazione) consumando traffico e
1532         banda della vostra connessione a internet. Tenere Squid in
1533         modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1534         modo per essere inseriti in una <em>black list</em>.</p>
1535
1536         <p>Per poter limitare gli accessi a Squid dal punto di
1537         vista dell'applicazione (quarto livello TCP/IP) si
1538         identifichera' inizialmente l'entita' <em>rete locale</em>
1539         (es: <tt class="docutils literal"><span class=
1540         "pre">localnet</span></tt>) con una ACL di tipo
1541         <em>src</em> (indirizi IP sorgenti) indicando la <em>classe
1542         / range di ip</em> della nostra rete.</p>
1543
1544         <blockquote>
1545           Dopodiche l'accesso (<tt class=
1546           "docutils literal"><span class=
1547           "pre">http_access</span></tt>) si concedera'
1548           (<em>allow</em>) a questa entita' (es: <tt class=
1549           "docutils literal"><span class=
1550           "pre">localnet</span></tt>) negando chiunque altro.
1551         </blockquote>
1552
1553         <p>Per maggiori dettagli sulla sintassi utilizzabile per
1554         esprimere i range di ip: <a class="reference external"
1555         href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1556         http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1557
1558         <div class="section" id="acl-e-http-access">
1559           <h3><a class="toc-backref" href=
1560           "#id24">2.2.1&nbsp;&nbsp;&nbsp;ACL e http access</a></h3>
1561
1562           <p>Si proceda a creare una <tt class=
1563           "docutils literal"><span class="pre">ACL</span></tt> di
1564           tipo <tt class="docutils literal"><span class=
1565           "pre">src</span></tt> per identificare la lostra rete
1566           locale, poi si abiliti l'accesso a questa con la
1567           direttiva <tt class="docutils literal"><span class=
1568           "pre">http_access</span></tt>. Tutto quanto non e'
1569           espressamente autorizzato viene poi negato da un
1570           <tt class="docutils literal"><span class=
1571           "pre">http_access</span> <span class="pre">deny</span>
1572           <span class="pre">all</span></tt> finale.</p>
1573           <pre class="literal-block">
1574 #  TAG: acl
1575 #       Defining an Access List
1576 #
1577 #       Every access list definition must begin with an aclname and acltype,
1578 #       followed by either type-specific arguments or a quoted filename that
1579 #       they are read from.
1580 #       ...
1581 #       ***** ACL TYPES AVAILABLE *****
1582 #
1583 #       acl aclname src ip-address/netmask ...          # clients IP address
1584 # riga 588
1585
1586 # Example rule allowing access from your local networks.
1587 # Adapt to list your (internal) IP networks from where browsing
1588 # should be allowed
1589 #acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
1590 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1591 #acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
1592 #
1593 acl localnet src 10.10.208.0/24
1594
1595 # Riga 606
1596 #  TAG: http_access
1597 #       Allowing or Denying access based on defined access lists
1598 #
1599 #       Access to the HTTP port:
1600 #       http_access allow|deny [!]aclname ...
1601 #
1602 #       NOTE on default values:
1603 #
1604 #       If there are no "access" lines present, the default is to deny
1605 #       the request.
1606
1607 # Riga 643
1608 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1609
1610 # Example rule allowing access from your local networks.
1611 # Adapt localnet in the ACL section to list your (internal) IP networks
1612 # from where browsing should be allowed
1613 #http_access allow localnet
1614 http_access allow localnet
1615 </pre>
1616         </div>
1617       </div>
1618
1619       <div class="section" id="testare-squid">
1620         <h2><a class="toc-backref" href=
1621         "#id25">2.3&nbsp;&nbsp;&nbsp;Testare Squid</a></h2>
1622
1623         <p>Configurato squid e' fondamentale testarne il corretto
1624         funzionamento per assicurarsi di non aver creato un
1625         <em>open-relay</em>. Per fare dei test significativi serve
1626         utilizzare degli host remoti: ci si connetta via ssh a
1627         questi per poi utilizzare <tt class=
1628         "docutils literal"><span class="pre">wget</span></tt> da
1629         riga di comando.</p>
1630
1631         <div class="section" id="client-wgetrc">
1632           <h3><a class="toc-backref" href=
1633           "#id26">2.3.1&nbsp;&nbsp;&nbsp;Client: ~/.wgetrc</a></h3>
1634
1635           <p>Nel file <tt class="docutils literal"><span class=
1636           "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
1637           un file nascosto) si puo' impostare il proxy per wget. Si
1638           utililizzi l'indirizzo ip del server che si vuole
1639           testare, e si seguano i log <tt class=
1640           "docutils literal"><span class=
1641           "pre">/var/log/squid3/access.log</span></tt> sul
1642           server.</p>
1643
1644           <p>Da notare che la prova va' fatta su una macchina della
1645           rete che si vuole testare, non da <em>localhost</em>. Per
1646           altro se si utilizzasse <em>direttamente</em> <tt class=
1647           "docutils literal"><span class=
1648           "pre">localhost</span></tt> non si testerebbe la
1649           <em>ACL</em> predisposta, dato che si si rientrerebbe
1650           nella ACL (pre-configurata di default) <tt class=
1651           "docutils literal"><span class=
1652           "pre">localhost</span></tt>.</p>
1653
1654           <dl class="docutils">
1655             <dt>.wgetrc</dt>
1656
1657             <dd>http_proxy=10.10.208.178:3128</dd>
1658           </dl>
1659
1660           <p>Si proceda a scaricare dal client scelto con un
1661           wget:</p>
1662           <pre class="literal-block">
1663 wget http://www.google.it
1664 </pre>
1665         </div>
1666
1667         <div class="section" id="server-access-log">
1668           <h3><a class="toc-backref" href=
1669           "#id27">2.3.2&nbsp;&nbsp;&nbsp;Server:
1670           access.log</a></h3>
1671
1672           <p>Si puo' controllare il corretto funzionamento del
1673           server seguendo i log di accesso a Squid:</p>
1674           <pre class="literal-block">
1675 # tail -f /var/log/squid3/access.log
1676 </pre>
1677
1678           <p>In oltre e' possibile configurare diversi
1679           <em>analizzatori di log</em> come <tt class=
1680           "docutils literal"><span class=
1681           "pre">Webalizer</span></tt> per studiare i log di
1682           Squid.</p>
1683         </div>
1684       </div>
1685     </div>
1686
1687     <div class="section" id="apache">
1688       <h1><a class="toc-backref" href=
1689       "#id28">3&nbsp;&nbsp;&nbsp;Apache</a></h1>
1690
1691       <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
1692       dato alla piattaforma server Web modulare piu' diffusa (ma
1693       anche al gruppo di lavoro open source che ha creato,
1694       sviluppato e aggiornato il software server), in grado di
1695       operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1696
1697       <p>Un server web e' un processo, e per estensione il computer
1698       su cui e' in esecuzione, che si occupa di fornire, su
1699       richiesta del browser, una pagina web (spesso scritta in
1700       HTML). Le informazioni inviate dal server web viaggiano in
1701       rete trasportate dal protocollo HTTP. L'insieme di server web
1702       dÃ&nbsp; vita al World Wide Web, uno dei servizi piu'
1703       utilizzati di Internet.</p>
1704
1705       <div class="section" id="pacchetti-da-installare">
1706         <h2><a class="toc-backref" href=
1707         "#id29">3.1&nbsp;&nbsp;&nbsp;Pacchetti da
1708         installare::</a></h2>
1709
1710         <blockquote>
1711           apache2 apache2-doc
1712         </blockquote>
1713
1714         <p>Con la release 2.0 di Apache viene automaticamente resa
1715         disponibile anche la versione SSL (Secure Socket Layer,
1716         cpnnessioni criptate ) del web server.</p>
1717       </div>
1718
1719       <div class="section" id="configurazione-di-apache">
1720         <h2><a class="toc-backref" href=
1721         "#id30">3.2&nbsp;&nbsp;&nbsp;Configurazione di
1722         Apache</a></h2>
1723
1724         <p>I file di configurazione di apache si trovano nella
1725         cartella: <tt class="docutils literal"><span class=
1726         "pre">/etc/apache2</span></tt> e sono strutturati come
1727         descritto nel file <tt class=
1728         "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
1729         . Sostanzialmente lo schema e' il seguente:</p>
1730
1731         <dl class="docutils">
1732           <dt>apache2.conf</dt>
1733
1734           <dd>
1735             <p class="first">File di configurazione principale del
1736             servizio.</p>
1737
1738             <p class="last">httpd.conf e' il vecchio file di
1739             configurazione di Apache1, presente per motivi di
1740             retrocompatibilita' e' generalemente vuoto.</p>
1741           </dd>
1742
1743           <dt>ports.conf</dt>
1744
1745           <dd>In questo file vengono specificate le porte sulle
1746           quali resta in ascolto il server web. Si noti che
1747           utilizzando dei virtual hosts generalmente viene
1748           specificata per questi la porta su cui ascoltare nel file
1749           di configurazione del virtual host, ad es: <tt class=
1750           "docutils literal"><span class=
1751           "pre">&lt;VirtualHost</span> <span class=
1752           "pre">*:80&gt;</span></tt></dd>
1753
1754           <dt>sites-available</dt>
1755
1756           <dd>In questa cartella vengono raccolti i file di
1757           configurazione dei virtual host disponibili.</dd>
1758
1759           <dt>sites-enabled</dt>
1760
1761           <dd>In questa cartella sono contenuti dei link simbolici
1762           ai files in ../sites-available : se il link e' presente
1763           in questa cartella il virtual host e' abilitato.</dd>
1764
1765           <dt>mods-available</dt>
1766
1767           <dd>Stesso metodo per i moduli: in questa cartella ci
1768           sono i moduli veri e propri che verranno poi abilitati
1769           grazie all'esistenza di link simbolici nella cartella
1770           mods-enabled .</dd>
1771
1772           <dt>mods-enabled</dt>
1773
1774           <dd>Moduli abilitati, effettivamente caricati.</dd>
1775         </dl>
1776       </div>
1777
1778       <div class="section" id="apache-conf">
1779         <h2><a class="toc-backref" href=
1780         "#id31">3.3&nbsp;&nbsp;&nbsp;apache.conf</a></h2>
1781
1782         <p>File di configurazione del servizio Apache, contiene le
1783         impostazioni generiche (ad esempio utilizzo della RAM e
1784         risorse di sistema) dell'intero servizio. Nella
1785         configurazione di default per Debian non viene definito un
1786         vero e proprio sito di default ma solo dei virtual
1787         hosts.</p>
1788
1789         <p>Guardiamo alcune direttive interessanti:</p>
1790
1791         <dl class="docutils">
1792           <dt>Timeout</dt>
1793
1794           <dd>Numero di secondi da aspettare prima di chiudere la
1795           connessione con il client. Questo parametro serve a
1796           liberare le risorse di sistema nel caso che un client,
1797           magar a causa di una connessione particolarmente lenta o
1798           instabili, tenga attivo indefinitivamente un processo di
1799           apache.</dd>
1800
1801           <dt>KeepAlive</dt>
1802
1803           <dd>L'estensione keep-alive (http 1.0) congiuntamente
1804           alle connessioni persistenti (http 1.1) permettono al
1805           server di rispondere a piu' richieste dei client mediante
1806           la stessa connessione. Il protocoll http per sua natura
1807           e' senza stato (<em>statelessi</em> ), quindi ogni
1808           risorsa richiesta (per pagine web si pensi ad esempio
1809           alle immagini) dal client necessita di una connessione
1810           autonoma. Keep-alive permette di ottimizzare la
1811           connessione anche fino al 50% a seconda delle situazioni
1812           e contenuti.</dd>
1813
1814           <dt>Server-Pool Size Regulation</dt>
1815
1816           <dd>Questi parametri (StartServers, MinSpareServers, ecc.
1817           Tutti spiegati nel manuale di apache) servono per
1818           attribuire le risorse di sistema disponibili al server
1819           Apache. Tenere questi parametri bassi serve a limitare il
1820           rischio di Denial of Service per il server, nel caso
1821           offra altri servizi. I settagi di default sono come
1822           sempre abbastanza conservativi, se si conta di usare il
1823           proprio Apache per servire un sito web con molti
1824           visitatori sara' necessario aumentare sensibilmente le
1825           impostazioni di base.</dd>
1826
1827           <dt>AccessFileName</dt>
1828
1829           <dd>Il nome del file che viene onorato per modificare le
1830           impostazioni per una singola directory, legato alla
1831           direttiva AllowOverride .</dd>
1832         </dl>
1833       </div>
1834
1835       <div class="section" id="installazione-di-php">
1836         <h2><a class="toc-backref" href=
1837         "#id32">3.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a></h2>
1838
1839         <p>Pacchetti da installare: <tt class=
1840         "docutils literal"><span class="pre">php5</span>
1841         <span class="pre">php-pear</span></tt></p>
1842
1843         <div class="section" id="test-del-modulo-php">
1844           <h3><a class="toc-backref" href=
1845           "#id33">3.4.1&nbsp;&nbsp;&nbsp;Test del modulo
1846           php</a></h3>
1847
1848           <p>Creare nella cartella <tt class=
1849           "docutils literal"><span class="pre">/var/www</span></tt>
1850           (o altra cartella visibile) un file con estensione *.php
1851           (es <tt class="docutils literal"><span class=
1852           "pre">/var/ww/info.php</span></tt> contenete codice php
1853           eseguibile dall'interprete, ad es:</p>
1854           <pre class="literal-block">
1855 &lt;?php phpinfo() ; ?&gt;
1856 </pre>
1857
1858           <p>Questa funzione di php generera' la tipica pagina con
1859           le impostazioni attuali per PHP. Richiamando la pagina
1860           (es: <tt class="docutils literal"><span class=
1861           "pre">http://localhost/info.php</span></tt> ) verra
1862           generata dall'interprete PHP la pagina HTML e resa
1863           disponibile tramite Apache ai utclient HTTP, a prova del
1864           correto funzionamento del modulo di PHP e della sua
1865           integrazione con il serv web Apache. In caso contrario se
1866           il client http proporra di scaricare la pagina invece che
1867           visualizzarla nel browser: non funziona l'interprete di
1868           php o sono mal configurati i MIME-type. prima di tutto
1869           assicurarsi di aver fatoo ripartire Apache.</p>
1870         </div>
1871
1872         <div class="section" id=
1873         "installazione-del-supporto-per-mysql">
1874           <h3><a class="toc-backref" href=
1875           "#id34">3.4.2&nbsp;&nbsp;&nbsp;Installazione del supporto
1876           per Mysql</a></h3>
1877
1878           <p>Installare i pacchetti:</p>
1879           <pre class="literal-block">
1880 php5-mysql phpmyadmin
1881 </pre>
1882
1883           <p>Controllare tramite la pagina php.info che sia
1884           abilitato il supporto per Mysql (ripartito Apache,
1885           ricaricare la pagina e cercare con CTRL+f <tt class=
1886           "docutils literal"><span class=
1887           "pre">mysql</span></tt>).</p>
1888         </div>
1889
1890         <div class="section" id="phpmyadmin">
1891           <h3><a class="toc-backref" href=
1892           "#id35">3.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></h3>
1893
1894           <p>L'interfaccia web Phpmyadmin non richede
1895           necessariamente la presenza di un database Mysql locale,
1896           puo' infatti essere utilizzata per gestire databases
1897           remoti (il suo file di configurazione: <tt class=
1898           "docutils literal"><span class=
1899           "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
1900           caso si voglia installare localmente Mysql si utilizzi il
1901           pacchetto <tt class="docutils literal"><span class=
1902           "pre">mysql-server</span></tt> .</p>
1903
1904           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
1905           <tt class="docutils literal"><span class=
1906           "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
1907           non fosse controllare che sia incluso il file <tt class=
1908           "docutils literal"><span class=
1909           "pre">/etc/phpmyadmin/apache.conf</span></tt> in
1910           <tt class="docutils literal"><span class=
1911           "pre">/etc/apache2/conf.d/</span></tt> .</p>
1912         </div>
1913
1914         <div class="section" id=
1915         "installazione-del-supporto-per-postgresql">
1916           <h3><a class="toc-backref" href=
1917           "#id36">3.4.4&nbsp;&nbsp;&nbsp;Installazione del supporto
1918           per Postgresql</a></h3>
1919
1920           <p>Installare i pacchetti:</p>
1921           <pre class="literal-block">
1922 php5-pgsql phppgadmin
1923 </pre>
1924
1925           <p>Controllare tramite la pagina php.info che sia
1926           abilitato il supporto per PostgreSQL (ripartito Apache,
1927           ricaricare la pagina e cercare con CTRL+f <tt class=
1928           "docutils literal"><span class=
1929           "pre">pgsql</span></tt>).</p>
1930         </div>
1931
1932         <div class="section" id="phppgadmin">
1933           <h3><a class="toc-backref" href=
1934           "#id37">3.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></h3>
1935
1936           <p>L'interfaccia web Phppgadmin per il database server
1937           PostgreSQL non richede necessariamente la presenza di un
1938           database locale, puo' infatti essere utilizzata per
1939           gestire databases remoti (il suo file di configurazione:
1940           <tt class="docutils literal"><span class=
1941           "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
1942           caso si voglia installare localmente Mysql si utilizzi il
1943           pacchetto <tt class="docutils literal"><span class=
1944           "pre">postgresql</span></tt> .</p>
1945
1946           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
1947           <tt class="docutils literal"><span class=
1948           "pre">http://localhost/phppgadmin/</span></tt>, se cosi
1949           non fosse controllare che sia incluso il file <tt class=
1950           "docutils literal"><span class=
1951           "pre">/etc/phppgadmin/apache.conf</span></tt> in
1952           <tt class="docutils literal"><span class=
1953           "pre">/etc/apache2/conf.d/</span></tt> .</p>
1954         </div>
1955       </div>
1956
1957       <div class="section" id="virtual-hosts">
1958         <h2><a class="toc-backref" href=
1959         "#id38">3.5&nbsp;&nbsp;&nbsp;Virtual hosts</a></h2>
1960
1961         <blockquote>
1962           <ul class="simple">
1963             <li><a class="reference external" href=
1964             "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
1965
1966             <li><a class="reference external" href=
1967             "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
1968             http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
1969           </ul>
1970         </blockquote>
1971
1972         <p>I virtual host permettono di avere piu' siti internet
1973         disponibili tramite lo stesso server web, eventualmente
1974         mappati su un solo indirizzo ip. Sono generalemente di due
1975         tipi:</p>
1976
1977         <blockquote>
1978           <ul class="simple">
1979             <li>Basati su <em>indirizzi ip</em>. Se si ha la
1980             possibilita' di avere piu' indirizzi ip dedicati per i
1981             diversi siti che si vuole servire. ES: <tt class=
1982             "docutils literal"><span class=
1983             "pre">&lt;VirtualHost</span> <span class=
1984             "pre">192.168.0.2:80&gt;</span></tt> . Soluzione
1985             dispendiosa, si tende ad usarla solo se servono
1986             certificati di sicurezza (SSL ) dedicati per ogni
1987             sito.</li>
1988
1989             <li>Basati su <em>nomi di dominio</em> che puntano allo
1990             stesso ip. Soluzione piu' economica e diffusa che si
1991             basa sulle funzionalita' di http 1.1 .</li>
1992           </ul>
1993         </blockquote>
1994
1995         <p>Prenderemo in esame la gestione di virtual hosts basati
1996         su nomi di dominio.</p>
1997
1998         <div class="section" id="gestione-dns">
1999           <h3><a class="toc-backref" href=
2000           "#id39">3.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></h3>
2001
2002           <p>Prima di tutto per poter impostare i virtual hosts
2003           dovete avere un server DNS che risolva i vostri nomi di
2004           dominio sull'indirizzo ip del server. Questo si puo'
2005           ottenere in vari modi, ad es:</p>
2006
2007           <blockquote>
2008             <dl class="docutils">
2009               <dt><em>Bind</em> (DNS server)</dt>
2010
2011               <dd>Impostare i campi A nelle proprie zone gestite
2012               dal server dns Bind. Ad es: <tt class=
2013               "docutils literal"><span class=
2014               "pre">papo</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2015               <span class=
2016               "pre">A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2017               <span class="pre">212.22.136.248</span></tt></dd>
2018
2019               <dt><em>Servizio DNS dinamico on line</em>.</dt>
2020
2021               <dd>Utilizzare un servizio come ad es: <a class=
2022               "reference external" href=
2023               "https://www.dyndns.com/">https://www.dyndns.com/</a>
2024               per mappare nomi di dominio sul proprio indirizzo ip,
2025               comodo ad esempio se si dispone di un indirzzo ip
2026               pubblico (anche se dinamico) per la propria
2027               connessione ad internet.</dd>
2028
2029               <dt><em>Dnsmasq</em> (DNS server)</dt>
2030
2031               <dd>Utilizzabile a livello locale per fare dei test,
2032               utilizzando direttive come: <tt class=
2033               "docutils literal"><span class=
2034               "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2035
2036               <dt><tt class="docutils literal"><span class=
2037               "pre">/etc/hosts</span></tt></dt>
2038
2039               <dd>Per prove <em>strettamente a livello locale</em>
2040               potete impostare i nomi dei vostri virtual server nel
2041               file /etc/hosts .</dd>
2042             </dl>
2043           </blockquote>
2044           <pre class="literal-block">
2045 # dig 177.piffa.net
2046
2047 ; &lt;&lt;&gt;&gt; DiG 9.5.1-P1 &lt;&lt;&gt;&gt; 177.piffa.net
2048 ;; global options:  printcmd
2049 ;; Got answer:
2050 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 38036
2051 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
2052
2053 ;; QUESTION SECTION:
2054 ;177.piffa.net.                 IN      A
2055
2056 ;; ANSWER SECTION:
2057 177.piffa.net.          0       IN      A       10.10.208.177
2058
2059 ;; Query time: 12 msec
2060 ;; SERVER: 10.10.208.254#53(10.10.208.254)
2061 ;; WHEN: Wed May  6 12:27:08 2009
2062 ;; MSG SIZE  rcvd: 47
2063 </pre>
2064
2065           <p>La parte interessante e' <tt class=
2066           "docutils literal"><span class=
2067           "pre">177.piffa.net.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2068           <span class=
2069           "pre">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2070           <span class="pre">IN</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2071           <span class=
2072           "pre">A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2073           <span class="pre">10.10.208.177</span></tt> . Il nome di
2074           dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2075           , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2076           dovra' essere disponibile un virtual host che corrisponde
2077           al nome <tt class="docutils literal"><span class=
2078           "pre">177.piffa.net</span></tt> .</p>
2079         </div>
2080
2081         <div class="section" id="virtual-host">
2082           <h3><a class="toc-backref" href=
2083           "#id40">3.5.2&nbsp;&nbsp;&nbsp;Virtual host</a></h3>
2084
2085           <p>Esempio di Virtual host:</p>
2086           <pre class="literal-block">
2087 &lt;VirtualHost *:80 &gt;
2088     ServerName 177.piffa.net
2089     DocumentRoot /var/www/177.piffa.net/
2090     ServerAdmin webmaster@177.piffa.net
2091 &lt;/VirtualHost&gt;
2092 </pre>
2093
2094           <ol class="arabic simple">
2095             <li><tt class="docutils literal"><span class=
2096             "pre">&lt;VirtualHost</span> <span class=
2097             "pre">\*:80</span> <span class="pre">&gt;</span></tt>
2098             La prima riga indica l'inizio della stanza relativa al
2099             nostro virtual host, che ascolotera' su qualunque
2100             indirizzo ip (nel caso il server abbia piu' indirizzi
2101             dai quali e' raggiungibile) sulla porta <tt class=
2102             "docutils literal"><span class=
2103             "pre">80</span></tt>.</li>
2104
2105             <li><tt class="docutils literal"><span class=
2106             "pre">Server/name</span></tt> precisa quale sara' il
2107             nome di dominio a cui verra' associato questo sito
2108             rispetto ad altri eventualmenti presenti sullo stesso
2109             server web.</li>
2110
2111             <li><tt class="docutils literal"><span class=
2112             "pre">DocumentRoot</span></tt> : il path della
2113             directory che contiene le pagine del sito.</li>
2114
2115             <li><tt class="docutils literal"><span class=
2116             "pre">ServerAdmin</span></tt>: l'indirizzo del
2117             webmaster, in modo da poterlo contattare in caso di
2118             problemi col sito.</li>
2119
2120             <li><tt class="docutils literal"><span class=
2121             "pre">&lt;/VirtualHost&gt;</span></tt>: <em>tag</em> di
2122             chiusura della stanza di definizione del virtual
2123             host.</li>
2124           </ol>
2125
2126           <p>Quelle che abbiamo appena visto sono le direttive
2127           essenziali per definire un sito virtuale, potrebbe essere
2128           utile aggiungene altre:</p>
2129
2130           <ul>
2131             <li>
2132               <dl class="first docutils">
2133                 <dt><tt class="docutils literal"><span class=
2134                 "pre">ErrorLog</span> <span class=
2135                 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2136
2137                 <dd>
2138                   <p class="first last">Log degli errori separato
2139                   dai restanti siti web ospitati dal server.</p>
2140                 </dd>
2141               </dl>
2142             </li>
2143
2144             <li>
2145               <dl class="first docutils">
2146                 <dt><tt class="docutils literal"><span class=
2147                 "pre">LogLevel</span> <span class=
2148                 "pre">warn</span></tt></dt>
2149
2150                 <dd>
2151                   <p class="first last">Livello di importanza degli
2152                   eventi loggati= warning <em>attenzione</em> .</p>
2153                 </dd>
2154               </dl>
2155             </li>
2156
2157             <li>
2158               <dl class="first docutils">
2159                 <dt><tt class="docutils literal"><span class=
2160                 "pre">CustomLog</span> <span class=
2161                 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2162                 <span class="pre">combined</span></tt></dt>
2163
2164                 <dd>
2165                   <p class="first last">Log di accesso separati
2166                   dagli altri siti, utile anche qua per statistiche
2167                   di accesso per il solo sito virtuale.</p>
2168                 </dd>
2169               </dl>
2170             </li>
2171           </ul>
2172
2173           <p>Potrebbe essere utile modificare le impostazioni di
2174           una intera directory, ad esempio per abilitare
2175           l'<tt class="docutils literal"><span class=
2176           "pre">AuthConfig</span></tt>:</p>
2177           <pre class="literal-block">
2178 &lt;Directory "/var/www/miosito.net/privata"&gt;
2179         AllowOverride AuthConfig
2180         Options ExecCGI Indexes MultiViews FollowSymLinks
2181         Order allow,deny
2182         Allow from all
2183 &lt;/Directory&gt;
2184 </pre>
2185
2186           <p><tt class="docutils literal"><span class=
2187           "pre">AllowOverride</span> <span class=
2188           "pre">AuthConfig</span></tt> ora vale per l'intera
2189           directory, come le altre opzioni.</p>
2190         </div>
2191       </div>
2192
2193       <div class="section" id="negoziazione-accessi">
2194         <h2><a class="toc-backref" href=
2195         "#id41">3.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a></h2>
2196
2197         <p>Tipicamente quando si installa un server web il proprio
2198         desiderio e' di dare accesso ai materiali disponibili al
2199         maggior numero di visitatori possibile. Talvolta pero' puo
2200         essere utile o necessario limitare gli accessi, ad esempio
2201         per escludere un <em>bot</em> indesiderato che scansiona
2202         ininterottamente le nostre pagine o per creare una <em>Area
2203         Riservata</em> i cui materiali non devono essere
2204         disponibile a tutti.</p>
2205
2206         <div class="section" id="limiti-su-base-ip">
2207           <h3><a class="toc-backref" href=
2208           "#id42">3.6.1&nbsp;&nbsp;&nbsp;Limiti su base ip</a></h3>
2209
2210           <p>La forma piu' semplice di restrizine degli accessi e'
2211           su base degli indirizzi IP dei client: tipicamente i siti
2212           web sono settati per dare accesso a chiunque:</p>
2213           <pre class="literal-block">
2214 &lt;VirtualHost *:80 &gt;
2215        # ...
2216        &lt;Directory "/var/www/177.piffa.net"&gt;
2217        Order allow,deny
2218        Allow from all
2219        &lt;/Directory&gt;
2220 &lt;/VirtualHost&gt;
2221 </pre>
2222
2223           <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2224           questo modo:</p>
2225           <pre class="literal-block">
2226 &lt;VirtualHost *:80 &gt;
2227        &lt;Directory "/var/www/177.piffa.net"&gt;
2228        Order allow,deny
2229        Allow from all
2230        Deny from 192.168.0.1
2231        &lt;/Directory&gt;
2232 &lt;/VirtualHost&gt;
2233 </pre>
2234
2235           <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2236           materiali dell'intero sito virtuale, oppure potremmo
2237           lavorare su una sola directory:</p>
2238           <pre class="literal-block">
2239 &lt;Directory "/var/www/miosito.net/limitata"&gt;
2240        Order allow,deny
2241        Allow from 192.168.0.0./24
2242        Deny from all
2243 &lt;/Directory&gt;
2244 </pre>
2245
2246           <p>In questo modo solo la classe IP <tt class=
2247           "docutils literal"><span class=
2248           "pre">192.168.0.0/24</span></tt> potra' accedere alla
2249           directory <tt class="docutils literal"><span class=
2250           "pre">/limitata</span></tt> Si tenga pero' conto che e'
2251           relativamente facile per un malintenzionato cambiare il
2252           propio indirizzo ip, oppure collegarsi da un altra zona.
2253           Meno facile e' accedere ad una classe privata trovandosi
2254           all'esterno di questa, ma e' comunque possibile mandare
2255           delle richieste <tt class="docutils literal"><span class=
2256           "pre">GET</span></tt> per cercare di mandare in Denial Of
2257           Service il webserver.</p>
2258         </div>
2259       </div>
2260
2261       <div class="section" id="user-authentication">
2262         <h2><a class="toc-backref" href=
2263         "#id43">3.7&nbsp;&nbsp;&nbsp;User Authentication</a></h2>
2264
2265         <p>A volte conviene negoziare gli accessi ad un area di un
2266         sito tramite autenticazione basata sull'accopiata <em>nome
2267         utente / password</em>. Questo puo' venire utile per creare
2268         una area download <em>intranet</em>, alla quale possano
2269         accedere solo gli utenti previsti a prescindere dagli
2270         indirizzi IP dei loro client. Per quanto esistano soluzioni
2271         piu' granulari e sofisticate per ottenere questo,
2272         <em>mod-auth</em> puo'essere sufficente. E mod auth non
2273         richiede l'installazione di software aggiuntivi.</p>
2274
2275         <p>link: <a class="reference external" href=
2276         "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2277
2278         <div class="section" id="definire-la-cartella">
2279           <h3><a class="toc-backref" href=
2280           "#id44">3.7.1&nbsp;&nbsp;&nbsp;Definire la
2281           cartella</a></h3>
2282
2283           <p>Decidere quale sara' il <em>path</em> della cartella
2284           da sottoporre ad autentizazione:(e creiamo la
2285           cartella):</p>
2286
2287           <blockquote>
2288             <tt class="docutils literal"><span class=
2289             "pre">mkdir</span> <span class=
2290             "pre">/var/www/177.piffa.net/privata</span></tt>
2291           </blockquote>
2292         </div>
2293
2294         <div class="section" id=
2295         "creazione-del-database-delle-passwords">
2296           <h3><a class="toc-backref" href=
2297           "#id45">3.7.2&nbsp;&nbsp;&nbsp;Creazione del database
2298           delle passwords</a></h3>
2299
2300           <p>Un modo semplice per gestire una database di
2301           <em>user-id / passwords</em> e' utilizzare l'utility
2302           <tt class="docutils literal"><span class=
2303           "pre">htpasswd</span></tt> di Apache. Questa crea un file
2304           in cui un <em>crypt</em> delle password viene associato
2305           agli utenti.</p>
2306
2307           <p>Si dovra' decidere dove tenere questo file, la cosa
2308           importante e' che non sia visibile nel sito web: non deve
2309           essere scaricabile dai visitatori. Deve essere cioe'
2310           all'esterno della <em>DocumentRoot</em>: un buon posto
2311           potrebbe essere la /home dell'utente.</p>
2312
2313           <p>Creiamo (con il <em>flag</em> <tt class=
2314           "docutils literal"><span class="pre">-c</span></tt>) il
2315           file <tt class="docutils literal"><span class=
2316           "pre">/home/utente/passwords</span></tt> con l'utente
2317           <tt class="docutils literal"><span class=
2318           "pre">luca</span></tt>:</p>
2319           <pre class="literal-block">
2320 htpasswd -c /home/utente/passwords luca
2321 </pre>
2322
2323           <p><tt class="docutils literal"><span class=
2324           "pre">htpasswd</span></tt> ci chedera' la password da
2325           associare all'utente <tt class=
2326           "docutils literal"><span class="pre">luca</span></tt>.
2327           Per sucessive modifiche della password o aggiunta di
2328           nuovi utenti non sara' necessario usare il flag
2329           <tt class="docutils literal"><span class=
2330           "pre">-c</span></tt>.</p>
2331         </div>
2332
2333         <div class="section" id="id3">
2334           <h3><a class="toc-backref" href=
2335           "#id46">3.7.3&nbsp;&nbsp;&nbsp;Configurazione di
2336           Apache</a></h3>
2337
2338           <p>Ora possiamo passare alla configurazione vera e
2339           propria di Apache, ma con una novita': andremo a inserire
2340           la voce in un <tt class="docutils literal"><span class=
2341           "pre">.htaccess</span></tt> invece che modificare il file
2342           di impostazione del virtual-host.</p>
2343
2344           <p>Questo per motivi pratici: solo l'utente <em>root</em>
2345           puo' modificare l'impostazione del virtual host nel file
2346           <tt class="docutils literal"><span class=
2347           "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2348           ma spesso il motivo per cui creiamo i virtual hosts e'
2349           ospitare i siti di altri utenti, che possono solo
2350           pubblicare (generalmente tramite <em>FTP</em>) i loro
2351           documenti nella loro <em>DocumentRoot</em>, senza poter
2352           quindi modificare in alcun modo la configurazione del
2353           virtual host.</p>
2354
2355           <p>Dando agli utenti la possibilita' di modificare
2356           (<em>AllowOverride</em>) autonomamente alcuni parametri
2357           (in questo caso solo l'<em>AuthConfig</em>) relativi al
2358           funzionamenteo del loro spazio web ci togliera'
2359           l'incombenza di dover intervenire suii vari virtual
2360           host.</p>
2361
2362           <p>Abilitiamo l'AllowOverride nel file di configurazione
2363           del virtual host per la sola directory <tt class=
2364           "docutils literal"><span class=
2365           "pre">privata</span></tt>:</p>
2366           <pre class="literal-block">
2367 &lt;VirtualHost *:80 &gt;
2368     ServerName 177.piffa.net
2369     DocumentRoot /var/www/177.piffa.net/
2370     ServerAdmin webmaster@177.piffa.net
2371     &lt;Directory "/var/www/177.piffa.net/privata"&gt;
2372         AllowOverride AuthConfig
2373     &lt;/Directory&gt;
2374 &lt;/VirtualHost&gt;
2375 </pre>
2376
2377           <p>Per rendere il cambiamento effettivo sara' necessario
2378           fare un restart / reload di Apache.</p>
2379
2380           <p>Ora sara' possibile, anche per l'utente di sistema,
2381           creare un fie <tt class="docutils literal"><span class=
2382           "pre">.htaccess</span></tt> che sara' onorato da
2383           Apache.</p>
2384
2385           <p>/var/www/177.piffa.net/privata/.htaccess</p>
2386           <pre class="literal-block">
2387 # Questo file viene incluso
2388 # nella configurazione del sito web
2389 # Messaggio visualizzato al prompt per l'autenticazione
2390 AuthName "Area privata soggetta ad autentizazione"
2391 # tipo di autenticazione da usarsi
2392 AuthType Basic
2393 # File generato precedentemente con htpasswd
2394 AuthUserFile  /home/utente/passwords
2395
2396 # Negoziazione degli accessi
2397 # valid users permette l'accesso agli utenti specificati
2398 # nel file generato da htpasswd
2399 require valid-user
2400 </pre>
2401
2402           <p>Si noti che non e' necessario fare ripartire Apache
2403           per onorare i cambiamenti (un utente non avrebbe la
2404           possibilita' di farlo!).</p>
2405         </div>
2406       </div>
2407
2408       <div class="section" id="cavets">
2409         <h2><a class="toc-backref" href=
2410         "#id47">3.8&nbsp;&nbsp;&nbsp;Cavets</a></h2>
2411
2412         <p>Problemi di cache:</p>
2413
2414         <blockquote>
2415           <ul class="simple">
2416             <li>Proxy: nei settaggi del browser specificare di non
2417             utilizzare un server proxy http per il sito web locale
2418             (o per gli altri che si stanno monitorando). Se si ha
2419             il controllo del proxy server: stopparlo, ricaricare la
2420             pagina (operazione che fallira'), far ripartire il
2421             proxy, ricaricare la pagina.</li>
2422
2423             <li>Provare con un altro browser, o cercare di svuotare
2424             la cache chiudere/riaprire l'applicativo. Provare a
2425             fermare Apache, ricaricare la pagina (operazione che
2426             fallira'), far ripartire Apache, ricaricare la
2427             pagina.</li>
2428           </ul>
2429         </blockquote>
2430       </div>
2431     </div>
2432
2433     <div class="section" id="domain-name-system">
2434       <h1><a class="toc-backref" href=
2435       "#id48">4&nbsp;&nbsp;&nbsp;Domain Name System</a></h1>
2436
2437       <p>Domain Name System (spesso indicato con DNS) e' un
2438       servizio utilizzato per la risoluzione di nomi di host in
2439       indirizzi IP e viceversa. Il servizio e' realizzato tramite
2440       un database distribuito, costituito dai server DNS.</p>
2441
2442       <p>Il nome DNS denota anche il protocollo che regola il
2443       funzionamento del servizio, i programmi che lo implementano,
2444       i server su cui questi girano, l'insieme di questi server che
2445       cooperano per fornire il servizio.</p>
2446
2447       <p>I nomi DNS, o "nomi di dominio", sono una delle
2448       caratteristiche piu' visibili di Internet.</p>
2449
2450       <p>C'e' confusione in merito alla definizione dell'acronimo:
2451       la S spesso viene interpretata come service, ma la
2452       definizione corretta e' system.</p>
2453
2454       <p>L'operazione di convertire un nome in un indirizzo e'
2455       detta risoluzione DNS, convertire un indirizzo IP in nome e'
2456       detto risoluzione inversa.</p>
2457
2458       <div class="section" id="nomi-di-dominio">
2459         <h2><a class="toc-backref" href=
2460         "#id49">4.1&nbsp;&nbsp;&nbsp;Nomi di dominio</a></h2>
2461
2462         <p>Un nome a dominio e' costituito da una serie di stringhe
2463         separate da punti, ad esempio it.wikipedia.org. A
2464         differenza degli indirizzi IP, dove la parte piu'
2465         importante del numero e' la prima partendo da sinistra, in
2466         un nome DNS la parte piu' importante e' la prima partendo
2467         da destra. Questa e' detta dominio di primo livello (o TLD,
2468         Top Level Domain), per esempio .org o .it.</p>
2469
2470         <p>Un dominio di secondo livello consiste in due parti, per
2471         esempio wikipedia.org, e cosi' via. Ogni ulteriore elemento
2472         specifica un'ulteriore suddivisione. Quando un dominio di
2473         secondo livello viene registrato all'assegnatario, questo
2474         e' autorizzato a usare i nomi di dominio relativi ai
2475         successivi livelli come it.wikipedia.org (dominio di terzo
2476         livello) e altri come some.other.stuff.wikipedia.org
2477         (dominio di quinto livello) e cosi' via.</p>
2478       </div>
2479
2480       <div class="section" id="tipologie-di-record">
2481         <h2><a class="toc-backref" href=
2482         "#id50">4.2&nbsp;&nbsp;&nbsp;Tipologie di record</a></h2>
2483
2484         <p>Ad un nome DNS possono corrispondere diversi tipi di
2485         informazioni. Per questo motivo, esistono diversi tipi di
2486         record DNS. Ogni voce del database DNS deve essere
2487         caratterizzata da un tipo. I principali tipi sono:</p>
2488
2489         <ul class="simple">
2490           <li>Record A - Indica la corrispondenza tra un nome ed
2491           uno (o piu') indirizzi IP (per la precisione indirizzi
2492           IPv4, ovvero la versione attualmente in uso).</li>
2493
2494           <li>Record MX - (Mail eXchange) indica a quali server
2495           debba essere inviata la posta elettronica per un certo
2496           dominio.</li>
2497
2498           <li>Record CNAME - Sono usati per creare un alias, ovvero
2499           per fare in modo che lo stesso calcolatore sia noto con
2500           piu' nomi. Uno degli utilizzi di questo tipo di record
2501           consiste nell'attribuire ad un host che offre piu'
2502           servizi un nome per ciascun servizio. In questo modo, i
2503           servizi possono poi essere spostati su altri host senza
2504           dover riconfigurare i client, ma modificando solo il
2505           DNS.</li>
2506
2507           <li>Record PTR - Il DNS viene utilizzato anche per
2508           realizzare la risoluzione inversa, ovvero per far
2509           corrispondere ad un indirizzo IP il corrispondente nome a
2510           dominio. Per questo si usano i record di tipo "PTR" (e
2511           una apposita zona dello spazio dei nomi
2512           in-addr.arpa).</li>
2513
2514           <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
2515
2516           <li>Record SRV - Identificano il server per un
2517           determinato servizio all'interno di un dominio. Possono
2518           essere considerati una generalizzazione dei record
2519           MX.</li>
2520
2521           <li>Record TXT - Associano campi di testo arbitrari ad un
2522           dominio. Questi campi possono contenere una descrizione
2523           informativa oppure essere utilizzati per realizzare
2524           servizi.</li>
2525         </ul>
2526
2527         <p>Vi sono anche tipi di record "di servizio", necessari al
2528         funzionamento del database distribuito: * Record NS -
2529         Utilizzato per indicare quali siano i server DNS
2530         autoritativi per un certo dominio, ovvero per delegarne la
2531         gestione. * Record SOA - (Start of Authority) usato per la
2532         gestione delle zone DNS.</p>
2533       </div>
2534
2535       <div class="section" id="utilizzo">
2536         <h2><a class="toc-backref" href=
2537         "#id51">4.3&nbsp;&nbsp;&nbsp;Utilizzo</a></h2>
2538
2539         <p>I computer vengono identificati in rete grazie agli
2540         indirizzi <em>IP</em>, questi pero' non sono comodi per gli
2541         utenti come riferimento per i vari server. Ad esempio
2542         sarebbe scomodoriferirsi al motore di ricerca Goggle con
2543         uno dei suoi IP: <tt class="docutils literal"><span class=
2544         "pre">74.125.43.104</span></tt>, e' preferibile usare il
2545         nome di dominio <em>www.google.com</em>:</p>
2546         <pre class="literal-block">
2547 ping -c 1 www.google.com
2548 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
2549 </pre>
2550       </div>
2551
2552       <div class="section" id="risoluzione-dei-nomi-di-dominio">
2553         <h2><a class="toc-backref" href=
2554         "#id52">4.4&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
2555         dominio</a></h2>
2556
2557         <p>Ci sono vari strumenti per interrogare i server DNS e
2558         ottenere l'indirizzo IP associato al nome di dominio che ci
2559         interessa:</p>
2560         <pre class="literal-block">
2561 $ host www.piffa.net
2562 www.piffa.net is an alias for piffa.net.
2563 piffa.net has address 65.98.21.97
2564 piffa.net mail is handled by 10 65.98.21.97
2565
2566
2567 $ nslookup www.piffa.net
2568 Server:         192.168.0.10
2569 Address:        192.168.0.10#53
2570
2571 Non-authoritative answer:
2572 www.piffa.net   canonical name = piffa.net.
2573 Name:   piffa.net
2574 Address: 65.98.21.97
2575
2576
2577 $ dig www.piffa.net
2578
2579 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.piffa.net
2580 ;; global options: +cmd
2581 ;; Got answer:
2582 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 47751
2583 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
2584
2585 ;; QUESTION SECTION:
2586 ;www.piffa.net.                 IN      A
2587
2588 ;; ANSWER SECTION:
2589 www.piffa.net.          3489    IN      CNAME   piffa.net.
2590 piffa.net.              3489    IN      A       65.98.21.97
2591
2592 ;; AUTHORITY SECTION:
2593 piffa.net.              86289   IN      NS      ns2.mydomain.com.
2594 piffa.net.              86289   IN      NS      ns1.mydomain.com.
2595 piffa.net.              86289   IN      NS      ns4.mydomain.com.
2596 piffa.net.              86289   IN      NS      ns3.mydomain.com.
2597
2598 ;; ADDITIONAL SECTION:
2599 ns1.mydomain.com.       96208   IN      A       64.94.117.193
2600 ns2.mydomain.com.       96208   IN      A       64.94.31.67
2601 ns3.mydomain.com.       96208   IN      A       66.150.161.137
2602 ns4.mydomain.com.       96208   IN      A       63.251.83.74
2603
2604 ;; Query time: 1 msec
2605 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2606 ;; WHEN: Sun May 10 21:23:11 2009
2607 ;; MSG SIZE  rcvd: 209
2608 </pre>
2609
2610         <p>Lo strumento piu' esaustivo e' <tt class=
2611         "docutils literal"><span class="pre">dig</span></tt>,
2612         installabile con il pacchetto <tt class=
2613         "docutils literal"><span class="pre">dnsutils</span></tt>
2614         .</p>
2615       </div>
2616
2617       <div class="section" id="dig">
2618         <h2><a class="toc-backref" href=
2619         "#id53">4.5&nbsp;&nbsp;&nbsp;Dig</a></h2>
2620
2621         <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
2622         "docutils literal"><span class="pre">dig</span></tt> per
2623         l'inerrogazione dei DNS Server:</p>
2624         <pre class="literal-block">
2625 $ dig www.google.it
2626
2627 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.google.it
2628 ;; global options: +cmd
2629 ;; Got answer:
2630 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18816
2631 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
2632
2633 ;; QUESTION SECTION:
2634 ;www.google.it.                 IN      A
2635
2636 ;; ANSWER SECTION:
2637 www.google.it.          250683  IN      CNAME   www.google.com.
2638 www.google.com.         334819  IN      CNAME   www.l.google.com.
2639 www.l.google.com.       186     IN      A       74.125.43.103
2640 www.l.google.com.       186     IN      A       74.125.43.104
2641 www.l.google.com.       186     IN      A       74.125.43.147
2642 www.l.google.com.       186     IN      A       74.125.43.99
2643
2644 ;; AUTHORITY SECTION:
2645 l.google.com.           80856   IN      NS      f.l.google.com.
2646 l.google.com.           80856   IN      NS      d.l.google.com.
2647 l.google.com.           80856   IN      NS      b.l.google.com.
2648 l.google.com.           80856   IN      NS      c.l.google.com.
2649 l.google.com.           80856   IN      NS      a.l.google.com.
2650 l.google.com.           80856   IN      NS      e.l.google.com.
2651 l.google.com.           80856   IN      NS      g.l.google.com.
2652
2653 ;; Query time: 1 msec
2654 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2655 ;; WHEN: Sun May 10 21:34:47 2009
2656 ;; MSG SIZE  rcvd: 255
2657 </pre>
2658
2659         <dl class="docutils">
2660           <dt>$ dig</dt>
2661
2662           <dd>(semza opzioni o oggetti) Fornisce l'elenco dei
2663           <em>root servers</em> utilizzati. I root server sono i
2664           server che mantengono le informazioni sui domini di primo
2665           livello (TLD) e sono quindi il punto di partenza per
2666           scorrere nella directory dei DNS per recuperare le
2667           informazioni (tipicamente un campo <tt class=
2668           "docutils literal"><span class="pre">A</span></tt> per un
2669           indirizzo IP) che ci servono per raggiungere un certo
2670           servizio.</dd>
2671         </dl>
2672
2673         <p>$ dig</p>
2674
2675         <blockquote>
2676           <p>...</p>
2677
2678           <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
2679           . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
2680           B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
2681           192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
2682           F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
2683           192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
2684           K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
2685           192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
2686           J.ROOT-SERVERS.NET. . 192032 IN NS
2687           D.ROOT-SERVERS.NET.</p>
2688
2689           <p>...</p>
2690         </blockquote>
2691
2692         <dl class="docutils">
2693           <dt>dig @nome_dns</dt>
2694
2695           <dd>Permette di fare una query ad un server dns
2696           particolare. Es: <tt class=
2697           "docutils literal"><span class="pre">dig</span>
2698           <span class="pre">@151.99.25.1</span> <span class=
2699           "pre">www.google.it</span></tt></dd>
2700
2701           <dt>dig MX www.google.it</dt>
2702
2703           <dd>Chiede un campo in particolare, in questo caso il
2704           campo MX</dd>
2705
2706           <dt>dig ANY www.google.it</dt>
2707
2708           <dd>Chiede tutti i campi, non solo i campi
2709           <em>a</em></dd>
2710
2711           <dt>dig -x 74.125.43.104</dt>
2712
2713           <dd>Effettua una richiesta inversa: dall'ip al PTR
2714           associato.</dd>
2715         </dl>
2716       </div>
2717
2718       <div class="section" id="resolv-conf">
2719         <h2><a class="toc-backref" href=
2720         "#id54">4.6&nbsp;&nbsp;&nbsp;resolv.conf</a></h2>
2721
2722         <p>Il file <tt class="docutils literal"><span class=
2723         "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
2724         sul dns usato dal sistema, in genere anche altre
2725         applicazioni che devono effettuare query DNS leggono
2726         resolv.conf per conoscere l'ubicazione del DNS.</p>
2727
2728         <p>/etc/resolv.conf:</p>
2729
2730         <blockquote>
2731           <ul class="simple">
2732             <li><tt class="docutils literal"><span class=
2733             "pre">nameserver</span></tt>: indica il nameserver da
2734             utilizzare, indicato con l'indirizzo ip.</li>
2735
2736             <li><tt class="docutils literal"><span class=
2737             "pre">domain</span></tt>: indica il nome di dominio
2738             della rete attuale, vedi voce sucessiva.</li>
2739
2740             <li><tt class="docutils literal"><span class=
2741             "pre">search</span></tt>: nome di dominio usato dalla
2742             rete sul quale cercare gli hosts. Ad esempio se
2743             impostato su <tt class="docutils literal"><span class=
2744             "pre">piffa.net</span></tt> pingando l'host <tt class=
2745             "docutils literal"><span class="pre">bender</span></tt>
2746             viene automaticamente fatto un tentativo di ricerca per
2747             <tt class="docutils literal"><span class=
2748             "pre">bender.piffa.net</span></tt>.</li>
2749           </ul>
2750         </blockquote>
2751
2752         <p>Si veda anche la pagina man di resolv.conf.</p>
2753
2754         <p>Attenzione: se si usa un client DHCP o simile questo
2755         file potra' essere riscritto automaticamente in base a
2756         quanto ottenuto dal DHCP. Si veda la documentazione del
2757         pacchtto <tt class="docutils literal"><span class=
2758         "pre">resolvconf</span></tt>.</p>
2759       </div>
2760
2761       <div class="section" id="etc-hosts">
2762         <h2><a class="toc-backref" href=
2763         "#id55">4.7&nbsp;&nbsp;&nbsp;/etc/hosts</a></h2>
2764
2765         <p>Tabella statica per l'associazione tra IP e nomi di
2766         dominio:</p>
2767         <pre class="literal-block">
2768 # cat /etc/hosts
2769 </pre>
2770
2771         <blockquote>
2772           127.0.0.1 localhost.localdomain localhost 10.10.208.162
2773           daniela daniela.piffa.net 10.10.208.254 mirror
2774           mirror.piffa.net 91.191.138.15 thepiratebay.org
2775           192.168.0.11 chrome chrome.mydomain.com
2776         </blockquote>
2777
2778         <p>Il contenuto e' un associazione tra un <em>IP</em> e
2779         stringhe di testo (anche piu' di una es: <tt class=
2780         "docutils literal"><span class="pre">mirror</span></tt> e
2781         <tt class="docutils literal"><span class=
2782         "pre">mirror.piffa.net</span></tt>), un record per
2783         riga.</p>
2784
2785         <p>Il problema e' la gestione di questo file: quando gli
2786         host cambiano IP si devono aggiornare i records, e c'e' poi
2787         il problema di distribuire questo file tra i vari hosts
2788         della propia LAN. Un metodo semplice per distribuire questo
2789         file e' utilizzare <tt class=
2790         "docutils literal"><span class="pre">Dnsmasq</span></tt>:
2791         questo infatti legge e onora il file <tt class=
2792         "docutils literal"><span class="pre">hosts</span></tt>
2793         locale e lo <em>distribuisce</em> ai clients.</p>
2794
2795         <p>Modificare (riconducendola a un ip interno, cosi'
2796         annullandola) la risoluzione di un nome di dominio e' un
2797         modo drastico e funzionale per <em>annullarlo</em>
2798         rendendolo indisponibile alla propia rete locale, ad
2799         esempio aggiungere al file <tt class=
2800         "docutils literal"><span class=
2801         "pre">/etc/hosts</span></tt>:</p>
2802         <pre class="literal-block">
2803 127.0.0.1       www.facebook.com
2804 </pre>
2805
2806         <p>Impedira' agli utenti della LAN di raggiungere
2807         <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
2808       </div>
2809
2810       <div class="section" id="hostname">
2811         <h2><a class="toc-backref" href=
2812         "#id56">4.8&nbsp;&nbsp;&nbsp;Hostname</a></h2>
2813
2814         <p>Ogni computer ha un <em>propio nome</em> visualizzabile
2815         (e modificabile) con il comando <tt class=
2816         "docutils literal"><span class=
2817         "pre">hostname</span></tt>.</p>
2818
2819         <p>Per modificare in modo permanente il nome del computer
2820         si modifichi il contenuto del file <tt class=
2821         "docutils literal"><span class=
2822         "pre">/etc/hostname</span></tt>.</p>
2823
2824         <p>Tipicamente si vuole mantenere una correlazione tra il
2825         nome dell'host, o meglio la stringa con cui il server si
2826         qualifica all'esterno, e il <em>PTR</em> dell'ip. Nel caso
2827         di <em>servizi virtuali</em> ci sara' un <em>nome
2828         server</em> principale associato al <em>PTR</em> condiviso.
2829         Non e' automatico che un servizio, ad esempio un server di
2830         posta, si qualifichi leggendo il contenuto di questo file e
2831         magari aggiungendo come suffisso il dominio di cui fa parte
2832         l'host: a volte questo parametro puo' essere specificato
2833         nel file di configurazione del servizio:</p>
2834         <pre class="literal-block">
2835 * Squid: ``visible_hostname``
2836
2837 * Postfix: ``myhostname``
2838 </pre>
2839       </div>
2840     </div>
2841
2842     <div class="section" id="dnsmasq">
2843       <h1><a class="toc-backref" href=
2844       "#id57">5&nbsp;&nbsp;&nbsp;DNSmasq</a></h1>
2845
2846       <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
2847       forwarder e un server DHCP caratterizzato dalla facilita' di
2848       configurazione, dalla leggerezza e dalla possibilita' di
2849       modificare rapidamente i record DNS serviti alla rete. Puo'
2850       essere anche utilizzato come <cite>server per il boot da rete
2851       &lt;http://www.debian-administration.org/articles/478&gt;_</cite>
2852       .</p>
2853
2854       <p>Dnsmasq e' un interessante alternativa all'uso del server
2855       DNS Bind in modalita' cache-only (non autoritativo)
2856       accompagnato dal server DHCPD. I vantaggi sono:</p>
2857
2858       <ul class="simple">
2859         <li>Leggerezza: puo' essere fatto girare su una macchina
2860         relativamente debole in caso di bisogno.</li>
2861
2862         <li>Rapidita' di configurazione (in particolare per servire
2863         dei record A / MX alla rete, modificando al volo i valori
2864         originali ospitati sul server DNS Publico).</li>
2865
2866         <li>Ben integrato con connssioni PPP (utile se dovete
2867         rendere disponibile rapidamente una connessione a internet
2868         a una rete in difficolta').</li>
2869       </ul>
2870
2871       <p>Tutto cio' rende Dnsmasq una soluzione valida in
2872       particolare quando si deve intervenire in una rete
2873       pre-esistente in cui il server principale e' in crisi: si
2874       potra' utilizzare Dnsmasq anche su una macchina piu' debole e
2875       <em>mascherare</em> i servizi al momento non disponibili.
2876       Molto utile per scopi didattici, sopratutto per testare
2877       server SMTP impostando al volo i campi MX per nomi di dominio
2878       fittizi.</p>
2879
2880       <div class="section" id="configurazione">
2881         <h2><a class="toc-backref" href=
2882         "#id58">5.1&nbsp;&nbsp;&nbsp;Configurazione</a></h2>
2883
2884         <p>Vediamo alcune direttive di basi del file di
2885         configurazione <tt class="docutils literal"><span class=
2886         "pre">/etc/dnsmasq.conf</span></tt> utili per la
2887         configurazione sia del DNS cache che per il DHCP
2888         server:</p>
2889
2890         <dl class="docutils">
2891           <dt>domain-needed</dt>
2892
2893           <dd>Non inoltrare query ai server DNS esterni per nomi
2894           semplici (es andrea, portatile, pippo) che verranno
2895           risolti solo in locale o causeranno direttamente una
2896           risposta <em>not found</em> .</dd>
2897
2898           <dt>bogus-priv</dt>
2899
2900           <dd>Simile alla voce precedente ma per i reverse
2901           look-up.</dd>
2902
2903           <dt>domain</dt>
2904
2905           <dd>Nome di dominio della rete da passare ai client.</dd>
2906
2907           <dt>expand_hosts</dt>
2908
2909           <dd>Aggiunge il <tt class="docutils literal"><span class=
2910           "pre">nome</span> <span class="pre">host</span></tt> (
2911           <tt class="docutils literal"><span class=
2912           "pre">/etc/hostname</span></tt>) dei client al nome di
2913           dominio per qualificarli in rete, senza bisogno di dover
2914           comporre a un elenco statico di record nel file
2915           <tt class="docutils literal"><span class=
2916           "pre">/etc/hosts</span></tt> o nello stesso file di
2917           configurazione di dnsmasq. Es: se un vostro client si
2918           chiama <tt class="docutils literal"><span class=
2919           "pre">chrome</span></tt> e il vostro dominio <tt class=
2920           "docutils literal"><span class=
2921           "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
2922           il campo <em>A</em> per il dominio <tt class=
2923           "docutils literal"><span class=
2924           "pre">chrome.piffa.net</span></tt> diretto all'ip che
2925           verra' assegnato al client.</dd>
2926         </dl>
2927       </div>
2928
2929       <div class="section" id="dhcp">
2930         <h2><a class="toc-backref" href=
2931         "#id59">5.2&nbsp;&nbsp;&nbsp;DHCP</a></h2>
2932
2933         <p>Per attivare il demone DHCP di dnsmaq basta aggiungere
2934         al file di configurazione il <em>range</em> degli ip che si
2935         vuole assegnare ai client con il <em>lease time</em> (tempo
2936         di rilascio: quanto a lungo saranno validi gli ip
2937         assegnati) espresso in ore.</p>
2938
2939         <p>Si faccia <em>attenzione</em>: in una rete puo' esseere
2940         presente <strong>un solo server DHCP</strong>, o per meglio
2941         dire qualunque server DHCP ascolta sul broadcast <tt class=
2942         "docutils literal"><span class=
2943         "pre">255.255.255.255</span></tt> e potrebbe rispondere a
2944         un pacchetto di richesta DHCP. Quindi non fate partire
2945         inavvertitamente un server DHCP in una rete gia' servita e
2946         <strong>non vi azzardate ad andare in giro con un portatile
2947         con un server DHCP attivo</strong> nelle reti altrui.
2948         Questo vale anche per i laboratori di informatica dei corsi
2949         di reti: non fate partire il vostro server DHCP se siete
2950         collegati alla rete interna!</p>
2951
2952         <p>/etc/dnsmasq.conf (riga 118):</p>
2953         <pre class="literal-block">
2954 dhcp-range=192.168.0.20,192.168.0.50,24h
2955 </pre>
2956       </div>
2957
2958       <div class="section" id="dns-cache">
2959         <h2><a class="toc-backref" href=
2960         "#id60">5.3&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
2961
2962         <p>Aggiungere al file <tt class=
2963         "docutils literal"><span class=
2964         "pre">/etc/resolv.conif</span></tt> il nameserver localhost
2965         in cima alla lista dei <em>nameserver</em> disponibili.
2966         Dnsmasq usera' la propia cache e in caso non abbia
2967         disponibile il <em>record DNS</em> richiesto fara' partire
2968         una query al primo DNS:</p>
2969         <pre class="literal-block">
2970 nameserver      127.0.0.1
2971 </pre>
2972
2973         <p>Questo pero' potrebbe essere problematico se un altro
2974         servizio, ad esempio il DHCP client, riscrive il contenuto
2975         del file <tt class="docutils literal"><span class=
2976         "pre">/etc/resolv.conf</span></tt>. Per superare il
2977         problema si aggiunga (riga 20) al file di configurazione
2978         <tt class="docutils literal"><span class=
2979         "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
2980         <pre class="literal-block">
2981 prepend domain-name-servers 127.0.0.1;
2982 </pre>
2983
2984         <p>Oppure potrebbe essere il nostro <em>PPP client</em>
2985         (per la connessione ADSL) a intervenire sul file <tt class=
2986         "docutils literal"><span class=
2987         "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
2988         <tt class="docutils literal"><span class=
2989         "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
2990         <tt class="docutils literal"><span class=
2991         "pre">usepeerdns</span></tt>. Se la vostra connessione ad
2992         internet e' ADSL raramente dovreste aver bisogno di
2993         cambiare i DNS una volta impostati (a meno che non usiate
2994         un portatile!).</p>
2995       </div>
2996
2997       <div class="section" id="dhcpd">
2998         <h2><a class="toc-backref" href=
2999         "#id61">5.4&nbsp;&nbsp;&nbsp;DHCPd</a></h2>
3000
3001         <p>Dnsmasq puo' lavorare anche come DHCP server per la
3002         vostra LAN.</p>
3003       </div>
3004     </div>
3005
3006     <div class="section" id="samba">
3007       <h1><a class="toc-backref" href=
3008       "#id62">6&nbsp;&nbsp;&nbsp;Samba</a></h1>
3009
3010       <p>Samba e' un progetto libero che fornisce servizi di
3011       condivisione di file e stampanti a client SMB/CIFS.</p>
3012
3013       <p>Samba e' liberamente disponibile, al contrario di altre
3014       implementazioni SMB/CIFS, e permette di ottenere
3015       interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
3016
3017       <p>Samba e' un software che puo girare su piattaforme che non
3018       siano Microsoft Windows, per esempio, UNIX, Linux, IBM System
3019       390, OpenVMS e altri sistemi operativi. Samba utilizza il
3020       protocollo TCP/IP utilizzando i servizi offerti sul server
3021       ospite. Quando correttamente configurato, permette di
3022       interagire con client o server Microsoft Windows come se
3023       fosse un file e print server Microsoft agendo da Primary
3024       Domain Controller (PDC) o come Backup Domain Controller, puo'
3025       inoltre prendere parte ad un dominio Active Directory.</p>
3026
3027       <div class="section" id="pacchetti">
3028         <h2><a class="toc-backref" href=
3029         "#id63">6.1&nbsp;&nbsp;&nbsp;Pacchetti</a></h2>
3030
3031         <p>Pacchetti da installare per utilizzare Samba in
3032         modalita' client <a class="footnote-reference" href="#id5"
3033         id="id4" name="id4">[2]</a></p>
3034         <pre class="literal-block">
3035 samba-client
3036 </pre>
3037
3038         <p>Pacchetti da installare per utilizzare Samba in
3039         modalita' server:</p>
3040         <pre class="literal-block">
3041 samba smbfs smbclient
3042 </pre>
3043
3044         <table class="docutils footnote" frame="void" id="id5"
3045         rules="none">
3046           <colgroup>
3047             <col class="label">
3048             <col>
3049           </colgroup>
3050
3051           <tbody valign="top">
3052             <tr>
3053               <td class="label"><a class="fn-backref" href=
3054               "#id4">[2]</a></td>
3055
3056               <td>Anche se nato per i sistemi Windows, Samba puo'
3057               essere usato anche per montare cartelle sotto
3058               GNU/Linux come alternativa a NFS. Per la condivisione
3059               di stampanti sarebbe invece opportuno intervenire
3060               direttamente su <tt class=
3061               "docutils literal"><span class=
3062               "pre">CUPS</span></tt>.</td>
3063             </tr>
3064           </tbody>
3065         </table>
3066
3067         <p>Durante la prima installazione viene chiesto il nome del
3068         gruppo di appartenenza, il default per Windows e'
3069         <tt class="docutils literal"><span class=
3070         "pre">WORKGROUP</span></tt>. In aula usiamo invece
3071         <tt class="docutils literal"><span class=
3072         "pre">208</span></tt> .</p>
3073
3074         <p>Per riconfigurare Samba si usi il comando:</p>
3075         <pre class="literal-block">
3076 dpkg-reconfigure samba-common
3077 </pre>
3078       </div>
3079
3080       <div class="section" id="passwords-e-autenticazione">
3081         <h2><a class="toc-backref" href=
3082         "#id64">6.2&nbsp;&nbsp;&nbsp;Passwords e
3083         autenticazione</a></h2>
3084
3085         <p>Per poter configurare Samba in modo che usi un sistema
3086         di negoziazione degli accessi alle cartelle condivise
3087         basato su accoppiate <em>nome utente / password</em>
3088         bisogna distinguere tra 3 livelli di password (e
3089         generalmente volete usare <em>sempre la stessa
3090         password</em> per ognuno di questi) e delle differenze tra
3091         le modalita' di <em>autenticazione</em> (e quindi anche di
3092         criptaggio delle passwords) usate da sistemi GNU/Linux e
3093         Windows:</p>
3094
3095         <dl class="docutils">
3096           <dt>1 Sistema *Unix ( GNU/Linux )</dt>
3097
3098           <dd>E' la password dell'<em>utente di sistema</em> che
3099           viene usata sul sistema operativo su cui gira il software
3100           Samba. E' importante tenere conto anche delle
3101           <em>user-id</em> e <em>group-id</em> degli utenti che
3102           dovranno fisicamente scrivere sui file system. Se un
3103           utente non puo' scrivere in una certa posizione del file
3104           system (ad esempio nella cartella <tt class=
3105           "docutils literal"><span class=
3106           "pre">/mnt/condivisione</span></tt> che sara' stata
3107           necessariamente creata inizialmente dall'utente
3108           <tt class="docutils literal"><span class=
3109           "pre">root</span></tt>) per mancanza dei privilegi di
3110           scrittura allora neanche Samba potra' farlo nel momento
3111           in mette a disposizione la risorsa all'utente. Se si
3112           montano file-system dedicati per le condivisioni
3113           controllare i permessi e propieta' dei <em>punti di
3114           mount*</em>. Queste passwords sono salvate nel solito
3115           file /etc/shadow (richiamato da /etc/passwd).</dd>
3116
3117           <dt>2 Password per l'applicativo Samba</dt>
3118
3119           <dd>Samba deve essere compatibile con Windows e quindi
3120           utilizzare un sistema di criptazione delle password
3121           diverso da /etc/shadow . Le password per Samba possono
3122           essere gestite ad esempio col comando <tt class=
3123           "docutils literal"><span class=
3124           "pre">smbpasswd</span></tt> e vengono generalmente
3125           salvate all'interno di <tt class=
3126           "docutils literal"><span class=
3127           "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
3128
3129           <dt>3 Password per Windows.</dt>
3130
3131           <dd>Gli utenti Windows effettuano il log-in alla partenza
3132           della sessione di Windows. Se si avra' l'accortezza di
3133           usare sempre la <em>stessa password</em> data
3134           precedentemente anche a Windows (o viceversa impostare la
3135           password per GNU/Linux / Samba uguale a quella di
3136           Windows) l'utente potra' accedere automaticamente alle
3137           condivisioni a lui disponibili.</dd>
3138         </dl>
3139       </div>
3140
3141       <div class="section" id="creazione-utenti">
3142         <h2><a class="toc-backref" href=
3143         "#id65">6.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></h2>
3144
3145         <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
3146         attenzione a <em>non dargli una shell di sistema</em>. Gli
3147         utenti Windows che accedono al server solo per le
3148         condivisioni non hanno bisogno di poter eseguire comandi
3149         sul server!</p>
3150
3151         <p>Creazione di un utente denominato sambo:</p>
3152         <pre class="literal-block">
3153 adduser --shell /bin/false sambo
3154 </pre>
3155
3156         <p>Nel file <tt class="docutils literal"><span class=
3157         "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
3158         <pre class="literal-block">
3159 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
3160 </pre>
3161
3162         <p>Aggiunta dell'utente al database delle password per
3163         Samba e generazione della sua password:</p>
3164         <pre class="literal-block">
3165 smbpasswd -a sambo
3166 </pre>
3167
3168         <p>Se successivamente si vorra' modificare la password di
3169         un utente gia' esistente si usi:</p>
3170         <pre class="literal-block">
3171 smbpasswd  sambo
3172 </pre>
3173
3174         <p>La password sotto Windows verra' modificata sul sistema
3175         Windows.</p>
3176       </div>
3177
3178       <div class="section" id="creare-la-condivisione">
3179         <h2><a class="toc-backref" href=
3180         "#id66">6.4&nbsp;&nbsp;&nbsp;Creare la
3181         condivisione</a></h2>
3182
3183         <p>La condivisione altro non e' che una cartella sul server
3184         che viene resa disponibile ai client negoziando l'accesso
3185         in base a una autenticazione basata su <em>user-name /
3186         password</em>. E' per altro possibile permettere l'accesso
3187         a una risorsa a chiunque indiscriminatamente (a tutti i
3188         <tt class="docutils literal"><span class=
3189         "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
3190         punto di vista della sicurezza. Si decida se la cartella
3191         condivisa debba risiedere nella <em>home</em> di un utente
3192         (nel caso quest'ultimo ne sia l'unico fruitore) o in una
3193         cartella in /mnt/ (nel caso piu' utenti accedano a questa).
3194         Nel secondo caso si potranno gestire gli accessi sotto
3195         GNU/Linux tramite i gruppi.</p>
3196
3197         <p>Creazione della risorsa sambo_share nella home
3198         dell'utente sambo:</p>
3199         <pre class="literal-block">
3200 # mkdir /home/sambo/sambo_share
3201 # chown sambo:sambo /home/sambo/sambo_share/
3202 </pre>
3203
3204         <div class="section" id=
3205         "sicurezza-permessi-di-esecuzione-sul-server">
3206           <h3><a class="toc-backref" href=
3207           "#id67">6.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi di
3208           esecuzione sul server</a></h3>
3209
3210           <p>Bisognerebbe notare sul server i permessi di
3211           esecuzione del file-system che ospita la cartella da
3212           condividere. Se i file che saranno contenuti nella
3213           condivisione saranno da usarsi sotto Windows non c'e'
3214           motivo che questi siano eseguibili sotto GNU/Linux. Si
3215           potrebbe avere quindi, ipotizzando una condivisione in
3216           <tt class="docutils literal"><span class=
3217           "pre">/mnt/share</span></tt> che risieda su di un file
3218           system dedicato:</p>
3219
3220           <p><tt class="docutils literal"><span class=
3221           "pre">/etc/fstab</span></tt></p>
3222
3223           <blockquote>
3224             /dev/hda10 /mnt/share ext3 rw,
3225             <strong>nosuid,noexec</strong> 0 3
3226           </blockquote>
3227
3228           <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
3229           possibilita' di eseguire programmi con credenziali
3230           diverse.</p>
3231         </div>
3232       </div>
3233
3234       <div class="section" id=
3235       "configurazione-dell-applicativo-samba-vero-e-proprio">
3236         <h2><a class="toc-backref" href=
3237         "#id68">6.5&nbsp;&nbsp;&nbsp;Configurazione
3238         dell'applicativo Samba vero e proprio.</a></h2>
3239
3240         <p>Avendo preparato gli utenti (ancora una volta: non si
3241         dia una shell completa a un utente che serve solo per Samba
3242         o la posta elettronica) e la cartella sul file system si
3243         puo' procedere a configurare la condivisione su Samba.</p>
3244
3245         <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
3246         vim si usi 235gg ):</p>
3247         <pre class="literal-block">
3248 [sambo_share]
3249         # Percorso della cartella condivisa
3250         path = /home/sambo/sambo_share
3251         # Se gli utenti possono scrivere / modificare file
3252         writable = yes
3253         # Negoziazione degli accessi su base utenti / passwords
3254         valid users = sambo
3255
3256         # #######################################
3257         # Altri parametri opzionali di interesse
3258         # Se posso vedere la condivisione da esplora risorse
3259         # anche se non ho i privilegi per accedervi.
3260         browseable = yes
3261         # Commento indicativo della risorsa
3262         comment = Condivisione per Sambo
3263 </pre>
3264
3265         <p>Dopo aver salvato il file si puo' fare un primo
3266         controllo tramite l'utility <tt class=
3267         "docutils literal"><span class="pre">testparm</span></tt> ,
3268         che controlla la sintassi del file di configurazione di
3269         Samba. Se questo non rileva problemi si puo' procedere a un
3270         <tt class="docutils literal"><span class="pre">#</span>
3271         <span class="pre">/etc/init.d/samba</span> <span class=
3272         "pre">restart</span></tt> .</p>
3273       </div>
3274
3275       <div class="section" id="testare-il-servizio">
3276         <h2><a class="toc-backref" href=
3277         "#id69">6.6&nbsp;&nbsp;&nbsp;Testare il Servizio</a></h2>
3278
3279         <p>Come testare il servizio</p>
3280
3281         <p>es:</p>
3282         <pre class="literal-block">
3283 smbclient -U sambo -L localhost
3284 </pre>
3285
3286         <p>Questo comando permette di esplorare la risorsa
3287         qualificandosi come utente, in questo modo potete testare
3288         il corretto funzionamento dell'autenticazione. Si provi
3289         inizialmente a sbagliare la password deliberatamente, poi a
3290         inserirla correttamente: dovrebbero essere visibili le
3291         risorse disponibili al solo utente sambo: la suo /home e la
3292         cartella samba_share:</p>
3293         <pre class="literal-block">
3294 Sharename       Type      Comment
3295 ---------       ----      -------
3296 sambo_share     Disk      Condivisione per Sambo
3297 print$          Disk      Printer Drivers
3298 IPC$            IPC       IPC Service (base server)
3299 sambo           Disk      Home Directories
3300 </pre>
3301
3302         <p>In particolare l'ultima voce relativa alla home
3303         directory dell'utente dovrebbe essere visibile solo agli
3304         utenti autenticati.</p>
3305
3306         <p>In alternativa e' possibile montare realmente la
3307         condivisone anche su GNU/Linux tramite un client per samba
3308         e testarne il corretto funzionamento:</p>
3309         <pre class="literal-block">
3310 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
3311 </pre>
3312       </div>
3313     </div>
3314
3315     <div class="section" id="server-di-posta-postfix">
3316       <h1><a class="toc-backref" href=
3317       "#id70">7&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a></h1>
3318
3319       <p>Il server di posta che prenderemo in considerazione e'
3320       Postfix, a seguire un estratto di un file do configurazione
3321       <em>semplie</em> con l'abilizazione delle <em>Maildir</em>
3322       nelle <tt class="docutils literal"><span class=
3323       "pre">/home</span></tt> degli utenti per la consegna della
3324       posta:</p>
3325
3326       <p><tt class="docutils literal"><span class=
3327       "pre">/etc/postfix/main.cf</span></tt>:</p>
3328       <pre class="literal-block">
3329 # ...segue dalla riga ~30
3330 myhostname = 162.piffa.net
3331 alias_maps = hash:/etc/aliases
3332 alias_database = hash:/etc/aliases
3333 myorigin = 162.piffa.net
3334 mydestination = 162.piffa.net, localhost
3335 # Se non avete un ip pubblico e statico, con un adeguato record PTR
3336 # dovrete usare un realy host per l'invio della posta
3337 relayhost = smtp.piffa.net
3338 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
3339
3340 # Per effettuare lo storaggio della posta nelle home directory degli utenti
3341 # in una Maildir invece che la Mailbox in /var/mail/utente
3342 # si disabiliti procmail
3343 #mailbox_command = procmail -a "$EXTENSION"
3344
3345 # Storaggio della posta nella _cartella_ Maildir/ (si noti lo slash)
3346 # nella home dell'utente:
3347 home_mailbox = Maildir/
3348 mailbox_size_limit = 0
3349 recipient_delimiter = +
3350 inet_interfaces = all
3351 </pre>
3352
3353       <div class="section" id="imap-e-pop">
3354         <h2><a class="toc-backref" href=
3355         "#id71">7.1&nbsp;&nbsp;&nbsp;Imap e pop</a></h2>
3356
3357         <p>Postfix e' un server SMTP, di conseguenza se volete che
3358         i vostri utenti possano <em>scaricare</em> in locale la
3359         posta generalemtne volete mettere a loro disposizione un
3360         server <em>POP3</em> o ancora meglio <em>IMAP</em>. Oppure
3361         entrambi.</p>
3362
3363         <dl class="docutils">
3364           <dt>Pacchetti da installare</dt>
3365
3366           <dd>courier-imap courier-pop</dd>
3367         </dl>
3368
3369         <p>i noti che IMAP necessita delle Maildir, non funziona
3370         con le Mailbox in <tt class="docutils literal"><span class=
3371         "pre">/var/mail/</span></tt> .</p>
3372
3373         <div class="section" id="web-client">
3374           <h3><a class="toc-backref" href=
3375           "#id72">7.1.1&nbsp;&nbsp;&nbsp;Web client</a></h3>
3376
3377           <p>Per mettere a disposizione degli utenti un client web
3378           per gestire la propia posta si installi il pacchetto:
3379           <tt class="docutils literal"><span class=
3380           "pre">squirrelmail</span></tt> . Ci sono tanti altri
3381           client web disponibili: questo e' particolarmente
3382           semplice. Naturalemte dovrete aver installato: <tt class=
3383           "docutils literal"><span class="pre">php5</span>
3384           <span class="pre">apache2</span></tt> .</p>
3385
3386           <p>L'interfaccia dovrebbe essere disponibile all'url:
3387           <tt class="docutils literal"><span class=
3388           "pre">http://localhost/squirrelmail</span></tt> . Se
3389           cosi' non fosse assicuratevi che Apache abbia incluso il
3390           file di configurazione di squirrelmail:</p>
3391           <pre class="literal-block">
3392 cd /etc/apache2/conf.d/
3393 ln -s /etc/squirrelmail/apache.conf ./
3394 </pre>
3395         </div>
3396       </div>
3397     </div>
3398
3399     <div class="section" id="firewall">
3400       <h1><a class="toc-backref" href=
3401       "#id73">8&nbsp;&nbsp;&nbsp;Firewall</a></h1>
3402
3403       <p>In Informatica, nell'ambito delle reti di computer, un
3404       firewall (termine inglese dal significato originario di
3405       parete refrattaria, muro tagliafuoco, muro ignifugo; in
3406       italiano anche parafuoco o parafiamma) e' un componente
3407       passivo di difesa perimetrale che può anche svolgere
3408       funzioni di collegamento tra due o piu' tronconi di rete.
3409       Usualmente la rete viene divisa in due sottoreti: una, detta
3410       esterna, comprende l'intera Internet mentre l'altra interna,
3411       detta LAN (Local Area Network), comprende una sezione piu' o
3412       meno grande di un insieme di computer locali. In alcuni casi
3413       e' possibile che si crei l'esigenza di creare una terza
3414       sottorete detta DMZ (o zona demilitarizzata) atta a contenere
3415       quei sistemi che devono essere isolati dalla rete interna ma
3416       devono comunque essere protetti dal firewall.</p>
3417
3418       <p>Una prima definizione chiusa di firewall Ã¨ la
3419       seguente:</p>
3420
3421       <p>Apparato di rete hardware o software che filtra tutti i
3422       pacchetti entranti ed uscenti, da e verso una rete o un
3423       computer, applicando regole che contribuiscono alla sicurezza
3424       della stessa.</p>
3425
3426       <p>In realtÃ&nbsp; un firewall può essere realizzato con un
3427       normale computer (con almeno due schede di rete e software
3428       apposito), può essere una funzione inclusa in un router o
3429       può essere un apparato specializzato. Esistono inoltre i
3430       cosiddetti "firewall personali", che sono programmi
3431       installati sui normali calcolatori, che filtrano solamente i
3432       pacchetti che entrano ed escono da quel calcolatore; in tal
3433       caso viene utilizzata una sola scheda di rete.</p>
3434
3435       <p>La funzionalitÃ&nbsp; principale in sostanza ÃƒÂ¨ quella di
3436       creare un filtro sulle connessioni entranti ed uscenti, in
3437       questo modo il dispositivo innalza il livello di sicurezza
3438       della rete e permette sia agli utenti interni che a quelli
3439       esterni di operare nel massimo della sicurezza. Il firewall
3440       agisce sui pacchetti in transito da e per la zona interna
3441       potendo eseguire su di essi operazioni di: controllo modifica
3442       monitoraggio</p>
3443
3444       <p>Questo grazie alla sua capacitÃ&nbsp; di "aprire" il
3445       pacchetto IP per leggere le informazioni presenti sul suo
3446       header, e in alcuni casi anche di effettuare verifiche sul
3447       contenuto del pacchetto.</p>
3448
3449       <div class="section" id="links">
3450         <h2><a class="toc-backref" href=
3451         "#id74">8.1&nbsp;&nbsp;&nbsp;Links</a></h2>
3452
3453         <ul class="simple">
3454           <li><a class="reference external" href=
3455           "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
3456
3457           <li><a class="reference external" href=
3458           "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
3459           http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
3460         </ul>
3461       </div>
3462
3463       <div class="section" id="ipfilter">
3464         <h2><a class="toc-backref" href=
3465         "#id75">8.2&nbsp;&nbsp;&nbsp;Ipfilter</a></h2>
3466
3467         <p>Link: <a class="reference external" href=
3468         "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
3469         http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
3470
3471         <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
3472         po' del 3) e su cosa <em>non</em> lavora (livello 4).
3473         Netfilter lavora anche su parti del livello 3 (TCP, UDP,
3474         etc) e del livello 1 (MAC source address). Iptables
3475         comunque permette di fare il <em>connection-tracking</em>,
3476         mediante il quale possiamo implementare il Network Address
3477         Translation.</p>
3478
3479         <p>Netfilter non ricostruisce il flusso di dati tra
3480         pacchetti, non puo' quindi rilevare la presenza di virus o
3481         simili che si trasmettono su pacchetti separati:
3482         ricomporre, analizzare e tornare a scomporre i frammenti
3483         rtichiederebbe troppa RAM e risorse di sistema, con il
3484         conseguente rischio di saturare il firewall fino
3485         all'abbandono dei nuovi pacchetti in transito. Ci sono
3486         altri software piu' adatti a questi compiti, ad esempio un
3487         proxy HTTP come Squid che e' appunto una applicazione di
3488         quarto livello, progettata e strutturata per analizzare e
3489         modificare i flussi di dati (il <em>contenuto</em> dei
3490         pacchetti, non le sole <em>inestazioni</em>) facendo
3491         abbondate uso delle risorse RAM e di calcolo del sistema.
3492         Non a caso su macchine embedded dalle prestazioni molto
3493         ridotte (CPU ARM ~250Mhz con ~30MB di RAM) Squid sfrutta al
3494         massimo le risorse di sistema per gestire il traffico di
3495         una rete 10/100, mentre il lavoro tipico svolto da
3496         netfilter e' quasi irrilevante.</p>
3497       </div>
3498
3499       <div class="section" id="progettazione-di-un-firewall">
3500         <h2><a class="toc-backref" href=
3501         "#id76">8.3&nbsp;&nbsp;&nbsp;Progettazione di un
3502         firewall</a></h2>
3503
3504         <p>Per implementare un firewall bisogna decidere un aio di
3505         cose: la collocazione e l'approccio (inclusivo o esclusivo)
3506         al filtraggio, il tipo di hardware.</p>
3507
3508         <div class="section" id="collocazione">
3509           <h3><a class="toc-backref" href=
3510           "#id77">8.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></h3>
3511
3512           <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
3513           della rete, decidere se diversi reparti di una azienda si
3514           possano vedere tra loro e in che misura.</p>
3515
3516           <p>Collocazione:</p>
3517
3518           <blockquote>
3519             <ol class="arabic simple">
3520               <li>sul router</li>
3521
3522               <li>tra router e servers / LAN</li>
3523
3524               <li>Unico server / router / firewall e connessi
3525               rischi. considerare l'acquisto di un router hardware
3526               dedicato.</li>
3527             </ol>
3528           </blockquote>
3529
3530           <dl class="docutils">
3531             <dt>Layeed security:</dt>
3532
3533             <dd>Implementare piu' device / software sui diversi
3534             livelli: <a class="reference external" href=
3535             "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
3536             http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
3537           </dl>
3538         </div>
3539
3540         <div class="section" id="policy-di-default">
3541           <h3><a class="toc-backref" href=
3542           "#id78">8.3.2&nbsp;&nbsp;&nbsp;Policy di default</a></h3>
3543
3544           <p>Drop o Accept: conseguenze per sicurezza, facilita' di
3545           gestione.</p>
3546         </div>
3547
3548         <div class="section" id="hardware">
3549           <h3><a class="toc-backref" href=
3550           "#id79">8.3.3&nbsp;&nbsp;&nbsp;Hardware</a></h3>
3551
3552           <p>Sostanzialmente potremmo distinquere due tipologie di
3553           hardware:</p>
3554
3555           <dl class="docutils">
3556             <dt>Network appliance dedicata::</dt>
3557
3558             <dd>Un dispositivo hardware dedicato alla funzione di
3559             Firewall, ad es un Cisco / Fortigate. Si noti che molti
3560             firewall economici altro non sono che Linux box molto
3561             striminzite.</dd>
3562
3563             <dt>Server / Personal computer:</dt>
3564
3565             <dd>Un server sul quale viene fatto girare Netfilter ad
3566             uso del server stesso e della rete connessa.</dd>
3567           </dl>
3568
3569           <p>Vantaggi e svantaggi: consumo elettrico, efficenza,
3570           flessibilita', strumenti di gestione, sicurezza,
3571           OpenBSD.</p>
3572         </div>
3573       </div>
3574
3575       <div class="section" id=
3576       "percorso-dei-pacchetti-tra-tabelle-e-catene">
3577         <h2><a class="toc-backref" href=
3578         "#id80">8.4&nbsp;&nbsp;&nbsp;Percorso dei pacchetti tra
3579         tabelle e catene</a></h2>
3580
3581         <p>link: <a class="reference external" href=
3582         "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
3583         http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
3584       </div>
3585
3586       <div class="section" id="concetti-di-base">
3587         <h2><a class="toc-backref" href=
3588         "#id81">8.5&nbsp;&nbsp;&nbsp;Concetti di base</a></h2>
3589
3590         <div class="section" id="tabelle-catene-regole">
3591           <h3><a class="toc-backref" href=
3592           "#id82">8.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
3593           regole</a></h3>
3594
3595           <p>Iptables lavora su 3 tabelle (tables) di default:</p>
3596
3597           <ul class="simple">
3598             <li>filter - Regola il firewalling: quali pacchetti
3599             accettare, quali bloccare</li>
3600
3601             <li>nat - Regola le attivitÃ&nbsp; di natting</li>
3602
3603             <li>mangle - Interviene sulla alterazione dei
3604             pacchetti.</li>
3605           </ul>
3606
3607           <p>Ogni tabella ha delle catene (chains) predefinite
3608           (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
3609           aggiunte catene custom. Ogni catena Ã¨ composta da un
3610           elenco di regole (rules) che identificano pacchetti di
3611           rete secono criteri diversi (es: -p tcp --dport 80 -d
3612           10.0.0.45) Ogni regola termina con una indicazione
3613           (target) su cosa fare dei pacchetti identificati dalla
3614           regola stessa (es: -j ACCEPT, -j DROP ...)</p>
3615         </div>
3616
3617         <div class="section" id="match">
3618           <h3><a class="toc-backref" href=
3619           "#id83">8.5.2&nbsp;&nbsp;&nbsp;Match</a></h3>
3620
3621           <p>I Match di una regola (rule) servono a testare un
3622           pacchetto per valutare se corrisponda a certe
3623           caratteriscttiche. I match di possono servire a
3624           controllare se un pacchetto e' destinato a una porta
3625           particolare o utilizza un protocollo particolare.</p>
3626
3627           <p>Alcuni esempi:</p>
3628
3629           <dl class="docutils">
3630             <dt>-p [!] proto</dt>
3631
3632             <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
3633             udp, gre, ah...)</dd>
3634
3635             <dt>-s [!] address[/mask]</dt>
3636
3637             <dd>Indirizzo IP sorgente (o network con maschera di
3638             sottorete)</dd>
3639
3640             <dt>-d [!] address[/mask]</dt>
3641
3642             <dd>Indirizzo IP destinazione (o network)</dd>
3643
3644             <dt>-i [!] interface[+]</dt>
3645
3646             <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
3647
3648             <dt>-o [!] interface[+]</dt>
3649
3650             <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
3651           </dl>
3652
3653           <table class="docutils option-list" frame="void" rules=
3654           "none">
3655             <col class="option">
3656             <col class="description">
3657
3658             <tbody valign="top">
3659               <tr>
3660                 <td class="option-group"><kbd><span class=
3661                 "option">-f</span></kbd></td>
3662
3663                 <td>Frammento di pacchetto</td>
3664               </tr>
3665             </tbody>
3666           </table>
3667         </div>
3668
3669         <div class="section" id="targets">
3670           <h3><a class="toc-backref" href=
3671           "#id84">8.5.3&nbsp;&nbsp;&nbsp;Targets</a></h3>
3672
3673           <p>Se un pacchetto soddisfa le condizioni del Match
3674           <em>salta</em> (jump) su uno dei target possibili, in
3675           caso contrario continua il suo percorso tra regole catene
3676           e tabelle.</p>
3677
3678           <p>Target principali:</p>
3679
3680           <dl class="docutils">
3681             <dt><em>-j ACCEPT</em></dt>
3682
3683             <dd>Il pachetto matchato viene accettato e procede
3684             verso la sua destinazione. Si usa per definire il
3685             traffico permesso.</dd>
3686
3687             <dt><em>-j DROP</em></dt>
3688
3689             <dd>Il pacchetto viene rifiutato e scartato, senza
3690             alcuna notifica al mittente. Si usa, in alternativa a
3691             REJECT, per bloccare traffico.</dd>
3692
3693             <dt><em>-j REJECT</em></dt>
3694
3695             <dd>Il pacchetto viene rifiutato. Al mittente viene
3696             mandato un pacchetto (configurabile) di notifica tipo
3697             ICMP port-unreachable (--reject-with
3698             icmp-port-unreachable)</dd>
3699           </dl>
3700
3701           <table class="docutils option-list" frame="void" rules=
3702           "none">
3703             <col class="option">
3704             <col class="description">
3705
3706             <tbody valign="top">
3707               <tr>
3708                 <td class="option-group"><kbd><span class=
3709                 "option">-t <var>LOG</var></span></kbd></td>
3710
3711                 <td>Il pacchetto viene loggato via syslog e procede
3712                 l'attraversamento della catena. Opzioni:
3713                 (--log-level, --log-prefix, --log-tcp-sequence,
3714                 --log-tcp-options, --log-ip-options)</td>
3715               </tr>
3716
3717               <tr>
3718                 <td class="option-group"><kbd><span class=
3719                 "option">-j <var>DNAT</var></span></kbd></td>
3720
3721                 <td>Viene modificato l'IP di destinazione del
3722                 pacchetto. Target disponibile solo in nat /
3723                 PREROUTING e nat / OUTPUT. L'opzione
3724                 --to-destination IP:porta definisce il nuovo IP di
3725                 destinazione. Si usa tipicamente su network
3726                 firewall che nattano server di una DMZ</td>
3727               </tr>
3728
3729               <tr>
3730                 <td class="option-group"><kbd><span class=
3731                 "option">-j <var>SNAT</var></span></kbd></td>
3732
3733                 <td>Viene modificato l'IP sorgente. Solo in nat /
3734                 POSTROUTING. Prevede l'opzione --to-source
3735                 IP:porta. Si usa per permettere l'accesso a
3736                 Internet da una rete locale con IP privati.</td>
3737               </tr>
3738
3739               <tr>
3740                 <td class="option-group"><kbd><span class=
3741                 "option">-j <var>MASQUERADE</var></span></kbd></td>
3742
3743                 <td>Simile a SNAT, si applica quando i pacchetti
3744                 escono da interfacce con IP dinamico (dialup, adsl,
3745                 dhcp...). Si usa solo in nat / POSTROUTING e
3746                 prevede l'opzione --to-ports porte.</td>
3747               </tr>
3748
3749               <tr>
3750                 <td class="option-group"><kbd><span class=
3751                 "option">-j <var>REDIRECT</var></span></kbd></td>
3752
3753                 <td>Redirige il pacchetto ad una porta locale.
3754                 Usabile solo in nat / PREROUTING e nat / OUTPUT Ã¨
3755                 previsto per fare un transparent proxy (con proxy
3756                 server in esecuzione sulla macchina con
3757                 iptables)</td>
3758               </tr>
3759
3760               <tr>
3761                 <td class="option-group"><kbd><span class=
3762                 "option">-j <var>RETURN</var></span></kbd></td>
3763
3764                 <td>Interrompe l'attraversamento della catena. Se
3765                 questa Ã¨ una secondaria, il pacchetto torna ad
3766                 attraversare la catena madre da punto in cui aveva
3767                 fatto il salto nella secondaria. Se il RETURN Ã¨ in
3768                 una delle catene di default, il pacchetto
3769                 interrompe l'attraversamento e segue la policy di
3770                 default.</td>
3771               </tr>
3772
3773               <tr>
3774                 <td class="option-group"><kbd><span class=
3775                 "option">-j <var>TOS</var></span></kbd></td>
3776
3777                 <td>Usabile solo nella tabella mangle, permette di
3778                 cambiare il TOS (Type Of Service) di un pacchetto
3779                 con l'opzione --set-tos. Per un elenco dei
3780                 parametri disponibili: iptables -j TOS -h</td>
3781               </tr>
3782
3783               <tr>
3784                 <td class="option-group"><kbd><span class=
3785                 "option">-j <var>MIRROR</var></span></kbd></td>
3786
3787                 <td>Curioso e sperimentale, questo target invia un
3788                 pacchetto speculare al mittente. In pratica Ã¨ come
3789                 se facesse da specchio per tutti i pacchetti
3790                 ricevuti. Da usare con cautela, per evitare
3791                 attacchi DOS indiretti.</td>
3792               </tr>
3793             </tbody>
3794           </table>
3795         </div>
3796       </div>
3797
3798       <div class="section" id="tabella-filter">
3799         <h2><a class="toc-backref" href=
3800         "#id85">8.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></h2>
3801
3802         <p>E' quella implicita e predefinita (-t filter) Riguarda
3803         le attivitÃ&nbsp; di filtraggio del traffico. Ha 3 catene
3804         di default: INPUT - Riguarda tutti i pacchetti destinati al
3805         sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
3806         i pacchetti che sono originati dal sistema e destinati ad
3807         uscire. FORWARD - Riguarda i pacchetti che attraversano il
3808         sistema, con IP sorgente e destinazione esterni.</p>
3809
3810         <p>Esempio per permettere accesso alla porta 80 locale:
3811         iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
3812         Analoga a: iptables -I INPUT -p tcp --dport 80 -j
3813         ACCEPT</p>
3814
3815         <p>Esempio per permettere ad un pacchetto con IP sorgente
3816         10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
3817         il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
3818         -j ACCEPT</p>
3819       </div>
3820
3821       <div class="section" id=
3822       "flush-automatico-per-macchine-remote">
3823         <h2><a class="toc-backref" href=
3824         "#id86">8.7&nbsp;&nbsp;&nbsp;Flush automatico per macchine
3825         remote</a></h2>
3826
3827         <p>Se state provando una configurazione del firewall per
3828         una macchina remota e' buona norma per evitare brutte
3829         figure attivare uno script che faccia il <em>flush</em>
3830         delle regole dopo qualche minuto. Potreste infatti
3831         inavvertitamente impostare una regola che vi impedisca di
3832         raggiungere la macchina remota, cosi' da non poter neanche
3833         eliminare quella regola e ripristinare la situazioe
3834         precedente.</p>
3835
3836         <p><em>Veramnete</em>, prima di lavorare sul firewall di
3837         una macchina remota inpostate almeno un <tt class=
3838         "docutils literal"><span class="pre">at</span> <span class=
3839         "pre">now</span> <span class="pre">+5</span> <span class=
3840         "pre">min</span></tt> o con un'oretta di margine per fare
3841         il <em>flush</em> delle regole (su tutte le tabelle):</p>
3842         <pre class="literal-block">
3843     at now +5 min
3844 at&gt; /sbin/iptables -F
3845 at&gt; [CTR+d]
3846 </pre>
3847       </div>
3848
3849       <div class="section" id="gestione-regole-rules">
3850         <h2><a class="toc-backref" href=
3851         "#id87">8.8&nbsp;&nbsp;&nbsp;Gestione regole
3852         (rules)</a></h2>
3853
3854         <p>Il comando iptables viene usato per ogni attivitÃ&nbsp;
3855         di gestione e configurazione.</p>
3856
3857         <p>Inserimento regole:</p>
3858
3859         <dl class="docutils">
3860           <dt>iptables -A CATENA ...</dt>
3861
3862           <dd>Aggiunge una regola alla fine della catena
3863           indicata</dd>
3864
3865           <dt>iptables -I CATENA [#] ...</dt>
3866
3867           <dd>Inserisce alla riga # (default 1) una regola nella
3868           catena indicata</dd>
3869
3870           <dt>iptables -N CATENA</dt>
3871
3872           <dd>Crea una nuova catena custom</dd>
3873
3874           <dt>iptables -P CATENA TARGET</dt>
3875
3876           <dd>Imposta il target di default per la catena
3877           indicata</dd>
3878         </dl>
3879
3880         <p>Rimozione regole e azzeramenti:</p>
3881
3882         <dl class="docutils">
3883           <dt>iptables -F [catena]</dt>
3884
3885           <dd>Ripulisce tutte le catene (o quella indicata)</dd>
3886
3887           <dt>iptables -X [catena]</dt>
3888
3889           <dd>Ripulisce tutte le catene custom (o quella
3890           indicata)</dd>
3891
3892           <dt>iptables -Z [catena]</dt>
3893
3894           <dd>Azzera i contatori sulle catene</dd>
3895
3896           <dt>iptables -D catena #</dt>
3897
3898           <dd>Cancella la regola numero # dalla catena
3899           indicata</dd>
3900         </dl>
3901
3902         <p>Interrogazione:</p>
3903
3904         <dl class="docutils">
3905           <dt>iptables -L</dt>
3906
3907           <dd>Elenca le regole esistenti</dd>
3908
3909           <dt>iptables -L -n -v</dt>
3910
3911           <dd>Elenca, senza risolvere gli host, in modo verboso le
3912           regole esistenti</dd>
3913         </dl>
3914       </div>
3915
3916       <div class="section" id="salvataggio-regole">
3917         <h2><a class="toc-backref" href=
3918         "#id88">8.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a></h2>
3919
3920         <p>Il comando <tt class="docutils literal"><span class=
3921         "pre">iptables</span></tt> serve per interagire con il
3922         framework <tt class="docutils literal"><span class=
3923         "pre">Netfilter</span></tt> ch gestisce il firewall di
3924         Linux al livello del kernel. Questo comporta, in modo
3925         analogo a quando avvene col comando <tt class=
3926         "docutils literal"><span class="pre">ifconfig</span></tt>,
3927         che i cambiameti impostati siano in <em>tempo reale,
3928         RAM</em>, non persistenti nel sistema: al boot sucessivo
3929         del sistema tutto tornera' alle impostazioni di base (in
3930         questo caso <em>nulle</em>, con policy di default settate
3931         su <tt class="docutils literal"><span class=
3932         "pre">ACCEPT</span></tt> per tutto).</p>
3933
3934         <p>Le varie invocazioni di iptables potrebbero essere
3935         richiamate da degli scripts dedicati, ma fortunatamente e'
3936         stata predisposta una apposita utility per gestire questi
3937         scripts in modo da avere a disposizione un <em>formato
3938         standard</em> per il salvataggio e il ripristino delle
3939         regole del firewall.</p>
3940
3941         <p>Altro problema: decidere quando attivare / disattivare
3942         queste regole. Utilizzare i <em>runlevels</em> non e' una
3943         soluzione adeguata: le regole del firewall sono legate
3944         all'attivita' delle schede di rete (e un host con diverse
3945         schede di rete puo' attivarle a secondo delle esigenze di
3946         routing, partenza di servizi es file_sharing per un
3947         back-up...): il sistema operativo Debian permette di legare
3948         l'esecuzione di comandi alla attivazione di una device di
3949         rete (<tt class="docutils literal"><span class=
3950         "pre">up</span></tt>), dopo la sua attivazione (<tt class=
3951         "docutils literal"><span class="pre">post-up</span></tt>,
3952         utile per devices che richiedono un certo tempo per
3953         inizializzarsi: come un tunnel o una connessione punto a
3954         punto), prima della sua attivazione (<tt class=
3955         "docutils literal"><span class="pre">pre-up</span></tt>).
3956         Allo stesso modo sono disponibili eventi analoghi per
3957         accompagnare la disattivazione dei device di rete: si veda
3958         la pagina man di <tt class="docutils literal"><span class=
3959         "pre">interfaces</span></tt>.</p>
3960
3961         <p>Nel nostro caso avremo per una possibile scheda
3962         <tt class="docutils literal"><span class=
3963         "pre">eth0</span></tt>:</p>
3964
3965         <p><tt class="docutils literal"><span class=
3966         "pre">/etc/network/interfaces</span></tt></p>
3967         <pre class="literal-block">
3968 iface eth1 inet static
3969         up /sbin/iptables-restore /root/firewall/basic_fw
3970         # Seguno i soliti parametri della scheda di rete
3971         address 10.10.208.21
3972 </pre>
3973
3974         <div class="section" id="iptables-save">
3975           <h3><a class="toc-backref" href=
3976           "#id89">8.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></h3>
3977
3978           <p>Per salvare le regole di iptables attualmente presenti
3979           nel kernel si usi il comando:</p>
3980           <pre class="literal-block">
3981 # iptables-save &gt;&gt; /root/firewall/basic_fw
3982 </pre>
3983
3984           <p>Il contenuto del file dovrebbe essere
3985           <em>comprensibile</em>: sostanzialmente sono regole di
3986           iptables, senza il comando iptables ripetuto, suddivisi
3987           per le varie tabelle. Potete comunque correggere
3988           eventuali parametri con un edito di testo.</p>
3989
3990           <p>Se non avete un'idea migliore potreste voler tenere
3991           gli script dei firewall in una cartella <tt class=
3992           "docutils literal"><span class=
3993           "pre">~/firewall</span></tt> nella home directory
3994           dell'utente <tt class="docutils literal"><span class=
3995           "pre">root</span></tt>.</p>
3996         </div>
3997
3998         <div class="section" id="iptables-restore">
3999           <h3><a class="toc-backref" href=
4000           "#id90">8.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></h3>
4001
4002           <p>Per ripristinare un set di regole prcedentemente
4003           salvate con <tt class="docutils literal"><span class=
4004           "pre">iptables-save</span></tt> si utilizzi <tt class=
4005           "docutils literal"><span class=
4006           "pre">iptables-restore</span></tt>. Se questo deve essere
4007           fatto in modalita' <em>non interattiva</em>, ad esempio
4008           deve essere eseguito dal demone che si occupa di
4009           inizializzare le schede di rete, oppure un <em>cron</em>
4010           o altro, e' buona norma richiamare i percorsi completi
4011           sia dei comandi che dei file:</p>
4012           <pre class="literal-block">
4013 /sbin/iptables-restore /root/firewall/basic_fw
4014 </pre>
4015         </div>
4016       </div>
4017     </div>
4018
4019     <div class="section" id="note">
4020       <h1><a class="toc-backref" href=
4021       "#id91">9&nbsp;&nbsp;&nbsp;NOTE</a></h1>
4022
4023       <ul class="simple">
4024         <li>controllare apache</li>
4025       </ul>
4026
4027       <p>sintassi: in <tt class="docutils literal"><span class=
4028       "pre">monospace</span></tt> :</p>
4029
4030       <ul class="simple">
4031         <li>nomi di files</li>
4032
4033         <li>comandi</li>
4034
4035         <li>pacchetti</li>
4036       </ul>
4037     </div>
4038   </div>
4039 </body>
4040 </html>