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