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