]> git.piffa.net Git - doc/.git/blob - servizi.html
idem
[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.8</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="id7" name=
289           "id7">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="id8" name=
294             "id8">1.1&nbsp;&nbsp;&nbsp;Solo per uso
295             interno</a></li>
296
297             <li>
298               <a class="reference internal" href="#rete" id="id9"
299               name="id9">1.2&nbsp;&nbsp;&nbsp;Rete</a>
300
301               <ul class="auto-toc">
302                 <li><a class="reference internal" href=
303                 "#interfaces" id="id10" name=
304                 "id10">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="id11" name=
310             "id11">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></li>
311
312             <li><a class="reference internal" href="#vim" id="id12"
313             name="id12">1.4&nbsp;&nbsp;&nbsp;Vim</a></li>
314
315             <li><a class="reference internal" href="#vnc" id="id13"
316             name="id13">1.5&nbsp;&nbsp;&nbsp;VNC</a></li>
317
318             <li><a class="reference internal" href=
319             "#lista-dei-pacchetti-di-base" id="id14" name=
320             "id14">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="id15" name=
326               "id15">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="id16" name=
331                 "id16">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></li>
332
333                 <li><a class="reference internal" href=
334                 "#etc-apt-apt-conf" id="id17" name=
335                 "id17">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="id18"
343           name="id18">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="id19" name=
349               "id19">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="id20" name=
355                 "id20">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a></li>
356
357                 <li><a class="reference internal" href=
358                 "#tag-maximum-object-size" id="id21" name=
359                 "id21">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="id22" name=
364                 "id22">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="id23" name=
369                 "id23">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="id24"
377               name="id24">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="id25" name=
383                 "id25">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="id26" name="id26">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="id27" name=
396                 "id27">2.3.1&nbsp;&nbsp;&nbsp;Client:
397                 ~/.wgetrc</a></li>
398
399                 <li><a class="reference internal" href=
400                 "#server-access-log" id="id28" name=
401                 "id28">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="id29"
410           name="id29">3&nbsp;&nbsp;&nbsp;Apache</a>
411
412           <ul class="auto-toc">
413             <li><a class="reference internal" href=
414             "#pacchetti-da-installare" id="id30" name=
415             "id30">3.1&nbsp;&nbsp;&nbsp;Pacchetti da
416             installare::</a></li>
417
418             <li><a class="reference internal" href=
419             "#configurazione-di-apache" id="id31" name=
420             "id31">3.2&nbsp;&nbsp;&nbsp;Configurazione di
421             Apache</a></li>
422
423             <li><a class="reference internal" href="#apache-conf"
424             id="id32" name=
425             "id32">3.3&nbsp;&nbsp;&nbsp;apache.conf</a></li>
426
427             <li>
428               <a class="reference internal" href=
429               "#installazione-di-php" id="id33" name=
430               "id33">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="id34" name=
435                 "id34">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="id35"
440                 name="id35">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="id36" name=
445                 "id36">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                 "id37" name=
450                 "id37">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="id38" name=
455                 "id38">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="id39" name="id39">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="id40" name=
467                 "id40">3.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></li>
468
469                 <li><a class="reference internal" href=
470                 "#virtual-host" id="id41" name=
471                 "id41">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="id42" name=
478               "id42">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="id43" name=
483                 "id43">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="id44" name=
491               "id44">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="id45" name=
496                 "id45">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="id46"
501                 name="id46">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                 "id47" name=
506                 "id47">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             "id48" name="id48">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="id49" name="id49">4&nbsp;&nbsp;&nbsp;Domain Name
519           System</a>
520
521           <ul class="auto-toc">
522             <li><a class="reference internal" href=
523             "#risoluzione-inversa" id="id50" name=
524             "id50">4.1&nbsp;&nbsp;&nbsp;Risoluzione
525             Inversa</a></li>
526
527             <li><a class="reference internal" href=
528             "#nomi-di-dominio" id="id51" name=
529             "id51">4.2&nbsp;&nbsp;&nbsp;Nomi di dominio</a></li>
530
531             <li><a class="reference internal" href=
532             "#tipologie-di-record" id="id52" name=
533             "id52">4.3&nbsp;&nbsp;&nbsp;Tipologie di
534             record</a></li>
535
536             <li><a class="reference internal" href="#utilizzo" id=
537             "id53" name=
538             "id53">4.4&nbsp;&nbsp;&nbsp;Utilizzo</a></li>
539
540             <li><a class="reference internal" href=
541             "#risoluzione-dei-nomi-di-dominio" id="id54" name=
542             "id54">4.5&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
543             dominio</a></li>
544
545             <li><a class="reference internal" href="#dig" id="id55"
546             name="id55">4.6&nbsp;&nbsp;&nbsp;Dig</a></li>
547
548             <li><a class="reference internal" href="#resolv-conf"
549             id="id56" name=
550             "id56">4.7&nbsp;&nbsp;&nbsp;resolv.conf</a></li>
551
552             <li><a class="reference internal" href="#etc-hosts" id=
553             "id57" name=
554             "id57">4.8&nbsp;&nbsp;&nbsp;/etc/hosts</a></li>
555
556             <li><a class="reference internal" href="#hostname" id=
557             "id58" name=
558             "id58">4.9&nbsp;&nbsp;&nbsp;Hostname</a></li>
559           </ul>
560         </li>
561
562         <li>
563           <a class="reference internal" href="#dnsmasq" id="id59"
564           name="id59">5&nbsp;&nbsp;&nbsp;DNSmasq</a>
565
566           <ul class="auto-toc">
567             <li><a class="reference internal" href=
568             "#configurazione" id="id60" name=
569             "id60">5.1&nbsp;&nbsp;&nbsp;Configurazione</a></li>
570
571             <li><a class="reference internal" href="#dhcp" id=
572             "id61" name="id61">5.2&nbsp;&nbsp;&nbsp;DHCP</a></li>
573
574             <li><a class="reference internal" href="#dns-cache" id=
575             "id62" name="id62">5.3&nbsp;&nbsp;&nbsp;DNS
576             cache</a></li>
577           </ul>
578         </li>
579
580         <li>
581           <a class="reference internal" href=
582           "#bind-dns-autoritativo" id="id63" name=
583           "id63">6&nbsp;&nbsp;&nbsp;Bind : DNS Autoritativo</a>
584
585           <ul class="auto-toc">
586             <li><a class="reference internal" href="#id4" id="id64"
587             name="id64">6.1&nbsp;&nbsp;&nbsp;DNS cache</a></li>
588
589             <li>
590               <a class="reference internal" href=
591               "#ospitare-una-zona" id="id65" name=
592               "id65">6.2&nbsp;&nbsp;&nbsp;Ospitare una zona</a>
593
594               <ul class="auto-toc">
595                 <li><a class="reference internal" href=
596                 "#named-conf-local" id="id66" name=
597                 "id66">6.2.1&nbsp;&nbsp;&nbsp;named.conf.local</a></li>
598
599                 <li>
600                   <a class="reference internal" href=
601                   "#configurazione-della-zona" id="id67" name=
602                   "id67">6.2.2&nbsp;&nbsp;&nbsp;Configurazione
603                   della zona</a>
604
605                   <ul class="auto-toc">
606                     <li><a class="reference internal" href=
607                     "#soa-start-of-authority-record" id="id68"
608                     name="id68">6.2.2.1&nbsp;&nbsp;&nbsp;SOA: Start
609                     of Authority Record</a></li>
610
611                     <li><a class="reference internal" href=
612                     "#altri-campi" id="id69" name=
613                     "id69">6.2.2.2&nbsp;&nbsp;&nbsp;Altri
614                     campi:</a></li>
615                   </ul>
616                 </li>
617               </ul>
618             </li>
619
620             <li><a class="reference internal" href=
621             "#link-suggeriti" id="id70" name=
622             "id70">6.3&nbsp;&nbsp;&nbsp;Link suggeriti:</a></li>
623           </ul>
624         </li>
625
626         <li>
627           <a class="reference internal" href="#samba" id="id71"
628           name="id71">7&nbsp;&nbsp;&nbsp;Samba</a>
629
630           <ul class="auto-toc">
631             <li><a class="reference internal" href="#pacchetti" id=
632             "id72" name=
633             "id72">7.1&nbsp;&nbsp;&nbsp;Pacchetti</a></li>
634
635             <li><a class="reference internal" href=
636             "#passwords-e-autenticazione" id="id73" name=
637             "id73">7.2&nbsp;&nbsp;&nbsp;Passwords e
638             autenticazione</a></li>
639
640             <li><a class="reference internal" href=
641             "#creazione-utenti" id="id74" name=
642             "id74">7.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></li>
643
644             <li>
645               <a class="reference internal" href=
646               "#creare-la-condivisione" id="id75" name=
647               "id75">7.4&nbsp;&nbsp;&nbsp;Creare la
648               condivisione</a>
649
650               <ul class="auto-toc">
651                 <li><a class="reference internal" href=
652                 "#sicurezza-permessi-di-esecuzione-sul-server" id=
653                 "id76" name=
654                 "id76">7.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi
655                 di esecuzione sul server</a></li>
656               </ul>
657             </li>
658
659             <li>
660               <a class="reference internal" href=
661               "#configurazione-dell-applicativo-samba-vero-e-proprio"
662               id="id77" name=
663               "id77">7.5&nbsp;&nbsp;&nbsp;Configurazione
664               dell'applicativo Samba vero e proprio.</a>
665
666               <ul class="auto-toc">
667                 <li><a class="reference internal" href=
668                 "#creazione-di-un-gruppo" id="id78" name=
669                 "id78">7.5.1&nbsp;&nbsp;&nbsp;Creazione di un
670                 gruppo</a></li>
671               </ul>
672             </li>
673
674             <li><a class="reference internal" href=
675             "#testare-il-servizio" id="id79" name=
676             "id79">7.6&nbsp;&nbsp;&nbsp;Testare il
677             Servizio</a></li>
678           </ul>
679         </li>
680
681         <li>
682           <a class="reference internal" href=
683           "#server-di-posta-postfix" id="id80" name=
684           "id80">8&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a>
685
686           <ul class="auto-toc">
687             <li>
688               <a class="reference internal" href=
689               "#test-del-server-smtp" id="id81" name=
690               "id81">8.1&nbsp;&nbsp;&nbsp;Test del server smtp</a>
691
692               <ul class="auto-toc">
693                 <li><a class="reference internal" href="#swaks" id=
694                 "id82" name=
695                 "id82">8.1.1&nbsp;&nbsp;&nbsp;Swaks</a></li>
696               </ul>
697             </li>
698
699             <li><a class="reference internal" href="#imap-e-pop"
700             id="id83" name="id83">8.2&nbsp;&nbsp;&nbsp;Imap e
701             pop</a></li>
702
703             <li>
704               <a class="reference internal" href=
705               "#client-a-riga-di-comando" id="id84" name=
706               "id84">8.3&nbsp;&nbsp;&nbsp;Client a riga di
707               comando</a>
708
709               <ul class="auto-toc">
710                 <li><a class="reference internal" href="#mailx" id=
711                 "id85" name=
712                 "id85">8.3.1&nbsp;&nbsp;&nbsp;mailx</a></li>
713
714                 <li><a class="reference internal" href="#mutt" id=
715                 "id86" name=
716                 "id86">8.3.2&nbsp;&nbsp;&nbsp;Mutt</a></li>
717
718                 <li><a class="reference internal" href=
719                 "#web-client" id="id87" name=
720                 "id87">8.3.3&nbsp;&nbsp;&nbsp;Web client</a></li>
721               </ul>
722             </li>
723
724             <li>
725               <a class="reference internal" href="#graylisting" id=
726               "id88" name=
727               "id88">8.4&nbsp;&nbsp;&nbsp;Graylisting</a>
728
729               <ul class="auto-toc">
730                 <li><a class="reference internal" href=
731                 "#abilitazione-in-postfix" id="id89" name=
732                 "id89">8.4.1&nbsp;&nbsp;&nbsp;Abilitazione in
733                 Postfix</a></li>
734
735                 <li><a class="reference internal" href="#test" id=
736                 "id90" name=
737                 "id90">8.4.2&nbsp;&nbsp;&nbsp;Test</a></li>
738
739                 <li><a class="reference internal" href=
740                 "#statistiche" id="id91" name=
741                 "id91">8.4.3&nbsp;&nbsp;&nbsp;Statistiche</a></li>
742               </ul>
743             </li>
744           </ul>
745         </li>
746
747         <li>
748           <a class="reference internal" href="#firewall" id="id92"
749           name="id92">9&nbsp;&nbsp;&nbsp;Firewall</a>
750
751           <ul class="auto-toc">
752             <li><a class="reference internal" href="#links" id=
753             "id93" name="id93">9.1&nbsp;&nbsp;&nbsp;Links</a></li>
754
755             <li><a class="reference internal" href="#ipfilter" id=
756             "id94" name=
757             "id94">9.2&nbsp;&nbsp;&nbsp;Ipfilter</a></li>
758
759             <li>
760               <a class="reference internal" href=
761               "#progettazione-di-un-firewall" id="id95" name=
762               "id95">9.3&nbsp;&nbsp;&nbsp;Progettazione di un
763               firewall</a>
764
765               <ul class="auto-toc">
766                 <li><a class="reference internal" href=
767                 "#collocazione" id="id96" name=
768                 "id96">9.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></li>
769
770                 <li><a class="reference internal" href=
771                 "#policy-di-default" id="id97" name=
772                 "id97">9.3.2&nbsp;&nbsp;&nbsp;Policy di
773                 default</a></li>
774
775                 <li><a class="reference internal" href="#hardware"
776                 id="id98" name=
777                 "id98">9.3.3&nbsp;&nbsp;&nbsp;Hardware</a></li>
778               </ul>
779             </li>
780
781             <li><a class="reference internal" href=
782             "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
783             "id99" name="id99">9.4&nbsp;&nbsp;&nbsp;Percorso dei
784             pacchetti tra tabelle e catene</a></li>
785
786             <li>
787               <a class="reference internal" href=
788               "#concetti-di-base" id="id100" name=
789               "id100">9.5&nbsp;&nbsp;&nbsp;Concetti di base</a>
790
791               <ul class="auto-toc">
792                 <li><a class="reference internal" href=
793                 "#tabelle-catene-regole" id="id101" name=
794                 "id101">9.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
795                 regole</a></li>
796
797                 <li><a class="reference internal" href="#match" id=
798                 "id102" name=
799                 "id102">9.5.2&nbsp;&nbsp;&nbsp;Match</a></li>
800
801                 <li><a class="reference internal" href="#targets"
802                 id="id103" name=
803                 "id103">9.5.3&nbsp;&nbsp;&nbsp;Targets</a></li>
804               </ul>
805             </li>
806
807             <li><a class="reference internal" href=
808             "#tabella-filter" id="id104" name=
809             "id104">9.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></li>
810
811             <li><a class="reference internal" href=
812             "#flush-automatico-per-macchine-remote" id="id105"
813             name="id105">9.7&nbsp;&nbsp;&nbsp;Flush automatico per
814             macchine remote</a></li>
815
816             <li><a class="reference internal" href=
817             "#gestione-regole-rules" id="id106" name=
818             "id106">9.8&nbsp;&nbsp;&nbsp;Gestione regole
819             (rules)</a></li>
820
821             <li>
822               <a class="reference internal" href=
823               "#salvataggio-regole" id="id107" name=
824               "id107">9.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a>
825
826               <ul class="auto-toc">
827                 <li><a class="reference internal" href=
828                 "#iptables-save" id="id108" name=
829                 "id108">9.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></li>
830
831                 <li><a class="reference internal" href=
832                 "#iptables-restore" id="id109" name=
833                 "id109">9.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></li>
834               </ul>
835             </li>
836
837             <li>
838               <a class="reference internal" href="#esempi" id=
839               "id110" name="id110">9.10&nbsp;&nbsp;&nbsp;Esempi</a>
840
841               <ul class="auto-toc">
842                 <li><a class="reference internal" href=
843                 "#bloccare-i-ping-dall-esterno" id="id111" name=
844                 "id111">9.10.1&nbsp;&nbsp;&nbsp;Bloccare i ping
845                 dall'esterno</a></li>
846
847                 <li><a class="reference internal" href=
848                 "#masquerading-snat" id="id112" name=
849                 "id112">9.10.2&nbsp;&nbsp;&nbsp;Masquerading
850                 (sNAT)</a></li>
851
852                 <li><a class="reference internal" href=
853                 "#brute-force" id="id113" name=
854                 "id113">9.10.3&nbsp;&nbsp;&nbsp;Brute
855                 force</a></li>
856               </ul>
857             </li>
858           </ul>
859         </li>
860
861         <li><a class="reference internal" href="#note" id="id114"
862         name="id114">10&nbsp;&nbsp;&nbsp;NOTE</a></li>
863       </ul>
864     </div>
865
866     <p>Generato con: <a class="reference external" href=
867     "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
868
869     <div class="section" id="configurazione-sistema">
870       <h1><a class="toc-backref" href=
871       "#id7">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a></h1>
872
873       <div class="section" id="solo-per-uso-interno">
874         <h2><a class="toc-backref" href=
875         "#id8">1.1&nbsp;&nbsp;&nbsp;Solo per uso interno</a></h2>
876
877         <p>Impostazioni di base per la configurazione del sistema
878         operativo e della rete nel laboratorio 208 facente parte
879         della rete piffa.net .</p>
880
881         <p>Qui riportati per comodita' degli studenti (e del
882         docente che non sara' <strong>mai piu'</strong> costretto a
883         ripeterli continuamente! ). Gli altri lettori potranno
884         tenerli presenti per cercare di comprendere gli esempi nel
885         testo. Ad esempio: quando leggerete <tt class=
886         "docutils literal"><span class=
887         "pre">10.10.208.254:3128</span></tt> saprete che si tratta
888         del nostro <em>proxy http</em>, stara' quindi a voi
889         sostituire i dati con gli equivalenti <em>IP</em> della
890         vostra rete.</p>
891       </div>
892
893       <div class="section" id="rete">
894         <h2><a class="toc-backref" href=
895         "#id9">1.2&nbsp;&nbsp;&nbsp;Rete</a></h2>
896
897         <p>Parametri della rete attualmente in uso:</p>
898
899         <table border="1" class="docutils">
900           <colgroup>
901             <col width="42%">
902             <col width="58%">
903           </colgroup>
904
905           <tbody valign="top">
906             <tr>
907               <td colspan="2">Parametri della rete</td>
908             </tr>
909
910             <tr>
911               <td>rete</td>
912
913               <td>10.10.208.0/24</td>
914             </tr>
915
916             <tr>
917               <td>netmask</td>
918
919               <td>255.255.255.0</td>
920             </tr>
921
922             <tr>
923               <td>broadcast</td>
924
925               <td>10.10.208.255</td>
926             </tr>
927
928             <tr>
929               <td>gateway</td>
930
931               <td>10.10.208.254</td>
932             </tr>
933
934             <tr>
935               <td>DNS</td>
936
937               <td>10.10.208.254</td>
938             </tr>
939
940             <tr>
941               <td>proxy http</td>
942
943               <td>10.10.208.254:3128</td>
944             </tr>
945           </tbody>
946         </table>
947
948         <p>Sul portatile di Andrea, corrispondente all'IP 254, gira
949         un DHCP, proxy http e mirror di Debian ( <a class=
950         "reference external" href=
951         "http://debian.piffa.net">http://debian.piffa.net</a>). Se
952         Andrea non e' in aula (o ancora peggio non c'e' il suo
953         portatile Net) gli studenti dovranno darsi un indirizzo IP
954         manualmente e disabilitare il proxy (che pero' e
955         trasparente, quindi fate pure come se non ci fosse ;) . Ad
956         oggi il <em>lab208</em> e' servito dal server Bender (254 o
957         248) che ha ripreso le sue vecchie funzioni.</p>
958
959         <div class="section" id="interfaces">
960           <h3><a class="toc-backref" href=
961           "#id10">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></h3>
962
963           <p>Segue un esempio del file di configurazione della
964           scheda di rete con configurazione statica:</p>
965
966           <p>/etc/network/interfaces:</p>
967           <pre class="literal-block">
968 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
969
970 # The loopback interface
971 iface lo inet loopback
972
973 # La prima scheda di rete (se si chiama eth0)
974 # (network, broadcast and gateway sono optional)
975 iface etho inet static
976   # esempio con dhcp:
977   # iface etho inet dhcp
978 address 10.10.208.101
979 netmask 255.255.255.0
980 network 10.10.208.0
981 broadcast 10.10.208.255
982 gateway 10.10.208.254
983
984 # Quali interfacci devono partire automaticamente:
985 auto lo eth0
986 </pre>
987
988           <p>Controllare il nome della propria scheda di rete: a
989           volte <em>udev</em> rinomina la prima scheda a <tt class=
990           "docutils literal"><span class="pre">eth1</span></tt>,
991           oppure potreste avere piu' di una scheda di rete (anche
992           un'interfaccia <em>firewire</em> puo' essere
993           automaticamente abilitata come scheda di rete).</p>
994
995           <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
996           , eth0:1 , ...) ricordarsi che queste dipendono dalla
997           scheda fisica a cui sono associate: abbattere con
998           <tt class="docutils literal"><span class=
999           "pre">ifconfig</span> <span class="pre">down</span>
1000           <span class="pre">eth0</span></tt> la scheda principale
1001           fara' cadere anche queste. Tornando ad attivare la scada
1002           principale con <tt class="docutils literal"><span class=
1003           "pre">ifconfig</span> <span class="pre">eth0</span>
1004           <span class="pre">up</span></tt> la virtuale tornera'
1005           attiva: nel caso voleste disabilitarla dovrete quindi
1006           sempre abbattere manualmente la scheda virtuale
1007           <em>prima</em> della scheda reale.</p>
1008
1009           <p>I DNS vanno indicati nel file <tt class=
1010           "docutils literal"><span class=
1011           "pre">/etc/resolv.conf</span></tt> , la cui sintassi e'
1012           spiegata al punto 4.6 .</p>
1013         </div>
1014       </div>
1015
1016       <div class="section" id="bash-completion">
1017         <h2><a class="toc-backref" href=
1018         "#id11">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></h2>
1019
1020         <p>Il completamento automatico della shell (che si attiva
1021         premendo il tasto tab una o due volte mentre si sta
1022         scrivendo un termine) permette di comporre automaticamente
1023         i nomi dei comandi e i percorsi dei file, sopratutto la
1024         composizione automatica dei percorsi dei file e' di grande
1025         importanza.</p>
1026
1027         <p>Bash_completion permette di integrare il completamento
1028         automatico con i nomi dei pacchetti e oggetti dei comandi:
1029         ad es. volendo digitare <tt class=
1030         "docutils literal"><span class="pre">apt-get</span>
1031         <span class="pre">inst[TAB]</span> <span class=
1032         "pre">xtigh[TAB]</span></tt> ora verra' completato
1033         automaticamente sia la parola <tt class=
1034         "docutils literal"><span class="pre">install</span></tt>
1035         che il nome del pacchetto <tt class=
1036         "docutils literal"><span class=
1037         "pre">xtightvncviewer</span></tt>.</p>
1038
1039         <p>Abilitare /etc/bash_completion nel file <tt class=
1040         "docutils literal"><span class=
1041         "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
1042         proprio <tt class="docutils literal"><span class=
1043         "pre">~/.bashrc</span></tt> (che sarebbe il file
1044         <em>nascosto</em>, quindi con un punto all'inizio del nome
1045         del file, di configurazione della shell bash per ogni
1046         utente, presente nella propria <em>home
1047         directory</em>):</p>
1048         <pre class="literal-block">
1049 echo ". /etc/bash_completion" &gt;&gt; ~/.bashrc
1050 </pre>
1051
1052         <p>Esempio di ~/.bahsrc</p>
1053         <pre class="literal-block">
1054 # ~/.bashrc: executed by bash(1) for non-login shells.
1055
1056 export PS1='\h:\w\$ '
1057 umask 022
1058
1059 # De-commentare le seguenti righe per abilitare la colorazione dei
1060 # nomi dei file:
1061  export LS_OPTIONS='--color=auto'
1062  eval "`dircolors`"
1063  alias ls='ls $LS_OPTIONS'
1064  alias ll='ls $LS_OPTIONS -l'
1065  alias l='ls $LS_OPTIONS -lA'
1066
1067 # Some more alias to avoid making mistakes:
1068 # alias rm='rm -i'
1069 # alias cp='cp -i'
1070 # alias mv='mv -i'
1071
1072 # questo abilita bash completion
1073 . /etc/bash_completion
1074 </pre>
1075
1076         <p>Il file <tt class="docutils literal"><span class=
1077         "pre">/etc/bash_completion</span></tt> deve essere presente
1078         nel sistema, in caso contrario installare il pacchetto:
1079         <tt class="docutils literal"><span class=
1080         "pre">bash-completion</span></tt>. Generalmente l'utente
1081         <tt class="docutils literal"><span class=
1082         "pre">root</span></tt> ha un file <tt class=
1083         "docutils literal"><span class="pre">.bashrc</span></tt>
1084         preimpostato analogo a quello citato sopra, a differenza
1085         dei normali utenti di sistema.</p>
1086
1087         <p>Links:</p>
1088
1089         <ul class="simple">
1090           <li><a class="reference external" href=
1091           "http://www.debian-administration.org/articles/316">An
1092           introduction to bash completion</a></li>
1093
1094           <li><a class="reference external" href=
1095           "http://www.caliban.org/bash/">Working more productively
1096           with bash 2.x/3.x</a></li>
1097         </ul>
1098       </div>
1099
1100       <div class="section" id="vim">
1101         <h2><a class="toc-backref" href=
1102         "#id12">1.4&nbsp;&nbsp;&nbsp;Vim</a></h2>
1103
1104         <p>Vim e' l'editor di testo preferito dai sistemisti,
1105         quindi sara' conveniente impostare fin da subito alcune
1106         impostazioni per renderlo piu' comodo.</p>
1107
1108         <p>Assicurarsi che sia installata nel sistema la versione
1109         completa dell'editor <tt class=
1110         "docutils literal"><span class="pre">vim</span></tt>
1111         installando il pacchetto <tt class=
1112         "docutils literal"><span class="pre">vim</span></tt>:</p>
1113         <pre class="literal-block">
1114        # apt-get install vim
1115
1116 e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
1117
1118    " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1119    " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1120    " you can find below.  If you wish to change any of those settings, you should
1121    " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1122    " everytime an upgrade of the vim packages is performed.  It is recommended to
1123    " make changes after sourcing debian.vim since it alters the value of the
1124    " 'compatible' option.
1125
1126    " This line should not be removed as it ensures that various options are
1127    " properly set to work with the Vim-related packages available in Debian.
1128    runtime! debian.vim
1129
1130    " Uncomment the next line to make Vim more Vi-compatible
1131    " NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
1132    " options, so any other options should be set AFTER setting 'compatible'.
1133    "set compatible
1134
1135    " Vim5 and later versions support syntax highlighting. Uncommenting the next
1136    " line enables syntax highlighting by default.
1137    syntax on
1138
1139    " If using a dark background within the editing area and syntax highlighting
1140    " turn on this option as well.
1141    set background=dark
1142
1143    " Uncomment the following to have Vim jump to the last position when
1144    " reopening a file
1145
1146    if has("autocmd")
1147      au BufReadPost * if line("'\"") &gt; 0 &amp;&amp; line("'\"") &lt;= line("$")
1148        \| exe "normal! g'\"" | endif
1149    endif
1150
1151    " Uncomment the following to have Vim load indentation rules and plugins
1152    " according to the detected filetype.
1153    " This is not recommanded if you often copy and paste into vim,
1154    " as it messes all the indentation.
1155    if has("autocmd")
1156      filetype plugin indent on
1157    endif
1158
1159    " This goes for comments folding: use co to expnad and zc to compress,
1160    " zi to toggle on/off
1161    set fdm=expr
1162    set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
1163
1164    " The following are commented out as they cause vim to behave a lot
1165    " differently from regular Vi. They are highly recommended though.
1166    set showcmd             " Show (partial) command in status line.
1167    "set showmatch          " Show matching brackets.
1168    # Ignorecase is quite userfull
1169    set ignorecase          " Do case insensitive matching
1170    "set smartcase          " Do smart case matching
1171    "set incsearch          " Incremental search
1172    set autowrite           " Automatically save before commands like :next and :make
1173    "set hidden             " Hide buffers when they are abandoned
1174    "set mouse=a            " Enable mouse usage (all modes) in terminals
1175
1176    " Source a global configuration file if available
1177    " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1178    if filereadable("/etc/vim/vimrc.local")
1179      source /etc/vim/vimrc.local
1180    endif
1181 </pre>
1182
1183         <p>I principianti faranno bene ad esercitarsi con
1184         <tt class="docutils literal"><span class=
1185         "pre">vimtutor</span> <span class="pre">it</span></tt>.</p>
1186       </div>
1187
1188       <div class="section" id="vnc">
1189         <h2><a class="toc-backref" href=
1190         "#id13">1.5&nbsp;&nbsp;&nbsp;VNC</a></h2>
1191
1192         <p>I Virtual Network Computing (o VNC) sono software di
1193         controllo remoto e servono per amministrare il proprio
1194         computer a distanza o visualizzare la sessione di lavoro di
1195         un altro computer sul proprio a scopo didattico.</p>
1196
1197         <p>Scaricare il pacchetto <tt class=
1198         "docutils literal"><span class=
1199         "pre">xtightvncviewer</span></tt> e lo script <tt class=
1200         "docutils literal"><span class="pre">guarda.sh</span></tt>
1201         in una posizione (collocazione nel <em>path</em> degli
1202         utenti, es <tt class="docutils literal"><span class=
1203         "pre">echo</span> <span class="pre">$PATH</span></tt> per
1204         visualizzare l'attuale path ) comoda per gli utenti ( in
1205         genere <tt class="docutils literal"><span class=
1206         "pre">/bin</span></tt> ), rendere eseguibile lo script.</p>
1207
1208         <p>Procedura:</p>
1209         <pre class="literal-block">
1210 su root
1211 cd /bin
1212 wget http://debian.piffa.net/guarda.sh
1213 chmod +x guarda.sh
1214 exit
1215 </pre>
1216
1217         <p>Si noti che non e' possibile lanciare un applicativo sul
1218         server grafico di un utente da una shell in cui si sta
1219         lavorando come altro utente, anche se root. E' quindi
1220         necessario essere l'utente di sistema che si e' loggato
1221         inizialmente nella sessione grafica per poter lanciare lo
1222         script guarda.sh da una shell.</p>
1223
1224         <p>Controllare con <tt class=
1225         "docutils literal"><span class="pre">whoami</span></tt> di
1226         essere l'utente normale (es <tt class=
1227         "docutils literal"><span class="pre">utente</span>
1228         <span class="pre">|</span> <span class=
1229         "pre">studente</span> <span class="pre">|</span>
1230         <span class="pre">proprio</span> <span class=
1231         "pre">nome</span></tt> ), in caso si sia assunta una altra
1232         <tt class="docutils literal"><span class=
1233         "pre">id</span></tt> si apra un altra shell o si esca da
1234         quella attuale con <tt class=
1235         "docutils literal"><span class="pre">exit</span></tt> .</p>
1236       </div>
1237
1238       <div class="section" id="lista-dei-pacchetti-di-base">
1239         <h2><a class="toc-backref" href=
1240         "#id14">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
1241         base</a></h2>
1242
1243         <p>I pacchetti installati generalmente <a class=
1244         "footnote-reference" href="#id2" id="id1" name=
1245         "id1">[1]</a> per poter seguire le lezioni sono:</p>
1246         <pre class="literal-block">
1247 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1248 </pre>
1249
1250         <table class="docutils footnote" frame="void" id="id2"
1251         rules="none">
1252           <colgroup>
1253             <col class="label">
1254             <col>
1255           </colgroup>
1256
1257           <tbody valign="top">
1258             <tr>
1259               <td class="label"><a class="fn-backref" href=
1260               "#id1">[1]</a></td>
1261
1262               <td><tt class="docutils literal"><span class=
1263               "pre">kde-core</span></tt> e' piu' leggero del
1264               pacchetto <tt class="docutils literal"><span class=
1265               "pre">kde</span></tt>. Esiste un equivalente
1266               <tt class="docutils literal"><span class=
1267               "pre">gnome-core</span> <span class=
1268               "pre">gnome</span></tt> per chi preferisce gnome, nel
1269               caso si potrebbe installare il log-in manager
1270               <tt class="docutils literal"><span class=
1271               "pre">gdm</span></tt> al posto di <tt class=
1272               "docutils literal"><span class=
1273               "pre">kdm</span></tt>.</td>
1274             </tr>
1275           </tbody>
1276         </table>
1277       </div>
1278
1279       <div class="section" id="apt-configurazione">
1280         <h2><a class="toc-backref" href=
1281         "#id15">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a></h2>
1282
1283         <p>Vediamo i due file principali di apt:</p>
1284
1285         <ul class="simple">
1286           <li><tt class="docutils literal"><span class=
1287           "pre">/etc/apt/sources.list</span></tt></li>
1288
1289           <li><tt class="docutils literal"><span class=
1290           "pre">/etc/apt/apt.conf</span></tt></li>
1291         </ul>
1292
1293         <div class="section" id="sources-list">
1294           <h3><a class="toc-backref" href=
1295           "#id16">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></h3>
1296
1297           <p>Questo file contiene i sorgenti da cui <em>apt</em>
1298           preleva i pacchetti da installare tramite <em>dpkg</em>,
1299           vengono quindi precisati i metodi (ad es. http / ftp /
1300           cdrom / file), la release che si vuole tracciare (es
1301           <tt class="docutils literal"><span class=
1302           "pre">stable,</span> <span class="pre">testing,</span>
1303           <span class="pre">unstable</span></tt> oppure i
1304           corrispondenti release name es: <tt class=
1305           "docutils literal"><span class="pre">Lenny,</span>
1306           <span class="pre">Squeeze,</span> <span class=
1307           "pre">Sid</span></tt>), i rami di interesse (es:
1308           <tt class="docutils literal"><span class=
1309           "pre">main</span></tt> che e' l'archivio principale,
1310           <tt class="docutils literal"><span class=
1311           "pre">non-free</span></tt> per il software non libero,
1312           <tt class="docutils literal"><span class=
1313           "pre">contrib</span></tt> per i pacchetti non realizzati
1314           dai manutentori ufficiali).</p>
1315
1316           <p>Gli archivi sono generalmente:</p>
1317
1318           <ul class="simple">
1319             <li><tt class="docutils literal"><span class=
1320             "pre">deb</span></tt> per pacchetti Debian binari</li>
1321
1322             <li><tt class="docutils literal"><span class=
1323             "pre">deb-src</span></tt> per i pacchetti sorgenti
1324             (quindi da compilare, come il kernel) degli stessi
1325             pacchetti binari. In genere se non compilate spesso
1326             potete evitare di tracciare i sorgenti per risparmiare
1327             tempo e banda.</li>
1328           </ul>
1329
1330           <p><tt class="docutils literal"><span class=
1331           "pre">/etc/apt/sources.list</span></tt></p>
1332           <pre class="literal-block">
1333 # esempio di accesso a un CDROM:
1334 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1335
1336 # Archivio principale debian via http su piffa.net,
1337 # non funziona al di fuori dell'aula dei corsi
1338 deb http://debian.piffa.net/debian/ Lenny main
1339 # Sono disponibili anche i rami non-free contrib
1340 # deb http://debian.piffa.net/debian/ lenny  non-free contrib
1341
1342 # Mirror da kernel.org da usare a casa:
1343 deb http://mirrors.eu.kernel.org/debian/ lenny main
1344
1345 # Security dal sito principale
1346 deb http://security.debian.org/ lenny/updates main
1347 deb-src http://security.debian.org/ lenny/updates main
1348
1349 # Debian volatile per le cose soggette a cambiamenti non legati
1350 # a dinamiche di sicurezza
1351 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1352 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1353
1354 # Esempio di accesso a un file system locale contenente i pacchetti:
1355 # deb file:/mnt/mirror Sid main non-free contrib
1356 </pre>
1357         </div>
1358
1359         <div class="section" id="etc-apt-apt-conf">
1360           <h3><a class="toc-backref" href=
1361           "#id17">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></h3>
1362
1363           <p>Questo file contiene le opzioni di apt, come ad
1364           esempio il proxy:</p>
1365           <pre class="literal-block">
1366 Acquire::http::Proxy "http://10.10.208.254:3128";
1367 </pre>
1368
1369           <p>Si tenga conto che se si imposta un proxy per apt sul
1370           proprio portatile e tornati a casa propria si vuole
1371           scaricare nuovi pacchetti si dovra' disabilitare il
1372           proxy.</p>
1373         </div>
1374       </div>
1375     </div>
1376
1377     <div class="section" id="squid">
1378       <h1><a class="toc-backref" href=
1379       "#id18">2&nbsp;&nbsp;&nbsp;Squid</a></h1>
1380
1381       <p>Squid e' un proxy cache http (ma anche FTP e https)
1382       robusto e strutturato, puo' essere usato sia in reti
1383       relativamente piccole grazie alla semplicita' di
1384       configurazione che in scenari piu' complessi grazie alla
1385       possibilita' di gestirne in modo granulare le risorse. Si
1386       partira' dalle configurazioni piu' semplici per la semplice
1387       <em>condivisione della navigazione</em> internet, per poi
1388       poter configurare la gestione degli accessi, il filtraggio
1389       dei contenuti (Squid e' una applicazione che si muove nel 4'
1390       livello del modello TCP/IP a differenza di un
1391       <em>ipfilter</em> limitato al 2') nel l bilanciamento del
1392       carico tra piu' hosts.</p>
1393
1394       <dl class="docutils">
1395         <dt>Inoltre Squid svolge la funzione di
1396         <em>anonymizer</em>:</dt>
1397
1398         <dd>nasconde i client http alla rete internet: risulta solo
1399         il server proxy nei log dei server web frequentati dagli
1400         utenti di Squid.</dd>
1401       </dl>
1402
1403       <p>Cosa a volte sottovalutata, Squid permette la navigazione
1404       web a una rete basata su <em>indirizzi IP privati</em> (es
1405       una 192.168.0.0/24). E se la rete privata deve <em>solo
1406       navigare</em> in internet, non serve un <em>NAT</em> od
1407       altro, basta il solo Squid. Per altro non servira' neanche un
1408       servizio DNS dato che <em>sara' il solo Squid a risolvere i
1409       nomi di dominio</em> per i suoi client http.</p>
1410
1411       <p>Squid ascolta di default sulla porta 3128, per impostare
1412       <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
1413       "docutils literal"><span class=
1414       "pre">/etc/apt/apt.conf</span></tt></p>
1415       <pre class="literal-block">
1416 Acquire::http::Proxy "10.10.208.254:3128";
1417 </pre>
1418
1419       <p>Per installare Squid si usino i pacchetti:</p>
1420       <pre class="literal-block">
1421 squid3
1422 </pre>
1423
1424       <div class="section" id="configurazione-squid-conf">
1425         <h2><a class="toc-backref" href=
1426         "#id19">2.1&nbsp;&nbsp;&nbsp;Configurazione:
1427         squid.conf</a></h2>
1428
1429         <p>Segue un estratto delle direttive principali viste in
1430         aula presenti nel file di configurazione <tt class=
1431         "docutils literal"><span class=
1432         "pre">/etc/squid3/squid.conf</span></tt> .</p>
1433
1434         <div class="section" id="cache-dir">
1435           <h3><a class="toc-backref" href=
1436           "#id20">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a></h3>
1437
1438           <p>Cache dir serve per impostare dimensione e percorso
1439           della cache creata sul supporto di storaggio. Essendo la
1440           dimensione di default della cache pari a <tt class=
1441           "docutils literal"><span class="pre">~100</span>
1442           <span class="pre">MB</span></tt> e' altamente
1443           consigliabili aumentare questo parametro se si vuole
1444           poter utilizzare la funzione di <em>cache</em> http del
1445           software.</p>
1446
1447           <p>La dimensione ovviamente dipendera' dallo spazio
1448           disponibile, dimensioni tipiche e massime degli oggetti
1449           che si vuole tenere in cache (un solo file <em>.iso e'
1450           circa ``700 MB``, il pacchetto *Openoffice.org</em> circa
1451           <tt class="docutils literal"><span class="pre">150</span>
1452           <span class="pre">MB</span></tt>, un pacchetto debian
1453           circa <tt class="docutils literal"><span class=
1454           "pre">20</span> <span class="pre">MB</span></tt>), numero
1455           dei client.</p>
1456
1457           <p>Si presti poi attenzione alla natura dei dati che
1458           saranno salvati nella cache: sono tutti dati facilmente
1459           sostituibili (gli originali sono <em>on-line</em>) la cui
1460           perdita non arreca danni permanenti. Questo rende la
1461           cache di Squid un possibile candidato ad un <em>RAID
1462           stirpe</em> (livello 0), con vantaggi sia per le
1463           prestazioni (e la velocita' di navigazione e' uno dei
1464           motivi per cui si installa Squid) che per l'utilizzo
1465           estensivo dello spazio di storaggio. Questo fino al
1466           momento in cui per voi non sia piu' importante
1467           <em>garantire la disponibilita' del servizio</em> (se il
1468           RAID stripe dovesse rompersi gli utenti non potrebbero
1469           piu' navigare, cosa che per natura dello stripe e'
1470           maggiormente probabile rispetto ad un <em>mirror</em> o a
1471           un filesytem <em>normale</em>) con un RAID mirror o
1472           5.</p>
1473
1474           <p>Altra considerazione: i dati del proxy vengono slavati
1475           sul filesytem del server dietro richiesta di utenti
1476           esterni talvolta sconosciuti. Come per i servizi di file
1477           sharing o per la posta elettronica non c'e' motivo che il
1478           filesystem su cui sono ospitati questi dati abbia i
1479           privilegi di eseguibilita' o suid (in genere si puo'
1480           anche usare <em>noatime</em> per renderlo piu' veloce,
1481           che si usi o meno il journal dipende dalle preferenze:
1482           affidabilita' oppure prestazioni):</p>
1483
1484           <p>/etc/fstab</p>
1485           <pre class="literal-block">
1486 ...
1487 # Filesystem per Squid http cache
1488 /dev/md3/       /var/spool/squid/       ext3,noexec,nosuid,noatime  0 3
1489 </pre>
1490
1491           <p>Ora possiamo impostare la cache direttamente nel file
1492           <tt class="docutils literal"><span class=
1493           "pre">/etc/squid3/squid.conf</span></tt>:</p>
1494           <pre class="literal-block">
1495 #TAG: cache_dir (riga 1628)
1496 #       Usage:
1497 #
1498 #       cache_dir Type Directory-Name Fs-specific-data [options]
1499 #
1500 #       You can specify multiple cache_dir lines to spread the
1501 #       cache among different disk partitions.
1502 #       ...
1503 #Default:
1504 # cache_dir ufs /var/spool/squid3 100 16 256
1505 cache_dir aufs /var/spool/squid3 300 24 256
1506 #         algoritmo
1507 #              path della cache
1508 #                                dimensione in MB
1509 #                                    directory primo livello
1510 #                                       secondo livello di directory
1511 </pre>
1512
1513           <p>Se si modifica la struttura del filesytem della cache
1514           di Squid, ad esempio variando il numero delle directory,
1515           puo' essere opportuno rigenerare la struttura della cache
1516           di squid (per lo meno se si <em>aumenta</em> il numero
1517           delle directory di primo o secondo livello). Tipicamente
1518           e' consigliabile cancellare (se si ha <em>ridotto</em> il
1519           numero delle directory) la vecchia cache e poi generare
1520           una nuova struttura. Se si vuole <em>star nel sicuro</em>
1521           ogni volta che si modifica l'impostazione delle directory
1522           <em>si svuoti la vecchia cache e se ne generi una
1523           nuova</em></p>
1524           <pre class="literal-block">
1525 # /etc/init.d/squid3 stop
1526 # rm -r /var/spool/squid3/??
1527 # squid3 -z
1528 # /etc/init.d/squid3 start
1529 </pre>
1530         </div>
1531
1532         <div class="section" id="tag-maximum-object-size">
1533           <h3><a class="toc-backref" href=
1534           "#id21">2.1.2&nbsp;&nbsp;&nbsp;TAG:
1535           maximum_object_size</a></h3>
1536
1537           <p>Questa direttiva imposta la dimensione massima degli
1538           oggetti che vengono salvati sul supporto di storaggio,
1539           oggetti di dimensioni superiori saranno comunque
1540           scaricati ma non tenuti in cache.</p>
1541
1542           <p>TAG: maximum_object_size (1760):</p>
1543           <pre class="literal-block">
1544 # TAG: maximum_object_size (1760)
1545 #       Objects larger than this size will NOT be saved on disk.  The
1546 #       value is specified in kilobytes, and the default is 4MB.  If
1547 #       you wish to get a high BYTES hit ratio, you should probably
1548 #       increase this (one 32 MB object hit counts for 3200 10KB
1549 #       hits).  If you wish to increase speed more than your want to
1550 #       save bandwidth you should leave this low.
1551 #
1552 #       NOTE: if using the LFUDA replacement policy you should increase
1553 #       this value to maximize the byte hit rate improvement of LFUDA!
1554 #       See replacement_policy below for a discussion of this policy.
1555 #
1556 #Default:
1557 # maximum_object_size 4096 KB
1558 maximum_object_size 150 MB
1559 </pre>
1560         </div>
1561
1562         <div class="section" id="tag-cache-mem">
1563           <h3><a class="toc-backref" href=
1564           "#id22">2.1.3&nbsp;&nbsp;&nbsp;TAG: cache_mem</a></h3>
1565
1566           <p><em>Cache_mem</em> imposta quanta memoria RAM venga
1567           utilizzata per la cache di Squid. Questo dipendera' dalla
1568           RAM disponibile sul sistema, e da quanta di questa volete
1569           mettere a disposizione di Squid (altri servizi importanti
1570           girano sulla stessa macchina?). Questo parametro
1571           influisce sulle prestazioni e sul degrado dei supporti di
1572           storaggio (sopratutto se magnetici).</p>
1573
1574           <p>Se si stesse pensando di usare dell'hardware
1575           <em>embedded</em> a basse prestazioni / consumo per
1576           realizzare un server gateway / NAT / Squid si tenga
1577           presente che Squid e' relativamente esoso di risorse:
1578           avra' bisogno di una macchina con <tt class=
1579           "docutils literal"><span class="pre">~25MB</span></tt>
1580           (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1581           servire decorosamente una decina di client http su una
1582           rete ethernet 10/100. In questo caso non fate scendere
1583           <tt class="docutils literal"><span class=
1584           "pre">cache_mem</span></tt> sotto i <tt class=
1585           "docutils literal"><span class="pre">2/4</span>
1586           <span class="pre">MB</span></tt> pena un accesso continuo
1587           al supporto di storaggio.</p>
1588
1589           <p>Se invece si disponesse di una macchina dedicata a
1590           Squid con gigabytes di RAM non si esiti a dedicarne buona
1591           parte a <em>cache_mem</em>.</p>
1592
1593           <p>TAG: cache_mem (1566):</p>
1594           <pre class="literal-block">
1595 #       'cache_mem' specifies the ideal amount of memory to be used
1596 #       for:
1597 #               * In-Transit objects
1598 #               * Hot Objects
1599 #               * Negative-Cached objects
1600 #Default:
1601 # cache_mem 8 M
1602 cache_mem 100 M
1603 </pre>
1604         </div>
1605
1606         <div class="section" id="tag-minimum-object-size">
1607           <h3><a class="toc-backref" href=
1608           "#id23">2.1.4&nbsp;&nbsp;&nbsp;TAG:
1609           minimum_object_size</a></h3>
1610
1611           <p>Questo parametro imposta la dimensione minima degli
1612           oggetti salvati nella cache. Settato a <tt class=
1613           "docutils literal"><span class="pre">0</span></tt> o a
1614           valori molto piccoli puo' influire negativamente sulla
1615           deframmentazione del filesytem e consumare un numero
1616           elevato di <em>inode</em> (cosa non piu' importante con
1617           ext4 o altri filesytem).</p>
1618
1619           <p>TAG: minimum_object_size:</p>
1620           <pre class="literal-block">
1621 #  TAG: minimum_object_size     (bytes)
1622 #       Objects smaller than this size will NOT be saved on disk.  The
1623 #       value is specified in kilobytes, and the default is 0 KB, which
1624 #       means there is no minimum.
1625 #
1626 #Default:
1627 # minimum_object_size 0 KB
1628 minimum_object_size 0 KB
1629 </pre>
1630         </div>
1631       </div>
1632
1633       <div class="section" id=
1634       "negoziazione-degli-accesi-al-servizio">
1635         <h2><a class="toc-backref" href=
1636         "#id24">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli accesi al
1637         servizio</a></h2>
1638
1639         <p>Squid e' uno di quei servizi soggetto a problemi di tipo
1640         <em>open relay</em> , si deve quindi limitare la rete che
1641         puo' accedere al servizio.</p>
1642
1643         <dl class="docutils">
1644           <dt>Open Relay:</dt>
1645
1646           <dd>Un servizio a cui possono accedere tutti
1647           indiscriminatamente. La cosa puo' andare bene per servizi
1648           come i server web, che aspirano per loro natura al
1649           maggior numero possibile di utenti, ma non a servizi come
1650           i proxy http oppure ai server di posta elettronica (che
1651           permetterebbero l'invio di SPAM).</dd>
1652         </dl>
1653
1654         <p>Generalmente non volete che il vostro proxy http venga
1655         usato da persone sconosciute le quali sostanzialmente
1656         <em>navigherebbero sotto l'identita' del vostro proxy</em>
1657         (probabilmente per visionare materiali che non vorrebbero
1658         fossero ricondotti direttamente a loro, per motivi che sta
1659         a voi prendere in considerazione) consumando traffico e
1660         banda della vostra connessione a internet. Tenere Squid in
1661         modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1662         modo per essere inseriti in una <em>black list</em>.</p>
1663
1664         <p>Per poter limitare gli accessi a Squid dal punto di
1665         vista dell'applicazione (quarto livello TCP/IP) si
1666         identifichera' inizialmente l'entita' <em>rete locale</em>
1667         (es: <tt class="docutils literal"><span class=
1668         "pre">localnet</span></tt>) con una ACL di tipo
1669         <em>src</em> (indirizzi IP sorgenti) indicando la
1670         <em>classe / range di IP</em> della nostra rete.</p>
1671
1672         <blockquote>
1673           Dopodiche l'accesso (<tt class=
1674           "docutils literal"><span class=
1675           "pre">http_access</span></tt>) si concedera'
1676           (<em>allow</em>) a questa entita' (es: <tt class=
1677           "docutils literal"><span class=
1678           "pre">localnet</span></tt>) negando chiunque altro.
1679         </blockquote>
1680
1681         <p>Per maggiori dettagli sulla sintassi utilizzabile per
1682         esprimere i range di IP: <a class="reference external"
1683         href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1684         http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1685
1686         <div class="section" id="acl-e-http-access">
1687           <h3><a class="toc-backref" href=
1688           "#id25">2.2.1&nbsp;&nbsp;&nbsp;ACL e http access</a></h3>
1689
1690           <p>Si proceda a creare una <tt class=
1691           "docutils literal"><span class="pre">ACL</span></tt> di
1692           tipo <tt class="docutils literal"><span class=
1693           "pre">src</span></tt> per identificare la nostra rete
1694           locale, poi si abiliti l'accesso a questa con la
1695           direttiva <tt class="docutils literal"><span class=
1696           "pre">http_access</span></tt>. Tutto quanto non e'
1697           espressamente autorizzato viene poi negato da un
1698           <tt class="docutils literal"><span class=
1699           "pre">http_access</span> <span class="pre">deny</span>
1700           <span class="pre">all</span></tt> finale.</p>
1701           <pre class="literal-block">
1702 #  TAG: acl
1703 #       Defining an Access List
1704 #
1705 #       Every access list definition must begin with an aclname and acltype,
1706 #       followed by either type-specific arguments or a quoted filename that
1707 #       they are read from.
1708 #       ...
1709 #       ***** ACL TYPES AVAILABLE *****
1710 #
1711 #       acl aclname src ip-address/netmask ...          # clients IP address
1712 # riga 588
1713
1714 # Example rule allowing access from your local networks.
1715 # Adapt to list your (internal) IP networks from where browsing
1716 # should be allowed
1717 #acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
1718 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1719 #acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
1720 #
1721 acl localnet src 10.10.208.0/24
1722
1723 # Riga 606
1724 #  TAG: http_access
1725 #       Allowing or Denying access based on defined access lists
1726 #
1727 #       Access to the HTTP port:
1728 #       http_access allow|deny [!]aclname ...
1729 #
1730 #       NOTE on default values:
1731 #
1732 #       If there are no "access" lines present, the default is to deny
1733 #       the request.
1734
1735 # Riga 643
1736 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1737
1738 # Example rule allowing access from your local networks.
1739 # Adapt localnet in the ACL section to list your (internal) IP networks
1740 # from where browsing should be allowed
1741 #http_access allow localnet
1742 http_access allow localnet
1743 </pre>
1744         </div>
1745       </div>
1746
1747       <div class="section" id="testare-squid">
1748         <h2><a class="toc-backref" href=
1749         "#id26">2.3&nbsp;&nbsp;&nbsp;Testare Squid</a></h2>
1750
1751         <p>Configurato squid e' fondamentale testarne il corretto
1752         funzionamento per assicurarsi di non aver creato un
1753         <em>open-relay</em>. Per fare dei test significativi serve
1754         utilizzare degli host remoti: ci si connetta via ssh a
1755         questi per poi utilizzare <tt class=
1756         "docutils literal"><span class="pre">wget</span></tt> da
1757         riga di comando.</p>
1758
1759         <div class="section" id="client-wgetrc">
1760           <h3><a class="toc-backref" href=
1761           "#id27">2.3.1&nbsp;&nbsp;&nbsp;Client: ~/.wgetrc</a></h3>
1762
1763           <p>Nel file <tt class="docutils literal"><span class=
1764           "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
1765           un file nascosto) si puo' impostare il proxy per wget. Si
1766           utilizzi l'indirizzo IP del server che si vuole testare,
1767           e si seguano i log <tt class=
1768           "docutils literal"><span class=
1769           "pre">/var/log/squid3/access.log</span></tt> sul
1770           server.</p>
1771
1772           <p>Da notare che la prova va' fatta su una macchina della
1773           rete che si vuole testare, non da <em>localhost</em>. Per
1774           altro se si utilizzasse <em>direttamente</em> <tt class=
1775           "docutils literal"><span class=
1776           "pre">localhost</span></tt> non si testerebbe la
1777           <em>ACL</em> predisposta, dato che si si rientrerebbe
1778           nella ACL (pre-configurata di default) <tt class=
1779           "docutils literal"><span class=
1780           "pre">localhost</span></tt>.</p>
1781
1782           <dl class="docutils">
1783             <dt>.wgetrc</dt>
1784
1785             <dd>http_proxy=10.10.208.178:3128</dd>
1786           </dl>
1787
1788           <p>Si proceda a scaricare dal client scelto con un
1789           wget:</p>
1790           <pre class="literal-block">
1791 wget http://www.google.it
1792 </pre>
1793         </div>
1794
1795         <div class="section" id="server-access-log">
1796           <h3><a class="toc-backref" href=
1797           "#id28">2.3.2&nbsp;&nbsp;&nbsp;Server:
1798           access.log</a></h3>
1799
1800           <p>Si puo' controllare il corretto funzionamento del
1801           server seguendo i log di accesso a Squid:</p>
1802           <pre class="literal-block">
1803 # tail -f /var/log/squid3/access.log
1804 </pre>
1805
1806           <p>In oltre e' possibile configurare diversi
1807           <em>analizzatori di log</em> come <tt class=
1808           "docutils literal"><span class=
1809           "pre">Webalizer</span></tt> per studiare i log di
1810           Squid.</p>
1811         </div>
1812       </div>
1813     </div>
1814
1815     <div class="section" id="apache">
1816       <h1><a class="toc-backref" href=
1817       "#id29">3&nbsp;&nbsp;&nbsp;Apache</a></h1>
1818
1819       <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
1820       dato alla piattaforma server Web modulare piu' diffusa (ma
1821       anche al gruppo di lavoro open source che ha creato,
1822       sviluppato e aggiornato il software server), in grado di
1823       operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1824
1825       <p>Un server web e' un processo, e per estensione il computer
1826       su cui e' in esecuzione, che si occupa di fornire, su
1827       richiesta del browser, una pagina web (spesso scritta in
1828       HTML). Le informazioni inviate dal server web viaggiano in
1829       rete trasportate dal protocollo HTTP. L'insieme di server web
1830       dÃ&nbsp; vita al World Wide Web, uno dei servizi piu'
1831       utilizzati di Internet.</p>
1832
1833       <div class="section" id="pacchetti-da-installare">
1834         <h2><a class="toc-backref" href=
1835         "#id30">3.1&nbsp;&nbsp;&nbsp;Pacchetti da
1836         installare::</a></h2>
1837
1838         <blockquote>
1839           apache2 apache2-doc
1840         </blockquote>
1841
1842         <p>Con la release 2.0 di Apache viene automaticamente resa
1843         disponibile anche la versione SSL (Secure Socket Layer,
1844         connessioni criptate ) del web server.</p>
1845       </div>
1846
1847       <div class="section" id="configurazione-di-apache">
1848         <h2><a class="toc-backref" href=
1849         "#id31">3.2&nbsp;&nbsp;&nbsp;Configurazione di
1850         Apache</a></h2>
1851
1852         <p>I file di configurazione di apache si trovano nella
1853         cartella: <tt class="docutils literal"><span class=
1854         "pre">/etc/apache2</span></tt> e sono strutturati come
1855         descritto nel file <tt class=
1856         "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
1857         . Sostanzialmente lo schema e' il seguente:</p>
1858
1859         <dl class="docutils">
1860           <dt>apache2.conf</dt>
1861
1862           <dd>
1863             <p class="first">File di configurazione principale del
1864             servizio.</p>
1865
1866             <p class="last">httpd.conf e' il vecchio file di
1867             configurazione di Apache1, presente per motivi di
1868             retrocompatibilita' e' generalmente vuoto.</p>
1869           </dd>
1870
1871           <dt>ports.conf</dt>
1872
1873           <dd>In questo file vengono specificate le porte sulle
1874           quali resta in ascolto il server web. Si noti che
1875           utilizzando dei virtual hosts generalmente viene
1876           specificata per questi la porta su cui ascoltare nel file
1877           di configurazione del virtual host, ad es: <tt class=
1878           "docutils literal"><span class=
1879           "pre">&lt;VirtualHost</span> <span class=
1880           "pre">*:80&gt;</span></tt></dd>
1881
1882           <dt>sites-available</dt>
1883
1884           <dd>In questa cartella vengono raccolti i file di
1885           configurazione dei virtual host disponibili.</dd>
1886
1887           <dt>sites-enabled</dt>
1888
1889           <dd>In questa cartella sono contenuti dei link simbolici
1890           ai files in ../sites-available : se il link e' presente
1891           in questa cartella il virtual host e' abilitato.</dd>
1892
1893           <dt>mods-available</dt>
1894
1895           <dd>Stesso metodo per i moduli: in questa cartella ci
1896           sono i moduli veri e propri che verranno poi abilitati
1897           grazie all'esistenza di link simbolici nella cartella
1898           mods-enabled .</dd>
1899
1900           <dt>mods-enabled</dt>
1901
1902           <dd>Moduli abilitati, effettivamente caricati.</dd>
1903         </dl>
1904       </div>
1905
1906       <div class="section" id="apache-conf">
1907         <h2><a class="toc-backref" href=
1908         "#id32">3.3&nbsp;&nbsp;&nbsp;apache.conf</a></h2>
1909
1910         <p>File di configurazione del servizio Apache, contiene le
1911         impostazioni generiche (ad esempio utilizzo della RAM e
1912         risorse di sistema) dell'intero servizio. Nella
1913         configurazione di default per Debian non viene definito un
1914         vero e proprio sito di default ma solo dei virtual
1915         hosts.</p>
1916
1917         <p>Guardiamo alcune direttive interessanti:</p>
1918
1919         <dl class="docutils">
1920           <dt>Timeout</dt>
1921
1922           <dd>Numero di secondi da aspettare prima di chiudere la
1923           connessione con il client. Questo parametro serve a
1924           liberare le risorse di sistema nel caso che un client,
1925           magari a causa di una connessione particolarmente lenta o
1926           instabili, tenga attivo indefinitamente un processo di
1927           apache.</dd>
1928
1929           <dt>KeepAlive</dt>
1930
1931           <dd>L'estensione keep-alive (http 1.0) congiuntamente
1932           alle connessioni persistenti (http 1.1) permettono al
1933           server di rispondere a piu' richieste dei client mediante
1934           la stessa connessione. Il protocollo http per sua natura
1935           e' senza stato (<em>stateless</em> ), quindi ogni risorsa
1936           richiesta (per pagine web si pensi ad esempio alle
1937           immagini) dal client necessita di una connessione
1938           autonoma. Keep-alive permette di ottimizzare la
1939           connessione anche fino al 50% a seconda delle situazioni
1940           e contenuti.</dd>
1941
1942           <dt>Server-Pool Size Regulation</dt>
1943
1944           <dd>Questi parametri (StartServers, MinSpareServers, ecc.
1945           Tutti spiegati nel manuale di apache) servono per
1946           attribuire le risorse di sistema disponibili al server
1947           Apache. Tenere questi parametri bassi serve a limitare il
1948           rischio di Denial of Service per il server, nel caso
1949           offra altri servizi. I settagli di default sono come
1950           sempre abbastanza conservativi, se si conta di usare il
1951           proprio Apache per servire un sito web con molti
1952           visitatori sara' necessario aumentare sensibilmente le
1953           impostazioni di base.</dd>
1954
1955           <dt>AccessFileName</dt>
1956
1957           <dd>Il nome del file che viene onorato per modificare le
1958           impostazioni per una singola directory, legato alla
1959           direttiva AllowOverride .</dd>
1960         </dl>
1961       </div>
1962
1963       <div class="section" id="installazione-di-php">
1964         <h2><a class="toc-backref" href=
1965         "#id33">3.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a></h2>
1966
1967         <p>Pacchetti da installare: <tt class=
1968         "docutils literal"><span class="pre">php5</span>
1969         <span class="pre">php-pear</span></tt></p>
1970
1971         <div class="section" id="test-del-modulo-php">
1972           <h3><a class="toc-backref" href=
1973           "#id34">3.4.1&nbsp;&nbsp;&nbsp;Test del modulo
1974           php</a></h3>
1975
1976           <p>Creare nella cartella <tt class=
1977           "docutils literal"><span class="pre">/var/www</span></tt>
1978           (o altra cartella visibile) un file con estensione *.php
1979           (es <tt class="docutils literal"><span class=
1980           "pre">/var/www/info.php</span></tt> contenete codice php
1981           eseguibile dall'interprete, ad es:</p>
1982           <pre class="literal-block">
1983 &lt;?php phpinfo() ; ?&gt;
1984 </pre>
1985
1986           <p>Questa funzione di php generera' la tipica pagina con
1987           le impostazioni attuali per PHP. Richiamando la pagina
1988           (es: <tt class="docutils literal"><span class=
1989           "pre">http://localhost/info.php</span></tt> ) verra'
1990           generata dall'interprete PHP la pagina HTML e resa
1991           disponibile tramite Apache ai client HTTP, a prova del
1992           corretto funzionamento del modulo di PHP e della sua
1993           integrazione con il server web Apache. In caso contrario
1994           se il client http proporra' di scaricare la pagina invece
1995           che visualizzarla nel browser: non funziona l'interprete
1996           di php o sono mal configurati i MIME-type. prima di tutto
1997           assicurarsi di aver fatto ripartire Apache.</p>
1998         </div>
1999
2000         <div class="section" id=
2001         "installazione-del-supporto-per-mysql">
2002           <h3><a class="toc-backref" href=
2003           "#id35">3.4.2&nbsp;&nbsp;&nbsp;Installazione del supporto
2004           per Mysql</a></h3>
2005
2006           <p>Installare i pacchetti:</p>
2007           <pre class="literal-block">
2008 php5-mysql phpmyadmin
2009 </pre>
2010
2011           <p>Controllare tramite la pagina php.info che sia
2012           abilitato il supporto per Mysql (ripartito Apache,
2013           ricaricare la pagina e cercare con CTRL+f <tt class=
2014           "docutils literal"><span class=
2015           "pre">mysql</span></tt>).</p>
2016         </div>
2017
2018         <div class="section" id="phpmyadmin">
2019           <h3><a class="toc-backref" href=
2020           "#id36">3.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></h3>
2021
2022           <p>L'interfaccia web Phpmyadmin non richiede
2023           necessariamente la presenza di un database Mysql locale,
2024           puo' infatti essere utilizzata per gestire database
2025           remoti (il suo file di configurazione: <tt class=
2026           "docutils literal"><span class=
2027           "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
2028           caso si voglia installare localmente Mysql si utilizzi il
2029           pacchetto <tt class="docutils literal"><span class=
2030           "pre">mysql-server</span></tt> .</p>
2031
2032           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2033           <tt class="docutils literal"><span class=
2034           "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
2035           non fosse controllare che sia incluso il file <tt class=
2036           "docutils literal"><span class=
2037           "pre">/etc/phpmyadmin/apache.conf</span></tt> in
2038           <tt class="docutils literal"><span class=
2039           "pre">/etc/apache2/conf.d/</span></tt> .</p>
2040         </div>
2041
2042         <div class="section" id=
2043         "installazione-del-supporto-per-postgresql">
2044           <h3><a class="toc-backref" href=
2045           "#id37">3.4.4&nbsp;&nbsp;&nbsp;Installazione del supporto
2046           per Postgresql</a></h3>
2047
2048           <p>Installare i pacchetti:</p>
2049           <pre class="literal-block">
2050 php5-pgsql phppgadmin
2051 </pre>
2052
2053           <p>Controllare tramite la pagina php.info che sia
2054           abilitato il supporto per PostgreSQL (ripartito Apache,
2055           ricaricare la pagina e cercare con CTRL+f <tt class=
2056           "docutils literal"><span class=
2057           "pre">pgsql</span></tt>).</p>
2058         </div>
2059
2060         <div class="section" id="phppgadmin">
2061           <h3><a class="toc-backref" href=
2062           "#id38">3.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></h3>
2063
2064           <p>L'interfaccia web Phppgadmin per il database server
2065           PostgreSQL non richiede necessariamente la presenza di un
2066           database locale, puo' infatti essere utilizzata per
2067           gestire database remoti (il suo file di configurazione:
2068           <tt class="docutils literal"><span class=
2069           "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
2070           caso si voglia installare localmente Mysql si utilizzi il
2071           pacchetto <tt class="docutils literal"><span class=
2072           "pre">postgresql</span></tt> .</p>
2073
2074           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2075           <tt class="docutils literal"><span class=
2076           "pre">http://localhost/phppgadmin/</span></tt>, se cosi
2077           non fosse controllare che sia incluso il file <tt class=
2078           "docutils literal"><span class=
2079           "pre">/etc/phppgadmin/apache.conf</span></tt> in
2080           <tt class="docutils literal"><span class=
2081           "pre">/etc/apache2/conf.d/</span></tt> .</p>
2082         </div>
2083       </div>
2084
2085       <div class="section" id="virtual-hosts">
2086         <h2><a class="toc-backref" href=
2087         "#id39">3.5&nbsp;&nbsp;&nbsp;Virtual hosts</a></h2>
2088
2089         <blockquote>
2090           <ul class="simple">
2091             <li><a class="reference external" href=
2092             "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
2093
2094             <li><a class="reference external" href=
2095             "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
2096             http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
2097           </ul>
2098         </blockquote>
2099
2100         <p>I virtual host permettono di avere piu' siti internet
2101         disponibili tramite lo stesso server web, eventualmente
2102         mappati su un solo indirizzo IP. Sono generalmente di due
2103         tipi:</p>
2104
2105         <blockquote>
2106           <ul class="simple">
2107             <li>Basati su <em>indirizzi IP</em>. Se si ha la
2108             possibilita' di avere piu' indirizzi IP dedicati per i
2109             diversi siti che si vuole servire. ES: <tt class=
2110             "docutils literal"><span class=
2111             "pre">&lt;VirtualHost</span> <span class=
2112             "pre">192.168.0.2:80&gt;</span></tt> . Soluzione
2113             dispendiosa, si tende ad usarla solo se servono
2114             certificati di sicurezza (SSL ) dedicati per ogni
2115             sito.</li>
2116
2117             <li>Basati su <em>nomi di dominio</em> che puntano allo
2118             stesso IP. Soluzione piu' economica e diffusa che si
2119             basa sulle funzionalita' di http 1.1 .</li>
2120           </ul>
2121         </blockquote>
2122
2123         <p>Prenderemo in esame la gestione di virtual hosts basati
2124         su nomi di dominio.</p>
2125
2126         <div class="section" id="gestione-dns">
2127           <h3><a class="toc-backref" href=
2128           "#id40">3.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></h3>
2129
2130           <p>Prima di tutto per poter impostare i virtual hosts
2131           dovete avere un server DNS che risolva i vostri nomi di
2132           dominio sull'indirizzo IP del server. Questo si puo'
2133           ottenere in vari modi, ad es:</p>
2134
2135           <blockquote>
2136             <dl class="docutils">
2137               <dt><em>Bind</em> (DNS server)</dt>
2138
2139               <dd>Impostare i campi A nelle proprie zone gestite
2140               dal server DNS Bind. Ad es: <tt class=
2141               "docutils literal"><span class=
2142               "pre">papo</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2143               <span class=
2144               "pre">A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2145               <span class="pre">212.22.136.248</span></tt></dd>
2146
2147               <dt><em>Servizio DNS dinamico on line</em>.</dt>
2148
2149               <dd>Utilizzare un servizio come ad es: <a class=
2150               "reference external" href=
2151               "https://www.dyndns.com/">https://www.dyndns.com/</a>
2152               per mappare nomi di dominio sul proprio indirizzo IP,
2153               comodo ad esempio se si dispone di un indirizzo IP
2154               pubblico (anche se dinamico) per la propria
2155               connessione ad internet.</dd>
2156
2157               <dt><em>Dnsmasq</em> (DNS server)</dt>
2158
2159               <dd>Utilizzabile al livello della rete locale per
2160               fare dei test, utilizzando direttive come: <tt class=
2161               "docutils literal"><span class=
2162               "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2163
2164               <dt><tt class="docutils literal"><span class=
2165               "pre">/etc/hosts</span></tt></dt>
2166
2167               <dd>Per prove sul proprio sistema potete impostare i
2168               nomi dei vostri virtual server nel file /etc/hosts
2169               .</dd>
2170             </dl>
2171           </blockquote>
2172
2173           <p>Query DNS con <tt class=
2174           "docutils literal"><span class="pre">dig</span></tt>:</p>
2175           <pre class="literal-block">
2176 # dig 177.piffa.net
2177
2178 ; &lt;&lt;&gt;&gt; DiG 9.5.1-P1 &lt;&lt;&gt;&gt; 177.piffa.net
2179 ;; global options:  printcmd
2180 ;; Got answer:
2181 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 38036
2182 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
2183
2184 ;; QUESTION SECTION:
2185 ;177.piffa.net.                 IN      A
2186
2187 ;; ANSWER SECTION:
2188 177.piffa.net.          0       IN      A       10.10.208.177
2189 </pre>
2190
2191           <p>La parte interessante e' l'<em>ANSWER SECTION</em>:
2192           <tt class="docutils literal"><span class=
2193           "pre">177.piffa.net.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2194           <span class=
2195           "pre">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2196           <span class="pre">IN</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2197           <span class=
2198           "pre">A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2199           <span class="pre">10.10.208.177</span></tt> . Il nome di
2200           dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2201           , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2202           dovra' essere disponibile un virtual host che corrisponde
2203           al nome <tt class="docutils literal"><span class=
2204           "pre">177.piffa.net</span></tt> (<tt class=
2205           "docutils literal"><span class=
2206           "pre">ServerName</span></tt>) .</p>
2207         </div>
2208
2209         <div class="section" id="virtual-host">
2210           <h3><a class="toc-backref" href=
2211           "#id41">3.5.2&nbsp;&nbsp;&nbsp;Virtual host</a></h3>
2212
2213           <p>Esempio di Virtual host:</p>
2214           <pre class="literal-block">
2215 &lt;VirtualHost *:80 &gt;
2216     ServerName 177.piffa.net
2217     DocumentRoot /var/www/177.piffa.net/
2218     ServerAdmin webmaster@177.piffa.net
2219 &lt;/VirtualHost&gt;
2220 </pre>
2221
2222           <ol class="arabic simple">
2223             <li><tt class="docutils literal"><span class=
2224             "pre">&lt;VirtualHost</span> <span class=
2225             "pre">\*:80</span> <span class="pre">&gt;</span></tt>
2226             La prima riga indica l'inizio della stanza relativa al
2227             nostro virtual host, che ascoltera' su qualunque
2228             indirizzo IP (nel caso il server abbia piu' indirizzi
2229             dai quali e' raggiungibile) sulla porta <tt class=
2230             "docutils literal"><span class=
2231             "pre">80</span></tt>.</li>
2232
2233             <li><tt class="docutils literal"><span class=
2234             "pre">Server/name</span></tt> precisa quale sara' il
2235             nome di dominio a cui verra' associato questo sito
2236             rispetto ad altri eventualmente presenti sullo stesso
2237             server web.</li>
2238
2239             <li><tt class="docutils literal"><span class=
2240             "pre">DocumentRoot</span></tt> : il path della
2241             directory che contiene le pagine del sito.</li>
2242
2243             <li><tt class="docutils literal"><span class=
2244             "pre">ServerAdmin</span></tt>: l'indirizzo del
2245             webmaster, in modo da poterlo contattare in caso di
2246             problemi col sito.</li>
2247
2248             <li><tt class="docutils literal"><span class=
2249             "pre">&lt;/VirtualHost&gt;</span></tt>: <em>tag</em> di
2250             chiusura della stanza di definizione del virtual
2251             host.</li>
2252           </ol>
2253
2254           <p>Quelle che abbiamo appena visto sono le direttive
2255           essenziali per definire un sito virtuale, potrebbe essere
2256           utile aggiungere altre:</p>
2257
2258           <ul>
2259             <li>
2260               <dl class="first docutils">
2261                 <dt><tt class="docutils literal"><span class=
2262                 "pre">ErrorLog</span> <span class=
2263                 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2264
2265                 <dd>
2266                   <p class="first last">Log degli errori separato
2267                   dai restanti siti web ospitati dal server.</p>
2268                 </dd>
2269               </dl>
2270             </li>
2271
2272             <li>
2273               <dl class="first docutils">
2274                 <dt><tt class="docutils literal"><span class=
2275                 "pre">LogLevel</span> <span class=
2276                 "pre">warn</span></tt></dt>
2277
2278                 <dd>
2279                   <p class="first last">Livello di importanza degli
2280                   eventi loggati= warning <em>attenzione</em> .</p>
2281                 </dd>
2282               </dl>
2283             </li>
2284
2285             <li>
2286               <dl class="first docutils">
2287                 <dt><tt class="docutils literal"><span class=
2288                 "pre">CustomLog</span> <span class=
2289                 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2290                 <span class="pre">combined</span></tt></dt>
2291
2292                 <dd>
2293                   <p class="first last">Log di accesso separati
2294                   dagli altri siti, utile anche qua per statistiche
2295                   di accesso per il solo sito virtuale.</p>
2296                 </dd>
2297               </dl>
2298             </li>
2299           </ul>
2300
2301           <p>Potrebbe essere utile modificare le impostazioni di
2302           una intera directory, ad esempio per abilitare
2303           l'<tt class="docutils literal"><span class=
2304           "pre">AuthConfig</span></tt>:</p>
2305           <pre class="literal-block">
2306 &lt;Directory "/var/www/miosito.net/privata"&gt;
2307         AllowOverride AuthConfig
2308         Options ExecCGI Indexes MultiViews FollowSymLinks
2309         Order allow,deny
2310         Allow from all
2311 &lt;/Directory&gt;
2312 </pre>
2313
2314           <p><tt class="docutils literal"><span class=
2315           "pre">AllowOverride</span> <span class=
2316           "pre">AuthConfig</span></tt> ora vale per l'intera
2317           directory, come le altre opzioni.</p>
2318         </div>
2319       </div>
2320
2321       <div class="section" id="negoziazione-accessi">
2322         <h2><a class="toc-backref" href=
2323         "#id42">3.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a></h2>
2324
2325         <p>Tipicamente quando si installa un server web il proprio
2326         desiderio e' di dare accesso ai materiali disponibili al
2327         maggior numero di visitatori possibile. Talvolta pero' puo'
2328         essere utile poter limitare questi accessi, ad esempio per
2329         escludere un <em>bot</em> indesiderato che scansiona
2330         ininterrottamente le nostre pagine o per creare una
2331         <em>Area Riservata</em> i cui materiali non devono essere
2332         disponibile a tutti.</p>
2333
2334         <div class="section" id="limiti-su-base-ip">
2335           <h3><a class="toc-backref" href=
2336           "#id43">3.6.1&nbsp;&nbsp;&nbsp;Limiti su base IP</a></h3>
2337
2338           <p>La forma piu' semplice di restrizione degli accessi e'
2339           su base degli indirizzi IP dei client: tipicamente i siti
2340           web sono settati per dare accesso a chiunque:</p>
2341           <pre class="literal-block">
2342 &lt;VirtualHost *:80 &gt;
2343        # ...
2344        &lt;Directory "/var/www/177.piffa.net"&gt;
2345          Order allow,deny
2346          Allow from all
2347        &lt;/Directory&gt;
2348 &lt;/VirtualHost&gt;
2349 </pre>
2350
2351           <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2352           questo modo:</p>
2353           <pre class="literal-block">
2354 &lt;VirtualHost *:80 &gt;
2355        # ...
2356        &lt;Directory "/var/www/177.piffa.net"&gt;
2357          Order allow,deny
2358          Allow from all
2359          Deny from 192.168.0.1
2360        &lt;/Directory&gt;
2361 &lt;/VirtualHost&gt;
2362 </pre>
2363
2364           <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2365           materiali dell'intero sito virtuale, oppure potremmo
2366           lavorare su una sola directory:</p>
2367           <pre class="literal-block">
2368 &lt;Directory "/var/www/miosito.net/limitata"&gt;
2369        Order allow,deny
2370        Allow from 192.168.0.0./24
2371        Deny from all
2372 &lt;/Directory&gt;
2373 </pre>
2374
2375           <p>In questo modo solo la classe IP <tt class=
2376           "docutils literal"><span class=
2377           "pre">192.168.0.0/24</span></tt> potra' accedere alla
2378           directory <tt class="docutils literal"><span class=
2379           "pre">/limitata</span></tt> Si tenga pero' conto che e'
2380           relativamente facile per un malintenzionato cambiare il
2381           proprio indirizzo IP, oppure collegarsi da un altra zona.
2382           Meno facile e' accedere ad una classe privata trovandosi
2383           all'esterno di questa, ma ci sono comunque soluzioni piu'
2384           eleganti.</p>
2385         </div>
2386       </div>
2387
2388       <div class="section" id="user-authentication">
2389         <h2><a class="toc-backref" href=
2390         "#id44">3.7&nbsp;&nbsp;&nbsp;User Authentication</a></h2>
2391
2392         <p>Si puo' negoziare gli accessi ad un area del sito
2393         tramite autenticazione basata su <em>nome utente /
2394         password</em>. Questo puo' venire utile per creare una area
2395         download <em>intranet</em>, alla quale possano accedere
2396         solo gli utenti previsti a prescindere dagli indirizzi IP
2397         dei loro client.</p>
2398
2399         <p>Tramite il modulo di Apache <em>mod-auth</em> e'
2400         possibile implementare questo paradigma, per quanto
2401         esistano soluzioni piu' granulari e sofisticate, che
2402         richiedono pero' l'implementazione di interpreti di
2403         linguaggi di programmazione, criptazione delle passwords,
2404         gestione degli utenti ed eventualmente delle sessioni. Mod
2405         auth non richiede l'installazione di niente di tutto
2406         questo.</p>
2407
2408         <p>link: <a class="reference external" href=
2409         "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2410
2411         <div class="section" id="definire-la-cartella">
2412           <h3><a class="toc-backref" href=
2413           "#id45">3.7.1&nbsp;&nbsp;&nbsp;Definire la
2414           cartella</a></h3>
2415
2416           <p>Decidere quale sara' il <em>path</em> della cartella
2417           da sottoporre ad autenticazione:</p>
2418
2419           <blockquote>
2420             <tt class="docutils literal"><span class=
2421             "pre">mkdir</span> <span class=
2422             "pre">/var/www/177.piffa.net/privata</span></tt>
2423           </blockquote>
2424         </div>
2425
2426         <div class="section" id=
2427         "creazione-del-database-delle-passwords">
2428           <h3><a class="toc-backref" href=
2429           "#id46">3.7.2&nbsp;&nbsp;&nbsp;Creazione del database
2430           delle passwords</a></h3>
2431
2432           <p>Un modo semplice per gestire una database di
2433           <em>user-id / passwords</em> e' utilizzare l'utility
2434           <tt class="docutils literal"><span class=
2435           "pre">htpasswd</span></tt> di Apache. Questa crea un file
2436           in cui un <em>crypt</em> delle password viene associato
2437           agli utenti.</p>
2438
2439           <p>Si dovra' decidere dove tenere questo file, la cosa
2440           importante e' che non sia visibile nel sito web: non deve
2441           essere scaricabile dai visitatori. Deve essere cioe'
2442           all'esterno della <em>DocumentRoot</em>: un buon posto
2443           potrebbe essere la /home dell'utente.</p>
2444
2445           <p>Creiamo (con il <em>flag</em> <tt class=
2446           "docutils literal"><span class="pre">-c</span></tt>) il
2447           file <tt class="docutils literal"><span class=
2448           "pre">/home/utente/passwords</span></tt> con l'utente
2449           <tt class="docutils literal"><span class=
2450           "pre">luca</span></tt>:</p>
2451           <pre class="literal-block">
2452 htpasswd -c /home/utente/passwords luca
2453 </pre>
2454
2455           <p><tt class="docutils literal"><span class=
2456           "pre">htpasswd</span></tt> ci chiedera' la password da
2457           associare all'utente <tt class=
2458           "docutils literal"><span class="pre">luca</span></tt>.
2459           Per successive modifiche della password o aggiunta di
2460           nuovi utenti non sara' necessario usare il flag
2461           <tt class="docutils literal"><span class=
2462           "pre">-c</span></tt>.</p>
2463         </div>
2464
2465         <div class="section" id="id3">
2466           <h3><a class="toc-backref" href=
2467           "#id47">3.7.3&nbsp;&nbsp;&nbsp;Configurazione di
2468           Apache</a></h3>
2469
2470           <p>Ora possiamo passare alla configurazione vera e
2471           propria di Apache, ma con una novita': andremo a inserire
2472           la voce in un <tt class="docutils literal"><span class=
2473           "pre">.htaccess</span></tt> invece che modificare
2474           (tramite una direttiva <tt class=
2475           "docutils literal"><span class=
2476           "pre">&lt;Directory&gt;</span></tt> ) il file di
2477           impostazione del virtual-host.</p>
2478
2479           <p>Questo per motivi pratici: solo l'utente <em>root</em>
2480           puo' modificare l'impostazione del virtual host nel file
2481           <tt class="docutils literal"><span class=
2482           "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2483           ma spesso il motivo per cui creiamo i virtual hosts e'
2484           ospitare i siti di altri utenti, che possono solo
2485           pubblicare (generalmente tramite <em>FTP</em>) i loro
2486           documenti nella loro <em>DocumentRoot</em>, senza poter
2487           quindi modificare in alcun modo la configurazione del
2488           virtual host.</p>
2489
2490           <p>Dando agli utenti la possibilita' di modificare
2491           (<em>AllowOverride</em>) autonomamente alcuni parametri
2492           (in questo caso solo l'<em>AuthConfig</em>) relativi al
2493           funzionamento del loro spazio web ci togliera'
2494           l'incombenza di dover intervenire continuamente sui vari
2495           virtual host.</p>
2496
2497           <p>Abilitiamo l'AllowOverride nel file di configurazione
2498           del virtual host per la sola directory <tt class=
2499           "docutils literal"><span class=
2500           "pre">privata</span></tt>:</p>
2501           <pre class="literal-block">
2502 &lt;VirtualHost *:80 &gt;
2503     ServerName 177.piffa.net
2504     DocumentRoot /var/www/177.piffa.net/
2505     ServerAdmin webmaster@177.piffa.net
2506     &lt;Directory "/var/www/177.piffa.net/privata"&gt;
2507         AllowOverride AuthConfig
2508     &lt;/Directory&gt;
2509 &lt;/VirtualHost&gt;
2510 </pre>
2511
2512           <p>Per rendere il cambiamento effettivo sara' necessario
2513           fare un restart / reload di Apache.</p>
2514
2515           <p>Ora sara' possibile, anche per l'utente di sistema,
2516           creare un file <tt class="docutils literal"><span class=
2517           "pre">.htaccess</span></tt> che sara' onorato da
2518           Apache.</p>
2519
2520           <p>/var/www/177.piffa.net/privata/.htaccess</p>
2521           <pre class="literal-block">
2522 # Messaggio visualizzato al prompt per l'autenticazione
2523 AuthName "Area privata soggetta ad autentizazione"
2524 # tipo di autenticazione da usarsi
2525 AuthType Basic
2526 # File precedentemente generato con htpasswd
2527 AuthUserFile  /home/utente/passwords
2528
2529 # Negoziazione degli accessi
2530 # valid users permette l'accesso agli utenti specificati
2531 # nel file generato da htpasswd
2532 require valid-user
2533 </pre>
2534
2535           <p>Si noti che non e' necessario fare ripartire Apache
2536           per onorare i cambiamenti (un utente non avrebbe la
2537           possibilita' di farlo!).</p>
2538
2539           <dl class="docutils">
2540             <dt>Oltre a <tt class="docutils literal"><span class=
2541             "pre">valid-users</span></tt> si potrebbe scegliere di
2542             usare la formula <tt class=
2543             "docutils literal"><span class="pre">users</span></tt>
2544             che permette di elencare esplicitamente gli
2545             utenti::</dt>
2546
2547             <dd>require user pippo pluto</dd>
2548           </dl>
2549
2550           <p>L'utente <em>paperino</em> che fosse comunque presente
2551           nel file generato da htpasswd non potrebbe accedere alla
2552           risorsa.</p>
2553
2554           <dl class="docutils">
2555             <dt>Nel caso ci fossero molti utenti conviene gestirli
2556             tramite <em>gruppi</em>::</dt>
2557
2558             <dd>require group staff studenti</dd>
2559           </dl>
2560
2561           <p>I gruppi vengono definiti in un file in modo simile a
2562           <tt class="docutils literal"><span class=
2563           "pre">/etc/groups</span></tt> per gli utenti di
2564           sistema:</p>
2565           <pre class="literal-block">
2566 staff:andrea sara
2567 studenti: lucap federico luca
2568 </pre>
2569
2570           <p>da richiamare tramite la direttiva <tt class=
2571           "docutils literal"><span class=
2572           "pre">AuthGroupFile</span></tt>.</p>
2573         </div>
2574       </div>
2575
2576       <div class="section" id="cavets">
2577         <h2><a class="toc-backref" href=
2578         "#id48">3.8&nbsp;&nbsp;&nbsp;Cavets</a></h2>
2579
2580         <p>Problemi di cache:</p>
2581
2582         <blockquote>
2583           <ul class="simple">
2584             <li>Proxy: nei settaggi del browser specificare di non
2585             utilizzare un server proxy http per il sito web locale
2586             (o per gli altri che si stanno monitorando). Se si ha
2587             il controllo del proxy server: stopparlo, ricaricare la
2588             pagina (operazione che fallira'), far ripartire il
2589             proxy, ricaricare la pagina.</li>
2590
2591             <li>Provare con un altro browser, o cercare di svuotare
2592             la cache chiudere/riaprire l'applicativo. Provare a
2593             fermare Apache, ricaricare la pagina (operazione che
2594             fallira'), far ripartire Apache, ricaricare la
2595             pagina.</li>
2596           </ul>
2597         </blockquote>
2598       </div>
2599     </div>
2600
2601     <div class="section" id="domain-name-system">
2602       <h1><a class="toc-backref" href=
2603       "#id49">4&nbsp;&nbsp;&nbsp;Domain Name System</a></h1>
2604
2605       <p>Domain Name System (spesso indicato con DNS) e' un
2606       servizio utilizzato per la risoluzione di nomi di host in
2607       indirizzi IP e viceversa. Il servizio e' realizzato tramite
2608       un sistema <strong>gerarchico</strong> (quindi una struttura
2609       ad albero, simile ai <em>file system</em>)
2610       <strong>distribuito</strong> (ogni server DNS facente parte
2611       del sistema puo' mantenere solo una parte delle informazioni,
2612       ad esempio per la sua sola <em>zona</em>), costituito dai
2613       server DNS.</p>
2614
2615       <p>I DNS sono un servizio <em>core</em> (fondamentale) per la
2616       rete internet come per qualunque rete locale. Ad esempio
2617       durante la navigazione web un client vorrebbe vedere
2618       l'<em>URL</em> <tt class="docutils literal"><span class=
2619       "pre">http://ww.piffa.net/</span></tt>, quindi per potersi
2620       connettere via <em>http</em> al server web deve prima
2621       ottenere l'indirizzo IP del <em>server http</em>
2622       corrispondente a <em>www.piffa.net</em>. Se il DNS gli
2623       fornisce un IP sbagliato l'utente non potra' raggiungere il
2624       servizio: di fatto e' come se il serve http fosse spento.</p>
2625
2626       <p>Stessa cosa vale per gli altri servizi, come la posta
2627       elettronica, ssh, ecc. : <em>prima si deve effettuare una
2628       query DNS</em>.</p>
2629
2630       <p>Potrebbe verificarsi uno scenario simile a questo: i
2631       vostri server per i siti web funzionano correttamente come i
2632       siti ospitati, stessa cosa per i vostri server di posta, IMAP
2633       e POP3, e tutto il resto. Ma se poi un errore nella
2634       configurazione del DNS non rende raggiungibile l'intero
2635       <em>sito</em>: per l'utente finale e' come se nulla
2636       funzionasse.</p>
2637
2638       <p>Infatti quando si parla di un intervento della Polizia
2639       Postale per l'<em>oscuramento</em> di un sito dal punto di
2640       vista pratico questo si traduce generalmente nella rimozione
2641       o mistificazione del record DNS relativo a quel dominio (la
2642       <em>PP</em> ha facolta' di chiedere un simile intervento ai
2643       principali provider internet che forniscono connettivita'
2644       agli utenti italiani, oltre che poter agire direttamente sul
2645       NIC italiano per i domini della TLD <em>.it</em>)</p>
2646
2647       <p>L'operazione di convertire un nome in un indirizzo e'
2648       detta risoluzione DNS, convertire un indirizzo IP in nome e'
2649       detto risoluzione inversa.</p>
2650
2651       <blockquote>
2652         Un <em>Registar</em> e' un operatore che ha la facolta'
2653         (accreditamento da parte dell ICANN) di registrare i domini
2654         di secondo livello per gli utenti finali, dietro compenso
2655         di una modica cifra (una decina di euro) che vale come
2656         contributo su base annuale per il mantenimento
2657         dell'infrastruttura.
2658       </blockquote>
2659
2660       <div class="section" id="risoluzione-inversa">
2661         <h2><a class="toc-backref" href=
2662         "#id50">4.1&nbsp;&nbsp;&nbsp;Risoluzione Inversa</a></h2>
2663
2664         <p>Per la risoluzione inversa sono invece i provider di
2665         connettivita' a gestire i DNS: se volete impostare il
2666         <em>PTR</em> associato al vostro indirizzo IP dovete
2667         contattare il vostro provider (tipo <em>telecom</em> per
2668         una connessione ADSL) e <em>non il Registar del vostro
2669         dominio</em>.</p>
2670
2671         <p>Ad esempio all'IP <tt class=
2672         "docutils literal"><span class=
2673         "pre">212.22.136.248</span></tt> era associato un PTR
2674         <tt class="docutils literal"><span class=
2675         "pre">bender.piffa.net</span></tt>, corrispondente al
2676         record <tt class="docutils literal"><span class=
2677         "pre">212</span></tt> facente parte della zona <tt class=
2678         "docutils literal"><span class=
2679         "pre">136.22.212.in-addr.arpa</span></tt> gestito dal
2680         provider Tiscali/Nextra proprietario della classe C
2681         <tt class="docutils literal"><span class=
2682         "pre">212.22.136.0</span></tt>. Se avete un solo IP
2683         conviene lasciare al fornitore la gestire del PTR, ma se
2684         avete a disposizione un'itera classe potete chiedere sempre
2685         al vostro provider che vi <em>deleghi</em> la gestione
2686         della zona tramite i vostri DNS.</p>
2687
2688         <p>Per alcuni servizi, ad esempio la spedizione della posta
2689         elettronica, e' richiedeiesto che venga impostata
2690         correttamente l'associazione tra il PTR dell'indirizzo IP
2691         usato dal server di postai e il record A RR al quale questo
2692         punta( RFC1912 sezione 2.1, paragrafo 2).</p>
2693
2694         <p>Si veda:</p>
2695
2696         <ul class="simple">
2697           <li><a class="reference external" href=
2698           "http://www.faqs.org/rfcs/rfc1912.html">http://www.faqs.org/rfcs/rfc1912.html</a>
2699           2.1 Inconsistent, Missing, or Bad Data</li>
2700
2701           <li><a class="reference external" href=
2702           "http://www.ietf.org/rfc/rfc2505.txt">http://www.ietf.org/rfc/rfc2505.txt</a></li>
2703         </ul>
2704       </div>
2705
2706       <div class="section" id="nomi-di-dominio">
2707         <h2><a class="toc-backref" href=
2708         "#id51">4.2&nbsp;&nbsp;&nbsp;Nomi di dominio</a></h2>
2709
2710         <p>Un nome a dominio e' costituito da una serie di stringhe
2711         separate da punti, ad esempio bender.piffa.net. I nomi di
2712         dominio si leggono da destra verso sinistra: <em>TLD</em> o
2713         dominio di primo livello <tt class=
2714         "docutils literal"><span class="pre">net</span></tt>,
2715         secondo livello <tt class="docutils literal"><span class=
2716         "pre">piffa</span></tt>, terzo livello <tt class=
2717         "docutils literal"><span class="pre">bender</span></tt>. Il
2718         dominio di primo livello (o TLD, Top Level Domain,
2719         pronunciato <em>tilde</em> in Italia), per esempio .net o
2720         .it sono limitati e decisi direttamente dall'ente
2721         assegnatario ICANN ( Internet Corporation for Assigned
2722         Names and Numbers).</p>
2723
2724         <p>L'utente finale potra' chiedere l'assegnazione (pagando
2725         un contributo al Register preferito per il mantenimento
2726         delle spese dell'infrastruttura) di un dominio di
2727         <em>secondo</em> livello (es <tt class=
2728         "docutils literal"><span class="pre">piffa</span></tt>) di
2729         una delle varie TLD disponibili (noi italiani diciamo
2730         <em>tildi</em>), sempre che non sia gia' stato assegnato a
2731         qualcun altro.</p>
2732
2733         <p>Ottenuto il secondo livello sara' l'utente a gestirlo:
2734         potra' in stanziare domini di terzo livello (es <tt class=
2735         "docutils literal"><span class="pre">bender</span></tt>) e
2736         anche oltre (es www.andrea.bender.piffa.net). Tali records
2737         saranno mantenuti dall'utente, sotto la sua responsbilita':
2738         se il proprio server DNS non fosse raggiungibile o
2739         risultasse mal configurato gli utenti non potrebbero
2740         risolvere / raggiungere i siti di loro interesse.</p>
2741
2742         <p>Tipicamente si ha almeno un server DNS secondario per
2743         garantire la sussistenza del servizio in caso di guasto del
2744         DNS principale. I secondari <em>replicano</em> i dati
2745         presenti nei DNS principali.</p>
2746       </div>
2747
2748       <div class="section" id="tipologie-di-record">
2749         <h2><a class="toc-backref" href=
2750         "#id52">4.3&nbsp;&nbsp;&nbsp;Tipologie di record</a></h2>
2751
2752         <p>Ad un nome DNS possono corrispondere diversi tipi di
2753         informazioni. Per questo motivo, esistono diversi tipi di
2754         record DNS. Ogni voce del database DNS deve essere
2755         caratterizzata da un tipo. I principali tipi sono:</p>
2756
2757         <ul class="simple">
2758           <li>Record A - Indica la corrispondenza tra un nome ed
2759           uno (o piu') indirizzi IP (per la precisione indirizzi
2760           IPv4, ovvero la versione attualmente in uso).</li>
2761
2762           <li>Record MX - (Mail eXchange) indica a quali server
2763           debba essere inviata la posta elettronica per un certo
2764           dominio.</li>
2765
2766           <li>Record CNAME - Sono usati per creare un alias, ovvero
2767           per fare in modo che lo stesso calcolatore sia noto con
2768           piu' nomi. Uno degli utilizzi di questo tipo di record
2769           consiste nell'attribuire ad un host che offre piu'
2770           servizi un nome per ciascun servizio. In questo modo, i
2771           servizi possono poi essere spostati su altri host senza
2772           dover riconfigurare i client, ma modificando solo il
2773           DNS.</li>
2774
2775           <li>Record PTR - Il DNS viene utilizzato anche per
2776           realizzare la risoluzione inversa, ovvero per far
2777           corrispondere ad un indirizzo IP il corrispondente nome a
2778           dominio. Per questo si usano i record di tipo "PTR" (e
2779           una apposita zona dello spazio dei nomi
2780           in-addr.arpa).</li>
2781
2782           <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
2783
2784           <li>Record SRV - Identificano il server per un
2785           determinato servizio all'interno di un dominio. Possono
2786           essere considerati una generalizzazione dei record
2787           MX.</li>
2788
2789           <li>Record TXT - Associano campi di testo arbitrari ad un
2790           dominio. Questi campi possono contenere una descrizione
2791           informativa oppure essere utilizzati per realizzare
2792           servizi.</li>
2793         </ul>
2794
2795         <p>Vi sono anche tipi di record "di servizio", necessari al
2796         funzionamento del database distribuito: * Record NS -
2797         Utilizzato per indicare quali siano i server DNS
2798         autoritativi per un certo dominio, ovvero per delegarne la
2799         gestione. * Record SOA - (Start of Authority) usato per la
2800         gestione delle zone DNS.</p>
2801       </div>
2802
2803       <div class="section" id="utilizzo">
2804         <h2><a class="toc-backref" href=
2805         "#id53">4.4&nbsp;&nbsp;&nbsp;Utilizzo</a></h2>
2806
2807         <p>I computer vengono identificati in rete grazie agli
2808         indirizzi <em>IP</em>, questi pero' non sono comodi per gli
2809         utenti come riferimento per i vari server. Ad esempio
2810         sarebbe scomodo riferirsi al motore di ricerca Goggle con
2811         uno dei suoi IP: <tt class="docutils literal"><span class=
2812         "pre">74.125.43.104</span></tt>, e' preferibile usare il
2813         nome di dominio <em>www.google.com</em>:</p>
2814         <pre class="literal-block">
2815 ping -c 1 www.google.com
2816 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
2817 </pre>
2818       </div>
2819
2820       <div class="section" id="risoluzione-dei-nomi-di-dominio">
2821         <h2><a class="toc-backref" href=
2822         "#id54">4.5&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
2823         dominio</a></h2>
2824
2825         <p>Ci sono vari strumenti per interrogare i server DNS e
2826         ottenere l'indirizzo IP associato al nome di dominio che ci
2827         interessa:</p>
2828         <pre class="literal-block">
2829 $ host www.piffa.net
2830 www.piffa.net is an alias for piffa.net.
2831 piffa.net has address 65.98.21.97
2832 piffa.net mail is handled by 10 65.98.21.97
2833
2834
2835 $ nslookup www.piffa.net
2836 Server:         192.168.0.10
2837 Address:        192.168.0.10#53
2838
2839 Non-authoritative answer:
2840 www.piffa.net   canonical name = piffa.net.
2841 Name:   piffa.net
2842 Address: 65.98.21.97
2843
2844
2845 $ dig www.piffa.net
2846
2847 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.piffa.net
2848 ;; global options: +cmd
2849 ;; Got answer:
2850 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 47751
2851 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
2852
2853 ;; QUESTION SECTION:
2854 ;www.piffa.net.                 IN      A
2855
2856 ;; ANSWER SECTION:
2857 www.piffa.net.          3489    IN      CNAME   piffa.net.
2858 piffa.net.              3489    IN      A       65.98.21.97
2859
2860 ;; AUTHORITY SECTION:
2861 piffa.net.              86289   IN      NS      ns2.mydomain.com.
2862 piffa.net.              86289   IN      NS      ns1.mydomain.com.
2863 piffa.net.              86289   IN      NS      ns4.mydomain.com.
2864 piffa.net.              86289   IN      NS      ns3.mydomain.com.
2865
2866 ;; ADDITIONAL SECTION:
2867 ns1.mydomain.com.       96208   IN      A       64.94.117.193
2868 ns2.mydomain.com.       96208   IN      A       64.94.31.67
2869 ns3.mydomain.com.       96208   IN      A       66.150.161.137
2870 ns4.mydomain.com.       96208   IN      A       63.251.83.74
2871
2872 ;; Query time: 1 msec
2873 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2874 ;; WHEN: Sun May 10 21:23:11 2009
2875 ;; MSG SIZE  rcvd: 209
2876 </pre>
2877
2878         <p>Lo strumento piu' esaustivo e' <tt class=
2879         "docutils literal"><span class="pre">dig</span></tt>,
2880         installabile con il pacchetto <tt class=
2881         "docutils literal"><span class="pre">dnsutils</span></tt>
2882         .</p>
2883       </div>
2884
2885       <div class="section" id="dig">
2886         <h2><a class="toc-backref" href=
2887         "#id55">4.6&nbsp;&nbsp;&nbsp;Dig</a></h2>
2888
2889         <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
2890         "docutils literal"><span class="pre">dig</span></tt> per
2891         l'interrogazione dei DNS Server:</p>
2892         <pre class="literal-block">
2893 $ dig www.google.it
2894
2895 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.google.it
2896 ;; global options: +cmd
2897 ;; Got answer:
2898 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18816
2899 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
2900
2901 ;; QUESTION SECTION:
2902 ;www.google.it.                 IN      A
2903
2904 ;; ANSWER SECTION:
2905 www.google.it.          250683  IN      CNAME   www.google.com.
2906 www.google.com.         334819  IN      CNAME   www.l.google.com.
2907 www.l.google.com.       186     IN      A       74.125.43.103
2908 www.l.google.com.       186     IN      A       74.125.43.104
2909 www.l.google.com.       186     IN      A       74.125.43.147
2910 www.l.google.com.       186     IN      A       74.125.43.99
2911
2912 ;; AUTHORITY SECTION:
2913 l.google.com.           80856   IN      NS      f.l.google.com.
2914 l.google.com.           80856   IN      NS      d.l.google.com.
2915 l.google.com.           80856   IN      NS      b.l.google.com.
2916 l.google.com.           80856   IN      NS      c.l.google.com.
2917 l.google.com.           80856   IN      NS      a.l.google.com.
2918 l.google.com.           80856   IN      NS      e.l.google.com.
2919 l.google.com.           80856   IN      NS      g.l.google.com.
2920
2921 ;; Query time: 1 msec
2922 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2923 ;; WHEN: Sun May 10 21:34:47 2009
2924 ;; MSG SIZE  rcvd: 255
2925 </pre>
2926
2927         <dl class="docutils">
2928           <dt>$ dig</dt>
2929
2930           <dd>(senza opzioni o oggetti) Fornisce l'elenco dei
2931           <em>root server</em> utilizzati. I root server sono i
2932           server che mantengono le informazioni sui domini di primo
2933           livello (TLD) e sono quindi il punto di partenza per
2934           scorrere nella directory dei DNS per recuperare le
2935           informazioni (tipicamente un campo <tt class=
2936           "docutils literal"><span class="pre">A</span></tt> per un
2937           indirizzo IP) che ci servono per raggiungere un certo
2938           servizio.</dd>
2939         </dl>
2940
2941         <p>$ dig</p>
2942
2943         <blockquote>
2944           <p>...</p>
2945
2946           <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
2947           . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
2948           B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
2949           192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
2950           F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
2951           192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
2952           K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
2953           192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
2954           J.ROOT-SERVERS.NET. . 192032 IN NS
2955           D.ROOT-SERVERS.NET.</p>
2956
2957           <p>...</p>
2958         </blockquote>
2959
2960         <dl class="docutils">
2961           <dt>dig @nome_dns</dt>
2962
2963           <dd>Permette di fare una query ad un server dns
2964           particolare. Es: <tt class=
2965           "docutils literal"><span class="pre">dig</span>
2966           <span class="pre">@151.99.25.1</span> <span class=
2967           "pre">www.google.it</span></tt></dd>
2968
2969           <dt>dig MX www.google.it</dt>
2970
2971           <dd>Chiede un campo in particolare, in questo caso il
2972           campo MX</dd>
2973
2974           <dt>dig ANY www.google.it</dt>
2975
2976           <dd>Chiede tutti i campi, non solo i campi
2977           <em>a</em></dd>
2978
2979           <dt>dig -x 74.125.43.104</dt>
2980
2981           <dd>Effettua una richiesta inversa: dall'IP al PTR
2982           associato.</dd>
2983         </dl>
2984       </div>
2985
2986       <div class="section" id="resolv-conf">
2987         <h2><a class="toc-backref" href=
2988         "#id56">4.7&nbsp;&nbsp;&nbsp;resolv.conf</a></h2>
2989
2990         <p>Il file <tt class="docutils literal"><span class=
2991         "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
2992         sul dns usato dal sistema, in genere anche altre
2993         applicazioni che devono effettuare query DNS leggono
2994         resolv.conf per conoscere l'ubicazione del DNS.</p>
2995
2996         <p>/etc/resolv.conf:</p>
2997
2998         <blockquote>
2999           <ul class="simple">
3000             <li><tt class="docutils literal"><span class=
3001             "pre">nameserver</span></tt>: indica il nameserver da
3002             utilizzare, indicato con l'indirizzo IP.</li>
3003
3004             <li><tt class="docutils literal"><span class=
3005             "pre">domain</span></tt>: indica il nome di dominio
3006             della rete attuale, vedi voce successiva.</li>
3007
3008             <li><tt class="docutils literal"><span class=
3009             "pre">search</span></tt>: nome di dominio usato dalla
3010             rete sul quale cercare gli hosts. Ad esempio se
3011             impostato su <tt class="docutils literal"><span class=
3012             "pre">piffa.net</span></tt> pingando l' host <tt class=
3013             "docutils literal"><span class="pre">bender</span></tt>
3014             viene automaticamente fatto un tentativo di ricerca per
3015             <tt class="docutils literal"><span class=
3016             "pre">bender.piffa.net</span></tt>.</li>
3017           </ul>
3018         </blockquote>
3019
3020         <p>Si veda anche la pagina man di resolv.conf.</p>
3021
3022         <p>Attenzione: se si usa un client DHCP o simile questo
3023         file potra' essere riscritto automaticamente in base a
3024         quanto ottenuto dal DHCP. Si veda la documentazione del
3025         pacchetto <tt class="docutils literal"><span class=
3026         "pre">resolvconf</span></tt>.</p>
3027       </div>
3028
3029       <div class="section" id="etc-hosts">
3030         <h2><a class="toc-backref" href=
3031         "#id57">4.8&nbsp;&nbsp;&nbsp;/etc/hosts</a></h2>
3032
3033         <p>Tabella statica per l'associazione tra IP e nomi di
3034         dominio:</p>
3035         <pre class="literal-block">
3036 # cat /etc/hosts
3037 </pre>
3038
3039         <blockquote>
3040           127.0.0.1 localhost.localdomain localhost 10.10.208.162
3041           daniela daniela.piffa.net 10.10.208.254 mirror
3042           mirror.piffa.net 91.191.138.15 thepiratebay.org
3043           192.168.0.11 chrome chrome.mydomain.com
3044         </blockquote>
3045
3046         <p>Il contenuto e' un associazione tra un <em>IP</em> e
3047         stringhe di testo (anche piu' di una es: <tt class=
3048         "docutils literal"><span class="pre">mirror</span></tt> e
3049         <tt class="docutils literal"><span class=
3050         "pre">mirror.piffa.net</span></tt>), un record per
3051         riga.</p>
3052
3053         <p>Il problema e' la gestione di questo file: quando gli
3054         host cambiano IP si devono aggiornare i records, e poi c'e'
3055         il problema di distribuire questo file tra i vari hosts
3056         della propria LAN. Un metodo semplice per distribuire
3057         questo file e' utilizzare <tt class=
3058         "docutils literal"><span class="pre">Dnsmasq</span></tt>:
3059         questo infatti legge e onora il file <tt class=
3060         "docutils literal"><span class="pre">hosts</span></tt>
3061         locale e lo <em>distribuisce</em> ai clients.</p>
3062
3063         <p>Modificare (riconducendola a un IP interno, cosi'
3064         annullandola) la risoluzione di un nome di dominio e' un
3065         modo drastico e funzionale per <em>annullarlo</em>
3066         rendendolo indisponibile alla propria rete locale, ad
3067         esempio aggiungere al file <tt class=
3068         "docutils literal"><span class=
3069         "pre">/etc/hosts</span></tt>:</p>
3070         <pre class="literal-block">
3071 127.0.0.1       www.facebook.com
3072 </pre>
3073
3074         <p>Impedira' agli utenti della LAN di raggiungere
3075         <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
3076       </div>
3077
3078       <div class="section" id="hostname">
3079         <h2><a class="toc-backref" href=
3080         "#id58">4.9&nbsp;&nbsp;&nbsp;Hostname</a></h2>
3081
3082         <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
3083         (e modificabile) con il comando <tt class=
3084         "docutils literal"><span class=
3085         "pre">hostname</span></tt>.</p>
3086
3087         <p>Per modificare in modo permanente il nome del computer
3088         si modifichi il contenuto del file <tt class=
3089         "docutils literal"><span class=
3090         "pre">/etc/hostname</span></tt>.</p>
3091
3092         <p>Tipicamente si vuole mantenere una correlazione tra il
3093         nome dell' host, o meglio la stringa con cui il server si
3094         qualifica all'esterno, e il <em>PTR</em> dell'IP. Nel caso
3095         di <em>servizi virtuali</em> ci sara' un <em>nome
3096         server</em> principale associato al <em>PTR</em> condiviso.
3097         Non e' automatico che un servizio, ad esempio un server di
3098         posta, si qualifichi leggendo il contenuto di questo file e
3099         magari aggiungendo come suffisso il dominio di cui fa parte
3100         l' host: a volte questo parametro puo' essere specificato
3101         nel file di configurazione del servizio:</p>
3102         <pre class="literal-block">
3103 * Squid: ``visible_hostname``
3104
3105 * Postfix: ``myhostname``
3106 </pre>
3107
3108         <p>Si faccia attenzione a non aver un hostname puramente
3109         numerico: ad es. <tt class="docutils literal"><span class=
3110         "pre">161</span></tt>. E' opportuno che il nome sia
3111         comunque un alfanumerico: <tt class=
3112         "docutils literal"><span class="pre">host-161</span></tt> o
3113         simile.</p>
3114       </div>
3115     </div>
3116
3117     <div class="section" id="dnsmasq">
3118       <h1><a class="toc-backref" href=
3119       "#id59">5&nbsp;&nbsp;&nbsp;DNSmasq</a></h1>
3120
3121       <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
3122       forwarder e un server DHCP caratterizzato dalla facilita' di
3123       configurazione, leggerezza e dalla possibilita' di modificare
3124       rapidamente i record DNS serviti alla rete. Puo' essere anche
3125       utilizzato come <cite>server per il boot da rete
3126       &lt;http://www.debian-administration.org/articles/478&gt;_</cite>
3127       .</p>
3128
3129       <p>Dnsmasq e' un interessante alternativa all'uso del server
3130       DNS Bind in modalita' cache-only (non autoritativo)
3131       accompagnato dal server DHCPd. I vantaggi sono:</p>
3132
3133       <ul class="simple">
3134         <li>Leggerezza: puo' essere fatto girare su una macchina
3135         relativamente debole in caso di bisogno.</li>
3136
3137         <li>Rapidita' di configurazione (in particolare per servire
3138         dei record A / MX alla rete, modificando al volo i valori
3139         originali ospitati sul server DNS pubblico).</li>
3140
3141         <li>Ben integrato con connessioni PPP : e' ingrado di
3142         rilevare i cambiamenti dei dns suggeriti e impostarli come
3143         forwarders (utile se dovete rendere disponibile rapidamente
3144         una connessione a internet a una rete in difficolta').</li>
3145       </ul>
3146
3147       <p>Tutto cio' rende Dnsmasq una soluzione valida in
3148       particolare quando si deve intervenire in una rete
3149       pre-esistente in cui il server principale e' in crisi: si
3150       potra' utilizzare Dnsmasq anche su una macchina piu' debole e
3151       <em>mascherare</em> i servizi al momento non disponibili.
3152       Molto utile per scopi didattici, sopratutto per testare
3153       server SMTP impostando al volo i campi MX per nomi di dominio
3154       fittizi.</p>
3155
3156       <div class="section" id="configurazione">
3157         <h2><a class="toc-backref" href=
3158         "#id60">5.1&nbsp;&nbsp;&nbsp;Configurazione</a></h2>
3159
3160         <p>Vediamo alcune direttive di basi del file di
3161         configurazione <tt class="docutils literal"><span class=
3162         "pre">/etc/dnsmasq.conf</span></tt> utili per la
3163         configurazione sia del DNS cache che per il DHCP
3164         server:</p>
3165
3166         <dl class="docutils">
3167           <dt>domain-needed</dt>
3168
3169           <dd>Non inoltrare query ai server DNS esterni per nomi
3170           semplici (es andrea, portatile, pippo) che verranno
3171           risolti solo in locale o causeranno direttamente una
3172           risposta <em>not found</em> .</dd>
3173
3174           <dt>bogus-priv</dt>
3175
3176           <dd>Simile alla voce precedente ma per i reverse
3177           look-up.</dd>
3178
3179           <dt>domain</dt>
3180
3181           <dd>Nome di dominio della rete da passare ai client.</dd>
3182
3183           <dt>expand_hosts</dt>
3184
3185           <dd>Aggiunge il <tt class="docutils literal"><span class=
3186           "pre">nome</span> <span class="pre">host</span></tt> (
3187           <tt class="docutils literal"><span class=
3188           "pre">/etc/hostname</span></tt>) dei client al nome di
3189           dominio per qualificarli in rete, senza bisogno di dover
3190           comporre a un elenco statico di record nel file
3191           <tt class="docutils literal"><span class=
3192           "pre">/etc/hosts</span></tt> o nello stesso file di
3193           configurazione di dnsmasq. Es: se un vostro client si
3194           chiama <tt class="docutils literal"><span class=
3195           "pre">chrome</span></tt> e il vostro dominio <tt class=
3196           "docutils literal"><span class=
3197           "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
3198           il campo <em>A</em> per il dominio <tt class=
3199           "docutils literal"><span class=
3200           "pre">chrome.piffa.net</span></tt> diretto all'ip che
3201           verra' assegnato al client.</dd>
3202         </dl>
3203       </div>
3204
3205       <div class="section" id="dhcp">
3206         <h2><a class="toc-backref" href=
3207         "#id61">5.2&nbsp;&nbsp;&nbsp;DHCP</a></h2>
3208
3209         <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
3210         al file di configurazione il <em>range</em> degli IP che si
3211         vuole assegnare ai client con il <em>lease time</em> (tempo
3212         di rilascio: quanto a lungo saranno validi gli IP
3213         assegnati) espresso in ore.</p>
3214
3215         <p>Si faccia <em>attenzione</em>: in una rete puo' essere
3216         presente <strong>un solo server DHCP</strong>, o per meglio
3217         dire qualunque server DHCP ascolta sul broadcast <tt class=
3218         "docutils literal"><span class=
3219         "pre">255.255.255.255</span></tt> e potrebbe rispondere a
3220         un pacchetto di richiesta DHCP. Quindi non fate partire
3221         inavvertitamente un server DHCP in una rete gia' servita e
3222         <strong>non vi azzardate ad andare in giro con un portatile
3223         con un server DHCP attivo</strong> nelle reti altrui.
3224         Questo vale anche per i laboratori di informatica dei corsi
3225         di reti: non fate partire il vostro server DHCP se siete
3226         collegati alla rete interna!</p>
3227
3228         <p>/etc/dnsmasq.conf (riga 118):</p>
3229         <pre class="literal-block">
3230 dhcp-range=192.168.0.20,192.168.0.50,24h
3231 </pre>
3232       </div>
3233
3234       <div class="section" id="dns-cache">
3235         <h2><a class="toc-backref" href=
3236         "#id62">5.3&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
3237
3238         <p>Aggiungere al file <tt class=
3239         "docutils literal"><span class=
3240         "pre">/etc/resolv.conf</span></tt> il nameserver localhost
3241         in cima alla lista dei <em>nameserver</em> disponibili.
3242         Dnsmasq usera' la propria cache e in caso non abbia
3243         disponibile il <em>record DNS</em> richiesto fara' partire
3244         una query al primo DNS:</p>
3245         <pre class="literal-block">
3246 nameserver      127.0.0.1
3247 </pre>
3248
3249         <p>Questo pero' potrebbe essere problematico se un altro
3250         servizio, ad esempio il DHCP client, riscrive il contenuto
3251         del file <tt class="docutils literal"><span class=
3252         "pre">/etc/resolv.conf</span></tt>. Per superare il
3253         problema si aggiunga (riga 20) al file di configurazione
3254         <tt class="docutils literal"><span class=
3255         "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
3256         <pre class="literal-block">
3257 prepend domain-name-servers 127.0.0.1;
3258 </pre>
3259
3260         <p>Oppure potrebbe essere il nostro <em>PPP client</em>
3261         (per la connessione ADSL) a intervenire sul file <tt class=
3262         "docutils literal"><span class=
3263         "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
3264         <tt class="docutils literal"><span class=
3265         "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
3266         <tt class="docutils literal"><span class=
3267         "pre">usepeerdns</span></tt>. Se la vostra connessione ad
3268         internet e' ADSL raramente dovreste aver bisogno di
3269         cambiare i DNS una volta impostati (a meno che non usiate
3270         un portatile!).</p>
3271       </div>
3272     </div>
3273
3274     <div class="section" id="bind-dns-autoritativo">
3275       <h1><a class="toc-backref" href=
3276       "#id63">6&nbsp;&nbsp;&nbsp;Bind : DNS Autoritativo</a></h1>
3277
3278       <p>Le soluzioni viste possono bastare per la rete locale o
3279       per fare delle prove, ma prima o poi verra' il momento in cui
3280       si e' chiamati a gestire dei domini su internet: lo standard
3281       e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
3282       versione 9.</p>
3283
3284       <p>Installare i pacchetti:</p>
3285       <pre class="literal-block">
3286 bind9
3287 </pre>
3288
3289       <div class="section" id="id4">
3290         <h2><a class="toc-backref" href=
3291         "#id64">6.1&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
3292
3293         <p>Bind appena installato funzionera' come DNS cache: si
3294         faccia un test con un <tt class=
3295         "docutils literal"><span class="pre">dig</span>
3296         <span class="pre">@localhost</span></tt> . Bind a
3297         differenza di Dnsmasq e' autonomo: non ha bisogno di
3298         forwardare (inoltrare) le query a un DNS esterno: queste
3299         verranno risolte direttamente da Bind partendo dai <em>DNS
3300         root servers</em>.</p>
3301
3302         <p>E' comunque possibile impostare dei DNS forwarders,
3303         tipicamente i DNS server forniti dal proprio provider, per
3304         velocizzare le query:</p>
3305
3306         <p>/etc/bind/named.conf.options (riga 13):</p>
3307         <pre class="literal-block">
3308 forwarders {
3309                  10.10.208.254;
3310            };
3311 </pre>
3312
3313         <p>Nel caso si voglia usare Bind solo come server DNS cache
3314         per la propria LAN senza ospitare delle zone DNS pubbliche
3315         sara' il caso di limitare gli accessi al server alla sola
3316         LAN:</p>
3317
3318         <p>/etc/bind/named.conf.options (riga 19):</p>
3319         <pre class="literal-block">
3320 // Se il proprio server ha IP 10.10.208.254
3321 // sulla rete LAN privata:
3322 listen-on { 10.10.208.254; }
3323 </pre>
3324
3325         <p>E non si lasci il server in ascolto su uno degli
3326         eventuali indirizzi IP pubblici.</p>
3327
3328         <p>Se questo non fosse possibile si puo' sempre lavorare su
3329         una <em>acl</em>:</p>
3330
3331         <p>/etc/bind/named.conf</p>
3332         <pre class="literal-block">
3333 acl "localnet" {
3334         10.10.208.0/24 ; 127.0.0.0/8 ;
3335         } ;
3336 </pre>
3337
3338         <p>Per poi aggiungere all'interno della stanza options la
3339         direttiva che abilita' l'entita' <tt class=
3340         "docutils literal"><span class=
3341         "pre">localnet</span></tt>:</p>
3342
3343         <p>/etc/bind/named.conf.options</p>
3344         <pre class="literal-block">
3345 allow-query {"localnet" ;} ;
3346 </pre>
3347       </div>
3348
3349       <div class="section" id="ospitare-una-zona">
3350         <h2><a class="toc-backref" href=
3351         "#id65">6.2&nbsp;&nbsp;&nbsp;Ospitare una zona</a></h2>
3352
3353         <p>Se avete acquistato un nome di dominio e vi serve un
3354         software DNS per gestirlo Bind e' la scelta piu' diffusa.
3355         Ora vedremo come configurare una <em>zona</em> (come
3356         piffa.net) in modo che Bind sia autoritativoper questa,
3357         rispondendo alle query DNS di tutta la rete internet.</p>
3358
3359         <div class="section" id="named-conf-local">
3360           <h3><a class="toc-backref" href=
3361           "#id66">6.2.1&nbsp;&nbsp;&nbsp;named.conf.local</a></h3>
3362
3363           <p>Prima di tutti impostiamo il server bind per gestire
3364           la zona, per non fare confusione e' opportuno inserire le
3365           propie zone DNS nel file <tt class=
3366           "docutils literal"><span class=
3367           "pre">named.conf.local</span></tt> e non in <tt class=
3368           "docutils literal"><span class=
3369           "pre">named.conf</span></tt>.</p>
3370
3371           <p>named.conf.local:</p>
3372           <pre class="literal-block">
3373 /
3374 // Do any local configuration here
3375 //
3376
3377 // Consider adding the 1918 zones here, if they are not used in your
3378 // organization
3379 //include "/etc/bind/zones.rfc1918";
3380
3381 zone "piffa.net" {
3382         type master;
3383         file "/etc/bind/pz/piffa.net";
3384         }
3385 </pre>
3386
3387           <dl class="docutils">
3388             <dt>type master</dt>
3389
3390             <dd>Il nostro server DNS sara' il principale, al quale
3391             poi potremo affiancare dei DNS secondari nel caso
3392             questo non sia disponibile.</dd>
3393
3394             <dt>file "/etc/bind/pz/piffa.net"</dt>
3395
3396             <dd>Dove verranno inserite le informazioni vere e
3397             propie di questa zona.</dd>
3398           </dl>
3399         </div>
3400
3401         <div class="section" id="configurazione-della-zona">
3402           <h3><a class="toc-backref" href=
3403           "#id67">6.2.2&nbsp;&nbsp;&nbsp;Configurazione della
3404           zona</a></h3>
3405
3406           <p>Ora dovremo preparare il file contenente i record DNS
3407           della zona <em>piffa.net</em>, come abbiamo indicato
3408           prima questi saranno contenuti nel file <tt class=
3409           "docutils literal"><span class=
3410           "pre">/etc/bind/pz/piffa.net</span></tt> . Tenere le zone
3411           dentro una sottocartella e' buona abitudine, usare
3412           <tt class="docutils literal"><span class=
3413           "pre">pz</span></tt> per queste e' una vecchia
3414           abitudine.</p>
3415
3416           <p>piffa.net:</p>
3417           <pre class="literal-block">
3418 ; Zona per il dominio di secondo livello piffa.net
3419
3420 $TTL 3D     ; 3 days
3421 @                    IN SOA  ns1.piffa.net. hostmaster.piffa.net. (
3422                                 200905245  ; serial
3423                                 8H         ; refresh (8 hours)
3424                                 2H         ; retry (2 hours)
3425                                 4W         ; expire (4 weeks)
3426                                 1D         ; minimum (1 day)
3427                                 )
3428 ;
3429                         NS      ns1
3430                         NS      ns2
3431                         A       94.23.63.105
3432                         MX      10 smtp
3433                         TXT     "Piffanet main site"
3434 ;
3435 ns1             A       94.23.63.105
3436 ns2             A       65.98.21.97
3437 zoo             A       94.23.63.105
3438 test.piffa.net. A       94.23.63.105
3439 *.piffa.net.    A       94.23.63.105 ; *catch all domain
3440 www             CNAME   zoo
3441 </pre>
3442
3443           <p>All'interno di questo file si possono inserire dei
3444           commenti con il carattere <tt class=
3445           "docutils literal"><span class="pre">;</span></tt>
3446           (punto-e-virgola), si faccia attenzione alla rigida
3447           sintassi: apertura e chiusura delle parentesi tonde nella
3448           parte <tt class="docutils literal"><span class=
3449           "pre">IN</span> <span class="pre">SOA</span></tt>, uso
3450           del <tt class="docutils literal"><span class=
3451           "pre">punto</span></tt> finale per precisare un nome di
3452           dominio specifico (<em>FQDN</em>: Fully-qualified Domain
3453           Name) come <tt class="docutils literal"><span class=
3454           "pre">test.piffa.net.</span></tt> a differenza degli
3455           altri domini di terzo livello come <tt class=
3456           "docutils literal"><span class=
3457           "pre">pop,imap,smtp</span></tt> .</p>
3458
3459           <p>La zona inizia con una direttiva <tt class=
3460           "docutils literal"><span class="pre">$TTL</span>
3461           <span class="pre">3D</span></tt> (RFC 2308) che indica la
3462           durata (in questo caso tre giorni) che ogni record
3463           dovrebbe avrebbe nella cache degli altri serber DNS.
3464           Questo valore dovrebbe essere superiore a un giorno, se
3465           non modificate spesso i valori dei vostri record DNS e'
3466           consigliabile settarlo a 2/3 settimane in modo da
3467           limitare la frequenza delle query al propio server.
3468           Questo parametro puo' essere modificato per singoli
3469           record:</p>
3470           <pre class="literal-block">
3471 $TTL 3D     ; 3 giorni: default se non specificato altrimenti
3472 rapido  5h      IN      A       94.23.63.105 ; usa un TTL di 5 ore
3473 lento   3w      IN      A       94.23.63.105 ; usa un TTL di 3 settimane
3474 normale         IN      A       94.23.63.105 ; usa il TTL di default: 3 giorni
3475 </pre>
3476
3477           <p>Segue poi il nome della zona, indicato con la
3478           <tt class="docutils literal"><span class=
3479           "pre">@</span></tt> per richiamare la zona originale
3480           precisata nel file <tt class=
3481           "docutils literal"><span class=
3482           "pre">named.conf.options</span></tt> . Segue il campo
3483           <tt class="docutils literal"><span class=
3484           "pre">SOA</span></tt>.</p>
3485
3486           <div class="section" id="soa-start-of-authority-record">
3487             <h4><a class="toc-backref" href=
3488             "#id68">6.2.2.1&nbsp;&nbsp;&nbsp;SOA: Start of
3489             Authority Record</a></h4>
3490
3491             <p>Il record SOA puo' comparire solo una volta in una
3492             zona, contiene informazioni relative all'autorita' del
3493             server DNS.</p>
3494
3495             <dl class="docutils">
3496               <dt>ns1.piffa.net. name-server</dt>
3497
3498               <dd>primary master DNS di questo dominio.</dd>
3499
3500               <dt>hostmaster.piffa.net. email-addr</dt>
3501
3502               <dd>email-addr: indirizzo email della persona
3503               responsabile di questa zona, il primo punto viene
3504               tradotto in una <em>chiocciola</em> <tt class=
3505               "docutils literal"><span class="pre">@</span></tt>
3506               dato che questo carattere ha un'altro utilizzo
3507               all'interno di questo file. Il referente della zona
3508               <strong>deve</strong> essere un email valido e
3509               controllato, come consuetudine si usa <tt class=
3510               "docutils literal"><span class=
3511               "pre">hostmaster@dominio.tilde</span></tt> .</dd>
3512
3513               <dt>200905245 serial number</dt>
3514
3515               <dd>Questo valore serve per indicare quando e' stato
3516               modificato questo file di configurazione, secondo il
3517               formato <tt class="docutils literal"><span class=
3518               "pre">yyyymmddss</span></tt>: <tt class=
3519               "docutils literal"><span class="pre">yyyy</span></tt>
3520               = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' =
3521               seriale. Il seriale che deve essere sempre
3522               specificato anche per una cifra, va incrementato di
3523               una unita' nel caso vengano fatte piu' modifiche
3524               <em>nello stesso giorno</em>.</dd>
3525
3526               <dt>8H refresh</dt>
3527
3528               <dd>Indica ai DNS secondari quanto tempo attendere
3529               per cercare di aggiornare i loro dati con il DNS
3530               master.</dd>
3531
3532               <dt>2H retry</dt>
3533
3534               <dd>Intervallo di tempo per il DNS slave (secondario)
3535               da aspettare prima di cercare di ricontattare il
3536               <em>master</em> in caso di problemi col
3537               <em>refresh</em>.</dd>
3538
3539               <dt>4W expire</dt>
3540
3541               <dd>Indica quando i dati dei dns secondarinon sono
3542               piu' autoritativi in caso di impossibilita' degli
3543               <em>slaves</em> di ri-aggiornarsi con il
3544               <em>master</em>. Consigliato un valore di 2/4
3545               settimane.</dd>
3546
3547               <dt>1D minimum</dt>
3548
3549               <dd>Questo valore indicava il TTL fino alla versione
3550               8 di Bind, da Bind 9 e secondo la RFC2308 indica la
3551               durata del <em>negative caching</em>, quanto i
3552               resolvers (ad esempio un server dns cache) puo'
3553               mantenere un record <em>negativo</em> (che non indica
3554               la corrispondenza tra un nome di dominio e un ip, ma
3555               la non esistenza del record). Nell'uso per il
3556               negative caching viene fissato un valore massimo di 3
3557               ore dalla RFC 2308.</dd>
3558             </dl>
3559           </div>
3560
3561           <div class="section" id="altri-campi">
3562             <h4><a class="toc-backref" href=
3563             "#id69">6.2.2.2&nbsp;&nbsp;&nbsp;Altri campi:</a></h4>
3564
3565             <p>All'interno della zona possono essere utilizati vari
3566             tipi di records (RR):</p>
3567
3568             <dl class="docutils">
3569               <dt>TXT</dt>
3570
3571               <dd>Informazioni testuali associate ad un record</dd>
3572
3573               <dt>NS</dt>
3574
3575               <dd>Name Server della zona</dd>
3576
3577               <dt>A</dt>
3578
3579               <dd>Indirizzo ipv4 da associare al record</dd>
3580
3581               <dt>AAA</dt>
3582
3583               <dd>Indirizzo ipv6 da associare al record</dd>
3584
3585               <dt>CNAME</dt>
3586
3587               <dd>Canonical Name: un alias per un host</dd>
3588
3589               <dt>MX</dt>
3590
3591               <dd>Mail Exchanger: server di posta che si occupera'
3592               della posta elettronica per questo dominio.E'
3593               opportuno avere almeno un server di posta di back-up,
3594               per indicare la priorita' di un MX rispettoad un
3595               altro si usa un valore di 2 cifre: il valore piu'
3596               basso indica priorita' piu' bassa. Es: <tt class=
3597               "docutils literal"><span class=
3598               "pre">MX</span>&nbsp;&nbsp;&nbsp; <span class=
3599               "pre">10</span> <span class=
3600               "pre">smtp.piffa.net.</span></tt> per il server SMTP
3601               principale e <tt class=
3602               "docutils literal"><span class="pre">MX</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
3603               <span class="pre">40</span> <span class=
3604               "pre">smtp2.piffa.net</span></tt> per il
3605               secondario.</dd>
3606
3607               <dt>PTR</dt>
3608
3609               <dd>Reverse look-up, usato per la mappatura inversa
3610               di un indirizzo ip a una stringa identificativa
3611               dell'host. Si noti che per poter modificare questi
3612               record si deve avere <em>in gestione</em> la <em>zona
3613               IP</em>, se cosi' non fosse si dovra' chiedere al
3614               propio provider la modifica di questo record per il
3615               propio ip. Links: <a class="reference external" href=
3616               "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
3617             </dl>
3618           </div>
3619         </div>
3620       </div>
3621
3622       <div class="section" id="link-suggeriti">
3623         <h2><a class="toc-backref" href=
3624         "#id70">6.3&nbsp;&nbsp;&nbsp;Link suggeriti:</a></h2>
3625
3626         <ul class="simple">
3627           <li>DNS for Rocket Scientists <a class=
3628           "reference external" href=
3629           "http://www.zytrax.com/books/dns/">http://www.zytrax.com/books/dns/</a></li>
3630
3631           <li>DNS HOWTO <a class="reference external" href=
3632           "http://www.langfeldt.net/DNS-HOWTO/BIND-9/">http://www.langfeldt.net/DNS-HOWTO/BIND-9/</a></li>
3633         </ul>
3634       </div>
3635     </div>
3636
3637     <div class="section" id="samba">
3638       <h1><a class="toc-backref" href=
3639       "#id71">7&nbsp;&nbsp;&nbsp;Samba</a></h1>
3640
3641       <p>Samba e' un progetto libero che fornisce servizi di
3642       condivisione di file e stampanti a client SMB/CIFS.</p>
3643
3644       <p>Samba e' liberamente disponibile, al contrario di altre
3645       implementazioni SMB/CIFS, e permette di ottenere
3646       interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
3647
3648       <p>Samba e' un software che puo' girare su piattaforme che
3649       non siano Microsoft Windows, per esempio, UNIX, Linux, IBM
3650       System 390, OpenVMS e altri sistemi operativi. Samba utilizza
3651       il protocollo TCP/IP utilizzando i servizi offerti sul server
3652       ospite. Quando correttamente configurato, permette di
3653       interagire con client o server Microsoft Windows come se
3654       fosse un file e print server Microsoft agendo da Primary
3655       Domain Controller (PDC) o come Backup Domain Controller, puo'
3656       inoltre prendere parte ad un dominio Active Directory.</p>
3657
3658       <div class="section" id="pacchetti">
3659         <h2><a class="toc-backref" href=
3660         "#id72">7.1&nbsp;&nbsp;&nbsp;Pacchetti</a></h2>
3661
3662         <p>Pacchetti da installare per utilizzare Samba in
3663         modalita' client <a class="footnote-reference" href="#id6"
3664         id="id5" name="id5">[2]</a></p>
3665         <pre class="literal-block">
3666 samba-client
3667 </pre>
3668
3669         <p>Pacchetti da installare per utilizzare Samba in
3670         modalita' server:</p>
3671         <pre class="literal-block">
3672 samba smbfs smbclient
3673 </pre>
3674
3675         <table class="docutils footnote" frame="void" id="id6"
3676         rules="none">
3677           <colgroup>
3678             <col class="label">
3679             <col>
3680           </colgroup>
3681
3682           <tbody valign="top">
3683             <tr>
3684               <td class="label"><a class="fn-backref" href=
3685               "#id5">[2]</a></td>
3686
3687               <td>Anche se nato per i sistemi Windows, Samba puo'
3688               essere usato anche per montare cartelle sotto
3689               GNU/Linux come alternativa a NFS. Per la condivisione
3690               di stampanti sarebbe invece opportuno intervenire
3691               direttamente su <tt class=
3692               "docutils literal"><span class=
3693               "pre">CUPS</span></tt>.</td>
3694             </tr>
3695           </tbody>
3696         </table>
3697
3698         <p>Durante la prima installazione viene chiesto il nome del
3699         gruppo di appartenenza, il default per Windows e'
3700         <tt class="docutils literal"><span class=
3701         "pre">WORKGROUP</span></tt>. In aula usiamo invece
3702         <tt class="docutils literal"><span class=
3703         "pre">208</span></tt> .</p>
3704
3705         <p>Per riconfigurare Samba si usi il comando:</p>
3706         <pre class="literal-block">
3707 dpkg-reconfigure samba-common
3708 </pre>
3709       </div>
3710
3711       <div class="section" id="passwords-e-autenticazione">
3712         <h2><a class="toc-backref" href=
3713         "#id73">7.2&nbsp;&nbsp;&nbsp;Passwords e
3714         autenticazione</a></h2>
3715
3716         <p>Per poter configurare Samba in modo che usi un sistema
3717         di negoziazione degli accessi alle cartelle condivise
3718         basato su accoppiate <em>nome utente / password</em>
3719         bisogna distinguere tra 3 livelli di password (e
3720         generalmente volete usare <em>sempre la stessa
3721         password</em> per ognuno di questi) e delle differenze tra
3722         le modalita' di <em>autenticazione</em> (e quindi anche di
3723         criptaggio delle passwords) usate da sistemi GNU/Linux e
3724         Windows:</p>
3725
3726         <dl class="docutils">
3727           <dt>1 Sistema *Unix ( GNU/Linux )</dt>
3728
3729           <dd>E' la password dell'<em>utente di sistema</em> che
3730           viene usata sul sistema operativo su cui gira il software
3731           Samba. E' importante tenere conto anche delle
3732           <em>user-id</em> e <em>group-id</em> degli utenti che
3733           dovranno fisicamente scrivere sui file system. Se un
3734           utente non puo' scrivere in una certa posizione del file
3735           system (ad esempio nella cartella <tt class=
3736           "docutils literal"><span class=
3737           "pre">/mnt/condivisione</span></tt> che sara' stata
3738           necessariamente creata inizialmente dall'utente
3739           <tt class="docutils literal"><span class=
3740           "pre">root</span></tt>) per mancanza dei privilegi di
3741           scrittura allora neanche Samba potra' farlo nel momento
3742           in mette a disposizione la risorsa all'utente. Se si
3743           montano file-system dedicati per le condivisioni
3744           controllare i permessi e proprieta' dei <em>punti di
3745           mount*</em>. Queste passwords sono salvate nel solito
3746           file /etc/shadow (richiamato da /etc/passwd).</dd>
3747
3748           <dt>2 Password per l'applicativo Samba</dt>
3749
3750           <dd>Samba deve essere compatibile con Windows e quindi
3751           utilizzare un sistema di criptazione delle password
3752           diverso da /etc/shadow . Le password per Samba possono
3753           essere gestite ad esempio col comando <tt class=
3754           "docutils literal"><span class=
3755           "pre">smbpasswd</span></tt> e vengono generalmente
3756           salvate all'interno di <tt class=
3757           "docutils literal"><span class=
3758           "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
3759
3760           <dt>3 Password per Windows.</dt>
3761
3762           <dd>Gli utenti Windows effettuano il log-in alla partenza
3763           della sessione di Windows. Se si avra' l'accortezza di
3764           usare sempre la <em>stessa password</em> data
3765           precedentemente anche a Windows (o viceversa impostare la
3766           password per GNU/Linux / Samba uguale a quella di
3767           Windows) l'utente potra' accedere automaticamente alle
3768           condivisioni a lui disponibili.</dd>
3769         </dl>
3770       </div>
3771
3772       <div class="section" id="creazione-utenti">
3773         <h2><a class="toc-backref" href=
3774         "#id74">7.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></h2>
3775
3776         <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
3777         attenzione a <em>non dargli una shell di sistema</em>. Gli
3778         utenti Windows che accedono al server solo per le
3779         condivisioni non hanno bisogno di poter eseguire comandi
3780         sul server!</p>
3781
3782         <p>Creazione di un utente denominato sambo:</p>
3783         <pre class="literal-block">
3784 adduser --shell /bin/false sambo
3785 </pre>
3786
3787         <p>Nel file <tt class="docutils literal"><span class=
3788         "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
3789         <pre class="literal-block">
3790 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
3791 </pre>
3792
3793         <p>Aggiunta dell'utente al database delle password per
3794         Samba e generazione della sua password:</p>
3795         <pre class="literal-block">
3796 smbpasswd -a sambo
3797 </pre>
3798
3799         <p>Se successivamente si vorra' modificare la password di
3800         un utente gia' esistente si usi:</p>
3801         <pre class="literal-block">
3802 smbpasswd  sambo
3803 </pre>
3804
3805         <p>La password sotto Windows verra' modificata sul sistema
3806         Windows.</p>
3807       </div>
3808
3809       <div class="section" id="creare-la-condivisione">
3810         <h2><a class="toc-backref" href=
3811         "#id75">7.4&nbsp;&nbsp;&nbsp;Creare la
3812         condivisione</a></h2>
3813
3814         <p>La condivisione altro non e' che una cartella sul server
3815         che viene resa disponibile ai client negoziando l'accesso
3816         in base a una autenticazione basata su <em>user-name /
3817         password</em>. E' per altro possibile permettere l'accesso
3818         a una risorsa a chiunque indiscriminatamente (a tutti i
3819         <tt class="docutils literal"><span class=
3820         "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
3821         punto di vista della sicurezza. Si decida se la cartella
3822         condivisa debba risiedere nella <em>home</em> di un utente
3823         (nel caso quest'ultimo ne sia l'unico fruitore) o in una
3824         cartella in /mnt/ (nel caso piu' utenti accedano a questa).
3825         Nel secondo caso si potranno gestire gli accessi sotto
3826         GNU/Linux tramite i gruppi.</p>
3827
3828         <p>Creazione della risorsa sambo_share nella home
3829         dell'utente sambo:</p>
3830         <pre class="literal-block">
3831 # mkdir /home/sambo/sambo_share
3832 # chown sambo:sambo /home/sambo/sambo_share/
3833 </pre>
3834
3835         <div class="section" id=
3836         "sicurezza-permessi-di-esecuzione-sul-server">
3837           <h3><a class="toc-backref" href=
3838           "#id76">7.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi di
3839           esecuzione sul server</a></h3>
3840
3841           <p>Bisognerebbe notare sul server i permessi di
3842           esecuzione del file-system che ospita la cartella da
3843           condividere. Se i file che saranno contenuti nella
3844           condivisione saranno da usarsi sotto Windows non c'e'
3845           motivo che questi siano eseguibili sotto GNU/Linux. Si
3846           potrebbe avere quindi, ipotizzando una condivisione in
3847           <tt class="docutils literal"><span class=
3848           "pre">/mnt/share</span></tt> che risieda su di un file
3849           system dedicato:</p>
3850
3851           <p><tt class="docutils literal"><span class=
3852           "pre">/etc/fstab</span></tt></p>
3853
3854           <blockquote>
3855             /dev/hda10 /mnt/share ext3 rw,
3856             <strong>nosuid,noexec</strong> 0 3
3857           </blockquote>
3858
3859           <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
3860           possibilita' di eseguire programmi con credenziali
3861           diverse.</p>
3862         </div>
3863       </div>
3864
3865       <div class="section" id=
3866       "configurazione-dell-applicativo-samba-vero-e-proprio">
3867         <h2><a class="toc-backref" href=
3868         "#id77">7.5&nbsp;&nbsp;&nbsp;Configurazione
3869         dell'applicativo Samba vero e proprio.</a></h2>
3870
3871         <p>Avendo preparato gli utenti (ancora una volta: non si
3872         dia una shell completa a un utente che serve solo per Samba
3873         o la posta elettronica) e la cartella sul file system si
3874         puo' procedere a configurare la condivisione su Samba.</p>
3875
3876         <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
3877         vim si usi 235gg ):</p>
3878         <pre class="literal-block">
3879 [sambo_share]
3880         # Percorso della cartella condivisa
3881         path = /home/sambo/sambo_share
3882         # Se gli utenti possono scrivere / modificare file
3883         writable = yes
3884         # Negoziazione degli accessi su base utenti / passwords
3885         valid users = sambo
3886
3887         # #######################################
3888         # Altri parametri opzionali di interesse
3889         # Se posso vedere la condivisione da esplora risorse
3890         # anche se non ho i privilegi per accedervi.
3891         browseable = yes
3892         # Commento indicativo della risorsa
3893         comment = Condivisione per Sambo
3894 </pre>
3895
3896         <p>Dopo aver salvato il file si puo' fare un primo
3897         controllo tramite l'utility <tt class=
3898         "docutils literal"><span class="pre">testparm</span></tt> ,
3899         che controlla la sintassi del file di configurazione di
3900         Samba. Se questo non rileva problemi si puo' procedere a un
3901         <tt class="docutils literal"><span class="pre">#</span>
3902         <span class="pre">/etc/init.d/samba</span> <span class=
3903         "pre">restart</span></tt> .</p>
3904
3905         <div class="section" id="creazione-di-un-gruppo">
3906           <h3><a class="toc-backref" href=
3907           "#id78">7.5.1&nbsp;&nbsp;&nbsp;Creazione di un
3908           gruppo</a></h3>
3909
3910           <p>Se si deve condividere una risorsa con un numero
3911           consistente di utenti e' consigliabile lavorare in
3912           termini termini di gruppi piuttosto che elencare la lista
3913           degli utenti in <tt class="docutils literal"><span class=
3914           "pre">valid</span> <span class=
3915           "pre">users</span></tt>.</p>
3916
3917           <p>Dopo aver creato il gruppo del quale volete facciano
3918           parte i vostri utenti (<tt class=
3919           "docutils literal"><span class="pre">addgroup</span>
3920           <span class="pre">nome_gruppo</span></tt>), inserite i
3921           vostri utenti nel gruppo (<tt class=
3922           "docutils literal"><span class="pre">adduser</span>
3923           <span class="pre">nome_utente</span> <span class=
3924           "pre">nome_gruppo</span></tt>) e modificate la direttiva
3925           <tt class="docutils literal"><span class=
3926           "pre">valid</span> <span class="pre">users</span></tt> in
3927           <tt class="docutils literal"><span class=
3928           "pre">smb.conf</span></tt> per riferirsi ad un gruppo
3929           piuttosto che a degli utenti. Per riferirsi a un gruppo
3930           si usi il carattere <tt class=
3931           "docutils literal"><span class="pre">@</span>
3932           <span class="pre">chicciola</span></tt> col <tt class=
3933           "docutils literal"><span class=
3934           "pre">nome_del_gruppo</span></tt>:</p>
3935           <pre class="literal-block">
3936 # Negoziazione degli accessi su base gruppo
3937 valid users = @nome_gruppo
3938 </pre>
3939         </div>
3940       </div>
3941
3942       <div class="section" id="testare-il-servizio">
3943         <h2><a class="toc-backref" href=
3944         "#id79">7.6&nbsp;&nbsp;&nbsp;Testare il Servizio</a></h2>
3945
3946         <p>Come testare il servizio</p>
3947
3948         <p>es:</p>
3949         <pre class="literal-block">
3950 smbclient -U sambo -L localhost
3951 </pre>
3952
3953         <p>Questo comando permette di esplorare la risorsa
3954         qualificandosi come utente, in questo modo potete testare
3955         il corretto funzionamento dell'autenticazione. Si provi
3956         inizialmente a sbagliare la password deliberatamente, poi a
3957         inserirla correttamente: dovrebbero essere visibili le
3958         risorse disponibili al solo utente sambo: la suo /home e la
3959         cartella samba_share:</p>
3960         <pre class="literal-block">
3961 Sharename       Type      Comment
3962 ---------       ----      -------
3963 sambo_share     Disk      Condivisione per Sambo
3964 print$          Disk      Printer Drivers
3965 IPC$            IPC       IPC Service (base server)
3966 sambo           Disk      Home Directories
3967 </pre>
3968
3969         <p>In particolare l'ultima voce relativa alla home
3970         directory dell'utente dovrebbe essere visibile solo agli
3971         utenti autenticati.</p>
3972
3973         <p>In alternativa e' possibile montare realmente la
3974         condivisone anche su GNU/Linux tramite un client per samba
3975         e testarne il corretto funzionamento:</p>
3976         <pre class="literal-block">
3977 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
3978 </pre>
3979       </div>
3980     </div>
3981
3982     <div class="section" id="server-di-posta-postfix">
3983       <h1><a class="toc-backref" href=
3984       "#id80">8&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a></h1>
3985
3986       <p>Il server di posta che prenderemo in considerazione e'
3987       Postfix, a seguire un estratto di un file di configurazione
3988       <em>semplice</em> con l'abilitazione delle <em>Maildir</em>
3989       nelle <tt class="docutils literal"><span class=
3990       "pre">/home</span></tt> degli utenti per la consegna della
3991       posta:</p>
3992
3993       <p><tt class="docutils literal"><span class=
3994       "pre">/etc/postfix/main.cf</span></tt>:</p>
3995       <pre class="literal-block">
3996 # ...segue dalla riga ~30
3997 myhostname = 162.piffa.net
3998 alias_maps = hash:/etc/aliases
3999 alias_database = hash:/etc/aliases
4000 myorigin = 162.piffa.net
4001 mydestination = 162.piffa.net, localhost
4002 # Se non avete un ip pubblico e statico, con un adeguato record PTR
4003 # dovrete usare un realy host per l'invio della posta
4004 relayhost = smtp.piffa.net
4005
4006 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
4007 # Se dovete inviare la posta per i client della vostra LAN privata:
4008 # mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
4009 # E si faccia BEN ATTENZIONE a non diventare un open realay smtp
4010
4011
4012 # Per effettuare lo storaggio della posta nelle home directory degli utenti
4013 # in una Maildir invece che nella Mailbox in /var/mail/nome_utente
4014 # si disabiliti procmail
4015 #mailbox_command = procmail -a "$EXTENSION"
4016
4017 # cartella_i abiliti lo storaggio della posta nella Maildir/ (si noti lo slash)
4018 # all'interno della  home dell'utente:
4019 home_mailbox = Maildir/
4020 mailbox_size_limit = 0
4021 recipient_delimiter = +
4022 inet_interfaces = all
4023 </pre>
4024
4025       <dl class="docutils">
4026         <dt>E' disponibile un file di configurazione di esempio ben
4027         piu' articolato e commentato::</dt>
4028
4029         <dd>/usr/share/postfix/main.cf.dist .</dd>
4030       </dl>
4031
4032       <div class="section" id="test-del-server-smtp">
4033         <h2><a class="toc-backref" href=
4034         "#id81">8.1&nbsp;&nbsp;&nbsp;Test del server smtp</a></h2>
4035
4036         <p>Per testare il corretto funzionamento del server di
4037         posta si puo' procedere in vari modi.</p>
4038
4039         <ul class="simple">
4040           <li>Spedire una mail a una casella locale / remota e
4041           controllare i log (syslog)</li>
4042
4043           <li>Collegarsi via <em>telnet</em> al server di posta:
4044           <a class="reference external" href=
4045           "http://www.netadmintools.com/art276.html">http://www.netadmintools.com/art276.html</a></li>
4046
4047           <li>usare una utility come SWAKS</li>
4048         </ul>
4049
4050         <div class="section" id="swaks">
4051           <h3><a class="toc-backref" href=
4052           "#id82">8.1.1&nbsp;&nbsp;&nbsp;Swaks</a></h3>
4053
4054           <dl class="docutils">
4055             <dt>Per gli utenti meno esperti e' consigliabile
4056             utilizzare <em>SWAKS</em>: si installi l'omonimo
4057             pacchetto e si esegua un test con::</dt>
4058
4059             <dd>swaks --to <a class="reference external" href=
4060             "mailto:utente@destinatario.tilde">utente@destinatario.tilde</a>
4061             --from <a class="reference external" href=
4062             "mailto:utente@propio.mail.tilde">utente@propio.mail.tilde</a></dd>
4063           </dl>
4064
4065           <p>Ecco un esempio di una sessione corretta:</p>
4066           <pre class="literal-block">
4067 swaks --to andrea@piffa.net from andrea@mydomain.com
4068 === Trying smtp.piffa.net:25...
4069 === Connected to smtp.piffa.net.
4070 &lt;-  220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
4071  -&gt; EHLO alice.mydomain.com
4072 &lt;-  250-zoo.piffa.net
4073 &lt;-  250-PIPELINING
4074 &lt;-  250-SIZE 10240000
4075 &lt;-  250-VRFY
4076 &lt;-  250-ETRN
4077 &lt;-  250-STARTTLS
4078 &lt;-  250-ENHANCEDSTATUSCODES
4079 &lt;-  250-8BITMIME
4080 &lt;-  250 DSN
4081  -&gt; MAIL FROM:&lt;root@alice.mydomain.com&gt;
4082 &lt;-  250 2.1.0 Ok
4083  -&gt; RCPT TO:&lt;andrea@piffa.net&gt;
4084 &lt;-  250 2.1.5 Ok
4085  -&gt; DATA
4086 &lt;-  354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
4087  -&gt; Date: Thu, 28 May 2009 13:11:19 +0200
4088  -&gt; To: andrea@piffa.net
4089  -&gt; From: root@alice.mydomain.com
4090  -&gt; Subject: test Thu, 28 May 2009 13:11:19 +0200
4091  -&gt; X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
4092  -&gt;
4093  -&gt; This is a test mailing
4094  -&gt;
4095  -&gt; .
4096 &lt;-  250 2.0.0 Ok: queued as 41FB261AFC
4097  -&gt; QUIT
4098 &lt;-  221 2.0.0 Bye
4099 === Connection closed with remote host.
4100 </pre>
4101         </div>
4102       </div>
4103
4104       <div class="section" id="imap-e-pop">
4105         <h2><a class="toc-backref" href=
4106         "#id83">8.2&nbsp;&nbsp;&nbsp;Imap e pop</a></h2>
4107
4108         <p>Postfix e' un server SMTP, di conseguenza se volete che
4109         i vostri utenti possano <em>scaricare</em> in locale la
4110         posta generalmente volete mettere a loro disposizione un
4111         server <em>POP3</em> o <em>IMAP</em>. Oppure entrambi.</p>
4112
4113         <dl class="docutils">
4114           <dt>Pacchetti da installare</dt>
4115
4116           <dd>courier-imap courier-pop</dd>
4117         </dl>
4118
4119         <p>Si noti che IMAP necessita delle <em>Maildir</em>, non
4120         funziona con le Mailbox in <tt class=
4121         "docutils literal"><span class="pre">/var/mail/</span></tt>
4122         .</p>
4123       </div>
4124
4125       <div class="section" id="client-a-riga-di-comando">
4126         <h2><a class="toc-backref" href=
4127         "#id84">8.3&nbsp;&nbsp;&nbsp;Client a riga di
4128         comando</a></h2>
4129
4130         <p>Per testare il corretto funzionamento del server di
4131         posta e' utile avere a disposizione delle utility per
4132         inviare e leggere la posta: ovviamente da riga di
4133         comando.</p>
4134
4135         <div class="section" id="mailx">
4136           <h3><a class="toc-backref" href=
4137           "#id85">8.3.1&nbsp;&nbsp;&nbsp;mailx</a></h3>
4138
4139           <dl class="docutils">
4140             <dt>Uno dei client piu' semplici, sopratutto per
4141             inviare un messaggioi. e' sufficiente usare una formula
4142             come::</dt>
4143
4144             <dd>mail <a class="reference external" href=
4145             "mailto:utente@dominio.com">utente@dominio.com</a></dd>
4146           </dl>
4147
4148           <p>Se il comando <tt class=
4149           "docutils literal"><span class="pre">mail</span></tt> non
4150           fosse disponibile si installi il pacchetto <tt class=
4151           "docutils literal"><span class=
4152           "pre">mailx</span></tt>.</p>
4153
4154           <p>Al primo prompt si digitera' l'oggetto, il testo del
4155           messaggio (per terminare l'inserimento lasciare una riga
4156           vuota, digitare un <tt class=
4157           "docutils literal"><span class="pre">punto</span>
4158           <span class="pre">+</span> <span class=
4159           "pre">Invio</span></tt> su una riga vuota), la Carbon
4160           Copy (se necessaria).</p>
4161
4162           <p>es:</p>
4163           <pre class="literal-block">
4164 mail andrea@localhost
4165 Subject: Oggetto della mail
4166 Testo del messagio,
4167 per terminare il messaggio
4168 lasciare una riga vuota
4169 e un punto (poi Invio).
4170
4171 .
4172 Cc:
4173 </pre>
4174
4175           <p>Per altrre opzioni si veda la pagina man.</p>
4176         </div>
4177
4178         <div class="section" id="mutt">
4179           <h3><a class="toc-backref" href=
4180           "#id86">8.3.2&nbsp;&nbsp;&nbsp;Mutt</a></h3>
4181
4182           <p>Mutt e' uno dei gestori di posta preferiti da chi
4183           preferisce utilizzare l'interfaccia testuale per la
4184           gestione della posta.</p>
4185
4186           <p>Mutt ha un file di configurazione <tt class=
4187           "docutils literal"><span class="pre">.muttrc</span></tt>
4188           nella <em>home</em> dell'utente, alcuni settaggi possono
4189           essere utili:</p>
4190
4191           <dl class="docutils">
4192             <dt>set folder="~/Maildir"</dt>
4193
4194             <dd>Per utilizzare <tt class=
4195             "docutils literal"><span class=
4196             "pre">/home/nome_utente/Maildir</span> <span class=
4197             "pre">come</span> <span class=
4198             "pre">mailbox</span></tt>, invece del default
4199             <tt class="docutils literal"><span class=
4200             "pre">/var/mail/nome_utente</span></tt>.</dd>
4201
4202             <dt>set editor="vim"</dt>
4203
4204             <dd>Utilizzare <tt class=
4205             "docutils literal"><span class="pre">vim</span></tt>
4206             come editor per comporre i messaggi.</dd>
4207           </dl>
4208
4209           <p>Spesso e' utile poter <em>levvere al volo</em> la
4210           Mailbox / Maildir di un utente sul server di posta, per
4211           controllare se i messaggi vengono recapitati
4212           correttamente:</p>
4213           <pre class="literal-block">
4214 mutt -f /var/mail/utente
4215 mutt -f /home/utente/Maildir
4216 </pre>
4217
4218           <p>In modo analogo si puo' consultare al volo la propia
4219           mailbox su un server remoto tramite IMAP/POP:</p>
4220           <pre class="literal-block">
4221 mutt -f imap://nome_utente@piffa.net
4222 </pre>
4223         </div>
4224
4225         <div class="section" id="web-client">
4226           <h3><a class="toc-backref" href=
4227           "#id87">8.3.3&nbsp;&nbsp;&nbsp;Web client</a></h3>
4228
4229           <p>Per mettere a disposizione degli utenti un client web
4230           per gestire la propria posta si installi il pacchetto:
4231           <tt class="docutils literal"><span class=
4232           "pre">squirrelmail</span></tt> . Ci sono tanti altri
4233           client web disponibili: questo e' particolarmente
4234           semplice. Naturalmente dovrete aver installato:
4235           <tt class="docutils literal"><span class=
4236           "pre">php5</span> <span class="pre">apache2</span></tt>
4237           .</p>
4238
4239           <p>L'interfaccia dovrebbe essere disponibile all'url:
4240           <tt class="docutils literal"><span class=
4241           "pre">http://localhost/squirrelmail</span></tt> . Se
4242           cosi' non fosse assicuratevi che Apache abbia incluso il
4243           file di configurazione di squirrelmail:</p>
4244           <pre class="literal-block">
4245 cd /etc/apache2/conf.d/
4246 ln -s /etc/squirrelmail/apache.conf ./squirrelmail.conf
4247 </pre>
4248         </div>
4249       </div>
4250
4251       <div class="section" id="graylisting">
4252         <h2><a class="toc-backref" href=
4253         "#id88">8.4&nbsp;&nbsp;&nbsp;Graylisting</a></h2>
4254
4255         <p>Il <em>graylisting</em> e' un sistema relativamente poco
4256         invasivo, con un limitato consumo di risorse per limitare
4257         lo <em>SPAM</em> in arrivo sul propio server di posta. Come
4258         suggerisce il nome e' una via di mezzo tra una <em>white
4259         list</em> (una lista di mittenti privilegiata, sempre
4260         benvenuti) e una <em>black list</em> (mittenti
4261         <em>bannati</em>, banditi dal poter inviare nuovi
4262         messaggi).</p>
4263
4264         <p>Il funzionamento e' relativamente semplice: ogni
4265         mittente sconosciuto viene immediatamente rifiutato con un
4266         errore <em>non grave</em> come un <em>server non
4267         disponibile, provare piu' tardi</em>. Questo inconveniente
4268         non dovrebbe mettere in difficolta' un server di posta /
4269         mittente legittimo, che dopo un periodo di attesa tentera'
4270         nuovamente di inviare il messaggio ottenendo finalmente il
4271         risultato atteso. Diversamente un <em>bot</em> per l'invio
4272         di SPAM o un applicazione improvvisata (tipicamente di
4273         derivazione virale) che stesse inviando il messaggio
4274         <em>probabilmente</em> non insisterebbe, rinunciano ad
4275         inviare il messaggio preferendo destinazioni meno
4276         problematiche.</p>
4277
4278         <div class="section" id="abilitazione-in-postfix">
4279           <h3><a class="toc-backref" href=
4280           "#id89">8.4.1&nbsp;&nbsp;&nbsp;Abilitazione in
4281           Postfix</a></h3>
4282
4283           <p>Installare il pacchetto: <tt class=
4284           "docutils literal"><span class="pre">postgrey</span></tt>
4285           e aggiungere il file di configurazione di Postfix
4286           <tt class="docutils literal"><span class=
4287           "pre">/etc/postfix/main.cf</span></tt>:</p>
4288           <pre class="literal-block">
4289 smtpd_recipient_restrictions =
4290         permit_mynetworks,
4291         reject_unauth_destination,
4292         check_policy_service inet:127.0.0.1:60000
4293 </pre>
4294         </div>
4295
4296         <div class="section" id="test">
4297           <h3><a class="toc-backref" href=
4298           "#id90">8.4.2&nbsp;&nbsp;&nbsp;Test</a></h3>
4299
4300           <p>Inviando un messaggio il client dovrebbe ricevere un
4301           iniziale messaggio di rifiuto del messaggio:</p>
4302           <pre class="literal-block">
4303 swaks --to andrea@piffa.net from andrea@mydonain.com
4304 === Trying smtp.piffa.net:25...
4305 === Connected to smtp.piffa.net
4306 ...
4307 &lt;-  250 2.1.0 Ok
4308  -&gt; RCPT TO:&lt;andrea@piffa.net&gt;
4309 &lt;** 450 4.2.0 &lt;andrea@piffa.net&gt;: Recipient address rejected:
4310 Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
4311  -&gt; QUIT
4312 &lt;-  221 2.0.0 Bye
4313 === Connection closed with remote host.
4314 </pre>
4315
4316           <p>A lato server si dovrebbe rilevare su <tt class=
4317           "docutils literal"><span class=
4318           "pre">/var/log/syslog</span></tt> qualcosa di simile:</p>
4319           <pre class="literal-block">
4320 connect from alice.mydomain.com[65.98.21.97]
4321 May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
4322    client_name=alice.mydomain.com,
4323    client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
4324 May 28 14:53:34 r24266 postfix/smtpd[22538]:
4325    NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
4326    450 4.2.0 &lt;andrea@piffa.net&gt;: Recipient address rejected: Greylisted,
4327    see http://postgrey.schweikert.ch/help/piffa.net.html;
4328    from=&lt;root@alice.mydomain.com&gt; to=&lt;andrea@piffa.net&gt;
4329    proto=ESMTP helo=&lt;alice.mydomain.com&gt;
4330 May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
4331 </pre>
4332         </div>
4333
4334         <div class="section" id="statistiche">
4335           <h3><a class="toc-backref" href=
4336           "#id91">8.4.3&nbsp;&nbsp;&nbsp;Statistiche</a></h3>
4337
4338           <p>E' sempre utile poter tracciare qualche statistica
4339           sulle percentuali di messaggi ricevuti, da chi, messaggi
4340           rifiutati (e per quale motivo). Statistiche che attingono
4341           dai soliti log del server di posta <tt class=
4342           "docutils literal"><span class=
4343           "pre">/var/log/syslog</span></tt> di default oltre che i
4344           dedicati <tt class="docutils literal"><span class=
4345           "pre">/var/log/mail</span></tt> .</p>
4346
4347           <p>Una utility semplice per analizzare l'attivita' del
4348           propio server smtp potrebbe essere <tt class=
4349           "docutils literal"><span class=
4350           "pre">pflogsumm</span></tt> , installato il pacchetto la
4351           si puo' invocare con:</p>
4352           <pre class="literal-block">
4353 pflogsumm.pl  /var/log/mail.log
4354 </pre>
4355
4356           <p>oppure utilizzare i log piu' vecchi ad es. <tt class=
4357           "docutils literal"><span class=
4358           "pre">/var/log/mail.log.0</span></tt></p>
4359         </div>
4360       </div>
4361     </div>
4362
4363     <div class="section" id="firewall">
4364       <h1><a class="toc-backref" href=
4365       "#id92">9&nbsp;&nbsp;&nbsp;Firewall</a></h1>
4366
4367       <p>In Informatica, nell'ambito delle reti di computer, un
4368       firewall (termine inglese dal significato originario di
4369       parete refrattaria, muro tagliafuoco, muro ignifugo; in
4370       italiano anche parafuoco o parafiamma) e' un componente
4371       passivo di difesa perimetrale che puo'ò anche svolgere
4372       funzioni di collegamento tra due o piu' tronconi di rete.
4373       Usualmente la rete viene divisa in due sotto reti: una, detta
4374       esterna, comprende l'intera Internet mentre l'altra interna,
4375       detta LAN (Local Area Network), comprende una sezione piu' o
4376       meno grande di un insieme di computer locali. In alcuni casi
4377       e' possibile che si crei l'esigenza di creare una terza sotto
4378       rete detta DMZ (o zona demilitarizzata) atta a contenere quei
4379       sistemi che devono essere isolati dalla rete interna ma
4380       devono comunque essere protetti dal firewall.</p>
4381
4382       <p>Una prima definizione chiusa di firewall Ã¨ la
4383       seguente:</p>
4384
4385       <p>Apparato di rete hardware o software che filtra tutti i
4386       pacchetti entranti ed uscenti, da e verso una rete o un
4387       computer, applicando regole che contribuiscono alla sicurezza
4388       della stessa.</p>
4389
4390       <p>In realta'Ã&nbsp; un firewall puo'ò essere realizzato con
4391       un normale computer (con almeno due schede di rete e software
4392       apposito), puo'ò essere una funzione inclusa in un router o
4393       puo'ò essere un apparato specializzato. Esistono inoltre i
4394       cosiddetti "firewall personali", che sono programmi
4395       installati sui normali calcolatori, che filtrano solamente i
4396       pacchetti che entrano ed escono da quel calcolatore; in tal
4397       caso viene utilizzata una sola scheda di rete.</p>
4398
4399       <p>La funzionalita'Ã&nbsp; principale in sostanza ÃƒÂ¨ quella
4400       di creare un filtro sulle connessioni entranti ed uscenti, in
4401       questo modo il dispositivo innalza il livello di sicurezza
4402       della rete e permette sia agli utenti interni che a quelli
4403       esterni di operare nel massimo della sicurezza. Il firewall
4404       agisce sui pacchetti in transito da e per la zona interna
4405       potendo eseguire su di essi operazioni di: controllo modifica
4406       monitoraggio</p>
4407
4408       <p>Questo grazie alla sua capacita'Ã&nbsp; di "aprire" il
4409       pacchetto IP per leggere le informazioni presenti sul suo
4410       header, e in alcuni casi anche di effettuare verifiche sul
4411       contenuto del pacchetto.</p>
4412
4413       <div class="section" id="links">
4414         <h2><a class="toc-backref" href=
4415         "#id93">9.1&nbsp;&nbsp;&nbsp;Links</a></h2>
4416
4417         <ul class="simple">
4418           <li><a class="reference external" href=
4419           "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
4420
4421           <li><a class="reference external" href=
4422           "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
4423           http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
4424         </ul>
4425       </div>
4426
4427       <div class="section" id="ipfilter">
4428         <h2><a class="toc-backref" href=
4429         "#id94">9.2&nbsp;&nbsp;&nbsp;Ipfilter</a></h2>
4430
4431         <p>Link: <a class="reference external" href=
4432         "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
4433         http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
4434
4435         <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
4436         po' del 3) e su cosa <em>non</em> lavora (livello 4).
4437         Netfilter lavora anche su parti del livello 3 (TCP, UDP,
4438         etc) e del livello 1 (MAC source address). Iptables
4439         comunque permette di fare il <em>connection-tracking</em>,
4440         mediante il quale possiamo implementare il Network Address
4441         Translation.</p>
4442
4443         <p>Netfilter non ricostruisce il flusso di dati tra
4444         pacchetti, non puo' quindi rilevare la presenza di virus o
4445         simili che si trasmettono su pacchetti separati:
4446         ricomporre, analizzare e tornare a scomporre i frammenti
4447         richiederebbe troppa RAM e risorse di sistema, con il
4448         conseguente rischio di saturare il firewall fino
4449         all'abbandono dei nuovi pacchetti in transito. Ci sono
4450         altri software piu' adatti a questi compiti, ad esempio un
4451         proxy HTTP come Squid che e' appunto una applicazione di
4452         quarto livello, progettata e strutturata per analizzare e
4453         modificare i flussi di dati (il <em>contenuto</em> dei
4454         pacchetti, non le sole <em>intestazioni</em>) facendo
4455         abbondate uso delle risorse RAM e di calcolo del sistema.
4456         Non a caso su macchine embedded dalle prestazioni molto
4457         ridotte (CPU ARM ~250MHZ con ~30MB di RAM) Squid sfrutta al
4458         massimo le risorse di sistema per gestire il traffico di
4459         una rete 10/100, mentre il lavoro tipico svolto da
4460         netfilter e' quasi irrilevante.</p>
4461       </div>
4462
4463       <div class="section" id="progettazione-di-un-firewall">
4464         <h2><a class="toc-backref" href=
4465         "#id95">9.3&nbsp;&nbsp;&nbsp;Progettazione di un
4466         firewall</a></h2>
4467
4468         <p>Per implementare un firewall bisogna decidere un aio di
4469         cose: la collocazione e l'approccio (inclusivo o esclusivo)
4470         al filtraggio, il tipo di hardware.</p>
4471
4472         <div class="section" id="collocazione">
4473           <h3><a class="toc-backref" href=
4474           "#id96">9.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></h3>
4475
4476           <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
4477           della rete, decidere se diversi reparti di una azienda si
4478           possano vedere tra loro e in che misura.</p>
4479
4480           <p>Collocazione:</p>
4481
4482           <blockquote>
4483             <ol class="arabic simple">
4484               <li>sul router</li>
4485
4486               <li>tra router e servers / LAN</li>
4487
4488               <li>Unico server / router / firewall e connessi
4489               rischi. considerare l'acquisto di un router hardware
4490               dedicato.</li>
4491             </ol>
4492           </blockquote>
4493
4494           <dl class="docutils">
4495             <dt>Layeed security:</dt>
4496
4497             <dd>Implementare piu' device / software sui diversi
4498             livelli: <a class="reference external" href=
4499             "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
4500             http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
4501           </dl>
4502         </div>
4503
4504         <div class="section" id="policy-di-default">
4505           <h3><a class="toc-backref" href=
4506           "#id97">9.3.2&nbsp;&nbsp;&nbsp;Policy di default</a></h3>
4507
4508           <p>Drop o Accept: conseguenze per sicurezza, facilita' di
4509           gestione.</p>
4510         </div>
4511
4512         <div class="section" id="hardware">
4513           <h3><a class="toc-backref" href=
4514           "#id98">9.3.3&nbsp;&nbsp;&nbsp;Hardware</a></h3>
4515
4516           <p>Sostanzialmente potremmo distinguere due tipologie di
4517           hardware:</p>
4518
4519           <dl class="docutils">
4520             <dt>Network appliance dedicata::</dt>
4521
4522             <dd>Un dispositivo hardware dedicato alla funzione di
4523             Firewall, ad es un Cisco / Fortigate. Si noti che molti
4524             firewall economici altro non sono che Linux box molto
4525             striminzite.</dd>
4526
4527             <dt>Server / Personal computer:</dt>
4528
4529             <dd>Un server sul quale viene fatto girare Netfilter ad
4530             uso del server stesso e della rete connessa.</dd>
4531           </dl>
4532
4533           <p>Vantaggi e svantaggi: consumo elettrico, efficienza,
4534           flessibilita', strumenti di gestione, sicurezza,
4535           OpenBSD.</p>
4536         </div>
4537       </div>
4538
4539       <div class="section" id=
4540       "percorso-dei-pacchetti-tra-tabelle-e-catene">
4541         <h2><a class="toc-backref" href=
4542         "#id99">9.4&nbsp;&nbsp;&nbsp;Percorso dei pacchetti tra
4543         tabelle e catene</a></h2>
4544
4545         <p>link: <a class="reference external" href=
4546         "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
4547         http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
4548       </div>
4549
4550       <div class="section" id="concetti-di-base">
4551         <h2><a class="toc-backref" href=
4552         "#id100">9.5&nbsp;&nbsp;&nbsp;Concetti di base</a></h2>
4553
4554         <div class="section" id="tabelle-catene-regole">
4555           <h3><a class="toc-backref" href=
4556           "#id101">9.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
4557           regole</a></h3>
4558
4559           <p>Iptables lavora su 3 tabelle (tables) di default:</p>
4560
4561           <ul class="simple">
4562             <li>filter - Regola il firewalling: quali pacchetti
4563             accettare, quali bloccare</li>
4564
4565             <li>nat - Regola le attivita'Ã&nbsp; di natting</li>
4566
4567             <li>mangle - Interviene sulla alterazione dei
4568             pacchetti.</li>
4569           </ul>
4570
4571           <p>Ogni tabella ha delle catene (chains) predefinite
4572           (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
4573           aggiunte catene custom. Ogni catena Ã¨ composta da un
4574           elenco di regole (rules) che identificano pacchetti di
4575           rete secondo criteri diversi (es: -p tcp --dport 80 -d
4576           10.0.0.45) Ogni regola termina con una indicazione
4577           (target) su cosa fare dei pacchetti identificati dalla
4578           regola stessa (es: -j ACCEPT, -j DROP ...)</p>
4579         </div>
4580
4581         <div class="section" id="match">
4582           <h3><a class="toc-backref" href=
4583           "#id102">9.5.2&nbsp;&nbsp;&nbsp;Match</a></h3>
4584
4585           <p>I Match di una regola (rule) servono a testare un
4586           pacchetto per valutare se corrisponda a certe
4587           caratteristiche. I match di possono servire a controllare
4588           se un pacchetto e' destinato a una porta particolare o
4589           utilizza un protocollo particolare.</p>
4590
4591           <p>Alcuni esempi:</p>
4592
4593           <dl class="docutils">
4594             <dt>-p [!] proto</dt>
4595
4596             <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
4597             udp, gre, ah...)</dd>
4598
4599             <dt>-s [!] address[/mask]</dt>
4600
4601             <dd>Indirizzo IP sorgente (o network con maschera di
4602             sotto rete)</dd>
4603
4604             <dt>-d [!] address[/mask]</dt>
4605
4606             <dd>Indirizzo IP destinazione (o network)</dd>
4607
4608             <dt>-i [!] interface[+]</dt>
4609
4610             <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
4611
4612             <dt>-o [!] interface[+]</dt>
4613
4614             <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
4615           </dl>
4616
4617           <table class="docutils option-list" frame="void" rules=
4618           "none">
4619             <col class="option">
4620             <col class="description">
4621
4622             <tbody valign="top">
4623               <tr>
4624                 <td class="option-group"><kbd><span class=
4625                 "option">-f</span></kbd></td>
4626
4627                 <td>Frammento di pacchetto</td>
4628               </tr>
4629             </tbody>
4630           </table>
4631         </div>
4632
4633         <div class="section" id="targets">
4634           <h3><a class="toc-backref" href=
4635           "#id103">9.5.3&nbsp;&nbsp;&nbsp;Targets</a></h3>
4636
4637           <p>Se un pacchetto soddisfa le condizioni del Match
4638           <em>salta</em> (jump) su uno dei target possibili, in
4639           caso contrario continua il suo percorso tra regole catene
4640           e tabelle.</p>
4641
4642           <p>Target principali:</p>
4643
4644           <dl class="docutils">
4645             <dt><em>-j ACCEPT</em></dt>
4646
4647             <dd>Il pacchetto matchato viene accettato e procede
4648             verso la sua destinazione. Si usa per definire il
4649             traffico permesso.</dd>
4650
4651             <dt><em>-j DROP</em></dt>
4652
4653             <dd>Il pacchetto viene rifiutato e scartato, senza
4654             alcuna notifica al mittente. Si usa, in alternativa a
4655             REJECT, per bloccare traffico.</dd>
4656
4657             <dt><em>-j REJECT</em></dt>
4658
4659             <dd>Il pacchetto viene rifiutato. Al mittente viene
4660             mandato un pacchetto (configurabile) di notifica tipo
4661             ICMP port-unreachable (--reject-with
4662             icmp-port-unreachable)</dd>
4663           </dl>
4664
4665           <table class="docutils option-list" frame="void" rules=
4666           "none">
4667             <col class="option">
4668             <col class="description">
4669
4670             <tbody valign="top">
4671               <tr>
4672                 <td class="option-group"><kbd><span class=
4673                 "option">-t <var>LOG</var></span></kbd></td>
4674
4675                 <td>Il pacchetto viene loggato via syslog e procede
4676                 l'attraversamento della catena. Opzioni:
4677                 (--log-level, --log-prefix, --log-tcp-sequence,
4678                 --log-tcp-options, --log-ip-options)</td>
4679               </tr>
4680
4681               <tr>
4682                 <td class="option-group"><kbd><span class=
4683                 "option">-j <var>DNAT</var></span></kbd></td>
4684
4685                 <td>Viene modificato l'IP di destinazione del
4686                 pacchetto. Target disponibile solo in nat /
4687                 PREROUTING e nat / OUTPUT. L'opzione
4688                 --to-destination IP:porta definisce il nuovo IP di
4689                 destinazione. Si usa tipicamente su network
4690                 firewall che nattano server di una DMZ</td>
4691               </tr>
4692
4693               <tr>
4694                 <td class="option-group"><kbd><span class=
4695                 "option">-j <var>SNAT</var></span></kbd></td>
4696
4697                 <td>Viene modificato l'IP sorgente. Solo in nat /
4698                 POSTROUTING. Prevede l'opzione --to-source
4699                 IP:porta. Si usa per permettere l'accesso a
4700                 Internet da una rete locale con IP privati.</td>
4701               </tr>
4702
4703               <tr>
4704                 <td class="option-group"><kbd><span class=
4705                 "option">-j <var>MASQUERADE</var></span></kbd></td>
4706
4707                 <td>Simile a SNAT, si applica quando i pacchetti
4708                 escono da interfacce con IP dinamico (dialup, adsl,
4709                 dhcp...). Si usa solo in nat / POSTROUTING e
4710                 prevede l'opzione --to-ports porte.</td>
4711               </tr>
4712
4713               <tr>
4714                 <td class="option-group"><kbd><span class=
4715                 "option">-j <var>REDIRECT</var></span></kbd></td>
4716
4717                 <td>Redirige il pacchetto ad una porta locale.
4718                 Usabile solo in nat / PREROUTING e nat / OUTPUT Ã¨
4719                 previsto per fare un transparent proxy (con proxy
4720                 server in esecuzione sulla macchina con
4721                 iptables)</td>
4722               </tr>
4723
4724               <tr>
4725                 <td class="option-group"><kbd><span class=
4726                 "option">-j <var>RETURN</var></span></kbd></td>
4727
4728                 <td>Interrompe l'attraversamento della catena. Se
4729                 questa Ã¨ una secondaria, il pacchetto torna ad
4730                 attraversare la catena madre da punto in cui aveva
4731                 fatto il salto nella secondaria. Se il RETURN Ã¨ in
4732                 una delle catene di default, il pacchetto
4733                 interrompe l'attraversamento e segue la policy di
4734                 default.</td>
4735               </tr>
4736
4737               <tr>
4738                 <td class="option-group"><kbd><span class=
4739                 "option">-j <var>TOS</var></span></kbd></td>
4740
4741                 <td>Usabile solo nella tabella mangle, permette di
4742                 cambiare il TOS (Type Of Service) di un pacchetto
4743                 con l'opzione --set-tos. Per un elenco dei
4744                 parametri disponibili: iptables -j TOS -h</td>
4745               </tr>
4746
4747               <tr>
4748                 <td class="option-group"><kbd><span class=
4749                 "option">-j <var>MIRROR</var></span></kbd></td>
4750
4751                 <td>Curioso e sperimentale, questo target invia un
4752                 pacchetto speculare al mittente. In pratica Ã¨ come
4753                 se facesse da specchio per tutti i pacchetti
4754                 ricevuti. Da usare con cautela, per evitare
4755                 attacchi DOS indiretti.</td>
4756               </tr>
4757             </tbody>
4758           </table>
4759         </div>
4760       </div>
4761
4762       <div class="section" id="tabella-filter">
4763         <h2><a class="toc-backref" href=
4764         "#id104">9.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></h2>
4765
4766         <p>E' quella implicita e predefinita (-t filter) Riguarda
4767         le attivitÃ&nbsp; di filtraggio del traffico. Ha 3 catene
4768         di default: INPUT - Riguarda tutti i pacchetti destinati al
4769         sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
4770         i pacchetti che sono originati dal sistema e destinati ad
4771         uscire. FORWARD - Riguarda i pacchetti che attraversano il
4772         sistema, con IP sorgente e destinazione esterni.</p>
4773
4774         <p>Esempio per permettere accesso alla porta 80 locale:
4775         iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
4776         Analoga a: iptables -I INPUT -p tcp --dport 80 -j
4777         ACCEPT</p>
4778
4779         <p>Esempio per permettere ad un pacchetto con IP sorgente
4780         10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
4781         il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
4782         -j ACCEPT</p>
4783       </div>
4784
4785       <div class="section" id=
4786       "flush-automatico-per-macchine-remote">
4787         <h2><a class="toc-backref" href=
4788         "#id105">9.7&nbsp;&nbsp;&nbsp;Flush automatico per macchine
4789         remote</a></h2>
4790
4791         <p>Se state provando una configurazione del firewall per
4792         una macchina remota e' buona norma per evitare brutte
4793         figure attivare uno script che faccia il <em>flush</em>
4794         delle regole dopo qualche minuto. Potreste infatti
4795         inavvertitamente impostare una regola che vi impedisca di
4796         raggiungere la macchina remota, cosi' da non poter neanche
4797         eliminare quella regola e ripristinare la situazione
4798         precedente.</p>
4799
4800         <p><em>Veramente</em>, prima di lavorare sul firewall di
4801         una macchina remota impostate almeno un <tt class=
4802         "docutils literal"><span class="pre">at</span> <span class=
4803         "pre">now</span> <span class="pre">+5</span> <span class=
4804         "pre">min</span></tt> o con un'oretta di margine per fare
4805         il <em>flush</em> delle regole (su tutte le tabelle):</p>
4806         <pre class="literal-block">
4807     at now +5 min
4808 at&gt; /sbin/iptables -F
4809 at&gt; [CTR+d]
4810 </pre>
4811       </div>
4812
4813       <div class="section" id="gestione-regole-rules">
4814         <h2><a class="toc-backref" href=
4815         "#id106">9.8&nbsp;&nbsp;&nbsp;Gestione regole
4816         (rules)</a></h2>
4817
4818         <p>Il comando iptables viene usato per ogni
4819         attivita'Ã&nbsp; di gestione e configurazione.</p>
4820
4821         <p>Inserimento regole:</p>
4822
4823         <dl class="docutils">
4824           <dt>iptables -A CATENA ...</dt>
4825
4826           <dd>Aggiunge una regola alla fine della catena
4827           indicata</dd>
4828
4829           <dt>iptables -I CATENA [#] ...</dt>
4830
4831           <dd>Inserisce alla riga # (default 1) una regola nella
4832           catena indicata</dd>
4833
4834           <dt>iptables -N CATENA</dt>
4835
4836           <dd>Crea una nuova catena custom</dd>
4837
4838           <dt>iptables -P CATENA TARGET</dt>
4839
4840           <dd>Imposta il target di default per la catena
4841           indicata</dd>
4842         </dl>
4843
4844         <p>Rimozione regole e azzeramenti:</p>
4845
4846         <dl class="docutils">
4847           <dt>iptables -F [catena]</dt>
4848
4849           <dd>Ripulisce tutte le catene (o quella indicata)</dd>
4850
4851           <dt>iptables -X [catena]</dt>
4852
4853           <dd>Ripulisce tutte le catene custom (o quella
4854           indicata)</dd>
4855
4856           <dt>iptables -Z [catena]</dt>
4857
4858           <dd>Azzera i contatori sulle catene</dd>
4859
4860           <dt>iptables -D catena #</dt>
4861
4862           <dd>Cancella la regola numero # dalla catena
4863           indicata</dd>
4864         </dl>
4865
4866         <p>Interrogazione:</p>
4867
4868         <dl class="docutils">
4869           <dt>iptables -L</dt>
4870
4871           <dd>Elenca le regole esistenti</dd>
4872
4873           <dt>iptables -L -n -v</dt>
4874
4875           <dd>Elenca, senza risolvere gli host, in modo verboso le
4876           regole esistenti</dd>
4877         </dl>
4878       </div>
4879
4880       <div class="section" id="salvataggio-regole">
4881         <h2><a class="toc-backref" href=
4882         "#id107">9.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a></h2>
4883
4884         <p>Il comando <tt class="docutils literal"><span class=
4885         "pre">iptables</span></tt> serve per interagire con il
4886         framework <tt class="docutils literal"><span class=
4887         "pre">Netfilter</span></tt> che gestisce il firewall di
4888         Linux al livello del kernel. Questo comporta, in modo
4889         analogo a quando avviene col comando <tt class=
4890         "docutils literal"><span class="pre">ifconfig</span></tt>,
4891         che i cambiamenti impostati siano in <em>tempo reale,
4892         RAM</em>, non persistenti nel sistema: al boot successivo
4893         del sistema tutto tornera' alle impostazioni di base (in
4894         questo caso <em>nulle</em>, con policy di default settate
4895         su <tt class="docutils literal"><span class=
4896         "pre">ACCEPT</span></tt> per tutto).</p>
4897
4898         <p>Le varie invocazioni di iptables potrebbero essere
4899         richiamate da degli scripts dedicati, ma fortunatamente e'
4900         stata predisposta una apposita utility per gestire questi
4901         scripts in modo da avere a disposizione un <em>formato
4902         standard</em> per il salvataggio e il ripristino delle
4903         regole del firewall.</p>
4904
4905         <p>Altro problema: decidere quando attivare / disattivare
4906         queste regole. Utilizzare i <em>runlevels</em> non e' una
4907         soluzione adeguata: le regole del firewall sono legate
4908         all'attivita' delle schede di rete (e un host con diverse
4909         schede di rete puo' attivarle a secondo delle esigenze di
4910         routing, partenza di servizi es file_sharing per un
4911         back-up...): il sistema operativo Debian permette di legare
4912         l'esecuzione di comandi alla attivazione di una device di
4913         rete (<tt class="docutils literal"><span class=
4914         "pre">up</span></tt>), dopo la sua attivazione (<tt class=
4915         "docutils literal"><span class="pre">post-up</span></tt>,
4916         utile per devices che richiedono un certo tempo per
4917         inizializzarsi: come un tunnel o una connessione punto a
4918         punto), prima della sua attivazione (<tt class=
4919         "docutils literal"><span class="pre">pre-up</span></tt>).
4920         Allo stesso modo sono disponibili eventi analoghi per
4921         accompagnare la disattivazione dei device di rete: si veda
4922         la pagina man di <tt class="docutils literal"><span class=
4923         "pre">interfaces</span></tt>.</p>
4924
4925         <p>Nel nostro caso avremo per una possibile scheda
4926         <tt class="docutils literal"><span class=
4927         "pre">eth0</span></tt>:</p>
4928
4929         <p><tt class="docutils literal"><span class=
4930         "pre">/etc/network/interfaces</span></tt></p>
4931         <pre class="literal-block">
4932 iface eth1 inet static
4933         up /sbin/iptables-restore /root/firewall/basic_fw
4934         # Seguono i soliti parametri della scheda di rete
4935         address 10.10.208.21
4936 </pre>
4937
4938         <div class="section" id="iptables-save">
4939           <h3><a class="toc-backref" href=
4940           "#id108">9.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></h3>
4941
4942           <p>Per salvare le regole di iptables attualmente presenti
4943           nel kernel si usi il comando:</p>
4944           <pre class="literal-block">
4945 # iptables-save &gt;&gt; /root/firewall/basic_fw
4946 </pre>
4947
4948           <p>Il contenuto del file dovrebbe essere
4949           <em>comprensibile</em>: sostanzialmente sono regole di
4950           iptables, senza il comando iptables ripetuto, suddivisi
4951           per le varie tabelle. Potete comunque correggere
4952           eventuali parametri con un edito di testo.</p>
4953
4954           <p>Se non avete un'idea migliore potreste voler tenere
4955           gli script dei firewall in una cartella <tt class=
4956           "docutils literal"><span class=
4957           "pre">~/firewall</span></tt> nella home directory
4958           dell'utente <tt class="docutils literal"><span class=
4959           "pre">root</span></tt>.</p>
4960         </div>
4961
4962         <div class="section" id="iptables-restore">
4963           <h3><a class="toc-backref" href=
4964           "#id109">9.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></h3>
4965
4966           <p>Per ripristinare un set di regole precedentemente
4967           salvate con <tt class="docutils literal"><span class=
4968           "pre">iptables-save</span></tt> si utilizzi <tt class=
4969           "docutils literal"><span class=
4970           "pre">iptables-restore</span></tt>. Se questo deve essere
4971           fatto in modalita' <em>non interattiva</em>, ad esempio
4972           deve essere eseguito dal demone che si occupa di
4973           inizializzare le schede di rete, oppure un <em>cron</em>
4974           o altro, e' buona norma richiamare i percorsi completi
4975           sia dei comandi che dei file:</p>
4976           <pre class="literal-block">
4977 /sbin/iptables-restore /root/firewall/basic_fw
4978 </pre>
4979         </div>
4980       </div>
4981
4982       <div class="section" id="esempi">
4983         <h2><a class="toc-backref" href=
4984         "#id110">9.10&nbsp;&nbsp;&nbsp;Esempi</a></h2>
4985
4986         <p>Seguono alcuni esempi sull'uso di iptables, lo scenario
4987         e' un computer con un paio di schede di rete fisiche una
4988         delle quali collegata alla rete internet l'altra a una rete
4989         privata per la LAN interna.</p>
4990
4991         <blockquote>
4992           <ol class="arabic simple">
4993             <li><tt class="docutils literal"><span class=
4994             "pre">eth0</span></tt> scheda di rete principale sulla
4995             rete privata interna 192.168.0.0/24</li>
4996
4997             <li><tt class="docutils literal"><span class=
4998             "pre">eth1</span></tt> scheda di rete secondaria per la
4999             connessione ad internet</li>
5000
5001             <li><tt class="docutils literal"><span class=
5002             "pre">ppp0</span></tt> punto-a-punto per una
5003             connessione ad internet</li>
5004           </ol>
5005         </blockquote>
5006
5007         <div class="section" id="bloccare-i-ping-dall-esterno">
5008           <h3><a class="toc-backref" href=
5009           "#id111">9.10.1&nbsp;&nbsp;&nbsp;Bloccare i ping
5010           dall'esterno</a></h3>
5011
5012           <p>Spesso gli script che attaccano
5013           <em>automaticamente</em> le varie reti provano a fare un
5014           ping per verificare quali IP sono on-line: bloccare il
5015           traffico <tt class="docutils literal"><span class=
5016           "pre">ICMP</span></tt> in ingresso puo' aiutare ad
5017           evitare parte di questi attacchi:</p>
5018           <pre class="literal-block">
5019 iptables -A INPUT -i ppp0 -p ICMP -j DROP
5020 </pre>
5021         </div>
5022
5023         <div class="section" id="masquerading-snat">
5024           <h3><a class="toc-backref" href=
5025           "#id112">9.10.2&nbsp;&nbsp;&nbsp;Masquerading
5026           (sNAT)</a></h3>
5027
5028           <dl class="docutils">
5029             <dt>Per attivare la network address translation (in
5030             questo caso un SNAT) per la rete locale privata
5031             sull'indirizzo ip del <em>modem</em>::</dt>
5032
5033             <dd>iptables -A POSTROUTING -s
5034             192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE</dd>
5035           </dl>
5036
5037           <p>Il <em>Masquerading</em> a differenza dello
5038           <em>SNAT</em> puro (<tt class=
5039           "docutils literal"><span class="pre">-j</span>
5040           <span class="pre">SNAT</span> <span class=
5041           "pre">--to-source</span> <span class=
5042           "pre">proprio_ip_pubblico</span> <span class=
5043           "pre">)</span> <span class="pre">legge</span>
5044           <span class="pre">l'indirizzo</span> <span class=
5045           "pre">ip</span> <span class="pre">del</span> <span class=
5046           "pre">device</span> <span class="pre">``ppp0</span></tt>.
5047           In questo modo se l'IP cambia automaticamente si aggiorna
5048           anche il source natting. Se avete un indirizzo IP statico
5049           assegnato al vostro gateway potete invece usare lo SNAT
5050           semplice.</p>
5051
5052           <dl class="docutils">
5053             <dt>Altri esempi::</dt>
5054
5055             <dd>
5056               <p class="first">## Change source addresses to
5057               1.2.3.4. # iptables -t nat -A POSTROUTING -o eth0 -j
5058               SNAT --to 1.2.3.4</p>
5059
5060               <p>## Change source addresses to 1.2.3.4, 1.2.3.5 or
5061               1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j
5062               SNAT --to 1.2.3.4-1.2.3.6</p>
5063
5064               <p class="last">## Change source addresses to
5065               1.2.3.4, ports 1-1023 # iptables -t nat -A
5066               POSTROUTING -p tcp -o eth0 -j SNAT --to
5067               1.2.3.4:1-1023</p>
5068             </dd>
5069           </dl>
5070         </div>
5071
5072         <div class="section" id="brute-force">
5073           <h3><a class="toc-backref" href=
5074           "#id113">9.10.3&nbsp;&nbsp;&nbsp;Brute force</a></h3>
5075
5076           <dl class="docutils">
5077             <dt>Per limitare attacchi di tipo brute force su
5078             SSH::</dt>
5079
5080             <dd>
5081               <p class="first">iptables -A INPUT -i ppp0 -p tcp -m
5082               tcp --dport 22 -m state --state NEW -m recent
5083               --update --seconds 3000 --hitcount 4 --name DEFAULT
5084               --rsource -j DROP</p>
5085
5086               <p class="last">iptables -A INPUT -i ppp0 -p tcp -m
5087               tcp --dport 22 -m state --state NEW -m recent --set
5088               --name DEFAULT --rsource</p>
5089             </dd>
5090           </dl>
5091         </div>
5092       </div>
5093     </div>
5094
5095     <div class="section" id="note">
5096       <h1><a class="toc-backref" href=
5097       "#id114">10&nbsp;&nbsp;&nbsp;NOTE</a></h1>
5098
5099       <dl class="docutils">
5100         <dt>Bind:</dt>
5101
5102         <dd>
5103           <ul class="first last simple">
5104             <li>altri esempi commenti su una zona</li>
5105
5106             <li>esempi di una zona PTR?</li>
5107
5108             <li>dns secondari</li>
5109
5110             <li>nsupdate</li>
5111           </ul>
5112         </dd>
5113       </dl>
5114
5115       <p>sintassi: in <tt class="docutils literal"><span class=
5116       "pre">monospace</span></tt> :</p>
5117
5118       <ul class="simple">
5119         <li>nomi di files</li>
5120
5121         <li>comandi</li>
5122
5123         <li>pacchetti</li>
5124       </ul>
5125     </div>
5126   </div>
5127 </body>
5128 </html>