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