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