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