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