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