]> git.piffa.net Git - doc/.git/blob - servizi.html
Servizi: aggiornato squid, sintassi.
[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 25 March 2009), 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   pre.literal-block {
31          overflow: auto;
32     padding: 5px;
33     background-color: #eeffcc;
34     color: #333333;
35     line-height: 120%;
36     border: 1px solid #ac9;
37     border-left: none;
38     border-right: none;
39   }
40
41   p.topic-title {
42   font-weight: bold;
43   }
44
45   table.docinfo {
46   text-align: left;
47   margin: 2em 0em;
48   }
49
50   a[href] {
51   color: #436976;
52   background-color: transparent;
53   }
54
55   a.toc-backref {
56   text-decoration: none;
57   }
58
59   h1 a[href] {
60   color: #003a6b;
61   text-decoration: none;
62   background-color: transparent;
63   }
64
65   a.strong {
66   font-weight: bold;
67   }
68
69   img {
70   margin: 0;
71   border: 0;
72   }
73
74   p {
75   margin: 0.5em 0 1em 0;
76   text-align: justify;
77   line-height: 1.5em;
78   }
79
80
81   p a:visited {
82   color: purple;
83   background-color: transparent;
84   }
85
86   p a:active {
87   color: red;
88   background-color: transparent;
89   }
90
91   a:hover {
92   text-decoration: none;
93   }
94
95   p img {
96   border: 0;
97   margin: 0;
98   }
99
100   p.rubric {
101   font-weight: bold;
102   font-style: italic;
103   }
104
105   h1.title {
106   color: #003a6b;
107   font-size: 250%;
108   margin-bottom: 0em;
109   }
110
111   h2.subtitle {
112   color: #003a6b;
113   border-bottom: 0px;
114   }
115
116   h1, h2, h3, h4, h5, h6 {
117   color: #555;
118   background-color: transparent;
119   margin: 0em;
120   padding-top: 0.5em;
121   }
122
123   h1 {
124   font-size: 160%;
125   margin-bottom: 0.5em;
126   border-bottom: 2px solid #aaa;
127   }
128
129   h2 {
130   font-size: 140%;
131   margin-bottom: 0.5em;
132   border-bottom: 1px solid #aaa;
133   }
134
135   h3 {
136   font-size: 130%;
137   margin-bottom: 0.5em;
138   }
139
140   h4 {
141   font-size: 110%;
142   font-weight: bold;
143   margin-bottom: 0.5em;
144   }
145
146   h5 {
147   font-size: 105%;
148   font-weight: bold;
149   margin-bottom: 0.5em;
150   }
151
152   h6 {
153   font-size: 100%;
154   font-weight: bold;
155   margin-bottom: 0.5em;
156   }
157
158   dt {
159   font-style: italic;
160   }
161
162   dd {
163   margin-bottom: 1.5em;
164   }
165
166   div.admonition, div.note, div.tip, div.caution, div.important {
167   margin: 2em 2em;
168   padding: 0em 1em;
169   border-top: 1px solid #aaa;
170   border-left: 1px solid #aaa;
171   border-bottom: 2px solid #555;
172   border-right: 2px solid #555;
173   }
174
175   div.important {
176   background: transparent url('../images/important.png') 10px 2px no-repeat;
177   }
178
179   div.caution {
180   background: transparent url('../images/caution.png') 10px 2px no-repeat;
181   }
182
183   div.note {
184   background: transparent url('../images/note.png') 10px 2px no-repeat;
185   }
186
187   div.tip {
188   background: transparent url('../images/tip.png') 10px 2px no-repeat;
189   }
190
191   div.admonition-example {
192   background: transparent url('../images/tip.png') 10px 2px no-repeat;
193   }
194
195   div.admonition-critical-example {
196   background: transparent url('../images/important.png') 10px 2px no-repeat;
197   }
198
199   p.admonition-title {
200   font-weight: bold;
201   border-bottom: 1px solid #aaa;
202   padding-left: 30px;
203   }
204
205   table.docutils {
206   text-align: left;
207   border: 1px solid gray;
208   border-collapse: collapse;
209   width: 100%;
210   margin: 1.5em 0em;
211   }
212
213   table.docutils caption {
214   font-style: italic;
215   }
216
217   table.docutils td, table.docutils th {
218   padding: 0.25em 0.5em;
219   }
220
221   table.docutils th {
222   background-color: #dddddd;
223   }
224
225   div.sidebar {
226   width: 33%;
227   float: right;
228   margin: 0em 2em;
229   padding: 0em 1em;
230   border-top: 1px solid #aaa;
231   border-left: 1px solid #aaa;
232   border-bottom: 2px solid #555;
233   border-right: 2px solid #555;
234   }
235
236   p.sidebar-title {
237   margin-bottom: 0em;
238   color: #003a6b;
239   border-bottom: 1px solid #aaa;
240   font-weight: bold;
241   }
242
243   p.sidebar-subtitle {
244   margin-top: 0em;
245   font-style: italic;
246   color: #003a6b;
247   }
248
249   </style>
250 </head>
251
252 <body>
253   <div class="document" id="servizi-di-rete-passo-a-passo">
254     <h1 class="title">Servizi di rete passo a passo</h1>
255
256     <h2 class="subtitle" id=
257     "appunti-sulla-installazione-e-configurazione-dei-servizi-di-rete-in-ambiete-gnu-linx">
258     Appunti sulla installazione e configurazione dei servizi di
259     rete in ambiete Gnu/Linx</h2>
260
261     <blockquote>
262       <table class="docutils field-list" frame="void" rules="none">
263         <col class="field-name">
264         <col class="field-body">
265
266         <tbody valign="top">
267           <tr class="field">
268             <th class="field-name">Author:</th>
269
270             <td class="field-body">Andrea Manni</td>
271           </tr>
272
273           <tr class="field">
274             <th class="field-name">Copyright:</th>
275
276             <td class="field-body">GFDL</td>
277           </tr>
278
279           <tr class="field">
280             <th class="field-name">Version:</th>
281
282             <td class="field-body">0.94</td>
283           </tr>
284         </tbody>
285       </table>
286     </blockquote>
287
288     <p>Questa guida tratta la configurazione di base dei principali
289     servizi di rete utilizzati con sistemi operativi <em>Unix</em>
290     e derivati come <em>GNU/Linux</em> per gli studenti dei corsi
291     per amministratori di rete in ambiente <em>GNU/Linux</em>. In
292     particolare questa guida e' stata scritta usando come
293     riferimento la distribuzione <em>Debian GNU/Linux</em>. Gli
294     esempi presentati dovrebbero quindi essere direttamente
295     utilizzabili anche su distribuzioni derivate da Debian come
296     Ubuntu, per sistemi operativi diversi si presti attenzione ai
297     percorsi dei file citati.</p>
298
299     <div class="contents topic" id="indice-degli-argomenti">
300       <p class="topic-title first">Indice degli argomenti</p>
301
302       <ul class="auto-toc simple">
303         <li>
304           <a class="reference internal" href=
305           "#configurazione-sistema" id="id9" name=
306           "id9">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a>
307
308           <ul class="auto-toc">
309             <li><a class="reference internal" href=
310             "#solo-per-uso-interno" id="id10" name=
311             "id10">1.1&nbsp;&nbsp;&nbsp;Solo per uso
312             interno</a></li>
313
314             <li>
315               <a class="reference internal" href="#rete" id="id11"
316               name="id11">1.2&nbsp;&nbsp;&nbsp;Rete</a>
317
318               <ul class="auto-toc">
319                 <li><a class="reference internal" href=
320                 "#interfaces" id="id12" name=
321                 "id12">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></li>
322               </ul>
323             </li>
324
325             <li><a class="reference internal" href=
326             "#bash-completion" id="id13" name=
327             "id13">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></li>
328
329             <li><a class="reference internal" href="#vim" id="id14"
330             name="id14">1.4&nbsp;&nbsp;&nbsp;Vim</a></li>
331
332             <li><a class="reference internal" href="#vnc" id="id15"
333             name="id15">1.5&nbsp;&nbsp;&nbsp;VNC</a></li>
334
335             <li><a class="reference internal" href=
336             "#lista-dei-pacchetti-di-base" id="id16" name=
337             "id16">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
338             base</a></li>
339
340             <li>
341               <a class="reference internal" href=
342               "#apt-configurazione" id="id17" name=
343               "id17">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a>
344
345               <ul class="auto-toc">
346                 <li><a class="reference internal" href=
347                 "#sources-list" id="id18" name=
348                 "id18">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></li>
349
350                 <li><a class="reference internal" href=
351                 "#etc-apt-apt-conf" id="id19" name=
352                 "id19">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></li>
353               </ul>
354             </li>
355           </ul>
356         </li>
357
358         <li>
359           <a class="reference internal" href="#squid" id="id20"
360           name="id20">2&nbsp;&nbsp;&nbsp;Squid</a>
361
362           <ul class="auto-toc">
363             <li>
364               <a class="reference internal" href=
365               "#configurazione-squid-conf" id="id21" name=
366               "id21">2.1&nbsp;&nbsp;&nbsp;Configurazione:
367               squid.conf</a>
368
369               <ul class="auto-toc">
370                 <li>
371                   <a class="reference internal" href="#cache-dir"
372                   id="id22" name=
373                   "id22">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a>
374
375                   <ul class="auto-toc">
376                     <li><a class="reference internal" href=
377                     "#opzioni-del-file-system" id="id23" name=
378                     "id23">2.1.1.1&nbsp;&nbsp;&nbsp;Opzioni del
379                     file system</a></li>
380                   </ul>
381                 </li>
382
383                 <li><a class="reference internal" href=
384                 "#configurazioni-di-cache-dir" id="id24" name=
385                 "id24">2.1.2&nbsp;&nbsp;&nbsp;Configurazioni di
386                 Cache_dir</a></li>
387
388                 <li><a class="reference internal" href=
389                 "#tag-maximum-object-size" id="id25" name=
390                 "id25">2.1.3&nbsp;&nbsp;&nbsp;TAG:
391                 maximum_object_size</a></li>
392
393                 <li><a class="reference internal" href=
394                 "#tag-cache-mem" id="id26" name=
395                 "id26">2.1.4&nbsp;&nbsp;&nbsp;TAG:
396                 cache_mem</a></li>
397
398                 <li><a class="reference internal" href=
399                 "#tag-minimum-object-size" id="id27" name=
400                 "id27">2.1.5&nbsp;&nbsp;&nbsp;TAG:
401                 minimum_object_size</a></li>
402               </ul>
403             </li>
404
405             <li>
406               <a class="reference internal" href=
407               "#negoziazione-degli-accesi-al-servizio" id="id28"
408               name="id28">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli
409               accesi al servizio</a>
410
411               <ul class="auto-toc">
412                 <li><a class="reference internal" href=
413                 "#acl-e-http-access" id="id29" name=
414                 "id29">2.2.1&nbsp;&nbsp;&nbsp;ACL e http
415                 access</a></li>
416               </ul>
417             </li>
418
419             <li>
420               <a class="reference internal" href="#testare-squid"
421               id="id30" name="id30">2.3&nbsp;&nbsp;&nbsp;Testare
422               Squid</a>
423
424               <ul class="auto-toc">
425                 <li><a class="reference internal" href=
426                 "#client-wgetrc" id="id31" name=
427                 "id31">2.3.1&nbsp;&nbsp;&nbsp;Client:
428                 ~/.wgetrc</a></li>
429
430                 <li><a class="reference internal" href=
431                 "#server-access-log" id="id32" name=
432                 "id32">2.3.2&nbsp;&nbsp;&nbsp;Server:
433                 access.log</a></li>
434               </ul>
435             </li>
436           </ul>
437         </li>
438
439         <li><a class="reference internal" href="#tiny-proxy" id=
440         "id33" name="id33">3&nbsp;&nbsp;&nbsp;Tiny proxy</a></li>
441
442         <li>
443           <a class="reference internal" href="#apache" id="id34"
444           name="id34">4&nbsp;&nbsp;&nbsp;Apache</a>
445
446           <ul class="auto-toc">
447             <li><a class="reference internal" href=
448             "#pacchetti-da-installare" id="id35" name=
449             "id35">4.1&nbsp;&nbsp;&nbsp;Pacchetti da
450             installare::</a></li>
451
452             <li><a class="reference internal" href=
453             "#configurazione-di-apache" id="id36" name=
454             "id36">4.2&nbsp;&nbsp;&nbsp;Configurazione di
455             Apache</a></li>
456
457             <li><a class="reference internal" href="#apache-conf"
458             id="id37" name=
459             "id37">4.3&nbsp;&nbsp;&nbsp;apache.conf</a></li>
460
461             <li>
462               <a class="reference internal" href=
463               "#installazione-di-php" id="id38" name=
464               "id38">4.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a>
465
466               <ul class="auto-toc">
467                 <li><a class="reference internal" href=
468                 "#test-del-modulo-php" id="id39" name=
469                 "id39">4.4.1&nbsp;&nbsp;&nbsp;Test del modulo
470                 php</a></li>
471
472                 <li><a class="reference internal" href=
473                 "#installazione-del-supporto-per-mysql-a-php" id=
474                 "id40" name=
475                 "id40">4.4.2&nbsp;&nbsp;&nbsp;Installazione del
476                 supporto per Mysql a PHP</a></li>
477
478                 <li><a class="reference internal" href=
479                 "#phpmyadmin" id="id41" name=
480                 "id41">4.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></li>
481
482                 <li><a class="reference internal" href=
483                 "#installazione-del-supporto-per-postgresql-a-php"
484                 id="id42" name=
485                 "id42">4.4.4&nbsp;&nbsp;&nbsp;Installazione del
486                 supporto per Postgresql a PHP</a></li>
487
488                 <li><a class="reference internal" href=
489                 "#phppgadmin" id="id43" name=
490                 "id43">4.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></li>
491               </ul>
492             </li>
493
494             <li>
495               <a class="reference internal" href="#virtual-hosts"
496               id="id44" name="id44">4.5&nbsp;&nbsp;&nbsp;Virtual
497               hosts</a>
498
499               <ul class="auto-toc">
500                 <li><a class="reference internal" href=
501                 "#gestione-dns" id="id45" name=
502                 "id45">4.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></li>
503
504                 <li><a class="reference internal" href=
505                 "#eseguire-una-query-dns-con-dig" id="id46" name=
506                 "id46">4.5.2&nbsp;&nbsp;&nbsp;Eseguire una query
507                 DNS con <tt class="docutils literal"><span class=
508                 "pre">dig</span></tt>::</a></li>
509
510                 <li><a class="reference internal" href="#id3" id=
511                 "id47" name="id47">4.5.3&nbsp;&nbsp;&nbsp;Virtual
512                 hosts</a></li>
513               </ul>
514             </li>
515
516             <li>
517               <a class="reference internal" href=
518               "#negoziazione-accessi" id="id48" name=
519               "id48">4.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a>
520
521               <ul class="auto-toc">
522                 <li><a class="reference internal" href=
523                 "#limiti-su-base-ip" id="id49" name=
524                 "id49">4.6.1&nbsp;&nbsp;&nbsp;Limiti su base
525                 IP</a></li>
526               </ul>
527             </li>
528
529             <li>
530               <a class="reference internal" href=
531               "#user-authentication" id="id50" name=
532               "id50">4.7&nbsp;&nbsp;&nbsp;User Authentication</a>
533
534               <ul class="auto-toc">
535                 <li><a class="reference internal" href=
536                 "#definire-la-cartella" id="id51" name=
537                 "id51">4.7.1&nbsp;&nbsp;&nbsp;Definire la
538                 cartella</a></li>
539
540                 <li><a class="reference internal" href=
541                 "#creazione-del-database-delle-passwords" id="id52"
542                 name="id52">4.7.2&nbsp;&nbsp;&nbsp;Creazione del
543                 database delle passwords</a></li>
544
545                 <li><a class="reference internal" href="#id4" id=
546                 "id53" name=
547                 "id53">4.7.3&nbsp;&nbsp;&nbsp;Configurazione di
548                 Apache</a></li>
549               </ul>
550             </li>
551
552             <li><a class="reference internal" href="#cavets" id=
553             "id54" name="id54">4.8&nbsp;&nbsp;&nbsp;Cavets</a></li>
554           </ul>
555         </li>
556
557         <li>
558           <a class="reference internal" href="#domain-name-system"
559           id="id55" name="id55">5&nbsp;&nbsp;&nbsp;Domain Name
560           System</a>
561
562           <ul class="auto-toc">
563             <li><a class="reference internal" href=
564             "#risoluzione-inversa" id="id56" name=
565             "id56">5.1&nbsp;&nbsp;&nbsp;Risoluzione
566             Inversa</a></li>
567
568             <li><a class="reference internal" href=
569             "#nomi-di-dominio" id="id57" name=
570             "id57">5.2&nbsp;&nbsp;&nbsp;Nomi di dominio</a></li>
571
572             <li><a class="reference internal" href=
573             "#tipologie-di-record" id="id58" name=
574             "id58">5.3&nbsp;&nbsp;&nbsp;Tipologie di
575             record</a></li>
576
577             <li><a class="reference internal" href="#utilizzo" id=
578             "id59" name=
579             "id59">5.4&nbsp;&nbsp;&nbsp;Utilizzo</a></li>
580
581             <li><a class="reference internal" href=
582             "#risoluzione-dei-nomi-di-dominio" id="id60" name=
583             "id60">5.5&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
584             dominio</a></li>
585
586             <li><a class="reference internal" href="#dig" id="id61"
587             name="id61">5.6&nbsp;&nbsp;&nbsp;Dig</a></li>
588
589             <li><a class="reference internal" href="#resolv-conf"
590             id="id62" name=
591             "id62">5.7&nbsp;&nbsp;&nbsp;resolv.conf</a></li>
592
593             <li><a class="reference internal" href="#etc-hosts" id=
594             "id63" name=
595             "id63">5.8&nbsp;&nbsp;&nbsp;/etc/hosts</a></li>
596
597             <li>
598               <a class="reference internal" href="#hostname" id=
599               "id64" name="id64">5.9&nbsp;&nbsp;&nbsp;Hostname</a>
600
601               <ul class="auto-toc">
602                 <li><a class="reference internal" href="#fqdn" id=
603                 "id65" name=
604                 "id65">5.9.1&nbsp;&nbsp;&nbsp;FQDN</a></li>
605               </ul>
606             </li>
607           </ul>
608         </li>
609
610         <li>
611           <a class="reference internal" href="#dnsmasq" id="id66"
612           name="id66">6&nbsp;&nbsp;&nbsp;DNSmasq</a>
613
614           <ul class="auto-toc">
615             <li><a class="reference internal" href=
616             "#configurazione" id="id67" name=
617             "id67">6.1&nbsp;&nbsp;&nbsp;Configurazione</a></li>
618
619             <li><a class="reference internal" href="#dhcp" id=
620             "id68" name="id68">6.2&nbsp;&nbsp;&nbsp;DHCP</a></li>
621
622             <li><a class="reference internal" href="#dns-cache" id=
623             "id69" name="id69">6.3&nbsp;&nbsp;&nbsp;DNS
624             cache</a></li>
625           </ul>
626         </li>
627
628         <li>
629           <a class="reference internal" href=
630           "#bind-dns-autoritativo" id="id70" name=
631           "id70">7&nbsp;&nbsp;&nbsp;Bind : DNS Autoritativo</a>
632
633           <ul class="auto-toc">
634             <li><a class="reference internal" href="#id5" id="id71"
635             name="id71">7.1&nbsp;&nbsp;&nbsp;DNS cache</a></li>
636
637             <li>
638               <a class="reference internal" href=
639               "#ospitare-una-zona" id="id72" name=
640               "id72">7.2&nbsp;&nbsp;&nbsp;Ospitare una zona</a>
641
642               <ul class="auto-toc">
643                 <li><a class="reference internal" href=
644                 "#named-conf-local" id="id73" name=
645                 "id73">7.2.1&nbsp;&nbsp;&nbsp;named.conf.local</a></li>
646
647                 <li>
648                   <a class="reference internal" href=
649                   "#configurazione-della-zona" id="id74" name=
650                   "id74">7.2.2&nbsp;&nbsp;&nbsp;Configurazione
651                   della zona</a>
652
653                   <ul class="auto-toc">
654                     <li><a class="reference internal" href=
655                     "#soa-start-of-authority-record" id="id75"
656                     name="id75">7.2.2.1&nbsp;&nbsp;&nbsp;SOA: Start
657                     of Authority Record</a></li>
658
659                     <li><a class="reference internal" href=
660                     "#altri-campi" id="id76" name=
661                     "id76">7.2.2.2&nbsp;&nbsp;&nbsp;Altri
662                     campi:</a></li>
663                   </ul>
664                 </li>
665               </ul>
666             </li>
667
668             <li><a class="reference internal" href="#dns-slave" id=
669             "id77" name="id77">7.3&nbsp;&nbsp;&nbsp;DNS
670             slave</a></li>
671
672             <li>
673               <a class="reference internal" href=
674               "#aggiornamento-dinamico-nsupdate" id="id78" name=
675               "id78">7.4&nbsp;&nbsp;&nbsp;Aggiornamento dinamico:
676               nsupdate</a>
677
678               <ul class="auto-toc">
679                 <li><a class="reference internal" href=
680                 "#configurazione-client-nsupdate" id="id79" name=
681                 "id79">7.4.1&nbsp;&nbsp;&nbsp;Configurazione client
682                 (nsupdate)</a></li>
683
684                 <li><a class="reference internal" href=
685                 "#configurazione-server-riconoscimento-chiave" id=
686                 "id80" name=
687                 "id80">7.4.2&nbsp;&nbsp;&nbsp;Configurazione
688                 server: riconoscimento chiave</a></li>
689
690                 <li><a class="reference internal" href=
691                 "#server-gestione-dell-intera-zona" id="id81" name=
692                 "id81">7.4.3&nbsp;&nbsp;&nbsp;Server: gestione
693                 dell'intera zona</a></li>
694
695                 <li><a class="reference internal" href=
696                 "#automatizzare-l-aggiornamento-dinamico" id="id82"
697                 name="id82">7.4.4&nbsp;&nbsp;&nbsp;Automatizzare
698                 l'aggiornamento dinamico</a></li>
699               </ul>
700             </li>
701
702             <li><a class="reference internal" href=
703             "#link-suggeriti" id="id83" name=
704             "id83">7.5&nbsp;&nbsp;&nbsp;Link suggeriti:</a></li>
705           </ul>
706         </li>
707
708         <li>
709           <a class="reference internal" href="#samba" id="id84"
710           name="id84">8&nbsp;&nbsp;&nbsp;Samba</a>
711
712           <ul class="auto-toc">
713             <li><a class="reference internal" href="#pacchetti" id=
714             "id85" name=
715             "id85">8.1&nbsp;&nbsp;&nbsp;Pacchetti</a></li>
716
717             <li><a class="reference internal" href=
718             "#passwords-e-autenticazione" id="id86" name=
719             "id86">8.2&nbsp;&nbsp;&nbsp;Passwords e
720             autenticazione</a></li>
721
722             <li><a class="reference internal" href=
723             "#creazione-utenti" id="id87" name=
724             "id87">8.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></li>
725
726             <li>
727               <a class="reference internal" href=
728               "#creare-la-condivisione" id="id88" name=
729               "id88">8.4&nbsp;&nbsp;&nbsp;Creare la
730               condivisione</a>
731
732               <ul class="auto-toc">
733                 <li><a class="reference internal" href=
734                 "#sicurezza-permessi-di-esecuzione-sul-server" id=
735                 "id89" name=
736                 "id89">8.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi
737                 di esecuzione sul server</a></li>
738               </ul>
739             </li>
740
741             <li>
742               <a class="reference internal" href=
743               "#configurazione-dell-applicativo-samba-vero-e-proprio"
744               id="id90" name=
745               "id90">8.5&nbsp;&nbsp;&nbsp;Configurazione
746               dell'applicativo Samba vero e proprio.</a>
747
748               <ul class="auto-toc">
749                 <li><a class="reference internal" href=
750                 "#creazione-di-un-gruppo" id="id91" name=
751                 "id91">8.5.1&nbsp;&nbsp;&nbsp;Creazione di un
752                 gruppo</a></li>
753               </ul>
754             </li>
755
756             <li><a class="reference internal" href=
757             "#testare-il-servizio" id="id92" name=
758             "id92">8.6&nbsp;&nbsp;&nbsp;Testare il
759             Servizio</a></li>
760           </ul>
761         </li>
762
763         <li>
764           <a class="reference internal" href=
765           "#server-di-posta-postfix" id="id93" name=
766           "id93">9&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a>
767
768           <ul class="auto-toc">
769             <li>
770               <a class="reference internal" href=
771               "#test-del-server-smtp" id="id94" name=
772               "id94">9.1&nbsp;&nbsp;&nbsp;Test del server smtp</a>
773
774               <ul class="auto-toc">
775                 <li><a class="reference internal" href="#swaks" id=
776                 "id95" name=
777                 "id95">9.1.1&nbsp;&nbsp;&nbsp;Swaks</a></li>
778               </ul>
779             </li>
780
781             <li><a class="reference internal" href="#imap-e-pop"
782             id="id96" name="id96">9.2&nbsp;&nbsp;&nbsp;Imap e
783             pop</a></li>
784
785             <li>
786               <a class="reference internal" href=
787               "#client-a-riga-di-comando" id="id97" name=
788               "id97">9.3&nbsp;&nbsp;&nbsp;Client a riga di
789               comando</a>
790
791               <ul class="auto-toc">
792                 <li><a class="reference internal" href="#mailx" id=
793                 "id98" name=
794                 "id98">9.3.1&nbsp;&nbsp;&nbsp;mailx</a></li>
795
796                 <li><a class="reference internal" href="#mutt" id=
797                 "id99" name=
798                 "id99">9.3.2&nbsp;&nbsp;&nbsp;Mutt</a></li>
799
800                 <li><a class="reference internal" href=
801                 "#web-client" id="id100" name=
802                 "id100">9.3.3&nbsp;&nbsp;&nbsp;Web client</a></li>
803               </ul>
804             </li>
805
806             <li>
807               <a class="reference internal" href="#graylisting" id=
808               "id101" name=
809               "id101">9.4&nbsp;&nbsp;&nbsp;Graylisting</a>
810
811               <ul class="auto-toc">
812                 <li><a class="reference internal" href=
813                 "#abilitazione-in-postfix" id="id102" name=
814                 "id102">9.4.1&nbsp;&nbsp;&nbsp;Abilitazione in
815                 Postfix</a></li>
816
817                 <li><a class="reference internal" href="#test" id=
818                 "id103" name=
819                 "id103">9.4.2&nbsp;&nbsp;&nbsp;Test</a></li>
820
821                 <li><a class="reference internal" href=
822                 "#statistiche" id="id104" name=
823                 "id104">9.4.3&nbsp;&nbsp;&nbsp;Statistiche</a></li>
824               </ul>
825             </li>
826           </ul>
827         </li>
828
829         <li>
830           <a class="reference internal" href="#firewall" id="id105"
831           name="id105">10&nbsp;&nbsp;&nbsp;Firewall</a>
832
833           <ul class="auto-toc">
834             <li><a class="reference internal" href="#links" id=
835             "id106" name=
836             "id106">10.1&nbsp;&nbsp;&nbsp;Links</a></li>
837
838             <li><a class="reference internal" href="#ipfilter" id=
839             "id107" name=
840             "id107">10.2&nbsp;&nbsp;&nbsp;Ipfilter</a></li>
841
842             <li>
843               <a class="reference internal" href=
844               "#progettazione-di-un-firewall" id="id108" name=
845               "id108">10.3&nbsp;&nbsp;&nbsp;Progettazione di un
846               firewall</a>
847
848               <ul class="auto-toc">
849                 <li><a class="reference internal" href=
850                 "#collocazione" id="id109" name=
851                 "id109">10.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></li>
852
853                 <li><a class="reference internal" href=
854                 "#policy-di-default" id="id110" name=
855                 "id110">10.3.2&nbsp;&nbsp;&nbsp;Policy di
856                 default</a></li>
857
858                 <li><a class="reference internal" href="#hardware"
859                 id="id111" name=
860                 "id111">10.3.3&nbsp;&nbsp;&nbsp;Hardware</a></li>
861               </ul>
862             </li>
863
864             <li><a class="reference internal" href=
865             "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
866             "id112" name="id112">10.4&nbsp;&nbsp;&nbsp;Percorso dei
867             pacchetti tra tabelle e catene</a></li>
868
869             <li>
870               <a class="reference internal" href=
871               "#concetti-di-base" id="id113" name=
872               "id113">10.5&nbsp;&nbsp;&nbsp;Concetti di base</a>
873
874               <ul class="auto-toc">
875                 <li><a class="reference internal" href=
876                 "#tabelle-catene-regole" id="id114" name=
877                 "id114">10.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
878                 regole</a></li>
879
880                 <li><a class="reference internal" href="#match" id=
881                 "id115" name=
882                 "id115">10.5.2&nbsp;&nbsp;&nbsp;Match</a></li>
883
884                 <li><a class="reference internal" href="#targets"
885                 id="id116" name=
886                 "id116">10.5.3&nbsp;&nbsp;&nbsp;Targets</a></li>
887               </ul>
888             </li>
889
890             <li><a class="reference internal" href=
891             "#tabella-filter" id="id117" name=
892             "id117">10.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></li>
893
894             <li><a class="reference internal" href=
895             "#flush-automatico-per-macchine-remote" id="id118"
896             name="id118">10.7&nbsp;&nbsp;&nbsp;Flush automatico per
897             macchine remote</a></li>
898
899             <li><a class="reference internal" href=
900             "#gestione-regole-rules" id="id119" name=
901             "id119">10.8&nbsp;&nbsp;&nbsp;Gestione regole
902             (rules)</a></li>
903
904             <li>
905               <a class="reference internal" href=
906               "#salvataggio-regole" id="id120" name=
907               "id120">10.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a>
908
909               <ul class="auto-toc">
910                 <li><a class="reference internal" href=
911                 "#iptables-save" id="id121" name=
912                 "id121">10.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></li>
913
914                 <li><a class="reference internal" href=
915                 "#iptables-restore" id="id122" name=
916                 "id122">10.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></li>
917               </ul>
918             </li>
919
920             <li>
921               <a class="reference internal" href="#esempi" id=
922               "id123" name=
923               "id123">10.10&nbsp;&nbsp;&nbsp;Esempi</a>
924
925               <ul class="auto-toc">
926                 <li><a class="reference internal" href=
927                 "#bloccare-i-ping-dall-esterno" id="id124" name=
928                 "id124">10.10.1&nbsp;&nbsp;&nbsp;Bloccare i ping
929                 dall'esterno</a></li>
930
931                 <li><a class="reference internal" href=
932                 "#masquerading-snat" id="id125" name=
933                 "id125">10.10.2&nbsp;&nbsp;&nbsp;Masquerading
934                 (sNAT)</a></li>
935
936                 <li><a class="reference internal" href=
937                 "#brute-force" id="id126" name=
938                 "id126">10.10.3&nbsp;&nbsp;&nbsp;Brute
939                 force</a></li>
940               </ul>
941             </li>
942           </ul>
943         </li>
944
945         <li>
946           <a class="reference internal" href="#ftp-server" id=
947           "id127" name="id127">11&nbsp;&nbsp;&nbsp;FTP Server</a>
948
949           <ul class="auto-toc">
950             <li><a class="reference internal" href="#id8" id=
951             "id128" name=
952             "id128">11.1&nbsp;&nbsp;&nbsp;Pacchetti</a></li>
953
954             <li><a class="reference internal" href="#sessioni-ftp"
955             id="id129" name="id129">11.2&nbsp;&nbsp;&nbsp;Sessioni
956             ftp</a></li>
957
958             <li><a class="reference internal" href=
959             "#configurazione-iniziale" id="id130" name=
960             "id130">11.3&nbsp;&nbsp;&nbsp;Configurazione
961             iniziale</a></li>
962
963             <li><a class="reference internal" href=
964             "#abilitare-gli-utenti-locali" id="id131" name=
965             "id131">11.4&nbsp;&nbsp;&nbsp;Abilitare gli utenti
966             locali</a></li>
967
968             <li><a class="reference internal" href="#jail-chroot"
969             id="id132" name="id132">11.5&nbsp;&nbsp;&nbsp;Jail
970             chroot</a></li>
971
972             <li><a class="reference internal" href=
973             "#permessi-sul-filesystem" id="id133" name=
974             "id133">11.6&nbsp;&nbsp;&nbsp;Permessi sul
975             filesystem</a></li>
976
977             <li><a class="reference internal" href=
978             "#shell-dell-utente" id="id134" name=
979             "id134">11.7&nbsp;&nbsp;&nbsp;Shell
980             dell'utente</a></li>
981
982             <li><a class="reference internal" href="#altre-opzioni"
983             id="id135" name="id135">11.8&nbsp;&nbsp;&nbsp;Altre
984             opzioni</a></li>
985           </ul>
986         </li>
987       </ul>
988     </div>
989
990     <p>Generato il 2010-02-09 con: <a class="reference external"
991     href=
992     "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
993
994     <div class="section" id="configurazione-sistema">
995       <h1><a class="toc-backref" href=
996       "#id9">1&nbsp;&nbsp;&nbsp;Configurazione sistema</a></h1>
997
998       <div class="section" id="solo-per-uso-interno">
999         <h2><a class="toc-backref" href=
1000         "#id10">1.1&nbsp;&nbsp;&nbsp;Solo per uso interno</a></h2>
1001
1002         <p>Impostazioni di base per la configurazione del sistema
1003         operativo e della rete nel laboratorio 208 facente parte
1004         della rete piffa.net .</p>
1005
1006         <p>Sono qui riportati i parametri della rete locale per
1007         comodita' degli studenti, gli altri lettori possono
1008         considerarli come riferimento per comprendere i valori
1009         espressi nei vari file di configurazione. Ad esempio:
1010         quando leggerete <tt class="docutils literal"><span class=
1011         "pre">10.10.208.248:3128</span></tt> saprete che si tratta
1012         del nostro <em>proxy http</em> in ascolto sulla porta
1013         <cite>3128</cite>, stara' quindi a voi sostituire i dati
1014         con gli equivalenti <em>IP</em> della vostra rete.</p>
1015       </div>
1016
1017       <div class="section" id="rete">
1018         <h2><a class="toc-backref" href=
1019         "#id11">1.2&nbsp;&nbsp;&nbsp;Rete</a></h2>
1020
1021         <p>Parametri della rete attualmente in uso:</p>
1022
1023         <table border="1" class="docutils">
1024           <colgroup>
1025             <col width="45%">
1026             <col width="55%">
1027           </colgroup>
1028
1029           <tbody valign="top">
1030             <tr>
1031               <td colspan="2">Parametri della rete</td>
1032             </tr>
1033
1034             <tr>
1035               <td>rete</td>
1036
1037               <td>10.10.208.0/24</td>
1038             </tr>
1039
1040             <tr>
1041               <td>netmask</td>
1042
1043               <td>255.255.255.0</td>
1044             </tr>
1045
1046             <tr>
1047               <td>broadcast</td>
1048
1049               <td>10.10.208.255</td>
1050             </tr>
1051
1052             <tr>
1053               <td>gateway</td>
1054
1055               <td>10.10.208.248</td>
1056             </tr>
1057
1058             <tr>
1059               <td>DNS</td>
1060
1061               <td>10.10.208.248</td>
1062             </tr>
1063           </tbody>
1064         </table>
1065
1066         <p>Dal server locale degli studeti,
1067         <strong>Bender</strong>, corrispondente all'IP <tt class=
1068         "docutils literal"><span class=
1069         "pre">10.10.208.248</span></tt>, vengono erogati i servizi
1070         DHCP, DNS, gateway (con NAT), proxy http e mirror della
1071         distribuzione Debian ( <a class="reference external" href=
1072         "http://debian.piffa.net">http://debian.piffa.net</a>).
1073         Altri servizi in esecuzione sul server:</p>
1074
1075         <ul class="simple">
1076           <li>Rsync server e altri software di aggiornamento /
1077           installazione di massa</li>
1078
1079           <li>Server imap / pop3 / webmail / smtp</li>
1080
1081           <li>Server ssh per i test degli studenti</li>
1082
1083           <li>File server Samba, NFS e controller di qualsiasi
1084           altro FS distribuito</li>
1085
1086           <li>Print server per la gestione delle stampanti</li>
1087
1088           <li>DNS server</li>
1089
1090           <li>Mirror locale delle *.iso dei sistemi operativi e dei
1091           vari software usati durante le lezioni</li>
1092
1093           <li>Spazi web con PHP, MySQL, Postgresql (altri DB o
1094           framework vengono attivati a seconda dei corsi
1095           attivi)</li>
1096         </ul>
1097
1098         <p>Durante il corso delle lezioni e' opportuno che le
1099         macchine degli studenti si appoggino al server Bender
1100         (ottetto finale <tt class="docutils literal"><span class=
1101         "pre">248</span></tt>), nel caso questo non fosse
1102         raggiungibile (ad esempio per permettere impostazioni di
1103         DHCP / routing diverse) sara' comunque disponibile il
1104         <tt class="docutils literal"><span class=
1105         "pre">10.10.208.254</span></tt> come gateway | DNS per la
1106         rete <tt class="docutils literal"><span class=
1107         "pre">10.10.208.10</span></tt>.</p>
1108
1109         <p><strong>Non e' piu' possibile</strong> raggiungere
1110         Bender tramite l'IP pubblico <tt class=
1111         "docutils literal"><span class=
1112         "pre">212.22.136.248</span></tt> o <em>qualsiasi altro
1113         ip</em> della classe <tt class=
1114         "docutils literal"><span class="pre">C</span> <span class=
1115         "pre">212.22.136.0/24</span></tt> precedentemente
1116         disponibile.</p>
1117
1118         <p>Il computer del docente con il server VNC e' sempre
1119         configurato con l'ottetto finale: <tt class=
1120         "docutils literal"><span class="pre">177</span></tt> della
1121         rete utilizzata durante le lezioni (quindi generalmente la
1122         VNC sara' disponibile sul <tt class=
1123         "docutils literal"><span class=
1124         "pre">10.10.208.177:1</span></tt>.</p>
1125
1126         <p>Gli studenti sono pregati di non impedire l'accesso SSH
1127         alla propria macchina dal computer del docente, e non
1128         modificare la password dell'utente <tt class=
1129         "docutils literal"><span class="pre">root</span></tt> del
1130         sistema operativo <em>pre-istallato</em> (ad es:
1131         <em>Diurno</em>).</p>
1132
1133         <div class="section" id="interfaces">
1134           <h3><a class="toc-backref" href=
1135           "#id12">1.2.1&nbsp;&nbsp;&nbsp;interfaces</a></h3>
1136
1137           <p>Segue un esempio del file di configurazione della
1138           scheda di rete con configurazione statica:</p>
1139
1140           <p>/etc/network/interfaces:</p>
1141           <pre class="literal-block">
1142 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
1143
1144 # The loopback interface
1145 iface lo inet loopback
1146
1147 # La prima scheda di rete (se si chiama eth0)
1148 iface etho inet static
1149   # esempio con dhcp:
1150   # iface etho inet dhcp
1151 address 10.10.208.101
1152 netmask 255.255.255.0
1153 network 10.10.208.0
1154 broadcast 10.10.208.255
1155 gateway 10.10.208.254
1156
1157 # Quali interfaccie devono partire automaticamente:
1158 auto lo eth0
1159 </pre>
1160
1161           <p>Controllare il nome della propria scheda di rete: a
1162           volte <em>udev</em> rinomina la prima scheda a <tt class=
1163           "docutils literal"><span class="pre">eth1</span></tt>,
1164           oppure potreste avere piu' di una scheda di rete (anche
1165           un'interfaccia <em>firewire</em> puo' essere
1166           automaticamente abilitata come scheda di rete).</p>
1167
1168           <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
1169           , eth0:1 , ...) ricordarsi che queste dipendono dalla
1170           scheda fisica a cui sono associate: abbattere con
1171           <tt class="docutils literal"><span class=
1172           "pre">ifconfig</span> <span class="pre">down</span>
1173           <span class="pre">eth0</span></tt> la scheda principale
1174           fara' cadere anche queste. Tornando ad attivare la scada
1175           principale con <tt class="docutils literal"><span class=
1176           "pre">ifconfig</span> <span class="pre">eth0</span>
1177           <span class="pre">up</span></tt> la virtuale tornera'
1178           attiva: nel caso voleste disabilitarla dovrete quindi
1179           sempre abbattere manualmente la scheda virtuale
1180           <em>prima</em> della scheda reale.</p>
1181
1182           <p>I DNS vanno indicati nel file <tt class=
1183           "docutils literal"><span class=
1184           "pre">/etc/resolv.conf</span></tt> , la cui sintassi e'
1185           spiegata al punto 4.6 . Come DNS si <em>deve</em> usare
1186           il server Bender, alcuni parametri dei software di
1187           installazione, risoluzione dei mirror, vengono
1188           opportunamente modificatia da questo DNS.</p>
1189         </div>
1190       </div>
1191
1192       <div class="section" id="bash-completion">
1193         <h2><a class="toc-backref" href=
1194         "#id13">1.3&nbsp;&nbsp;&nbsp;Bash completion</a></h2>
1195
1196         <p>Il completamento automatico della shell (che si attiva
1197         premendo il tasto tab una o due volte mentre si sta
1198         scrivendo un termine) permette di comporre automaticamente
1199         i nomi dei comandi e i percorsi dei file, sopratutto la
1200         composizione automatica dei percorsi dei file e' di grande
1201         importanza.</p>
1202
1203         <p>Bash_completion permette di integrare il completamento
1204         automatico con i nomi dei pacchetti e oggetti dei comandi:
1205         ad es. volendo digitare <tt class=
1206         "docutils literal"><span class="pre">apt-get</span>
1207         <span class="pre">inst[TAB]</span> <span class=
1208         "pre">xtigh[TAB]</span></tt> ora verra' completato
1209         automaticamente sia la parola <tt class=
1210         "docutils literal"><span class="pre">install</span></tt>
1211         che il nome del pacchetto <tt class=
1212         "docutils literal"><span class=
1213         "pre">xtightvncviewer</span></tt>.</p>
1214
1215         <p>Abilitare /etc/bash_completion nel file <tt class=
1216         "docutils literal"><span class=
1217         "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
1218         proprio <tt class="docutils literal"><span class=
1219         "pre">~/.bashrc</span></tt> (che sarebbe il file
1220         <em>nascosto</em>, quindi con un punto all'inizio del nome
1221         del file, di configurazione della shell bash per ogni
1222         utente, presente nella propria <em>home
1223         directory</em>):</p>
1224         <pre class="literal-block">
1225 echo ". /etc/bash_completion" &gt;&gt; ~/.bashrc
1226 </pre>
1227
1228         <p>Esempio di ~/.bahsrc</p>
1229         <pre class="literal-block">
1230 # ~/.bashrc: executed by bash(1) for non-login shells.
1231
1232 export PS1='\h:\w\$ '
1233 umask 022
1234
1235 # De-commentare le seguenti righe per abilitare la colorazione dei
1236 # nomi dei file:
1237  export LS_OPTIONS='--color=auto'
1238  eval "`dircolors`"
1239  alias ls='ls $LS_OPTIONS'
1240  alias ll='ls $LS_OPTIONS -l'
1241  alias l='ls $LS_OPTIONS -lA'
1242
1243 # Abilitare i seguenti alias per impostare la conferma per cancellare file
1244 # alias rm='rm -i'
1245 # alias cp='cp -i'
1246 # alias mv='mv -i'
1247
1248 # questo abilita bash completion
1249 . /etc/bash_completion
1250 </pre>
1251
1252         <p>Il file <tt class="docutils literal"><span class=
1253         "pre">/etc/bash_completion</span></tt> deve essere presente
1254         nel sistema, in caso contrario installare il pacchetto:
1255         <tt class="docutils literal"><span class=
1256         "pre">bash-completion</span></tt>. Generalmente l'utente
1257         <tt class="docutils literal"><span class=
1258         "pre">root</span></tt> ha un file <tt class=
1259         "docutils literal"><span class="pre">.bashrc</span></tt>
1260         preimpostato analogo a quello citato sopra, a differenza
1261         dei normali utenti di sistema.</p>
1262
1263         <p>Links:</p>
1264
1265         <ul class="simple">
1266           <li><a class="reference external" href=
1267           "http://www.debian-administration.org/articles/316">An
1268           introduction to bash completion</a></li>
1269
1270           <li><a class="reference external" href=
1271           "http://www.caliban.org/bash/">Working more productively
1272           with bash 2.x/3.x</a></li>
1273
1274           <li>UNIX / Linux Shell Scripting Tutorial: <a class=
1275           "reference external" href=
1276           "http://steve-parker.org/sh/sh.shtml">http://steve-parker.org/sh/sh.shtml</a></li>
1277         </ul>
1278       </div>
1279
1280       <div class="section" id="vim">
1281         <h2><a class="toc-backref" href=
1282         "#id14">1.4&nbsp;&nbsp;&nbsp;Vim</a></h2>
1283
1284         <p>Vim e' l'editor di testo preferito dai sistemisti,
1285         quindi sara' conveniente impostare fin da subito alcune
1286         impostazioni per renderlo piu' comodo.</p>
1287
1288         <p>Assicurarsi che sia installata nel sistema la versione
1289         completa dell'editor installando il pacchetto <tt class=
1290         "docutils literal"><span class="pre">vim</span></tt>:</p>
1291         <pre class="literal-block">
1292 # apt-get install vim
1293 </pre>
1294
1295         <p>Modificare poi il file di configurazione generale
1296         <tt class="docutils literal"><span class=
1297         "pre">/etc/vim/vimrc</span></tt></p>
1298         <pre class="literal-block">
1299 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1300 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1301 " you can find below.  If you wish to change any of those settings, you should
1302 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1303 " everytime an upgrade of the vim packages is performed.  It is recommended to
1304 " make changes after sourcing debian.vim since it alters the value of the
1305 " 'compatible' option.
1306
1307 " This line should not be removed as it ensures that various options are
1308 " properly set to work with the Vim-related packages available in Debian.
1309 runtime! debian.vim
1310
1311 " Uncomment the next line to make Vim more Vi-compatible
1312 " NOTE: debian.vim sets 'nocompatible'.  Setting 'compatible' changes numerous
1313 " options, so any other options should be set AFTER setting 'compatible'.
1314 "set compatible
1315
1316 " Vim5 and later versions support syntax highlighting. Uncommenting the next
1317 " line enables syntax highlighting by default.
1318 syntax on
1319
1320 " If using a dark background within the editing area and syntax highlighting
1321 " turn on this option as well.
1322 set background=dark
1323
1324 " Uncomment the following to have Vim jump to the last position when
1325 " reopening a file
1326
1327 if has("autocmd")
1328   au BufReadPost * if line("'\"") &gt; 0 &amp;&amp; line("'\"") &lt;= line("$")
1329     \| exe "normal! g'\"" | endif
1330 endif
1331
1332 " Uncomment the following to have Vim load indentation rules and plugins
1333 " according to the detected filetype.
1334 " This is not recommanded if you often copy and paste into vim,
1335 " as it messes all the indentation.
1336 if has("autocmd")
1337   filetype plugin indent on
1338 endif
1339
1340 " This goes for comments folding: use co to expnad and zc to compress,
1341 " zi to toggle on/off
1342 set fdm=expr
1343 set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
1344
1345 " The following are commented out as they cause vim to behave a lot
1346 " differently from regular Vi. They are highly recommended though.
1347 set showcmd             " Show (partial) command in status line.
1348 "set showmatch          " Show matching brackets.
1349 # Ignorecase is quite userfull
1350 set ignorecase          " Do case insensitive matching
1351 "set smartcase          " Do smart case matching
1352 "set incsearch          " Incremental search
1353 set autowrite           " Automatically save before commands like :next and :make
1354 "set hidden             " Hide buffers when they are abandoned
1355 "set mouse=a            " Enable mouse usage (all modes) in terminals
1356
1357 " Source a global configuration file if available
1358 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1359 if filereadable("/etc/vim/vimrc.local")
1360   source /etc/vim/vimrc.local
1361 endif
1362 </pre>
1363
1364         <p>I principianti faranno bene ad esercitarsi con
1365         <tt class="docutils literal"><span class=
1366         "pre">vimtutor</span> <span class="pre">it</span></tt>.</p>
1367
1368         <p>Altri link per VIM:</p>
1369
1370         <ul class="simple">
1371           <li>Vim Introduction and Tutorial: <a class=
1372           "reference external" href=
1373           "http://blog.interlinked.org/tutorials/vim_tutorial.html">
1374           http://blog.interlinked.org/tutorials/vim_tutorial.html</a></li>
1375
1376           <li><a class="reference external" href=
1377           "http://blog.smr.co.in/category/vim/">http://blog.smr.co.in/category/vim/</a></li>
1378
1379           <li><a class="reference external" href=
1380           "http://vimdoc.sourceforge.net/">http://vimdoc.sourceforge.net/</a></li>
1381         </ul>
1382       </div>
1383
1384       <div class="section" id="vnc">
1385         <h2><a class="toc-backref" href=
1386         "#id15">1.5&nbsp;&nbsp;&nbsp;VNC</a></h2>
1387
1388         <p>I Virtual Network Computing (o VNC) sono software di
1389         controllo remoto e servono per amministrare un computer a
1390         distanzai. Nel nostro caso la VNC sara' utilizzata per
1391         visualizzare la sessione di lavoro di un altro computer sul
1392         proprio a scopo didattico.</p>
1393
1394         <p>Per collegarvi al server del docente usate lo script
1395         <tt class="docutils literal"><span class=
1396         "pre">guarda.sh</span></tt> che dovrebbe gia essere
1397         disponibili sui sistemi preconfigurati, oppure potete
1398         invocare direttamente il collegamento con:</p>
1399         <pre class="literal-block">
1400 xtightvncviewer -viewonly 10.10.208.177:1
1401 </pre>
1402
1403         <p>Se il comando non fosse disponibile installate il
1404         pacchetto <tt class="docutils literal"><span class=
1405         "pre">xtightvncviewer</span></tt>. Potete anche scaricare
1406         lo script <tt class="docutils literal"><span class=
1407         "pre">guarda.sh</span></tt> e renderlo eseguibile, ed
1408         eventualmente creare una voce nel menu di KDE per
1409         richiamarlo.</p>
1410
1411         <p>Procedura:</p>
1412         <pre class="literal-block">
1413 su root
1414 cd /usr/local/bin
1415 wget http://bender/guarda.sh
1416 chmod +x guarda.sh
1417 exit
1418 </pre>
1419
1420         <p>Per eseguire lo script digitare semplicemente <tt class=
1421         "docutils literal"><span class="pre">guarda.sh</span></tt>,
1422         oppure creare un link / collegamento sul Desktop allo
1423         script <tt class="docutils literal"><span class=
1424         "pre">/usr/local/bin/guarda.sh</span></tt>.</p>
1425
1426         <p>Le impostazioni del server VNC sono:</p>
1427
1428         <table border="1" class="docutils">
1429           <colgroup>
1430             <col width="55%">
1431             <col width="45%">
1432           </colgroup>
1433
1434           <thead valign="bottom">
1435             <tr>
1436               <th class="head">Parametro</th>
1437
1438               <th class="head">Valore</th>
1439             </tr>
1440           </thead>
1441
1442           <tbody valign="top">
1443             <tr>
1444               <td>IP</td>
1445
1446               <td>10.10.208.177:1</td>
1447             </tr>
1448
1449             <tr>
1450               <td>Server grafico</td>
1451
1452               <td>:1</td>
1453             </tr>
1454
1455             <tr>
1456               <td>password</td>
1457
1458               <td>password</td>
1459             </tr>
1460           </tbody>
1461         </table>
1462
1463         <p>Si noti che non e' possibile lanciare un applicativo sul
1464         server grafico di un utente da una shell in cui si sta
1465         lavorando come altro utente, anche se root. E' quindi
1466         necessario essere l'utente di sistema che si e' loggato
1467         inizialmente nella sessione grafica per poter lanciare lo
1468         script guarda.sh da una shell.</p>
1469
1470         <p>Controllare con <tt class=
1471         "docutils literal"><span class="pre">whoami</span></tt> di
1472         essere l'utente normale (es <tt class=
1473         "docutils literal"><span class="pre">utente</span>
1474         <span class="pre">|</span> <span class=
1475         "pre">studente</span> <span class="pre">|</span>
1476         <span class="pre">proprio</span> <span class=
1477         "pre">nome</span></tt> ), in caso si sia assunta una altra
1478         <tt class="docutils literal"><span class=
1479         "pre">id</span></tt> si apra un altra shell o si esca da
1480         quella attuale con <tt class=
1481         "docutils literal"><span class="pre">exit</span></tt> .</p>
1482       </div>
1483
1484       <div class="section" id="lista-dei-pacchetti-di-base">
1485         <h2><a class="toc-backref" href=
1486         "#id16">1.6&nbsp;&nbsp;&nbsp;Lista dei pacchetti di
1487         base</a></h2>
1488
1489         <p>I pacchetti installati generalmente <a class=
1490         "footnote-reference" href="#id2" id="id1" name=
1491         "id1">[1]</a> per poter seguire le lezioni sono:</p>
1492         <pre class="literal-block">
1493 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1494 </pre>
1495
1496         <table class="docutils footnote" frame="void" id="id2"
1497         rules="none">
1498           <colgroup>
1499             <col class="label">
1500             <col>
1501           </colgroup>
1502
1503           <tbody valign="top">
1504             <tr>
1505               <td class="label"><a class="fn-backref" href=
1506               "#id1">[1]</a></td>
1507
1508               <td><tt class="docutils literal"><span class=
1509               "pre">kde-core</span></tt> e' piu' leggero del
1510               pacchetto <tt class="docutils literal"><span class=
1511               "pre">kde</span></tt>. Esiste un equivalente
1512               <tt class="docutils literal"><span class=
1513               "pre">gnome-core</span></tt> per chi preferisce
1514               Gnome, nel caso si potrebbe installare il log-in
1515               manager <cite>gdm</cite> al posto di
1516               <cite>kdm</cite>.</td>
1517             </tr>
1518           </tbody>
1519         </table>
1520       </div>
1521
1522       <div class="section" id="apt-configurazione">
1523         <h2><a class="toc-backref" href=
1524         "#id17">1.7&nbsp;&nbsp;&nbsp;Apt configurazione</a></h2>
1525
1526         <p>Vediamo i due file principali di apt:</p>
1527
1528         <ul class="simple">
1529           <li><tt class="docutils literal"><span class=
1530           "pre">/etc/apt/sources.list</span></tt></li>
1531
1532           <li><tt class="docutils literal"><span class=
1533           "pre">/etc/apt/apt.conf</span></tt></li>
1534         </ul>
1535
1536         <div class="section" id="sources-list">
1537           <h3><a class="toc-backref" href=
1538           "#id18">1.7.1&nbsp;&nbsp;&nbsp;sources.list</a></h3>
1539
1540           <p>Questo file contiene i sorgenti da cui <em>apt</em>
1541           preleva i pacchetti da installare tramite <em>dpkg</em>,
1542           vengono quindi precisati i metodi (ad es. http / ftp /
1543           cdrom / file), la release che si vuole tracciare (es
1544           <tt class="docutils literal"><span class=
1545           "pre">stable,</span> <span class="pre">testing,</span>
1546           <span class="pre">unstable</span></tt> oppure i
1547           corrispondenti release name es: <tt class=
1548           "docutils literal"><span class="pre">Lenny,</span>
1549           <span class="pre">Squeeze,</span> <span class=
1550           "pre">Sid</span></tt>), i rami di interesse (es:
1551           <tt class="docutils literal"><span class=
1552           "pre">main</span></tt> che e' l'archivio principale,
1553           <tt class="docutils literal"><span class=
1554           "pre">non-free</span></tt> per il software non libero,
1555           <tt class="docutils literal"><span class=
1556           "pre">contrib</span></tt> per i pacchetti non realizzati
1557           dai manutentori ufficiali).</p>
1558
1559           <p>Gli archivi sono generalmente:</p>
1560
1561           <ul class="simple">
1562             <li><tt class="docutils literal"><span class=
1563             "pre">deb</span></tt> per pacchetti Debian binari,
1564             pronti per l'installazione.</li>
1565
1566             <li><tt class="docutils literal"><span class=
1567             "pre">deb-src</span></tt> per i pacchetti sorgenti
1568             (quindi da compilare, come il kernel) degli stessi
1569             pacchetti binari. In genere se non compilate spesso
1570             potete evitare di tracciare i sorgenti per risparmiare
1571             tempo e banda.</li>
1572           </ul>
1573
1574           <p><tt class="docutils literal"><span class=
1575           "pre">/etc/apt/sources.list</span></tt></p>
1576           <pre class="literal-block">
1577 # esempio di accesso a un CDROM:
1578 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1579
1580 # ftp.it.debian.org viene rediretto su un mirror interno
1581 # quando vi trovate nella rete interna piffa.net
1582 deb http://ftp.it.debian.org/debian/ lenny main
1583 # Sono disponibili anche i rami non-free contrib
1584 # deb http://ftp.it.debian.org/debian/ lenny  non-free contrib
1585 # Sono disponibili anche le release unstable e testing
1586 # deb http://ftp.it.debian.org/debian/ testing  main non-free contrib
1587 # deb http://ftp.it.debian.org/debian/ sid  main non-free contrib
1588
1589 # Sorgenti dei pacchetti:
1590 # deb-src http://ftp.bononia.it/debian/ lenny main
1591
1592 # Mirror da kernel.org europa da usare a casa:
1593 deb http://mirrors.eu.kernel.org/debian/ lenny main
1594
1595 # Security dal sito principale
1596 deb http://security.debian.org/ lenny/updates main
1597 # deb-src http://security.debian.org/ lenny/updates main
1598
1599 # Debian volatile per i pacchetti soggetti a frequanti cambiamenti
1600 # non legati a dinamiche di sicurezza
1601 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1602 # deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1603
1604 # Esempio di accesso a un file system locale contenente i pacchetti:
1605 # Potete scaricarei in aula con debmirror  da debian.piffa.net
1606 # un mirror locale da usare poi a casa anche senza internet
1607 # deb file:/mnt/mirror sid main non-free contrib
1608 </pre>
1609         </div>
1610
1611         <div class="section" id="etc-apt-apt-conf">
1612           <h3><a class="toc-backref" href=
1613           "#id19">1.7.2&nbsp;&nbsp;&nbsp;/etc/apt/apt.conf</a></h3>
1614
1615           <p>Questo file contiene le opzioni di apt, come ad
1616           esempio il proxy:</p>
1617           <pre class="literal-block">
1618 Acquire::http::Proxy "http://10.10.208.248:3128";
1619 </pre>
1620
1621           <p>Si tenga conto che se si imposta un proxy per apt sul
1622           proprio portatile e tornati a casa propria si vuole
1623           scaricare nuovi pacchetti si dovra' disabilitare il proxy
1624           commentando la riga con ";" (''punto-e-virgola''). Su un
1625           portatile vi conviene tracciare il mirror <tt class=
1626           "docutils literal"><span class=
1627           "pre">ftp.it.debian.org</span></tt> senza impostare il
1628           proxy: in aula verra' rediretto al mirror locale e a casa
1629           vi appoggerete al mirror ufficiale.</p>
1630
1631           <p>E' consigliabile impostare il proxy per apt anche in
1632           presenza di un proxy-http <em>trasparente</em>.</p>
1633         </div>
1634       </div>
1635     </div>
1636
1637     <div class="section" id="squid">
1638       <h1><a class="toc-backref" href=
1639       "#id20">2&nbsp;&nbsp;&nbsp;Squid</a></h1>
1640
1641       <p>Squid e' un proxy cache http (ma puo' anche gestire i
1642       protocolli FTP e https) robusto e strutturato, grazie alla
1643       sua flessibilita' puo' essere utilizzato sia in piccole reti
1644       locali che in scenari piu' complessi. E' molto semplice
1645       configurarlo per la semplice <em>condivisione della
1646       navigazione internet</em> all'interno di una rete locale, per
1647       poi poter sucessivamente implementare la autenticazione degli
1648       utenti, il filtraggio dei contenuti (Squid e' una
1649       applicazione che si muove nel 4' livello del modello TCP/IP a
1650       differenza di un <em>ipfilter</em> limitato al 2'), il
1651       bilanciamento del carico tra piu' server proxy.</p>
1652
1653       <p>Se il server Squid e' in grado di accedere a internet
1654       puor' permette la navigazione web a una rete basata su
1655       indirizzi IP privati (es una 192.168.0.0/24). E se la rete
1656       privata deve solo navigare in internet, non serve introdurre
1657       nella rete un NAT (si veda la sezione sui firewall) per
1658       condividere la connessione: basta il solo Squid. Per altro
1659       non servira' neanche un servizio DNS accessibile dai clients
1660       dato che sara' il solo Squid a risolvere i nomi di dominio
1661       per i suoi client http.</p>
1662
1663       <p>Inoltre Squid svolge la funzione di <em>anonymizer</em>:
1664       nasconde i client http alla rete internet: e' solo il server
1665       proxy ad accedere ai server web frequentati dai client:
1666       questi non sono percepiti ed esposti all'esterno della rete
1667       locale ma si relazionano solo con Squid. Dal punto di vista
1668       della sicurezza della rete locale questo e' preferibile ad un
1669       approccio alla navigazione basato su NAT.</p>
1670
1671       <p>Squid ascolta di default sulla porta <tt class=
1672       "docutils literal"><span class="pre">3128</span></tt>, per
1673       quanto in genere la porta preferita per i servizi di caching
1674       http sia la <tt class="docutils literal"><span class=
1675       "pre">8080</span></tt>. Per utilizzarlo subito anche per apt
1676       si aggiunga ad <tt class="docutils literal"><span class=
1677       "pre">/etc/apt/apt.conf</span></tt></p>
1678       <pre class="literal-block">
1679 Acquire::http::Proxy "10.10.208.254:3128";
1680 </pre>
1681
1682       <p>Per installare Squid si usi il pacchetto:</p>
1683       <pre class="literal-block">
1684 squid3
1685 </pre>
1686
1687       <div class="section" id="configurazione-squid-conf">
1688         <h2><a class="toc-backref" href=
1689         "#id21">2.1&nbsp;&nbsp;&nbsp;Configurazione:
1690         squid.conf</a></h2>
1691
1692         <p>egue un estratto delle direttive principali viste in
1693         aula presenti nel file di configurazione <tt class=
1694         "docutils literal"><span class=
1695         "pre">/etc/squid3/squid.conf</span></tt> .</p>
1696
1697         <div class="section" id="cache-dir">
1698           <h3><a class="toc-backref" href=
1699           "#id22">2.1.1&nbsp;&nbsp;&nbsp;Cache_dir</a></h3>
1700
1701           <p>Cache dir serve per impostare caratteristiche
1702           fondamentali della cache creata sul supporto di storaggio
1703           quali dimensione e percorso nel file-system. Essendo la
1704           dimensione di default della cache pari a ~``100 MB`` e'
1705           altamente consigliabili aumentare questo parametro se si
1706           vuole godere dei vantaggi della funzione di cache per
1707           piu' clients.</p>
1708
1709           <p>Per stabilire il dimensionamento della cache si tenga
1710           conto dello spazio disponibile, dimensioni tipiche e
1711           massime degli oggetti che si vuole tenere in cache (un
1712           solo file .iso occupa circa <tt class=
1713           "docutils literal"><span class="pre">700</span>
1714           <span class="pre">MB</span></tt>, il pacchetto
1715           Openoffice.org circa 150 MB, un pacchetto Debian circa 20
1716           MB), e in fine del numero dei client.</p>
1717
1718           <p>Si presti poi attenzione alla natura dei dati che
1719           saranno salvati nella cache: sono tutti dati facilmente
1720           sostituibili (gli originali sono on-line) la cui perdita
1721           causerebbe solo la necessita' di ripopolare la cache.
1722           Questo rende la cache di Squid un possibile candidato ad
1723           un RAID stirpe (livello 0) a ad un file system che
1724           prediliga le performance a scapito della consistenza, con
1725           vantaggi sia per le prestazioni (e la velocita' di
1726           navigazione e' uno dei motivi per cui si installa Squid)
1727           che per l'utilizzo estensivo dello spazio di
1728           storaggio.</p>
1729
1730           <p>Questo fino al momento in cui per voi non sia piu'
1731           importante garantire la disponibilita' del servizio: se
1732           il RAID stripe dovesse rompersi gli utenti non potrebbero
1733           piu' navigare, cosa che per natura dello stripe e' piu'
1734           probabile rispetto ad un filesytem normale.</p>
1735
1736           <div class="section" id="opzioni-del-file-system">
1737             <h4><a class="toc-backref" href=
1738             "#id23">2.1.1.1&nbsp;&nbsp;&nbsp;Opzioni del file
1739             system</a></h4>
1740
1741             <p>I dati che compongono la cache vengono salvati sul
1742             filesytem del server dietro richiesta dei client http
1743             degli utenti della rete locale. Come per i servizi di
1744             file sharing o per la posta elettronica non c'e' motivo
1745             che il filesystem su cui sono ospitati questi dati
1746             abbiano i privilegi di eseguibilita' o suid (in genere
1747             si possono anche usare opzioni come noatime per rendere
1748             i file-systems piu' veloci, scegliere di utilizzare un
1749             journal dipende dalla dimesione della cache dalle
1750             preferenze: affidabilita' oppure prestazioni):</p>
1751
1752             <p>/etc/fstab</p>
1753             <pre class="literal-block">
1754 ...
1755 # Filesystem per Squid http cache
1756 /dev/md3/       /var/spool/squid/       ext2,noexec,nosuid,noatime  0 3
1757 </pre>
1758           </div>
1759         </div>
1760
1761         <div class="section" id="configurazioni-di-cache-dir">
1762           <h3><a class="toc-backref" href=
1763           "#id24">2.1.2&nbsp;&nbsp;&nbsp;Configurazioni di
1764           Cache_dir</a></h3>
1765
1766           <p>Ora possiamo impostare la cache nel file di
1767           configurazione <tt class="docutils literal"><span class=
1768           "pre">/etc/squid3/squid.conf</span></tt>:</p>
1769           <pre class="literal-block">
1770 #TAG: cache_dir (riga 1628)
1771 #       Usage:
1772 #
1773 #       cache_dir Type Directory-Name Fs-specific-data [options]
1774 #
1775 #       You can specify multiple cache_dir lines to spread the
1776 #       cache among different disk partitions.
1777 #       ...
1778 #Default:
1779 # cache_dir ufs /var/spool/squid3 100 16 256
1780 cache_dir aufs /var/spool/squid3 300 24 256
1781 #         |    |                 |   |  secondo livello di directory
1782 #         |    |                 |   directory primo livello
1783 #         |    |                 dimensione in MB
1784 #         |    path della cache
1785 #         algoritmo
1786 </pre>
1787
1788           <p>Se si modifica la struttura della cache di Squid, ad
1789           esempio variando il numero delle directory, puo' essere
1790           opportuno cancellare e rigenerare la cache. Tipicamente
1791           e' consigliabile cancellare (se si ha ridotto il numero
1792           delle directory) la vecchia cache e poi generare una
1793           nuova struttura. Se si vuole star nel sicuro ogni volta
1794           che si modifica l'impostazione delle directory si svuoti
1795           la vecchia cache e se ne generi una nuova:</p>
1796           <pre class="literal-block">
1797 # /etc/init.d/squid3 stop
1798 # rm -r /var/spool/squid3/??
1799 # squid3 -z
1800 # /etc/init.d/squid3 start
1801 </pre>
1802         </div>
1803
1804         <div class="section" id="tag-maximum-object-size">
1805           <h3><a class="toc-backref" href=
1806           "#id25">2.1.3&nbsp;&nbsp;&nbsp;TAG:
1807           maximum_object_size</a></h3>
1808
1809           <p>Questa direttiva imposta la dimensione massima degli
1810           oggetti che vengono salvati sul supporto di storaggio,
1811           oggetti di dimensioni superiori saranno comunque
1812           scaricati ma non tenuti in cache.</p>
1813
1814           <p>TAG: maximum_object_size (1760):</p>
1815           <pre class="literal-block">
1816 # TAG: maximum_object_size (1760)
1817 #       Objects larger than this size will NOT be saved on disk.  The
1818 #       value is specified in kilobytes, and the default is 4MB.  If
1819 #       you wish to get a high BYTES hit ratio, you should probably
1820 #       increase this (one 32 MB object hit counts for 3200 10KB
1821 #       hits).  If you wish to increase speed more than your want to
1822 #       save bandwidth you should leave this low.
1823 #
1824 #       NOTE: if using the LFUDA replacement policy you should increase
1825 #       this value to maximize the byte hit rate improvement of LFUDA!
1826 #       See replacement_policy below for a discussion of this policy.
1827 #
1828 #Default:
1829 # maximum_object_size 4096 KB
1830 maximum_object_size 150 MB
1831 </pre>
1832         </div>
1833
1834         <div class="section" id="tag-cache-mem">
1835           <h3><a class="toc-backref" href=
1836           "#id26">2.1.4&nbsp;&nbsp;&nbsp;TAG: cache_mem</a></h3>
1837
1838           <p><strong>Cache_mem</strong> imposta quanta memoria RAM
1839           venga dedicata alla cache di Squid. Si consideri non solo
1840           quanta RAM sia disponibile sul sistema, ma anche quale
1841           sia l'utilizzo tipico di questo: altri servizi
1842           fondamentali necessitano di molta memoria?</p>
1843
1844           <p>Questo parametro per altro influisce sulle prestazioni
1845           e sul degrado dei supporti di storaggio (sopratutto se
1846           magnetici). Ad esempio se si stanno utilizzando dischi
1847           rigidi esterni USB per la cache sara' preferibile cercare
1848           di usare quanta piu' RAM possibile per evitare il
1849           sovraccarico computazionale dovuto alla gestione dello
1850           stack USB, fenomeno evidente sui sistemi embedded come
1851           NAS.</p>
1852
1853           <p>Se si stesse pensando di usare dell'hardware
1854           <em>embedded</em> a basse prestazioni / consumo per
1855           realizzare un server gateway / NAT / Squid si tenga
1856           presente che Squid e' relativamente esoso di risorse
1857           rispetto agli altri servizi: avra' bisogno di <tt class=
1858           "docutils literal"><span class="pre">~25MB</span></tt>
1859           (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1860           servire decorosamente una decina di client http su una
1861           rete ethernet 10/100. In questo caso non fate scendere
1862           <tt class="docutils literal"><span class=
1863           "pre">cache_mem</span></tt> sotto i <tt class=
1864           "docutils literal"><span class="pre">2/4</span>
1865           <span class="pre">MB</span></tt> pena un accesso continuo
1866           al supporto di storaggio.</p>
1867
1868           <p>Se invece si disponesse di una macchina dedicata a
1869           Squid con gigabytes di RAM non si esiti a dedicarne buona
1870           parte a <em>cache_mem</em>.</p>
1871
1872           <p>TAG: cache_mem (1566):</p>
1873           <pre class="literal-block">
1874 #       'cache_mem' specifies the ideal amount of memory to be used
1875 #       for:
1876 #               * In-Transit objects
1877 #               * Hot Objects
1878 #               * Negative-Cached objects
1879 #Default:
1880 # cache_mem 8 M
1881 cache_mem 100 M
1882 </pre>
1883         </div>
1884
1885         <div class="section" id="tag-minimum-object-size">
1886           <h3><a class="toc-backref" href=
1887           "#id27">2.1.5&nbsp;&nbsp;&nbsp;TAG:
1888           minimum_object_size</a></h3>
1889
1890           <p>Questo parametro imposta la dimensione minima degli
1891           oggetti salvati nella cache. Settato a <tt class=
1892           "docutils literal"><span class="pre">0</span></tt> o a
1893           valori molto piccoli puo' influire negativamente sulla
1894           frammentazione del filesytem e consumare un numero
1895           elevato di <em>inode</em> (cosa non piu' importante con
1896           ext4 o altri filesytem).</p>
1897
1898           <p>In scenari con connessioni molto veloci ( &gt;~10Mb),
1899           pochi client (una decina) e server poco performanti nella
1900           velocita' di accesso ai filesystem ( ~20MB/s, per quanto
1901           il limte sia piuttosto il <em>seek-time</em> ) tenere in
1902           cache i file piu' piccoli finisce per aumentare la
1903           latenza della navigazione.</p>
1904
1905           <p>TAG: minimum_object_size:</p>
1906           <pre class="literal-block">
1907 #  TAG: minimum_object_size     (bytes)
1908 #       Objects smaller than this size will NOT be saved on disk.  The
1909 #       value is specified in kilobytes, and the default is 0 KB, which
1910 #       means there is no minimum.
1911 #
1912 #Default:
1913 # minimum_object_size 0 KB
1914 minimum_object_size 0 KB
1915 </pre>
1916         </div>
1917       </div>
1918
1919       <div class="section" id=
1920       "negoziazione-degli-accesi-al-servizio">
1921         <h2><a class="toc-backref" href=
1922         "#id28">2.2&nbsp;&nbsp;&nbsp;Negoziazione degli accesi al
1923         servizio</a></h2>
1924
1925         <p>Squid fa parte di quei servizi suscettibili di diventare
1926         un open relay, sara' quindi necessario prestare attenzione
1927         a delimitare la rete che puo' accedere al servizio.</p>
1928
1929         <dl class="docutils">
1930           <dt>Open Relay:</dt>
1931
1932           <dd>Un servizio a cui possono accedere tutti
1933           indiscriminatamente. La cosa puo' andare bene per servizi
1934           come i server web, che aspirano per loro natura al
1935           maggior numero possibile di utenti, ma non a servizi come
1936           i proxy http oppure ai server di posta elettronica
1937           (adibiti ai soli utenti della rete locale).</dd>
1938         </dl>
1939
1940         <p>Generalmente non volete che il vostro proxy http venga
1941         usato da persone sconosciute ed esterne alla vostra rete,
1942         le quali sostanzialmente <em>navigherebbero sotto
1943         l'identita' del vostro proxy</em> (probabilmente per
1944         visionare materiali che non vorrebbero fossero ricondotti
1945         direttamente a loro) generando traffico e consumando banda
1946         della vostra connessione a internet. Tenere Squid in
1947         modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1948         modo per essere inseriti in una <em>black list</em>.</p>
1949
1950         <p>Per poter limitare gli accessi a Squid dal punto di
1951         vista dell'applicazione (quarto livello TCP/IP) si
1952         identifichera' inizialmente l'entita' <em>rete locale</em>
1953         (es: <tt class="docutils literal"><span class=
1954         "pre">localnet</span></tt>) con una ACL di tipo
1955         <em>src</em> (indirizzi IP sorgenti) indicando la
1956         <em>classe / range di IP</em> della nostra rete.</p>
1957
1958         <blockquote>
1959           Dopodiche l'accesso (<tt class=
1960           "docutils literal"><span class=
1961           "pre">http_access</span></tt>) si concedera'
1962           (<em>allow</em>) a questa entita' (es: <tt class=
1963           "docutils literal"><span class=
1964           "pre">localnet</span></tt>) negando chiunque altro.
1965         </blockquote>
1966
1967         <p>Per maggiori dettagli sulla sintassi utilizzabile per
1968         esprimere i range di IP: <a class="reference external"
1969         href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1970         http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1971
1972         <p>E' poi sempre possibile tenere il proxy in ascolto su un
1973         solo indirizzo IP, nel caso si disponga di piu' device di
1974         rete, oppure settare un IP firewall per limitare il
1975         traffico in base al protocollo IP.</p>
1976
1977         <div class="section" id="acl-e-http-access">
1978           <h3><a class="toc-backref" href=
1979           "#id29">2.2.1&nbsp;&nbsp;&nbsp;ACL e http access</a></h3>
1980
1981           <p>Si proceda a creare una <tt class=
1982           "docutils literal"><span class="pre">ACL</span></tt> di
1983           tipo <tt class="docutils literal"><span class=
1984           "pre">src</span></tt> per identificare la nostra rete
1985           locale, poi si abiliti l'accesso a questa con la
1986           direttiva <tt class="docutils literal"><span class=
1987           "pre">http_access</span></tt>. Tutto quanto non e'
1988           espressamente autorizzato viene poi negato da un
1989           <tt class="docutils literal"><span class=
1990           "pre">http_access</span> <span class="pre">deny</span>
1991           <span class="pre">all</span></tt> finale.</p>
1992           <pre class="literal-block">
1993 #  TAG: acl
1994 #       Defining an Access List
1995 #
1996 #       Every access list definition must begin with an aclname and acltype,
1997 #       followed by either type-specific arguments or a quoted filename that
1998 #       they are read from.
1999 #       ...
2000 #       ***** ACL TYPES AVAILABLE *****
2001 #
2002 #       acl aclname src ip-address/netmask ...          # clients IP address
2003 # riga 588
2004
2005 # Example rule allowing access from your local networks.
2006 # Adapt to list your (internal) IP networks from where browsing
2007 # should be allowed
2008 #acl localnet src 10.0.0.0/8    # RFC1918 possible internal network
2009 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
2010 #acl localnet src 192.168.0.0/16        # RFC1918 possible internal network
2011 #
2012 acl localnet src 10.10.208.0/24
2013
2014 # Riga 606
2015 #  TAG: http_access
2016 #       Allowing or Denying access based on defined access lists
2017 #
2018 #       Access to the HTTP port:
2019 #       http_access allow|deny [!]aclname ...
2020 #
2021 #       NOTE on default values:
2022 #
2023 #       If there are no "access" lines present, the default is to deny
2024 #       the request.
2025
2026 # Riga 643
2027 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
2028
2029 # Example rule allowing access from your local networks.
2030 # Adapt localnet in the ACL section to list your (internal) IP networks
2031 # from where browsing should be allowed
2032 #http_access allow localnet
2033 http_access allow localnet
2034 </pre>
2035         </div>
2036       </div>
2037
2038       <div class="section" id="testare-squid">
2039         <h2><a class="toc-backref" href=
2040         "#id30">2.3&nbsp;&nbsp;&nbsp;Testare Squid</a></h2>
2041
2042         <p>Dopo aver configurato squid e' fondamentale testarne il
2043         corretto funzionamento per assicurarsi di non aver creato
2044         un <em>open-relay</em>. Per fare dei test significativi
2045         serve utilizzare degli host remoti: ci si connetta via ssh
2046         a questi e si usi <tt class="docutils literal"><span class=
2047         "pre">wget</span></tt> da riga di comando.</p>
2048
2049         <div class="section" id="client-wgetrc">
2050           <h3><a class="toc-backref" href=
2051           "#id31">2.3.1&nbsp;&nbsp;&nbsp;Client: ~/.wgetrc</a></h3>
2052
2053           <p>Nel file <tt class="docutils literal"><span class=
2054           "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
2055           un file nascosto) si puo' impostare il proxy per wget. Si
2056           utilizzi l'indirizzo IP del server che si vuole testare,
2057           e si seguano i log <tt class=
2058           "docutils literal"><span class=
2059           "pre">/var/log/squid3/access.log</span></tt> sul
2060           server.</p>
2061
2062           <p>Da notare che la prova va' fatta su una macchina della
2063           rete che si vuole testare, non da <em>localhost</em>. Per
2064           altro se si utilizzasse <em>direttamente</em> <tt class=
2065           "docutils literal"><span class=
2066           "pre">localhost</span></tt> non si testerebbe la
2067           <em>ACL</em> predisposta, dato che si si rientrerebbe
2068           nella ACL (pre-configurata di default) <tt class=
2069           "docutils literal"><span class=
2070           "pre">localhost</span></tt>.</p>
2071
2072           <dl class="docutils">
2073             <dt>.wgetrc</dt>
2074
2075             <dd>http_proxy=10.10.208.178:3128</dd>
2076           </dl>
2077
2078           <p>Si proceda a scaricare dal client scelto con un
2079           wget:</p>
2080           <pre class="literal-block">
2081 wget http://www.google.it
2082 </pre>
2083         </div>
2084
2085         <div class="section" id="server-access-log">
2086           <h3><a class="toc-backref" href=
2087           "#id32">2.3.2&nbsp;&nbsp;&nbsp;Server:
2088           access.log</a></h3>
2089
2090           <p>Si puo' controllare il corretto funzionamento del
2091           server seguendo i log di accesso a Squid:</p>
2092           <pre class="literal-block">
2093 # tail -f /var/log/squid3/access.log
2094 </pre>
2095
2096           <p>In oltre e' possibile configurare diversi
2097           <em>analizzatori di log</em> come <tt class=
2098           "docutils literal"><span class=
2099           "pre">Webalizer</span></tt> per studiare i log di
2100           Squid.</p>
2101         </div>
2102       </div>
2103     </div>
2104
2105     <div class="section" id="tiny-proxy">
2106       <h1><a class="toc-backref" href=
2107       "#id33">3&nbsp;&nbsp;&nbsp;Tiny proxy</a></h1>
2108
2109       <p>Se avete l'esigenza di un proxy server per la condivisione
2110       della connessione ad internet ma non avete la necessita' o le
2111       risorse di un <em>caching</em> proxy come Squid potete
2112       considerare <strong>tinyproxy</strong>, questo e' molto piu'
2113       leggero (utilizza circa ~2MB di RAM e ovviamente non deve
2114       accedere continuamente ad un file system per lo storaggio
2115       della cache) e risulta piu' semplice nella
2116       configurazione.</p>
2117
2118       <p>TinyProxy puo' essere utilizzato come sostituto di
2119       emergenza in una rete in cui Squid e' momentaneamente non
2120       disponibile.</p>
2121
2122       <p>File di configurazione: <tt class=
2123       "docutils literal"><span class=
2124       "pre">/etc/tinyproxy/tinyproxy.conf</span></tt></p>
2125       <pre class="literal-block">
2126 # Porta su cui ascoltare
2127 Port 3128
2128 # IP su cui ascoltare
2129 Listen 10.10.208.160
2130 # Negoziazione accessi
2131 Allow 10.10.208.0/24
2132 </pre>
2133     </div>
2134
2135     <div class="section" id="apache">
2136       <h1><a class="toc-backref" href=
2137       "#id34">4&nbsp;&nbsp;&nbsp;Apache</a></h1>
2138
2139       <p>Apache HTTP Server, o piu' comunemente Apache (<em>a
2140       patchy NCSA web server</em> ), e' il server web modulare piu'
2141       diffuso e strutturato disponibile con licenza libera, in
2142       grado di operare da sistemi operativi UNIX/Linux e
2143       Microsoft.</p>
2144
2145       <p>Un server web e' un processo, e per estensione il computer
2146       su cui e' in esecuzione, che si occupa di fornire, su
2147       richiesta del browser, una pagina web (spesso scritta in
2148       HTML). Le informazioni inviate dal server web viaggiano in
2149       rete trasportate dal protocollo HTTP. L'insieme di server web
2150       da' vita al World Wide Web, uno dei servizi piu' utilizzati
2151       di Internet.</p>
2152
2153       <div class="section" id="pacchetti-da-installare">
2154         <h2><a class="toc-backref" href=
2155         "#id35">4.1&nbsp;&nbsp;&nbsp;Pacchetti da
2156         installare::</a></h2>
2157
2158         <blockquote>
2159           apache2 apache2-doc
2160         </blockquote>
2161
2162         <p>Con la release 2.0 di Apache viene automaticamente resa
2163         disponibile anche la versione SSL (Secure Socket Layer,
2164         connessioni criptate ) del web server senza che ci sia la
2165         necessita' di installare altri pacchetti.</p>
2166       </div>
2167
2168       <div class="section" id="configurazione-di-apache">
2169         <h2><a class="toc-backref" href=
2170         "#id36">4.2&nbsp;&nbsp;&nbsp;Configurazione di
2171         Apache</a></h2>
2172
2173         <p>I file di configurazione di apache si trovano nella
2174         cartella: <tt class="docutils literal"><span class=
2175         "pre">/etc/apache2</span></tt> e sono strutturati come
2176         descritto nel file <tt class=
2177         "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
2178         . Sostanzialmente lo schema e' il seguente:</p>
2179
2180         <dl class="docutils">
2181           <dt>apache2.conf</dt>
2182
2183           <dd>
2184             <p class="first">File di configurazione principale del
2185             servizio.</p>
2186
2187             <p class="last">httpd.conf e' il vecchio file di
2188             configurazione di Apache1, presente per motivi di
2189             retrocompatibilita' e' generalmente vuoto.</p>
2190           </dd>
2191
2192           <dt>ports.conf</dt>
2193
2194           <dd>In questo file vengono specificate le porte sulle
2195           quali resta in ascolto il server web. Si noti che
2196           utilizzando dei virtual hosts generalmente viene
2197           specificata per questi la porta su cui ascoltare nel file
2198           di configurazione del virtual host, ad es: <tt class=
2199           "docutils literal"><span class=
2200           "pre">&lt;VirtualHost</span> <span class=
2201           "pre">*:80&gt;</span></tt></dd>
2202
2203           <dt>sites-available</dt>
2204
2205           <dd>In questa cartella vengono raccolti i file di
2206           configurazione dei virtual host disponibili.</dd>
2207
2208           <dt>sites-enabled</dt>
2209
2210           <dd>In questa cartella sono contenuti dei link simbolici
2211           ai files in ../sites-available : se il link e' presente
2212           in questa cartella il virtual host e' abilitato.</dd>
2213
2214           <dt>mods-available</dt>
2215
2216           <dd>Stesso metodo per i moduli: in questa cartella ci
2217           sono i moduli veri e propri che verranno poi abilitati
2218           grazie all'esistenza di link simbolici nella cartella
2219           mods-enabled .</dd>
2220
2221           <dt>mods-enabled</dt>
2222
2223           <dd>Moduli abilitati, effettivamente caricati.</dd>
2224         </dl>
2225       </div>
2226
2227       <div class="section" id="apache-conf">
2228         <h2><a class="toc-backref" href=
2229         "#id37">4.3&nbsp;&nbsp;&nbsp;apache.conf</a></h2>
2230
2231         <p>File di configurazione del servizio Apache, contiene le
2232         impostazioni generiche (ad esempio utilizzo della RAM e
2233         risorse di sistema) dell'intero servizio. Nella
2234         configurazione di default per Debian non viene definito un
2235         vero e proprio sito di default ma solo dei virtual
2236         hosts.</p>
2237
2238         <p>Guardiamo alcune direttive interessanti:</p>
2239
2240         <dl class="docutils">
2241           <dt>Timeout</dt>
2242
2243           <dd>Numero di secondi da aspettare prima di chiudere la
2244           connessione con il client. Questo parametro serve a
2245           liberare le risorse di sistema nel caso che un client,
2246           magari a causa di una connessione particolarmente lenta o
2247           instabili, tenga attivo indefinitamente un processo di
2248           apache.</dd>
2249
2250           <dt>KeepAlive</dt>
2251
2252           <dd>L'estensione keep-alive (http 1.0) congiuntamente
2253           alle connessioni persistenti (http 1.1) permettono al
2254           server di rispondere a piu' richieste dei client mediante
2255           la stessa connessione. Il protocollo http per sua natura
2256           e' senza stato (<em>stateless</em> ), quindi ogni risorsa
2257           richiesta (per pagine web si pensi ad esempio alle
2258           immagini) dal client necessita di una connessione
2259           autonoma. Keep-alive permette di ottimizzare la
2260           connessione anche fino al 50% a seconda delle situazioni
2261           e contenuti.</dd>
2262
2263           <dt>Server-Pool Size Regulation</dt>
2264
2265           <dd>Questi parametri (StartServers, MinSpareServers, ecc.
2266           Tutti spiegati nel manuale di apache) servono per
2267           attribuire le risorse di sistema disponibili al server
2268           Apache. Tenere questi parametri bassi serve a limitare il
2269           rischio di Denial of Service per il server, nel caso
2270           offra altri servizi. I settagli di default sono come
2271           sempre abbastanza conservativi, se si conta di usare il
2272           proprio Apache per servire un sito web con molti
2273           visitatori sara' necessario aumentare sensibilmente le
2274           impostazioni di base.</dd>
2275
2276           <dt>AccessFileName</dt>
2277
2278           <dd>Il nome del file che viene onorato per modificare le
2279           impostazioni per una singola directory, legato alla
2280           direttiva AllowOverride .</dd>
2281         </dl>
2282       </div>
2283
2284       <div class="section" id="installazione-di-php">
2285         <h2><a class="toc-backref" href=
2286         "#id38">4.4&nbsp;&nbsp;&nbsp;Installazione di PHP</a></h2>
2287
2288         <p>Pacchetti da installare: <tt class=
2289         "docutils literal"><span class="pre">php5</span>
2290         <span class="pre">php-pear</span></tt></p>
2291
2292         <div class="section" id="test-del-modulo-php">
2293           <h3><a class="toc-backref" href=
2294           "#id39">4.4.1&nbsp;&nbsp;&nbsp;Test del modulo
2295           php</a></h3>
2296
2297           <p>Creare nella cartella <tt class=
2298           "docutils literal"><span class="pre">/var/www</span></tt>
2299           (o altra cartella visibile) un file con estensione *.php
2300           (es <tt class="docutils literal"><span class=
2301           "pre">/var/www/info.php</span></tt> contenete codice php
2302           eseguibile dall'interprete, ad es:</p>
2303           <pre class="literal-block">
2304 &lt;?php phpinfo() ; ?&gt;
2305 </pre>
2306
2307           <p>Questa funzione di php generera' la tipica pagina con
2308           le impostazioni attuali per PHP. Richiamando la pagina
2309           (es: <tt class="docutils literal"><span class=
2310           "pre">http://localhost/info.php</span></tt> ) verra'
2311           generata dall'interprete PHP la pagina HTML e resa
2312           disponibile tramite Apache ai client HTTP, a prova del
2313           corretto funzionamento del modulo di PHP e della sua
2314           integrazione con il server web Apache. In caso contrario
2315           se il client http proporra' di scaricare la pagina invece
2316           che visualizzarla nel browser: non funziona l'interprete
2317           di php o sono mal configurati i MIME-type. prima di tutto
2318           assicurarsi di aver fatto ripartire Apache.</p>
2319         </div>
2320
2321         <div class="section" id=
2322         "installazione-del-supporto-per-mysql-a-php">
2323           <h3><a class="toc-backref" href=
2324           "#id40">4.4.2&nbsp;&nbsp;&nbsp;Installazione del supporto
2325           per Mysql a PHP</a></h3>
2326
2327           <p>Installare i pacchetti:</p>
2328           <pre class="literal-block">
2329 php5-mysql phpmyadmin
2330 </pre>
2331
2332           <p>Controllare tramite la pagina php.info che sia
2333           abilitato il supporto per Mysql (ripartito Apache,
2334           ricaricare la pagina e cercare con CTRL+f <tt class=
2335           "docutils literal"><span class=
2336           "pre">mysql</span></tt>).</p>
2337         </div>
2338
2339         <div class="section" id="phpmyadmin">
2340           <h3><a class="toc-backref" href=
2341           "#id41">4.4.3&nbsp;&nbsp;&nbsp;phpmyadmin</a></h3>
2342
2343           <p>L'interfaccia web Phpmyadmin non richiede
2344           necessariamente la presenza di un database Mysql locale,
2345           puo' infatti essere utilizzata per gestire database
2346           remoti (il suo file di configurazione: <tt class=
2347           "docutils literal"><span class=
2348           "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
2349           caso si voglia installare localmente Mysql si utilizzi il
2350           pacchetto <tt class="docutils literal"><span class=
2351           "pre">mysql-server</span></tt> .</p>
2352
2353           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2354           <tt class="docutils literal"><span class=
2355           "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
2356           non fosse controllare che sia incluso il file <tt class=
2357           "docutils literal"><span class=
2358           "pre">/etc/phpmyadmin/apache.conf</span></tt> in
2359           <tt class="docutils literal"><span class=
2360           "pre">/etc/apache2/conf.d/</span></tt> .</p>
2361         </div>
2362
2363         <div class="section" id=
2364         "installazione-del-supporto-per-postgresql-a-php">
2365           <h3><a class="toc-backref" href=
2366           "#id42">4.4.4&nbsp;&nbsp;&nbsp;Installazione del supporto
2367           per Postgresql a PHP</a></h3>
2368
2369           <p>Installare i pacchetti:</p>
2370           <pre class="literal-block">
2371 php5-pgsql phppgadmin
2372 </pre>
2373
2374           <p>Controllare tramite la pagina php.info che sia
2375           abilitato il supporto per PostgreSQL (ripartito Apache,
2376           ricaricare la pagina e cercare con CTRL+f <tt class=
2377           "docutils literal"><span class=
2378           "pre">pgsql</span></tt>).</p>
2379         </div>
2380
2381         <div class="section" id="phppgadmin">
2382           <h3><a class="toc-backref" href=
2383           "#id43">4.4.5&nbsp;&nbsp;&nbsp;phppgadmin</a></h3>
2384
2385           <p>L'interfaccia web Phppgadmin per il database server
2386           PostgreSQL non richiede necessariamente la presenza di un
2387           database locale, puo' infatti essere utilizzata per
2388           gestire database remoti (il suo file di configurazione:
2389           <tt class="docutils literal"><span class=
2390           "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
2391           caso si voglia installare localmente Mysql si utilizzi il
2392           pacchetto <tt class="docutils literal"><span class=
2393           "pre">postgresql</span></tt> .</p>
2394
2395           <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2396           <tt class="docutils literal"><span class=
2397           "pre">http://localhost/phppgadmin/</span></tt>, se cosi
2398           non fosse controllare che sia incluso il file <tt class=
2399           "docutils literal"><span class=
2400           "pre">/etc/phppgadmin/apache.conf</span></tt> in
2401           <tt class="docutils literal"><span class=
2402           "pre">/etc/apache2/conf.d/</span></tt> .</p>
2403         </div>
2404       </div>
2405
2406       <div class="section" id="virtual-hosts">
2407         <h2><a class="toc-backref" href=
2408         "#id44">4.5&nbsp;&nbsp;&nbsp;Virtual hosts</a></h2>
2409
2410         <blockquote>
2411           <ul class="simple">
2412             <li><a class="reference external" href=
2413             "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
2414
2415             <li><a class="reference external" href=
2416             "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
2417             http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
2418           </ul>
2419         </blockquote>
2420
2421         <p>I virtual host permettono di avere piu' siti internet
2422         disponibili tramite lo stesso server web, eventualmente
2423         mappati su un solo indirizzo IP. Sono generalmente di due
2424         tipi:</p>
2425
2426         <blockquote>
2427           <ul class="simple">
2428             <li>Basati su <em>indirizzi IP</em>. Se si ha la
2429             possibilita' di avere piu' indirizzi IP dedicati per i
2430             diversi siti che si vuole servire. ES: <tt class=
2431             "docutils literal"><span class=
2432             "pre">&lt;VirtualHost</span> <span class=
2433             "pre">192.168.0.2:80&gt;</span></tt> . Soluzione
2434             dispendiosa, si tende ad usarla solo se servono
2435             certificati di sicurezza (SSL ) dedicati per ogni
2436             sito.</li>
2437
2438             <li>Basati su <em>nomi di dominio</em> che puntano allo
2439             stesso IP. Soluzione piu' economica e diffusa che si
2440             basa sulle funzionalita' di http 1.1 .</li>
2441           </ul>
2442         </blockquote>
2443
2444         <p>Prenderemo in esame la gestione di virtual hosts basati
2445         su nomi di dominio.</p>
2446
2447         <div class="section" id="gestione-dns">
2448           <h3><a class="toc-backref" href=
2449           "#id45">4.5.1&nbsp;&nbsp;&nbsp;Gestione DNS</a></h3>
2450
2451           <p>Prima di tutto per poter impostare i virtual hosts
2452           dovete avere un server DNS che risolva i vostri nomi di
2453           dominio sull'indirizzo IP del server. Questo si puo'
2454           ottenere in vari modi, ad es:</p>
2455
2456           <blockquote>
2457             <dl class="docutils">
2458               <dt><tt class="docutils literal"><span class=
2459               "pre">/etc/hosts</span></tt></dt>
2460
2461               <dd>Per prove sul proprio sistema potete impostare i
2462               nomi dei vostri virtual server nel file /etc/hosts
2463               .</dd>
2464
2465               <dt><em>Dnsmasq</em> (DNS server)</dt>
2466
2467               <dd>Utilizzabile al livello della rete locale per
2468               fare dei test, utilizzando direttive come: <tt class=
2469               "docutils literal"><span class=
2470               "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2471
2472               <dt><em>Servizio DNS dinamico on line</em>.</dt>
2473
2474               <dd>Utilizzare un servizio come ad es: <a class=
2475               "reference external" href=
2476               "https://www.dyndns.com/">https://www.dyndns.com/</a>
2477               per mappare nomi di dominio sul proprio indirizzo IP,
2478               comodo ad esempio se si dispone di un indirizzo IP
2479               pubblico (anche se dinamico) per la propria
2480               connessione ad internet.</dd>
2481
2482               <dt><em>Bind</em> (DNS server)</dt>
2483
2484               <dd>Impostare i campi A nelle proprie zone gestite
2485               dal server DNS Bind. Ad es: <tt class=
2486               "docutils literal"><span class=
2487               "pre">papo</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2488               <span class=
2489               "pre">A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2490               <span class="pre">212.22.136.248</span></tt></dd>
2491             </dl>
2492           </blockquote>
2493         </div>
2494
2495         <div class="section" id="eseguire-una-query-dns-con-dig">
2496           <h3><a class="toc-backref" href=
2497           "#id46">4.5.2&nbsp;&nbsp;&nbsp;Eseguire una query DNS con
2498           <tt class="docutils literal"><span class=
2499           "pre">dig</span></tt>::</a></h3>
2500
2501           <p>Per testare la corretta risoluzione dei vostri nomi di
2502           dominio sui relaivi indirizzi IP si usi dig (o altre
2503           utlity, vedere la sezione relativa i DNS). Dig e'
2504           contenuto nel pacchetto <tt class=
2505           "docutils literal"><span class=
2506           "pre">dnsutils</span></tt>.</p>
2507
2508           <blockquote>
2509             <p># dig 177.piffa.net</p>
2510
2511             <p>; &lt;&lt;&gt;&gt; DiG 9.5.1-P1 &lt;&lt;&gt;&gt;
2512             177.piffa.net ;; global options: printcmd ;; Got
2513             answer: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY,
2514             status: NOERROR, id: 38036 ;; flags: qr aa rd ra;
2515             QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</p>
2516
2517             <p>;; QUESTION SECTION: ;177.piffa.net. IN A</p>
2518
2519             <p>;; ANSWER SECTION: 177.piffa.net. 0 IN A
2520             10.10.208.177</p>
2521
2522             <p>;; SERVER: 10.10.208.248#53(10.10.28.248)</p>
2523           </blockquote>
2524
2525           <p>La parte interessante e' l'<em>ANSWER SECTION</em>:
2526           <tt class="docutils literal"><span class=
2527           "pre">177.piffa.net.</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2528           <span class=
2529           "pre">0</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2530           <span class="pre">IN</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2531           <span class=
2532           "pre">A</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
2533           <span class="pre">10.10.208.177</span></tt> . Il nome di
2534           dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2535           , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2536           dovra' essere disponibile un virtual host che corrisponde
2537           al nome <tt class="docutils literal"><span class=
2538           "pre">177.piffa.net</span></tt> (<tt class=
2539           "docutils literal"><span class=
2540           "pre">ServerName</span></tt>) .</p>
2541
2542           <p>Il server DNS utilizzato dal sistema e' evidenziato
2543           dalla stringa: <tt class="docutils literal"><span class=
2544           "pre">;;</span> <span class="pre">SERVER:</span>
2545           <span class=
2546           "pre">10.10.28.248#53(10.10.28.248)</span></tt> che
2547           dovrebbe corrispondere a quanto impostato nel vostro
2548           <tt class="docutils literal"><span class=
2549           "pre">/etc/resolv.conf</span></tt>. Se il vostro browser
2550           web utilizza un proxy http sara questo a risolvere i nomi
2551           di dominio, tipicamente potete disabilitare l'uso del
2552           proxy per determinati domini nella sezione di
2553           configurazione del browser.</p>
2554         </div>
2555
2556         <div class="section" id="id3">
2557           <h3><a class="toc-backref" href=
2558           "#id47">4.5.3&nbsp;&nbsp;&nbsp;Virtual hosts</a></h3>
2559
2560           <p>Esempio di Virtual host:</p>
2561           <pre class="literal-block">
2562 &lt;VirtualHost *:80 &gt;
2563     ServerName 177.piffa.net
2564     DocumentRoot /var/www/177.piffa.net/
2565     ServerAdmin webmaster@177.piffa.net
2566 &lt;/VirtualHost&gt;
2567 </pre>
2568
2569           <ol class="arabic simple">
2570             <li><tt class="docutils literal"><span class=
2571             "pre">&lt;VirtualHost</span> <span class=
2572             "pre">\*:80</span> <span class="pre">&gt;</span></tt>
2573             La prima riga indica l'inizio della stanza relativa al
2574             nostro virtual host, che ascoltera' su qualunque
2575             indirizzo IP (nel caso il server abbia piu' indirizzi
2576             dai quali e' raggiungibile) sulla porta <tt class=
2577             "docutils literal"><span class=
2578             "pre">80</span></tt>.</li>
2579
2580             <li><tt class="docutils literal"><span class=
2581             "pre">Server/name</span></tt> precisa quale sara' il
2582             nome di dominio a cui verra' associato questo sito
2583             rispetto ad altri eventualmente presenti sullo stesso
2584             server web.</li>
2585
2586             <li><tt class="docutils literal"><span class=
2587             "pre">DocumentRoot</span></tt> : il path della
2588             directory che contiene le pagine del sito.</li>
2589
2590             <li><tt class="docutils literal"><span class=
2591             "pre">ServerAdmin</span></tt>: l'indirizzo del
2592             webmaster, in modo da poterlo contattare in caso di
2593             problemi col sito.</li>
2594
2595             <li><tt class="docutils literal"><span class=
2596             "pre">&lt;/VirtualHost&gt;</span></tt>: <em>tag</em> di
2597             chiusura della stanza di definizione del virtual
2598             host.</li>
2599           </ol>
2600
2601           <p>Quelle che abbiamo appena visto sono le direttive
2602           essenziali per definire un sito virtuale, potrebbe essere
2603           utile aggiungere altre:</p>
2604
2605           <ul>
2606             <li>
2607               <dl class="first docutils">
2608                 <dt><tt class="docutils literal"><span class=
2609                 "pre">ErrorLog</span> <span class=
2610                 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2611
2612                 <dd>
2613                   <p class="first last">Log degli errori separato
2614                   dai restanti siti web ospitati dal server.</p>
2615                 </dd>
2616               </dl>
2617             </li>
2618
2619             <li>
2620               <dl class="first docutils">
2621                 <dt><tt class="docutils literal"><span class=
2622                 "pre">LogLevel</span> <span class=
2623                 "pre">warn</span></tt></dt>
2624
2625                 <dd>
2626                   <p class="first last">Livello di importanza degli
2627                   eventi loggati: warning <em>attenzione</em> .</p>
2628                 </dd>
2629               </dl>
2630             </li>
2631
2632             <li>
2633               <dl class="first docutils">
2634                 <dt><tt class="docutils literal"><span class=
2635                 "pre">CustomLog</span> <span class=
2636                 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2637                 <span class="pre">combined</span></tt></dt>
2638
2639                 <dd>
2640                   <p class="first last">Log di accesso separati
2641                   dagli altri siti, utile anche qua per statistiche
2642                   di accesso per il solo sito virtuale.</p>
2643                 </dd>
2644               </dl>
2645             </li>
2646           </ul>
2647
2648           <p>Potrebbe essere utile modificare le impostazioni di
2649           una intera directory, ad esempio per abilitare
2650           l'<tt class="docutils literal"><span class=
2651           "pre">AuthConfig</span></tt>:</p>
2652           <pre class="literal-block">
2653 &lt;Directory "/var/www/miosito.net/privata"&gt;
2654         AllowOverride AuthConfig
2655         Options ExecCGI Indexes MultiViews FollowSymLinks
2656         Order allow,deny
2657         Allow from all
2658 &lt;/Directory&gt;
2659 </pre>
2660
2661           <p><tt class="docutils literal"><span class=
2662           "pre">AllowOverride</span> <span class=
2663           "pre">AuthConfig</span></tt> ora vale per l'intera
2664           directory, come le altre opzioni.</p>
2665         </div>
2666       </div>
2667
2668       <div class="section" id="negoziazione-accessi">
2669         <h2><a class="toc-backref" href=
2670         "#id48">4.6&nbsp;&nbsp;&nbsp;Negoziazione accessi</a></h2>
2671
2672         <p>Tipicamente quando si installa un server web il proprio
2673         desiderio e' di dare accesso ai materiali disponibili al
2674         maggior numero di visitatori possibile. Talvolta pero' puo'
2675         essere utile poter limitare questi accessi, ad esempio per
2676         escludere un <em>bot</em> indesiderato che scansiona
2677         ininterrottamente le nostre pagine o per creare una
2678         <em>Area Riservata</em> i cui materiali non devono essere
2679         disponibile a tutti.</p>
2680
2681         <div class="section" id="limiti-su-base-ip">
2682           <h3><a class="toc-backref" href=
2683           "#id49">4.6.1&nbsp;&nbsp;&nbsp;Limiti su base IP</a></h3>
2684
2685           <p>La forma piu' semplice di restrizione degli accessi e'
2686           su base degli indirizzi IP dei client: tipicamente i siti
2687           web sono settati per dare accesso a chiunque:</p>
2688           <pre class="literal-block">
2689 &lt;VirtualHost *:80 &gt;
2690        # ...
2691        &lt;Directory "/var/www/177.piffa.net"&gt;
2692          Order allow,deny
2693          Allow from all
2694        &lt;/Directory&gt;
2695 &lt;/VirtualHost&gt;
2696 </pre>
2697
2698           <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2699           questo modo:</p>
2700           <pre class="literal-block">
2701 &lt;VirtualHost *:80 &gt;
2702        # ...
2703        &lt;Directory "/var/www/177.piffa.net"&gt;
2704          Order allow,deny
2705          Allow from all
2706          Deny from 192.168.0.1
2707        &lt;/Directory&gt;
2708 &lt;/VirtualHost&gt;
2709 </pre>
2710
2711           <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2712           materiali dell'intero sito virtuale, oppure potremmo
2713           lavorare su una sola directory:</p>
2714           <pre class="literal-block">
2715 &lt;Directory "/var/www/miosito.net/limitata"&gt;
2716        Order allow,deny
2717        Allow from 192.168.0.0./24
2718        Deny from all
2719 &lt;/Directory&gt;
2720 </pre>
2721
2722           <p>In questo modo solo la classe IP <tt class=
2723           "docutils literal"><span class=
2724           "pre">192.168.0.0/24</span></tt> potra' accedere alla
2725           directory <tt class="docutils literal"><span class=
2726           "pre">/limitata</span></tt> Si tenga pero' conto che e'
2727           relativamente facile per un malintenzionato cambiare il
2728           proprio indirizzo IP, oppure collegarsi da un altra zona.
2729           Meno facile e' accedere ad una classe privata trovandosi
2730           all'esterno di questa, ma ci sono comunque soluzioni piu'
2731           eleganti.</p>
2732
2733           <ul class="simple">
2734             <li>Mod_access: <a class="reference external" href=
2735             "http://httpd.apache.org/docs/2.0/mod/mod_access.html">http://httpd.apache.org/docs/2.0/mod/mod_access.html</a></li>
2736
2737             <li>mod_authz_hosti(Available in Apache 2.1 and later):
2738             <a class="reference external" href=
2739             "http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html">
2740             http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html</a></li>
2741           </ul>
2742         </div>
2743       </div>
2744
2745       <div class="section" id="user-authentication">
2746         <h2><a class="toc-backref" href=
2747         "#id50">4.7&nbsp;&nbsp;&nbsp;User Authentication</a></h2>
2748
2749         <p>Si puo' negoziare gli accessi ad un area del sito
2750         tramite autenticazione basata su <em>nome utente /
2751         password</em>. Questo puo' venire utile per creare una area
2752         download <em>intranet</em>, alla quale possano accedere
2753         solo gli utenti previsti a prescindere dagli indirizzi IP
2754         dei loro client.</p>
2755
2756         <p>Tramite il modulo di Apache <em>mod-auth</em> e'
2757         possibile implementare questo paradigma, per quanto
2758         esistano soluzioni piu' granulari e sofisticate, che
2759         richiedono pero' l'implementazione di interpreti di
2760         linguaggi di programmazione, criptazione delle passwords,
2761         gestione degli utenti ed eventualmente delle sessioni. Mod
2762         auth non richiede l'installazione di niente di tutto
2763         questo.</p>
2764
2765         <p>link: <a class="reference external" href=
2766         "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2767
2768         <div class="section" id="definire-la-cartella">
2769           <h3><a class="toc-backref" href=
2770           "#id51">4.7.1&nbsp;&nbsp;&nbsp;Definire la
2771           cartella</a></h3>
2772
2773           <p>Decidere quale sara' il <em>path</em> della cartella
2774           da sottoporre ad autenticazione:</p>
2775
2776           <blockquote>
2777             <tt class="docutils literal"><span class=
2778             "pre">mkdir</span> <span class=
2779             "pre">/var/www/177.piffa.net/privata</span></tt>
2780           </blockquote>
2781         </div>
2782
2783         <div class="section" id=
2784         "creazione-del-database-delle-passwords">
2785           <h3><a class="toc-backref" href=
2786           "#id52">4.7.2&nbsp;&nbsp;&nbsp;Creazione del database
2787           delle passwords</a></h3>
2788
2789           <p>Un modo semplice per gestire una database di
2790           <em>user-id / passwords</em> e' utilizzare l'utility
2791           <tt class="docutils literal"><span class=
2792           "pre">htpasswd</span></tt> di Apache. Questa crea un file
2793           in cui un <em>crypt</em> delle password viene associato
2794           agli utenti.</p>
2795
2796           <p>Si dovra' decidere dove tenere questo file, la cosa
2797           importante e' che non sia visibile nel sito web: non deve
2798           essere scaricabile dai visitatori. Deve essere cioe'
2799           all'esterno della <em>DocumentRoot</em>: un buon posto
2800           potrebbe essere la /home dell'utente.</p>
2801
2802           <p>Creiamo (con il <em>flag</em> <tt class=
2803           "docutils literal"><span class="pre">-c</span></tt>) il
2804           file <tt class="docutils literal"><span class=
2805           "pre">/home/utente/passwords</span></tt> con l'utente
2806           <tt class="docutils literal"><span class=
2807           "pre">luca</span></tt>:</p>
2808           <pre class="literal-block">
2809 htpasswd -c /home/utente/passwords luca
2810 </pre>
2811
2812           <p><tt class="docutils literal"><span class=
2813           "pre">htpasswd</span></tt> ci chiedera' la password da
2814           associare all'utente <tt class=
2815           "docutils literal"><span class="pre">luca</span></tt>.
2816           Per successive modifiche della password o aggiunta di
2817           nuovi utenti non sara' necessario usare il flag
2818           <tt class="docutils literal"><span class=
2819           "pre">-c</span></tt>.</p>
2820         </div>
2821
2822         <div class="section" id="id4">
2823           <h3><a class="toc-backref" href=
2824           "#id53">4.7.3&nbsp;&nbsp;&nbsp;Configurazione di
2825           Apache</a></h3>
2826
2827           <p>Ora possiamo passare alla configurazione vera e
2828           propria di Apache, ma con una novita': andremo a inserire
2829           la voce in un <tt class="docutils literal"><span class=
2830           "pre">.htaccess</span></tt> invece che modificare
2831           (tramite una direttiva <tt class=
2832           "docutils literal"><span class=
2833           "pre">&lt;Directory&gt;</span></tt> ) il file di
2834           impostazione del virtual-host.</p>
2835
2836           <p>Questo per motivi pratici: solo l'utente <em>root</em>
2837           puo' modificare l'impostazione del virtual host nel file
2838           <tt class="docutils literal"><span class=
2839           "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2840           ma spesso il motivo per cui creiamo i virtual hosts e'
2841           ospitare i siti di altri utenti, che possono solo
2842           pubblicare (generalmente tramite <em>FTP</em>) i loro
2843           documenti nella loro <em>DocumentRoot</em>, senza poter
2844           quindi modificare in alcun modo la configurazione del
2845           virtual host.</p>
2846
2847           <p>Dando agli utenti la possibilita' di modificare
2848           (<em>AllowOverride</em>) autonomamente alcuni parametri
2849           (in questo caso solo l'<em>AuthConfig</em>) relativi al
2850           funzionamento del loro spazio web ci togliera'
2851           l'incombenza di dover intervenire continuamente sui vari
2852           virtual host.</p>
2853
2854           <p>Abilitiamo l'AllowOverride nel file di configurazione
2855           del virtual host per la sola directory <tt class=
2856           "docutils literal"><span class=
2857           "pre">privata</span></tt>:</p>
2858           <pre class="literal-block">
2859 &lt;VirtualHost *:80 &gt;
2860     ServerName 177.piffa.net
2861     DocumentRoot /var/www/177.piffa.net/
2862     ServerAdmin webmaster@177.piffa.net
2863     &lt;Directory "/var/www/177.piffa.net/privata"&gt;
2864         AllowOverride AuthConfig
2865     &lt;/Directory&gt;
2866 &lt;/VirtualHost&gt;
2867 </pre>
2868
2869           <p>Per rendere il cambiamento effettivo sara' necessario
2870           fare un restart / reload di Apache.</p>
2871
2872           <p>Ora sara' possibile, anche per l'utente di sistema,
2873           creare un file <tt class="docutils literal"><span class=
2874           "pre">.htaccess</span></tt> che sara' onorato da
2875           Apache.</p>
2876
2877           <p>/var/www/177.piffa.net/privata/.htaccess</p>
2878           <pre class="literal-block">
2879 # Messaggio visualizzato al prompt per l'autenticazione
2880 AuthName "Area privata soggetta ad autentizazione"
2881 # tipo di autenticazione da usarsi
2882 AuthType Basic
2883 # File precedentemente generato con htpasswd
2884 AuthUserFile  /home/utente/passwords
2885
2886 # Negoziazione degli accessi
2887 # valid users permette l'accesso agli utenti specificati
2888 # nel file generato da htpasswd
2889 require valid-user
2890 </pre>
2891
2892           <p>Si noti che non e' necessario fare ripartire Apache
2893           per onorare i cambiamenti (un utente non avrebbe la
2894           possibilita' di farlo!).</p>
2895
2896           <dl class="docutils">
2897             <dt>Oltre a <tt class="docutils literal"><span class=
2898             "pre">valid-users</span></tt> si potrebbe scegliere di
2899             usare la formula <tt class=
2900             "docutils literal"><span class="pre">users</span></tt>
2901             che permette di elencare esplicitamente gli
2902             utenti::</dt>
2903
2904             <dd>require user pippo pluto</dd>
2905           </dl>
2906
2907           <p>L'utente <em>paperino</em> che fosse comunque presente
2908           nel file generato da htpasswd non potrebbe accedere alla
2909           risorsa.</p>
2910
2911           <dl class="docutils">
2912             <dt>Nel caso ci fossero molti utenti conviene gestirli
2913             tramite <em>gruppi</em>::</dt>
2914
2915             <dd>require group staff studenti</dd>
2916           </dl>
2917
2918           <p>I gruppi vengono definiti in un file in modo simile a
2919           <tt class="docutils literal"><span class=
2920           "pre">/etc/groups</span></tt> per gli utenti di
2921           sistema:</p>
2922           <pre class="literal-block">
2923 staff:andrea sara
2924 studenti: lucap federico luca
2925 </pre>
2926
2927           <p>da richiamare tramite la direttiva <tt class=
2928           "docutils literal"><span class=
2929           "pre">AuthGroupFile</span></tt>.</p>
2930         </div>
2931       </div>
2932
2933       <div class="section" id="cavets">
2934         <h2><a class="toc-backref" href=
2935         "#id54">4.8&nbsp;&nbsp;&nbsp;Cavets</a></h2>
2936
2937         <p>Problemi di cache:</p>
2938
2939         <blockquote>
2940           <ul class="simple">
2941             <li>Proxy: nei settaggi del browser specificare di non
2942             utilizzare un server proxy http per il sito web locale
2943             (o per gli altri che si stanno monitorando). Se si ha
2944             il controllo del proxy server: stopparlo, ricaricare la
2945             pagina (operazione che fallira'), far ripartire il
2946             proxy, ricaricare la pagina.</li>
2947
2948             <li>Provare con un altro browser, o cercare di svuotare
2949             la cache chiudere/riaprire l'applicativo. Provare a
2950             fermare Apache, ricaricare la pagina (operazione che
2951             fallira'), far ripartire Apache, ricaricare la
2952             pagina.</li>
2953           </ul>
2954         </blockquote>
2955       </div>
2956     </div>
2957
2958     <div class="section" id="domain-name-system">
2959       <h1><a class="toc-backref" href=
2960       "#id55">5&nbsp;&nbsp;&nbsp;Domain Name System</a></h1>
2961
2962       <p>Domain Name System (spesso indicato con DNS) e' un
2963       servizio utilizzato per la risoluzione di nomi di host in
2964       indirizzi IP e viceversa. Il servizio e' realizzato tramite
2965       un sistema <strong>gerarchico</strong> (quindi una struttura
2966       ad albero, simile ai <em>file system</em>)
2967       <strong>distribuito</strong> (ogni server DNS facente parte
2968       del sistema puo' mantenere solo una parte delle informazioni,
2969       ad esempio per la sua sola <em>zona</em>), costituito dai
2970       server DNS.</p>
2971
2972       <p>I DNS sono un servizio <em>core</em> (fondamentale) per la
2973       rete internet come per qualunque rete locale. Ad esempio
2974       durante la navigazione web un client vorrebbe vedere
2975       l'<em>URL</em> <tt class="docutils literal"><span class=
2976       "pre">http://ww.piffa.net/</span></tt>, quindi per potersi
2977       connettere via <em>http</em> al server web deve prima
2978       ottenere l'indirizzo IP del <em>server http</em>
2979       corrispondente a <em>www.piffa.net</em>. Se il DNS gli
2980       fornisce un IP sbagliato l'utente non potra' raggiungere il
2981       servizio: di fatto e' come se il serve http fosse spento.</p>
2982
2983       <p>Stessa cosa vale per gli altri servizi, come la posta
2984       elettronica, ssh, ecc. : <em>prima si deve effettuare una
2985       query DNS</em>.</p>
2986
2987       <p>Potrebbe verificarsi uno scenario simile a questo: i
2988       vostri server per i siti web funzionano correttamente come i
2989       siti ospitati, stessa cosa per i vostri server di posta, IMAP
2990       e POP3, e tutto il resto. Ma se poi un errore nella
2991       configurazione del DNS non rende raggiungibile l'intero
2992       <em>sito</em>: per l'utente finale e' come se nulla
2993       funzionasse.</p>
2994
2995       <p>Infatti quando si parla di un intervento della Polizia
2996       Postale per l'<em>oscuramento</em> di un sito dal punto di
2997       vista pratico questo si traduce generalmente nella rimozione
2998       o mistificazione del record DNS relativo a quel dominio (la
2999       <em>PP</em> ha facolta' di chiedere un simile intervento ai
3000       principali provider internet che forniscono connettivita'
3001       agli utenti italiani, oltre che poter agire direttamente sul
3002       NIC italiano per i domini della TLD <em>.it</em>)</p>
3003
3004       <p>L'operazione di convertire un nome in un indirizzo e'
3005       detta risoluzione DNS, convertire un indirizzo IP in nome e'
3006       detto risoluzione inversa.</p>
3007
3008       <blockquote>
3009         Un <em>Registar</em> e' un operatore che ha la facolta'
3010         (accreditamento da parte dell ICANN) di registrare i domini
3011         di secondo livello per gli utenti finali, dietro compenso
3012         di una modica cifra (una decina di euro) che vale come
3013         contributo su base annuale per il mantenimento
3014         dell'infrastruttura.
3015       </blockquote>
3016
3017       <div class="section" id="risoluzione-inversa">
3018         <h2><a class="toc-backref" href=
3019         "#id56">5.1&nbsp;&nbsp;&nbsp;Risoluzione Inversa</a></h2>
3020
3021         <p>Per la risoluzione inversa sono invece i provider di
3022         connettivita' a gestire i DNS: se volete impostare il
3023         <em>PTR</em> associato al vostro indirizzo IP dovete
3024         contattare il vostro provider (tipo <em>telecom</em> per
3025         una connessione ADSL) e <em>non il Registar del vostro
3026         dominio</em>.</p>
3027
3028         <p>Ad esempio all'IP <tt class=
3029         "docutils literal"><span class=
3030         "pre">212.22.136.248</span></tt> era associato un PTR
3031         <tt class="docutils literal"><span class=
3032         "pre">bender.piffa.net</span></tt>, corrispondente al
3033         record <tt class="docutils literal"><span class=
3034         "pre">212</span></tt> facente parte della zona <tt class=
3035         "docutils literal"><span class=
3036         "pre">136.22.212.in-addr.arpa</span></tt> gestito dal
3037         provider Tiscali/Nextra proprietario della classe C
3038         <tt class="docutils literal"><span class=
3039         "pre">212.22.136.0</span></tt>. Se avete un solo IP
3040         conviene lasciare al fornitore la gestire del PTR, ma se
3041         avete a disposizione un'itera classe potete chiedere sempre
3042         al vostro provider che vi <em>deleghi</em> la gestione
3043         della zona tramite i vostri DNS.</p>
3044
3045         <p>Per alcuni servizi, ad esempio la spedizione della posta
3046         elettronica, e' richiedeiesto che venga impostata
3047         correttamente l'associazione tra il PTR dell'indirizzo IP
3048         usato dal server di postai e il record A RR al quale questo
3049         punta( RFC1912 sezione 2.1, paragrafo 2).</p>
3050
3051         <p>Si veda:</p>
3052
3053         <ul class="simple">
3054           <li><a class="reference external" href=
3055           "http://www.faqs.org/rfcs/rfc1912.html">http://www.faqs.org/rfcs/rfc1912.html</a>
3056           2.1 Inconsistent, Missing, or Bad Data</li>
3057
3058           <li><a class="reference external" href=
3059           "http://www.ietf.org/rfc/rfc2505.txt">http://www.ietf.org/rfc/rfc2505.txt</a></li>
3060         </ul>
3061       </div>
3062
3063       <div class="section" id="nomi-di-dominio">
3064         <h2><a class="toc-backref" href=
3065         "#id57">5.2&nbsp;&nbsp;&nbsp;Nomi di dominio</a></h2>
3066
3067         <p>Un nome a dominio e' costituito da una serie di stringhe
3068         separate da punti, ad esempio bender.piffa.net. I nomi di
3069         dominio si leggono da destra verso sinistra: <em>TLD</em> o
3070         dominio di primo livello <tt class=
3071         "docutils literal"><span class="pre">net</span></tt>,
3072         secondo livello <tt class="docutils literal"><span class=
3073         "pre">piffa</span></tt>, terzo livello <tt class=
3074         "docutils literal"><span class="pre">bender</span></tt>. Il
3075         dominio di primo livello (o TLD, Top Level Domain,
3076         pronunciato <em>tilde</em> in Italia), per esempio .net o
3077         .it sono limitati e decisi direttamente dall'ente
3078         assegnatario ICANN ( Internet Corporation for Assigned
3079         Names and Numbers).</p>
3080
3081         <p>L'utente finale potra' chiedere l'assegnazione (pagando
3082         un contributo al Register preferito per il mantenimento
3083         delle spese dell'infrastruttura) di un dominio di
3084         <em>secondo</em> livello (es <tt class=
3085         "docutils literal"><span class="pre">piffa</span></tt>) di
3086         una delle varie TLD disponibili (noi italiani diciamo
3087         <em>tildi</em>), sempre che non sia gia' stato assegnato a
3088         qualcun altro.</p>
3089
3090         <p>Ottenuto il secondo livello sara' l'utente a gestirlo:
3091         potra' in stanziare domini di terzo livello (es <tt class=
3092         "docutils literal"><span class="pre">bender</span></tt>) e
3093         anche oltre (es www.andrea.bender.piffa.net). Tali records
3094         saranno mantenuti dall'utente, sotto la sua responsbilita':
3095         se il proprio server DNS non fosse raggiungibile o
3096         risultasse mal configurato gli utenti non potrebbero
3097         risolvere / raggiungere i siti di loro interesse.</p>
3098
3099         <p>Tipicamente si ha almeno un server DNS secondario per
3100         garantire la sussistenza del servizio in caso di guasto del
3101         DNS principale. I secondari <em>replicano</em> i dati
3102         presenti nei DNS principali.</p>
3103       </div>
3104
3105       <div class="section" id="tipologie-di-record">
3106         <h2><a class="toc-backref" href=
3107         "#id58">5.3&nbsp;&nbsp;&nbsp;Tipologie di record</a></h2>
3108
3109         <p>Ad un nome DNS possono corrispondere diversi tipi di
3110         informazioni. Per questo motivo, esistono diversi tipi di
3111         record DNS. Ogni voce del database DNS deve essere
3112         caratterizzata da un tipo. I principali tipi sono:</p>
3113
3114         <ul class="simple">
3115           <li>Record A - Indica la corrispondenza tra un nome ed
3116           uno (o piu') indirizzi IP (per la precisione indirizzi
3117           IPv4, ovvero la versione attualmente in uso).</li>
3118
3119           <li>Record MX - (Mail eXchange) indica a quali server
3120           debba essere inviata la posta elettronica per un certo
3121           dominio.</li>
3122
3123           <li>Record CNAME - Sono usati per creare un alias, ovvero
3124           per fare in modo che lo stesso calcolatore sia noto con
3125           piu' nomi. Uno degli utilizzi di questo tipo di record
3126           consiste nell'attribuire ad un host che offre piu'
3127           servizi un nome per ciascun servizio. In questo modo, i
3128           servizi possono poi essere spostati su altri host senza
3129           dover riconfigurare i client, ma modificando solo il
3130           DNS.</li>
3131
3132           <li>Record PTR - Il DNS viene utilizzato anche per
3133           realizzare la risoluzione inversa, ovvero per far
3134           corrispondere ad un indirizzo IP il corrispondente nome a
3135           dominio. Per questo si usano i record di tipo "PTR" (e
3136           una apposita zona dello spazio dei nomi
3137           in-addr.arpa).</li>
3138
3139           <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
3140
3141           <li>Record SRV - Identificano il server per un
3142           determinato servizio all'interno di un dominio. Possono
3143           essere considerati una generalizzazione dei record
3144           MX.</li>
3145
3146           <li>Record TXT - Associano campi di testo arbitrari ad un
3147           dominio. Questi campi possono contenere una descrizione
3148           informativa oppure essere utilizzati per realizzare
3149           servizi.</li>
3150         </ul>
3151
3152         <p>Vi sono anche tipi di record "di servizio", necessari al
3153         funzionamento del database distribuito: * Record NS -
3154         Utilizzato per indicare quali siano i server DNS
3155         autoritativi per un certo dominio, ovvero per delegarne la
3156         gestione. * Record SOA - (Start of Authority) usato per la
3157         gestione delle zone DNS.</p>
3158       </div>
3159
3160       <div class="section" id="utilizzo">
3161         <h2><a class="toc-backref" href=
3162         "#id59">5.4&nbsp;&nbsp;&nbsp;Utilizzo</a></h2>
3163
3164         <p>I computer vengono identificati in rete grazie agli
3165         indirizzi <em>IP</em>, questi pero' non sono comodi per gli
3166         utenti come riferimento per i vari server. Ad esempio
3167         sarebbe scomodo riferirsi al motore di ricerca Goggle con
3168         uno dei suoi IP: <tt class="docutils literal"><span class=
3169         "pre">74.125.43.104</span></tt>, e' preferibile usare il
3170         nome di dominio <em>www.google.com</em>:</p>
3171         <pre class="literal-block">
3172 ping -c 1 www.google.com
3173 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
3174 </pre>
3175       </div>
3176
3177       <div class="section" id="risoluzione-dei-nomi-di-dominio">
3178         <h2><a class="toc-backref" href=
3179         "#id60">5.5&nbsp;&nbsp;&nbsp;Risoluzione dei nomi di
3180         dominio</a></h2>
3181
3182         <p>Ci sono vari strumenti per interrogare i server DNS e
3183         ottenere l'indirizzo IP associato al nome di dominio che ci
3184         interessa:</p>
3185         <pre class="literal-block">
3186 $ host www.piffa.net
3187 www.piffa.net is an alias for piffa.net.
3188 piffa.net has address 65.98.21.97
3189 piffa.net mail is handled by 10 65.98.21.97
3190
3191
3192 $ nslookup www.piffa.net
3193 Server:         192.168.0.10
3194 Address:        192.168.0.10#53
3195
3196 Non-authoritative answer:
3197 www.piffa.net   canonical name = piffa.net.
3198 Name:   piffa.net
3199 Address: 65.98.21.97
3200
3201
3202 $ dig www.piffa.net
3203
3204 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.piffa.net
3205 ;; global options: +cmd
3206 ;; Got answer:
3207 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 47751
3208 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
3209
3210 ;; QUESTION SECTION:
3211 ;www.piffa.net.                 IN      A
3212
3213 ;; ANSWER SECTION:
3214 www.piffa.net.          3489    IN      CNAME   piffa.net.
3215 piffa.net.              3489    IN      A       65.98.21.97
3216
3217 ;; AUTHORITY SECTION:
3218 piffa.net.              86289   IN      NS      ns2.mydomain.com.
3219 piffa.net.              86289   IN      NS      ns1.mydomain.com.
3220 piffa.net.              86289   IN      NS      ns4.mydomain.com.
3221 piffa.net.              86289   IN      NS      ns3.mydomain.com.
3222
3223 ;; ADDITIONAL SECTION:
3224 ns1.mydomain.com.       96208   IN      A       64.94.117.193
3225 ns2.mydomain.com.       96208   IN      A       64.94.31.67
3226 ns3.mydomain.com.       96208   IN      A       66.150.161.137
3227 ns4.mydomain.com.       96208   IN      A       63.251.83.74
3228
3229 ;; Query time: 1 msec
3230 ;; SERVER: 192.168.0.10#53(192.168.0.10)
3231 ;; WHEN: Sun May 10 21:23:11 2009
3232 ;; MSG SIZE  rcvd: 209
3233 </pre>
3234
3235         <p>Lo strumento piu' esaustivo e' <tt class=
3236         "docutils literal"><span class="pre">dig</span></tt>,
3237         installabile con il pacchetto <tt class=
3238         "docutils literal"><span class="pre">dnsutils</span></tt>
3239         .</p>
3240       </div>
3241
3242       <div class="section" id="dig">
3243         <h2><a class="toc-backref" href=
3244         "#id61">5.6&nbsp;&nbsp;&nbsp;Dig</a></h2>
3245
3246         <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
3247         "docutils literal"><span class="pre">dig</span></tt> per
3248         l'interrogazione dei DNS Server:</p>
3249         <pre class="literal-block">
3250 $ dig www.google.it
3251
3252 ; &lt;&lt;&gt;&gt; DiG 9.6.0-P1 &lt;&lt;&gt;&gt; www.google.it
3253 ;; global options: +cmd
3254 ;; Got answer:
3255 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: QUERY, status: NOERROR, id: 18816
3256 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
3257
3258 ;; QUESTION SECTION:
3259 ;www.google.it.                 IN      A
3260
3261 ;; ANSWER SECTION:
3262 www.google.it.          250683  IN      CNAME   www.google.com.
3263 www.google.com.         334819  IN      CNAME   www.l.google.com.
3264 www.l.google.com.       186     IN      A       74.125.43.103
3265 www.l.google.com.       186     IN      A       74.125.43.104
3266 www.l.google.com.       186     IN      A       74.125.43.147
3267 www.l.google.com.       186     IN      A       74.125.43.99
3268
3269 ;; AUTHORITY SECTION:
3270 l.google.com.           80856   IN      NS      f.l.google.com.
3271 l.google.com.           80856   IN      NS      d.l.google.com.
3272 l.google.com.           80856   IN      NS      b.l.google.com.
3273 l.google.com.           80856   IN      NS      c.l.google.com.
3274 l.google.com.           80856   IN      NS      a.l.google.com.
3275 l.google.com.           80856   IN      NS      e.l.google.com.
3276 l.google.com.           80856   IN      NS      g.l.google.com.
3277
3278 ;; Query time: 1 msec
3279 ;; SERVER: 192.168.0.10#53(192.168.0.10)
3280 ;; WHEN: Sun May 10 21:34:47 2009
3281 ;; MSG SIZE  rcvd: 255
3282 </pre>
3283
3284         <dl class="docutils">
3285           <dt>$ dig</dt>
3286
3287           <dd>(senza opzioni o oggetti) Fornisce l'elenco dei
3288           <em>root server</em> utilizzati. I root server sono i
3289           server che mantengono le informazioni sui domini di primo
3290           livello (TLD) e sono quindi il punto di partenza per
3291           scorrere nella directory dei DNS per recuperare le
3292           informazioni (tipicamente un campo <tt class=
3293           "docutils literal"><span class="pre">A</span></tt> per un
3294           indirizzo IP) che ci servono per raggiungere un certo
3295           servizio.</dd>
3296         </dl>
3297
3298         <p>$ dig</p>
3299
3300         <blockquote>
3301           <p>...</p>
3302
3303           <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
3304           . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
3305           B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
3306           192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
3307           F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
3308           192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
3309           K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
3310           192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
3311           J.ROOT-SERVERS.NET. . 192032 IN NS
3312           D.ROOT-SERVERS.NET.</p>
3313
3314           <p>...</p>
3315         </blockquote>
3316
3317         <dl class="docutils">
3318           <dt>dig @nome_dns</dt>
3319
3320           <dd>Permette di fare una query ad un server dns
3321           particolare. Es: <tt class=
3322           "docutils literal"><span class="pre">dig</span>
3323           <span class="pre">@151.99.25.1</span> <span class=
3324           "pre">www.google.it</span></tt></dd>
3325
3326           <dt>dig MX www.google.it</dt>
3327
3328           <dd>Chiede un campo in particolare, in questo caso il
3329           campo MX</dd>
3330
3331           <dt>dig ANY www.google.it</dt>
3332
3333           <dd>Chiede tutti i campi, non solo i campi
3334           <em>a</em></dd>
3335
3336           <dt>dig -x 74.125.43.104</dt>
3337
3338           <dd>Effettua una richiesta inversa: dall'IP al PTR
3339           associato.</dd>
3340         </dl>
3341       </div>
3342
3343       <div class="section" id="resolv-conf">
3344         <h2><a class="toc-backref" href=
3345         "#id62">5.7&nbsp;&nbsp;&nbsp;resolv.conf</a></h2>
3346
3347         <p>Il file <tt class="docutils literal"><span class=
3348         "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
3349         sul dns usato dal sistema, in genere anche altre
3350         applicazioni che devono effettuare query DNS leggono
3351         resolv.conf per conoscere l'ubicazione del DNS.</p>
3352
3353         <p>/etc/resolv.conf:</p>
3354
3355         <blockquote>
3356           <ul class="simple">
3357             <li><tt class="docutils literal"><span class=
3358             "pre">nameserver</span></tt>: indica il nameserver da
3359             utilizzare, indicato con l'indirizzo IP.</li>
3360
3361             <li><tt class="docutils literal"><span class=
3362             "pre">domain</span></tt>: indica il nome di dominio
3363             della rete attuale, vedi voce successiva.</li>
3364
3365             <li><tt class="docutils literal"><span class=
3366             "pre">search</span></tt>: nome di dominio usato dalla
3367             rete sul quale cercare gli hosts. Ad esempio se
3368             impostato su <tt class="docutils literal"><span class=
3369             "pre">piffa.net</span></tt> pingando l' host <tt class=
3370             "docutils literal"><span class="pre">bender</span></tt>
3371             viene automaticamente fatto un tentativo di ricerca per
3372             <tt class="docutils literal"><span class=
3373             "pre">bender.piffa.net</span></tt>.</li>
3374           </ul>
3375         </blockquote>
3376
3377         <p>Predisponendo l'infrastruttura di rete della vostra LAN
3378         e' consigliabile impostare sempre almeno un DNS cache sul
3379         vostro server locale per i vari client. In questo modo in
3380         caso di malfunzionamento del DNS o necessita' di
3381         intervenire / sostituire i DNS non sara' piu' necessario
3382         dover reimpostare ogni singolo client della LAN: bastera'
3383         intervenire sul server DNS cache, ad esempio per utilizzare
3384         un nuovo forwarder, o modificare al volo un record DNS. La
3385         modifica, anche detta <em>mascheramento</em>, di un record
3386         come il <em>server smtp</em> o un <em>MX</em> potrebbe
3387         tirarvi rapidamente fuori dai guai nel caso di un problema
3388         improvviso con la posta elettronica o qualunque altro
3389         servizio che possiate reindirizzare col DNS.</p>
3390
3391         <p>Utilizzare un server DHCP e una DNS cache come
3392         <tt class="docutils literal"><span class=
3393         "pre">Dnsmasq</span></tt> possono permettervi di risolvere
3394         al volo molte delle problematiche relative alla
3395         configurazione della vostra LAN: ad esempio dover
3396         intervenire manualmente su decine di client per modificare
3397         le impostazioni di SMTP | gateway | DNS | proxy.</p>
3398
3399         <p>Si veda anche la pagina man di resolv.conf.</p>
3400
3401         <div class="warning">
3402           <p class="first admonition-title">Avvertenza</p>
3403
3404           <p class="last">Attenzione: se si usa un client DHCP, ppp
3405           (ADSL compresa) o simile questo file potrebbe' essere
3406           riscritto automaticamente in base a quanto ottenuto dal
3407           DHCP. Si veda la documentazione del pacchetto <tt class=
3408           "docutils literal"><span class=
3409           "pre">resolvconf</span></tt>.</p>
3410         </div>
3411       </div>
3412
3413       <div class="section" id="etc-hosts">
3414         <h2><a class="toc-backref" href=
3415         "#id63">5.8&nbsp;&nbsp;&nbsp;/etc/hosts</a></h2>
3416
3417         <p>Tabella statica per l'associazione tra IP e nomi di
3418         dominio:</p>
3419         <pre class="literal-block">
3420 # cat /etc/hosts
3421 </pre>
3422
3423         <blockquote>
3424           127.0.0.1 localhost.localdomain localhost 10.10.208.162
3425           daniela daniela.piffa.net 10.10.208.254 mirror
3426           mirror.piffa.net 91.191.138.15 thepiratebay.org
3427           192.168.0.11 chrome chrome.mydomain.com
3428         </blockquote>
3429
3430         <p>Il contenuto del file e' un associazione tra un
3431         <em>IP</em> e stringhe di testo (anche piu' di una per IP)
3432         es: <tt class="docutils literal"><span class=
3433         "pre">mirror</span></tt> o veri e propi nomi di dominio
3434         <tt class="docutils literal"><span class=
3435         "pre">mirror.piffa.net</span></tt>. Si puo inserire un nome
3436         semplice come <em>casa</em> per riferirsi ad un host che si
3437         ha necessita' di contattare spesso, oppure mappare un nome
3438         di dominio completo su un indirizzo IP.</p>
3439
3440         <p>Il problema e' la gestione di questo file su molti
3441         hosts: quando gli host cambiano IP si devono aggiornare
3442         manualmente i records, operazione in se' non
3443         particolarmente gravosa ma che andra' fatta per ogni client
3444         della vostra LAN. Un metodo semplice per distribuire questo
3445         file e' utilizzare <tt class=
3446         "docutils literal"><span class="pre">Dnsmasq</span></tt>:
3447         questo infatti legge e onora il file <tt class=
3448         "docutils literal"><span class="pre">hosts</span></tt> che
3449         avete prodotto e lo rende disponibile ai clients tramite le
3450         query DNS.</p>
3451
3452         <p>Dnsmasq lavora come un server DNS, i vostri client lo
3453         interrogheranno per tradurre nomi di host e domini in
3454         indirizzi IP, risolvendo il problema della
3455         <em>distribuzione</em> del file <tt class=
3456         "docutils literal"><span class="pre">hosts</span></tt> tra
3457         molteplici clients. Infatti il servizio DNS indica appunto
3458         una <em>directory distribuita</em> per la risoluzione dei
3459         nomi di dominio, risolvendo i problemi dell'aggiornamento e
3460         diffusione dei continui cambiamenti di questa.</p>
3461
3462         <p>Modificare la risoluzione di un nome di dominio
3463         esistente (ad esempio riconducendola a un IP interno) e' un
3464         modo drastico e funzionale per <em>annullarlo</em>
3465         rendendolo non disponibile alla propria rete locale. Ad
3466         esempio aggiungere al file <tt class=
3467         "docutils literal"><span class=
3468         "pre">/etc/hosts</span></tt>:</p>
3469         <pre class="literal-block">
3470 127.0.0.1       www.facebook.com
3471 </pre>
3472
3473         <p>Impedira' agli utenti della LAN di raggiungere
3474         <em>facebook</em>, ora reindirizzato a <tt class=
3475         "docutils literal"><span class=
3476         "pre">localhost</span></tt>.</p>
3477
3478         <p>Oppure si potrebbe ricondurre l'indirizzo IP di un
3479         server HTTP pubblico usato per i downloads (ad esempio un
3480         mirror della propia distribuzione come <tt class=
3481         "docutils literal"><span class=
3482         "pre">ftp.it.debian.org</span></tt>) a un equivalente
3483         mirror creato all'interno della rete locale, riducendo il
3484         traffico verso l'esterno e aumentando notevolmente la
3485         velocita' di scaricamento.</p>
3486       </div>
3487
3488       <div class="section" id="hostname">
3489         <h2><a class="toc-backref" href=
3490         "#id64">5.9&nbsp;&nbsp;&nbsp;Hostname</a></h2>
3491
3492         <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
3493         (e modificabile) con il comando <tt class=
3494         "docutils literal"><span class="pre">hostname</span></tt>.
3495         Quando utilizzate a una shell su un host in genere
3496         l'hostname compare nel prompt della shell.</p>
3497
3498         <p>Per visualizzare il nome dell'host su cui si sta
3499         operando si digiti semplicemnte <tt class=
3500         "docutils literal"><span class="pre">hostname</span></tt>,
3501         lo stesso comando con un oggetto modifica temporaneamente
3502         il nome dell'host. Per modificare in modo permanente il
3503         nome del computer si modifichi il contenuto del file
3504         <tt class="docutils literal"><span class=
3505         "pre">/etc/hostname</span></tt>.</p>
3506
3507         <p>Si faccia attenzione a non aver un hostname puramente
3508         numerico: ad es. <tt class="docutils literal"><span class=
3509         "pre">161</span></tt>. E' opportuno che il nome sia
3510         comunque un alfanumerico: <tt class=
3511         "docutils literal"><span class="pre">host-161</span></tt> o
3512         simile.</p>
3513
3514         <div class="section" id="fqdn">
3515           <h3><a class="toc-backref" href=
3516           "#id65">5.9.1&nbsp;&nbsp;&nbsp;FQDN</a></h3>
3517
3518           <p>Per semplicita' gli host sono generalemente
3519           raggiungibili dall'esterno mappando il loro IP su un nome
3520           di dominio FQDN: fully qualified domain name, composto
3521           generalmente da <em>hostname</em>.``domain-name``, ad es.
3522           <em>bender</em>.``piffa.net``.</p>
3523
3524           <p>Alcuni servizi internet fanno affidamento sul PTR
3525           dell'IP del server per cercare una conferma che il
3526           <em>servizio</em> sia veramente chi afferma di essere (ad
3527           esempio STMP).</p>
3528
3529           <p>Non e' automatico che un servizio, ad esempio un
3530           server di posta, si qualifichi leggendo il contenuto del
3531           file <tt class="docutils literal"><span class=
3532           "pre">hostname</span></tt> aggiungendo come suffisso il
3533           dominio della rete di cui fa parte l' host: a volte
3534           questo parametro puo' essere specificato nel file di
3535           configurazione del servizio:</p>
3536           <pre class="literal-block">
3537 * Squid (HTTP proxy): ``visible_hostname``
3538
3539 * Postfix (SMTP server): ``myhostname``
3540 </pre>
3541
3542           <p>I motivi sono diversi, senza entrare nel dettaglio dei
3543           vari protocolli si pensi comunque che un host ha sempre
3544           un solo nome, ma puo' avere un numero variabile di
3545           <em>device di rete</em> sia fisici che virtuali con
3546           relativi <em>indirizzi IP</em>, e piu' servizi in ascolto
3547           sui vari IP.</p>
3548         </div>
3549       </div>
3550     </div>
3551
3552     <div class="section" id="dnsmasq">
3553       <h1><a class="toc-backref" href=
3554       "#id66">6&nbsp;&nbsp;&nbsp;DNSmasq</a></h1>
3555
3556       <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
3557       forwarder, server DHCP, e' caratterizzato dalla facilita' di
3558       configurazione, limitato uso di risorse, adattabilita' a
3559       connessioni <em>dinamiche</em> come ADSL o altre punto a
3560       punto (anche via cellulari) per condividere rapidamente la
3561       rete (cosa molto utile se ci dovesse trovare a ridare
3562       connettetivita' a una rete momentaneamente sprovvista), dalla
3563       possibilita' di modificare rapidamente i record DNS serviti
3564       alla rete anche grazie alla distribuzione del file <tt class=
3565       "docutils literal"><span class="pre">/etc/hosts</span></tt>
3566       locale. Puo' essere anche utilizzato come <cite>server per il
3567       boot da rete
3568       &lt;http://www.debian-administration.org/articles/478&gt;_</cite>
3569       .</p>
3570
3571       <p>Dnsmasq e' un interessante alternativa all'uso del server
3572       DNS Bind in modalita' <em>forwarding e cache-only</em> (non
3573       autoritativo) accompagnato dal server DHCPd. I vantaggi
3574       sono:</p>
3575
3576       <ul class="simple">
3577         <li>Leggerezza: puo' essere fatto girare su una macchina
3578         relativamente debole in caso di bisogno.</li>
3579
3580         <li>Rapidita' di configurazione (in particolare per servire
3581         dei record A / MX alla rete, modificando al volo i valori
3582         originali ospitati sul server DNS pubblico).</li>
3583
3584         <li>Ben integrato con connessioni PPP : e' ingrado di
3585         rilevare i cambiamenti dei dns suggeriti e impostarli come
3586         forwarders (utile se dovete rendere disponibile rapidamente
3587         una connessione a internet a una rete in difficolta').</li>
3588       </ul>
3589
3590       <p>Tutto cio' rende Dnsmasq una soluzione valida in
3591       particolare quando si deve intervenire in una rete
3592       pre-esistente in cui il server principale e' in crisi: si
3593       potra' utilizzare Dnsmasq anche su una macchina piu' debole e
3594       <em>mascherare</em> i servizi al momento non disponibili.
3595       Molto utile per scopi didattici, sopratutto per testare
3596       server SMTP impostando al volo i campi MX per nomi di dominio
3597       fittizi.</p>
3598
3599       <div class="section" id="configurazione">
3600         <h2><a class="toc-backref" href=
3601         "#id67">6.1&nbsp;&nbsp;&nbsp;Configurazione</a></h2>
3602
3603         <p>Vediamo alcune direttive di basi del file di
3604         configurazione <tt class="docutils literal"><span class=
3605         "pre">/etc/dnsmasq.conf</span></tt> utili per la
3606         configurazione sia del DNS cache che per il DHCP
3607         server:</p>
3608
3609         <dl class="docutils">
3610           <dt>domain-needed</dt>
3611
3612           <dd>Non inoltrare query ai server DNS esterni per nomi
3613           semplici (es andrea, portatile, pippo) che verranno
3614           risolti solo in locale o causeranno direttamente una
3615           risposta <em>not found</em> .</dd>
3616
3617           <dt>bogus-priv</dt>
3618
3619           <dd>Simile alla voce precedente ma per i reverse
3620           look-up.</dd>
3621
3622           <dt>domain</dt>
3623
3624           <dd>Nome di dominio della rete da passare ai client.</dd>
3625
3626           <dt>expand_hosts</dt>
3627
3628           <dd>Aggiunge il <tt class="docutils literal"><span class=
3629           "pre">nome</span> <span class="pre">host</span></tt> (
3630           <tt class="docutils literal"><span class=
3631           "pre">/etc/hostname</span></tt>) dei client al nome di
3632           dominio per qualificarli in rete, senza bisogno di dover
3633           comporre a un elenco statico di record nel file
3634           <tt class="docutils literal"><span class=
3635           "pre">/etc/hosts</span></tt> o nello stesso file di
3636           configurazione di dnsmasq. Es: se un vostro client si
3637           chiama <tt class="docutils literal"><span class=
3638           "pre">chrome</span></tt> e il vostro dominio <tt class=
3639           "docutils literal"><span class=
3640           "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
3641           il campo <em>A</em> per il dominio <tt class=
3642           "docutils literal"><span class=
3643           "pre">chrome.piffa.net</span></tt> diretto all'ip che
3644           verra' assegnato al client.</dd>
3645         </dl>
3646       </div>
3647
3648       <div class="section" id="dhcp">
3649         <h2><a class="toc-backref" href=
3650         "#id68">6.2&nbsp;&nbsp;&nbsp;DHCP</a></h2>
3651
3652         <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
3653         al file di configurazione il <em>range</em> degli IP che si
3654         vuole assegnare ai client con il <em>lease time</em> (tempo
3655         di rilascio: quanto a lungo saranno validi gli IP
3656         assegnati) espresso in ore.</p>
3657
3658         <p>Si faccia <em>attenzione</em>: in una rete puo' essere
3659         presente <strong>un solo server DHCP</strong>, o per meglio
3660         dire qualunque server DHCP ascolta sul broadcast <tt class=
3661         "docutils literal"><span class=
3662         "pre">255.255.255.255</span></tt> e potrebbe rispondere a
3663         un pacchetto di richiesta DHCP. Quindi non fate partire
3664         inavvertitamente un server DHCP in una rete gia' servita e
3665         <strong>non vi azzardate ad andare in giro con un portatile
3666         con un server DHCP attivo</strong> nelle reti altrui.
3667         Questo vale anche per i laboratori di informatica dei corsi
3668         di reti: non fate partire il vostro server DHCP se siete
3669         collegati alla rete interna!</p>
3670
3671         <p>/etc/dnsmasq.conf (riga 118):</p>
3672         <pre class="literal-block">
3673 dhcp-range=192.168.0.20,192.168.0.50,24h
3674 </pre>
3675       </div>
3676
3677       <div class="section" id="dns-cache">
3678         <h2><a class="toc-backref" href=
3679         "#id69">6.3&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
3680
3681         <p>Dnsmasq lavora di default come cache dns: inserire al
3682         file <tt class="docutils literal"><span class=
3683         "pre">/etc/resolv.conf</span></tt> il nameserver localhost
3684         in cima alla lista dei <em>nameserver</em> disponibili.</p>
3685
3686         <blockquote>
3687           nameserver 127.0.0.1
3688         </blockquote>
3689
3690         <p>Questo pero' potrebbe essere problematico se un altro
3691         servizio, ad esempio il DHCP client, riscrive il contenuto
3692         del file <tt class="docutils literal"><span class=
3693         "pre">/etc/resolv.conf</span></tt>. Per superare il
3694         problema si aggiunga (riga 20) al file di configurazione
3695         <tt class="docutils literal"><span class=
3696         "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
3697         <pre class="literal-block">
3698 prepend domain-name-servers 127.0.0.1;
3699 </pre>
3700
3701         <p>Oppure potrebbe essere il nostro <em>PPP client</em>
3702         (per la connessione ADSL) a intervenire sul file <tt class=
3703         "docutils literal"><span class=
3704         "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
3705         <tt class="docutils literal"><span class=
3706         "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
3707         <tt class="docutils literal"><span class=
3708         "pre">usepeerdns</span></tt>. Se la vostra connessione ad
3709         internet e' ADSL raramente dovreste aver bisogno di
3710         cambiare i DNS una volta impostati (a meno che non usiate
3711         un portatile!).</p>
3712       </div>
3713     </div>
3714
3715     <div class="section" id="bind-dns-autoritativo">
3716       <h1><a class="toc-backref" href=
3717       "#id70">7&nbsp;&nbsp;&nbsp;Bind : DNS Autoritativo</a></h1>
3718
3719       <p>Le soluzioni viste possono bastare per la rete locale o
3720       per fare delle prove, ma prima o poi verra' il momento in cui
3721       si e' chiamati a gestire dei domini su internet: lo standard
3722       e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
3723       versione 9.</p>
3724
3725       <p>Installare i pacchetti:</p>
3726       <pre class="literal-block">
3727 bind9
3728 </pre>
3729
3730       <div class="section" id="id5">
3731         <h2><a class="toc-backref" href=
3732         "#id71">7.1&nbsp;&nbsp;&nbsp;DNS cache</a></h2>
3733
3734         <p>Bind appena installato funzionera' come DNS cache: si
3735         faccia un test con un <tt class=
3736         "docutils literal"><span class="pre">dig</span>
3737         <span class="pre">@localhost</span></tt> . Bind a
3738         differenza di Dnsmasq e' autonomo: non ha bisogno di
3739         forwardare (inoltrare) le query a un DNS esterno: queste
3740         verranno risolte direttamente da Bind partendo dai <em>DNS
3741         root servers</em>.</p>
3742
3743         <p>E' comunque possibile impostare dei DNS forwarders,
3744         tipicamente i DNS server forniti dal proprio provider, per
3745         velocizzare le query:</p>
3746
3747         <p>/etc/bind/named.conf.options (riga 13):</p>
3748         <pre class="literal-block">
3749 forwarders {
3750                  10.10.208.254;
3751            };
3752 </pre>
3753
3754         <p>Nel caso si voglia usare Bind solo come server DNS cache
3755         per la propria LAN senza ospitare delle zone DNS pubbliche
3756         sara' il caso di limitare gli accessi al server alla sola
3757         LAN:</p>
3758
3759         <p>/etc/bind/named.conf.options (riga 19):</p>
3760         <pre class="literal-block">
3761 // Se il proprio server ha IP 10.10.208.254
3762 // sulla rete LAN privata:
3763 listen-on { 10.10.208.254; }
3764 </pre>
3765
3766         <p>E non si lasci il server in ascolto su uno degli
3767         eventuali indirizzi IP pubblici.</p>
3768
3769         <p>Se questo non fosse possibile si puo' sempre lavorare su
3770         una <em>acl</em>:</p>
3771
3772         <p>/etc/bind/named.conf</p>
3773         <pre class="literal-block">
3774 acl "localnet" {
3775         10.10.208.0/24 ; 127.0.0.0/8 ;
3776         } ;
3777 </pre>
3778
3779         <p>Per poi aggiungere all'interno della stanza options la
3780         direttiva che abilita' l'entita' <tt class=
3781         "docutils literal"><span class=
3782         "pre">localnet</span></tt>:</p>
3783
3784         <p>/etc/bind/named.conf.options</p>
3785         <pre class="literal-block">
3786 allow-query {"localnet" ;} ;
3787 </pre>
3788       </div>
3789
3790       <div class="section" id="ospitare-una-zona">
3791         <h2><a class="toc-backref" href=
3792         "#id72">7.2&nbsp;&nbsp;&nbsp;Ospitare una zona</a></h2>
3793
3794         <p>Se avete acquistato un nome di dominio e vi serve un
3795         software DNS per gestirlo Bind e' la scelta piu' diffusa.
3796         Ora vedremo come configurare una <em>zona</em> (come
3797         piffa.net) in modo che Bind sia autoritativoper questa,
3798         rispondendo alle query DNS di tutta la rete internet.</p>
3799
3800         <div class="section" id="named-conf-local">
3801           <h3><a class="toc-backref" href=
3802           "#id73">7.2.1&nbsp;&nbsp;&nbsp;named.conf.local</a></h3>
3803
3804           <p>Prima di tutti impostiamo il server bind per gestire
3805           la zona, per non fare confusione e' opportuno inserire le
3806           propie zone DNS nel file <tt class=
3807           "docutils literal"><span class=
3808           "pre">named.conf.local</span></tt> e non in <tt class=
3809           "docutils literal"><span class=
3810           "pre">named.conf</span></tt>.</p>
3811
3812           <p>named.conf.local:</p>
3813           <pre class="literal-block">
3814 /
3815 // Do any local configuration here
3816 //
3817
3818 // Consider adding the 1918 zones here, if they are not used in your
3819 // organization
3820 //include "/etc/bind/zones.rfc1918";
3821
3822 zone "piffa.net" {
3823         type master;
3824         file "/etc/bind/pz/piffa.net";
3825         }
3826 </pre>
3827
3828           <dl class="docutils">
3829             <dt>type master</dt>
3830
3831             <dd>Il nostro server DNS sara' il principale, al quale
3832             poi potremo affiancare dei DNS secondari nel caso
3833             questo non sia disponibile.</dd>
3834
3835             <dt>file "/etc/bind/pz/piffa.net"</dt>
3836
3837             <dd>Dove verranno inserite le informazioni vere e
3838             propie di questa zona.</dd>
3839           </dl>
3840         </div>
3841
3842         <div class="section" id="configurazione-della-zona">
3843           <h3><a class="toc-backref" href=
3844           "#id74">7.2.2&nbsp;&nbsp;&nbsp;Configurazione della
3845           zona</a></h3>
3846
3847           <p>Ora dovremo preparare il file contenente i record DNS
3848           della zona <em>piffa.net</em>, come abbiamo indicato
3849           prima questi saranno contenuti nel file <tt class=
3850           "docutils literal"><span class=
3851           "pre">/etc/bind/pz/piffa.net</span></tt> . Tenere le zone
3852           dentro una sottocartella e' buona abitudine, usare
3853           <tt class="docutils literal"><span class=
3854           "pre">pz</span></tt> per queste e' una vecchia
3855           abitudine.</p>
3856
3857           <p>piffa.net:</p>
3858           <pre class="literal-block">
3859 ; Zona per il dominio di secondo livello piffa.net
3860
3861 $TTL 3D     ; 3 days
3862 @                    IN SOA  ns1.piffa.net. hostmaster.piffa.net. (
3863                                 200905245  ; serial
3864                                 8H         ; refresh (8 hours)
3865                                 2H         ; retry (2 hours)
3866                                 4W         ; expire (4 weeks)
3867                                 1D         ; minimum (1 day)
3868                                 )
3869 ;
3870                         NS      ns1
3871                         NS      ns2
3872                         A       94.23.63.105
3873                         MX      10 smtp
3874                         TXT     "Piffanet main site"
3875 ;
3876 ns1             A       94.23.63.105
3877 ns2             A       65.98.21.97
3878 zoo             A       94.23.63.105
3879 smtp            A       94.23.63.105
3880 test.piffa.net. A       94.23.63.105
3881 *.piffa.net.    A       94.23.63.105 ; *catch all domain
3882 www             CNAME   zoo
3883 ftp             CNAME   zoo
3884 </pre>
3885
3886           <p>All'interno di questo file si possono inserire dei
3887           commenti con il carattere <tt class=
3888           "docutils literal"><span class="pre">;</span></tt>
3889           (punto-e-virgola), si faccia attenzione alla rigida
3890           sintassi: apertura e chiusura delle parentesi tonde nella
3891           parte <tt class="docutils literal"><span class=
3892           "pre">IN</span> <span class="pre">SOA</span></tt>, uso
3893           del <tt class="docutils literal"><span class=
3894           "pre">punto</span></tt> finale per precisare un nome di
3895           dominio specifico (<em>FQDN</em>: Fully-qualified Domain
3896           Name) come <tt class="docutils literal"><span class=
3897           "pre">test.piffa.net.</span></tt> a differenza degli
3898           altri domini di terzo livello come <tt class=
3899           "docutils literal"><span class=
3900           "pre">pop,imap,smtp</span></tt> .</p>
3901
3902           <p>La zona inizia con una direttiva <tt class=
3903           "docutils literal"><span class="pre">$TTL</span>
3904           <span class="pre">3D</span></tt> (RFC 2308) che indica la
3905           durata (in questo caso tre giorni) che ogni record
3906           dovrebbe avrebbe nella cache degli altri serber DNS.
3907           Questo valore dovrebbe essere superiore a un giorno, se
3908           non modificate spesso i valori dei vostri record DNS e'
3909           consigliabile settarlo a 2/3 settimane in modo da
3910           limitare la frequenza delle query al propio server.
3911           Questo parametro puo' essere modificato per singoli
3912           record:</p>
3913           <pre class="literal-block">
3914 $TTL 3D     ; 3 giorni: default se non specificato altrimenti
3915 rapido  5h      IN      A       94.23.63.105 ; usa un TTL di 5 ore
3916 lento   3w      IN      A       94.23.63.105 ; usa un TTL di 3 settimane
3917 normale         IN      A       94.23.63.105 ; usa il TTL di default: 3 giorni
3918 </pre>
3919
3920           <p>Segue poi il nome della zona, indicato con la
3921           <tt class="docutils literal"><span class=
3922           "pre">@</span></tt> per richiamare la zona originale
3923           precisata nel file <tt class=
3924           "docutils literal"><span class=
3925           "pre">named.conf.options</span></tt> . Segue il campo
3926           <tt class="docutils literal"><span class=
3927           "pre">SOA</span></tt>.</p>
3928
3929           <div class="section" id="soa-start-of-authority-record">
3930             <h4><a class="toc-backref" href=
3931             "#id75">7.2.2.1&nbsp;&nbsp;&nbsp;SOA: Start of
3932             Authority Record</a></h4>
3933
3934             <p>Il record SOA puo' comparire solo una volta in una
3935             zona, contiene informazioni relative all'autorita' del
3936             server DNS.</p>
3937
3938             <dl class="docutils">
3939               <dt>ns1.piffa.net. name-server</dt>
3940
3941               <dd>primary master DNS di questo dominio.</dd>
3942
3943               <dt>hostmaster.piffa.net. email-addr</dt>
3944
3945               <dd>email-addr: indirizzo email della persona
3946               responsabile di questa zona, il primo punto viene
3947               tradotto in una <em>chiocciola</em> <tt class=
3948               "docutils literal"><span class="pre">@</span></tt>
3949               dato che questo carattere ha un'altro utilizzo
3950               all'interno di questo file. Il referente della zona
3951               <strong>deve</strong> essere un email valido e
3952               controllato, come consuetudine si usa <tt class=
3953               "docutils literal"><span class=
3954               "pre">hostmaster@dominio.tilde</span></tt> .</dd>
3955
3956               <dt>200905245 serial number</dt>
3957
3958               <dd>Questo valore serve per indicare quando e' stato
3959               modificato questo file di configurazione, secondo il
3960               formato <tt class="docutils literal"><span class=
3961               "pre">yyyymmddss</span></tt>: <tt class=
3962               "docutils literal"><span class="pre">yyyy</span></tt>
3963               = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' =
3964               seriale. Il seriale che deve essere sempre
3965               specificato anche per una cifra, va incrementato di
3966               una unita' nel caso vengano fatte piu' modifiche
3967               <em>nello stesso giorno</em>.</dd>
3968
3969               <dt>8H refresh</dt>
3970
3971               <dd>Indica ai DNS secondari quanto tempo attendere
3972               per cercare di aggiornare i loro dati con il DNS
3973               master.</dd>
3974
3975               <dt>2H retry</dt>
3976
3977               <dd>Intervallo di tempo per il DNS slave (secondario)
3978               da aspettare prima di cercare di ricontattare il
3979               <em>master</em> in caso di problemi col
3980               <em>refresh</em>.</dd>
3981
3982               <dt>4W expire</dt>
3983
3984               <dd>Indica quando i dati dei dns secondarinon sono
3985               piu' autoritativi in caso di impossibilita' degli
3986               <em>slaves</em> di ri-aggiornarsi con il
3987               <em>master</em>. Consigliato un valore di 2/4
3988               settimane.</dd>
3989
3990               <dt>1D minimum</dt>
3991
3992               <dd>Questo valore indicava il TTL fino alla versione
3993               8 di Bind, da Bind 9 e secondo la RFC2308 indica la
3994               durata del <em>negative caching</em>, quanto i
3995               resolvers (ad esempio un server dns cache) puo'
3996               mantenere un record <em>negativo</em> (che non indica
3997               la corrispondenza tra un nome di dominio e un ip, ma
3998               la non esistenza del record). Nell'uso per il
3999               negative caching viene fissato un valore massimo di 3
4000               ore dalla RFC 2308.</dd>
4001             </dl>
4002           </div>
4003
4004           <div class="section" id="altri-campi">
4005             <h4><a class="toc-backref" href=
4006             "#id76">7.2.2.2&nbsp;&nbsp;&nbsp;Altri campi:</a></h4>
4007
4008             <p>All'interno della zona possono essere utilizati vari
4009             tipi di records (RR):</p>
4010
4011             <dl class="docutils">
4012               <dt>TXT</dt>
4013
4014               <dd>Informazioni testuali associate ad un record</dd>
4015
4016               <dt>NS</dt>
4017
4018               <dd>Name Server della zona. Non deve essere un
4019               cname.</dd>
4020
4021               <dt>A</dt>
4022
4023               <dd>Indirizzo ipv4 da associare al record</dd>
4024
4025               <dt>AAA</dt>
4026
4027               <dd>Indirizzo ipv6 da associare al record</dd>
4028
4029               <dt>CNAME</dt>
4030
4031               <dd>Canonical Name: un alias per un host: ad esempio
4032               per il dominio piffa.net possiamo settare degli alias
4033               come <tt class="docutils literal"><span class=
4034               "pre">www.piffa.net,</span> <span class=
4035               "pre">http.piffa.net,</span> <span class=
4036               "pre">virtual.piffa.net,</span> <span class=
4037               "pre">ftp.piffa.net,</span> <span class=
4038               "pre">imap.piffa.net</span></tt>. Comodo quando
4039               diversi alias sono sempre riferiti allo stesso
4040               ip.</dd>
4041
4042               <dt>MX</dt>
4043
4044               <dd>Mail Exchanger: server di posta che si occupera'
4045               della posta elettronica per questo dominio.E'
4046               opportuno avere almeno un server di posta di back-up,
4047               per indicare la priorita' di un MX rispettoad un
4048               altro si usa un valore di 2 cifre: il valore piu'
4049               basso indica priorita' piu' bassa. Es: <tt class=
4050               "docutils literal"><span class=
4051               "pre">MX</span>&nbsp;&nbsp;&nbsp; <span class=
4052               "pre">10</span> <span class=
4053               "pre">smtp.piffa.net.</span></tt> per il server SMTP
4054               principale e <tt class=
4055               "docutils literal"><span class="pre">MX</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
4056               <span class="pre">40</span> <span class=
4057               "pre">smtp2.piffa.net</span></tt> per il secondario.
4058               Non deve essere un cname.</dd>
4059
4060               <dt>PTR</dt>
4061
4062               <dd>Reverse look-up, usato per la mappatura inversa
4063               di un indirizzo ip a una stringa identificativa
4064               dell'host. Si noti che per poter modificare questi
4065               record si deve avere <em>in gestione</em> la <em>zona
4066               IP</em>, se cosi' non fosse si dovra' chiedere al
4067               propio provider la modifica di questo record per il
4068               propio ip. Links: <a class="reference external" href=
4069               "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
4070             </dl>
4071           </div>
4072         </div>
4073       </div>
4074
4075       <div class="section" id="dns-slave">
4076         <h2><a class="toc-backref" href=
4077         "#id77">7.3&nbsp;&nbsp;&nbsp;DNS slave</a></h2>
4078
4079         <p>Data l'importanza del servizio DNS e' necessario avere
4080         ridondanza per i server DNS che ospitano i vostri dati: in
4081         caso di indisponibilita' del server <em>master</em> (nel
4082         caso fosse il solo a tenere i dati questo comporterebbe la
4083         <em>scomparsa</em> di tutti i servizi / host da esso
4084         seviti!) il client potrebbe contattare uno degli
4085         <em>slave</em>.</p>
4086
4087         <p>Gli slave recuperano i dati dei recordos RR direttamente
4088         dal master e non sara' quindi necessario dover mantenere
4089         manualmente il file di configurazione della zona sugli
4090         slaves, ogni volta che aggiorneremo il master questi dati
4091         si propaghera' agli slaves automaticamente.</p>
4092
4093         <p>Per attivare uno <em>slave</em> per la nostra zona di
4094         esempio <tt class="docutils literal"><span class=
4095         "pre">piffa.net</span></tt> si inserisca nel file
4096         <tt class="docutils literal"><span class=
4097         "pre">named.conf.local</span></tt> dello slave server:</p>
4098         <pre class="literal-block">
4099 zone "piffa.net" {
4100         type slave;
4101         file "/etc/bind/pz/piffa.net";
4102         masters { 192.168.0.1; };
4103         };
4104 </pre>
4105
4106         <p>Facendo ripartire Bind il file <tt class=
4107         "docutils literal"><span class=
4108         "pre">/etc/bind/pz/piffa.net</span></tt> viene creato
4109         automaticamente.</p>
4110
4111         <p>Segue un estratto di <tt class=
4112         "docutils literal"><span class=
4113         "pre">/var/log/syslog</span></tt> al <tt class=
4114         "docutils literal"><span class="pre">restart</span></tt> di
4115         <tt class="docutils literal"><span class=
4116         "pre">bind9</span></tt> sullo slave:</p>
4117         <pre class="literal-block">
4118 ... slave named[2256]: zone piffa.net/IN: loaded serial 200905245
4119 ... slave named[2256]: running
4120 ... slave named[2256]: zone piffa.net/IN: sending notifies (serial 200905245)
4121 ... slave named[2256]: client 192.168.0.1#1464: received notify for zone 'piffa.net'
4122 ... slave named[2256]: zone piffa.net/IN: notify from 192.168.0.1#1464: zone is up to date
4123 </pre>
4124
4125         <div class="warning">
4126           <p class="first admonition-title">Avvertenza</p>
4127
4128           <p class="last">Bind9 (versione 9.3 presente in Debian
4129           Lenny) richiede una esplicita autorizzazione alla
4130           notifica per lo stesso server slave, che in fase di avvio
4131           interroghera' (inviando un notify) se' stesso per
4132           valutare se i dati relativi alla zona di cui e' slave
4133           sono aggiornati. Si aggiunga quindi al file <tt class=
4134           "docutils literal"><span class=
4135           "pre">/etc/bind/named.conf.options</span></tt> dello
4136           slave: <tt class="docutils literal"><span class=
4137           "pre">allow-notify</span> <span class="pre">{</span>
4138           <span class="pre">192.168.0.1;</span> <span class=
4139           "pre">};</span></tt> all'interno della stanza <tt class=
4140           "docutils literal"><span class="pre">options</span></tt>,
4141           in cui l'inidirizzo IP inserito e' quello dello stesso
4142           slave server.</p>
4143         </div>
4144       </div>
4145
4146       <div class="section" id="aggiornamento-dinamico-nsupdate">
4147         <h2><a class="toc-backref" href=
4148         "#id78">7.4&nbsp;&nbsp;&nbsp;Aggiornamento dinamico:
4149         nsupdate</a></h2>
4150
4151         <p>Dalla versione 8 di Bind e' dsponibile l'utility
4152         <tt class="docutils literal"><span class=
4153         "pre">nsupdate</span></tt> (disponibile nel pacchetto
4154         <tt class="docutils literal"><span class=
4155         "pre">dnsutils</span></tt>) per aggiornare automaticamente
4156         i record di una zona secondo il paradigma client / server (
4157         RFC2136 ) . Posto che abbiate a disposizione un server DNS
4158         Bind on-line su un indirizzo IP fisso e un zona da gestire
4159         (che potrebbe essere anche solo la delega di un dominio di
4160         terzo livello come <em>casa.miodominio.net</em>) sara'
4161         possibile aggiornare automaticamente i record che tirano a
4162         degli indirizzi IP <em>pubblici ma dnamici</em>, come
4163         quelli spesso messi a disposizione dei provider per le
4164         connessioni ad internet residenziali, in modo da poter
4165         rendere sempre raggiungibile la vostra workstation a casa
4166         anche dopo un aggiornamento dell'ip dinamico associato alla
4167         connessione.</p>
4168
4169         <p>L'auenticazione del client nsupdate che avra' la
4170         possibilita' di aggiornare il server DNS master avviene
4171         tramite <em>Transaction signatures</em> (TSIG, RFC2845)
4172         usando un algoritmo di criptazione dati asimmetrico
4173         <em>HMAC-MD5</em> : generata una coppia di chiavi sul
4174         client / nsupdate con l'utility si dovra' trasferire la
4175         chiave pubblica sul server <em>master</em>, che verra'
4176         configurato per onorare gli aggiornamenti (eliminazione e
4177         inserimento di record RR) autenticati dalla chiave
4178         privata.</p>
4179
4180         <div class="section" id="configurazione-client-nsupdate">
4181           <h3><a class="toc-backref" href=
4182           "#id79">7.4.1&nbsp;&nbsp;&nbsp;Configurazione client
4183           (nsupdate)</a></h3>
4184
4185           <p>Sul client, sul quale non deve essere necessariamente
4186           installato un server DNS Bind ma la sola utility
4187           <tt class="docutils literal"><span class=
4188           "pre">nsupdate</span></tt>, generiamo la coppia di chiavi
4189           con l'utility <tt class="docutils literal"><span class=
4190           "pre">dnssec-keygen</span></tt> installabile tramite il
4191           pacchetto <tt class="docutils literal"><span class=
4192           "pre">bind9utils</span></tt>:</p>
4193           <pre class="literal-block">
4194 dnssec-keygen -a HMAC-MD5 -b 512 -n USER home.piffa.net.
4195 </pre>
4196
4197           <p>Otterremo le due chiavi <tt class=
4198           "docutils literal"><span class=
4199           "pre">Khome.piffa.net.+157+04331.key</span>&nbsp;
4200           <span class=
4201           "pre">Khome.piffa.net.+157+04331.private</span></tt>, la
4202           chiave pubblica dovra' essere resa noto al server master
4203           che ricevera' l'update dei records.</p>
4204         </div>
4205
4206         <div class="section" id=
4207         "configurazione-server-riconoscimento-chiave">
4208           <h3><a class="toc-backref" href=
4209           "#id80">7.4.2&nbsp;&nbsp;&nbsp;Configurazione server:
4210           riconoscimento chiave</a></h3>
4211
4212           <dl class="docutils">
4213             <dt>Per rendere nota al server la chiave pubblica
4214             generata sul client si aggiunga quindi al file
4215             <tt class="docutils literal"><span class=
4216             "pre">/etc/bind/named.conf</span></tt> sul
4217             server::</dt>
4218
4219             <dd>
4220               <dl class="first last docutils">
4221                 <dt>key home.piffa.net. {</dt>
4222
4223                 <dd>algorithm HMAC-MD5; secret
4224                 "txfAkNTScANEu2V73mCeiDpXNc3pmf+7ONOoKnTKQKIZMzierSmeHjK5
4225                 Z8ntnByt/PJwv26jCIsVh8n+xzVsRw=="; };</dd>
4226               </dl>
4227             </dd>
4228           </dl>
4229
4230           <div class="note">
4231             <p class="first admonition-title">Nota</p>
4232
4233             <p class="last">La parte <tt class=
4234             "docutils literal"><span class=
4235             "pre">secret</span></tt>, che potete leggere
4236             direttamente nel file *.key della chiave genearta, e'
4237             scritto <em>tutto sulla stessa riga</em> senza ritorni
4238             a capo.</p>
4239           </div>
4240         </div>
4241
4242         <div class="section" id="server-gestione-dell-intera-zona">
4243           <h3><a class="toc-backref" href=
4244           "#id81">7.4.3&nbsp;&nbsp;&nbsp;Server: gestione
4245           dell'intera zona</a></h3>
4246
4247           <p>Sul server modifichiamo il file di configurazione
4248           <tt class="docutils literal"><span class=
4249           "pre">named.conf.local</span></tt> della zona della quale
4250           vogliamo concedere l'aggiornamento al client:</p>
4251           <pre class="literal-block">
4252 zone "piffa.net" {
4253         type master;
4254         file "/etc/bind/pz/piffa.net" ;
4255         allow-update {
4256                         key  home.piffa.net;
4257                         };
4258 };
4259 </pre>
4260
4261           <dl class="docutils">
4262             <dt>Sara' necessario assicurarsi che il demone di Bind
4263             sia in grado di modificare il file <tt class=
4264             "docutils literal"><span class=
4265             "pre">/etc/bind/pz/piffa.net</span></tt>: dato che
4266             questo file ora sara' gestito da lui si proceda a
4267             cedergli la propieta' del file::</dt>
4268
4269             <dd>chown bind /etc/bind/pz/piffa.net</dd>
4270           </dl>
4271
4272           <p>Altro problema che si potrebbe porre: gli orologi di
4273           sistema dei due host devono essere sincronizzati per
4274           poter valutare l'opportunita' di un aggiornamento: si
4275           consigla di installare su entrambi l'utility <tt class=
4276           "docutils literal"><span class="pre">ntpdate</span></tt>
4277           e di eseguirla facendo riferimento ai time server di
4278           Debian:</p>
4279           <pre class="literal-block">
4280 apt-get install ntpdate
4281 ntpdate-debian
4282 </pre>
4283
4284           <p>Ora possiamo provare dal client a effettuare
4285           l'iserimento di un record per testarne il
4286           funzionamento:</p>
4287           <pre class="literal-block">
4288 # nsupdate -k Khome.piffa.net.+157+04331.private -v
4289 &gt; server ns1.piffa.net
4290 &gt; update add home.piffa.net. 86400 A 192.168.0.2
4291 &gt; show
4292 Outgoing update query:
4293 ;; -&gt;&gt;HEADER&lt;&lt;- opcode: UPDATE, status: NOERROR, id:      0
4294 ;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
4295 ;; UPDATE SECTION:
4296 home.piffa.net.         86400   IN      A       192.168.0.1
4297
4298
4299 &gt; send
4300 </pre>
4301
4302           <p>Per comprendere meglio l'uso dell'utility <tt class=
4303           "docutils literal"><span class="pre">nsupdate</span></tt>
4304           si consiglia la lettura della relativa pagina man. Nella
4305           prima riga viene invocato il comando <tt class=
4306           "docutils literal"><span class="pre">nsupdate</span></tt>
4307           impostando col flag <tt class=
4308           "docutils literal"><span class="pre">-k</span></tt> la
4309           chiave privata generata precedentemente, con <tt class=
4310           "docutils literal"><span class="pre">server</span></tt>
4311           si imposta quale server NS autoritario della zona (che
4312           abbiamo precedentemente configurato per ricevere gli
4313           aggiornamenti) vogliamo contattare. Alla riga sucessiva
4314           <tt class="docutils literal"><span class=
4315           "pre">update</span></tt> viene aggiunto un record
4316           <tt class="docutils literal"><span class=
4317           "pre">A</span></tt> per la il dominio <tt class=
4318           "docutils literal"><span class=
4319           "pre">home.piffa.net</span></tt> indirizzato all'IP
4320           <tt class="docutils literal"><span class=
4321           "pre">192.168.0.2</span></tt>, poi <tt class=
4322           "docutils literal"><span class="pre">show</span></tt>
4323           mostra quanto ci si prepara a comunicare al server con il
4324           finale <tt class="docutils literal"><span class=
4325           "pre">send</span></tt> .</p>
4326
4327           <p>Si noti che in questo modo <em>l'intera zona</em>
4328           piffa.net e suscettibile di essere modificata dal client,
4329           che potra' eliminare e inserire qualunque record. E'
4330           possibile gestire in modo piu' granulare la zona, ad
4331           esempio concedendo al client i privilegi per gestire solo
4332           una parte della zona o i tipo di record da gestire.</p>
4333         </div>
4334
4335         <div class="section" id=
4336         "automatizzare-l-aggiornamento-dinamico">
4337           <h3><a class="toc-backref" href=
4338           "#id82">7.4.4&nbsp;&nbsp;&nbsp;Automatizzare
4339           l'aggiornamento dinamico</a></h3>
4340
4341           <p>Nsupdate risulta comodo per tenere aggiornati i record
4342           DNS degli host connessi ad internet con indirizzi IP
4343           dinamici (pubblici) assegnati dal provider. Il client
4344           deve essere in grado di contattare autonomamente il
4345           server DNS per comunicare un cambiamento del suo ip.
4346           Vediamo innanzi tutto un primo script per nsupdate:</p>
4347           <pre class="literal-block">
4348 #!/bin/bash
4349 # Diamo al demone ppp un po' di tempo per negoziare la connessione
4350 # prima di leggere l'IP ottenuto
4351 sleep 15
4352 IPADDR=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
4353
4354 nsupdate  -k /root/dns/Khome.piffa.net.+157+04331.private &lt;&lt;-EOF
4355         server 192.168.0.254
4356         zone home.piffa.net.
4357         update delete home.piffa.net. A
4358         update delete home.piffa.net. MX
4359         update add home.piffa.net. 432000 A $IPADDR
4360         update add home.piffa.net. 432000 MX 10  home.piffa.net.
4361         show
4362         send
4363         EOF
4364 </pre>
4365
4366           <p>Questo script legge il valore del device di rete
4367           <tt class="docutils literal"><span class=
4368           "pre">ppp0</span></tt> creato dal <cite>pppoe</cite> di
4369           una connessione ADSL per ottenere l'indirizzo IP ottenuto
4370           dal provider (prima di farlo aspetta 15 secondi per dare
4371           il tempo al <tt class="docutils literal"><span class=
4372           "pre">pppoe</span></tt> di negoziare la
4373           connessione).Vengono poi eliminati gli esistenti valori
4374           <tt class="docutils literal"><span class=
4375           "pre">A</span></tt> e <tt class=
4376           "docutils literal"><span class="pre">MX</span></tt> per
4377           <tt class="docutils literal"><span class=
4378           "pre">home.piffa.net</span></tt> (si noti il punto finale
4379           dopo <em>net</em>) e inseriti quelli attuali.</p>
4380
4381           <p>Resta da decidere quando richiamare questo script:
4382           l'evento che causa l'assegnazione del nuovo IP in questo
4383           caso e una nuova connessione <tt class=
4384           "docutils literal"><span class="pre">pppoe</span></tt>,
4385           quindi sarebbe consigliabile inserire lo script nelle
4386           routine comprese in <tt class=
4387           "docutils literal"><span class=
4388           "pre">/etc/ppp/ip-up.d</span></tt> (si veda la
4389           documentazione di ppp), nel caso questo non desse i
4390           risultati sperati (per problemi di connessione) come via
4391           estrema si consideri di mettere lo script nella routine
4392           del demone <tt class="docutils literal"><span class=
4393           "pre">cron</span></tt> in modo che venga eseguito
4394           periodicamente (ad esempio ogni giorno).</p>
4395         </div>
4396       </div>
4397
4398       <div class="section" id="link-suggeriti">
4399         <h2><a class="toc-backref" href=
4400         "#id83">7.5&nbsp;&nbsp;&nbsp;Link suggeriti:</a></h2>
4401
4402         <ul class="simple">
4403           <li>DNS for Rocket Scientists <a class=
4404           "reference external" href=
4405           "http://www.zytrax.com/books/dns/">http://www.zytrax.com/books/dns/</a></li>
4406
4407           <li>DNS HOWTO <a class="reference external" href=
4408           "http://www.langfeldt.net/DNS-HOWTO/BIND-9/">http://www.langfeldt.net/DNS-HOWTO/BIND-9/</a></li>
4409         </ul>
4410       </div>
4411     </div>
4412
4413     <div class="section" id="samba">
4414       <h1><a class="toc-backref" href=
4415       "#id84">8&nbsp;&nbsp;&nbsp;Samba</a></h1>
4416
4417       <p>Samba e' un progetto libero che fornisce servizi di
4418       condivisione di file e stampanti a client SMB/CIFS.</p>
4419
4420       <p>Samba e' liberamente disponibile, al contrario di altre
4421       implementazioni SMB/CIFS, e permette di ottenere
4422       interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
4423
4424       <p>Samba e' un software che puo' girare su piattaforme che
4425       non siano Microsoft Windows, per esempio, UNIX, Linux, IBM
4426       System 390, OpenVMS e altri sistemi operativi. Samba utilizza
4427       il protocollo TCP/IP utilizzando i servizi offerti sul server
4428       ospite. Quando correttamente configurato, permette di
4429       interagire con client o server Microsoft Windows come se
4430       fosse un file e print server Microsoft agendo da Primary
4431       Domain Controller (PDC) o come Backup Domain Controller, puo'
4432       inoltre prendere parte ad un dominio Active Directory.</p>
4433
4434       <div class="section" id="pacchetti">
4435         <h2><a class="toc-backref" href=
4436         "#id85">8.1&nbsp;&nbsp;&nbsp;Pacchetti</a></h2>
4437
4438         <p>Pacchetti da installare per utilizzare Samba in
4439         modalita' client <a class="footnote-reference" href="#id7"
4440         id="id6" name="id6">[2]</a></p>
4441         <pre class="literal-block">
4442 samba-client
4443 </pre>
4444
4445         <p>Pacchetti da installare per utilizzare Samba in
4446         modalita' server:</p>
4447         <pre class="literal-block">
4448 samba smbfs smbclient
4449 </pre>
4450
4451         <table class="docutils footnote" frame="void" id="id7"
4452         rules="none">
4453           <colgroup>
4454             <col class="label">
4455             <col>
4456           </colgroup>
4457
4458           <tbody valign="top">
4459             <tr>
4460               <td class="label"><a class="fn-backref" href=
4461               "#id6">[2]</a></td>
4462
4463               <td>Anche se nato per i sistemi Windows, Samba puo'
4464               essere usato anche per montare cartelle sotto
4465               GNU/Linux come alternativa a NFS. Per la condivisione
4466               di stampanti sarebbe invece opportuno intervenire
4467               direttamente su <tt class=
4468               "docutils literal"><span class=
4469               "pre">CUPS</span></tt>.</td>
4470             </tr>
4471           </tbody>
4472         </table>
4473
4474         <p>Durante la prima installazione viene chiesto il nome del
4475         gruppo di appartenenza, il default per Windows e'
4476         <tt class="docutils literal"><span class=
4477         "pre">WORKGROUP</span></tt>. In aula usiamo invece
4478         <tt class="docutils literal"><span class=
4479         "pre">208</span></tt> .</p>
4480
4481         <p>Per riconfigurare Samba si usi il comando:</p>
4482         <pre class="literal-block">
4483 dpkg-reconfigure samba-common
4484 </pre>
4485       </div>
4486
4487       <div class="section" id="passwords-e-autenticazione">
4488         <h2><a class="toc-backref" href=
4489         "#id86">8.2&nbsp;&nbsp;&nbsp;Passwords e
4490         autenticazione</a></h2>
4491
4492         <p>Per poter configurare Samba in modo che usi un sistema
4493         di negoziazione degli accessi alle cartelle condivise
4494         basato su accoppiate <em>nome utente / password</em>
4495         bisogna distinguere tra 3 livelli di password (e
4496         generalmente volete usare <em>sempre la stessa
4497         password</em> per ognuno di questi) e delle differenze tra
4498         le modalita' di <em>autenticazione</em> (e quindi anche di
4499         criptaggio delle passwords) usate da sistemi GNU/Linux e
4500         Windows:</p>
4501
4502         <dl class="docutils">
4503           <dt>1 Sistema *Unix ( GNU/Linux )</dt>
4504
4505           <dd>E' la password dell'<em>utente di sistema</em> che
4506           viene usata sul sistema operativo su cui gira il software
4507           Samba. E' importante tenere conto anche delle
4508           <em>user-id</em> e <em>group-id</em> degli utenti che
4509           dovranno fisicamente scrivere sui file system. Se un
4510           utente non puo' scrivere in una certa posizione del file
4511           system (ad esempio nella cartella <tt class=
4512           "docutils literal"><span class=
4513           "pre">/mnt/condivisione</span></tt> che sara' stata
4514           necessariamente creata inizialmente dall'utente
4515           <tt class="docutils literal"><span class=
4516           "pre">root</span></tt>) per mancanza dei privilegi di
4517           scrittura allora neanche Samba potra' farlo nel momento
4518           in mette a disposizione la risorsa all'utente. Se si
4519           montano file-system dedicati per le condivisioni
4520           controllare i permessi e proprieta' dei <em>punti di
4521           mount*</em>. Queste passwords sono salvate nel solito
4522           file /etc/shadow (richiamato da /etc/passwd).</dd>
4523
4524           <dt>2 Password per l'applicativo Samba</dt>
4525
4526           <dd>Samba deve essere compatibile con Windows e quindi
4527           utilizzare un sistema di criptazione delle password
4528           diverso da /etc/shadow . Le password per Samba possono
4529           essere gestite ad esempio col comando <tt class=
4530           "docutils literal"><span class=
4531           "pre">smbpasswd</span></tt> e vengono generalmente
4532           salvate all'interno di <tt class=
4533           "docutils literal"><span class=
4534           "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
4535
4536           <dt>3 Password per Windows.</dt>
4537
4538           <dd>Gli utenti Windows effettuano il log-in alla partenza
4539           della sessione di Windows. Se si avra' l'accortezza di
4540           usare sempre la <em>stessa password</em> data
4541           precedentemente anche a Windows (o viceversa impostare la
4542           password per GNU/Linux / Samba uguale a quella di
4543           Windows) l'utente potra' accedere automaticamente alle
4544           condivisioni a lui disponibili.</dd>
4545         </dl>
4546       </div>
4547
4548       <div class="section" id="creazione-utenti">
4549         <h2><a class="toc-backref" href=
4550         "#id87">8.3&nbsp;&nbsp;&nbsp;Creazione Utenti</a></h2>
4551
4552         <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
4553         attenzione a <em>non dargli una shell di sistema</em>. Gli
4554         utenti Windows che accedono al server solo per le
4555         condivisioni non hanno bisogno di poter eseguire comandi
4556         sul server!</p>
4557
4558         <p>Creazione di un utente denominato sambo:</p>
4559         <pre class="literal-block">
4560 adduser --shell /bin/false sambo
4561 </pre>
4562
4563         <p>Nel file <tt class="docutils literal"><span class=
4564         "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
4565         <pre class="literal-block">
4566 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
4567 </pre>
4568
4569         <p>Aggiunta dell'utente al database delle password per
4570         Samba e generazione della sua password:</p>
4571         <pre class="literal-block">
4572 smbpasswd -a sambo
4573 </pre>
4574
4575         <p>Se successivamente si vorra' modificare la password di
4576         un utente gia' esistente si usi:</p>
4577         <pre class="literal-block">
4578 smbpasswd  sambo
4579 </pre>
4580
4581         <p>La password sotto Windows verra' modificata sul sistema
4582         Windows.</p>
4583       </div>
4584
4585       <div class="section" id="creare-la-condivisione">
4586         <h2><a class="toc-backref" href=
4587         "#id88">8.4&nbsp;&nbsp;&nbsp;Creare la
4588         condivisione</a></h2>
4589
4590         <p>La condivisione altro non e' che una cartella sul server
4591         che viene resa disponibile ai client negoziando l'accesso
4592         in base a una autenticazione basata su <em>user-name /
4593         password</em>. E' per altro possibile permettere l'accesso
4594         a una risorsa a chiunque indiscriminatamente (a tutti i
4595         <tt class="docutils literal"><span class=
4596         "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
4597         punto di vista della sicurezza. Si decida se la cartella
4598         condivisa debba risiedere nella <em>home</em> di un utente
4599         (nel caso quest'ultimo ne sia l'unico fruitore) o in una
4600         cartella in /mnt/ (nel caso piu' utenti accedano a questa).
4601         Nel secondo caso si potranno gestire gli accessi sotto
4602         GNU/Linux tramite i gruppi.</p>
4603
4604         <p>Creazione della risorsa sambo_share nella home
4605         dell'utente sambo:</p>
4606         <pre class="literal-block">
4607 # mkdir /home/sambo/sambo_share
4608 # chown sambo:sambo /home/sambo/sambo_share/
4609 </pre>
4610
4611         <div class="section" id=
4612         "sicurezza-permessi-di-esecuzione-sul-server">
4613           <h3><a class="toc-backref" href=
4614           "#id89">8.4.1&nbsp;&nbsp;&nbsp;Sicurezza: permessi di
4615           esecuzione sul server</a></h3>
4616
4617           <p>Bisognerebbe notare sul server i permessi di
4618           esecuzione del file-system che ospita la cartella da
4619           condividere. Se i file che saranno contenuti nella
4620           condivisione saranno da usarsi sotto Windows non c'e'
4621           motivo che questi siano eseguibili sotto GNU/Linux. Si
4622           potrebbe avere quindi, ipotizzando una condivisione in
4623           <tt class="docutils literal"><span class=
4624           "pre">/mnt/share</span></tt> che risieda su di un file
4625           system dedicato:</p>
4626
4627           <p><tt class="docutils literal"><span class=
4628           "pre">/etc/fstab</span></tt></p>
4629
4630           <blockquote>
4631             /dev/hda10 /mnt/share ext3 rw,
4632             <strong>nosuid,noexec</strong> 0 3
4633           </blockquote>
4634
4635           <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
4636           possibilita' di eseguire programmi con credenziali
4637           diverse.</p>
4638         </div>
4639       </div>
4640
4641       <div class="section" id=
4642       "configurazione-dell-applicativo-samba-vero-e-proprio">
4643         <h2><a class="toc-backref" href=
4644         "#id90">8.5&nbsp;&nbsp;&nbsp;Configurazione
4645         dell'applicativo Samba vero e proprio.</a></h2>
4646
4647         <p>Avendo preparato gli utenti (ancora una volta: non si
4648         dia una shell completa a un utente che serve solo per Samba
4649         o la posta elettronica) e la cartella sul file system si
4650         puo' procedere a configurare la condivisione su Samba.</p>
4651
4652         <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
4653         vim si usi 235gg ):</p>
4654         <pre class="literal-block">
4655 [sambo_share]
4656         # Percorso della cartella condivisa
4657         path = /home/sambo/sambo_share
4658         # Se gli utenti possono scrivere / modificare file
4659         writable = yes
4660         # Negoziazione degli accessi su base utenti / passwords
4661         valid users = sambo
4662
4663         # #######################################
4664         # Altri parametri opzionali di interesse
4665         # Se posso vedere la condivisione da esplora risorse
4666         # anche se non ho i privilegi per accedervi.
4667         browseable = yes
4668         # Commento indicativo della risorsa
4669         comment = Condivisione per Sambo
4670 </pre>
4671
4672         <p>Dopo aver salvato il file si puo' fare un primo
4673         controllo tramite l'utility <tt class=
4674         "docutils literal"><span class="pre">testparm</span></tt> ,
4675         che controlla la sintassi del file di configurazione di
4676         Samba. Se questo non rileva problemi si puo' procedere a un
4677         <tt class="docutils literal"><span class="pre">#</span>
4678         <span class="pre">/etc/init.d/samba</span> <span class=
4679         "pre">restart</span></tt> .</p>
4680
4681         <div class="section" id="creazione-di-un-gruppo">
4682           <h3><a class="toc-backref" href=
4683           "#id91">8.5.1&nbsp;&nbsp;&nbsp;Creazione di un
4684           gruppo</a></h3>
4685
4686           <p>Se si deve condividere una risorsa con un numero
4687           consistente di utenti e' consigliabile lavorare in
4688           termini termini di gruppi piuttosto che elencare la lista
4689           degli utenti in <tt class="docutils literal"><span class=
4690           "pre">valid</span> <span class=
4691           "pre">users</span></tt>.</p>
4692
4693           <p>Dopo aver creato il gruppo del quale volete facciano
4694           parte i vostri utenti (<tt class=
4695           "docutils literal"><span class="pre">addgroup</span>
4696           <span class="pre">nome_gruppo</span></tt>), inserite i
4697           vostri utenti nel gruppo (<tt class=
4698           "docutils literal"><span class="pre">adduser</span>
4699           <span class="pre">nome_utente</span> <span class=
4700           "pre">nome_gruppo</span></tt>) e modificate la direttiva
4701           <tt class="docutils literal"><span class=
4702           "pre">valid</span> <span class="pre">users</span></tt> in
4703           <tt class="docutils literal"><span class=
4704           "pre">smb.conf</span></tt> per riferirsi ad un gruppo
4705           piuttosto che a degli utenti. Per riferirsi a un gruppo
4706           si usi il carattere <tt class=
4707           "docutils literal"><span class="pre">@</span>
4708           <span class="pre">chicciola</span></tt> col <tt class=
4709           "docutils literal"><span class=
4710           "pre">nome_del_gruppo</span></tt>:</p>
4711           <pre class="literal-block">
4712 # Negoziazione degli accessi su base gruppo
4713 valid users = @nome_gruppo
4714 </pre>
4715         </div>
4716       </div>
4717
4718       <div class="section" id="testare-il-servizio">
4719         <h2><a class="toc-backref" href=
4720         "#id92">8.6&nbsp;&nbsp;&nbsp;Testare il Servizio</a></h2>
4721
4722         <p>Come testare il servizio</p>
4723
4724         <p>es:</p>
4725         <pre class="literal-block">
4726 smbclient -U sambo -L localhost
4727 </pre>
4728
4729         <p>Questo comando permette di esplorare la risorsa
4730         qualificandosi come utente, in questo modo potete testare
4731         il corretto funzionamento dell'autenticazione. Si provi
4732         inizialmente a sbagliare la password deliberatamente, poi a
4733         inserirla correttamente: dovrebbero essere visibili le
4734         risorse disponibili al solo utente sambo: la suo /home e la
4735         cartella samba_share:</p>
4736         <pre class="literal-block">
4737 Sharename       Type      Comment
4738 ---------       ----      -------
4739 sambo_share     Disk      Condivisione per Sambo
4740 print$          Disk      Printer Drivers
4741 IPC$            IPC       IPC Service (base server)
4742 sambo           Disk      Home Directories
4743 </pre>
4744
4745         <p>In particolare l'ultima voce relativa alla home
4746         directory dell'utente dovrebbe essere visibile solo agli
4747         utenti autenticati.</p>
4748
4749         <p>In alternativa e' possibile montare realmente la
4750         condivisone anche su GNU/Linux tramite un client per samba
4751         e testarne il corretto funzionamento:</p>
4752         <pre class="literal-block">
4753 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
4754 </pre>
4755       </div>
4756     </div>
4757
4758     <div class="section" id="server-di-posta-postfix">
4759       <h1><a class="toc-backref" href=
4760       "#id93">9&nbsp;&nbsp;&nbsp;Server di posta: Postfix</a></h1>
4761
4762       <p>Il server di posta che prenderemo in considerazione e'
4763       Postfix, a seguire un estratto di un file di configurazione
4764       <em>semplice</em> con l'abilitazione delle <em>Maildir</em>
4765       nelle <tt class="docutils literal"><span class=
4766       "pre">/home</span></tt> degli utenti per la consegna della
4767       posta:</p>
4768
4769       <p><tt class="docutils literal"><span class=
4770       "pre">/etc/postfix/main.cf</span></tt>:</p>
4771       <pre class="literal-block">
4772 # ...segue dalla riga ~30
4773 myhostname = 162.piffa.net
4774 alias_maps = hash:/etc/aliases
4775 alias_database = hash:/etc/aliases
4776 myorigin = 162.piffa.net
4777 mydestination = 162.piffa.net, localhost
4778 # Se non avete un ip pubblico e statico, con un adeguato record PTR
4779 # dovrete usare un realy host per l'invio della posta
4780 relayhost = smtp.piffa.net
4781
4782 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
4783 # Se dovete inviare la posta per i client della vostra LAN privata:
4784 # mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
4785 # E si faccia BEN ATTENZIONE a non diventare un open realay smtp
4786
4787
4788 # Per effettuare lo storaggio della posta nelle home directory degli utenti
4789 # in una Maildir invece che nella Mailbox in /var/mail/nome_utente
4790 # si disabiliti procmail
4791 #mailbox_command = procmail -a "$EXTENSION"
4792
4793 # cartella_i abiliti lo storaggio della posta nella Maildir/ (si noti lo slash)
4794 # all'interno della  home dell'utente:
4795 home_mailbox = Maildir/
4796 mailbox_size_limit = 0
4797 recipient_delimiter = +
4798 inet_interfaces = all
4799 </pre>
4800
4801       <dl class="docutils">
4802         <dt>E' disponibile un file di configurazione di esempio ben
4803         piu' articolato e commentato::</dt>
4804
4805         <dd>/usr/share/postfix/main.cf.dist .</dd>
4806       </dl>
4807
4808       <div class="section" id="test-del-server-smtp">
4809         <h2><a class="toc-backref" href=
4810         "#id94">9.1&nbsp;&nbsp;&nbsp;Test del server smtp</a></h2>
4811
4812         <p>Per testare il corretto funzionamento del server di
4813         posta si puo' procedere in vari modi.</p>
4814
4815         <ul class="simple">
4816           <li>Spedire una mail a una casella locale / remota e
4817           controllare i log (syslog)</li>
4818
4819           <li>Collegarsi via <em>telnet</em> al server di posta:
4820           <a class="reference external" href=
4821           "http://www.netadmintools.com/art276.html">http://www.netadmintools.com/art276.html</a></li>
4822
4823           <li>usare una utility come SWAKS</li>
4824         </ul>
4825
4826         <div class="section" id="swaks">
4827           <h3><a class="toc-backref" href=
4828           "#id95">9.1.1&nbsp;&nbsp;&nbsp;Swaks</a></h3>
4829
4830           <dl class="docutils">
4831             <dt>Per gli utenti meno esperti e' consigliabile
4832             utilizzare <em>SWAKS</em>: si installi l'omonimo
4833             pacchetto e si esegua un test con::</dt>
4834
4835             <dd>swaks --to <a class="reference external" href=
4836             "mailto:utente@destinatario.tilde">utente@destinatario.tilde</a>
4837             --from <a class="reference external" href=
4838             "mailto:utente@propio.mail.tilde">utente@propio.mail.tilde</a></dd>
4839           </dl>
4840
4841           <p>Ecco un esempio di una sessione corretta:</p>
4842           <pre class="literal-block">
4843 swaks --to andrea@piffa.net from andrea@mydomain.com
4844 === Trying smtp.piffa.net:25...
4845 === Connected to smtp.piffa.net.
4846 &lt;-  220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
4847  -&gt; EHLO alice.mydomain.com
4848 &lt;-  250-zoo.piffa.net
4849 &lt;-  250-PIPELINING
4850 &lt;-  250-SIZE 10240000
4851 &lt;-  250-VRFY
4852 &lt;-  250-ETRN
4853 &lt;-  250-STARTTLS
4854 &lt;-  250-ENHANCEDSTATUSCODES
4855 &lt;-  250-8BITMIME
4856 &lt;-  250 DSN
4857  -&gt; MAIL FROM:&lt;root@alice.mydomain.com&gt;
4858 &lt;-  250 2.1.0 Ok
4859  -&gt; RCPT TO:&lt;andrea@piffa.net&gt;
4860 &lt;-  250 2.1.5 Ok
4861  -&gt; DATA
4862 &lt;-  354 End data with &lt;CR&gt;&lt;LF&gt;.&lt;CR&gt;&lt;LF&gt;
4863  -&gt; Date: Thu, 28 May 2009 13:11:19 +0200
4864  -&gt; To: andrea@piffa.net
4865  -&gt; From: root@alice.mydomain.com
4866  -&gt; Subject: test Thu, 28 May 2009 13:11:19 +0200
4867  -&gt; X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
4868  -&gt;
4869  -&gt; This is a test mailing
4870  -&gt;
4871  -&gt; .
4872 &lt;-  250 2.0.0 Ok: queued as 41FB261AFC
4873  -&gt; QUIT
4874 &lt;-  221 2.0.0 Bye
4875 === Connection closed with remote host.
4876 </pre>
4877         </div>
4878       </div>
4879
4880       <div class="section" id="imap-e-pop">
4881         <h2><a class="toc-backref" href=
4882         "#id96">9.2&nbsp;&nbsp;&nbsp;Imap e pop</a></h2>
4883
4884         <p>Postfix e' un server SMTP, di conseguenza se volete che
4885         i vostri utenti possano <em>scaricare</em> in locale la
4886         posta generalmente volete mettere a loro disposizione un
4887         server <em>POP3</em> o <em>IMAP</em>. Oppure entrambi.</p>
4888
4889         <dl class="docutils">
4890           <dt>Pacchetti da installare</dt>
4891
4892           <dd>courier-imap courier-pop</dd>
4893         </dl>
4894
4895         <p>Si noti che IMAP necessita delle <em>Maildir</em>, non
4896         funziona con le Mailbox in <tt class=
4897         "docutils literal"><span class="pre">/var/mail/</span></tt>
4898         .</p>
4899       </div>
4900
4901       <div class="section" id="client-a-riga-di-comando">
4902         <h2><a class="toc-backref" href=
4903         "#id97">9.3&nbsp;&nbsp;&nbsp;Client a riga di
4904         comando</a></h2>
4905
4906         <p>Per testare il corretto funzionamento del server di
4907         posta e' utile avere a disposizione delle utility per
4908         inviare e leggere la posta: ovviamente da riga di
4909         comando.</p>
4910
4911         <div class="section" id="mailx">
4912           <h3><a class="toc-backref" href=
4913           "#id98">9.3.1&nbsp;&nbsp;&nbsp;mailx</a></h3>
4914
4915           <dl class="docutils">
4916             <dt>Uno dei client piu' semplici, sopratutto per
4917             inviare un messaggioi. e' sufficiente usare una formula
4918             come::</dt>
4919
4920             <dd>mail <a class="reference external" href=
4921             "mailto:utente@dominio.com">utente@dominio.com</a></dd>
4922           </dl>
4923
4924           <p>Se il comando <tt class=
4925           "docutils literal"><span class="pre">mail</span></tt> non
4926           fosse disponibile si installi il pacchetto <tt class=
4927           "docutils literal"><span class=
4928           "pre">mailx</span></tt>.</p>
4929
4930           <p>Al primo prompt si digitera' l'oggetto, il testo del
4931           messaggio (per terminare l'inserimento lasciare una riga
4932           vuota, digitare un <tt class=
4933           "docutils literal"><span class="pre">punto</span>
4934           <span class="pre">+</span> <span class=
4935           "pre">Invio</span></tt> su una riga vuota), la Carbon
4936           Copy (se necessaria).</p>
4937
4938           <p>es:</p>
4939           <pre class="literal-block">
4940 mail andrea@localhost
4941 Subject: Oggetto della mail
4942 Testo del messagio,
4943 per terminare il messaggio
4944 lasciare una riga vuota
4945 e un punto (poi Invio).
4946
4947 .
4948 Cc:
4949 </pre>
4950
4951           <p>Per altrre opzioni si veda la pagina man.</p>
4952         </div>
4953
4954         <div class="section" id="mutt">
4955           <h3><a class="toc-backref" href=
4956           "#id99">9.3.2&nbsp;&nbsp;&nbsp;Mutt</a></h3>
4957
4958           <p>Mutt e' uno dei gestori di posta preferiti da chi
4959           preferisce utilizzare l'interfaccia testuale per la
4960           gestione della posta.</p>
4961
4962           <p>Mutt ha un file di configurazione <tt class=
4963           "docutils literal"><span class="pre">.muttrc</span></tt>
4964           nella <em>home</em> dell'utente, alcuni settaggi possono
4965           essere utili:</p>
4966
4967           <dl class="docutils">
4968             <dt>set folder="~/Maildir"</dt>
4969
4970             <dd>Per utilizzare <tt class=
4971             "docutils literal"><span class=
4972             "pre">/home/nome_utente/Maildir</span> <span class=
4973             "pre">come</span> <span class=
4974             "pre">mailbox</span></tt>, invece del default
4975             <tt class="docutils literal"><span class=
4976             "pre">/var/mail/nome_utente</span></tt>.</dd>
4977
4978             <dt>set editor="vim"</dt>
4979
4980             <dd>Utilizzare <tt class=
4981             "docutils literal"><span class="pre">vim</span></tt>
4982             come editor per comporre i messaggi.</dd>
4983           </dl>
4984
4985           <p>Spesso e' utile poter <em>levvere al volo</em> la
4986           Mailbox / Maildir di un utente sul server di posta, per
4987           controllare se i messaggi vengono recapitati
4988           correttamente:</p>
4989           <pre class="literal-block">
4990 mutt -f /var/mail/utente
4991 mutt -f /home/utente/Maildir
4992 </pre>
4993
4994           <p>In modo analogo si puo' consultare al volo la propia
4995           mailbox su un server remoto tramite IMAP/POP:</p>
4996           <pre class="literal-block">
4997 mutt -f imap://nome_utente@piffa.net
4998 </pre>
4999         </div>
5000
5001         <div class="section" id="web-client">
5002           <h3><a class="toc-backref" href=
5003           "#id100">9.3.3&nbsp;&nbsp;&nbsp;Web client</a></h3>
5004
5005           <p>Per mettere a disposizione degli utenti un client web
5006           per gestire la propria posta si installi il pacchetto:
5007           <tt class="docutils literal"><span class=
5008           "pre">squirrelmail</span></tt> . Ci sono tanti altri
5009           client web disponibili: questo e' particolarmente
5010           semplice. Naturalmente dovrete aver installato:
5011           <tt class="docutils literal"><span class=
5012           "pre">php5</span> <span class="pre">apache2</span></tt>
5013           .</p>
5014
5015           <p>L'interfaccia dovrebbe essere disponibile all'url:
5016           <tt class="docutils literal"><span class=
5017           "pre">http://localhost/squirrelmail</span></tt> . Se
5018           cosi' non fosse assicuratevi che Apache abbia incluso il
5019           file di configurazione di squirrelmail:</p>
5020           <pre class="literal-block">
5021 cd /etc/apache2/conf.d/
5022 ln -s /etc/squirrelmail/apache.conf ./squirrelmail.conf
5023 </pre>
5024         </div>
5025       </div>
5026
5027       <div class="section" id="graylisting">
5028         <h2><a class="toc-backref" href=
5029         "#id101">9.4&nbsp;&nbsp;&nbsp;Graylisting</a></h2>
5030
5031         <p>Il <em>graylisting</em> e' un sistema relativamente poco
5032         invasivo, con un limitato consumo di risorse per limitare
5033         lo <em>SPAM</em> in arrivo sul propio server di posta. Come
5034         suggerisce il nome e' una via di mezzo tra una <em>white
5035         list</em> (una lista di mittenti privilegiata, sempre
5036         benvenuti) e una <em>black list</em> (mittenti
5037         <em>bannati</em>, banditi dal poter inviare nuovi
5038         messaggi).</p>
5039
5040         <p>Il funzionamento e' relativamente semplice: ogni
5041         mittente sconosciuto viene immediatamente rifiutato con un
5042         errore <em>non grave</em> come un <em>server non
5043         disponibile, provare piu' tardi</em>. Questo inconveniente
5044         non dovrebbe mettere in difficolta' un server di posta /
5045         mittente legittimo, che dopo un periodo di attesa tentera'
5046         nuovamente di inviare il messaggio ottenendo finalmente il
5047         risultato atteso. Diversamente un <em>bot</em> per l'invio
5048         di SPAM o un applicazione improvvisata (tipicamente di
5049         derivazione virale) che stesse inviando il messaggio
5050         <em>probabilmente</em> non insisterebbe, rinunciano ad
5051         inviare il messaggio preferendo destinazioni meno
5052         problematiche.</p>
5053
5054         <div class="section" id="abilitazione-in-postfix">
5055           <h3><a class="toc-backref" href=
5056           "#id102">9.4.1&nbsp;&nbsp;&nbsp;Abilitazione in
5057           Postfix</a></h3>
5058
5059           <p>Installare il pacchetto: <tt class=
5060           "docutils literal"><span class="pre">postgrey</span></tt>
5061           e aggiungere il file di configurazione di Postfix
5062           <tt class="docutils literal"><span class=
5063           "pre">/etc/postfix/main.cf</span></tt>:</p>
5064           <pre class="literal-block">
5065 smtpd_recipient_restrictions =
5066         permit_mynetworks,
5067         reject_unauth_destination,
5068         check_policy_service inet:127.0.0.1:60000
5069 </pre>
5070         </div>
5071
5072         <div class="section" id="test">
5073           <h3><a class="toc-backref" href=
5074           "#id103">9.4.2&nbsp;&nbsp;&nbsp;Test</a></h3>
5075
5076           <p>Inviando un messaggio il client dovrebbe ricevere un
5077           iniziale messaggio di rifiuto del messaggio:</p>
5078           <pre class="literal-block">
5079 swaks --to andrea@piffa.net from andrea@mydonain.com
5080 === Trying smtp.piffa.net:25...
5081 === Connected to smtp.piffa.net
5082 ...
5083 &lt;-  250 2.1.0 Ok
5084  -&gt; RCPT TO:&lt;andrea@piffa.net&gt;
5085 &lt;** 450 4.2.0 &lt;andrea@piffa.net&gt;: Recipient address rejected:
5086 Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
5087  -&gt; QUIT
5088 &lt;-  221 2.0.0 Bye
5089 === Connection closed with remote host.
5090 </pre>
5091
5092           <p>A lato server si dovrebbe rilevare su <tt class=
5093           "docutils literal"><span class=
5094           "pre">/var/log/syslog</span></tt> qualcosa di simile:</p>
5095           <pre class="literal-block">
5096 connect from alice.mydomain.com[65.98.21.97]
5097 May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
5098    client_name=alice.mydomain.com,
5099    client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
5100 May 28 14:53:34 r24266 postfix/smtpd[22538]:
5101    NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
5102    450 4.2.0 &lt;andrea@piffa.net&gt;: Recipient address rejected: Greylisted,
5103    see http://postgrey.schweikert.ch/help/piffa.net.html;
5104    from=&lt;root@alice.mydomain.com&gt; to=&lt;andrea@piffa.net&gt;
5105    proto=ESMTP helo=&lt;alice.mydomain.com&gt;
5106 May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
5107 </pre>
5108         </div>
5109
5110         <div class="section" id="statistiche">
5111           <h3><a class="toc-backref" href=
5112           "#id104">9.4.3&nbsp;&nbsp;&nbsp;Statistiche</a></h3>
5113
5114           <p>E' sempre utile poter tracciare qualche statistica
5115           sulle percentuali di messaggi ricevuti, da chi, messaggi
5116           rifiutati (e per quale motivo). Statistiche che attingono
5117           dai soliti log del server di posta <tt class=
5118           "docutils literal"><span class=
5119           "pre">/var/log/syslog</span></tt> di default oltre che i
5120           dedicati <tt class="docutils literal"><span class=
5121           "pre">/var/log/mail</span></tt> .</p>
5122
5123           <p>Una utility semplice per analizzare l'attivita' del
5124           propio server smtp potrebbe essere <tt class=
5125           "docutils literal"><span class=
5126           "pre">pflogsumm</span></tt> , installato il pacchetto la
5127           si puo' invocare con:</p>
5128           <pre class="literal-block">
5129 pflogsumm.pl  /var/log/mail.log
5130 </pre>
5131
5132           <p>oppure utilizzare i log piu' vecchi ad es. <tt class=
5133           "docutils literal"><span class=
5134           "pre">/var/log/mail.log.0</span></tt></p>
5135         </div>
5136       </div>
5137     </div>
5138
5139     <div class="section" id="firewall">
5140       <h1><a class="toc-backref" href=
5141       "#id105">10&nbsp;&nbsp;&nbsp;Firewall</a></h1>
5142
5143       <p>In Informatica, nell'ambito delle reti di computer, un
5144       firewall (termine inglese dal significato originario di
5145       parete refrattaria, muro tagliafuoco, muro ignifugo; in
5146       italiano anche parafuoco o parafiamma) e' un componente
5147       passivo di difesa perimetrale che puo anche svolgere funzioni
5148       di collegamento tra due o piu' tronconi di rete. Usualmente
5149       la rete viene divisa in due sotto reti: una, detta esterna,
5150       comprende l'intera Internet mentre l'altra interna, detta LAN
5151       (Local Area Network), comprende una sezione piu' o meno
5152       grande di un insieme di computer locali. In alcuni casi e'
5153       possibile che si crei l'esigenza di creare una terza sotto
5154       rete detta DMZ (o zona demilitarizzata) atta a contenere quei
5155       sistemi che devono essere isolati dalla rete interna ma
5156       devono comunque essere protetti dal firewall.</p>
5157
5158       <p>Una prima definizione chiusa di firewall e' la
5159       seguente:</p>
5160
5161       <p>Apparato di rete hardware o software che filtra tutti i
5162       pacchetti entranti ed uscenti, da e verso una rete o un
5163       computer, applicando regole che contribuiscono alla sicurezza
5164       della stessa.</p>
5165
5166       <p>In realta' un firewall puo' essere realizzato con un
5167       normale computer (con almeno due schede di rete e software
5168       apposito), puo' essere una funzione inclusa in un router o
5169       puo' essere un apparato specializzato. Esistono inoltre i
5170       cosiddetti "firewall personali", che sono programmi
5171       installati sui normali calcolatori, che filtrano solamente i
5172       pacchetti che entrano ed escono da quel calcolatore; in tal
5173       caso viene utilizzata una sola scheda di rete.</p>
5174
5175       <p>La funzionalita' principale in sostanza e' quella di
5176       creare un filtro sulle connessioni entranti ed uscenti, in
5177       questo modo il dispositivo innalza il livello di sicurezza
5178       della rete e permette sia agli utenti interni che a quelli
5179       esterni di operare nel massimo della sicurezza. Il firewall
5180       agisce sui pacchetti in transito da e per la zona interna
5181       potendo eseguire su di essi operazioni di: controllo modifica
5182       monitoraggio</p>
5183
5184       <p>Questo grazie alla sua capacita' di "aprire" il pacchetto
5185       IP per leggere le informazioni presenti sul suo header, e in
5186       alcuni casi anche di effettuare verifiche sul contenuto del
5187       pacchetto.</p>
5188
5189       <div class="section" id="links">
5190         <h2><a class="toc-backref" href=
5191         "#id106">10.1&nbsp;&nbsp;&nbsp;Links</a></h2>
5192
5193         <ul class="simple">
5194           <li><a class="reference external" href=
5195           "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
5196
5197           <li><a class="reference external" href=
5198           "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
5199           http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
5200         </ul>
5201       </div>
5202
5203       <div class="section" id="ipfilter">
5204         <h2><a class="toc-backref" href=
5205         "#id107">10.2&nbsp;&nbsp;&nbsp;Ipfilter</a></h2>
5206
5207         <p>Link: <a class="reference external" href=
5208         "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
5209         http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
5210
5211         <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
5212         po' del 3) e su cosa <em>non</em> lavora (livello 4).
5213         Netfilter lavora anche su parti del livello 3 (TCP, UDP,
5214         etc) e del livello 1 (MAC source address). Iptables
5215         comunque permette di fare il <em>connection-tracking</em>,
5216         mediante il quale possiamo implementare il Network Address
5217         Translation.</p>
5218
5219         <p>Netfilter non ricostruisce il flusso di dati tra
5220         pacchetti, non puo' quindi rilevare la presenza di virus o
5221         simili che si trasmettono su pacchetti separati:
5222         ricomporre, analizzare e tornare a scomporre i frammenti
5223         richiederebbe troppa RAM e risorse di sistema, con il
5224         conseguente rischio di saturare il firewall fino
5225         all'abbandono dei nuovi pacchetti in transito. Ci sono
5226         altri software piu' adatti a questi compiti, ad esempio un
5227         proxy HTTP come Squid che e' appunto una applicazione di
5228         quarto livello, progettata e strutturata per analizzare e
5229         modificare i flussi di dati (il <em>contenuto</em> dei
5230         pacchetti, non le sole <em>intestazioni</em>) facendo
5231         abbondate uso delle risorse RAM e di calcolo del sistema.
5232         Non a caso su macchine embedded dalle prestazioni molto
5233         ridotte (CPU ARM ~250MHZ con ~30MB di RAM) Squid sfrutta al
5234         massimo le risorse di sistema per gestire il traffico di
5235         una rete 10/100, mentre il lavoro tipico svolto da
5236         netfilter e' quasi irrilevante.</p>
5237       </div>
5238
5239       <div class="section" id="progettazione-di-un-firewall">
5240         <h2><a class="toc-backref" href=
5241         "#id108">10.3&nbsp;&nbsp;&nbsp;Progettazione di un
5242         firewall</a></h2>
5243
5244         <p>Per implementare un firewall bisogna decidere un aio di
5245         cose: la collocazione e l'approccio (inclusivo o esclusivo)
5246         al filtraggio, il tipo di hardware.</p>
5247
5248         <div class="section" id="collocazione">
5249           <h3><a class="toc-backref" href=
5250           "#id109">10.3.1&nbsp;&nbsp;&nbsp;Collocazione</a></h3>
5251
5252           <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
5253           della rete, decidere se diversi reparti di una azienda si
5254           possano vedere tra loro e in che misura.</p>
5255
5256           <p>Collocazione:</p>
5257
5258           <blockquote>
5259             <ol class="arabic simple">
5260               <li>sul router</li>
5261
5262               <li>tra router e servers / LAN</li>
5263
5264               <li>Unico server / router / firewall e connessi
5265               rischi. considerare l'acquisto di un router hardware
5266               dedicato.</li>
5267             </ol>
5268           </blockquote>
5269
5270           <dl class="docutils">
5271             <dt>Layeed security:</dt>
5272
5273             <dd>Implementare piu' device / software sui diversi
5274             livelli: <a class="reference external" href=
5275             "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
5276             http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
5277           </dl>
5278         </div>
5279
5280         <div class="section" id="policy-di-default">
5281           <h3><a class="toc-backref" href=
5282           "#id110">10.3.2&nbsp;&nbsp;&nbsp;Policy di
5283           default</a></h3>
5284
5285           <p>Drop o Accept: conseguenze per sicurezza, facilita' di
5286           gestione.</p>
5287         </div>
5288
5289         <div class="section" id="hardware">
5290           <h3><a class="toc-backref" href=
5291           "#id111">10.3.3&nbsp;&nbsp;&nbsp;Hardware</a></h3>
5292
5293           <p>Sostanzialmente potremmo distinguere due tipologie di
5294           hardware:</p>
5295
5296           <dl class="docutils">
5297             <dt>Network appliance dedicata::</dt>
5298
5299             <dd>Un dispositivo hardware dedicato alla funzione di
5300             Firewall, ad es un Cisco / Fortigate. Si noti che molti
5301             firewall economici altro non sono che Linux box molto
5302             striminzite.</dd>
5303
5304             <dt>Server / Personal computer:</dt>
5305
5306             <dd>Un server sul quale viene fatto girare Netfilter ad
5307             uso del server stesso e della rete connessa.</dd>
5308           </dl>
5309
5310           <p>Vantaggi e svantaggi: consumo elettrico, efficienza,
5311           flessibilita', strumenti di gestione, sicurezza,
5312           OpenBSD.</p>
5313         </div>
5314       </div>
5315
5316       <div class="section" id=
5317       "percorso-dei-pacchetti-tra-tabelle-e-catene">
5318         <h2><a class="toc-backref" href=
5319         "#id112">10.4&nbsp;&nbsp;&nbsp;Percorso dei pacchetti tra
5320         tabelle e catene</a></h2>
5321
5322         <p>link: <a class="reference external" href=
5323         "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
5324         http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
5325       </div>
5326
5327       <div class="section" id="concetti-di-base">
5328         <h2><a class="toc-backref" href=
5329         "#id113">10.5&nbsp;&nbsp;&nbsp;Concetti di base</a></h2>
5330
5331         <div class="section" id="tabelle-catene-regole">
5332           <h3><a class="toc-backref" href=
5333           "#id114">10.5.1&nbsp;&nbsp;&nbsp;Tabelle, catene,
5334           regole</a></h3>
5335
5336           <p>Iptables lavora su 3 tabelle (tables) di default:</p>
5337
5338           <ul class="simple">
5339             <li>filter - Regola il firewalling: quali pacchetti
5340             accettare, quali bloccare</li>
5341
5342             <li>nat - Regola le attivita' di natting</li>
5343
5344             <li>mangle - Interviene sulla alterazione dei
5345             pacchetti.</li>
5346           </ul>
5347
5348           <p>Ogni tabella ha delle catene (chains) predefinite
5349           (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
5350           aggiunte catene custom. Ogni catena e' composta da un
5351           elenco di regole (rules) che identificano pacchetti di
5352           rete secondo criteri diversi (es: -p tcp --dport 80 -d
5353           10.0.0.45) Ogni regola termina con una indicazione
5354           (target) su cosa fare dei pacchetti identificati dalla
5355           regola stessa (es: -j ACCEPT, -j DROP ...)</p>
5356         </div>
5357
5358         <div class="section" id="match">
5359           <h3><a class="toc-backref" href=
5360           "#id115">10.5.2&nbsp;&nbsp;&nbsp;Match</a></h3>
5361
5362           <p>I Match di una regola (rule) servono a testare un
5363           pacchetto per valutare se corrisponda a certe
5364           caratteristiche. I match di possono servire a controllare
5365           se un pacchetto e' destinato a una porta particolare o
5366           utilizza un protocollo particolare.</p>
5367
5368           <p>Alcuni esempi:</p>
5369
5370           <dl class="docutils">
5371             <dt>-p [!] proto</dt>
5372
5373             <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
5374             udp, gre, ah...)</dd>
5375
5376             <dt>-s [!] address[/mask]</dt>
5377
5378             <dd>Indirizzo IP sorgente (o network con maschera di
5379             sotto rete)</dd>
5380
5381             <dt>-d [!] address[/mask]</dt>
5382
5383             <dd>Indirizzo IP destinazione (o network)</dd>
5384
5385             <dt>-i [!] interface[+]</dt>
5386
5387             <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
5388
5389             <dt>-o [!] interface[+]</dt>
5390
5391             <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
5392           </dl>
5393
5394           <table class="docutils option-list" frame="void" rules=
5395           "none">
5396             <col class="option">
5397             <col class="description">
5398
5399             <tbody valign="top">
5400               <tr>
5401                 <td class="option-group"><kbd><span class=
5402                 "option">-f</span></kbd></td>
5403
5404                 <td>Frammento di pacchetto</td>
5405               </tr>
5406             </tbody>
5407           </table>
5408         </div>
5409
5410         <div class="section" id="targets">
5411           <h3><a class="toc-backref" href=
5412           "#id116">10.5.3&nbsp;&nbsp;&nbsp;Targets</a></h3>
5413
5414           <p>Se un pacchetto soddisfa le condizioni del Match
5415           <em>salta</em> (jump) su uno dei target possibili, in
5416           caso contrario continua il suo percorso tra regole catene
5417           e tabelle.</p>
5418
5419           <p>Target principali:</p>
5420
5421           <dl class="docutils">
5422             <dt><em>-j ACCEPT</em></dt>
5423
5424             <dd>Il pacchetto matchato viene accettato e procede
5425             verso la sua destinazione. Si usa per definire il
5426             traffico permesso.</dd>
5427
5428             <dt><em>-j DROP</em></dt>
5429
5430             <dd>Il pacchetto viene rifiutato e scartato, senza
5431             alcuna notifica al mittente. Si usa, in alternativa a
5432             REJECT, per bloccare traffico.</dd>
5433
5434             <dt><em>-j REJECT</em></dt>
5435
5436             <dd>Il pacchetto viene rifiutato. Al mittente viene
5437             mandato un pacchetto (configurabile) di notifica tipo
5438             ICMP port-unreachable (--reject-with
5439             icmp-port-unreachable)</dd>
5440           </dl>
5441
5442           <table class="docutils option-list" frame="void" rules=
5443           "none">
5444             <col class="option">
5445             <col class="description">
5446
5447             <tbody valign="top">
5448               <tr>
5449                 <td class="option-group"><kbd><span class=
5450                 "option">-t <var>LOG</var></span></kbd></td>
5451
5452                 <td>Il pacchetto viene loggato via syslog e procede
5453                 l'attraversamento della catena. Opzioni:
5454                 (--log-level, --log-prefix, --log-tcp-sequence,
5455                 --log-tcp-options, --log-ip-options)</td>
5456               </tr>
5457
5458               <tr>
5459                 <td class="option-group"><kbd><span class=
5460                 "option">-j <var>DNAT</var></span></kbd></td>
5461
5462                 <td>Viene modificato l'IP di destinazione del
5463                 pacchetto. Target disponibile solo in nat /
5464                 PREROUTING e nat / OUTPUT. L'opzione
5465                 --to-destination IP:porta definisce il nuovo IP di
5466                 destinazione. Si usa tipicamente su network
5467                 firewall che nattano server di una DMZ</td>
5468               </tr>
5469
5470               <tr>
5471                 <td class="option-group"><kbd><span class=
5472                 "option">-j <var>SNAT</var></span></kbd></td>
5473
5474                 <td>Viene modificato l'IP sorgente. Solo in nat /
5475                 POSTROUTING. Prevede l'opzione --to-source
5476                 IP:porta. Si usa per permettere l'accesso a
5477                 Internet da una rete locale con IP privati.</td>
5478               </tr>
5479
5480               <tr>
5481                 <td class="option-group"><kbd><span class=
5482                 "option">-j <var>MASQUERADE</var></span></kbd></td>
5483
5484                 <td>Simile a SNAT, si applica quando i pacchetti
5485                 escono da interfacce con IP dinamico (dialup, adsl,
5486                 dhcp...). Si usa solo in nat / POSTROUTING e
5487                 prevede l'opzione --to-ports porte.</td>
5488               </tr>
5489
5490               <tr>
5491                 <td class="option-group"><kbd><span class=
5492                 "option">-j <var>REDIRECT</var></span></kbd></td>
5493
5494                 <td>Redirige il pacchetto ad una porta locale.
5495                 Usabile solo in nat / PREROUTING e nat / OUTPUT e'
5496                 previsto per fare un transparent proxy (con proxy
5497                 server in esecuzione sulla macchina con
5498                 iptables)</td>
5499               </tr>
5500
5501               <tr>
5502                 <td class="option-group"><kbd><span class=
5503                 "option">-j <var>RETURN</var></span></kbd></td>
5504
5505                 <td>Interrompe l'attraversamento della catena. Se
5506                 questa e' una secondaria, il pacchetto torna ad
5507                 attraversare la catena madre da punto in cui aveva
5508                 fatto il salto nella secondaria. Se il RETURN e' in
5509                 una delle catene di default, il pacchetto
5510                 interrompe l'attraversamento e segue la policy di
5511                 default.</td>
5512               </tr>
5513
5514               <tr>
5515                 <td class="option-group"><kbd><span class=
5516                 "option">-j <var>TOS</var></span></kbd></td>
5517
5518                 <td>Usabile solo nella tabella mangle, permette di
5519                 cambiare il TOS (Type Of Service) di un pacchetto
5520                 con l'opzione --set-tos. Per un elenco dei
5521                 parametri disponibili: iptables -j TOS -h</td>
5522               </tr>
5523
5524               <tr>
5525                 <td class="option-group"><kbd><span class=
5526                 "option">-j <var>MIRROR</var></span></kbd></td>
5527
5528                 <td>Curioso e sperimentale, questo target invia un
5529                 pacchetto speculare al mittente. In pratica e' come
5530                 se facesse da specchio per tutti i pacchetti
5531                 ricevuti. Da usare con cautela, per evitare
5532                 attacchi DOS indiretti.</td>
5533               </tr>
5534             </tbody>
5535           </table>
5536         </div>
5537       </div>
5538
5539       <div class="section" id="tabella-filter">
5540         <h2><a class="toc-backref" href=
5541         "#id117">10.6&nbsp;&nbsp;&nbsp;Tabella Filter</a></h2>
5542
5543         <p>E' quella implicita e predefinita (-t filter) Riguarda
5544         le attivita' di filtraggio del traffico. Ha 3 catene di
5545         default: INPUT - Riguarda tutti i pacchetti destinati al
5546         sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
5547         i pacchetti che sono originati dal sistema e destinati ad
5548         uscire. FORWARD - Riguarda i pacchetti che attraversano il
5549         sistema, con IP sorgente e destinazione esterni.</p>
5550
5551         <p>Esempio per permettere accesso alla porta 80 locale:
5552         iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
5553         Analoga a: iptables -I INPUT -p tcp --dport 80 -j
5554         ACCEPT</p>
5555
5556         <p>Esempio per permettere ad un pacchetto con IP sorgente
5557         10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
5558         il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
5559         -j ACCEPT</p>
5560       </div>
5561
5562       <div class="section" id=
5563       "flush-automatico-per-macchine-remote">
5564         <h2><a class="toc-backref" href=
5565         "#id118">10.7&nbsp;&nbsp;&nbsp;Flush automatico per
5566         macchine remote</a></h2>
5567
5568         <p>Se state provando una configurazione del firewall per
5569         una macchina remota e' buona norma per evitare brutte
5570         figure attivare uno script che faccia il <em>flush</em>
5571         delle regole dopo qualche minuto. Potreste infatti
5572         inavvertitamente impostare una regola che vi impedisca di
5573         raggiungere la macchina remota, cosi' da non poter neanche
5574         eliminare quella regola e ripristinare la situazione
5575         precedente.</p>
5576
5577         <p><em>Veramente</em>, prima di lavorare sul firewall di
5578         una macchina remota impostate almeno un <tt class=
5579         "docutils literal"><span class="pre">at</span> <span class=
5580         "pre">now</span> <span class="pre">+5</span> <span class=
5581         "pre">min</span></tt> o con un'oretta di margine per fare
5582         il <em>flush</em> delle regole (su tutte le tabelle):</p>
5583         <pre class="literal-block">
5584     at now +5 min
5585 at&gt; /sbin/iptables -F
5586 at&gt; [CTR+d]
5587 </pre>
5588       </div>
5589
5590       <div class="section" id="gestione-regole-rules">
5591         <h2><a class="toc-backref" href=
5592         "#id119">10.8&nbsp;&nbsp;&nbsp;Gestione regole
5593         (rules)</a></h2>
5594
5595         <p>Il comando iptables viene usato per ogni attivita' di
5596         gestione e configurazione.</p>
5597
5598         <p>Inserimento regole:</p>
5599
5600         <dl class="docutils">
5601           <dt>iptables -A CATENA ...</dt>
5602
5603           <dd>Aggiunge una regola alla fine della catena
5604           indicata</dd>
5605
5606           <dt>iptables -I CATENA [#] ...</dt>
5607
5608           <dd>Inserisce alla riga # (default 1) una regola nella
5609           catena indicata</dd>
5610
5611           <dt>iptables -N CATENA</dt>
5612
5613           <dd>Crea una nuova catena custom</dd>
5614
5615           <dt>iptables -P CATENA TARGET</dt>
5616
5617           <dd>Imposta il target di default per la catena
5618           indicata</dd>
5619         </dl>
5620
5621         <p>Rimozione regole e azzeramenti:</p>
5622
5623         <dl class="docutils">
5624           <dt>iptables -F [catena]</dt>
5625
5626           <dd>Ripulisce tutte le catene (o quella indicata)</dd>
5627
5628           <dt>iptables -X [catena]</dt>
5629
5630           <dd>Ripulisce tutte le catene custom (o quella
5631           indicata)</dd>
5632
5633           <dt>iptables -Z [catena]</dt>
5634
5635           <dd>Azzera i contatori sulle catene</dd>
5636
5637           <dt>iptables -D catena #</dt>
5638
5639           <dd>Cancella la regola numero # dalla catena
5640           indicata</dd>
5641         </dl>
5642
5643         <p>Interrogazione:</p>
5644
5645         <dl class="docutils">
5646           <dt>iptables -L</dt>
5647
5648           <dd>Elenca le regole esistenti</dd>
5649
5650           <dt>iptables -L -n -v</dt>
5651
5652           <dd>Elenca, senza risolvere gli host, in modo verboso le
5653           regole esistenti</dd>
5654         </dl>
5655       </div>
5656
5657       <div class="section" id="salvataggio-regole">
5658         <h2><a class="toc-backref" href=
5659         "#id120">10.9&nbsp;&nbsp;&nbsp;Salvataggio regole</a></h2>
5660
5661         <p>Il comando <tt class="docutils literal"><span class=
5662         "pre">iptables</span></tt> serve per interagire con il
5663         framework <tt class="docutils literal"><span class=
5664         "pre">Netfilter</span></tt> che gestisce il firewall di
5665         Linux al livello del kernel. Questo comporta, in modo
5666         analogo a quando avviene col comando <tt class=
5667         "docutils literal"><span class="pre">ifconfig</span></tt>,
5668         che i cambiamenti impostati siano in <em>tempo reale,
5669         RAM</em>, non persistenti nel sistema: al boot successivo
5670         del sistema tutto tornera' alle impostazioni di base (in
5671         questo caso <em>nulle</em>, con policy di default settate
5672         su <tt class="docutils literal"><span class=
5673         "pre">ACCEPT</span></tt> per tutto).</p>
5674
5675         <p>Le varie invocazioni di iptables potrebbero essere
5676         richiamate da degli scripts dedicati, ma fortunatamente e'
5677         stata predisposta una apposita utility per gestire questi
5678         scripts in modo da avere a disposizione un <em>formato
5679         standard</em> per il salvataggio e il ripristino delle
5680         regole del firewall.</p>
5681
5682         <p>Altro problema: decidere quando attivare / disattivare
5683         queste regole. Utilizzare i <em>runlevels</em> non e' una
5684         soluzione adeguata: le regole del firewall sono legate
5685         all'attivita' delle schede di rete (e un host con diverse
5686         schede di rete puo' attivarle a secondo delle esigenze di
5687         routing, partenza di servizi es file_sharing per un
5688         back-up...): il sistema operativo Debian permette di legare
5689         l'esecuzione di comandi alla attivazione di una device di
5690         rete (<tt class="docutils literal"><span class=
5691         "pre">up</span></tt>), dopo la sua attivazione (<tt class=
5692         "docutils literal"><span class="pre">post-up</span></tt>,
5693         utile per devices che richiedono un certo tempo per
5694         inizializzarsi: come un tunnel o una connessione punto a
5695         punto), prima della sua attivazione (<tt class=
5696         "docutils literal"><span class="pre">pre-up</span></tt>).
5697         Allo stesso modo sono disponibili eventi analoghi per
5698         accompagnare la disattivazione dei device di rete: si veda
5699         la pagina man di <tt class="docutils literal"><span class=
5700         "pre">interfaces</span></tt>.</p>
5701
5702         <p>Nel nostro caso avremo per una possibile scheda
5703         <tt class="docutils literal"><span class=
5704         "pre">eth0</span></tt>:</p>
5705
5706         <p><tt class="docutils literal"><span class=
5707         "pre">/etc/network/interfaces</span></tt></p>
5708         <pre class="literal-block">
5709 iface eth1 inet static
5710         up /sbin/iptables-restore /root/firewall/basic_fw
5711         # Seguono i soliti parametri della scheda di rete
5712         address 10.10.208.21
5713 </pre>
5714
5715         <div class="section" id="iptables-save">
5716           <h3><a class="toc-backref" href=
5717           "#id121">10.9.1&nbsp;&nbsp;&nbsp;Iptables-save</a></h3>
5718
5719           <p>Per salvare le regole di iptables attualmente presenti
5720           nel kernel si usi il comando:</p>
5721           <pre class="literal-block">
5722 # iptables-save &gt;&gt; /root/firewall/basic_fw
5723 </pre>
5724
5725           <p>Il contenuto del file dovrebbe essere
5726           <em>comprensibile</em>: sostanzialmente sono regole di
5727           iptables, senza il comando iptables ripetuto, suddivisi
5728           per le varie tabelle. Potete comunque correggere
5729           eventuali parametri con un edito di testo.</p>
5730
5731           <p>Se non avete un'idea migliore potreste voler tenere
5732           gli script dei firewall in una cartella <tt class=
5733           "docutils literal"><span class=
5734           "pre">~/firewall</span></tt> nella home directory
5735           dell'utente <tt class="docutils literal"><span class=
5736           "pre">root</span></tt>.</p>
5737         </div>
5738
5739         <div class="section" id="iptables-restore">
5740           <h3><a class="toc-backref" href=
5741           "#id122">10.9.2&nbsp;&nbsp;&nbsp;Iptables-restore</a></h3>
5742
5743           <p>Per ripristinare un set di regole precedentemente
5744           salvate con <tt class="docutils literal"><span class=
5745           "pre">iptables-save</span></tt> si utilizzi <tt class=
5746           "docutils literal"><span class=
5747           "pre">iptables-restore</span></tt>. Se questo deve essere
5748           fatto in modalita' <em>non interattiva</em>, ad esempio
5749           deve essere eseguito dal demone che si occupa di
5750           inizializzare le schede di rete, oppure un <em>cron</em>
5751           o altro, e' buona norma richiamare i percorsi completi
5752           sia dei comandi che dei file:</p>
5753           <pre class="literal-block">
5754 /sbin/iptables-restore /root/firewall/basic_fw
5755 </pre>
5756         </div>
5757       </div>
5758
5759       <div class="section" id="esempi">
5760         <h2><a class="toc-backref" href=
5761         "#id123">10.10&nbsp;&nbsp;&nbsp;Esempi</a></h2>
5762
5763         <p>Seguono alcuni esempi sull'uso di iptables, lo scenario
5764         e' un computer con un paio di schede di rete fisiche una
5765         delle quali collegata alla rete internet l'altra a una rete
5766         privata per la LAN interna.</p>
5767
5768         <blockquote>
5769           <ol class="arabic simple">
5770             <li><tt class="docutils literal"><span class=
5771             "pre">eth0</span></tt> scheda di rete principale sulla
5772             rete privata interna 192.168.0.0/24</li>
5773
5774             <li><tt class="docutils literal"><span class=
5775             "pre">eth1</span></tt> scheda di rete secondaria per la
5776             connessione ad internet</li>
5777
5778             <li><tt class="docutils literal"><span class=
5779             "pre">ppp0</span></tt> punto-a-punto per una
5780             connessione ad internet</li>
5781           </ol>
5782         </blockquote>
5783
5784         <div class="section" id="bloccare-i-ping-dall-esterno">
5785           <h3><a class="toc-backref" href=
5786           "#id124">10.10.1&nbsp;&nbsp;&nbsp;Bloccare i ping
5787           dall'esterno</a></h3>
5788
5789           <p>Spesso gli script che attaccano
5790           <em>automaticamente</em> le varie reti provano a fare un
5791           ping per verificare quali IP sono on-line: bloccare il
5792           traffico <tt class="docutils literal"><span class=
5793           "pre">ICMP</span></tt> in ingresso puo' aiutare ad
5794           evitare parte di questi attacchi:</p>
5795           <pre class="literal-block">
5796 iptables -A INPUT -i ppp0 -p ICMP -j DROP
5797 </pre>
5798         </div>
5799
5800         <div class="section" id="masquerading-snat">
5801           <h3><a class="toc-backref" href=
5802           "#id125">10.10.2&nbsp;&nbsp;&nbsp;Masquerading
5803           (sNAT)</a></h3>
5804
5805           <dl class="docutils">
5806             <dt>Per attivare la network address translation (in
5807             questo caso un SNAT) per la rete locale privata
5808             sull'indirizzo ip del <em>modem</em>::</dt>
5809
5810             <dd>iptables -A POSTROUTING -s
5811             192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE</dd>
5812           </dl>
5813
5814           <p>Il <em>Masquerading</em> a differenza dello
5815           <em>SNAT</em> puro (<tt class=
5816           "docutils literal"><span class="pre">-j</span>
5817           <span class="pre">SNAT</span> <span class=
5818           "pre">--to-source</span> <span class=
5819           "pre">proprio_ip_pubblico</span> <span class=
5820           "pre">)</span> <span class="pre">legge</span>
5821           <span class="pre">l'indirizzo</span> <span class=
5822           "pre">ip</span> <span class="pre">del</span> <span class=
5823           "pre">device</span> <span class="pre">``ppp0</span></tt>.
5824           In questo modo se l'IP cambia automaticamente si aggiorna
5825           anche il source natting. Se avete un indirizzo IP statico
5826           assegnato al vostro gateway potete invece usare lo SNAT
5827           semplice.</p>
5828
5829           <dl class="docutils">
5830             <dt>Altri esempi::</dt>
5831
5832             <dd>
5833               <p class="first">## Change source addresses to
5834               1.2.3.4. # iptables -t nat -A POSTROUTING -o eth0 -j
5835               SNAT --to 1.2.3.4</p>
5836
5837               <p>## Change source addresses to 1.2.3.4, 1.2.3.5 or
5838               1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j
5839               SNAT --to 1.2.3.4-1.2.3.6</p>
5840
5841               <p class="last">## Change source addresses to
5842               1.2.3.4, ports 1-1023 # iptables -t nat -A
5843               POSTROUTING -p tcp -o eth0 -j SNAT --to
5844               1.2.3.4:1-1023</p>
5845             </dd>
5846           </dl>
5847         </div>
5848
5849         <div class="section" id="brute-force">
5850           <h3><a class="toc-backref" href=
5851           "#id126">10.10.3&nbsp;&nbsp;&nbsp;Brute force</a></h3>
5852
5853           <p>Per limitare attacchi di tipo brute force su SSH:</p>
5854           <pre class="literal-block">
5855 iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 3000 --hitcount 4 --name DEFAULT --rsource -j DROP
5856
5857 iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
5858 </pre>
5859         </div>
5860       </div>
5861     </div>
5862
5863     <div class="section" id="ftp-server">
5864       <h1><a class="toc-backref" href=
5865       "#id127">11&nbsp;&nbsp;&nbsp;FTP Server</a></h1>
5866
5867       <p>Il File Transfer Protocol (FTP) (protocollo di
5868       trasferimento file), Ã¨ un Protocollo per la trasmissione di
5869       dati tra host basato su TCP, in genere usato dagli autori di
5870       pagine web per <em>pubblicare</em> queste nei propio spazi
5871       web. Storicamente veniva anche usato, mediate l'utilizzo di
5872       utenze anonime, come punto di scambio per materiali di vari
5873       utenti tra loro sconosciuti (una directory dei materiali
5874       scaricabili e una dedicata agli <em>uploads</em> degli
5875       utenti, poi riordinati dall'<em>ftpmaster</em>). Tuttora si
5876       mantiene la cosuetudine di renedere disponibile i materiali
5877       dei <em>mirrors</em> anche tramite FTP, probabilmente per
5878       garantire l'accesso ai client piu' datati che non possono
5879       utilizzare tecnologie piu' recenti.</p>
5880
5881       <p>Il protocollo FTP e' in chiaro (cioe' non criptato), sia
5882       per quanto riguarda il traffico ad esso associato che per il
5883       passaggio delle passwords degli utenti, facilmente sniffabili
5884       da chiunque abbia accesso alla rete. Naturalmente vsftp per
5885       quanto votato alla sicurezza non modifica queste
5886       caratteristiche del protocollo FTP (ma consente di usare
5887       OpenSSL per la autenticazione degli utenti).</p>
5888
5889       <p>Se propio si deve mettere a disposizione un server FTP ai
5890       propi utenti si considerino le seguenti alternative:</p>
5891
5892       <ul class="simple">
5893         <li>Spingere gli utenti ad usare SFTP invece che FTP</li>
5894
5895         <li>Spingere gli utenti ad usare SSL per autenticarsi al
5896         server FTP</li>
5897
5898         <li>Nel caso di webdesigners si consideri la possibilita'
5899         di offrire alternative come GIT, Subversion, Rsync o
5900         Webdav</li>
5901       </ul>
5902
5903       <p>Nel caso non si possa evitare il server FTP:</p>
5904
5905       <ul class="simple">
5906         <li>Non dare agli utenti FTP una shell di sistema (
5907         Concedere come shell <tt class=
5908         "docutils literal"><span class="pre">ftp</span></tt> al
5909         posto di <tt class="docutils literal"><span class=
5910         "pre">bash</span></tt> in <tt class=
5911         "docutils literal"><span class=
5912         "pre">/etc/passwd</span></tt>)</li>
5913
5914         <li>Rendere il filesytem su cui scrive il demone FTP
5915         <tt class="docutils literal"><span class=
5916         "pre">noexec</span></tt> e <tt class=
5917         "docutils literal"><span class="pre">nosuid</span></tt>
5918         (vedi dopo)</li>
5919
5920         <li>Utilizzare un demone FTP come Vsftp: un server FTP con
5921         una forte inclinazione alla sicurezza: <em>Very Secure FTP
5922         Daemon</em>.</li>
5923       </ul>
5924
5925       <p>Per maggiori informazioni sulle scelte di design legate
5926       alla sicurezza del demone si veda: <a class=
5927       "reference external" href=
5928       "http://vsftpd.beasts.org/DESIGN">http://vsftpd.beasts.org/DESIGN</a></p>
5929
5930       <p>Vsftp mette a disposizione le seguenti funzionalita':</p>
5931
5932       <ul class="simple">
5933         <li>Virtual IP configurations</li>
5934
5935         <li>Virtual users</li>
5936
5937         <li>Standalone or inetd operation</li>
5938
5939         <li>Powerful per-user configurability</li>
5940
5941         <li>Bandwidth throttling</li>
5942
5943         <li>Per-source-IP configurability</li>
5944
5945         <li>Per-source-IP limits</li>
5946
5947         <li>IPv6</li>
5948
5949         <li>Encryption support through SSL integration</li>
5950       </ul>
5951
5952       <div class="section" id="id8">
5953         <h2><a class="toc-backref" href=
5954         "#id128">11.1&nbsp;&nbsp;&nbsp;Pacchetti</a></h2>
5955
5956         <p>Per installare il demone vero e propio si usi il
5957         pacchetto <tt class="docutils literal"><span class=
5958         "pre">vsftpd</span></tt> , mentre per aver un client da cui
5959         fare qualche test sono dipsonibili:</p>
5960
5961         <ul class="simple">
5962           <li><tt class="docutils literal"><span class=
5963           "pre">ftp</span></tt> (pacchetto da installare) e' il
5964           solito client a riga di comando</li>
5965
5966           <li><tt class="docutils literal"><span class=
5967           "pre">gftp</span></tt> e' un client grafico simile al
5968           classico <em>WSftp</em></li>
5969
5970           <li>Normalmente i file mananager com Konqueror possono
5971           lavarorare come client FTP</li>
5972         </ul>
5973       </div>
5974
5975       <div class="section" id="sessioni-ftp">
5976         <h2><a class="toc-backref" href=
5977         "#id129">11.2&nbsp;&nbsp;&nbsp;Sessioni ftp</a></h2>
5978
5979         <p>Vediamo alcuni dei comandi di base per gestire una
5980         sessione ftp a riga di comando:</p>
5981
5982         <dl class="docutils">
5983           <dt>ftp nome_host</dt>
5984
5985           <dd>stabilire la connessione all'host, poi verra' chiesta
5986           la password dell'utente. Se avete sbagliato utente: user
5987           .</dd>
5988
5989           <dt>help</dt>
5990
5991           <dd>Lista dei comandi disponibili.</dd>
5992
5993           <dt>help [nome_comando]</dt>
5994
5995           <dd>Cosa fa quel comando.</dd>
5996
5997           <dt>put</dt>
5998
5999           <dd>Per caricare un file.</dd>
6000
6001           <dt>get</dt>
6002
6003           <dd>Per scaricare un file.</dd>
6004
6005           <dt>ls</dt>
6006
6007           <dd>Lista dei file disponibili.</dd>
6008
6009           <dt>cd</dt>
6010
6011           <dd>Spostarsi in un altra directory.</dd>
6012
6013           <dt>lcd</dt>
6014
6015           <dd>Cambio directory in LOCALE.</dd>
6016
6017           <dt>mput/mget</dt>
6018
6019           <dd>Per lavorare su file multipli.</dd>
6020
6021           <dt>prompt</dt>
6022
6023           <dd>
6024             <dl class="first last docutils">
6025               <dt>Per uscire dalla modalita' interattiva</dt>
6026
6027               <dd>
6028                 <dl class="first last docutils">
6029                   <dt>(non vi chiede conferma di ogni singola
6030                   operazione</dt>
6031
6032                   <dd>su ogni singolo file...).</dd>
6033                 </dl>
6034               </dd>
6035             </dl>
6036           </dd>
6037
6038           <dt>binary</dt>
6039
6040           <dd>Entra in modalita' trasferimento binario.</dd>
6041
6042           <dt>asii</dt>
6043
6044           <dd>Entra in modalita' trasferimento ascii.</dd>
6045
6046           <dt>bye</dt>
6047
6048           <dd>Per chiudere la sessione.</dd>
6049         </dl>
6050       </div>
6051
6052       <div class="section" id="configurazione-iniziale">
6053         <h2><a class="toc-backref" href=
6054         "#id130">11.3&nbsp;&nbsp;&nbsp;Configurazione
6055         iniziale</a></h2>
6056
6057         <p>Il demone di vsftpd e' immediatamente disponibile ma
6058         solo in modalita' anonima (si pensi a uno scenario in cui
6059         si vuole rendere disponibili dei files tramite FTP) e in
6060         <em>sola lettura</em>. Per accedere al servizio si usi
6061         quini come utente <tt class="docutils literal"><span class=
6062         "pre">anonymous</span></tt> (la passwords in genere e' come
6063         consuetudine il propio indirizzo email), la cui
6064         <em>home</em> directory sara' <tt class=
6065         "docutils literal"><span class="pre">/home/ftp/</span></tt>
6066         (<tt class="docutils literal"><span class=
6067         "pre">/srv/ftp</span></tt> in Squeeze):</p>
6068         <pre class="literal-block">
6069 zoo:~# ftp localhost
6070 Connected to localhost.localdomain.
6071 220 (vsFTPd 2.0.7)
6072 Name (localhost:root): anonymous
6073 331 Please specify the password.
6074 Password:
6075 230 Login successful.
6076 Remote system type is UNIX.
6077 Using binary mode to transfer files.
6078 ftp&gt; ls
6079 200 PORT command successful. Consider using PASV.
6080 150 Here comes the directory listing.
6081 -rw-r--r--    1 0        0               0 Feb 03 17:17 anoni
6082 226 Directory send OK.
6083 </pre>
6084       </div>
6085
6086       <div class="section" id="abilitare-gli-utenti-locali">
6087         <h2><a class="toc-backref" href=
6088         "#id131">11.4&nbsp;&nbsp;&nbsp;Abilitare gli utenti
6089         locali</a></h2>
6090
6091         <p>Per poter modificare le impostazioni iniziali, ad
6092         esempio per permettere l'accesso agli utenti del server, si
6093         modifichera' il file <tt class=
6094         "docutils literal"><span class=
6095         "pre">/etc/vsftpd.conf</span></tt>, a seguire le
6096         impostazioni fondamentali ed altre interessanti per rendere
6097         il server accessibile da utenti di sistema (autenticati
6098         tramite la loro password, quindi con PAM) per il tipico
6099         utilizzo di web designers che debbano pubblicare le loro
6100         pagine web (e non si siano fatti convincere a usare
6101         SFTP!):</p>
6102         <pre class="literal-block">
6103 # Allow anonymous FTP? (Beware - allowed by default if you comment this out).
6104 anonymous_enable=NO
6105 # Disabilitiamo l'utente anonimo
6106
6107 # Uncomment this to allow local users to log in.
6108 local_enable=YES
6109 # Accesso garantito agli utenti di sistema
6110
6111 # Uncomment this to enable any form of FTP write command.
6112 write_enable=YES
6113 # Permettiamo agli utenti di caricare documenti nella loro home
6114
6115 # You may fully customise the login banner string:
6116 ftpd_banner=Benvenuti al servizio ftp del sito example.com
6117 </pre>
6118
6119         <p>Per abilitare i cambiamenti si proceda a riavviare il
6120         server: <tt class="docutils literal"><span class=
6121         "pre">/etc/init.d/vsftpd</span> <span class=
6122         "pre">restart</span></tt> e si monitorizzi il file di log
6123         <tt class="docutils literal"><span class="pre">tail</span>
6124         <span class="pre">-f</span> <span class=
6125         "pre">/var/log/vsftpd.log</span></tt> per controllarne il
6126         funzionamento (e anche <tt class=
6127         "docutils literal"><span class=
6128         "pre">/var/log/syslog</span></tt> nel caso non si riuscisse
6129         a far partire correttamente il servizio.</p>
6130
6131         <p>NOTE: Se non riuscite ad ottenere un <em>directory
6132         listing</em> (<tt class="docutils literal"><span class=
6133         "pre">ls</span></tt>) ottenendo un errore <tt class=
6134         "docutils literal"><span class="pre">500</span>
6135         <span class="pre">Illegal</span> <span class=
6136         "pre">PORT</span> <span class="pre">command?</span>
6137         <span class="pre">FTP</span> <span class=
6138         "pre">error</span></tt> abilitare la modalita' passiva col
6139         comando ftp <tt class="docutils literal"><span class=
6140         "pre">passive</span></tt>.</p>
6141       </div>
6142
6143       <div class="section" id="jail-chroot">
6144         <h2><a class="toc-backref" href=
6145         "#id132">11.5&nbsp;&nbsp;&nbsp;Jail chroot</a></h2>
6146
6147         <p>Si puo' impedire all'utente di spostarsi arbitrariamente
6148         per il file system del servere visualizzare il contenuto
6149         delle directory, ad esempio la cartella <tt class=
6150         "docutils literal"><span class="pre">/etc</span></tt>,
6151         confinandolo in una jail chroot limitata alla sua home
6152         directory:</p>
6153         <pre class="literal-block">
6154 # You may restrict local users to their home directories.  See the FAQ for
6155 # the possible risks in this before using chroot_local_user or
6156 # chroot_list_enable below.
6157 chroot_local_user=YES
6158 </pre>
6159
6160         <p>Generalmente un utente di sistema con il solo accesso
6161         FTP non dovrebbe avere la possibilita' di poter navigare
6162         liberamente per il file system del server, esponendo file
6163         di configurazione e quant'altro l'utente potrebbe trarre
6164         utili informazioni sul quali software siano installati e di
6165         che tipo:</p>
6166         <pre class="literal-block">
6167 Remote system type is UNIX.
6168 Using binary mode to transfer files.
6169 ftp&gt; pwd
6170 257 "/"
6171 ftp&gt; cd /etc/
6172 550 Failed to change directory.
6173 </pre>
6174       </div>
6175
6176       <div class="section" id="permessi-sul-filesystem">
6177         <h2><a class="toc-backref" href=
6178         "#id133">11.6&nbsp;&nbsp;&nbsp;Permessi sul
6179         filesystem</a></h2>
6180
6181         <p>Come accennato precedentemente e' opportuno che i
6182         filesystems sui quali un utente puo' scrivere o modificare
6183         il contenuto non abbiano i privilegi di eseguibilita' e
6184         suid, nel nonstro caso vsftpd lavora sull'intera <tt class=
6185         "docutils literal"><span class="pre">/home/</span></tt>
6186         directory quindi avremo in <tt class=
6187         "docutils literal"><span class=
6188         "pre">/etc/fstab</span></tt>:</p>
6189         <pre class="literal-block">
6190 /dev/mapper/store-homes /home   ext3    rw,nosuid,noexec     0      2
6191 </pre>
6192       </div>
6193
6194       <div class="section" id="shell-dell-utente">
6195         <h2><a class="toc-backref" href=
6196         "#id134">11.7&nbsp;&nbsp;&nbsp;Shell dell'utente</a></h2>
6197
6198         <p>Come gia' detto piu' volte le passwords degli utenti
6199         viaaggiano in rete in chiaro, ponendo un grave problema di
6200         sicurezza. Sara' quindi opportuno disbilitare la shell di
6201         questi utenti, tramite il flag <tt class=
6202         "docutils literal"><span class="pre">--shell</span>
6203         <span class="pre">/bin/false</span></tt> in fase di
6204         creazione degli utenti:</p>
6205         <pre class="literal-block">
6206 # adduser --shell /bin/false nome_utente
6207 </pre>
6208
6209         <p>Oppure correggiendo manualmente il file <tt class=
6210         "docutils literal"><span class=
6211         "pre">/etc/passwd</span></tt> per modificare l'inpostazione
6212         della shell dell'utente:</p>
6213         <pre class="literal-block">
6214 nome_utente:x:1001:1001::/var/spool/postfix:/bin/bash
6215 # la riga sopra deve essere trasformata in
6216 nome_utente:x:1001:1001::/var/spool/postfix:/bin/false
6217 </pre>
6218
6219         <p>Sui sistemi DEbian REcenti sara' necessario aggiungere
6220         <tt class="docutils literal"><span class=
6221         "pre">/bin/false</span></tt> all'elenco delle shell
6222         valide.</p>
6223
6224         <p><tt class="docutils literal"><span class=
6225         "pre">/etc/shells</span></tt></p>
6226         <pre class="literal-block">
6227 ...
6228 /bin/false
6229 </pre>
6230       </div>
6231
6232       <div class="section" id="altre-opzioni">
6233         <h2><a class="toc-backref" href=
6234         "#id135">11.8&nbsp;&nbsp;&nbsp;Altre opzioni</a></h2>
6235
6236         <dl class="docutils">
6237           <dt>xferlog_enable=YES</dt>
6238
6239           <dd>Verra' tenuto un file di log <tt class=
6240           "docutils literal"><span class=
6241           "pre">/var/log/vsftpd.log</span></tt> degli upload e
6242           download sul server.</dd>
6243
6244           <dt>hide_ids=YES</dt>
6245
6246           <dd>Nasconde le userid e groupid mascherandole con
6247           <tt class="docutils literal"><span class=
6248           "pre">ftp</span></tt> .</dd>
6249
6250           <dt>anon_root=/home/ftp</dt>
6251
6252           <dd>Home directory dell'utente anonimo.</dd>
6253
6254           <dt>write_enable=YES</dt>
6255
6256           <dd>Permette agli utenti di eseguire i comandi che
6257           possono modificare il filesystem: STOR, DELE, RNFR, RNTO,
6258           MKD, RMD, APPE e SITE .</dd>
6259
6260           <dt>idle_session_timeout=600</dt>
6261
6262           <dd>Permette agli utenti di restare connessi piu' a
6263           lungo, utile per i webdesigners che passano intere
6264           giornate connessi al server.</dd>
6265         </dl>
6266       </div>
6267     </div>
6268   </div>
6269 </body>
6270 </html>