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