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