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