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