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