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