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