1 <?xml version="1.0" encoding="utf-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
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/">
13 <title>Servizi di rete passo a passo</title>
14 <style type="text/css">
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.
21 Default cascading style sheet for the HTML output of Docutils.
23 See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
24 customize this style sheet.
27 /* used to remove borders from tables and images */
28 .borderless, table.borderless td, table.borderless th {
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 }
37 /* Override more specific margin styles with "! important". */
38 margin-top: 0 ! important }
40 .last, .with-subtitle {
41 margin-bottom: 0 ! important }
47 text-decoration: none ;
54 margin-bottom: 0.5em }
56 /* Uncomment (and remove this text!) to get bold-faced definition list terms
64 div.abstract p.topic-title {
68 div.admonition, div.attention, div.caution, div.danger, div.error,
69 div.hint, div.important, div.note, div.tip, div.warning {
71 border: medium outset ;
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 {
78 font-family: sans-serif }
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 {
85 font-family: sans-serif }
87 /* Uncomment (and remove this text!) to get reduced vertical space in
89 div.compound .compound-first, div.compound .compound-middle {
90 margin-bottom: 0.5em }
92 div.compound .compound-last, div.compound .compound-middle {
101 div.dedication p.topic-title {
109 div.footer, div.header {
118 div.line-block div.line-block {
124 margin: 0 0 0.5em 1em ;
125 border: medium outset ;
127 background-color: #ffffee ;
132 div.sidebar p.rubric {
133 font-family: sans-serif ;
136 div.system-messages {
139 div.system-messages h1 {
143 border: medium outset ;
146 div.system-message p.system-message-title {
153 h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
154 h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
172 ol.simple, ul.simple {
176 list-style: decimal }
179 list-style: lower-alpha }
182 list-style: upper-alpha }
185 list-style: lower-roman }
188 list-style: upper-roman }
202 white-space: nowrap }
211 font-family: sans-serif ;
216 font-family: sans-serif ;
228 pre.literal-block, pre.doctest-block {
233 font-family: sans-serif ;
234 font-style: oblique }
236 span.classifier-delimiter {
237 font-family: sans-serif ;
241 font-family: sans-serif }
244 white-space: nowrap }
252 span.section-subtitle {
253 /* font-size relative to parent (h1..h6 element) */
257 border-left: solid 1px gray;
265 margin-bottom: 0.5em }
268 border-left: solid 1px black;
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 }
277 table.docutils th.field-name, table.docinfo th.docinfo-name {
280 white-space: nowrap ;
283 h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
284 h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
288 list-style-type: none }
294 <div class="document" id="servizi-di-rete-passo-a-passo">
295 <h1 class="title">Servizi di rete passo a passo</h1>
297 <h2 class="subtitle" id=
298 "appunti-sulla-installazione-e-configurazione-dei-servizi">
299 Appunti sulla installazione e configurazione dei servizi</h2>
302 <table class="docutils field-list" frame="void" rules="none">
303 <col class="field-name">
304 <col class="field-body">
308 <th class="field-name">Author:</th>
310 <td class="field-body">Andrea Manni</td>
314 <th class="field-name">Copyright:</th>
316 <td class="field-body">GFDL</td>
320 <th class="field-name">Version:</th>
322 <td class="field-body">0.6</td>
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>
335 <div class="contents topic" id="indice-degli-argomenti">
336 <p class="topic-title first">Indice degli argomenti</p>
338 <ul class="auto-toc simple">
340 <a class="reference internal" href=
341 "#configurazione-sistema" id="id6" name=
342 "id6">1 Configurazione sistema</a>
344 <ul class="auto-toc">
345 <li><a class="reference internal" href=
346 "#solo-per-uso-interno" id="id7" name=
347 "id7">1.1 Solo per uso
350 <li><a class="reference internal" href="#rete" id="id8"
351 name="id8">1.2 Rete</a></li>
353 <li><a class="reference internal" href=
354 "#bash-completion" id="id9" name=
355 "id9">1.3 Bash completion</a></li>
357 <li><a class="reference internal" href="#vim" id="id10"
358 name="id10">1.4 Vim</a></li>
360 <li><a class="reference internal" href="#vnc" id="id11"
361 name="id11">1.5 VNC</a></li>
363 <li><a class="reference internal" href=
364 "#lista-dei-pacchetti-di-base" id="id12" name=
365 "id12">1.6 Lista dei pacchetti di
369 <a class="reference internal" href=
370 "#apt-configurazione" id="id13" name=
371 "id13">1.7 Apt configurazione</a>
373 <ul class="auto-toc">
374 <li><a class="reference internal" href=
375 "#sources-list" id="id14" name=
376 "id14">1.7.1 sources.list</a></li>
378 <li><a class="reference internal" href=
379 "#etc-apt-apt-conf" id="id15" name=
380 "id15">1.7.2 /etc/apt/apt.conf</a></li>
387 <a class="reference internal" href="#squid" id="id16"
388 name="id16">2 Squid</a>
390 <ul class="auto-toc">
392 <a class="reference internal" href=
393 "#configurazione-squid-conf" id="id17" name=
394 "id17">2.1 Configurazione:
397 <ul class="auto-toc">
398 <li><a class="reference internal" href="#cache-dir"
400 "id18">2.1.1 Cache_dir</a></li>
402 <li><a class="reference internal" href=
403 "#tag-maximum-object-size" id="id19" name=
404 "id19">2.1.2 TAG:
405 maximum_object_size</a></li>
407 <li><a class="reference internal" href=
408 "#tag-cache-mem" id="id20" name=
409 "id20">2.1.3 TAG:
412 <li><a class="reference internal" href=
413 "#tag-minimum-object-size" id="id21" name=
414 "id21">2.1.4 TAG:
415 minimum_object_size</a></li>
420 <a class="reference internal" href=
421 "#negoziazione-degli-accesi-al-servizio" id="id22"
422 name="id22">2.2 Negoziazione degli
423 accesi al servizio</a>
425 <ul class="auto-toc">
426 <li><a class="reference internal" href=
427 "#acl-e-http-access" id="id23" name=
428 "id23">2.2.1 ACL e http
434 <a class="reference internal" href="#testare-squid"
435 id="id24" name="id24">2.3 Testare
438 <ul class="auto-toc">
439 <li><a class="reference internal" href=
440 "#client-wgetrc" id="id25" name=
441 "id25">2.3.1 Client:
444 <li><a class="reference internal" href=
445 "#server-access-log" id="id26" name=
446 "id26">2.3.2 Server:
454 <a class="reference internal" href="#apache" id="id27"
455 name="id27">3 Apache</a>
457 <ul class="auto-toc">
458 <li><a class="reference internal" href=
459 "#pacchetti-da-installare" id="id28" name=
460 "id28">3.1 Pacchetti da
461 installare::</a></li>
463 <li><a class="reference internal" href=
464 "#configurazione-di-apache" id="id29" name=
465 "id29">3.2 Configurazione di
468 <li><a class="reference internal" href="#apache-conf"
470 "id30">3.3 apache.conf</a></li>
473 <a class="reference internal" href=
474 "#installazione-di-php" id="id31" name=
475 "id31">3.4 Installazione di PHP</a>
477 <ul class="auto-toc">
478 <li><a class="reference internal" href=
479 "#test-del-modulo-php" id="id32" name=
480 "id32">3.4.1 Test del modulo
483 <li><a class="reference internal" href=
484 "#installazione-del-supporto-per-mysql" id="id33"
485 name="id33">3.4.2 Installazione
486 del supporto per Mysql</a></li>
488 <li><a class="reference internal" href=
489 "#phpmyadmin" id="id34" name=
490 "id34">3.4.3 phpmyadmin</a></li>
492 <li><a class="reference internal" href=
493 "#installazione-del-supporto-per-postgresql" id=
495 "id35">3.4.4 Installazione del
496 supporto per Postgresql</a></li>
498 <li><a class="reference internal" href=
499 "#phppgadmin" id="id36" name=
500 "id36">3.4.5 phppgadmin</a></li>
505 <a class="reference internal" href="#virtual-hosts"
506 id="id37" name="id37">3.5 Virtual
509 <ul class="auto-toc">
510 <li><a class="reference internal" href=
511 "#gestione-dns" id="id38" name=
512 "id38">3.5.1 Gestione DNS</a></li>
514 <li><a class="reference internal" href=
515 "#virtual-host" id="id39" name=
516 "id39">3.5.2 Virtual host</a></li>
521 <a class="reference internal" href=
522 "#negoziazione-accessi" id="id40" name=
523 "id40">3.6 Negoziazione accessi</a>
525 <ul class="auto-toc">
526 <li><a class="reference internal" href=
527 "#limiti-su-base-ip" id="id41" name=
528 "id41">3.6.1 Limiti su base
534 <a class="reference internal" href=
535 "#user-authentication" id="id42" name=
536 "id42">3.7 User Authentication</a>
538 <ul class="auto-toc">
539 <li><a class="reference internal" href=
540 "#definire-la-cartella" id="id43" name=
541 "id43">3.7.1 Definire la
544 <li><a class="reference internal" href=
545 "#creazione-del-database-delle-passwords" id="id44"
546 name="id44">3.7.2 Creazione del
547 database delle passwords</a></li>
549 <li><a class="reference internal" href="#id3" id=
551 "id45">3.7.3 Configurazione di
556 <li><a class="reference internal" href="#cavets" id=
557 "id46" name="id46">3.8 Cavets</a></li>
562 <a class="reference internal" href="#domain-name-system"
563 id="id47" name="id47">4 Domain Name
566 <ul class="auto-toc">
567 <li><a class="reference internal" href=
568 "#nomi-di-dominio" id="id48" name=
569 "id48">4.1 Nomi di dominio</a></li>
571 <li><a class="reference internal" href=
572 "#tipologie-di-record" id="id49" name=
573 "id49">4.2 Tipologie di
576 <li><a class="reference internal" href="#utilizzo" id=
578 "id50">4.3 Utilizzo</a></li>
580 <li><a class="reference internal" href=
581 "#risoluzione-dei-nomi-di-dominio" id="id51" name=
582 "id51">4.4 Risoluzione dei nomi di
585 <li><a class="reference internal" href="#dig" id="id52"
586 name="id52">4.5 Dig</a></li>
588 <li><a class="reference internal" href="#resolv-conf"
590 "id53">4.6 resolv.conf</a></li>
592 <li><a class="reference internal" href="#etc-hosts" id=
594 "id54">4.7 /etc/hosts</a></li>
596 <li><a class="reference internal" href="#hostname" id=
598 "id55">4.8 Hostname</a></li>
603 <a class="reference internal" href="#dnsmasq" id="id56"
604 name="id56">5 DNSmasq</a>
606 <ul class="auto-toc">
607 <li><a class="reference internal" href=
608 "#configurazione" id="id57" name=
609 "id57">5.1 Configurazione</a></li>
611 <li><a class="reference internal" href="#dhcp" id=
612 "id58" name="id58">5.2 DHCP</a></li>
614 <li><a class="reference internal" href="#dns-cache" id=
615 "id59" name="id59">5.3 DNS
618 <li><a class="reference internal" href="#dhcpd" id=
619 "id60" name="id60">5.4 DHCPd</a></li>
624 <a class="reference internal" href="#samba" id="id61"
625 name="id61">6 Samba</a>
627 <ul class="auto-toc">
628 <li><a class="reference internal" href="#pacchetti" id=
630 "id62">6.1 Pacchetti</a></li>
632 <li><a class="reference internal" href=
633 "#passwords-e-autenticazione" id="id63" name=
634 "id63">6.2 Passwords e
635 autenticazione</a></li>
637 <li><a class="reference internal" href=
638 "#creazione-utenti" id="id64" name=
639 "id64">6.3 Creazione Utenti</a></li>
642 <a class="reference internal" href=
643 "#creare-la-condivisione" id="id65" name=
644 "id65">6.4 Creare la
647 <ul class="auto-toc">
648 <li><a class="reference internal" href=
649 "#sicurezza-permessi-di-esecuzione-sul-server" id=
651 "id66">6.4.1 Sicurezza: permessi
652 di esecuzione sul server</a></li>
656 <li><a class="reference internal" href=
657 "#configurazione-dell-applicativo-samba-vero-e-proprio"
659 "id67">6.5 Configurazione
660 dell'applicativo Samba vero e proprio.</a></li>
662 <li><a class="reference internal" href=
663 "#testare-il-servizio" id="id68" name=
664 "id68">6.6 Testare il
670 <a class="reference internal" href="#firewall" id="id69"
671 name="id69">7 Firewall</a>
673 <ul class="auto-toc">
674 <li><a class="reference internal" href="#links" id=
675 "id70" name="id70">7.1 Links</a></li>
677 <li><a class="reference internal" href="#ipfilter" id=
679 "id71">7.2 Ipfilter</a></li>
682 <a class="reference internal" href=
683 "#progettazione-di-un-firewall" id="id72" name=
684 "id72">7.3 Progettazione di un
687 <ul class="auto-toc">
688 <li><a class="reference internal" href=
689 "#collocazione" id="id73" name=
690 "id73">7.3.1 Collocazione</a></li>
692 <li><a class="reference internal" href=
693 "#policy-di-default" id="id74" name=
694 "id74">7.3.2 Policy di
697 <li><a class="reference internal" href="#hardware"
699 "id75">7.3.3 Hardware</a></li>
703 <li><a class="reference internal" href=
704 "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
705 "id76" name="id76">7.4 Percorso dei
706 pacchetti tra tabelle e catene</a></li>
709 <a class="reference internal" href=
710 "#concetti-di-base" id="id77" name=
711 "id77">7.5 Concetti di base</a>
713 <ul class="auto-toc">
714 <li><a class="reference internal" href=
715 "#tabelle-catene-regole" id="id78" name=
716 "id78">7.5.1 Tabelle, catene,
719 <li><a class="reference internal" href="#match" id=
721 "id79">7.5.2 Match</a></li>
723 <li><a class="reference internal" href="#targets"
725 "id80">7.5.3 Targets</a></li>
729 <li><a class="reference internal" href=
730 "#tabella-filter" id="id81" name=
731 "id81">7.6 Tabella Filter</a></li>
733 <li><a class="reference internal" href=
734 "#flush-automatico-per-macchine-remote" id="id82" name=
735 "id82">7.7 Flush automatico per
736 macchine remote</a></li>
738 <li><a class="reference internal" href=
739 "#gestione-regole-rules" id="id83" name=
740 "id83">7.8 Gestione regole
745 <li><a class="reference internal" href="#note" id="id84"
746 name="id84">8 NOTE</a></li>
750 <p>Generato con: <a class="reference external" href=
751 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
753 <div class="section" id="configurazione-sistema">
754 <h1><a class="toc-backref" href=
755 "#id6">1 Configurazione sistema</a></h1>
757 <div class="section" id="solo-per-uso-interno">
758 <h2><a class="toc-backref" href=
759 "#id7">1.1 Solo per uso interno</a></h2>
761 <p>Impostazioni di base per la configurazione del sistema
762 operativo e della rete nel laboratorio 208 facente parte
763 della rete piffa.net .</p>
765 <p>Qui riportati per comodita' degli studenti (e del
766 docente che non sara' <strong>mai piu'</strong> costretto a
767 ripeterli continuamente! ). Gli altri lettori potranno
768 tenerli presenti per cercare di comprendere gli esempi nel
769 testo. Ad esempio: quando leggerete <tt class=
770 "docutils literal"><span class=
771 "pre">10.10.208.254:3128</span></tt> saprete che si tratta
772 del nostro <em>proxy http</em>, stara' quindi a voi
773 sostituire i dati con gli <em>ip</em> della vostra
777 <div class="section" id="rete">
778 <h2><a class="toc-backref" href=
779 "#id8">1.2 Rete</a></h2>
781 <p>Parametri della rete attualmente in uso:</p>
783 <table border="1" class="docutils">
791 <td colspan="2">Parametri della rete</td>
797 <td>10.10.208.0/24</td>
803 <td>255.255.255.0</td>
809 <td>10.10.208.255</td>
815 <td>10.10.208.254</td>
821 <td>10.10.208.250 persistente</td>
827 <td>10.10.208.254</td>
833 <td>10.10.208.250 persistente</td>
839 <td>10.10.208.254:3128</td>
844 <p>Sul portatile di Andrea, corrispondente all'ip 254, gira
845 un DHCP, proxy http e mirror di Debian ( <a class=
846 "reference external" href=
847 "http://debian.piffa.net">http://debian.piffa.net</a>). Se
848 Andrea non e' in aula (o ancora peggio non c'e' il suo
849 portatile Net) gli studenti dovranno darsi un indirizzo ip
850 manualmente e disabilitare il proxy (che pero' e
851 trasparente, quindi fate pure come se non ci fosse ;) .
852 Questo in attesa che si sappia se sara' nuovamente
853 utilizzabile il vecchio server Bender.</p>
856 <div class="section" id="bash-completion">
857 <h2><a class="toc-backref" href=
858 "#id9">1.3 Bash completion</a></h2>
860 <p>Il completamento automatico della shell (che si attiva
861 premendo il tasto tab una o due volte mentre si sta
862 scrivendo un termine) permette di comporre automaticamente
863 i nomi dei comandi e i percorsi dei file, sopratutto la
864 composizione automatica dei percorsi dei file e' di grande
867 <p>Bash_completion permette di integrare il completamento
868 automatico con i nomi dei pacchetti e oggetti dei comandi:
869 ad es. volendo digitare <tt class=
870 "docutils literal"><span class="pre">apt-get</span>
871 <span class="pre">inst[TAB]</span> <span class=
872 "pre">xtigh[TAB]</span></tt> ora verra' completatato
873 automaticamente sia la parola <tt class=
874 "docutils literal"><span class="pre">install</span></tt>
875 che il nome del pacchetto <tt class=
876 "docutils literal"><span class=
877 "pre">xtightvncviewer</span></tt>.</p>
879 <p>Abilitare /etc/bash_completion nel file <tt class=
880 "docutils literal"><span class=
881 "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
882 proprio <tt class="docutils literal"><span class=
883 "pre">~/.bashrc</span></tt> (che sarebbe il file
884 <em>nascosto</em>, quindi con un punto all'inizio del nome
885 del file, di configurazione della shell bash per ogni
886 utente, presente nella propria <em>home
888 <pre class="literal-block">
889 echo ". /etc/bash_completion" >> ~/.bashrc
892 <p>Esempio di ~/.bahsrc</p>
893 <pre class="literal-block">
894 # ~/.bashrc: executed by bash(1) for non-login shells.
896 export PS1='\h:\w\$ '
899 # Decommentare le seguenti righr per abilitare la colorazione dei
901 export LS_OPTIONS='--color=auto'
903 alias ls='ls $LS_OPTIONS'
904 alias ll='ls $LS_OPTIONS -l'
905 alias l='ls $LS_OPTIONS -lA'
907 # Some more alias to avoid making mistakes:
912 # questo abilita bash completion
913 . /etc/bash_completion
916 <p>Il file <tt class="docutils literal"><span class=
917 "pre">/etc/bash_completion</span></tt> deve essere presente
918 nel sistema, in caso contrario installare il pacchetto:
919 <tt class="docutils literal"><span class=
920 "pre">bash-completion</span></tt>. Generalmente l'utente
921 <tt class="docutils literal"><span class=
922 "pre">root</span></tt> ha un file <tt class=
923 "docutils literal"><span class="pre">.bashrc</span></tt>
924 preimpostato analogo a quello citato sopra, a differenza
925 dei normali utenti di sistema.</p>
930 <li><a class="reference external" href=
931 "http://www.debian-administration.org/articles/316">An
932 introduction to bash completion</a></li>
934 <li><a class="reference external" href=
935 "http://www.caliban.org/bash/">Working more productively
936 with bash 2.x/3.x</a></li>
940 <div class="section" id="vim">
941 <h2><a class="toc-backref" href=
942 "#id10">1.4 Vim</a></h2>
944 <p>Vim e' l'editor di testo preferito dai sistemisti,
945 quindi sara' conveniente impostare fin da subito alcune
946 impostazioni per renderlo piu' comodo.</p>
948 <p>Assicurarsi che sia installata nel sistema la versione
949 completa dell'editor <tt class=
950 "docutils literal"><span class="pre">vim</span></tt>
951 nstallando il pacchetto vimi:</p>
952 <pre class="literal-block">
953 # apt-get install vim
955 e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
957 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
958 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
959 " you can find below. If you wish to change any of those settings, you should
960 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
961 " everytime an upgrade of the vim packages is performed. It is recommended to
962 " make changes after sourcing debian.vim since it alters the value of the
963 " 'compatible' option.
965 " This line should not be removed as it ensures that various options are
966 " properly set to work with the Vim-related packages available in Debian.
969 " Uncomment the next line to make Vim more Vi-compatible
970 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
971 " options, so any other options should be set AFTER setting 'compatible'.
974 " Vim5 and later versions support syntax highlighting. Uncommenting the next
975 " line enables syntax highlighting by default.
978 " If using a dark background within the editing area and syntax highlighting
979 " turn on this option as well
982 " Uncomment the following to have Vim jump to the last position when
986 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
987 \| exe "normal! g'\"" | endif
990 " Uncomment the following to have Vim load indentation rules and plugins
991 " according to the detected filetype.
993 filetype plugin indent on
996 " The following are commented out as they cause vim to behave a lot
997 " differently from regular Vi. They are highly recommended though.
998 set showcmd " Show (partial) command in status line.
999 "set showmatch " Show matching brackets.
1000 set ignorecase " Do case insensitive matching
1001 "set smartcase " Do smart case matching
1002 "set incsearch " Incremental search
1003 set autowrite " Automatically save before commands like :next and :make
1004 "set hidden " Hide buffers when they are abandoned
1005 "set mouse=a " Enable mouse usage (all modes) in terminals
1007 " Source a global configuration file if available
1008 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1009 if filereadable("/etc/vim/vimrc.local")
1010 source /etc/vim/vimrc.local
1015 <div class="section" id="vnc">
1016 <h2><a class="toc-backref" href=
1017 "#id11">1.5 VNC</a></h2>
1019 <p>I Virtual Network Computing (o VNC) sono software di
1020 controllo remoto e servono per amministrare il proprio
1021 computer a distanza o visuallizare la sessione di lavoro di
1022 un altro computer sul proprio a scopo didattico.
1023 Installando un server VNC sulla propria macchina ed
1024 impostando una opportuna password si consente ai client VNC
1025 di ricevere una immagine dello schermo ed eventualmente di
1026 inviare input di tastiera e mouse al computer server
1027 (durante le lezioni questo non e' possibile per gli
1028 studenti, solo Andrea esegue i comandi). In pratica si può
1029 gestire il computer server da un'altra postazione, come se
1030 fosse il proprio computer fisico.</p>
1032 <p>Scaricare il pacchetto <tt class=
1033 "docutils literal"><span class=
1034 "pre">xtightvncviewer</span></tt> e lo script <tt class=
1035 "docutils literal"><span class="pre">guarda.sh</span></tt>
1036 in una posizione (collocazione nel <em>path</em> degli
1037 utenti, es <tt class="docutils literal"><span class=
1038 "pre">echo</span> <span class="pre">$PATH</span></tt> per
1039 visualizzare l'attuale path ) comoda per gli utenti ( in
1040 genere <tt class="docutils literal"><span class=
1041 "pre">/bin</span></tt> ), rndere eseguibile lo script.</p>
1044 <pre class="literal-block">
1047 wget http://debian.piffa.net/guarda.sh
1052 <p>Si noti che non e' possibile lanciare un applicativo sul
1053 server grafico di un utente da una shell in cui si sta
1054 lavorando come altro utente, anche se root. E' quindi
1055 necessario essere l'utente di sistema che si e' loggato
1056 inizialmente nella sessione grafica per poter lanciare lo
1057 script guarda.sh da una shell.</p>
1059 <p>Controllare con <tt class=
1060 "docutils literal"><span class="pre">whoami</span></tt> di
1061 essere l'utente normale (es <tt class=
1062 "docutils literal"><span class="pre">utente</span>
1063 <span class="pre">|</span> <span class=
1064 "pre">studente</span> <span class="pre">|</span>
1065 <span class="pre">proprio</span> <span class=
1066 "pre">nome</span></tt> ), in caso si sia assunta una altra
1067 <tt class="docutils literal"><span class=
1068 "pre">id</span></tt> si apra un altra shell o si esca da
1069 quella attuale con <tt class=
1070 "docutils literal"><span class="pre">exit</span></tt> .</p>
1073 <div class="section" id="lista-dei-pacchetti-di-base">
1074 <h2><a class="toc-backref" href=
1075 "#id12">1.6 Lista dei pacchetti di
1078 <p>I pacchetti installati generalmente <a class=
1079 "footnote-reference" href="#id2" id="id1" name=
1080 "id1">[1]</a> per poter seguire le lezioni sono:</p>
1081 <pre class="literal-block">
1082 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1085 <table class="docutils footnote" frame="void" id="id2"
1092 <tbody valign="top">
1094 <td class="label"><a class="fn-backref" href=
1097 <td><tt class="docutils literal"><span class=
1098 "pre">kde-core</span></tt> e' piu' leggero del
1099 pacchetto <tt class="docutils literal"><span class=
1100 "pre">kde</span></tt>, esiste anche un equivalente
1101 <tt class="docutils literal"><span class=
1102 "pre">gnome-core</span> <span class=
1103 "pre">gnome</span></tt> e il log-in manager
1104 <tt class="docutils literal"><span class=
1105 "pre">gdm</span></tt> per il l'ambiente grafico
1112 <div class="section" id="apt-configurazione">
1113 <h2><a class="toc-backref" href=
1114 "#id13">1.7 Apt configurazione</a></h2>
1116 <p>Vediamo i due file principali di apt:</p>
1119 <li><tt class="docutils literal"><span class=
1120 "pre">/etc/apt/sources.list</span></tt></li>
1122 <li><tt class="docutils literal"><span class=
1123 "pre">/etc/apt/apt.conf</span></tt></li>
1126 <div class="section" id="sources-list">
1127 <h3><a class="toc-backref" href=
1128 "#id14">1.7.1 sources.list</a></h3>
1130 <p>Questo file contiene i sorgenti da cui <em>apt</em>
1131 preleva i pacchetti da installare tramite <em>dpkg</em>,
1132 vengono quindi precisati i metodi (ad es. http / ftp /
1133 cdrom / file), la release che si vuole tracciare (es
1134 <tt class="docutils literal"><span class=
1135 "pre">stable,</span> <span class="pre">testing,</span>
1136 <span class="pre">unstable</span></tt> oppure i
1137 corrispondenti release name es: <tt class=
1138 "docutils literal"><span class="pre">Lenny,</span>
1139 <span class="pre">Squeeze,</span> <span class=
1140 "pre">Sid</span></tt>), i rami di interesse (es:
1141 <tt class="docutils literal"><span class=
1142 "pre">main</span></tt> che e' l'archivio principale,
1143 <tt class="docutils literal"><span class=
1144 "pre">non-free</span></tt> per il software non libero,
1145 <tt class="docutils literal"><span class=
1146 "pre">contrib</span></tt> per i pacchetti non realizzati
1147 dai manutentori ufficiali).</p>
1149 <p>Gli archivi sono generalmente:</p>
1152 <li><tt class="docutils literal"><span class=
1153 "pre">deb</span></tt> per pacchetti Debian binari</li>
1155 <li><tt class="docutils literal"><span class=
1156 "pre">deb-src</span></tt> per i pacchetti sorgenti
1157 (quindi da compilare, come il kernel) degli stessi
1158 pacchetti binari. In genere se non compilate spesso
1159 potete evitare di tracciare i sorgenti per risparmiare
1163 <p><tt class="docutils literal"><span class=
1164 "pre">/etc/apt/sources.list</span></tt></p>
1165 <pre class="literal-block">
1166 # esempio di accesso a un CDROM:
1167 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1169 # Archivio principale debian via http su piffa.net,
1170 # non funziona al difuori dell'aula dei corsi
1171 deb http://debian.piffa.net/debian/ Lenny main
1172 # deb http://debian.piffa.net/debian/ Lenny non-free contrib
1174 # Mirror da kernel.org da usare a casa:
1175 deb http://mirrors.eu.kernel.org/debian/ Lenny main
1177 # Security dal sito principale
1178 deb http://security.debian.org/ Lenny/updates main
1179 deb-src http://security.debian.org/ Lenny/updates main
1181 # Debian volatile per le cose soggette a cambiamenti non legati
1182 # a dinamiche di sicurezza
1183 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1184 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1186 # Esempio di accesso a un filesystem locale contenente i pacchetti:
1187 # deb file:/mnt/mirror Sid main non-free contrib
1191 <div class="section" id="etc-apt-apt-conf">
1192 <h3><a class="toc-backref" href=
1193 "#id15">1.7.2 /etc/apt/apt.conf</a></h3>
1195 <p>Questo file contiene le opzioni di apt, come ad
1196 esempio il proxy:</p>
1197 <pre class="literal-block">
1198 Acquire::http::Proxy "http://10.10.208.254:3128";
1201 <p>Si tenga conto che se si imposta un proxy per apt sul
1202 proprio portatile e tornati a casa propria si vuole
1203 scaricare nuovi pacchetti si dovra' disabilitare il
1209 <div class="section" id="squid">
1210 <h1><a class="toc-backref" href=
1211 "#id16">2 Squid</a></h1>
1213 <p>Squid e' un proxy cache http (ma anche FTP e https)
1214 robusto e strutturato, puo' essere usato sia in reti
1215 relativamente piccole grazie alla semplicita' di
1216 configurazione che in scenari piu' complessi grazie alla
1217 possibilita' di gestirne in modo granulare le risorse
1218 partendo dalle configurazioni piu' semplici per la semplice
1219 <em>condivisione della navigazione</em> internet, la gestione
1220 degli accessi, il filtraggio dei contenuti (Squid e' una
1221 applicazione che si muove nel 4' livello del modello TCP/IP a
1222 differenza di un <em>ipfilter</em> limitato al 2') nel l
1223 bilanciamento del carico tra piu' hosts.</p>
1225 <dl class="docutils">
1226 <dt>Inoltre svolge la funzione di <em>anonymizer</em>:</dt>
1228 <dd>nasconde i client http alla rete internet: risulta solo
1229 il server proxy nei log dei server web frequentati dagli
1230 utenti di Squid.</dd>
1233 <p>Cosa a volte sottovalutata, squid permette la navigazione
1234 web a una rete basata su <em>indirizzi ip privati</em> (es
1235 una 192.168.0.0/24). E se la rete privata deve <em>solo
1236 navigare</em> in internet, non serve un <em>NAT</em> od
1237 altro, basta il solo Squid. Per altro non servira' neanche un
1238 servizio DNS dato che <em>sara' il solo squid a risolvere i
1239 nomi di dominio</em> per i suoi client http.</p>
1241 <p>Squid ascolta di default sulla porta 3128, per impostare
1242 <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
1243 "docutils literal"><span class=
1244 "pre">/etc/apt/apt.conf</span></tt></p>
1245 <pre class="literal-block">
1246 Acquire::http::Proxy "10.10.208.254:3128";
1249 <p>Per installare Squid si usino i pacchetti:</p>
1250 <pre class="literal-block">
1254 <div class="section" id="configurazione-squid-conf">
1255 <h2><a class="toc-backref" href=
1256 "#id17">2.1 Configurazione:
1259 <p>Segue un estratto delle direttive principali viste in
1260 aula presenti nel file di configurazione <tt class=
1261 "docutils literal"><span class=
1262 "pre">/etc/squid3/squid.conf</span></tt> .</p>
1264 <div class="section" id="cache-dir">
1265 <h3><a class="toc-backref" href=
1266 "#id18">2.1.1 Cache_dir</a></h3>
1268 <p>Cache dir serve per impostare dimensione e percorso
1269 della cache creata sul supporto di storaggio. Essendo la
1270 dimensione di default della cache pari a <tt class=
1271 "docutils literal"><span class="pre">~100</span>
1272 <span class="pre">MB</span></tt> e' altamente
1273 consigliabili aumentare questo parametro se si vuole
1274 poter utilizzare la funzione di <em>cache</em> http del
1277 <p>La dimensione ovviamente dipendera' dallo spazio
1278 disponibile, dimensioni tipiche e massime degli oggetti
1279 che si vuole tenere in cache (un solo file <em>.iso e'
1280 circa ``700 MB``, il pacchetto *Openoffice.org</em> cira
1281 <tt class="docutils literal"><span class="pre">150</span>
1282 <span class="pre">MB</span></tt>, un pacchetto debian
1283 circa <tt class="docutils literal"><span class=
1284 "pre">20</span> <span class="pre">MB</span></tt>), numero
1287 <p>Si presti poi attenzione alla natura dei dati che
1288 saranno salvati nella cache: sono tutti dati facilmenti
1289 sostituibili (gli originali sono <em>on-line</em>) la cui
1290 perdita non arreca danni permanenti. Questo rende la
1291 cache di Squid un possibile candidato ad un <em>RAID
1292 stripe</em> (livello 0), con vantaggi sia per le
1293 prestazioni (e la velocita' di navigazione e' uno dei
1294 motivi per cui si installa Squid) che per l'utilizzo
1295 estensivo dello spazio di storaggio. Questo fino al
1296 momento in cui per voi non sia piu' importante
1297 <em>garantire la disponibilita' del servizio</em> (se il
1298 RAID stripe dovesse rompersi gli utenti non potrebbero
1299 piu' navigare, cosa che per natura dello stripe e'
1300 maggiormente probabile rispetto ad un <em>mirror</em> o a
1301 un filesytem <em>normale</em>) con un RAID mirror o
1304 <p>Altra considerazione: i dati del proxy vengono slavati
1305 sul filesytem del server dietro richiesta di utenti
1306 esterni talvolta sconosciuti. Come per i servizi di file
1307 sharing o per la posta elettronica non c'e' motivo che il
1308 filesystem su cui sono ospitati questi dati abbia i
1309 privilegi di eseguibilita' o suid (in genere si puo'
1310 anche usare <em>noatime</em> per renderlo piu' veloce,
1311 che si usi o meno il journal dipende dalle preferenze:
1312 affidabilita' oppure prestazioni):</p>
1315 <pre class="literal-block">
1317 # Filesystem per Squid http cache
1318 /dev/md3/ /var/spool/squid/ ext3,noexec,nosuid,noatime 0 3
1321 <p>Ora possiamo impostare la cache direttamente nel file
1322 <tt class="docutils literal"><span class=
1323 "pre">/etc/squid3/squid.conf</span></tt>:</p>
1324 <pre class="literal-block">
1325 #TAG: cache_dir (riga 1628)
1328 # cache_dir Type Directory-Name Fs-specific-data [options]
1330 # You can specify multiple cache_dir lines to spread the
1331 # cache among different disk partitions.
1334 # cache_dir ufs /var/spool/squid3 100 16 256
1335 cache_dir aufs /var/spool/squid3 300 24 256
1339 # directory primo livello
1340 # secondo livello di directory
1343 <p>Se si modifica la struttura del filesytem della cache
1344 di Squid, ad esempio variando il numero delle directory,
1345 puo' essere opportuno rigenerare la struttura della cache
1346 di squid (per lo meno se si <em>aumenta il numero delle
1347 directory di primo o secondo livello). Tipicamente e'
1348 opportuno cancellare (se si ha *ridotto</em> il numero
1349 delle diectory) la vecchia cache e poi generare una nuova
1350 struttura. Se si vuole <em>star nel sicuro</em> ogni
1351 volta che si modifica l'impostazione delle directory
1352 <em>si svuoti la vecchia cache e se ne generi una
1354 <pre class="literal-block">
1355 # /etc/init.d/squid3 stop
1356 # rm -r /var/spool/squid3/??
1358 # /etc/init.d/squid3 start
1362 <div class="section" id="tag-maximum-object-size">
1363 <h3><a class="toc-backref" href=
1364 "#id19">2.1.2 TAG:
1365 maximum_object_size</a></h3>
1367 <p>Questa direttiva imposta la dimensione massima degli
1368 oggetti che vengono slvati sul supporto di storaggio,
1369 oggetti di dimensioni superiori saranno comunque
1370 scaricati ma non tenuti in cache.</p>
1372 <p>TAG: maximum_object_size (1760):</p>
1373 <pre class="literal-block">
1374 # TAG: maximum_object_size (1760)
1375 # Objects larger than this size will NOT be saved on disk. The
1376 # value is specified in kilobytes, and the default is 4MB. If
1377 # you wish to get a high BYTES hit ratio, you should probably
1378 # increase this (one 32 MB object hit counts for 3200 10KB
1379 # hits). If you wish to increase speed more than your want to
1380 # save bandwidth you should leave this low.
1382 # NOTE: if using the LFUDA replacement policy you should increase
1383 # this value to maximize the byte hit rate improvement of LFUDA!
1384 # See replacement_policy below for a discussion of this policy.
1387 # maximum_object_size 4096 KB
1388 maximum_object_size 150 MB
1392 <div class="section" id="tag-cache-mem">
1393 <h3><a class="toc-backref" href=
1394 "#id20">2.1.3 TAG: cache_mem</a></h3>
1396 <p><em>Cache_mem</em> imposta quanta memoria RAM venga
1397 utilizzata per la cache di Squid. Questo dipendera' dalla
1398 RAM disponibile sul sistema, e da quanta di questa volete
1399 mettere a disposizione di Squid (altri servizi
1400 iimportanti girano sulla stessa macchina?). Questo
1401 paramentro influisce sulle prestazioni e sul degrado dei
1402 supporti di storaggio (sopratutto se magnetici).</p>
1404 <p>Se si stesse pensando di usare dell'hardware
1405 <em>embedded</em> a basse prestazioni / consumo per
1406 realizzare un server gateway / NAT / Squid si tenga
1407 presente che Squid e' relativamente esoso di risorse:
1408 avra' bisogno di una macchina con <tt class=
1409 "docutils literal"><span class="pre">~25MB</span></tt>
1410 (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1411 servire decorosamente una decina di client http su una
1412 rete ethernet 10/100. In questo caso non fate scendere
1413 <tt class="docutils literal"><span class=
1414 "pre">cache_mem</span></tt> sotto i <tt class=
1415 "docutils literal"><span class="pre">2/4</span>
1416 <span class="pre">MB</span></tt> pena un accesso continuo
1417 al supporto di storaggio.</p>
1419 <p>Se invece si disponesse di una macchina dedicata a
1420 Squid con gigabytes di RAM non si esiti a dedicarne buona
1421 parte a <em>cache_mem</em>.</p>
1423 <p>TAG: cache_mem (1566):</p>
1424 <pre class="literal-block">
1425 # 'cache_mem' specifies the ideal amount of memory to be used
1427 # * In-Transit objects
1429 # * Negative-Cached objects
1436 <div class="section" id="tag-minimum-object-size">
1437 <h3><a class="toc-backref" href=
1438 "#id21">2.1.4 TAG:
1439 minimum_object_size</a></h3>
1441 <p>Questo parametro imposta la dimensione minima degli
1442 oggetti salvati nella cache. Settato a <tt class=
1443 "docutils literal"><span class="pre">0</span></tt> o a
1444 valori molto piccoli puo' influire negativamente sulla
1445 deframmentazione del filesytem e consumare un numero
1446 elevato di <em>inode</em> (cosa non piu' importante con
1447 ext4 o altri filesytem).</p>
1449 <p>TAG: minimum_object_size:</p>
1450 <pre class="literal-block">
1451 # TAG: minimum_object_size (bytes)
1452 # Objects smaller than this size will NOT be saved on disk. The
1453 # value is specified in kilobytes, and the default is 0 KB, which
1454 # means there is no minimum.
1457 # minimum_object_size 0 KB
1458 minimum_object_size 0 KB
1463 <div class="section" id=
1464 "negoziazione-degli-accesi-al-servizio">
1465 <h2><a class="toc-backref" href=
1466 "#id22">2.2 Negoziazione degli accesi al
1469 <p>Squid e' uno di quei servizi soggetto a problemi di tipo
1470 <em>open relay</em> , si deve quindi limitare la rete che
1471 puo' accedere al servizio.</p>
1473 <dl class="docutils">
1474 <dt>Open Relay:</dt>
1476 <dd>Un servizio a cui possono accedere tutti
1477 indiscriminatamente. La cosa puo' andare bene per servizi
1478 come i server web, che aspirano per loro natura al
1479 maggior numero possibile di utenti, ma non a servizi come
1480 i proxy http oppure ai server di posta elettronica (che
1481 permetterebbero l'invio di SPAM).</dd>
1484 <p>Generalmente non volete che il vostro proxy http venga
1485 usato da persone sconosciute le quali sostanzialmente
1486 <em>navigherebbero sotto l'identita' del vostro proxy</em>
1487 (probabilmente per visionare materiali che non vorrebbero
1488 fossero ricondotti direttamente a loro, per motivi che sta
1489 a voi prendere in considerazione) consumando traffico e
1490 banda della vostra connessione a internet. Tenere Squid in
1491 modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1492 modo per essere inseriti in una <em>black list</em>.</p>
1494 <p>Per poter limitare gli accessi a Squid dal punto di
1495 vista dell'applicazione (quarto livello TCP/IP) si
1496 identifichera' inizialmente l'entita' <em>rete locale</em>
1497 (es: <tt class="docutils literal"><span class=
1498 "pre">localnet</span></tt>) con una ACL di tipo
1499 <em>src</em> (indirizi IP sorgenti) indicando la <em>classe
1500 / range di ip</em> della nostra rete.</p>
1503 Dopodiche l'accesso (<tt class=
1504 "docutils literal"><span class=
1505 "pre">http_access</span></tt>) si concedera'
1506 (<em>allow</em>) a questa entita' (es: <tt class=
1507 "docutils literal"><span class=
1508 "pre">localnet</span></tt>) negando chiunque altro.
1511 <p>Per maggiori dettagli sulla sintassi utilizzabile per
1512 esprimere i range di ip: <a class="reference external"
1513 href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1514 http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1516 <div class="section" id="acl-e-http-access">
1517 <h3><a class="toc-backref" href=
1518 "#id23">2.2.1 ACL e http access</a></h3>
1520 <p>Si proceda a creare una <tt class=
1521 "docutils literal"><span class="pre">ACL</span></tt> di
1522 tipo <tt class="docutils literal"><span class=
1523 "pre">src</span></tt> per identificare la lostra rete
1524 locale, poi si abiliti l'accesso a questa con la
1525 direttiva <tt class="docutils literal"><span class=
1526 "pre">http_access</span></tt>. Tutto quanto non e'
1527 espressamente autorizzato viene poi negato da un
1528 <tt class="docutils literal"><span class=
1529 "pre">http_access</span> <span class="pre">deny</span>
1530 <span class="pre">all</span></tt> finale.</p>
1531 <pre class="literal-block">
1533 # Defining an Access List
1535 # Every access list definition must begin with an aclname and acltype,
1536 # followed by either type-specific arguments or a quoted filename that
1537 # they are read from.
1539 # ***** ACL TYPES AVAILABLE *****
1541 # acl aclname src ip-address/netmask ... # clients IP address
1544 # Example rule allowing access from your local networks.
1545 # Adapt to list your (internal) IP networks from where browsing
1547 #acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
1548 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1549 #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
1551 acl localnet src 10.10.208.0/24
1555 # Allowing or Denying access based on defined access lists
1557 # Access to the HTTP port:
1558 # http_access allow|deny [!]aclname ...
1560 # NOTE on default values:
1562 # If there are no "access" lines present, the default is to deny
1566 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1568 # Example rule allowing access from your local networks.
1569 # Adapt localnet in the ACL section to list your (internal) IP networks
1570 # from where browsing should be allowed
1571 #http_access allow localnet
1572 http_access allow localnet
1577 <div class="section" id="testare-squid">
1578 <h2><a class="toc-backref" href=
1579 "#id24">2.3 Testare Squid</a></h2>
1581 <p>Configurato squid e' fondamentale testarne il corretto
1582 funzionamento per assicurarsi di non aver creato un
1583 <em>open-relay</em>. Per fare dei test significativi serve
1584 utilizzare degli host remoti: ci si connetta via ssh a
1585 questi per poi utilizzare <tt class=
1586 "docutils literal"><span class="pre">wget</span></tt> da
1587 riga di comando.</p>
1589 <div class="section" id="client-wgetrc">
1590 <h3><a class="toc-backref" href=
1591 "#id25">2.3.1 Client: ~/.wgetrc</a></h3>
1593 <p>Nel file <tt class="docutils literal"><span class=
1594 "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
1595 un file nascosto) si puo' impostare il proxy per wget. Si
1596 utililizzi l'indirizzo ip del server che si vuole
1597 testare, e si seguano i log <tt class=
1598 "docutils literal"><span class=
1599 "pre">/var/log/squid3/access.log</span></tt> sul
1602 <p>Da notare che la prova va' fatta su una macchina della
1603 rete che si vuole testare, non da <em>localhost</em>. Per
1604 altro se si utilizzasse <em>direttamente</em> <tt class=
1605 "docutils literal"><span class=
1606 "pre">localhost</span></tt> non si testerebbe la
1607 <em>ACL</em> predisposta, dato che si si rientrerebbe
1608 nella ACL (pre-configurata di default) <tt class=
1609 "docutils literal"><span class=
1610 "pre">localhost</span></tt>.</p>
1612 <dl class="docutils">
1615 <dd>http_proxy=10.10.208.178:3128</dd>
1618 <p>Si proceda a scaricare dal client scelto con un
1620 <pre class="literal-block">
1621 wget http://www.google.it
1625 <div class="section" id="server-access-log">
1626 <h3><a class="toc-backref" href=
1627 "#id26">2.3.2 Server:
1630 <p>Si puo' controllare il corretto funzionamento del
1631 server seguendo i log di accesso a Squid:</p>
1632 <pre class="literal-block">
1633 # tail -f /var/log/squid3/access.log
1636 <p>In oltre e' possibile configurare diversi
1637 <em>analizzatori di log</em> come <tt class=
1638 "docutils literal"><span class=
1639 "pre">Webalizer</span></tt> per studiare i log di
1645 <div class="section" id="apache">
1646 <h1><a class="toc-backref" href=
1647 "#id27">3 Apache</a></h1>
1649 <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
1650 dato alla piattaforma server Web modulare piu' diffusa (ma
1651 anche al gruppo di lavoro open source che ha creato,
1652 sviluppato e aggiornato il software server), in grado di
1653 operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1655 <p>Un server web e' un processo, e per estensione il computer
1656 su cui e' in esecuzione, che si occupa di fornire, su
1657 richiesta del browser, una pagina web (spesso scritta in
1658 HTML). Le informazioni inviate dal server web viaggiano in
1659 rete trasportate dal protocollo HTTP. L'insieme di server web
1660 dà vita al World Wide Web, uno dei servizi piu'
1661 utilizzati di Internet.</p>
1663 <div class="section" id="pacchetti-da-installare">
1664 <h2><a class="toc-backref" href=
1665 "#id28">3.1 Pacchetti da
1666 installare::</a></h2>
1672 <p>Con la release 2.0 di Apache viene automaticamente resa
1673 disponibile anche la versione SSL (Secure Socket Layer,
1674 cpnnessioni criptate ) del web server.</p>
1677 <div class="section" id="configurazione-di-apache">
1678 <h2><a class="toc-backref" href=
1679 "#id29">3.2 Configurazione di
1682 <p>I file di configurazione di apache si trovano nella
1683 cartella: <tt class="docutils literal"><span class=
1684 "pre">/etc/apache2</span></tt> e sono strutturati come
1685 descritto nel file <tt class=
1686 "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
1687 . Sostanzialmente lo schema e' il seguente:</p>
1689 <dl class="docutils">
1690 <dt>apache2.conf</dt>
1693 <p class="first">File di configurazione principale del
1696 <p class="last">httpd.conf e' il vecchio file di
1697 configurazione di Apache1, presente per motivi di
1698 retrocompatibilita' e' generalemente vuoto.</p>
1703 <dd>In questo file vengono specificate le porte sulle
1704 quali resta in ascolto il server web. Si noti che
1705 utilizzando dei virtual hosts generalmente viene
1706 specificata per questi la porta su cui ascoltare nel file
1707 di configurazione del virtual host, ad es: <tt class=
1708 "docutils literal"><span class=
1709 "pre"><VirtualHost</span> <span class=
1710 "pre">*:80></span></tt></dd>
1712 <dt>sites-available</dt>
1714 <dd>In questa cartella vengono raccolti i file di
1715 configurazione dei virtual host disponibili.</dd>
1717 <dt>sites-enabled</dt>
1719 <dd>In questa cartella sono contenuti dei link simbolici
1720 ai files in ../sites-available : se il link e' presente
1721 in questa cartella il virtual host e' abilitato.</dd>
1723 <dt>mods-available</dt>
1725 <dd>Stesso metodo per i moduli: in questa cartella ci
1726 sono i moduli veri e propri che verranno poi abilitati
1727 grazie all'esistenza di link simbolici nella cartella
1730 <dt>mods-enabled</dt>
1732 <dd>Moduli abilitati, effettivamente caricati.</dd>
1736 <div class="section" id="apache-conf">
1737 <h2><a class="toc-backref" href=
1738 "#id30">3.3 apache.conf</a></h2>
1740 <p>File di configurazione del servizio Apache, contiene le
1741 impostazioni generiche (ad esempio utilizzo della RAM e
1742 risorse di sistema) dell'intero servizio. Nella
1743 configurazione di default per Debian non viene definito un
1744 vero e proprio sito di default ma solo dei virtual
1747 <p>Guardiamo alcune direttive interessanti:</p>
1749 <dl class="docutils">
1752 <dd>Numero di secondi da aspettare prima di chiudere la
1753 connessione con il client. Questo parametro serve a
1754 liberare le risorse di sistema nel caso che un client,
1755 magar a causa di una connessione particolarmente lenta o
1756 instabili, tenga attivo indefinitivamente un processo di
1761 <dd>L'estensione keep-alive (http 1.0) congiuntamente
1762 alle connessioni persistenti (http 1.1) permettono al
1763 server di rispondere a piu' richieste dei client mediante
1764 la stessa connessione. Il protocoll http per sua natura
1765 e' senza stato (<em>statelessi</em> ), quindi ogni
1766 risorsa richiesta (per pagine web si pensi ad esempio
1767 alle immagini) dal client necessita di una connessione
1768 autonoma. Keep-alive permette di ottimizzare la
1769 connessione anche fino al 50% a seconda delle situazioni
1772 <dt>Server-Pool Size Regulation</dt>
1774 <dd>Questi parametri (StartServers, MinSpareServers, ecc.
1775 Tutti spiegati nel manuale di apache) servono per
1776 attribuire le risorse di sistema disponibili al server
1777 Apache. Tenere questi parametri bassi serve a limitare il
1778 rischio di Denial of Service per il server, nel caso
1779 offra altri servizi. I settagi di default sono come
1780 sempre abbastanza conservativi, se si conta di usare il
1781 proprio Apache per servire un sito web con molti
1782 visitatori sara' necessario aumentare sensibilmente le
1783 impostazioni di base.</dd>
1785 <dt>AccessFileName</dt>
1787 <dd>Il nome del file che viene onorato per modificare le
1788 impostazioni per una singola directory, legato alla
1789 direttiva AllowOverride .</dd>
1793 <div class="section" id="installazione-di-php">
1794 <h2><a class="toc-backref" href=
1795 "#id31">3.4 Installazione di PHP</a></h2>
1797 <p>Pacchetti da installare: <tt class=
1798 "docutils literal"><span class="pre">php5</span>
1799 <span class="pre">php-pear</span></tt></p>
1801 <div class="section" id="test-del-modulo-php">
1802 <h3><a class="toc-backref" href=
1803 "#id32">3.4.1 Test del modulo
1806 <p>Creare nella cartella <tt class=
1807 "docutils literal"><span class="pre">/var/www</span></tt>
1808 (o altra cartella visibile) un file con estensione *.php
1809 (es <tt class="docutils literal"><span class=
1810 "pre">/var/ww/info.php</span></tt> contenete codice php
1811 eseguibile dall'interprete, ad es:</p>
1812 <pre class="literal-block">
1813 <?php phpinfo() ; ?>
1816 <p>Questa funzione di php generera' la tipica pagina con
1817 le impostazioni attuali per PHP. Richiamando la pagina
1818 (es: <tt class="docutils literal"><span class=
1819 "pre">http://localhost/info.php</span></tt> ) verra
1820 generata dall'interprete PHP la pagina HTML e resa
1821 disponibile tramite Apache ai utclient HTTP, a prova del
1822 correto funzionamento del modulo di PHP e della sua
1823 integrazione con il serv web Apache. In caso contrario se
1824 il client http proporra di scaricare la pagina invece che
1825 visualizzarla nel browser: non funziona l'interprete di
1826 php o sono mal configurati i MIME-type. prima di tutto
1827 assicurarsi di aver fatoo ripartire Apache.</p>
1830 <div class="section" id=
1831 "installazione-del-supporto-per-mysql">
1832 <h3><a class="toc-backref" href=
1833 "#id33">3.4.2 Installazione del supporto
1836 <p>Installare i pacchetti:</p>
1837 <pre class="literal-block">
1838 php5-mysql phpmyadmin
1841 <p>Controllare tramite la pagina php.info che sia
1842 abilitato il supporto per Mysql (ripartito Apache,
1843 ricaricare la pagina e cercare con CTRL+f <tt class=
1844 "docutils literal"><span class=
1845 "pre">mysql</span></tt>).</p>
1848 <div class="section" id="phpmyadmin">
1849 <h3><a class="toc-backref" href=
1850 "#id34">3.4.3 phpmyadmin</a></h3>
1852 <p>L'interfaccia web Phpmyadmin non richede
1853 necessariamente la presenza di un database Mysql locale,
1854 puo' infatti essere utilizzata per gestire databases
1855 remoti (il suo file di configurazione: <tt class=
1856 "docutils literal"><span class=
1857 "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
1858 caso si voglia installare localmente Mysql si utilizzi il
1859 pacchetto <tt class="docutils literal"><span class=
1860 "pre">mysql-server</span></tt> .</p>
1862 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
1863 <tt class="docutils literal"><span class=
1864 "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
1865 non fosse controllare che sia incluso il file <tt class=
1866 "docutils literal"><span class=
1867 "pre">/etc/phpmyadmin/apache.conf</span></tt> in
1868 <tt class="docutils literal"><span class=
1869 "pre">/etc/apache2/conf.d/</span></tt> .</p>
1872 <div class="section" id=
1873 "installazione-del-supporto-per-postgresql">
1874 <h3><a class="toc-backref" href=
1875 "#id35">3.4.4 Installazione del supporto
1876 per Postgresql</a></h3>
1878 <p>Installare i pacchetti:</p>
1879 <pre class="literal-block">
1880 php5-pgsql phppgadmin
1883 <p>Controllare tramite la pagina php.info che sia
1884 abilitato il supporto per PostgreSQL (ripartito Apache,
1885 ricaricare la pagina e cercare con CTRL+f <tt class=
1886 "docutils literal"><span class=
1887 "pre">pgsql</span></tt>).</p>
1890 <div class="section" id="phppgadmin">
1891 <h3><a class="toc-backref" href=
1892 "#id36">3.4.5 phppgadmin</a></h3>
1894 <p>L'interfaccia web Phppgadmin per il database server
1895 PostgreSQL non richede necessariamente la presenza di un
1896 database locale, puo' infatti essere utilizzata per
1897 gestire databases remoti (il suo file di configurazione:
1898 <tt class="docutils literal"><span class=
1899 "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
1900 caso si voglia installare localmente Mysql si utilizzi il
1901 pacchetto <tt class="docutils literal"><span class=
1902 "pre">postgresql</span></tt> .</p>
1904 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
1905 <tt class="docutils literal"><span class=
1906 "pre">http://localhost/phppgadmin/</span></tt>, se cosi
1907 non fosse controllare che sia incluso il file <tt class=
1908 "docutils literal"><span class=
1909 "pre">/etc/phppgadmin/apache.conf</span></tt> in
1910 <tt class="docutils literal"><span class=
1911 "pre">/etc/apache2/conf.d/</span></tt> .</p>
1915 <div class="section" id="virtual-hosts">
1916 <h2><a class="toc-backref" href=
1917 "#id37">3.5 Virtual hosts</a></h2>
1921 <li><a class="reference external" href=
1922 "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
1924 <li><a class="reference external" href=
1925 "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
1926 http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
1930 <p>I virtual host permettono di avere piu' siti internet
1931 disponibili tramite lo stesso server web, eventualmente
1932 mappati su un solo indirizzo ip. Sono generalemente di due
1937 <li>Basati su <em>indirizzi ip</em>. Se si ha la
1938 possibilita' di avere piu' indirizzi ip dedicati per i
1939 diversi siti che si vuole servire. ES: <tt class=
1940 "docutils literal"><span class=
1941 "pre"><VirtualHost</span> <span class=
1942 "pre">192.168.0.2:80></span></tt> . Soluzione
1943 dispendiosa, si tende ad usarla solo se servono
1944 certificati di sicurezza (SSL ) dedicati per ogni
1947 <li>Basati su <em>nomi di dominio</em> che puntano allo
1948 stesso ip. Soluzione piu' economica e diffusa che si
1949 basa sulle funzionalita' di http 1.1 .</li>
1953 <p>Prenderemo in esame la gestione di virtual hosts basati
1954 su nomi di dominio.</p>
1956 <div class="section" id="gestione-dns">
1957 <h3><a class="toc-backref" href=
1958 "#id38">3.5.1 Gestione DNS</a></h3>
1960 <p>Prima di tutto per poter impostare i virtual hosts
1961 dovete avere un server DNS che risolva i vostri nomi di
1962 dominio sull'indirizzo ip del server. Questo si puo'
1963 ottenere in vari modi, ad es:</p>
1966 <dl class="docutils">
1967 <dt><em>Bind</em> (DNS server)</dt>
1969 <dd>Impostare i campi A nelle proprie zone gestite
1970 dal server dns Bind. Ad es: <tt class=
1971 "docutils literal"><span class=
1972 "pre">papo</span>
1974 "pre">A</span>
1975 <span class="pre">212.22.136.248</span></tt></dd>
1977 <dt><em>Servizio DNS dinamico on line</em>.</dt>
1979 <dd>Utilizzare un servizio come ad es: <a class=
1980 "reference external" href=
1981 "https://www.dyndns.com/">https://www.dyndns.com/</a>
1982 per mappare nomi di dominio sul proprio indirizzo ip,
1983 comodo ad esempio se si dispone di un indirzzo ip
1984 pubblico (anche se dinamico) per la propria
1985 connessione ad internet.</dd>
1987 <dt><em>Dnsmasq</em> (DNS server)</dt>
1989 <dd>Utilizzabile a livello locale per fare dei test,
1990 utilizzando direttive come: <tt class=
1991 "docutils literal"><span class=
1992 "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
1994 <dt><tt class="docutils literal"><span class=
1995 "pre">/etc/hosts</span></tt></dt>
1997 <dd>Per prove <em>strettamente a livello locale</em>
1998 potete impostare i nomi dei vostri virtual server nel
1999 file /etc/hosts .</dd>
2002 <pre class="literal-block">
2005 ; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
2006 ;; global options: printcmd
2008 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
2009 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
2011 ;; QUESTION SECTION:
2012 ;177.piffa.net. IN A
2015 177.piffa.net. 0 IN A 10.10.208.177
2017 ;; Query time: 12 msec
2018 ;; SERVER: 10.10.208.254#53(10.10.208.254)
2019 ;; WHEN: Wed May 6 12:27:08 2009
2020 ;; MSG SIZE rcvd: 47
2023 <p>La parte interessante e' <tt class=
2024 "docutils literal"><span class=
2025 "pre">177.piffa.net.</span>
2027 "pre">0</span>
2028 <span class="pre">IN</span>
2030 "pre">A</span>
2031 <span class="pre">10.10.208.177</span></tt> . Il nome di
2032 dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2033 , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2034 dovra' essere disponibile un virtual host che corrisponde
2035 al nome <tt class="docutils literal"><span class=
2036 "pre">177.piffa.net</span></tt> .</p>
2039 <div class="section" id="virtual-host">
2040 <h3><a class="toc-backref" href=
2041 "#id39">3.5.2 Virtual host</a></h3>
2043 <p>Esempio di Virtual host:</p>
2044 <pre class="literal-block">
2045 <VirtualHost *:80 >
2046 ServerName 177.piffa.net
2047 DocumentRoot /var/www/177.piffa.net/
2048 ServerAdmin webmaster@177.piffa.net
2049 </VirtualHost>
2052 <ol class="arabic simple">
2053 <li><tt class="docutils literal"><span class=
2054 "pre"><VirtualHost</span> <span class=
2055 "pre">\*:80</span> <span class="pre">></span></tt>
2056 La prima riga indica l'inizio della stanza relativa al
2057 nostro virtual host, che ascolotera' su qualunque
2058 indirizzo ip (nel caso il server abbia piu' indirizzi
2059 dai quali e' raggiungibile) sulla porta <tt class=
2060 "docutils literal"><span class=
2061 "pre">80</span></tt>.</li>
2063 <li><tt class="docutils literal"><span class=
2064 "pre">Server/name</span></tt> precisa quale sara' il
2065 nome di dominio a cui verra' associato questo sito
2066 rispetto ad altri eventualmenti presenti sullo stesso
2069 <li><tt class="docutils literal"><span class=
2070 "pre">DocumentRoot</span></tt> : il path della
2071 directory che contiene le pagine del sito.</li>
2073 <li><tt class="docutils literal"><span class=
2074 "pre">ServerAdmin</span></tt>: l'indirizzo del
2075 webmaster, in modo da poterlo contattare in caso di
2076 problemi col sito.</li>
2078 <li><tt class="docutils literal"><span class=
2079 "pre"></VirtualHost></span></tt>: <em>tag</em> di
2080 chiusura della stanza di definizione del virtual
2084 <p>Quelle che abbiamo appena visto sono le direttive
2085 essenziali per definire un sito virtuale, potrebbe essere
2086 utile aggiungene altre:</p>
2090 <dl class="first docutils">
2091 <dt><tt class="docutils literal"><span class=
2092 "pre">ErrorLog</span> <span class=
2093 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2096 <p class="first last">Log degli errori separato
2097 dai restanti siti web ospitati dal server.</p>
2103 <dl class="first docutils">
2104 <dt><tt class="docutils literal"><span class=
2105 "pre">LogLevel</span> <span class=
2106 "pre">warn</span></tt></dt>
2109 <p class="first last">Livello di importanza degli
2110 eventi loggati= warning <em>attenzione</em> .</p>
2116 <dl class="first docutils">
2117 <dt><tt class="docutils literal"><span class=
2118 "pre">CustomLog</span> <span class=
2119 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2120 <span class="pre">combined</span></tt></dt>
2123 <p class="first last">Log di accesso separati
2124 dagli altri siti, utile anche qua per statistiche
2125 di accesso per il solo sito virtuale.</p>
2131 <p>Potrebbe essere utile modificare le impostazioni di
2132 una intera directory, ad esempio per abilitare
2133 l'<tt class="docutils literal"><span class=
2134 "pre">AuthConfig</span></tt>:</p>
2135 <pre class="literal-block">
2136 <Directory "/var/www/miosito.net/privata">
2137 AllowOverride AuthConfig
2138 Options ExecCGI Indexes MultiViews FollowSymLinks
2144 <p><tt class="docutils literal"><span class=
2145 "pre">AllowOverride</span> <span class=
2146 "pre">AuthConfig</span></tt> ora vale per l'intera
2147 directory, come le altre opzioni.</p>
2151 <div class="section" id="negoziazione-accessi">
2152 <h2><a class="toc-backref" href=
2153 "#id40">3.6 Negoziazione accessi</a></h2>
2155 <p>Tipicamente quando si installa un server web il proprio
2156 desiderio e' di dare accesso ai materiali disponibili al
2157 maggior numero di visitatori possibile. Talvolta pero' puo
2158 essere utile o necessario limitare gli accessi, ad esempio
2159 per escludere un <em>bot</em> indesiderato che scansiona
2160 ininterottamente le nostre pagine o per creare una <em>Area
2161 Riservata</em> i cui materiali non devono essere
2162 disponibile a tutti.</p>
2164 <div class="section" id="limiti-su-base-ip">
2165 <h3><a class="toc-backref" href=
2166 "#id41">3.6.1 Limiti su base ip</a></h3>
2168 <p>La forma piu' semplice di restrizine degli accessi e'
2169 su base degli indirizzi IP dei client: tipicamente i siti
2170 web sono settati per dare accesso a chiunque:</p>
2171 <pre class="literal-block">
2172 <VirtualHost *:80 >
2174 <Directory "/var/www/177.piffa.net">
2178 </VirtualHost>
2181 <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2183 <pre class="literal-block">
2184 <VirtualHost *:80 >
2185 <Directory "/var/www/177.piffa.net">
2188 Deny from 192.168.0.1
2190 </VirtualHost>
2193 <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2194 materiali dell'intero sito virtuale, oppure potremmo
2195 lavorare su una sola directory:</p>
2196 <pre class="literal-block">
2197 <Directory "/var/www/miosito.net/limitata">
2199 Allow from 192.168.0.0./24
2204 <p>In questo modo solo la classe IP <tt class=
2205 "docutils literal"><span class=
2206 "pre">192.168.0.0/24</span></tt> potra' accedere alla
2207 directory <tt class="docutils literal"><span class=
2208 "pre">/limitata</span></tt> Si tenga pero' conto che e'
2209 relativamente facile per un malintenzionato cambiare il
2210 propio indirizzo ip, oppure collegarsi da un altra zona.
2211 Meno facile e' accedere ad una classe privata trovandosi
2212 all'esterno di questa, ma e' comunque possibile mandare
2213 delle richieste <tt class="docutils literal"><span class=
2214 "pre">GET</span></tt> per cercare di mandare in Denial Of
2215 Service il webserver.</p>
2219 <div class="section" id="user-authentication">
2220 <h2><a class="toc-backref" href=
2221 "#id42">3.7 User Authentication</a></h2>
2223 <p>A volte conviene negoziare gli accessi ad un area di un
2224 sito tramite autenticazione basata sull'accopiata <em>nome
2225 utente / password</em>. Questo puo' venire utile per creare
2226 una area download <em>intranet</em>, alla quale possano
2227 accedere solo gli utenti previsti a prescindere dagli
2228 indirizzi IP dei loro client. Per quanto esistano soluzioni
2229 piu' granulari e sofisticate per ottenere questo,
2230 <em>mod-auth</em> puo'essere sufficente. E mod auth non
2231 richiede l'installazione di software aggiuntivi.</p>
2233 <p>link: <a class="reference external" href=
2234 "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2236 <div class="section" id="definire-la-cartella">
2237 <h3><a class="toc-backref" href=
2238 "#id43">3.7.1 Definire la
2241 <p>Decidere quale sara' il <em>path</em> della cartella
2242 da sottoporre ad autentizazione:(e creiamo la
2246 <tt class="docutils literal"><span class=
2247 "pre">mkdir</span> <span class=
2248 "pre">/var/www/177.piffa.net/privata</span></tt>
2252 <div class="section" id=
2253 "creazione-del-database-delle-passwords">
2254 <h3><a class="toc-backref" href=
2255 "#id44">3.7.2 Creazione del database
2256 delle passwords</a></h3>
2258 <p>Un modo semplice per gestire una database di
2259 <em>user-id / passwords</em> e' utilizzare l'utility
2260 <tt class="docutils literal"><span class=
2261 "pre">htpasswd</span></tt> di Apache. Questa crea un file
2262 in cui un <em>crypt</em> delle password viene associato
2265 <p>Si dovra' decidere dove tenere questo file, la cosa
2266 importante e' che non sia visibile nel sito web: non deve
2267 essere scaricabile dai visitatori. Deve essere cioe'
2268 all'esterno della <em>DocumentRoot</em>: un buon posto
2269 potrebbe essere la /home dell'utente.</p>
2271 <p>Creiamo (con il <em>flag</em> <tt class=
2272 "docutils literal"><span class="pre">-c</span></tt>) il
2273 file <tt class="docutils literal"><span class=
2274 "pre">/home/utente/passwords</span></tt> con l'utente
2275 <tt class="docutils literal"><span class=
2276 "pre">luca</span></tt>:</p>
2277 <pre class="literal-block">
2278 htpasswd -c /home/utente/passwords luca
2281 <p><tt class="docutils literal"><span class=
2282 "pre">htpasswd</span></tt> ci chedera' la password da
2283 associare all'utente <tt class=
2284 "docutils literal"><span class="pre">luca</span></tt>.
2285 Per sucessive modifiche della password o aggiunta di
2286 nuovi utenti non sara' necessario usare il flag
2287 <tt class="docutils literal"><span class=
2288 "pre">-c</span></tt>.</p>
2291 <div class="section" id="id3">
2292 <h3><a class="toc-backref" href=
2293 "#id45">3.7.3 Configurazione di
2296 <p>Ora possiamo passare alla configurazione vera e
2297 propria di Apache, ma con una novita': andremo a inserire
2298 la voce in un <tt class="docutils literal"><span class=
2299 "pre">.htaccess</span></tt> invece che modificare il file
2300 di impostazione del virtual-host.</p>
2302 <p>Questo per motivi pratici: solo l'utente <em>root</em>
2303 puo' modificare l'impostazione del virtual host nel file
2304 <tt class="docutils literal"><span class=
2305 "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2306 ma spesso il motivo per cui creiamo i virtual hosts e'
2307 ospitare i siti di altri utenti, che possono solo
2308 pubblicare (generalmente tramite <em>FTP</em>) i loro
2309 documenti nella loro <em>DocumentRoot</em>, senza poter
2310 quindi modificare in alcun modo la configurazione del
2313 <p>Dando agli utenti la possibilita' di modificare
2314 (<em>AllowOverride</em>) autonomamente alcuni parametri
2315 (in questo caso solo l'<em>AuthConfig</em>) relativi al
2316 funzionamenteo del loro spazio web ci togliera'
2317 l'incombenza di dover intervenire suii vari virtual
2320 <p>Abilitiamo l'AllowOverride nel file di configurazione
2321 del virtual host per la sola directory <tt class=
2322 "docutils literal"><span class=
2323 "pre">privata</span></tt>:</p>
2324 <pre class="literal-block">
2325 <VirtualHost *:80 >
2326 ServerName 177.piffa.net
2327 DocumentRoot /var/www/177.piffa.net/
2328 ServerAdmin webmaster@177.piffa.net
2329 <Directory "/var/www/177.piffa.net/privata">
2330 AllowOverride AuthConfig
2332 </VirtualHost>
2335 <p>Per rendere il cambiamento effettivo sara' necessario
2336 fare un restart / reload di Apache.</p>
2338 <p>Ora sara' possibile, anche per l'utente di sistema,
2339 creare un fie <tt class="docutils literal"><span class=
2340 "pre">.htaccess</span></tt> che sara' onorato da
2343 <p>/var/www/177.piffa.net/privata/.htaccess</p>
2344 <pre class="literal-block">
2345 # Questo file viene incluso
2346 # nella configurazione del sito web
2347 # Messaggio visualizzato al prompt per l'autenticazione
2348 AuthName "Area privata soggetta ad autentizazione"
2349 # tipo di autenticazione da usarsi
2351 # File generato precedentemente con htpasswd
2352 AuthUserFile /home/utente/passwords
2354 # Negoziazione degli accessi
2355 # valid users permette l'accesso agli utenti specificati
2356 # nel file generato da htpasswd
2360 <p>Si noti che non e' necessario fare ripartire Apache
2361 per onorare i cambiamenti (un utente non avrebbe la
2362 possibilita' di farlo!).</p>
2366 <div class="section" id="cavets">
2367 <h2><a class="toc-backref" href=
2368 "#id46">3.8 Cavets</a></h2>
2370 <p>Problemi di cache:</p>
2374 <li>Proxy: nei settaggi del browser specificare di non
2375 utilizzare un server proxy http per il sito web locale
2376 (o per gli altri che si stanno monitorando). Se si ha
2377 il controllo del proxy server: stopparlo, ricaricare la
2378 pagina (operazione che fallira'), far ripartire il
2379 proxy, ricaricare la pagina.</li>
2381 <li>Provare con un altro browser, o cercare di svuotare
2382 la cache chiudere/riaprire l'applicativo. Provare a
2383 fermare Apache, ricaricare la pagina (operazione che
2384 fallira'), far ripartire Apache, ricaricare la
2391 <div class="section" id="domain-name-system">
2392 <h1><a class="toc-backref" href=
2393 "#id47">4 Domain Name System</a></h1>
2395 <p>Domain Name System (spesso indicato con DNS) e' un
2396 servizio utilizzato per la risoluzione di nomi di host in
2397 indirizzi IP e viceversa. Il servizio e' realizzato tramite
2398 un database distribuito, costituito dai server DNS.</p>
2400 <p>Il nome DNS denota anche il protocollo che regola il
2401 funzionamento del servizio, i programmi che lo implementano,
2402 i server su cui questi girano, l'insieme di questi server che
2403 cooperano per fornire il servizio.</p>
2405 <p>I nomi DNS, o "nomi di dominio", sono una delle
2406 caratteristiche piu' visibili di Internet.</p>
2408 <p>C'e' confusione in merito alla definizione dell'acronimo:
2409 la S spesso viene interpretata come service, ma la
2410 definizione corretta e' system.</p>
2412 <p>L'operazione di convertire un nome in un indirizzo e'
2413 detta risoluzione DNS, convertire un indirizzo IP in nome e'
2414 detto risoluzione inversa.</p>
2416 <div class="section" id="nomi-di-dominio">
2417 <h2><a class="toc-backref" href=
2418 "#id48">4.1 Nomi di dominio</a></h2>
2420 <p>Un nome a dominio e' costituito da una serie di stringhe
2421 separate da punti, ad esempio it.wikipedia.org. A
2422 differenza degli indirizzi IP, dove la parte piu'
2423 importante del numero e' la prima partendo da sinistra, in
2424 un nome DNS la parte piu' importante e' la prima partendo
2425 da destra. Questa e' detta dominio di primo livello (o TLD,
2426 Top Level Domain), per esempio .org o .it.</p>
2428 <p>Un dominio di secondo livello consiste in due parti, per
2429 esempio wikipedia.org, e cosi' via. Ogni ulteriore elemento
2430 specifica un'ulteriore suddivisione. Quando un dominio di
2431 secondo livello viene registrato all'assegnatario, questo
2432 e' autorizzato a usare i nomi di dominio relativi ai
2433 successivi livelli come it.wikipedia.org (dominio di terzo
2434 livello) e altri come some.other.stuff.wikipedia.org
2435 (dominio di quinto livello) e cosi' via.</p>
2438 <div class="section" id="tipologie-di-record">
2439 <h2><a class="toc-backref" href=
2440 "#id49">4.2 Tipologie di record</a></h2>
2442 <p>Ad un nome DNS possono corrispondere diversi tipi di
2443 informazioni. Per questo motivo, esistono diversi tipi di
2444 record DNS. Ogni voce del database DNS deve essere
2445 caratterizzata da un tipo. I principali tipi sono:</p>
2448 <li>Record A - Indica la corrispondenza tra un nome ed
2449 uno (o piu') indirizzi IP (per la precisione indirizzi
2450 IPv4, ovvero la versione attualmente in uso).</li>
2452 <li>Record MX - (Mail eXchange) indica a quali server
2453 debba essere inviata la posta elettronica per un certo
2456 <li>Record CNAME - Sono usati per creare un alias, ovvero
2457 per fare in modo che lo stesso calcolatore sia noto con
2458 piu' nomi. Uno degli utilizzi di questo tipo di record
2459 consiste nell'attribuire ad un host che offre piu'
2460 servizi un nome per ciascun servizio. In questo modo, i
2461 servizi possono poi essere spostati su altri host senza
2462 dover riconfigurare i client, ma modificando solo il
2465 <li>Record PTR - Il DNS viene utilizzato anche per
2466 realizzare la risoluzione inversa, ovvero per far
2467 corrispondere ad un indirizzo IP il corrispondente nome a
2468 dominio. Per questo si usano i record di tipo "PTR" (e
2469 una apposita zona dello spazio dei nomi
2472 <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
2474 <li>Record SRV - Identificano il server per un
2475 determinato servizio all'interno di un dominio. Possono
2476 essere considerati una generalizzazione dei record
2479 <li>Record TXT - Associano campi di testo arbitrari ad un
2480 dominio. Questi campi possono contenere una descrizione
2481 informativa oppure essere utilizzati per realizzare
2485 <p>Vi sono anche tipi di record "di servizio", necessari al
2486 funzionamento del database distribuito: * Record NS -
2487 Utilizzato per indicare quali siano i server DNS
2488 autoritativi per un certo dominio, ovvero per delegarne la
2489 gestione. * Record SOA - (Start of Authority) usato per la
2490 gestione delle zone DNS.</p>
2493 <div class="section" id="utilizzo">
2494 <h2><a class="toc-backref" href=
2495 "#id50">4.3 Utilizzo</a></h2>
2497 <p>I computer vengono identificati in rete grazie agli
2498 indirizzi <em>IP</em>, questi pero' non sono comodi per gli
2499 utenti come riferimento per i vari server. Ad esempio
2500 sarebbe scomodoriferirsi al motore di ricerca Goggle con
2501 uno dei suoi IP: <tt class="docutils literal"><span class=
2502 "pre">74.125.43.104</span></tt>, e' preferibile usare il
2503 nome di dominio <em>www.google.com</em>:</p>
2504 <pre class="literal-block">
2505 ping -c 1 www.google.com
2506 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
2510 <div class="section" id="risoluzione-dei-nomi-di-dominio">
2511 <h2><a class="toc-backref" href=
2512 "#id51">4.4 Risoluzione dei nomi di
2515 <p>Ci sono vari strumenti per interrogare i server DNS e
2516 ottenere l'indirizzo IP associato al nome di dominio che ci
2518 <pre class="literal-block">
2519 $ host www.piffa.net
2520 www.piffa.net is an alias for piffa.net.
2521 piffa.net has address 65.98.21.97
2522 piffa.net mail is handled by 10 65.98.21.97
2525 $ nslookup www.piffa.net
2526 Server: 192.168.0.10
2527 Address: 192.168.0.10#53
2529 Non-authoritative answer:
2530 www.piffa.net canonical name = piffa.net.
2532 Address: 65.98.21.97
2537 ; <<>> DiG 9.6.0-P1 <<>> www.piffa.net
2538 ;; global options: +cmd
2540 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47751
2541 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
2543 ;; QUESTION SECTION:
2544 ;www.piffa.net. IN A
2547 www.piffa.net. 3489 IN CNAME piffa.net.
2548 piffa.net. 3489 IN A 65.98.21.97
2550 ;; AUTHORITY SECTION:
2551 piffa.net. 86289 IN NS ns2.mydomain.com.
2552 piffa.net. 86289 IN NS ns1.mydomain.com.
2553 piffa.net. 86289 IN NS ns4.mydomain.com.
2554 piffa.net. 86289 IN NS ns3.mydomain.com.
2556 ;; ADDITIONAL SECTION:
2557 ns1.mydomain.com. 96208 IN A 64.94.117.193
2558 ns2.mydomain.com. 96208 IN A 64.94.31.67
2559 ns3.mydomain.com. 96208 IN A 66.150.161.137
2560 ns4.mydomain.com. 96208 IN A 63.251.83.74
2562 ;; Query time: 1 msec
2563 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2564 ;; WHEN: Sun May 10 21:23:11 2009
2565 ;; MSG SIZE rcvd: 209
2568 <p>Lo strumento piu' esaustivo e' <tt class=
2569 "docutils literal"><span class="pre">dig</span></tt>,
2570 installabile con il pacchetto <tt class=
2571 "docutils literal"><span class="pre">dnsutils</span></tt>
2575 <div class="section" id="dig">
2576 <h2><a class="toc-backref" href=
2577 "#id52">4.5 Dig</a></h2>
2579 <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
2580 "docutils literal"><span class="pre">dig</span></tt> per
2581 l'inerrogazione dei DNS Server:</p>
2582 <pre class="literal-block">
2585 ; <<>> DiG 9.6.0-P1 <<>> www.google.it
2586 ;; global options: +cmd
2588 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18816
2589 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
2591 ;; QUESTION SECTION:
2592 ;www.google.it. IN A
2595 www.google.it. 250683 IN CNAME www.google.com.
2596 www.google.com. 334819 IN CNAME www.l.google.com.
2597 www.l.google.com. 186 IN A 74.125.43.103
2598 www.l.google.com. 186 IN A 74.125.43.104
2599 www.l.google.com. 186 IN A 74.125.43.147
2600 www.l.google.com. 186 IN A 74.125.43.99
2602 ;; AUTHORITY SECTION:
2603 l.google.com. 80856 IN NS f.l.google.com.
2604 l.google.com. 80856 IN NS d.l.google.com.
2605 l.google.com. 80856 IN NS b.l.google.com.
2606 l.google.com. 80856 IN NS c.l.google.com.
2607 l.google.com. 80856 IN NS a.l.google.com.
2608 l.google.com. 80856 IN NS e.l.google.com.
2609 l.google.com. 80856 IN NS g.l.google.com.
2611 ;; Query time: 1 msec
2612 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2613 ;; WHEN: Sun May 10 21:34:47 2009
2614 ;; MSG SIZE rcvd: 255
2617 <dl class="docutils">
2620 <dd>(semza opzioni o oggetti) Fornisce l'elenco dei
2621 <em>root servers</em> utilizzati. I root server sono i
2622 server che mantengono le informazioni sui domini di primo
2623 livello (TLD) e sono quindi il punto di partenza per
2624 scorrere nella directory dei DNS per recuperare le
2625 informazioni (tipicamente un campo <tt class=
2626 "docutils literal"><span class="pre">A</span></tt> per un
2627 indirizzo IP) che ci servono per raggiungere un certo
2636 <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
2637 . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
2638 B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
2639 192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
2640 F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
2641 192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
2642 K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
2643 192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
2644 J.ROOT-SERVERS.NET. . 192032 IN NS
2645 D.ROOT-SERVERS.NET.</p>
2650 <dl class="docutils">
2651 <dt>dig @nome_dns</dt>
2653 <dd>Permette di fare una query ad un server dns
2654 particolare. Es: <tt class=
2655 "docutils literal"><span class="pre">dig</span>
2656 <span class="pre">@151.99.25.1</span> <span class=
2657 "pre">www.google.it</span></tt></dd>
2659 <dt>dig MX www.google.it</dt>
2661 <dd>Chiede un campo in particolare, in questo caso il
2664 <dt>dig ANY www.google.it</dt>
2666 <dd>Chiede tutti i campi, non solo i campi
2669 <dt>dig -x 74.125.43.104</dt>
2671 <dd>Effettua una richiesta inversa: dall'ip al PTR
2676 <div class="section" id="resolv-conf">
2677 <h2><a class="toc-backref" href=
2678 "#id53">4.6 resolv.conf</a></h2>
2680 <p>Il file <tt class="docutils literal"><span class=
2681 "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
2682 sul dns usato dal sistema, in genere anche altre
2683 applicazioni che devono effettuare query DNS leggono
2684 resolv.conf per conoscere l'ubicazione del DNS.</p>
2686 <p>/etc/resolv.conf:</p>
2687 <pre class="literal-block">
2688 - ``nameserver``: indica il nameserver da utilizzare, indicato con l'indirizzo ip.
2690 - ``domain``: indica il nome di dominio della rete attuale, vedi voce sucessiva.
2692 - ``search``: nome di dominio usato dalla rete sul quale cercare gli hosts. Ad esempio se impostato su ``piffa.net`` pingando l'host ``bender`` viene automaticamente fatto un tentativo di ricerca per ``bender.piffa.net``.
2695 <p>Si veda anche la pagina man di resolv.conf.</p>
2697 <p>Attenzione: se si usa un client DHCP o simile questo
2698 file potra' essere riscritto automaticamente in base a
2699 quanto ottenuto dal DHCP. Si veda la documentazione del
2700 pacchtto <tt class="docutils literal"><span class=
2701 "pre">resolvconf</span></tt>.</p>
2704 <div class="section" id="etc-hosts">
2705 <h2><a class="toc-backref" href=
2706 "#id54">4.7 /etc/hosts</a></h2>
2708 <p>Tabella statica per l'associazione tra IP e nomi di
2710 <pre class="literal-block">
2715 127.0.0.1 localhost.localdomain localhost 10.10.208.162
2716 daniela daniela.piffa.net 10.10.208.254 mirror
2717 mirror.piffa.net 91.191.138.15 thepiratebay.org
2718 192.168.0.11 chrome chrome.mydomain.com
2721 <p>Il contenuto e' un associazione tra un <em>IP</em> e
2722 stringhe di testo (anche piu' di una es: <tt class=
2723 "docutils literal"><span class="pre">mirror</span></tt> e
2724 <tt class="docutils literal"><span class=
2725 "pre">mirror.piffa.net</span></tt>), un record per
2728 <p>Il problema e' la gestione di questo file: quando gli
2729 host cambiano IP si devono aggiornare i records, e c'e' poi
2730 il problema di distribuire questo file tra i vari hosts
2731 della propia LAN. Un metodo semplice per distribuire questo
2732 file e' utilizzare <tt class=
2733 "docutils literal"><span class="pre">Dnsmasq</span></tt>:
2734 questo infatti legge e onora il file <tt class=
2735 "docutils literal"><span class="pre">hosts</span></tt>
2736 locale e lo <em>distribuisce</em> ai clients.</p>
2738 <p>Modificare (riconducendola a un ip interno, cosi'
2739 annullandola) la risoluzione di un nome di dominio e' un
2740 modo drastico e funzionale per <em>annullarlo</em>
2741 rendendolo indisponibile alla propia rete locale, ad
2742 esempio aggiungere al file <tt class=
2743 "docutils literal"><span class=
2744 "pre">/etc/hosts</span></tt>:</p>
2745 <pre class="literal-block">
2746 127.0.0.1 www.facebook.com
2749 <p>Impedira' agli utenti della LAN di raggiungere
2750 <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
2753 <div class="section" id="hostname">
2754 <h2><a class="toc-backref" href=
2755 "#id55">4.8 Hostname</a></h2>
2757 <p>Ogni computer ha un <em>propio nome</em> visualizzabile
2758 (e modificabile) con il comando <tt class=
2759 "docutils literal"><span class=
2760 "pre">hostname</span></tt>.</p>
2762 <p>Per modificare in modo permanente il nome del computer
2763 si modifichi il contenuto del file <tt class=
2764 "docutils literal"><span class=
2765 "pre">/etc/hostname</span></tt>.</p>
2767 <p>Tipicamente si vuole mantenere una correlazione tra il
2768 nome dell'host, o meglio la stringa con cui il server si
2769 qualifica all'esterno, e il <em>PTR</em> dell'ip. Nel caso
2770 di <em>servizi virtuali</em> ci sara' un <em>nome
2771 server</em> principale associato al <em>PTR</em> condiviso.
2772 Non e' automatico che un servizio, ad esempio un server di
2773 posta, si qualifichi leggendo il contenuto di questo file e
2774 magari aggiungendo come suffisso il dominio di cui fa parte
2775 l'host: a volte questo parametro puo' essere specificato
2776 nel file di configurazione del servizio:</p>
2777 <pre class="literal-block">
2778 * Squid: ``visible_hostname``
2780 * Postfix: ``myhostname``
2785 <div class="section" id="dnsmasq">
2786 <h1><a class="toc-backref" href=
2787 "#id56">5 DNSmasq</a></h1>
2789 <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
2790 forwarder e un server DHCP caratterizzato dalla facilita' di
2791 configurazione, dalla leggerezza e dalla possibilita' di
2792 modificare rapidamente i record DNS serviti alla rete. Puo'
2793 essere anche utilizzato come <cite>server per il boot da rete
2794 <http://www.debian-administration.org/articles/478>_</cite>
2797 <p>Dnsmasq e' un interessante alternativa all'uso del server
2798 DNS Bind in modalita' cache-only (non autoritativo)
2799 accompagnato dal server DHCPD. I vantaggi sono:</p>
2802 <li>Leggerezza: puo' essere fatto girare su una macchina
2803 relativamente debole in caso di bisogno.</li>
2805 <li>Rapidita' di configurazione (in particolare per servire
2806 dei record A / MX alla rete, modificando al volo i valori
2807 originali ospitati sul server DNS Publico).</li>
2809 <li>Ben integrato con connssioni PPP (utile se dovete
2810 rendere disponibile rapidamente una connessione a internet
2811 a una rete in difficolta').</li>
2814 <p>Tutto cio' rende Dnsmasq una soluzione valida in
2815 particolare quando si deve intervenire in una rete
2816 pre-esistente in cui il server principale e' in crisi: si
2817 potra' utilizzare Dnsmasq anche su una macchina piu' debole e
2818 <em>mascherare</em> i servizi al momento non disponibili.
2819 Molto utile per scopi didattici, sopratutto per testare
2820 server SMTP impostando al volo i campi MX per nomi di dominio
2823 <div class="section" id="configurazione">
2824 <h2><a class="toc-backref" href=
2825 "#id57">5.1 Configurazione</a></h2>
2827 <p>Vediamo alcune direttive di basi del file di
2828 configurazione <tt class="docutils literal"><span class=
2829 "pre">/etc/dnsmasq.conf</span></tt> utili per la
2830 configurazione sia del DNS cache che per il DHCP
2833 <dl class="docutils">
2834 <dt>domain-needed</dt>
2836 <dd>Non inoltrare query ai server DNS esterni per nomi
2837 semplici (es andrea, portatile, pippo) che verranno
2838 risolti solo in locale o causeranno direttamente una
2839 risposta <em>not found</em> .</dd>
2843 <dd>Simile alla voce precedente ma per i reverse
2848 <dd>Nome di dominio della rete da passare ai client.</dd>
2850 <dt>expand_hosts</dt>
2852 <dd>Aggiunge il <tt class="docutils literal"><span class=
2853 "pre">nome</span> <span class="pre">host</span></tt> (
2854 <tt class="docutils literal"><span class=
2855 "pre">/etc/hostname</span></tt>) dei client al nome di
2856 dominio per qualificarli in rete, senza bisogno di dover
2857 comporre a un elenco statico di record nel file
2858 <tt class="docutils literal"><span class=
2859 "pre">/etc/hosts</span></tt> o nello stesso file di
2860 configurazione di dnsmasq. Es: se un vostro client si
2861 chiama <tt class="docutils literal"><span class=
2862 "pre">chrome</span></tt> e il vostro dominio <tt class=
2863 "docutils literal"><span class=
2864 "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
2865 il campo <em>A</em> per il dominio <tt class=
2866 "docutils literal"><span class=
2867 "pre">chrome.piffa.net</span></tt> diretto all'ip che
2868 verra' assegnato al client.</dd>
2872 <div class="section" id="dhcp">
2873 <h2><a class="toc-backref" href=
2874 "#id58">5.2 DHCP</a></h2>
2876 <p>Per attivare il demone DHCP di dnsmaq basta aggiungere
2877 al file di configurazione il <em>range</em> degli ip che si
2878 vuole assegnare ai client con il <em>lease time</em> (tempo
2879 di rilascio: quanto a lungo saranno validi gli ip
2880 assegnati) espresso in ore.</p>
2882 <p>Si faccia <em>attenzione</em>: in una rete puo' esseere
2883 presente <strong>un solo server DHCP</strong>, o per meglio
2884 dire qualunque server DHCP ascolta sul broadcast <tt class=
2885 "docutils literal"><span class=
2886 "pre">255.255.255.255</span></tt> e potrebbe rispondere a
2887 un pacchetto di richesta DHCP. Quindi non fate partire
2888 inavvertitamente un server DHCP in una rete gia' servita e
2889 <strong>non vi azzardate ad andare in giro con un portatile
2890 con un server DHCP attivo</strong> nelle reti altrui.
2891 Questo vale anche per i laboratori di informatica dei corsi
2892 di reti: non fate partire il vostro server DHCP se siete
2893 collegati alla rete interna!</p>
2895 <p>/etc/dnsmasq.conf (riga 118):</p>
2896 <pre class="literal-block">
2897 dhcp-range=192.168.0.20,192.168.0.50,24h
2901 <div class="section" id="dns-cache">
2902 <h2><a class="toc-backref" href=
2903 "#id59">5.3 DNS cache</a></h2>
2905 <p>Aggiungere al file <tt class=
2906 "docutils literal"><span class=
2907 "pre">/etc/resolv.conif</span></tt> il nameserver localhost
2908 in cima alla lista dei <em>nameserver</em> disponibili.
2909 Dnsmasq usera' la propia cache e in caso non abbia
2910 disponibile il <em>record DNS</em> richiesto fara' partire
2911 una query al primo DNS:</p>
2912 <pre class="literal-block">
2913 nameserver 127.0.0.1
2916 <p>Questo pero' potrebbe essere problematico se un altro
2917 servizio, ad esempio il DHCP client, riscrive il contenuto
2918 del file <tt class="docutils literal"><span class=
2919 "pre">/etc/resolv.conf</span></tt>. Per superare il
2920 problema si aggiunga (riga 20) al file di configurazione
2921 <tt class="docutils literal"><span class=
2922 "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
2923 <pre class="literal-block">
2924 prepend domain-name-servers 127.0.0.1;
2927 <p>Oppure potrebbe essere il nostro <em>PPP client</em>
2928 (per la connessione ADSL) a intervenire sul file <tt class=
2929 "docutils literal"><span class=
2930 "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
2931 <tt class="docutils literal"><span class=
2932 "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
2933 <tt class="docutils literal"><span class=
2934 "pre">usepeerdns</span></tt>. Se la vostra connessione ad
2935 internet e' ADSL raramente dovreste aver bisogno di
2936 cambiare i DNS una volta impostati (a meno che non usiate
2940 <div class="section" id="dhcpd">
2941 <h2><a class="toc-backref" href=
2942 "#id60">5.4 DHCPd</a></h2>
2944 <p>Dnsmasq puo' lavorare anche come DHCP server per la
2949 <div class="section" id="samba">
2950 <h1><a class="toc-backref" href=
2951 "#id61">6 Samba</a></h1>
2953 <p>Samba e' un progetto libero che fornisce servizi di
2954 condivisione di file e stampanti a client SMB/CIFS.</p>
2956 <p>Samba e' liberamente disponibile, al contrario di altre
2957 implementazioni SMB/CIFS, e permette di ottenere
2958 interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
2960 <p>Samba e' un software che puo girare su piattaforme che non
2961 siano Microsoft Windows, per esempio, UNIX, Linux, IBM System
2962 390, OpenVMS e altri sistemi operativi. Samba utilizza il
2963 protocollo TCP/IP utilizzando i servizi offerti sul server
2964 ospite. Quando correttamente configurato, permette di
2965 interagire con client o server Microsoft Windows come se
2966 fosse un file e print server Microsoft agendo da Primary
2967 Domain Controller (PDC) o come Backup Domain Controller, puo'
2968 inoltre prendere parte ad un dominio Active Directory.</p>
2970 <div class="section" id="pacchetti">
2971 <h2><a class="toc-backref" href=
2972 "#id62">6.1 Pacchetti</a></h2>
2974 <p>Pacchetti da installare per utilizzare Samba in
2975 modalita' client <a class="footnote-reference" href="#id5"
2976 id="id4" name="id4">[2]</a></p>
2977 <pre class="literal-block">
2981 <p>Pacchetti da installare per utilizzare Samba in
2982 modalita' server:</p>
2983 <pre class="literal-block">
2984 samba smbfs smbclient
2987 <table class="docutils footnote" frame="void" id="id5"
2994 <tbody valign="top">
2996 <td class="label"><a class="fn-backref" href=
2999 <td>Anche se nato per i sistemi Windows, Samba puo'
3000 essere usato anche per montare cartelle sotto
3001 GNU/Linux come alternativa a NFS. Per la condivisione
3002 di stampanti sarebbe invece opportuno intervenire
3003 direttamente su <tt class=
3004 "docutils literal"><span class=
3005 "pre">CUPS</span></tt>.</td>
3010 <p>Durante la prima installazione viene chiesto il nome del
3011 gruppo di appartenenza, il default per Windows e'
3012 <tt class="docutils literal"><span class=
3013 "pre">WORKGROUP</span></tt>. In aula usiamo invece
3014 <tt class="docutils literal"><span class=
3015 "pre">208</span></tt> .</p>
3017 <p>Per riconfigurare Samba si usi il comando:</p>
3018 <pre class="literal-block">
3019 dpkg-reconfigure samba-common
3023 <div class="section" id="passwords-e-autenticazione">
3024 <h2><a class="toc-backref" href=
3025 "#id63">6.2 Passwords e
3026 autenticazione</a></h2>
3028 <p>Per poter configurare Samba in modo che usi un sistema
3029 di negoziazione degli accessi alle cartelle condivise
3030 basato su accoppiate <em>nome utente / password</em>
3031 bisogna distinguere tra 3 livelli di password (e
3032 generalmente volete usare <em>sempre la stessa
3033 password</em> per ognuno di questi) e delle differenze tra
3034 le modalita' di <em>autenticazione</em> (e quindi anche di
3035 criptaggio delle passwords) usate da sistemi GNU/Linux e
3038 <dl class="docutils">
3039 <dt>1 Sistema *Unix ( GNU/Linux )</dt>
3041 <dd>E' la password dell'<em>utente di sistema</em> che
3042 viene usata sul sistema operativo su cui gira il software
3043 Samba. E' importante tenere conto anche delle
3044 <em>user-id</em> e <em>group-id</em> degli utenti che
3045 dovranno fisicamente scrivere sui file system. Se un
3046 utente non puo' scrivere in una certa posizione del file
3047 system (ad esempio nella cartella <tt class=
3048 "docutils literal"><span class=
3049 "pre">/mnt/condivisione</span></tt> che sara' stata
3050 necessariamente creata inizialmente dall'utente
3051 <tt class="docutils literal"><span class=
3052 "pre">root</span></tt>) per mancanza dei privilegi di
3053 scrittura allora neanche Samba potra' farlo nel momento
3054 in mette a disposizione la risorsa all'utente. Se si
3055 montano file-system dedicati per le condivisioni
3056 controllare i permessi e propieta' dei <em>punti di
3057 mount*</em>. Queste passwords sono salvate nel solito
3058 file /etc/shadow (richiamato da /etc/passwd).</dd>
3060 <dt>2 Password per l'applicativo Samba</dt>
3062 <dd>Samba deve essere compatibile con Windows e quindi
3063 utilizzare un sistema di criptazione delle password
3064 diverso da /etc/shadow . Le password per Samba possono
3065 essere gestite ad esempio col comando <tt class=
3066 "docutils literal"><span class=
3067 "pre">smbpasswd</span></tt> e vengono generalmente
3068 salvate all'interno di <tt class=
3069 "docutils literal"><span class=
3070 "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
3072 <dt>3 Password per Windows.</dt>
3074 <dd>Gli utenti Windows effettuano il log-in alla partenza
3075 della sessione di Windows. Se si avra' l'accortezza di
3076 usare sempre la <em>stessa password</em> data
3077 precedentemente anche a Windows (o viceversa impostare la
3078 password per GNU/Linux / Samba uguale a quella di
3079 Windows) l'utente potra' accedere automaticamente alle
3080 condivisioni a lui disponibili.</dd>
3084 <div class="section" id="creazione-utenti">
3085 <h2><a class="toc-backref" href=
3086 "#id64">6.3 Creazione Utenti</a></h2>
3088 <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
3089 attenzione a <em>non dargli una shell di sistema</em>. Gli
3090 utenti Windows che accedono al server solo per le
3091 condivisioni non hanno bisogno di poter eseguire comandi
3094 <p>Creazione di un utente denominato sambo:</p>
3095 <pre class="literal-block">
3096 adduser --shell /bin/false sambo
3099 <p>Nel file <tt class="docutils literal"><span class=
3100 "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
3101 <pre class="literal-block">
3102 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
3105 <p>Aggiunta dell'utente al database delle password per
3106 Samba e generazione della sua password:</p>
3107 <pre class="literal-block">
3111 <p>Se successivamente si vorra' modificare la password di
3112 un utente gia' esistente si usi:</p>
3113 <pre class="literal-block">
3117 <p>La password sotto Windows verra' modificata sul sistema
3121 <div class="section" id="creare-la-condivisione">
3122 <h2><a class="toc-backref" href=
3123 "#id65">6.4 Creare la
3124 condivisione</a></h2>
3126 <p>La condivisione altro non e' che una cartella sul server
3127 che viene resa disponibile ai client negoziando l'accesso
3128 in base a una autenticazione basata su <em>user-name /
3129 password</em>. E' per altro possibile permettere l'accesso
3130 a una risorsa a chiunque indiscriminatamente (a tutti i
3131 <tt class="docutils literal"><span class=
3132 "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
3133 punto di vista della sicurezza. Si decida se la cartella
3134 condivisa debba risiedere nella <em>home</em> di un utente
3135 (nel caso quest'ultimo ne sia l'unico fruitore) o in una
3136 cartella in /mnt/ (nel caso piu' utenti accedano a questa).
3137 Nel secondo caso si potranno gestire gli accessi sotto
3138 GNU/Linux tramite i gruppi.</p>
3140 <p>Creazione della risorsa sambo_share nella home
3141 dell'utente sambo:</p>
3142 <pre class="literal-block">
3143 # mkdir /home/sambo/sambo_share
3144 # chown sambo:sambo /home/sambo/sambo_share/
3147 <div class="section" id=
3148 "sicurezza-permessi-di-esecuzione-sul-server">
3149 <h3><a class="toc-backref" href=
3150 "#id66">6.4.1 Sicurezza: permessi di
3151 esecuzione sul server</a></h3>
3153 <p>Bisognerebbe notare sul server i permessi di
3154 esecuzione del file-system che ospita la cartella da
3155 condividere. Se i file che saranno contenuti nella
3156 condivisione saranno da usarsi sotto Windows non c'e'
3157 motivo che questi siano eseguibili sotto GNU/Linux. Si
3158 potrebbe avere quindi, ipotizzando una condivisione in
3159 <tt class="docutils literal"><span class=
3160 "pre">/mnt/share</span></tt> che risieda su di un file
3161 system dedicato:</p>
3163 <p><tt class="docutils literal"><span class=
3164 "pre">/etc/fstab</span></tt></p>
3167 /dev/hda10 /mnt/share ext3 rw,
3168 <strong>nosuid,noexec</strong> 0 3
3171 <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
3172 possibilita' di eseguire programmi con credenziali
3177 <div class="section" id=
3178 "configurazione-dell-applicativo-samba-vero-e-proprio">
3179 <h2><a class="toc-backref" href=
3180 "#id67">6.5 Configurazione
3181 dell'applicativo Samba vero e proprio.</a></h2>
3183 <p>Avendo preparato gli utenti (ancora una volta: non si
3184 dia una shell completa a un utente che serve solo per Samba
3185 o la posta elettronica) e la cartella sul file system si
3186 puo' procedere a configurare la condivisione su Samba.</p>
3188 <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
3189 vim si usi 235gg ):</p>
3190 <pre class="literal-block">
3192 # Percorso della cartella condivisa
3193 path = /home/sambo/sambo_share
3194 # Se gli utenti possono scrivere / modificare file
3196 # Negoziazione degli accessi su base utenti / passwords
3199 # #######################################
3200 # Altri parametri opzionali di interesse
3201 # Se posso vedere la condivisione da esplora risorse
3202 # anche se non ho i privilegi per accedervi.
3204 # Commento indicativo della risorsa
3205 comment = Condivisione per Sambo
3208 <p>Dopo aver salvato il file si puo' fare un primo
3209 controllo tramite l'utility <tt class=
3210 "docutils literal"><span class="pre">testparm</span></tt> ,
3211 che controlla la sintassi del file di configurazione di
3212 Samba. Se questo non rileva problemi si puo' procedere a un
3213 <tt class="docutils literal"><span class="pre">#</span>
3214 <span class="pre">/etc/init.d/samba</span> <span class=
3215 "pre">restart</span></tt> .</p>
3218 <div class="section" id="testare-il-servizio">
3219 <h2><a class="toc-backref" href=
3220 "#id68">6.6 Testare il Servizio</a></h2>
3222 <p>Come testare il servizio</p>
3225 <pre class="literal-block">
3226 smbclient -U sambo -L localhost
3229 <p>Questo comando permette di esplorare la risorsa
3230 qualificandosi come utente, in questo modo potete testare
3231 il corretto funzionamento dell'autenticazione. Si provi
3232 inizialmente a sbagliare la password deliberatamente, poi a
3233 inserirla correttamente: dovrebbero essere visibili le
3234 risorse disponibili al solo utente sambo: la suo /home e la
3235 cartella samba_share:</p>
3236 <pre class="literal-block">
3237 Sharename Type Comment
3238 --------- ---- -------
3239 sambo_share Disk Condivisione per Sambo
3240 print$ Disk Printer Drivers
3241 IPC$ IPC IPC Service (base server)
3242 sambo Disk Home Directories
3245 <p>In particolare l'ultima voce relativa alla home
3246 directory dell'utente dovrebbe essere visibile solo agli
3247 utenti autenticati.</p>
3249 <p>In alternativa e' possibile montare realmente la
3250 condivisone anche su GNU/Linux tramite un client per samba
3251 e testarne il corretto funzionamento:</p>
3252 <pre class="literal-block">
3253 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
3258 <div class="section" id="firewall">
3259 <h1><a class="toc-backref" href=
3260 "#id69">7 Firewall</a></h1>
3262 <p>In Informatica, nell'ambito delle reti di computer, un
3263 firewall (termine inglese dal significato originario di
3264 parete refrattaria, muro tagliafuoco, muro ignifugo; in
3265 italiano anche parafuoco o parafiamma) e' un componente
3266 passivo di difesa perimetrale che può anche svolgere
3267 funzioni di collegamento tra due o piu' tronconi di rete.
3268 Usualmente la rete viene divisa in due sottoreti: una, detta
3269 esterna, comprende l'intera Internet mentre l'altra interna,
3270 detta LAN (Local Area Network), comprende una sezione piu' o
3271 meno grande di un insieme di computer locali. In alcuni casi
3272 e' possibile che si crei l'esigenza di creare una terza
3273 sottorete detta DMZ (o zona demilitarizzata) atta a contenere
3274 quei sistemi che devono essere isolati dalla rete interna ma
3275 devono comunque essere protetti dal firewall.</p>
3277 <p>Una prima definizione chiusa di firewall è la
3280 <p>Apparato di rete hardware o software che filtra tutti i
3281 pacchetti entranti ed uscenti, da e verso una rete o un
3282 computer, applicando regole che contribuiscono alla sicurezza
3285 <p>In realtà un firewall può essere realizzato con un
3286 normale computer (con almeno due schede di rete e software
3287 apposito), può essere una funzione inclusa in un router o
3288 può essere un apparato specializzato. Esistono inoltre i
3289 cosiddetti "firewall personali", che sono programmi
3290 installati sui normali calcolatori, che filtrano solamente i
3291 pacchetti che entrano ed escono da quel calcolatore; in tal
3292 caso viene utilizzata una sola scheda di rete.</p>
3294 <p>La funzionalità principale in sostanza è quella di
3295 creare un filtro sulle connessioni entranti ed uscenti, in
3296 questo modo il dispositivo innalza il livello di sicurezza
3297 della rete e permette sia agli utenti interni che a quelli
3298 esterni di operare nel massimo della sicurezza. Il firewall
3299 agisce sui pacchetti in transito da e per la zona interna
3300 potendo eseguire su di essi operazioni di: controllo modifica
3303 <p>Questo grazie alla sua capacità di "aprire" il
3304 pacchetto IP per leggere le informazioni presenti sul suo
3305 header, e in alcuni casi anche di effettuare verifiche sul
3306 contenuto del pacchetto.</p>
3308 <div class="section" id="links">
3309 <h2><a class="toc-backref" href=
3310 "#id70">7.1 Links</a></h2>
3313 <li><a class="reference external" href=
3314 "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
3316 <li><a class="reference external" href=
3317 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
3318 http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
3322 <div class="section" id="ipfilter">
3323 <h2><a class="toc-backref" href=
3324 "#id71">7.2 Ipfilter</a></h2>
3326 <p>Link: <a class="reference external" href=
3327 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
3328 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
3330 <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
3331 po' del 3) e su cosa <em>non</em> lavora (livello 4).
3332 Netfilter lavora anche su parti del livello 3 (TCP, UDP,
3333 etc) e del livello 1 (MAC source address). Iptables
3334 comunque permette di fare il <em>connection-tracking</em>,
3335 mediante il quale possiamo implementare il Network Address
3338 <p>Netfilter non ricostruisce il flusso di dati tra
3339 pacchetti, non puo' quindi rilevare la presenza di virus o
3340 simili che si trasmettono su pacchetti separati:
3341 ricomporre, analizzare e tornare a scomporre i frammenti
3342 rtichiederebbe troppa RAM e risorse di sistema, con il
3343 conseguente rischio di saturare il firewall fino
3344 all'abbandono dei nuovi pacchetti in transito. Ci sono
3345 altri software piu' adatti a questi compiti, ad esempio un
3346 proxy HTTP come Squid che e' appunto una applicazione di
3347 quarto livello, progettata e strutturata per analizzare e
3348 modificare i flussi di dati (il <em>contenuto</em> dei
3349 pacchetti, non le sole <em>inestazioni</em>) facendo
3350 abbondate uso delle risorse RAM e di calcolo del sistema.
3351 Non a caso su macchine embedded dalle prestazioni molto
3352 ridotte (CPU ARM ~250Mhz con ~30MB di RAM) Squid sfrutta al
3353 massimo le risorse di sistema per gestire il traffico di
3354 una rete 10/100, mentre il lavoro tipico svolto da
3355 netfilter e' quasi irrilevante.</p>
3358 <div class="section" id="progettazione-di-un-firewall">
3359 <h2><a class="toc-backref" href=
3360 "#id72">7.3 Progettazione di un
3363 <p>Per implementare un firewall bisogna decidere un aio di
3364 cose: la collocazione e l'approccio (inclusivo o esclusivo)
3365 al filtraggio, il tipo di hardware.</p>
3367 <div class="section" id="collocazione">
3368 <h3><a class="toc-backref" href=
3369 "#id73">7.3.1 Collocazione</a></h3>
3371 <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
3372 della rete, decidere se diversi reparti di una azienda si
3373 possano vedere tra loro e in che misura.</p>
3375 <p>Collocazione:</p>
3378 <ol class="arabic simple">
3381 <li>tra router e servers / LAN</li>
3383 <li>Unico server / router / firewall e connessi
3384 rischi. considerare l'acquisto di un router hardware
3389 <dl class="docutils">
3390 <dt>Layeed security:</dt>
3392 <dd>Implementare piu' device / software sui diversi
3393 livelli: <a class="reference external" href=
3394 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
3395 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
3399 <div class="section" id="policy-di-default">
3400 <h3><a class="toc-backref" href=
3401 "#id74">7.3.2 Policy di default</a></h3>
3403 <p>Drop o Accept: conseguenze per sicurezza, facilita' di
3407 <div class="section" id="hardware">
3408 <h3><a class="toc-backref" href=
3409 "#id75">7.3.3 Hardware</a></h3>
3411 <p>Sostanzialmente potremmo distinquere due tipologie di
3414 <dl class="docutils">
3415 <dt>Network appliance dedicata::</dt>
3417 <dd>Un dispositivo hardware dedicato alla funzione di
3418 Firewall, ad es un Cisco / Fortigate. Si noti che molti
3419 firewall economici altro non sono che Linux box molto
3422 <dt>Server / Personal computer:</dt>
3424 <dd>Un server sul quale viene fatto girare Netfilter ad
3425 uso del server stesso e della rete connessa.</dd>
3428 <p>Vantaggi e svantaggi: consumo elettrico, efficenza,
3429 flessibilita', strumenti di gestione, sicurezza,
3434 <div class="section" id=
3435 "percorso-dei-pacchetti-tra-tabelle-e-catene">
3436 <h2><a class="toc-backref" href=
3437 "#id76">7.4 Percorso dei pacchetti tra
3438 tabelle e catene</a></h2>
3440 <p>link: <a class="reference external" href=
3441 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
3442 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
3445 <div class="section" id="concetti-di-base">
3446 <h2><a class="toc-backref" href=
3447 "#id77">7.5 Concetti di base</a></h2>
3449 <div class="section" id="tabelle-catene-regole">
3450 <h3><a class="toc-backref" href=
3451 "#id78">7.5.1 Tabelle, catene,
3454 <p>Iptables lavora su 3 tabelle (tables) di default:</p>
3457 <li>filter - Regola il firewalling: quali pacchetti
3458 accettare, quali bloccare</li>
3460 <li>nat - Regola le attività di natting</li>
3462 <li>mangle - Interviene sulla alterazione dei
3466 <p>Ogni tabella ha delle catene (chains) predefinite
3467 (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
3468 aggiunte catene custom. Ogni catena è composta da un
3469 elenco di regole (rules) che identificano pacchetti di
3470 rete secono criteri diversi (es: -p tcp --dport 80 -d
3471 10.0.0.45) Ogni regola termina con una indicazione
3472 (target) su cosa fare dei pacchetti identificati dalla
3473 regola stessa (es: -j ACCEPT, -j DROP ...)</p>
3476 <div class="section" id="match">
3477 <h3><a class="toc-backref" href=
3478 "#id79">7.5.2 Match</a></h3>
3480 <p>I Match di una regola (rule) servono a testare un
3481 pacchetto per valutare se corrisponda a certe
3482 caratteriscttiche. I match di possono servire a
3483 controllare se un pacchetto e' destinato a una porta
3484 particolare o utilizza un protocollo particolare.</p>
3486 <p>Alcuni esempi:</p>
3488 <dl class="docutils">
3489 <dt>-p [!] proto</dt>
3491 <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
3492 udp, gre, ah...)</dd>
3494 <dt>-s [!] address[/mask]</dt>
3496 <dd>Indirizzo IP sorgente (o network con maschera di
3499 <dt>-d [!] address[/mask]</dt>
3501 <dd>Indirizzo IP destinazione (o network)</dd>
3503 <dt>-i [!] interface[+]</dt>
3505 <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
3507 <dt>-o [!] interface[+]</dt>
3509 <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
3512 <table class="docutils option-list" frame="void" rules=
3514 <col class="option">
3515 <col class="description">
3517 <tbody valign="top">
3519 <td class="option-group"><kbd><span class=
3520 "option">-f</span></kbd></td>
3522 <td>Frammento di pacchetto</td>
3528 <div class="section" id="targets">
3529 <h3><a class="toc-backref" href=
3530 "#id80">7.5.3 Targets</a></h3>
3532 <p>Se un pacchetto soddisfa le condizioni del Match
3533 <em>salta</em> (jump) su uno dei target possibili, in
3534 caso contrario continua il suo percorso tra regole catene
3537 <p>Target principali:</p>
3539 <dl class="docutils">
3540 <dt><em>-j ACCEPT</em></dt>
3542 <dd>Il pachetto matchato viene accettato e procede
3543 verso la sua destinazione. Si usa per definire il
3544 traffico permesso.</dd>
3546 <dt><em>-j DROP</em></dt>
3548 <dd>Il pacchetto viene rifiutato e scartato, senza
3549 alcuna notifica al mittente. Si usa, in alternativa a
3550 REJECT, per bloccare traffico.</dd>
3552 <dt><em>-j REJECT</em></dt>
3554 <dd>Il pacchetto viene rifiutato. Al mittente viene
3555 mandato un pacchetto (configurabile) di notifica tipo
3556 ICMP port-unreachable (--reject-with
3557 icmp-port-unreachable)</dd>
3560 <table class="docutils option-list" frame="void" rules=
3562 <col class="option">
3563 <col class="description">
3565 <tbody valign="top">
3567 <td class="option-group"><kbd><span class=
3568 "option">-t <var>LOG</var></span></kbd></td>
3570 <td>Il pacchetto viene loggato via syslog e procede
3571 l'attraversamento della catena. Opzioni:
3572 (--log-level, --log-prefix, --log-tcp-sequence,
3573 --log-tcp-options, --log-ip-options)</td>
3577 <td class="option-group"><kbd><span class=
3578 "option">-j <var>DNAT</var></span></kbd></td>
3580 <td>Viene modificato l'IP di destinazione del
3581 pacchetto. Target disponibile solo in nat /
3582 PREROUTING e nat / OUTPUT. L'opzione
3583 --to-destination IP:porta definisce il nuovo IP di
3584 destinazione. Si usa tipicamente su network
3585 firewall che nattano server di una DMZ</td>
3589 <td class="option-group"><kbd><span class=
3590 "option">-j <var>SNAT</var></span></kbd></td>
3592 <td>Viene modificato l'IP sorgente. Solo in nat /
3593 POSTROUTING. Prevede l'opzione --to-source
3594 IP:porta. Si usa per permettere l'accesso a
3595 Internet da una rete locale con IP privati.</td>
3599 <td class="option-group"><kbd><span class=
3600 "option">-j <var>MASQUERADE</var></span></kbd></td>
3602 <td>Simile a SNAT, si applica quando i pacchetti
3603 escono da interfacce con IP dinamico (dialup, adsl,
3604 dhcp...). Si usa solo in nat / POSTROUTING e
3605 prevede l'opzione --to-ports porte.</td>
3609 <td class="option-group"><kbd><span class=
3610 "option">-j <var>REDIRECT</var></span></kbd></td>
3612 <td>Redirige il pacchetto ad una porta locale.
3613 Usabile solo in nat / PREROUTING e nat / OUTPUT è
3614 previsto per fare un transparent proxy (con proxy
3615 server in esecuzione sulla macchina con
3620 <td class="option-group"><kbd><span class=
3621 "option">-j <var>RETURN</var></span></kbd></td>
3623 <td>Interrompe l'attraversamento della catena. Se
3624 questa è una secondaria, il pacchetto torna ad
3625 attraversare la catena madre da punto in cui aveva
3626 fatto il salto nella secondaria. Se il RETURN è in
3627 una delle catene di default, il pacchetto
3628 interrompe l'attraversamento e segue la policy di
3633 <td class="option-group"><kbd><span class=
3634 "option">-j <var>TOS</var></span></kbd></td>
3636 <td>Usabile solo nella tabella mangle, permette di
3637 cambiare il TOS (Type Of Service) di un pacchetto
3638 con l'opzione --set-tos. Per un elenco dei
3639 parametri disponibili: iptables -j TOS -h</td>
3643 <td class="option-group"><kbd><span class=
3644 "option">-j <var>MIRROR</var></span></kbd></td>
3646 <td>Curioso e sperimentale, questo target invia un
3647 pacchetto speculare al mittente. In pratica è come
3648 se facesse da specchio per tutti i pacchetti
3649 ricevuti. Da usare con cautela, per evitare
3650 attacchi DOS indiretti.</td>
3657 <div class="section" id="tabella-filter">
3658 <h2><a class="toc-backref" href=
3659 "#id81">7.6 Tabella Filter</a></h2>
3661 <p>E' quella implicita e predefinita (-t filter) Riguarda
3662 le attività di filtraggio del traffico. Ha 3 catene
3663 di default: INPUT - Riguarda tutti i pacchetti destinati al
3664 sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
3665 i pacchetti che sono originati dal sistema e destinati ad
3666 uscire. FORWARD - Riguarda i pacchetti che attraversano il
3667 sistema, con IP sorgente e destinazione esterni.</p>
3669 <p>Esempio per permettere accesso alla porta 80 locale:
3670 iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
3671 Analoga a: iptables -I INPUT -p tcp --dport 80 -j
3674 <p>Esempio per permettere ad un pacchetto con IP sorgente
3675 10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
3676 il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
3680 <div class="section" id=
3681 "flush-automatico-per-macchine-remote">
3682 <h2><a class="toc-backref" href=
3683 "#id82">7.7 Flush automatico per macchine
3686 <p>Se state provando una configurazione del firewall per
3687 una macchina remota e' buona norma per evitare brutte
3688 figure attivare uno script che faccia il <em>flush</em>
3689 delle regole dopo qualche minuto. Potreste infatti
3690 inavvertitamente impostare una regola che vi impedisca di
3691 raggiungere la macchina remota, cosi' da non poter neanche
3692 eliminare quella regola e ripristinare la situazioe
3695 <p><em>Veramnete</em>, prima di lavorare sul firewall di
3696 una macchina remota inpostate almeno un <tt class=
3697 "docutils literal"><span class="pre">at</span> <span class=
3698 "pre">now</span> <span class="pre">+5</span> <span class=
3699 "pre">min</span></tt> o con un'oretta di margine per fare
3700 il <em>flush</em> delle regole (su tutte le tabelle):</p>
3701 <pre class="literal-block">
3703 at> /sbin/iptables -F
3708 <div class="section" id="gestione-regole-rules">
3709 <h2><a class="toc-backref" href=
3710 "#id83">7.8 Gestione regole
3713 <p>Il comando iptables viene usato per ogni attivitÃ
3714 di gestione e configurazione.</p>
3716 <p>Inserimento regole:</p>
3718 <dl class="docutils">
3719 <dt>iptables -A CATENA ...</dt>
3721 <dd>Aggiunge una regola alla fine della catena
3724 <dt>iptables -I CATENA [#] ...</dt>
3726 <dd>Inserisce alla riga # (default 1) una regola nella
3727 catena indicata</dd>
3729 <dt>iptables -N CATENA</dt>
3731 <dd>Crea una nuova catena custom</dd>
3733 <dt>iptables -P CATENA TARGET</dt>
3735 <dd>Imposta il target di default per la catena
3739 <p>Rimozione regole e azzeramenti:</p>
3741 <dl class="docutils">
3742 <dt>iptables -F [catena]</dt>
3744 <dd>Ripulisce tutte le catene (o quella indicata)</dd>
3746 <dt>iptables -X [catena]</dt>
3748 <dd>Ripulisce tutte le catene custom (o quella
3751 <dt>iptables -Z [catena]</dt>
3753 <dd>Azzera i contatori sulle catene</dd>
3755 <dt>iptables -D catena #</dt>
3757 <dd>Cancella la regola numero # dalla catena
3761 <p>Interrogazione:</p>
3763 <dl class="docutils">
3764 <dt>iptables -L</dt>
3766 <dd>Elenca le regole esistenti</dd>
3768 <dt>iptables -L -n -v</dt>
3770 <dd>Elenca, senza risolvere gli host, in modo verboso le
3771 regole esistenti</dd>
3776 <div class="section" id="note">
3777 <h1><a class="toc-backref" href=
3778 "#id84">8 NOTE</a></h1>
3781 <li>controllare apache</li>
3784 <p>sintassi: in <tt class="docutils literal"><span class=
3785 "pre">monospace</span></tt> :</p>
3788 <li>nomi di files</li>