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">
20 Copyright: This stylesheet has been placed in the public domain - free to edit and use for all uses.
24 font: 100% sans-serif;
42 background-color: transparent;
46 text-decoration: none;
51 text-decoration: none;
52 background-color: transparent;
65 margin: 0.5em 0 1em 0;
71 background-color: transparent;
76 background-color: transparent;
80 text-decoration: none;
104 h1, h2, h3, h4, h5, h6 {
106 background-color: transparent;
113 margin-bottom: 0.5em;
114 border-bottom: 2px solid #aaa;
119 margin-bottom: 0.5em;
120 border-bottom: 1px solid #aaa;
125 margin-bottom: 0.5em;
131 margin-bottom: 0.5em;
137 margin-bottom: 0.5em;
143 margin-bottom: 0.5em;
151 margin-bottom: 1.5em;
154 div.admonition, div.note, div.tip, div.caution, div.important {
157 border-top: 1px solid #aaa;
158 border-left: 1px solid #aaa;
159 border-bottom: 2px solid #555;
160 border-right: 2px solid #555;
164 background: transparent url('../images/important.png') 10px 2px no-repeat;
168 background: transparent url('../images/caution.png') 10px 2px no-repeat;
172 background: transparent url('../images/note.png') 10px 2px no-repeat;
176 background: transparent url('../images/tip.png') 10px 2px no-repeat;
179 div.admonition-example {
180 background: transparent url('../images/tip.png') 10px 2px no-repeat;
183 div.admonition-critical-example {
184 background: transparent url('../images/important.png') 10px 2px no-repeat;
189 border-bottom: 1px solid #aaa;
195 border: 1px solid gray;
196 border-collapse: collapse;
201 table.docutils caption {
205 table.docutils td, table.docutils th {
206 padding: 0.25em 0.5em;
210 background-color: #dddddd;
218 border-top: 1px solid #aaa;
219 border-left: 1px solid #aaa;
220 border-bottom: 2px solid #555;
221 border-right: 2px solid #555;
227 border-bottom: 1px solid #aaa;
241 <div class="document" id="servizi-di-rete-passo-a-passo">
242 <h1 class="title">Servizi di rete passo a passo</h1>
244 <h2 class="subtitle" id=
245 "appunti-sulla-installazione-e-configurazione-dei-servizi">
246 Appunti sulla installazione e configurazione dei servizi</h2>
249 <table class="docutils field-list" frame="void" rules="none">
250 <col class="field-name">
251 <col class="field-body">
255 <th class="field-name">Author:</th>
257 <td class="field-body">Andrea Manni</td>
261 <th class="field-name">Copyright:</th>
263 <td class="field-body">GFDL</td>
267 <th class="field-name">Version:</th>
269 <td class="field-body">0.8</td>
275 <p>Questa guida e' dedicata agli studenti delle lezioni di
276 informatica tenute da Andrea nel lab208. Nella parte iniziale
277 sono presenti alcuni richiami alle impostazioni di rete e di
278 installazione del laboratorio 208 (lab208) dove generalmente si
279 tengono le lezioni. Questi parametri non sono interessanti per
280 chiunque si trovasse al di fuori della rete piffa.net .</p>
282 <div class="contents topic" id="indice-degli-argomenti">
283 <p class="topic-title first">Indice degli argomenti</p>
285 <ul class="auto-toc simple">
287 <a class="reference internal" href=
288 "#configurazione-sistema" id="id7" name=
289 "id7">1 Configurazione sistema</a>
291 <ul class="auto-toc">
292 <li><a class="reference internal" href=
293 "#solo-per-uso-interno" id="id8" name=
294 "id8">1.1 Solo per uso
298 <a class="reference internal" href="#rete" id="id9"
299 name="id9">1.2 Rete</a>
301 <ul class="auto-toc">
302 <li><a class="reference internal" href=
303 "#interfaces" id="id10" name=
304 "id10">1.2.1 interfaces</a></li>
308 <li><a class="reference internal" href=
309 "#bash-completion" id="id11" name=
310 "id11">1.3 Bash completion</a></li>
312 <li><a class="reference internal" href="#vim" id="id12"
313 name="id12">1.4 Vim</a></li>
315 <li><a class="reference internal" href="#vnc" id="id13"
316 name="id13">1.5 VNC</a></li>
318 <li><a class="reference internal" href=
319 "#lista-dei-pacchetti-di-base" id="id14" name=
320 "id14">1.6 Lista dei pacchetti di
324 <a class="reference internal" href=
325 "#apt-configurazione" id="id15" name=
326 "id15">1.7 Apt configurazione</a>
328 <ul class="auto-toc">
329 <li><a class="reference internal" href=
330 "#sources-list" id="id16" name=
331 "id16">1.7.1 sources.list</a></li>
333 <li><a class="reference internal" href=
334 "#etc-apt-apt-conf" id="id17" name=
335 "id17">1.7.2 /etc/apt/apt.conf</a></li>
342 <a class="reference internal" href="#squid" id="id18"
343 name="id18">2 Squid</a>
345 <ul class="auto-toc">
347 <a class="reference internal" href=
348 "#configurazione-squid-conf" id="id19" name=
349 "id19">2.1 Configurazione:
352 <ul class="auto-toc">
353 <li><a class="reference internal" href="#cache-dir"
355 "id20">2.1.1 Cache_dir</a></li>
357 <li><a class="reference internal" href=
358 "#tag-maximum-object-size" id="id21" name=
359 "id21">2.1.2 TAG:
360 maximum_object_size</a></li>
362 <li><a class="reference internal" href=
363 "#tag-cache-mem" id="id22" name=
364 "id22">2.1.3 TAG:
367 <li><a class="reference internal" href=
368 "#tag-minimum-object-size" id="id23" name=
369 "id23">2.1.4 TAG:
370 minimum_object_size</a></li>
375 <a class="reference internal" href=
376 "#negoziazione-degli-accesi-al-servizio" id="id24"
377 name="id24">2.2 Negoziazione degli
378 accesi al servizio</a>
380 <ul class="auto-toc">
381 <li><a class="reference internal" href=
382 "#acl-e-http-access" id="id25" name=
383 "id25">2.2.1 ACL e http
389 <a class="reference internal" href="#testare-squid"
390 id="id26" name="id26">2.3 Testare
393 <ul class="auto-toc">
394 <li><a class="reference internal" href=
395 "#client-wgetrc" id="id27" name=
396 "id27">2.3.1 Client:
399 <li><a class="reference internal" href=
400 "#server-access-log" id="id28" name=
401 "id28">2.3.2 Server:
409 <a class="reference internal" href="#apache" id="id29"
410 name="id29">3 Apache</a>
412 <ul class="auto-toc">
413 <li><a class="reference internal" href=
414 "#pacchetti-da-installare" id="id30" name=
415 "id30">3.1 Pacchetti da
416 installare::</a></li>
418 <li><a class="reference internal" href=
419 "#configurazione-di-apache" id="id31" name=
420 "id31">3.2 Configurazione di
423 <li><a class="reference internal" href="#apache-conf"
425 "id32">3.3 apache.conf</a></li>
428 <a class="reference internal" href=
429 "#installazione-di-php" id="id33" name=
430 "id33">3.4 Installazione di PHP</a>
432 <ul class="auto-toc">
433 <li><a class="reference internal" href=
434 "#test-del-modulo-php" id="id34" name=
435 "id34">3.4.1 Test del modulo
438 <li><a class="reference internal" href=
439 "#installazione-del-supporto-per-mysql" id="id35"
440 name="id35">3.4.2 Installazione
441 del supporto per Mysql</a></li>
443 <li><a class="reference internal" href=
444 "#phpmyadmin" id="id36" name=
445 "id36">3.4.3 phpmyadmin</a></li>
447 <li><a class="reference internal" href=
448 "#installazione-del-supporto-per-postgresql" id=
450 "id37">3.4.4 Installazione del
451 supporto per Postgresql</a></li>
453 <li><a class="reference internal" href=
454 "#phppgadmin" id="id38" name=
455 "id38">3.4.5 phppgadmin</a></li>
460 <a class="reference internal" href="#virtual-hosts"
461 id="id39" name="id39">3.5 Virtual
464 <ul class="auto-toc">
465 <li><a class="reference internal" href=
466 "#gestione-dns" id="id40" name=
467 "id40">3.5.1 Gestione DNS</a></li>
469 <li><a class="reference internal" href=
470 "#virtual-host" id="id41" name=
471 "id41">3.5.2 Virtual host</a></li>
476 <a class="reference internal" href=
477 "#negoziazione-accessi" id="id42" name=
478 "id42">3.6 Negoziazione accessi</a>
480 <ul class="auto-toc">
481 <li><a class="reference internal" href=
482 "#limiti-su-base-ip" id="id43" name=
483 "id43">3.6.1 Limiti su base
489 <a class="reference internal" href=
490 "#user-authentication" id="id44" name=
491 "id44">3.7 User Authentication</a>
493 <ul class="auto-toc">
494 <li><a class="reference internal" href=
495 "#definire-la-cartella" id="id45" name=
496 "id45">3.7.1 Definire la
499 <li><a class="reference internal" href=
500 "#creazione-del-database-delle-passwords" id="id46"
501 name="id46">3.7.2 Creazione del
502 database delle passwords</a></li>
504 <li><a class="reference internal" href="#id3" id=
506 "id47">3.7.3 Configurazione di
511 <li><a class="reference internal" href="#cavets" id=
512 "id48" name="id48">3.8 Cavets</a></li>
517 <a class="reference internal" href="#domain-name-system"
518 id="id49" name="id49">4 Domain Name
521 <ul class="auto-toc">
522 <li><a class="reference internal" href=
523 "#risoluzione-inversa" id="id50" name=
524 "id50">4.1 Risoluzione
527 <li><a class="reference internal" href=
528 "#nomi-di-dominio" id="id51" name=
529 "id51">4.2 Nomi di dominio</a></li>
531 <li><a class="reference internal" href=
532 "#tipologie-di-record" id="id52" name=
533 "id52">4.3 Tipologie di
536 <li><a class="reference internal" href="#utilizzo" id=
538 "id53">4.4 Utilizzo</a></li>
540 <li><a class="reference internal" href=
541 "#risoluzione-dei-nomi-di-dominio" id="id54" name=
542 "id54">4.5 Risoluzione dei nomi di
545 <li><a class="reference internal" href="#dig" id="id55"
546 name="id55">4.6 Dig</a></li>
548 <li><a class="reference internal" href="#resolv-conf"
550 "id56">4.7 resolv.conf</a></li>
552 <li><a class="reference internal" href="#etc-hosts" id=
554 "id57">4.8 /etc/hosts</a></li>
556 <li><a class="reference internal" href="#hostname" id=
558 "id58">4.9 Hostname</a></li>
563 <a class="reference internal" href="#dnsmasq" id="id59"
564 name="id59">5 DNSmasq</a>
566 <ul class="auto-toc">
567 <li><a class="reference internal" href=
568 "#configurazione" id="id60" name=
569 "id60">5.1 Configurazione</a></li>
571 <li><a class="reference internal" href="#dhcp" id=
572 "id61" name="id61">5.2 DHCP</a></li>
574 <li><a class="reference internal" href="#dns-cache" id=
575 "id62" name="id62">5.3 DNS
581 <a class="reference internal" href=
582 "#bind-dns-autoritativo" id="id63" name=
583 "id63">6 Bind : DNS Autoritativo</a>
585 <ul class="auto-toc">
586 <li><a class="reference internal" href="#id4" id="id64"
587 name="id64">6.1 DNS cache</a></li>
590 <a class="reference internal" href=
591 "#ospitare-una-zona" id="id65" name=
592 "id65">6.2 Ospitare una zona</a>
594 <ul class="auto-toc">
595 <li><a class="reference internal" href=
596 "#named-conf-local" id="id66" name=
597 "id66">6.2.1 named.conf.local</a></li>
600 <a class="reference internal" href=
601 "#configurazione-della-zona" id="id67" name=
602 "id67">6.2.2 Configurazione
605 <ul class="auto-toc">
606 <li><a class="reference internal" href=
607 "#soa-start-of-authority-record" id="id68"
608 name="id68">6.2.2.1 SOA: Start
609 of Authority Record</a></li>
611 <li><a class="reference internal" href=
612 "#altri-campi" id="id69" name=
613 "id69">6.2.2.2 Altri
620 <li><a class="reference internal" href=
621 "#link-suggeriti" id="id70" name=
622 "id70">6.3 Link suggeriti:</a></li>
627 <a class="reference internal" href="#samba" id="id71"
628 name="id71">7 Samba</a>
630 <ul class="auto-toc">
631 <li><a class="reference internal" href="#pacchetti" id=
633 "id72">7.1 Pacchetti</a></li>
635 <li><a class="reference internal" href=
636 "#passwords-e-autenticazione" id="id73" name=
637 "id73">7.2 Passwords e
638 autenticazione</a></li>
640 <li><a class="reference internal" href=
641 "#creazione-utenti" id="id74" name=
642 "id74">7.3 Creazione Utenti</a></li>
645 <a class="reference internal" href=
646 "#creare-la-condivisione" id="id75" name=
647 "id75">7.4 Creare la
650 <ul class="auto-toc">
651 <li><a class="reference internal" href=
652 "#sicurezza-permessi-di-esecuzione-sul-server" id=
654 "id76">7.4.1 Sicurezza: permessi
655 di esecuzione sul server</a></li>
659 <li><a class="reference internal" href=
660 "#configurazione-dell-applicativo-samba-vero-e-proprio"
662 "id77">7.5 Configurazione
663 dell'applicativo Samba vero e proprio.</a></li>
665 <li><a class="reference internal" href=
666 "#testare-il-servizio" id="id78" name=
667 "id78">7.6 Testare il
673 <a class="reference internal" href=
674 "#server-di-posta-postfix" id="id79" name=
675 "id79">8 Server di posta: Postfix</a>
677 <ul class="auto-toc">
679 <a class="reference internal" href=
680 "#test-del-server-smtp" id="id80" name=
681 "id80">8.1 Test del server smtp</a>
683 <ul class="auto-toc">
684 <li><a class="reference internal" href="#swaks" id=
686 "id81">8.1.1 Swaks</a></li>
690 <li><a class="reference internal" href="#imap-e-pop"
691 id="id82" name="id82">8.2 Imap e
695 <a class="reference internal" href=
696 "#client-a-riga-di-comando" id="id83" name=
697 "id83">8.3 Client a riga di
700 <ul class="auto-toc">
701 <li><a class="reference internal" href="#mailx" id=
703 "id84">8.3.1 mailx</a></li>
705 <li><a class="reference internal" href="#mutt" id=
707 "id85">8.3.2 Mutt</a></li>
709 <li><a class="reference internal" href=
710 "#web-client" id="id86" name=
711 "id86">8.3.3 Web client</a></li>
716 <a class="reference internal" href="#graylisting" id=
718 "id87">8.4 Graylisting</a>
720 <ul class="auto-toc">
721 <li><a class="reference internal" href=
722 "#abilitazione-in-postfix" id="id88" name=
723 "id88">8.4.1 Abilitazione in
726 <li><a class="reference internal" href="#test" id=
728 "id89">8.4.2 Test</a></li>
730 <li><a class="reference internal" href=
731 "#statistiche" id="id90" name=
732 "id90">8.4.3 Statistiche</a></li>
739 <a class="reference internal" href="#firewall" id="id91"
740 name="id91">9 Firewall</a>
742 <ul class="auto-toc">
743 <li><a class="reference internal" href="#links" id=
744 "id92" name="id92">9.1 Links</a></li>
746 <li><a class="reference internal" href="#ipfilter" id=
748 "id93">9.2 Ipfilter</a></li>
751 <a class="reference internal" href=
752 "#progettazione-di-un-firewall" id="id94" name=
753 "id94">9.3 Progettazione di un
756 <ul class="auto-toc">
757 <li><a class="reference internal" href=
758 "#collocazione" id="id95" name=
759 "id95">9.3.1 Collocazione</a></li>
761 <li><a class="reference internal" href=
762 "#policy-di-default" id="id96" name=
763 "id96">9.3.2 Policy di
766 <li><a class="reference internal" href="#hardware"
768 "id97">9.3.3 Hardware</a></li>
772 <li><a class="reference internal" href=
773 "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
774 "id98" name="id98">9.4 Percorso dei
775 pacchetti tra tabelle e catene</a></li>
778 <a class="reference internal" href=
779 "#concetti-di-base" id="id99" name=
780 "id99">9.5 Concetti di base</a>
782 <ul class="auto-toc">
783 <li><a class="reference internal" href=
784 "#tabelle-catene-regole" id="id100" name=
785 "id100">9.5.1 Tabelle, catene,
788 <li><a class="reference internal" href="#match" id=
790 "id101">9.5.2 Match</a></li>
792 <li><a class="reference internal" href="#targets"
794 "id102">9.5.3 Targets</a></li>
798 <li><a class="reference internal" href=
799 "#tabella-filter" id="id103" name=
800 "id103">9.6 Tabella Filter</a></li>
802 <li><a class="reference internal" href=
803 "#flush-automatico-per-macchine-remote" id="id104"
804 name="id104">9.7 Flush automatico per
805 macchine remote</a></li>
807 <li><a class="reference internal" href=
808 "#gestione-regole-rules" id="id105" name=
809 "id105">9.8 Gestione regole
813 <a class="reference internal" href=
814 "#salvataggio-regole" id="id106" name=
815 "id106">9.9 Salvataggio regole</a>
817 <ul class="auto-toc">
818 <li><a class="reference internal" href=
819 "#iptables-save" id="id107" name=
820 "id107">9.9.1 Iptables-save</a></li>
822 <li><a class="reference internal" href=
823 "#iptables-restore" id="id108" name=
824 "id108">9.9.2 Iptables-restore</a></li>
829 <a class="reference internal" href="#esempi" id=
830 "id109" name="id109">9.10 Esempi</a>
832 <ul class="auto-toc">
833 <li><a class="reference internal" href=
834 "#bloccare-i-ping-dall-esterno" id="id110" name=
835 "id110">9.10.1 Bloccare i ping
836 dall'esterno</a></li>
838 <li><a class="reference internal" href=
839 "#masquerading-snat" id="id111" name=
840 "id111">9.10.2 Masquerading
843 <li><a class="reference internal" href=
844 "#brute-force" id="id112" name=
845 "id112">9.10.3 Brute
852 <li><a class="reference internal" href="#note" id="id113"
853 name="id113">10 NOTE</a></li>
857 <p>Generato con: <a class="reference external" href=
858 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
860 <div class="section" id="configurazione-sistema">
861 <h1><a class="toc-backref" href=
862 "#id7">1 Configurazione sistema</a></h1>
864 <div class="section" id="solo-per-uso-interno">
865 <h2><a class="toc-backref" href=
866 "#id8">1.1 Solo per uso interno</a></h2>
868 <p>Impostazioni di base per la configurazione del sistema
869 operativo e della rete nel laboratorio 208 facente parte
870 della rete piffa.net .</p>
872 <p>Qui riportati per comodita' degli studenti (e del
873 docente che non sara' <strong>mai piu'</strong> costretto a
874 ripeterli continuamente! ). Gli altri lettori potranno
875 tenerli presenti per cercare di comprendere gli esempi nel
876 testo. Ad esempio: quando leggerete <tt class=
877 "docutils literal"><span class=
878 "pre">10.10.208.254:3128</span></tt> saprete che si tratta
879 del nostro <em>proxy http</em>, stara' quindi a voi
880 sostituire i dati con gli equivalenti <em>IP</em> della
884 <div class="section" id="rete">
885 <h2><a class="toc-backref" href=
886 "#id9">1.2 Rete</a></h2>
888 <p>Parametri della rete attualmente in uso:</p>
890 <table border="1" class="docutils">
898 <td colspan="2">Parametri della rete</td>
904 <td>10.10.208.0/24</td>
910 <td>255.255.255.0</td>
916 <td>10.10.208.255</td>
922 <td>10.10.208.254</td>
928 <td>10.10.208.254</td>
934 <td>10.10.208.254:3128</td>
939 <p>Sul portatile di Andrea, corrispondente all'IP 254, gira
940 un DHCP, proxy http e mirror di Debian ( <a class=
941 "reference external" href=
942 "http://debian.piffa.net">http://debian.piffa.net</a>). Se
943 Andrea non e' in aula (o ancora peggio non c'e' il suo
944 portatile Net) gli studenti dovranno darsi un indirizzo IP
945 manualmente e disabilitare il proxy (che pero' e
946 trasparente, quindi fate pure come se non ci fosse ;) . Ad
947 oggi il <em>lab208</em> e' servito dal server Bender (254 o
948 248) che ha ripreso le sue vecchie funzioni.</p>
950 <div class="section" id="interfaces">
951 <h3><a class="toc-backref" href=
952 "#id10">1.2.1 interfaces</a></h3>
954 <p>Segue un esempio del file di configurazione della
955 scheda di rete con configurazione statica:</p>
957 <p>/etc/network/interfaces:</p>
958 <pre class="literal-block">
959 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
961 # The loopback interface
962 iface lo inet loopback
964 # La prima scheda di rete (se si chiama eth0)
965 # (network, broadcast and gateway sono optional)
966 iface etho inet static
968 # iface etho inet dhcp
969 address 10.10.208.101
970 netmask 255.255.255.0
972 broadcast 10.10.208.255
973 gateway 10.10.208.254
975 # Quali interfacci devono partire automaticamente:
979 <p>Controllare il nome della propria scheda di rete: a
980 volte <em>udev</em> rinomina la prima scheda a <tt class=
981 "docutils literal"><span class="pre">eth1</span></tt>,
982 oppure potreste avere piu' di una scheda di rete (anche
983 un'interfaccia <em>firewire</em> puo' essere
984 automaticamente abilitata come scheda di rete).</p>
986 <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
987 , eth0:1 , ...) ricordarsi che queste dipendono dalla
988 scheda fisica a cui sono associate: abbattere con
989 <tt class="docutils literal"><span class=
990 "pre">ifconfig</span> <span class="pre">down</span>
991 <span class="pre">eth0</span></tt> la scheda principale
992 fara' cadere anche queste. Tornando ad attivare la scada
993 principale con <tt class="docutils literal"><span class=
994 "pre">ifconfig</span> <span class="pre">eth0</span>
995 <span class="pre">up</span></tt> la virtuale tornera'
996 attiva: nel caso voleste disabilitarla dovrete quindi
997 sempre abbattere manualmente la scheda virtuale
998 <em>prima</em> della scheda reale.</p>
1000 <p>I DNS vanno indicati nel file <tt class=
1001 "docutils literal"><span class=
1002 "pre">/etc/resolv.conf</span></tt> , la cui sintassi e'
1003 spiegata al punto 4.6 .</p>
1007 <div class="section" id="bash-completion">
1008 <h2><a class="toc-backref" href=
1009 "#id11">1.3 Bash completion</a></h2>
1011 <p>Il completamento automatico della shell (che si attiva
1012 premendo il tasto tab una o due volte mentre si sta
1013 scrivendo un termine) permette di comporre automaticamente
1014 i nomi dei comandi e i percorsi dei file, sopratutto la
1015 composizione automatica dei percorsi dei file e' di grande
1018 <p>Bash_completion permette di integrare il completamento
1019 automatico con i nomi dei pacchetti e oggetti dei comandi:
1020 ad es. volendo digitare <tt class=
1021 "docutils literal"><span class="pre">apt-get</span>
1022 <span class="pre">inst[TAB]</span> <span class=
1023 "pre">xtigh[TAB]</span></tt> ora verra' completato
1024 automaticamente sia la parola <tt class=
1025 "docutils literal"><span class="pre">install</span></tt>
1026 che il nome del pacchetto <tt class=
1027 "docutils literal"><span class=
1028 "pre">xtightvncviewer</span></tt>.</p>
1030 <p>Abilitare /etc/bash_completion nel file <tt class=
1031 "docutils literal"><span class=
1032 "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
1033 proprio <tt class="docutils literal"><span class=
1034 "pre">~/.bashrc</span></tt> (che sarebbe il file
1035 <em>nascosto</em>, quindi con un punto all'inizio del nome
1036 del file, di configurazione della shell bash per ogni
1037 utente, presente nella propria <em>home
1038 directory</em>):</p>
1039 <pre class="literal-block">
1040 echo ". /etc/bash_completion" >> ~/.bashrc
1043 <p>Esempio di ~/.bahsrc</p>
1044 <pre class="literal-block">
1045 # ~/.bashrc: executed by bash(1) for non-login shells.
1047 export PS1='\h:\w\$ '
1050 # De-commentare le seguenti righe per abilitare la colorazione dei
1052 export LS_OPTIONS='--color=auto'
1054 alias ls='ls $LS_OPTIONS'
1055 alias ll='ls $LS_OPTIONS -l'
1056 alias l='ls $LS_OPTIONS -lA'
1058 # Some more alias to avoid making mistakes:
1063 # questo abilita bash completion
1064 . /etc/bash_completion
1067 <p>Il file <tt class="docutils literal"><span class=
1068 "pre">/etc/bash_completion</span></tt> deve essere presente
1069 nel sistema, in caso contrario installare il pacchetto:
1070 <tt class="docutils literal"><span class=
1071 "pre">bash-completion</span></tt>. Generalmente l'utente
1072 <tt class="docutils literal"><span class=
1073 "pre">root</span></tt> ha un file <tt class=
1074 "docutils literal"><span class="pre">.bashrc</span></tt>
1075 preimpostato analogo a quello citato sopra, a differenza
1076 dei normali utenti di sistema.</p>
1081 <li><a class="reference external" href=
1082 "http://www.debian-administration.org/articles/316">An
1083 introduction to bash completion</a></li>
1085 <li><a class="reference external" href=
1086 "http://www.caliban.org/bash/">Working more productively
1087 with bash 2.x/3.x</a></li>
1091 <div class="section" id="vim">
1092 <h2><a class="toc-backref" href=
1093 "#id12">1.4 Vim</a></h2>
1095 <p>Vim e' l'editor di testo preferito dai sistemisti,
1096 quindi sara' conveniente impostare fin da subito alcune
1097 impostazioni per renderlo piu' comodo.</p>
1099 <p>Assicurarsi che sia installata nel sistema la versione
1100 completa dell'editor <tt class=
1101 "docutils literal"><span class="pre">vim</span></tt>
1102 installando il pacchetto <tt class=
1103 "docutils literal"><span class="pre">vim</span></tt>:</p>
1104 <pre class="literal-block">
1105 # apt-get install vim
1107 e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
1109 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1110 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1111 " you can find below. If you wish to change any of those settings, you should
1112 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1113 " everytime an upgrade of the vim packages is performed. It is recommended to
1114 " make changes after sourcing debian.vim since it alters the value of the
1115 " 'compatible' option.
1117 " This line should not be removed as it ensures that various options are
1118 " properly set to work with the Vim-related packages available in Debian.
1121 " Uncomment the next line to make Vim more Vi-compatible
1122 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
1123 " options, so any other options should be set AFTER setting 'compatible'.
1126 " Vim5 and later versions support syntax highlighting. Uncommenting the next
1127 " line enables syntax highlighting by default.
1130 " If using a dark background within the editing area and syntax highlighting
1131 " turn on this option as well.
1134 " Uncomment the following to have Vim jump to the last position when
1138 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
1139 \| exe "normal! g'\"" | endif
1142 " Uncomment the following to have Vim load indentation rules and plugins
1143 " according to the detected filetype.
1144 " This is not recommanded if you often copy and paste into vim,
1145 " as it messes all the indentation.
1147 filetype plugin indent on
1150 " This goes for comments folding: use co to expnad and zc to compress,
1151 " zi to toggle on/off
1153 set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
1155 " The following are commented out as they cause vim to behave a lot
1156 " differently from regular Vi. They are highly recommended though.
1157 set showcmd " Show (partial) command in status line.
1158 "set showmatch " Show matching brackets.
1159 # Ignorecase is quite userfull
1160 set ignorecase " Do case insensitive matching
1161 "set smartcase " Do smart case matching
1162 "set incsearch " Incremental search
1163 set autowrite " Automatically save before commands like :next and :make
1164 "set hidden " Hide buffers when they are abandoned
1165 "set mouse=a " Enable mouse usage (all modes) in terminals
1167 " Source a global configuration file if available
1168 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1169 if filereadable("/etc/vim/vimrc.local")
1170 source /etc/vim/vimrc.local
1174 <p>I principianti faranno bene ad esercitarsi con
1175 <tt class="docutils literal"><span class=
1176 "pre">vimtutor</span> <span class="pre">it</span></tt>.</p>
1179 <div class="section" id="vnc">
1180 <h2><a class="toc-backref" href=
1181 "#id13">1.5 VNC</a></h2>
1183 <p>I Virtual Network Computing (o VNC) sono software di
1184 controllo remoto e servono per amministrare il proprio
1185 computer a distanza o visualizzare la sessione di lavoro di
1186 un altro computer sul proprio a scopo didattico.</p>
1188 <p>Scaricare il pacchetto <tt class=
1189 "docutils literal"><span class=
1190 "pre">xtightvncviewer</span></tt> e lo script <tt class=
1191 "docutils literal"><span class="pre">guarda.sh</span></tt>
1192 in una posizione (collocazione nel <em>path</em> degli
1193 utenti, es <tt class="docutils literal"><span class=
1194 "pre">echo</span> <span class="pre">$PATH</span></tt> per
1195 visualizzare l'attuale path ) comoda per gli utenti ( in
1196 genere <tt class="docutils literal"><span class=
1197 "pre">/bin</span></tt> ), rendere eseguibile lo script.</p>
1200 <pre class="literal-block">
1203 wget http://debian.piffa.net/guarda.sh
1208 <p>Si noti che non e' possibile lanciare un applicativo sul
1209 server grafico di un utente da una shell in cui si sta
1210 lavorando come altro utente, anche se root. E' quindi
1211 necessario essere l'utente di sistema che si e' loggato
1212 inizialmente nella sessione grafica per poter lanciare lo
1213 script guarda.sh da una shell.</p>
1215 <p>Controllare con <tt class=
1216 "docutils literal"><span class="pre">whoami</span></tt> di
1217 essere l'utente normale (es <tt class=
1218 "docutils literal"><span class="pre">utente</span>
1219 <span class="pre">|</span> <span class=
1220 "pre">studente</span> <span class="pre">|</span>
1221 <span class="pre">proprio</span> <span class=
1222 "pre">nome</span></tt> ), in caso si sia assunta una altra
1223 <tt class="docutils literal"><span class=
1224 "pre">id</span></tt> si apra un altra shell o si esca da
1225 quella attuale con <tt class=
1226 "docutils literal"><span class="pre">exit</span></tt> .</p>
1229 <div class="section" id="lista-dei-pacchetti-di-base">
1230 <h2><a class="toc-backref" href=
1231 "#id14">1.6 Lista dei pacchetti di
1234 <p>I pacchetti installati generalmente <a class=
1235 "footnote-reference" href="#id2" id="id1" name=
1236 "id1">[1]</a> per poter seguire le lezioni sono:</p>
1237 <pre class="literal-block">
1238 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1241 <table class="docutils footnote" frame="void" id="id2"
1248 <tbody valign="top">
1250 <td class="label"><a class="fn-backref" href=
1253 <td><tt class="docutils literal"><span class=
1254 "pre">kde-core</span></tt> e' piu' leggero del
1255 pacchetto <tt class="docutils literal"><span class=
1256 "pre">kde</span></tt>. Esiste un equivalente
1257 <tt class="docutils literal"><span class=
1258 "pre">gnome-core</span> <span class=
1259 "pre">gnome</span></tt> per chi preferisce gnome, nel
1260 caso si potrebbe installare il log-in manager
1261 <tt class="docutils literal"><span class=
1262 "pre">gdm</span></tt> al posto di <tt class=
1263 "docutils literal"><span class=
1264 "pre">kdm</span></tt>.</td>
1270 <div class="section" id="apt-configurazione">
1271 <h2><a class="toc-backref" href=
1272 "#id15">1.7 Apt configurazione</a></h2>
1274 <p>Vediamo i due file principali di apt:</p>
1277 <li><tt class="docutils literal"><span class=
1278 "pre">/etc/apt/sources.list</span></tt></li>
1280 <li><tt class="docutils literal"><span class=
1281 "pre">/etc/apt/apt.conf</span></tt></li>
1284 <div class="section" id="sources-list">
1285 <h3><a class="toc-backref" href=
1286 "#id16">1.7.1 sources.list</a></h3>
1288 <p>Questo file contiene i sorgenti da cui <em>apt</em>
1289 preleva i pacchetti da installare tramite <em>dpkg</em>,
1290 vengono quindi precisati i metodi (ad es. http / ftp /
1291 cdrom / file), la release che si vuole tracciare (es
1292 <tt class="docutils literal"><span class=
1293 "pre">stable,</span> <span class="pre">testing,</span>
1294 <span class="pre">unstable</span></tt> oppure i
1295 corrispondenti release name es: <tt class=
1296 "docutils literal"><span class="pre">Lenny,</span>
1297 <span class="pre">Squeeze,</span> <span class=
1298 "pre">Sid</span></tt>), i rami di interesse (es:
1299 <tt class="docutils literal"><span class=
1300 "pre">main</span></tt> che e' l'archivio principale,
1301 <tt class="docutils literal"><span class=
1302 "pre">non-free</span></tt> per il software non libero,
1303 <tt class="docutils literal"><span class=
1304 "pre">contrib</span></tt> per i pacchetti non realizzati
1305 dai manutentori ufficiali).</p>
1307 <p>Gli archivi sono generalmente:</p>
1310 <li><tt class="docutils literal"><span class=
1311 "pre">deb</span></tt> per pacchetti Debian binari</li>
1313 <li><tt class="docutils literal"><span class=
1314 "pre">deb-src</span></tt> per i pacchetti sorgenti
1315 (quindi da compilare, come il kernel) degli stessi
1316 pacchetti binari. In genere se non compilate spesso
1317 potete evitare di tracciare i sorgenti per risparmiare
1321 <p><tt class="docutils literal"><span class=
1322 "pre">/etc/apt/sources.list</span></tt></p>
1323 <pre class="literal-block">
1324 # esempio di accesso a un CDROM:
1325 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1327 # Archivio principale debian via http su piffa.net,
1328 # non funziona al di fuori dell'aula dei corsi
1329 deb http://debian.piffa.net/debian/ Lenny main
1330 # Sono disponibili anche i rami non-free contrib
1331 # deb http://debian.piffa.net/debian/ lenny non-free contrib
1333 # Mirror da kernel.org da usare a casa:
1334 deb http://mirrors.eu.kernel.org/debian/ lenny main
1336 # Security dal sito principale
1337 deb http://security.debian.org/ lenny/updates main
1338 deb-src http://security.debian.org/ lenny/updates main
1340 # Debian volatile per le cose soggette a cambiamenti non legati
1341 # a dinamiche di sicurezza
1342 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1343 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1345 # Esempio di accesso a un file system locale contenente i pacchetti:
1346 # deb file:/mnt/mirror Sid main non-free contrib
1350 <div class="section" id="etc-apt-apt-conf">
1351 <h3><a class="toc-backref" href=
1352 "#id17">1.7.2 /etc/apt/apt.conf</a></h3>
1354 <p>Questo file contiene le opzioni di apt, come ad
1355 esempio il proxy:</p>
1356 <pre class="literal-block">
1357 Acquire::http::Proxy "http://10.10.208.254:3128";
1360 <p>Si tenga conto che se si imposta un proxy per apt sul
1361 proprio portatile e tornati a casa propria si vuole
1362 scaricare nuovi pacchetti si dovra' disabilitare il
1368 <div class="section" id="squid">
1369 <h1><a class="toc-backref" href=
1370 "#id18">2 Squid</a></h1>
1372 <p>Squid e' un proxy cache http (ma anche FTP e https)
1373 robusto e strutturato, puo' essere usato sia in reti
1374 relativamente piccole grazie alla semplicita' di
1375 configurazione che in scenari piu' complessi grazie alla
1376 possibilita' di gestirne in modo granulare le risorse. Si
1377 partira' dalle configurazioni piu' semplici per la semplice
1378 <em>condivisione della navigazione</em> internet, per poi
1379 poter configurare la gestione degli accessi, il filtraggio
1380 dei contenuti (Squid e' una applicazione che si muove nel 4'
1381 livello del modello TCP/IP a differenza di un
1382 <em>ipfilter</em> limitato al 2') nel l bilanciamento del
1383 carico tra piu' hosts.</p>
1385 <dl class="docutils">
1386 <dt>Inoltre Squid svolge la funzione di
1387 <em>anonymizer</em>:</dt>
1389 <dd>nasconde i client http alla rete internet: risulta solo
1390 il server proxy nei log dei server web frequentati dagli
1391 utenti di Squid.</dd>
1394 <p>Cosa a volte sottovalutata, Squid permette la navigazione
1395 web a una rete basata su <em>indirizzi IP privati</em> (es
1396 una 192.168.0.0/24). E se la rete privata deve <em>solo
1397 navigare</em> in internet, non serve un <em>NAT</em> od
1398 altro, basta il solo Squid. Per altro non servira' neanche un
1399 servizio DNS dato che <em>sara' il solo Squid a risolvere i
1400 nomi di dominio</em> per i suoi client http.</p>
1402 <p>Squid ascolta di default sulla porta 3128, per impostare
1403 <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
1404 "docutils literal"><span class=
1405 "pre">/etc/apt/apt.conf</span></tt></p>
1406 <pre class="literal-block">
1407 Acquire::http::Proxy "10.10.208.254:3128";
1410 <p>Per installare Squid si usino i pacchetti:</p>
1411 <pre class="literal-block">
1415 <div class="section" id="configurazione-squid-conf">
1416 <h2><a class="toc-backref" href=
1417 "#id19">2.1 Configurazione:
1420 <p>Segue un estratto delle direttive principali viste in
1421 aula presenti nel file di configurazione <tt class=
1422 "docutils literal"><span class=
1423 "pre">/etc/squid3/squid.conf</span></tt> .</p>
1425 <div class="section" id="cache-dir">
1426 <h3><a class="toc-backref" href=
1427 "#id20">2.1.1 Cache_dir</a></h3>
1429 <p>Cache dir serve per impostare dimensione e percorso
1430 della cache creata sul supporto di storaggio. Essendo la
1431 dimensione di default della cache pari a <tt class=
1432 "docutils literal"><span class="pre">~100</span>
1433 <span class="pre">MB</span></tt> e' altamente
1434 consigliabili aumentare questo parametro se si vuole
1435 poter utilizzare la funzione di <em>cache</em> http del
1438 <p>La dimensione ovviamente dipendera' dallo spazio
1439 disponibile, dimensioni tipiche e massime degli oggetti
1440 che si vuole tenere in cache (un solo file <em>.iso e'
1441 circa ``700 MB``, il pacchetto *Openoffice.org</em> circa
1442 <tt class="docutils literal"><span class="pre">150</span>
1443 <span class="pre">MB</span></tt>, un pacchetto debian
1444 circa <tt class="docutils literal"><span class=
1445 "pre">20</span> <span class="pre">MB</span></tt>), numero
1448 <p>Si presti poi attenzione alla natura dei dati che
1449 saranno salvati nella cache: sono tutti dati facilmente
1450 sostituibili (gli originali sono <em>on-line</em>) la cui
1451 perdita non arreca danni permanenti. Questo rende la
1452 cache di Squid un possibile candidato ad un <em>RAID
1453 stirpe</em> (livello 0), con vantaggi sia per le
1454 prestazioni (e la velocita' di navigazione e' uno dei
1455 motivi per cui si installa Squid) che per l'utilizzo
1456 estensivo dello spazio di storaggio. Questo fino al
1457 momento in cui per voi non sia piu' importante
1458 <em>garantire la disponibilita' del servizio</em> (se il
1459 RAID stripe dovesse rompersi gli utenti non potrebbero
1460 piu' navigare, cosa che per natura dello stripe e'
1461 maggiormente probabile rispetto ad un <em>mirror</em> o a
1462 un filesytem <em>normale</em>) con un RAID mirror o
1465 <p>Altra considerazione: i dati del proxy vengono slavati
1466 sul filesytem del server dietro richiesta di utenti
1467 esterni talvolta sconosciuti. Come per i servizi di file
1468 sharing o per la posta elettronica non c'e' motivo che il
1469 filesystem su cui sono ospitati questi dati abbia i
1470 privilegi di eseguibilita' o suid (in genere si puo'
1471 anche usare <em>noatime</em> per renderlo piu' veloce,
1472 che si usi o meno il journal dipende dalle preferenze:
1473 affidabilita' oppure prestazioni):</p>
1476 <pre class="literal-block">
1478 # Filesystem per Squid http cache
1479 /dev/md3/ /var/spool/squid/ ext3,noexec,nosuid,noatime 0 3
1482 <p>Ora possiamo impostare la cache direttamente nel file
1483 <tt class="docutils literal"><span class=
1484 "pre">/etc/squid3/squid.conf</span></tt>:</p>
1485 <pre class="literal-block">
1486 #TAG: cache_dir (riga 1628)
1489 # cache_dir Type Directory-Name Fs-specific-data [options]
1491 # You can specify multiple cache_dir lines to spread the
1492 # cache among different disk partitions.
1495 # cache_dir ufs /var/spool/squid3 100 16 256
1496 cache_dir aufs /var/spool/squid3 300 24 256
1500 # directory primo livello
1501 # secondo livello di directory
1504 <p>Se si modifica la struttura del filesytem della cache
1505 di Squid, ad esempio variando il numero delle directory,
1506 puo' essere opportuno rigenerare la struttura della cache
1507 di squid (per lo meno se si <em>aumenta</em> il numero
1508 delle directory di primo o secondo livello). Tipicamente
1509 e' consigliabile cancellare (se si ha <em>ridotto</em> il
1510 numero delle directory) la vecchia cache e poi generare
1511 una nuova struttura. Se si vuole <em>star nel sicuro</em>
1512 ogni volta che si modifica l'impostazione delle directory
1513 <em>si svuoti la vecchia cache e se ne generi una
1515 <pre class="literal-block">
1516 # /etc/init.d/squid3 stop
1517 # rm -r /var/spool/squid3/??
1519 # /etc/init.d/squid3 start
1523 <div class="section" id="tag-maximum-object-size">
1524 <h3><a class="toc-backref" href=
1525 "#id21">2.1.2 TAG:
1526 maximum_object_size</a></h3>
1528 <p>Questa direttiva imposta la dimensione massima degli
1529 oggetti che vengono salvati sul supporto di storaggio,
1530 oggetti di dimensioni superiori saranno comunque
1531 scaricati ma non tenuti in cache.</p>
1533 <p>TAG: maximum_object_size (1760):</p>
1534 <pre class="literal-block">
1535 # TAG: maximum_object_size (1760)
1536 # Objects larger than this size will NOT be saved on disk. The
1537 # value is specified in kilobytes, and the default is 4MB. If
1538 # you wish to get a high BYTES hit ratio, you should probably
1539 # increase this (one 32 MB object hit counts for 3200 10KB
1540 # hits). If you wish to increase speed more than your want to
1541 # save bandwidth you should leave this low.
1543 # NOTE: if using the LFUDA replacement policy you should increase
1544 # this value to maximize the byte hit rate improvement of LFUDA!
1545 # See replacement_policy below for a discussion of this policy.
1548 # maximum_object_size 4096 KB
1549 maximum_object_size 150 MB
1553 <div class="section" id="tag-cache-mem">
1554 <h3><a class="toc-backref" href=
1555 "#id22">2.1.3 TAG: cache_mem</a></h3>
1557 <p><em>Cache_mem</em> imposta quanta memoria RAM venga
1558 utilizzata per la cache di Squid. Questo dipendera' dalla
1559 RAM disponibile sul sistema, e da quanta di questa volete
1560 mettere a disposizione di Squid (altri servizi importanti
1561 girano sulla stessa macchina?). Questo parametro
1562 influisce sulle prestazioni e sul degrado dei supporti di
1563 storaggio (sopratutto se magnetici).</p>
1565 <p>Se si stesse pensando di usare dell'hardware
1566 <em>embedded</em> a basse prestazioni / consumo per
1567 realizzare un server gateway / NAT / Squid si tenga
1568 presente che Squid e' relativamente esoso di risorse:
1569 avra' bisogno di una macchina con <tt class=
1570 "docutils literal"><span class="pre">~25MB</span></tt>
1571 (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1572 servire decorosamente una decina di client http su una
1573 rete ethernet 10/100. In questo caso non fate scendere
1574 <tt class="docutils literal"><span class=
1575 "pre">cache_mem</span></tt> sotto i <tt class=
1576 "docutils literal"><span class="pre">2/4</span>
1577 <span class="pre">MB</span></tt> pena un accesso continuo
1578 al supporto di storaggio.</p>
1580 <p>Se invece si disponesse di una macchina dedicata a
1581 Squid con gigabytes di RAM non si esiti a dedicarne buona
1582 parte a <em>cache_mem</em>.</p>
1584 <p>TAG: cache_mem (1566):</p>
1585 <pre class="literal-block">
1586 # 'cache_mem' specifies the ideal amount of memory to be used
1588 # * In-Transit objects
1590 # * Negative-Cached objects
1597 <div class="section" id="tag-minimum-object-size">
1598 <h3><a class="toc-backref" href=
1599 "#id23">2.1.4 TAG:
1600 minimum_object_size</a></h3>
1602 <p>Questo parametro imposta la dimensione minima degli
1603 oggetti salvati nella cache. Settato a <tt class=
1604 "docutils literal"><span class="pre">0</span></tt> o a
1605 valori molto piccoli puo' influire negativamente sulla
1606 deframmentazione del filesytem e consumare un numero
1607 elevato di <em>inode</em> (cosa non piu' importante con
1608 ext4 o altri filesytem).</p>
1610 <p>TAG: minimum_object_size:</p>
1611 <pre class="literal-block">
1612 # TAG: minimum_object_size (bytes)
1613 # Objects smaller than this size will NOT be saved on disk. The
1614 # value is specified in kilobytes, and the default is 0 KB, which
1615 # means there is no minimum.
1618 # minimum_object_size 0 KB
1619 minimum_object_size 0 KB
1624 <div class="section" id=
1625 "negoziazione-degli-accesi-al-servizio">
1626 <h2><a class="toc-backref" href=
1627 "#id24">2.2 Negoziazione degli accesi al
1630 <p>Squid e' uno di quei servizi soggetto a problemi di tipo
1631 <em>open relay</em> , si deve quindi limitare la rete che
1632 puo' accedere al servizio.</p>
1634 <dl class="docutils">
1635 <dt>Open Relay:</dt>
1637 <dd>Un servizio a cui possono accedere tutti
1638 indiscriminatamente. La cosa puo' andare bene per servizi
1639 come i server web, che aspirano per loro natura al
1640 maggior numero possibile di utenti, ma non a servizi come
1641 i proxy http oppure ai server di posta elettronica (che
1642 permetterebbero l'invio di SPAM).</dd>
1645 <p>Generalmente non volete che il vostro proxy http venga
1646 usato da persone sconosciute le quali sostanzialmente
1647 <em>navigherebbero sotto l'identita' del vostro proxy</em>
1648 (probabilmente per visionare materiali che non vorrebbero
1649 fossero ricondotti direttamente a loro, per motivi che sta
1650 a voi prendere in considerazione) consumando traffico e
1651 banda della vostra connessione a internet. Tenere Squid in
1652 modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1653 modo per essere inseriti in una <em>black list</em>.</p>
1655 <p>Per poter limitare gli accessi a Squid dal punto di
1656 vista dell'applicazione (quarto livello TCP/IP) si
1657 identifichera' inizialmente l'entita' <em>rete locale</em>
1658 (es: <tt class="docutils literal"><span class=
1659 "pre">localnet</span></tt>) con una ACL di tipo
1660 <em>src</em> (indirizzi IP sorgenti) indicando la
1661 <em>classe / range di IP</em> della nostra rete.</p>
1664 Dopodiche l'accesso (<tt class=
1665 "docutils literal"><span class=
1666 "pre">http_access</span></tt>) si concedera'
1667 (<em>allow</em>) a questa entita' (es: <tt class=
1668 "docutils literal"><span class=
1669 "pre">localnet</span></tt>) negando chiunque altro.
1672 <p>Per maggiori dettagli sulla sintassi utilizzabile per
1673 esprimere i range di IP: <a class="reference external"
1674 href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1675 http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1677 <div class="section" id="acl-e-http-access">
1678 <h3><a class="toc-backref" href=
1679 "#id25">2.2.1 ACL e http access</a></h3>
1681 <p>Si proceda a creare una <tt class=
1682 "docutils literal"><span class="pre">ACL</span></tt> di
1683 tipo <tt class="docutils literal"><span class=
1684 "pre">src</span></tt> per identificare la nostra rete
1685 locale, poi si abiliti l'accesso a questa con la
1686 direttiva <tt class="docutils literal"><span class=
1687 "pre">http_access</span></tt>. Tutto quanto non e'
1688 espressamente autorizzato viene poi negato da un
1689 <tt class="docutils literal"><span class=
1690 "pre">http_access</span> <span class="pre">deny</span>
1691 <span class="pre">all</span></tt> finale.</p>
1692 <pre class="literal-block">
1694 # Defining an Access List
1696 # Every access list definition must begin with an aclname and acltype,
1697 # followed by either type-specific arguments or a quoted filename that
1698 # they are read from.
1700 # ***** ACL TYPES AVAILABLE *****
1702 # acl aclname src ip-address/netmask ... # clients IP address
1705 # Example rule allowing access from your local networks.
1706 # Adapt to list your (internal) IP networks from where browsing
1708 #acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
1709 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1710 #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
1712 acl localnet src 10.10.208.0/24
1716 # Allowing or Denying access based on defined access lists
1718 # Access to the HTTP port:
1719 # http_access allow|deny [!]aclname ...
1721 # NOTE on default values:
1723 # If there are no "access" lines present, the default is to deny
1727 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1729 # Example rule allowing access from your local networks.
1730 # Adapt localnet in the ACL section to list your (internal) IP networks
1731 # from where browsing should be allowed
1732 #http_access allow localnet
1733 http_access allow localnet
1738 <div class="section" id="testare-squid">
1739 <h2><a class="toc-backref" href=
1740 "#id26">2.3 Testare Squid</a></h2>
1742 <p>Configurato squid e' fondamentale testarne il corretto
1743 funzionamento per assicurarsi di non aver creato un
1744 <em>open-relay</em>. Per fare dei test significativi serve
1745 utilizzare degli host remoti: ci si connetta via ssh a
1746 questi per poi utilizzare <tt class=
1747 "docutils literal"><span class="pre">wget</span></tt> da
1748 riga di comando.</p>
1750 <div class="section" id="client-wgetrc">
1751 <h3><a class="toc-backref" href=
1752 "#id27">2.3.1 Client: ~/.wgetrc</a></h3>
1754 <p>Nel file <tt class="docutils literal"><span class=
1755 "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
1756 un file nascosto) si puo' impostare il proxy per wget. Si
1757 utilizzi l'indirizzo IP del server che si vuole testare,
1758 e si seguano i log <tt class=
1759 "docutils literal"><span class=
1760 "pre">/var/log/squid3/access.log</span></tt> sul
1763 <p>Da notare che la prova va' fatta su una macchina della
1764 rete che si vuole testare, non da <em>localhost</em>. Per
1765 altro se si utilizzasse <em>direttamente</em> <tt class=
1766 "docutils literal"><span class=
1767 "pre">localhost</span></tt> non si testerebbe la
1768 <em>ACL</em> predisposta, dato che si si rientrerebbe
1769 nella ACL (pre-configurata di default) <tt class=
1770 "docutils literal"><span class=
1771 "pre">localhost</span></tt>.</p>
1773 <dl class="docutils">
1776 <dd>http_proxy=10.10.208.178:3128</dd>
1779 <p>Si proceda a scaricare dal client scelto con un
1781 <pre class="literal-block">
1782 wget http://www.google.it
1786 <div class="section" id="server-access-log">
1787 <h3><a class="toc-backref" href=
1788 "#id28">2.3.2 Server:
1791 <p>Si puo' controllare il corretto funzionamento del
1792 server seguendo i log di accesso a Squid:</p>
1793 <pre class="literal-block">
1794 # tail -f /var/log/squid3/access.log
1797 <p>In oltre e' possibile configurare diversi
1798 <em>analizzatori di log</em> come <tt class=
1799 "docutils literal"><span class=
1800 "pre">Webalizer</span></tt> per studiare i log di
1806 <div class="section" id="apache">
1807 <h1><a class="toc-backref" href=
1808 "#id29">3 Apache</a></h1>
1810 <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
1811 dato alla piattaforma server Web modulare piu' diffusa (ma
1812 anche al gruppo di lavoro open source che ha creato,
1813 sviluppato e aggiornato il software server), in grado di
1814 operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1816 <p>Un server web e' un processo, e per estensione il computer
1817 su cui e' in esecuzione, che si occupa di fornire, su
1818 richiesta del browser, una pagina web (spesso scritta in
1819 HTML). Le informazioni inviate dal server web viaggiano in
1820 rete trasportate dal protocollo HTTP. L'insieme di server web
1821 dà vita al World Wide Web, uno dei servizi piu'
1822 utilizzati di Internet.</p>
1824 <div class="section" id="pacchetti-da-installare">
1825 <h2><a class="toc-backref" href=
1826 "#id30">3.1 Pacchetti da
1827 installare::</a></h2>
1833 <p>Con la release 2.0 di Apache viene automaticamente resa
1834 disponibile anche la versione SSL (Secure Socket Layer,
1835 connessioni criptate ) del web server.</p>
1838 <div class="section" id="configurazione-di-apache">
1839 <h2><a class="toc-backref" href=
1840 "#id31">3.2 Configurazione di
1843 <p>I file di configurazione di apache si trovano nella
1844 cartella: <tt class="docutils literal"><span class=
1845 "pre">/etc/apache2</span></tt> e sono strutturati come
1846 descritto nel file <tt class=
1847 "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
1848 . Sostanzialmente lo schema e' il seguente:</p>
1850 <dl class="docutils">
1851 <dt>apache2.conf</dt>
1854 <p class="first">File di configurazione principale del
1857 <p class="last">httpd.conf e' il vecchio file di
1858 configurazione di Apache1, presente per motivi di
1859 retrocompatibilita' e' generalmente vuoto.</p>
1864 <dd>In questo file vengono specificate le porte sulle
1865 quali resta in ascolto il server web. Si noti che
1866 utilizzando dei virtual hosts generalmente viene
1867 specificata per questi la porta su cui ascoltare nel file
1868 di configurazione del virtual host, ad es: <tt class=
1869 "docutils literal"><span class=
1870 "pre"><VirtualHost</span> <span class=
1871 "pre">*:80></span></tt></dd>
1873 <dt>sites-available</dt>
1875 <dd>In questa cartella vengono raccolti i file di
1876 configurazione dei virtual host disponibili.</dd>
1878 <dt>sites-enabled</dt>
1880 <dd>In questa cartella sono contenuti dei link simbolici
1881 ai files in ../sites-available : se il link e' presente
1882 in questa cartella il virtual host e' abilitato.</dd>
1884 <dt>mods-available</dt>
1886 <dd>Stesso metodo per i moduli: in questa cartella ci
1887 sono i moduli veri e propri che verranno poi abilitati
1888 grazie all'esistenza di link simbolici nella cartella
1891 <dt>mods-enabled</dt>
1893 <dd>Moduli abilitati, effettivamente caricati.</dd>
1897 <div class="section" id="apache-conf">
1898 <h2><a class="toc-backref" href=
1899 "#id32">3.3 apache.conf</a></h2>
1901 <p>File di configurazione del servizio Apache, contiene le
1902 impostazioni generiche (ad esempio utilizzo della RAM e
1903 risorse di sistema) dell'intero servizio. Nella
1904 configurazione di default per Debian non viene definito un
1905 vero e proprio sito di default ma solo dei virtual
1908 <p>Guardiamo alcune direttive interessanti:</p>
1910 <dl class="docutils">
1913 <dd>Numero di secondi da aspettare prima di chiudere la
1914 connessione con il client. Questo parametro serve a
1915 liberare le risorse di sistema nel caso che un client,
1916 magari a causa di una connessione particolarmente lenta o
1917 instabili, tenga attivo indefinitamente un processo di
1922 <dd>L'estensione keep-alive (http 1.0) congiuntamente
1923 alle connessioni persistenti (http 1.1) permettono al
1924 server di rispondere a piu' richieste dei client mediante
1925 la stessa connessione. Il protocollo http per sua natura
1926 e' senza stato (<em>stateless</em> ), quindi ogni risorsa
1927 richiesta (per pagine web si pensi ad esempio alle
1928 immagini) dal client necessita di una connessione
1929 autonoma. Keep-alive permette di ottimizzare la
1930 connessione anche fino al 50% a seconda delle situazioni
1933 <dt>Server-Pool Size Regulation</dt>
1935 <dd>Questi parametri (StartServers, MinSpareServers, ecc.
1936 Tutti spiegati nel manuale di apache) servono per
1937 attribuire le risorse di sistema disponibili al server
1938 Apache. Tenere questi parametri bassi serve a limitare il
1939 rischio di Denial of Service per il server, nel caso
1940 offra altri servizi. I settagli di default sono come
1941 sempre abbastanza conservativi, se si conta di usare il
1942 proprio Apache per servire un sito web con molti
1943 visitatori sara' necessario aumentare sensibilmente le
1944 impostazioni di base.</dd>
1946 <dt>AccessFileName</dt>
1948 <dd>Il nome del file che viene onorato per modificare le
1949 impostazioni per una singola directory, legato alla
1950 direttiva AllowOverride .</dd>
1954 <div class="section" id="installazione-di-php">
1955 <h2><a class="toc-backref" href=
1956 "#id33">3.4 Installazione di PHP</a></h2>
1958 <p>Pacchetti da installare: <tt class=
1959 "docutils literal"><span class="pre">php5</span>
1960 <span class="pre">php-pear</span></tt></p>
1962 <div class="section" id="test-del-modulo-php">
1963 <h3><a class="toc-backref" href=
1964 "#id34">3.4.1 Test del modulo
1967 <p>Creare nella cartella <tt class=
1968 "docutils literal"><span class="pre">/var/www</span></tt>
1969 (o altra cartella visibile) un file con estensione *.php
1970 (es <tt class="docutils literal"><span class=
1971 "pre">/var/www/info.php</span></tt> contenete codice php
1972 eseguibile dall'interprete, ad es:</p>
1973 <pre class="literal-block">
1974 <?php phpinfo() ; ?>
1977 <p>Questa funzione di php generera' la tipica pagina con
1978 le impostazioni attuali per PHP. Richiamando la pagina
1979 (es: <tt class="docutils literal"><span class=
1980 "pre">http://localhost/info.php</span></tt> ) verra'
1981 generata dall'interprete PHP la pagina HTML e resa
1982 disponibile tramite Apache ai client HTTP, a prova del
1983 corretto funzionamento del modulo di PHP e della sua
1984 integrazione con il server web Apache. In caso contrario
1985 se il client http proporra' di scaricare la pagina invece
1986 che visualizzarla nel browser: non funziona l'interprete
1987 di php o sono mal configurati i MIME-type. prima di tutto
1988 assicurarsi di aver fatto ripartire Apache.</p>
1991 <div class="section" id=
1992 "installazione-del-supporto-per-mysql">
1993 <h3><a class="toc-backref" href=
1994 "#id35">3.4.2 Installazione del supporto
1997 <p>Installare i pacchetti:</p>
1998 <pre class="literal-block">
1999 php5-mysql phpmyadmin
2002 <p>Controllare tramite la pagina php.info che sia
2003 abilitato il supporto per Mysql (ripartito Apache,
2004 ricaricare la pagina e cercare con CTRL+f <tt class=
2005 "docutils literal"><span class=
2006 "pre">mysql</span></tt>).</p>
2009 <div class="section" id="phpmyadmin">
2010 <h3><a class="toc-backref" href=
2011 "#id36">3.4.3 phpmyadmin</a></h3>
2013 <p>L'interfaccia web Phpmyadmin non richiede
2014 necessariamente la presenza di un database Mysql locale,
2015 puo' infatti essere utilizzata per gestire database
2016 remoti (il suo file di configurazione: <tt class=
2017 "docutils literal"><span class=
2018 "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
2019 caso si voglia installare localmente Mysql si utilizzi il
2020 pacchetto <tt class="docutils literal"><span class=
2021 "pre">mysql-server</span></tt> .</p>
2023 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2024 <tt class="docutils literal"><span class=
2025 "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
2026 non fosse controllare che sia incluso il file <tt class=
2027 "docutils literal"><span class=
2028 "pre">/etc/phpmyadmin/apache.conf</span></tt> in
2029 <tt class="docutils literal"><span class=
2030 "pre">/etc/apache2/conf.d/</span></tt> .</p>
2033 <div class="section" id=
2034 "installazione-del-supporto-per-postgresql">
2035 <h3><a class="toc-backref" href=
2036 "#id37">3.4.4 Installazione del supporto
2037 per Postgresql</a></h3>
2039 <p>Installare i pacchetti:</p>
2040 <pre class="literal-block">
2041 php5-pgsql phppgadmin
2044 <p>Controllare tramite la pagina php.info che sia
2045 abilitato il supporto per PostgreSQL (ripartito Apache,
2046 ricaricare la pagina e cercare con CTRL+f <tt class=
2047 "docutils literal"><span class=
2048 "pre">pgsql</span></tt>).</p>
2051 <div class="section" id="phppgadmin">
2052 <h3><a class="toc-backref" href=
2053 "#id38">3.4.5 phppgadmin</a></h3>
2055 <p>L'interfaccia web Phppgadmin per il database server
2056 PostgreSQL non richiede necessariamente la presenza di un
2057 database locale, puo' infatti essere utilizzata per
2058 gestire database remoti (il suo file di configurazione:
2059 <tt class="docutils literal"><span class=
2060 "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
2061 caso si voglia installare localmente Mysql si utilizzi il
2062 pacchetto <tt class="docutils literal"><span class=
2063 "pre">postgresql</span></tt> .</p>
2065 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2066 <tt class="docutils literal"><span class=
2067 "pre">http://localhost/phppgadmin/</span></tt>, se cosi
2068 non fosse controllare che sia incluso il file <tt class=
2069 "docutils literal"><span class=
2070 "pre">/etc/phppgadmin/apache.conf</span></tt> in
2071 <tt class="docutils literal"><span class=
2072 "pre">/etc/apache2/conf.d/</span></tt> .</p>
2076 <div class="section" id="virtual-hosts">
2077 <h2><a class="toc-backref" href=
2078 "#id39">3.5 Virtual hosts</a></h2>
2082 <li><a class="reference external" href=
2083 "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
2085 <li><a class="reference external" href=
2086 "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
2087 http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
2091 <p>I virtual host permettono di avere piu' siti internet
2092 disponibili tramite lo stesso server web, eventualmente
2093 mappati su un solo indirizzo IP. Sono generalmente di due
2098 <li>Basati su <em>indirizzi IP</em>. Se si ha la
2099 possibilita' di avere piu' indirizzi IP dedicati per i
2100 diversi siti che si vuole servire. ES: <tt class=
2101 "docutils literal"><span class=
2102 "pre"><VirtualHost</span> <span class=
2103 "pre">192.168.0.2:80></span></tt> . Soluzione
2104 dispendiosa, si tende ad usarla solo se servono
2105 certificati di sicurezza (SSL ) dedicati per ogni
2108 <li>Basati su <em>nomi di dominio</em> che puntano allo
2109 stesso IP. Soluzione piu' economica e diffusa che si
2110 basa sulle funzionalita' di http 1.1 .</li>
2114 <p>Prenderemo in esame la gestione di virtual hosts basati
2115 su nomi di dominio.</p>
2117 <div class="section" id="gestione-dns">
2118 <h3><a class="toc-backref" href=
2119 "#id40">3.5.1 Gestione DNS</a></h3>
2121 <p>Prima di tutto per poter impostare i virtual hosts
2122 dovete avere un server DNS che risolva i vostri nomi di
2123 dominio sull'indirizzo IP del server. Questo si puo'
2124 ottenere in vari modi, ad es:</p>
2127 <dl class="docutils">
2128 <dt><em>Bind</em> (DNS server)</dt>
2130 <dd>Impostare i campi A nelle proprie zone gestite
2131 dal server DNS Bind. Ad es: <tt class=
2132 "docutils literal"><span class=
2133 "pre">papo</span>
2135 "pre">A</span>
2136 <span class="pre">212.22.136.248</span></tt></dd>
2138 <dt><em>Servizio DNS dinamico on line</em>.</dt>
2140 <dd>Utilizzare un servizio come ad es: <a class=
2141 "reference external" href=
2142 "https://www.dyndns.com/">https://www.dyndns.com/</a>
2143 per mappare nomi di dominio sul proprio indirizzo IP,
2144 comodo ad esempio se si dispone di un indirizzo IP
2145 pubblico (anche se dinamico) per la propria
2146 connessione ad internet.</dd>
2148 <dt><em>Dnsmasq</em> (DNS server)</dt>
2150 <dd>Utilizzabile al livello della rete locale per
2151 fare dei test, utilizzando direttive come: <tt class=
2152 "docutils literal"><span class=
2153 "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2155 <dt><tt class="docutils literal"><span class=
2156 "pre">/etc/hosts</span></tt></dt>
2158 <dd>Per prove sul proprio sistema potete impostare i
2159 nomi dei vostri virtual server nel file /etc/hosts
2164 <p>Query DNS con <tt class=
2165 "docutils literal"><span class="pre">dig</span></tt>:</p>
2166 <pre class="literal-block">
2169 ; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
2170 ;; global options: printcmd
2172 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
2173 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
2175 ;; QUESTION SECTION:
2176 ;177.piffa.net. IN A
2179 177.piffa.net. 0 IN A 10.10.208.177
2182 <p>La parte interessante e' l'<em>ANSWER SECTION</em>:
2183 <tt class="docutils literal"><span class=
2184 "pre">177.piffa.net.</span>
2186 "pre">0</span>
2187 <span class="pre">IN</span>
2189 "pre">A</span>
2190 <span class="pre">10.10.208.177</span></tt> . Il nome di
2191 dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2192 , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2193 dovra' essere disponibile un virtual host che corrisponde
2194 al nome <tt class="docutils literal"><span class=
2195 "pre">177.piffa.net</span></tt> (<tt class=
2196 "docutils literal"><span class=
2197 "pre">ServerName</span></tt>) .</p>
2200 <div class="section" id="virtual-host">
2201 <h3><a class="toc-backref" href=
2202 "#id41">3.5.2 Virtual host</a></h3>
2204 <p>Esempio di Virtual host:</p>
2205 <pre class="literal-block">
2206 <VirtualHost *:80 >
2207 ServerName 177.piffa.net
2208 DocumentRoot /var/www/177.piffa.net/
2209 ServerAdmin webmaster@177.piffa.net
2210 </VirtualHost>
2213 <ol class="arabic simple">
2214 <li><tt class="docutils literal"><span class=
2215 "pre"><VirtualHost</span> <span class=
2216 "pre">\*:80</span> <span class="pre">></span></tt>
2217 La prima riga indica l'inizio della stanza relativa al
2218 nostro virtual host, che ascoltera' su qualunque
2219 indirizzo IP (nel caso il server abbia piu' indirizzi
2220 dai quali e' raggiungibile) sulla porta <tt class=
2221 "docutils literal"><span class=
2222 "pre">80</span></tt>.</li>
2224 <li><tt class="docutils literal"><span class=
2225 "pre">Server/name</span></tt> precisa quale sara' il
2226 nome di dominio a cui verra' associato questo sito
2227 rispetto ad altri eventualmente presenti sullo stesso
2230 <li><tt class="docutils literal"><span class=
2231 "pre">DocumentRoot</span></tt> : il path della
2232 directory che contiene le pagine del sito.</li>
2234 <li><tt class="docutils literal"><span class=
2235 "pre">ServerAdmin</span></tt>: l'indirizzo del
2236 webmaster, in modo da poterlo contattare in caso di
2237 problemi col sito.</li>
2239 <li><tt class="docutils literal"><span class=
2240 "pre"></VirtualHost></span></tt>: <em>tag</em> di
2241 chiusura della stanza di definizione del virtual
2245 <p>Quelle che abbiamo appena visto sono le direttive
2246 essenziali per definire un sito virtuale, potrebbe essere
2247 utile aggiungere altre:</p>
2251 <dl class="first docutils">
2252 <dt><tt class="docutils literal"><span class=
2253 "pre">ErrorLog</span> <span class=
2254 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2257 <p class="first last">Log degli errori separato
2258 dai restanti siti web ospitati dal server.</p>
2264 <dl class="first docutils">
2265 <dt><tt class="docutils literal"><span class=
2266 "pre">LogLevel</span> <span class=
2267 "pre">warn</span></tt></dt>
2270 <p class="first last">Livello di importanza degli
2271 eventi loggati= warning <em>attenzione</em> .</p>
2277 <dl class="first docutils">
2278 <dt><tt class="docutils literal"><span class=
2279 "pre">CustomLog</span> <span class=
2280 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2281 <span class="pre">combined</span></tt></dt>
2284 <p class="first last">Log di accesso separati
2285 dagli altri siti, utile anche qua per statistiche
2286 di accesso per il solo sito virtuale.</p>
2292 <p>Potrebbe essere utile modificare le impostazioni di
2293 una intera directory, ad esempio per abilitare
2294 l'<tt class="docutils literal"><span class=
2295 "pre">AuthConfig</span></tt>:</p>
2296 <pre class="literal-block">
2297 <Directory "/var/www/miosito.net/privata">
2298 AllowOverride AuthConfig
2299 Options ExecCGI Indexes MultiViews FollowSymLinks
2305 <p><tt class="docutils literal"><span class=
2306 "pre">AllowOverride</span> <span class=
2307 "pre">AuthConfig</span></tt> ora vale per l'intera
2308 directory, come le altre opzioni.</p>
2312 <div class="section" id="negoziazione-accessi">
2313 <h2><a class="toc-backref" href=
2314 "#id42">3.6 Negoziazione accessi</a></h2>
2316 <p>Tipicamente quando si installa un server web il proprio
2317 desiderio e' di dare accesso ai materiali disponibili al
2318 maggior numero di visitatori possibile. Talvolta pero' puo'
2319 essere utile poter limitare questi accessi, ad esempio per
2320 escludere un <em>bot</em> indesiderato che scansiona
2321 ininterrottamente le nostre pagine o per creare una
2322 <em>Area Riservata</em> i cui materiali non devono essere
2323 disponibile a tutti.</p>
2325 <div class="section" id="limiti-su-base-ip">
2326 <h3><a class="toc-backref" href=
2327 "#id43">3.6.1 Limiti su base IP</a></h3>
2329 <p>La forma piu' semplice di restrizione degli accessi e'
2330 su base degli indirizzi IP dei client: tipicamente i siti
2331 web sono settati per dare accesso a chiunque:</p>
2332 <pre class="literal-block">
2333 <VirtualHost *:80 >
2335 <Directory "/var/www/177.piffa.net">
2339 </VirtualHost>
2342 <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2344 <pre class="literal-block">
2345 <VirtualHost *:80 >
2347 <Directory "/var/www/177.piffa.net">
2350 Deny from 192.168.0.1
2352 </VirtualHost>
2355 <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2356 materiali dell'intero sito virtuale, oppure potremmo
2357 lavorare su una sola directory:</p>
2358 <pre class="literal-block">
2359 <Directory "/var/www/miosito.net/limitata">
2361 Allow from 192.168.0.0./24
2366 <p>In questo modo solo la classe IP <tt class=
2367 "docutils literal"><span class=
2368 "pre">192.168.0.0/24</span></tt> potra' accedere alla
2369 directory <tt class="docutils literal"><span class=
2370 "pre">/limitata</span></tt> Si tenga pero' conto che e'
2371 relativamente facile per un malintenzionato cambiare il
2372 proprio indirizzo IP, oppure collegarsi da un altra zona.
2373 Meno facile e' accedere ad una classe privata trovandosi
2374 all'esterno di questa, ma ci sono comunque soluzioni piu'
2379 <div class="section" id="user-authentication">
2380 <h2><a class="toc-backref" href=
2381 "#id44">3.7 User Authentication</a></h2>
2383 <p>Si puo' negoziare gli accessi ad un area del sito
2384 tramite autenticazione basata su <em>nome utente /
2385 password</em>. Questo puo' venire utile per creare una area
2386 download <em>intranet</em>, alla quale possano accedere
2387 solo gli utenti previsti a prescindere dagli indirizzi IP
2388 dei loro client.</p>
2390 <p>Tramite il modulo di Apache <em>mod-auth</em> e'
2391 possibile implementare questo paradigma, per quanto
2392 esistano soluzioni piu' granulari e sofisticate, che
2393 richiedono pero' l'implementazione di interpreti di
2394 linguaggi di programmazione, criptazione delle passwords,
2395 gestione degli utenti ed eventualmente delle sessioni. Mod
2396 auth non richiede l'installazione di niente di tutto
2399 <p>link: <a class="reference external" href=
2400 "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2402 <div class="section" id="definire-la-cartella">
2403 <h3><a class="toc-backref" href=
2404 "#id45">3.7.1 Definire la
2407 <p>Decidere quale sara' il <em>path</em> della cartella
2408 da sottoporre ad autenticazione:</p>
2411 <tt class="docutils literal"><span class=
2412 "pre">mkdir</span> <span class=
2413 "pre">/var/www/177.piffa.net/privata</span></tt>
2417 <div class="section" id=
2418 "creazione-del-database-delle-passwords">
2419 <h3><a class="toc-backref" href=
2420 "#id46">3.7.2 Creazione del database
2421 delle passwords</a></h3>
2423 <p>Un modo semplice per gestire una database di
2424 <em>user-id / passwords</em> e' utilizzare l'utility
2425 <tt class="docutils literal"><span class=
2426 "pre">htpasswd</span></tt> di Apache. Questa crea un file
2427 in cui un <em>crypt</em> delle password viene associato
2430 <p>Si dovra' decidere dove tenere questo file, la cosa
2431 importante e' che non sia visibile nel sito web: non deve
2432 essere scaricabile dai visitatori. Deve essere cioe'
2433 all'esterno della <em>DocumentRoot</em>: un buon posto
2434 potrebbe essere la /home dell'utente.</p>
2436 <p>Creiamo (con il <em>flag</em> <tt class=
2437 "docutils literal"><span class="pre">-c</span></tt>) il
2438 file <tt class="docutils literal"><span class=
2439 "pre">/home/utente/passwords</span></tt> con l'utente
2440 <tt class="docutils literal"><span class=
2441 "pre">luca</span></tt>:</p>
2442 <pre class="literal-block">
2443 htpasswd -c /home/utente/passwords luca
2446 <p><tt class="docutils literal"><span class=
2447 "pre">htpasswd</span></tt> ci chiedera' la password da
2448 associare all'utente <tt class=
2449 "docutils literal"><span class="pre">luca</span></tt>.
2450 Per successive modifiche della password o aggiunta di
2451 nuovi utenti non sara' necessario usare il flag
2452 <tt class="docutils literal"><span class=
2453 "pre">-c</span></tt>.</p>
2456 <div class="section" id="id3">
2457 <h3><a class="toc-backref" href=
2458 "#id47">3.7.3 Configurazione di
2461 <p>Ora possiamo passare alla configurazione vera e
2462 propria di Apache, ma con una novita': andremo a inserire
2463 la voce in un <tt class="docutils literal"><span class=
2464 "pre">.htaccess</span></tt> invece che modificare
2465 (tramite una direttiva <tt class=
2466 "docutils literal"><span class=
2467 "pre"><Directory></span></tt> ) il file di
2468 impostazione del virtual-host.</p>
2470 <p>Questo per motivi pratici: solo l'utente <em>root</em>
2471 puo' modificare l'impostazione del virtual host nel file
2472 <tt class="docutils literal"><span class=
2473 "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2474 ma spesso il motivo per cui creiamo i virtual hosts e'
2475 ospitare i siti di altri utenti, che possono solo
2476 pubblicare (generalmente tramite <em>FTP</em>) i loro
2477 documenti nella loro <em>DocumentRoot</em>, senza poter
2478 quindi modificare in alcun modo la configurazione del
2481 <p>Dando agli utenti la possibilita' di modificare
2482 (<em>AllowOverride</em>) autonomamente alcuni parametri
2483 (in questo caso solo l'<em>AuthConfig</em>) relativi al
2484 funzionamento del loro spazio web ci togliera'
2485 l'incombenza di dover intervenire continuamente sui vari
2488 <p>Abilitiamo l'AllowOverride nel file di configurazione
2489 del virtual host per la sola directory <tt class=
2490 "docutils literal"><span class=
2491 "pre">privata</span></tt>:</p>
2492 <pre class="literal-block">
2493 <VirtualHost *:80 >
2494 ServerName 177.piffa.net
2495 DocumentRoot /var/www/177.piffa.net/
2496 ServerAdmin webmaster@177.piffa.net
2497 <Directory "/var/www/177.piffa.net/privata">
2498 AllowOverride AuthConfig
2500 </VirtualHost>
2503 <p>Per rendere il cambiamento effettivo sara' necessario
2504 fare un restart / reload di Apache.</p>
2506 <p>Ora sara' possibile, anche per l'utente di sistema,
2507 creare un file <tt class="docutils literal"><span class=
2508 "pre">.htaccess</span></tt> che sara' onorato da
2511 <p>/var/www/177.piffa.net/privata/.htaccess</p>
2512 <pre class="literal-block">
2513 # Messaggio visualizzato al prompt per l'autenticazione
2514 AuthName "Area privata soggetta ad autentizazione"
2515 # tipo di autenticazione da usarsi
2517 # File precedentemente generato con htpasswd
2518 AuthUserFile /home/utente/passwords
2520 # Negoziazione degli accessi
2521 # valid users permette l'accesso agli utenti specificati
2522 # nel file generato da htpasswd
2526 <p>Si noti che non e' necessario fare ripartire Apache
2527 per onorare i cambiamenti (un utente non avrebbe la
2528 possibilita' di farlo!).</p>
2530 <dl class="docutils">
2531 <dt>Oltre a <tt class="docutils literal"><span class=
2532 "pre">valid-users</span></tt> si potrebbe scegliere di
2533 usare la formula <tt class=
2534 "docutils literal"><span class="pre">users</span></tt>
2535 che permette di elencare esplicitamente gli
2538 <dd>require user pippo pluto</dd>
2541 <p>L'utente <em>paperino</em> che fosse comunque presente
2542 nel file generato da htpasswd non potrebbe accedere alla
2545 <dl class="docutils">
2546 <dt>Nel caso ci fossero molti utenti conviene gestirli
2547 tramite <em>gruppi</em>::</dt>
2549 <dd>require group staff studenti</dd>
2552 <p>I gruppi vengono definiti in un file in modo simile a
2553 <tt class="docutils literal"><span class=
2554 "pre">/etc/groups</span></tt> per gli utenti di
2556 <pre class="literal-block">
2558 studenti: lucap federico luca
2561 <p>da richiamare tramite la direttiva <tt class=
2562 "docutils literal"><span class=
2563 "pre">AuthGroupFile</span></tt>.</p>
2567 <div class="section" id="cavets">
2568 <h2><a class="toc-backref" href=
2569 "#id48">3.8 Cavets</a></h2>
2571 <p>Problemi di cache:</p>
2575 <li>Proxy: nei settaggi del browser specificare di non
2576 utilizzare un server proxy http per il sito web locale
2577 (o per gli altri che si stanno monitorando). Se si ha
2578 il controllo del proxy server: stopparlo, ricaricare la
2579 pagina (operazione che fallira'), far ripartire il
2580 proxy, ricaricare la pagina.</li>
2582 <li>Provare con un altro browser, o cercare di svuotare
2583 la cache chiudere/riaprire l'applicativo. Provare a
2584 fermare Apache, ricaricare la pagina (operazione che
2585 fallira'), far ripartire Apache, ricaricare la
2592 <div class="section" id="domain-name-system">
2593 <h1><a class="toc-backref" href=
2594 "#id49">4 Domain Name System</a></h1>
2596 <p>Domain Name System (spesso indicato con DNS) e' un
2597 servizio utilizzato per la risoluzione di nomi di host in
2598 indirizzi IP e viceversa. Il servizio e' realizzato tramite
2599 un sistema <strong>gerarchico</strong> (quindi una struttura
2600 ad albero, simile ai <em>file system</em>)
2601 <strong>distribuito</strong> (ogni server DNS facente parte
2602 del sistema puo' mantenere solo una parte delle informazioni,
2603 ad esempio per la sua sola <em>zona</em>), costituito dai
2606 <p>I DNS sono un servizio <em>core</em> (fondamentale) per la
2607 rete internet come per qualunque rete locale. Ad esempio
2608 durante la navigazione web un client vorrebbe vedere
2609 l'<em>URL</em> <tt class="docutils literal"><span class=
2610 "pre">http://ww.piffa.net/</span></tt>, quindi per potersi
2611 connettere via <em>http</em> al server web deve prima
2612 ottenere l'indirizzo IP del <em>server http</em>
2613 corrispondente a <em>www.piffa.net</em>. Se il DNS gli
2614 fornisce un IP sbagliato l'utente non potra' raggiungere il
2615 servizio: di fatto e' come se il serve http fosse spento.</p>
2617 <p>Stessa cosa vale per gli altri servizi, come la posta
2618 elettronica, ssh, ecc. : <em>prima si deve effettuare una
2621 <p>Potrebbe verificarsi uno scenario simile a questo: i
2622 vostri server per i siti web funzionano correttamente come i
2623 siti ospitati, stessa cosa per i vostri server di posta, IMAP
2624 e POP3, e tutto il resto. Ma se poi un errore nella
2625 configurazione del DNS non rende raggiungibile l'intero
2626 <em>sito</em>: per l'utente finale e' come se nulla
2629 <p>Infatti quando si parla di un intervento della Polizia
2630 Postale per l'<em>oscuramento</em> di un sito dal punto di
2631 vista pratico questo si traduce generalmente nella rimozione
2632 o mistificazione del record DNS relativo a quel dominio (la
2633 <em>PP</em> ha facolta' di chiedere un simile intervento ai
2634 principali provider internet che forniscono connettivita'
2635 agli utenti italiani, oltre che poter agire direttamente sul
2636 NIC italiano per i domini della TLD <em>.it</em>)</p>
2638 <p>L'operazione di convertire un nome in un indirizzo e'
2639 detta risoluzione DNS, convertire un indirizzo IP in nome e'
2640 detto risoluzione inversa.</p>
2643 Un <em>Registar</em> e' un operatore che ha la facolta'
2644 (accreditamento da parte dell ICANN) di registrare i domini
2645 di secondo livello per gli utenti finali, dietro compenso
2646 di una modica cifra (una decina di euro) che vale come
2647 contributo su base annuale per il mantenimento
2648 dell'infrastruttura.
2651 <div class="section" id="risoluzione-inversa">
2652 <h2><a class="toc-backref" href=
2653 "#id50">4.1 Risoluzione Inversa</a></h2>
2655 <p>Per la risoluzione inversa sono invece i provider di
2656 connettivita' a gestire i DNS: se volete impostare il
2657 <em>PTR</em> associato al vostro indirizzo IP dovete
2658 contattare il vostro provider (tipo <em>telecom</em> per
2659 una connessione ADSL) e <em>non il Registar del vostro
2662 <p>Ad esempio all'IP <tt class=
2663 "docutils literal"><span class=
2664 "pre">212.22.136.248</span></tt> era associato un PTR
2665 <tt class="docutils literal"><span class=
2666 "pre">bender.piffa.net</span></tt>, corrispondente al
2667 record <tt class="docutils literal"><span class=
2668 "pre">212</span></tt> facente parte della zona <tt class=
2669 "docutils literal"><span class=
2670 "pre">136.22.212.in-addr.arpa</span></tt> gestito dal
2671 provider Tiscali/Nextra proprietario della classe C
2672 <tt class="docutils literal"><span class=
2673 "pre">212.22.136.0</span></tt>. Se avete un solo IP
2674 conviene lasciare al fornitore la gestire del PTR, ma se
2675 avete a disposizione un'itera classe potete chiedere sempre
2676 al vostro provider che vi <em>deleghi</em> la gestione
2677 della zona tramite i vostri DNS.</p>
2679 <p>Per alcuni servizi, ad esempio la spedizione della posta
2680 elettronica, e' richiedeiesto che venga impostata
2681 correttamente l'associazione tra il PTR dell'indirizzo IP
2682 usato dal server di postai e il record A RR al quale questo
2683 punta( RFC1912 sezione 2.1, paragrafo 2).</p>
2688 <li><a class="reference external" href=
2689 "http://www.faqs.org/rfcs/rfc1912.html">http://www.faqs.org/rfcs/rfc1912.html</a>
2690 2.1 Inconsistent, Missing, or Bad Data</li>
2692 <li><a class="reference external" href=
2693 "http://www.ietf.org/rfc/rfc2505.txt">http://www.ietf.org/rfc/rfc2505.txt</a></li>
2697 <div class="section" id="nomi-di-dominio">
2698 <h2><a class="toc-backref" href=
2699 "#id51">4.2 Nomi di dominio</a></h2>
2701 <p>Un nome a dominio e' costituito da una serie di stringhe
2702 separate da punti, ad esempio bender.piffa.net. I nomi di
2703 dominio si leggono da destra verso sinistra: <em>TLD</em> o
2704 dominio di primo livello <tt class=
2705 "docutils literal"><span class="pre">net</span></tt>,
2706 secondo livello <tt class="docutils literal"><span class=
2707 "pre">piffa</span></tt>, terzo livello <tt class=
2708 "docutils literal"><span class="pre">bender</span></tt>. Il
2709 dominio di primo livello (o TLD, Top Level Domain,
2710 pronunciato <em>tilde</em> in Italia), per esempio .net o
2711 .it sono limitati e decisi direttamente dall'ente
2712 assegnatario ICANN ( Internet Corporation for Assigned
2713 Names and Numbers).</p>
2715 <p>L'utente finale potra' chiedere l'assegnazione (pagando
2716 un contributo al Register preferito per il mantenimento
2717 delle spese dell'infrastruttura) di un dominio di
2718 <em>secondo</em> livello (es <tt class=
2719 "docutils literal"><span class="pre">piffa</span></tt>) di
2720 una delle varie TLD disponibili (noi italiani diciamo
2721 <em>tildi</em>), sempre che non sia gia' stato assegnato a
2724 <p>Ottenuto il secondo livello sara' l'utente a gestirlo:
2725 potra' in stanziare domini di terzo livello (es <tt class=
2726 "docutils literal"><span class="pre">bender</span></tt>) e
2727 anche oltre (es www.andrea.bender.piffa.net). Tali records
2728 saranno mantenuti dall'utente, sotto la sua responsbilita':
2729 se il proprio server DNS non fosse raggiungibile o
2730 risultasse mal configurato gli utenti non potrebbero
2731 risolvere / raggiungere i siti di loro interesse.</p>
2733 <p>Tipicamente si ha almeno un server DNS secondario per
2734 garantire la sussistenza del servizio in caso di guasto del
2735 DNS principale. I secondari <em>replicano</em> i dati
2736 presenti nei DNS principali.</p>
2739 <div class="section" id="tipologie-di-record">
2740 <h2><a class="toc-backref" href=
2741 "#id52">4.3 Tipologie di record</a></h2>
2743 <p>Ad un nome DNS possono corrispondere diversi tipi di
2744 informazioni. Per questo motivo, esistono diversi tipi di
2745 record DNS. Ogni voce del database DNS deve essere
2746 caratterizzata da un tipo. I principali tipi sono:</p>
2749 <li>Record A - Indica la corrispondenza tra un nome ed
2750 uno (o piu') indirizzi IP (per la precisione indirizzi
2751 IPv4, ovvero la versione attualmente in uso).</li>
2753 <li>Record MX - (Mail eXchange) indica a quali server
2754 debba essere inviata la posta elettronica per un certo
2757 <li>Record CNAME - Sono usati per creare un alias, ovvero
2758 per fare in modo che lo stesso calcolatore sia noto con
2759 piu' nomi. Uno degli utilizzi di questo tipo di record
2760 consiste nell'attribuire ad un host che offre piu'
2761 servizi un nome per ciascun servizio. In questo modo, i
2762 servizi possono poi essere spostati su altri host senza
2763 dover riconfigurare i client, ma modificando solo il
2766 <li>Record PTR - Il DNS viene utilizzato anche per
2767 realizzare la risoluzione inversa, ovvero per far
2768 corrispondere ad un indirizzo IP il corrispondente nome a
2769 dominio. Per questo si usano i record di tipo "PTR" (e
2770 una apposita zona dello spazio dei nomi
2773 <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
2775 <li>Record SRV - Identificano il server per un
2776 determinato servizio all'interno di un dominio. Possono
2777 essere considerati una generalizzazione dei record
2780 <li>Record TXT - Associano campi di testo arbitrari ad un
2781 dominio. Questi campi possono contenere una descrizione
2782 informativa oppure essere utilizzati per realizzare
2786 <p>Vi sono anche tipi di record "di servizio", necessari al
2787 funzionamento del database distribuito: * Record NS -
2788 Utilizzato per indicare quali siano i server DNS
2789 autoritativi per un certo dominio, ovvero per delegarne la
2790 gestione. * Record SOA - (Start of Authority) usato per la
2791 gestione delle zone DNS.</p>
2794 <div class="section" id="utilizzo">
2795 <h2><a class="toc-backref" href=
2796 "#id53">4.4 Utilizzo</a></h2>
2798 <p>I computer vengono identificati in rete grazie agli
2799 indirizzi <em>IP</em>, questi pero' non sono comodi per gli
2800 utenti come riferimento per i vari server. Ad esempio
2801 sarebbe scomodo riferirsi al motore di ricerca Goggle con
2802 uno dei suoi IP: <tt class="docutils literal"><span class=
2803 "pre">74.125.43.104</span></tt>, e' preferibile usare il
2804 nome di dominio <em>www.google.com</em>:</p>
2805 <pre class="literal-block">
2806 ping -c 1 www.google.com
2807 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
2811 <div class="section" id="risoluzione-dei-nomi-di-dominio">
2812 <h2><a class="toc-backref" href=
2813 "#id54">4.5 Risoluzione dei nomi di
2816 <p>Ci sono vari strumenti per interrogare i server DNS e
2817 ottenere l'indirizzo IP associato al nome di dominio che ci
2819 <pre class="literal-block">
2820 $ host www.piffa.net
2821 www.piffa.net is an alias for piffa.net.
2822 piffa.net has address 65.98.21.97
2823 piffa.net mail is handled by 10 65.98.21.97
2826 $ nslookup www.piffa.net
2827 Server: 192.168.0.10
2828 Address: 192.168.0.10#53
2830 Non-authoritative answer:
2831 www.piffa.net canonical name = piffa.net.
2833 Address: 65.98.21.97
2838 ; <<>> DiG 9.6.0-P1 <<>> www.piffa.net
2839 ;; global options: +cmd
2841 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47751
2842 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
2844 ;; QUESTION SECTION:
2845 ;www.piffa.net. IN A
2848 www.piffa.net. 3489 IN CNAME piffa.net.
2849 piffa.net. 3489 IN A 65.98.21.97
2851 ;; AUTHORITY SECTION:
2852 piffa.net. 86289 IN NS ns2.mydomain.com.
2853 piffa.net. 86289 IN NS ns1.mydomain.com.
2854 piffa.net. 86289 IN NS ns4.mydomain.com.
2855 piffa.net. 86289 IN NS ns3.mydomain.com.
2857 ;; ADDITIONAL SECTION:
2858 ns1.mydomain.com. 96208 IN A 64.94.117.193
2859 ns2.mydomain.com. 96208 IN A 64.94.31.67
2860 ns3.mydomain.com. 96208 IN A 66.150.161.137
2861 ns4.mydomain.com. 96208 IN A 63.251.83.74
2863 ;; Query time: 1 msec
2864 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2865 ;; WHEN: Sun May 10 21:23:11 2009
2866 ;; MSG SIZE rcvd: 209
2869 <p>Lo strumento piu' esaustivo e' <tt class=
2870 "docutils literal"><span class="pre">dig</span></tt>,
2871 installabile con il pacchetto <tt class=
2872 "docutils literal"><span class="pre">dnsutils</span></tt>
2876 <div class="section" id="dig">
2877 <h2><a class="toc-backref" href=
2878 "#id55">4.6 Dig</a></h2>
2880 <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
2881 "docutils literal"><span class="pre">dig</span></tt> per
2882 l'interrogazione dei DNS Server:</p>
2883 <pre class="literal-block">
2886 ; <<>> DiG 9.6.0-P1 <<>> www.google.it
2887 ;; global options: +cmd
2889 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18816
2890 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
2892 ;; QUESTION SECTION:
2893 ;www.google.it. IN A
2896 www.google.it. 250683 IN CNAME www.google.com.
2897 www.google.com. 334819 IN CNAME www.l.google.com.
2898 www.l.google.com. 186 IN A 74.125.43.103
2899 www.l.google.com. 186 IN A 74.125.43.104
2900 www.l.google.com. 186 IN A 74.125.43.147
2901 www.l.google.com. 186 IN A 74.125.43.99
2903 ;; AUTHORITY SECTION:
2904 l.google.com. 80856 IN NS f.l.google.com.
2905 l.google.com. 80856 IN NS d.l.google.com.
2906 l.google.com. 80856 IN NS b.l.google.com.
2907 l.google.com. 80856 IN NS c.l.google.com.
2908 l.google.com. 80856 IN NS a.l.google.com.
2909 l.google.com. 80856 IN NS e.l.google.com.
2910 l.google.com. 80856 IN NS g.l.google.com.
2912 ;; Query time: 1 msec
2913 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2914 ;; WHEN: Sun May 10 21:34:47 2009
2915 ;; MSG SIZE rcvd: 255
2918 <dl class="docutils">
2921 <dd>(senza opzioni o oggetti) Fornisce l'elenco dei
2922 <em>root server</em> utilizzati. I root server sono i
2923 server che mantengono le informazioni sui domini di primo
2924 livello (TLD) e sono quindi il punto di partenza per
2925 scorrere nella directory dei DNS per recuperare le
2926 informazioni (tipicamente un campo <tt class=
2927 "docutils literal"><span class="pre">A</span></tt> per un
2928 indirizzo IP) che ci servono per raggiungere un certo
2937 <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
2938 . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
2939 B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
2940 192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
2941 F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
2942 192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
2943 K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
2944 192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
2945 J.ROOT-SERVERS.NET. . 192032 IN NS
2946 D.ROOT-SERVERS.NET.</p>
2951 <dl class="docutils">
2952 <dt>dig @nome_dns</dt>
2954 <dd>Permette di fare una query ad un server dns
2955 particolare. Es: <tt class=
2956 "docutils literal"><span class="pre">dig</span>
2957 <span class="pre">@151.99.25.1</span> <span class=
2958 "pre">www.google.it</span></tt></dd>
2960 <dt>dig MX www.google.it</dt>
2962 <dd>Chiede un campo in particolare, in questo caso il
2965 <dt>dig ANY www.google.it</dt>
2967 <dd>Chiede tutti i campi, non solo i campi
2970 <dt>dig -x 74.125.43.104</dt>
2972 <dd>Effettua una richiesta inversa: dall'IP al PTR
2977 <div class="section" id="resolv-conf">
2978 <h2><a class="toc-backref" href=
2979 "#id56">4.7 resolv.conf</a></h2>
2981 <p>Il file <tt class="docutils literal"><span class=
2982 "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
2983 sul dns usato dal sistema, in genere anche altre
2984 applicazioni che devono effettuare query DNS leggono
2985 resolv.conf per conoscere l'ubicazione del DNS.</p>
2987 <p>/etc/resolv.conf:</p>
2991 <li><tt class="docutils literal"><span class=
2992 "pre">nameserver</span></tt>: indica il nameserver da
2993 utilizzare, indicato con l'indirizzo IP.</li>
2995 <li><tt class="docutils literal"><span class=
2996 "pre">domain</span></tt>: indica il nome di dominio
2997 della rete attuale, vedi voce successiva.</li>
2999 <li><tt class="docutils literal"><span class=
3000 "pre">search</span></tt>: nome di dominio usato dalla
3001 rete sul quale cercare gli hosts. Ad esempio se
3002 impostato su <tt class="docutils literal"><span class=
3003 "pre">piffa.net</span></tt> pingando l' host <tt class=
3004 "docutils literal"><span class="pre">bender</span></tt>
3005 viene automaticamente fatto un tentativo di ricerca per
3006 <tt class="docutils literal"><span class=
3007 "pre">bender.piffa.net</span></tt>.</li>
3011 <p>Si veda anche la pagina man di resolv.conf.</p>
3013 <p>Attenzione: se si usa un client DHCP o simile questo
3014 file potra' essere riscritto automaticamente in base a
3015 quanto ottenuto dal DHCP. Si veda la documentazione del
3016 pacchetto <tt class="docutils literal"><span class=
3017 "pre">resolvconf</span></tt>.</p>
3020 <div class="section" id="etc-hosts">
3021 <h2><a class="toc-backref" href=
3022 "#id57">4.8 /etc/hosts</a></h2>
3024 <p>Tabella statica per l'associazione tra IP e nomi di
3026 <pre class="literal-block">
3031 127.0.0.1 localhost.localdomain localhost 10.10.208.162
3032 daniela daniela.piffa.net 10.10.208.254 mirror
3033 mirror.piffa.net 91.191.138.15 thepiratebay.org
3034 192.168.0.11 chrome chrome.mydomain.com
3037 <p>Il contenuto e' un associazione tra un <em>IP</em> e
3038 stringhe di testo (anche piu' di una es: <tt class=
3039 "docutils literal"><span class="pre">mirror</span></tt> e
3040 <tt class="docutils literal"><span class=
3041 "pre">mirror.piffa.net</span></tt>), un record per
3044 <p>Il problema e' la gestione di questo file: quando gli
3045 host cambiano IP si devono aggiornare i records, e poi c'e'
3046 il problema di distribuire questo file tra i vari hosts
3047 della propria LAN. Un metodo semplice per distribuire
3048 questo file e' utilizzare <tt class=
3049 "docutils literal"><span class="pre">Dnsmasq</span></tt>:
3050 questo infatti legge e onora il file <tt class=
3051 "docutils literal"><span class="pre">hosts</span></tt>
3052 locale e lo <em>distribuisce</em> ai clients.</p>
3054 <p>Modificare (riconducendola a un IP interno, cosi'
3055 annullandola) la risoluzione di un nome di dominio e' un
3056 modo drastico e funzionale per <em>annullarlo</em>
3057 rendendolo indisponibile alla propria rete locale, ad
3058 esempio aggiungere al file <tt class=
3059 "docutils literal"><span class=
3060 "pre">/etc/hosts</span></tt>:</p>
3061 <pre class="literal-block">
3062 127.0.0.1 www.facebook.com
3065 <p>Impedira' agli utenti della LAN di raggiungere
3066 <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
3069 <div class="section" id="hostname">
3070 <h2><a class="toc-backref" href=
3071 "#id58">4.9 Hostname</a></h2>
3073 <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
3074 (e modificabile) con il comando <tt class=
3075 "docutils literal"><span class=
3076 "pre">hostname</span></tt>.</p>
3078 <p>Per modificare in modo permanente il nome del computer
3079 si modifichi il contenuto del file <tt class=
3080 "docutils literal"><span class=
3081 "pre">/etc/hostname</span></tt>.</p>
3083 <p>Tipicamente si vuole mantenere una correlazione tra il
3084 nome dell' host, o meglio la stringa con cui il server si
3085 qualifica all'esterno, e il <em>PTR</em> dell'IP. Nel caso
3086 di <em>servizi virtuali</em> ci sara' un <em>nome
3087 server</em> principale associato al <em>PTR</em> condiviso.
3088 Non e' automatico che un servizio, ad esempio un server di
3089 posta, si qualifichi leggendo il contenuto di questo file e
3090 magari aggiungendo come suffisso il dominio di cui fa parte
3091 l' host: a volte questo parametro puo' essere specificato
3092 nel file di configurazione del servizio:</p>
3093 <pre class="literal-block">
3094 * Squid: ``visible_hostname``
3096 * Postfix: ``myhostname``
3099 <p>Si faccia attenzione a non aver un hostname puramente
3100 numerico: ad es. <tt class="docutils literal"><span class=
3101 "pre">161</span></tt>. E' opportuno che il nome sia
3102 comunque un alfanumerico: <tt class=
3103 "docutils literal"><span class="pre">host-161</span></tt> o
3108 <div class="section" id="dnsmasq">
3109 <h1><a class="toc-backref" href=
3110 "#id59">5 DNSmasq</a></h1>
3112 <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
3113 forwarder e un server DHCP caratterizzato dalla facilita' di
3114 configurazione, leggerezza e dalla possibilita' di modificare
3115 rapidamente i record DNS serviti alla rete. Puo' essere anche
3116 utilizzato come <cite>server per il boot da rete
3117 <http://www.debian-administration.org/articles/478>_</cite>
3120 <p>Dnsmasq e' un interessante alternativa all'uso del server
3121 DNS Bind in modalita' cache-only (non autoritativo)
3122 accompagnato dal server DHCPd. I vantaggi sono:</p>
3125 <li>Leggerezza: puo' essere fatto girare su una macchina
3126 relativamente debole in caso di bisogno.</li>
3128 <li>Rapidita' di configurazione (in particolare per servire
3129 dei record A / MX alla rete, modificando al volo i valori
3130 originali ospitati sul server DNS pubblico).</li>
3132 <li>Ben integrato con connessioni PPP : e' ingrado di
3133 rilevare i cambiamenti dei dns suggeriti e impostarli come
3134 forwarders (utile se dovete rendere disponibile rapidamente
3135 una connessione a internet a una rete in difficolta').</li>
3138 <p>Tutto cio' rende Dnsmasq una soluzione valida in
3139 particolare quando si deve intervenire in una rete
3140 pre-esistente in cui il server principale e' in crisi: si
3141 potra' utilizzare Dnsmasq anche su una macchina piu' debole e
3142 <em>mascherare</em> i servizi al momento non disponibili.
3143 Molto utile per scopi didattici, sopratutto per testare
3144 server SMTP impostando al volo i campi MX per nomi di dominio
3147 <div class="section" id="configurazione">
3148 <h2><a class="toc-backref" href=
3149 "#id60">5.1 Configurazione</a></h2>
3151 <p>Vediamo alcune direttive di basi del file di
3152 configurazione <tt class="docutils literal"><span class=
3153 "pre">/etc/dnsmasq.conf</span></tt> utili per la
3154 configurazione sia del DNS cache che per il DHCP
3157 <dl class="docutils">
3158 <dt>domain-needed</dt>
3160 <dd>Non inoltrare query ai server DNS esterni per nomi
3161 semplici (es andrea, portatile, pippo) che verranno
3162 risolti solo in locale o causeranno direttamente una
3163 risposta <em>not found</em> .</dd>
3167 <dd>Simile alla voce precedente ma per i reverse
3172 <dd>Nome di dominio della rete da passare ai client.</dd>
3174 <dt>expand_hosts</dt>
3176 <dd>Aggiunge il <tt class="docutils literal"><span class=
3177 "pre">nome</span> <span class="pre">host</span></tt> (
3178 <tt class="docutils literal"><span class=
3179 "pre">/etc/hostname</span></tt>) dei client al nome di
3180 dominio per qualificarli in rete, senza bisogno di dover
3181 comporre a un elenco statico di record nel file
3182 <tt class="docutils literal"><span class=
3183 "pre">/etc/hosts</span></tt> o nello stesso file di
3184 configurazione di dnsmasq. Es: se un vostro client si
3185 chiama <tt class="docutils literal"><span class=
3186 "pre">chrome</span></tt> e il vostro dominio <tt class=
3187 "docutils literal"><span class=
3188 "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
3189 il campo <em>A</em> per il dominio <tt class=
3190 "docutils literal"><span class=
3191 "pre">chrome.piffa.net</span></tt> diretto all'ip che
3192 verra' assegnato al client.</dd>
3196 <div class="section" id="dhcp">
3197 <h2><a class="toc-backref" href=
3198 "#id61">5.2 DHCP</a></h2>
3200 <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
3201 al file di configurazione il <em>range</em> degli IP che si
3202 vuole assegnare ai client con il <em>lease time</em> (tempo
3203 di rilascio: quanto a lungo saranno validi gli IP
3204 assegnati) espresso in ore.</p>
3206 <p>Si faccia <em>attenzione</em>: in una rete puo' essere
3207 presente <strong>un solo server DHCP</strong>, o per meglio
3208 dire qualunque server DHCP ascolta sul broadcast <tt class=
3209 "docutils literal"><span class=
3210 "pre">255.255.255.255</span></tt> e potrebbe rispondere a
3211 un pacchetto di richiesta DHCP. Quindi non fate partire
3212 inavvertitamente un server DHCP in una rete gia' servita e
3213 <strong>non vi azzardate ad andare in giro con un portatile
3214 con un server DHCP attivo</strong> nelle reti altrui.
3215 Questo vale anche per i laboratori di informatica dei corsi
3216 di reti: non fate partire il vostro server DHCP se siete
3217 collegati alla rete interna!</p>
3219 <p>/etc/dnsmasq.conf (riga 118):</p>
3220 <pre class="literal-block">
3221 dhcp-range=192.168.0.20,192.168.0.50,24h
3225 <div class="section" id="dns-cache">
3226 <h2><a class="toc-backref" href=
3227 "#id62">5.3 DNS cache</a></h2>
3229 <p>Aggiungere al file <tt class=
3230 "docutils literal"><span class=
3231 "pre">/etc/resolv.conf</span></tt> il nameserver localhost
3232 in cima alla lista dei <em>nameserver</em> disponibili.
3233 Dnsmasq usera' la propria cache e in caso non abbia
3234 disponibile il <em>record DNS</em> richiesto fara' partire
3235 una query al primo DNS:</p>
3236 <pre class="literal-block">
3237 nameserver 127.0.0.1
3240 <p>Questo pero' potrebbe essere problematico se un altro
3241 servizio, ad esempio il DHCP client, riscrive il contenuto
3242 del file <tt class="docutils literal"><span class=
3243 "pre">/etc/resolv.conf</span></tt>. Per superare il
3244 problema si aggiunga (riga 20) al file di configurazione
3245 <tt class="docutils literal"><span class=
3246 "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
3247 <pre class="literal-block">
3248 prepend domain-name-servers 127.0.0.1;
3251 <p>Oppure potrebbe essere il nostro <em>PPP client</em>
3252 (per la connessione ADSL) a intervenire sul file <tt class=
3253 "docutils literal"><span class=
3254 "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
3255 <tt class="docutils literal"><span class=
3256 "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
3257 <tt class="docutils literal"><span class=
3258 "pre">usepeerdns</span></tt>. Se la vostra connessione ad
3259 internet e' ADSL raramente dovreste aver bisogno di
3260 cambiare i DNS una volta impostati (a meno che non usiate
3265 <div class="section" id="bind-dns-autoritativo">
3266 <h1><a class="toc-backref" href=
3267 "#id63">6 Bind : DNS Autoritativo</a></h1>
3269 <p>Le soluzioni viste possono bastare per la rete locale o
3270 per fare delle prove, ma prima o poi verra' il momento in cui
3271 si e' chiamati a gestire dei domini su internet: lo standard
3272 e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
3275 <p>Installare i pacchetti:</p>
3276 <pre class="literal-block">
3280 <div class="section" id="id4">
3281 <h2><a class="toc-backref" href=
3282 "#id64">6.1 DNS cache</a></h2>
3284 <p>Bind appena installato funzionera' come DNS cache: si
3285 faccia un test con un <tt class=
3286 "docutils literal"><span class="pre">dig</span>
3287 <span class="pre">@localhost</span></tt> . Bind a
3288 differenza di Dnsmasq e' autonomo: non ha bisogno di
3289 forwardare (inoltrare) le query a un DNS esterno: queste
3290 verranno risolte direttamente da Bind partendo dai <em>DNS
3291 root servers</em>.</p>
3293 <p>E' comunque possibile impostare dei DNS forwarders,
3294 tipicamente i DNS server forniti dal proprio provider, per
3295 velocizzare le query:</p>
3297 <p>/etc/bind/named.conf.options (riga 13):</p>
3298 <pre class="literal-block">
3304 <p>Nel caso si voglia usare Bind solo come server DNS cache
3305 per la propria LAN senza ospitare delle zone DNS pubbliche
3306 sara' il caso di limitare gli accessi al server alla sola
3309 <p>/etc/bind/named.conf.options (riga 19):</p>
3310 <pre class="literal-block">
3311 // Se il proprio server ha IP 10.10.208.254
3312 // sulla rete LAN privata:
3313 listen-on { 10.10.208.254; }
3316 <p>E non si lasci il server in ascolto su uno degli
3317 eventuali indirizzi IP pubblici.</p>
3319 <p>Se questo non fosse possibile si puo' sempre lavorare su
3320 una <em>acl</em>:</p>
3322 <p>/etc/bind/named.conf</p>
3323 <pre class="literal-block">
3325 10.10.208.0/24 ; 127.0.0.0/8 ;
3329 <p>Per poi aggiungere all'interno della stanza options la
3330 direttiva che abilita' l'entita' <tt class=
3331 "docutils literal"><span class=
3332 "pre">localnet</span></tt>:</p>
3334 <p>/etc/bind/named.conf.options</p>
3335 <pre class="literal-block">
3336 allow-query {"localnet" ;} ;
3340 <div class="section" id="ospitare-una-zona">
3341 <h2><a class="toc-backref" href=
3342 "#id65">6.2 Ospitare una zona</a></h2>
3344 <p>Se avete acquistato un nome di dominio e vi serve un
3345 software DNS per gestirlo Bind e' la scelta piu' diffusa.
3346 Ora vedremo come configurare una <em>zona</em> (come
3347 piffa.net) in modo che Bind sia autoritativoper questa,
3348 rispondendo alle query DNS di tutta la rete internet.</p>
3350 <div class="section" id="named-conf-local">
3351 <h3><a class="toc-backref" href=
3352 "#id66">6.2.1 named.conf.local</a></h3>
3354 <p>Prima di tutti impostiamo il server bind per gestire
3355 la zona, per non fare confusione e' opportuno inserire le
3356 propie zone DNS nel file <tt class=
3357 "docutils literal"><span class=
3358 "pre">named.conf.local</span></tt> e non in <tt class=
3359 "docutils literal"><span class=
3360 "pre">named.conf</span></tt>.</p>
3362 <p>named.conf.local:</p>
3363 <pre class="literal-block">
3365 // Do any local configuration here
3368 // Consider adding the 1918 zones here, if they are not used in your
3370 //include "/etc/bind/zones.rfc1918";
3374 file "/etc/bind/pz/piffa.net";
3378 <dl class="docutils">
3379 <dt>type master</dt>
3381 <dd>Il nostro server DNS sara' il principale, al quale
3382 poi potremo affiancare dei DNS secondari nel caso
3383 questo non sia disponibile.</dd>
3385 <dt>file "/etc/bind/pz/piffa.net"</dt>
3387 <dd>Dove verranno inserite le informazioni vere e
3388 propie di questa zona.</dd>
3392 <div class="section" id="configurazione-della-zona">
3393 <h3><a class="toc-backref" href=
3394 "#id67">6.2.2 Configurazione della
3397 <p>Ora dovremo preparare il file contenente i record DNS
3398 della zona <em>piffa.net</em>, come abbiamo indicato
3399 prima questi saranno contenuti nel file <tt class=
3400 "docutils literal"><span class=
3401 "pre">/etc/bind/pz/piffa.net</span></tt> . Tenere le zone
3402 dentro una sottocartella e' buona abitudine, usare
3403 <tt class="docutils literal"><span class=
3404 "pre">pz</span></tt> per queste e' una vecchia
3408 <pre class="literal-block">
3409 ; Zona per il dominio di secondo livello piffa.net
3412 @ IN SOA ns1.piffa.net. hostmaster.piffa.net. (
3414 8H ; refresh (8 hours)
3415 2H ; retry (2 hours)
3416 4W ; expire (4 weeks)
3417 1D ; minimum (1 day)
3424 TXT "Piffanet main site"
3429 test.piffa.net. A 94.23.63.105
3430 *.piffa.net. A 94.23.63.105 ; *catch all domain
3434 <p>All'interno di questo file si possono inserire dei
3435 commenti con il carattere <tt class=
3436 "docutils literal"><span class="pre">;</span></tt>
3437 (punto-e-virgola), si faccia attenzione alla rigida
3438 sintassi: apertura e chiusura delle parentesi tonde nella
3439 parte <tt class="docutils literal"><span class=
3440 "pre">IN</span> <span class="pre">SOA</span></tt>, uso
3441 del <tt class="docutils literal"><span class=
3442 "pre">punto</span></tt> finale per precisare un nome di
3443 dominio specifico (<em>FQDN</em>: Fully-qualified Domain
3444 Name) come <tt class="docutils literal"><span class=
3445 "pre">test.piffa.net.</span></tt> a differenza degli
3446 altri domini di terzo livello come <tt class=
3447 "docutils literal"><span class=
3448 "pre">pop,imap,smtp</span></tt> .</p>
3450 <p>La zona inizia con una direttiva <tt class=
3451 "docutils literal"><span class="pre">$TTL</span>
3452 <span class="pre">3D</span></tt> (RFC 2308) che indica la
3453 durata (in questo caso tre giorni) che ogni record
3454 dovrebbe avrebbe nella cache degli altri serber DNS.
3455 Questo valore dovrebbe essere superiore a un giorno, se
3456 non modificate spesso i valori dei vostri record DNS e'
3457 consigliabile settarlo a 2/3 settimane in modo da
3458 limitare la frequenza delle query al propio server.
3459 Questo parametro puo' essere modificato per singoli
3461 <pre class="literal-block">
3462 $TTL 3D ; 3 giorni: default se non specificato altrimenti
3463 rapido 5h IN A 94.23.63.105 ; usa un TTL di 5 ore
3464 lento 3w IN A 94.23.63.105 ; usa un TTL di 3 settimane
3465 normale IN A 94.23.63.105 ; usa il TTL di default: 3 giorni
3468 <p>Segue poi il nome della zona, indicato con la
3469 <tt class="docutils literal"><span class=
3470 "pre">@</span></tt> per richiamare la zona originale
3471 precisata nel file <tt class=
3472 "docutils literal"><span class=
3473 "pre">named.conf.options</span></tt> . Segue il campo
3474 <tt class="docutils literal"><span class=
3475 "pre">SOA</span></tt>.</p>
3477 <div class="section" id="soa-start-of-authority-record">
3478 <h4><a class="toc-backref" href=
3479 "#id68">6.2.2.1 SOA: Start of
3480 Authority Record</a></h4>
3482 <p>Il record SOA puo' comparire solo una volta in una
3483 zona, contiene informazioni relative all'autorita' del
3486 <dl class="docutils">
3487 <dt>ns1.piffa.net. name-server</dt>
3489 <dd>primary master DNS di questo dominio.</dd>
3491 <dt>hostmaster.piffa.net. email-addr</dt>
3493 <dd>email-addr: indirizzo email della persona
3494 responsabile di questa zona, il primo punto viene
3495 tradotto in una <em>chiocciola</em> <tt class=
3496 "docutils literal"><span class="pre">@</span></tt>
3497 dato che questo carattere ha un'altro utilizzo
3498 all'interno di questo file. Il referente della zona
3499 <strong>deve</strong> essere un email valido e
3500 controllato, come consuetudine si usa <tt class=
3501 "docutils literal"><span class=
3502 "pre">hostmaster@dominio.tilde</span></tt> .</dd>
3504 <dt>200905245 serial number</dt>
3506 <dd>Questo valore serve per indicare quando e' stato
3507 modificato questo file di configurazione, secondo il
3508 formato <tt class="docutils literal"><span class=
3509 "pre">yyyymmddss</span></tt>: <tt class=
3510 "docutils literal"><span class="pre">yyyy</span></tt>
3511 = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' =
3512 seriale. Il seriale che deve essere sempre
3513 specificato anche per una cifra, va incrementato di
3514 una unita' nel caso vengano fatte piu' modifiche
3515 <em>nello stesso giorno</em>.</dd>
3519 <dd>Indica ai DNS secondari quanto tempo attendere
3520 per cercare di aggiornare i loro dati con il DNS
3525 <dd>Intervallo di tempo per il DNS slave (secondario)
3526 da aspettare prima di cercare di ricontattare il
3527 <em>master</em> in caso di problemi col
3528 <em>refresh</em>.</dd>
3532 <dd>Indica quando i dati dei dns secondarinon sono
3533 piu' autoritativi in caso di impossibilita' degli
3534 <em>slaves</em> di ri-aggiornarsi con il
3535 <em>master</em>. Consigliato un valore di 2/4
3540 <dd>Questo valore indicava il TTL fino alla versione
3541 8 di Bind, da Bind 9 e secondo la RFC2308 indica la
3542 durata del <em>negative caching</em>, quanto i
3543 resolvers (ad esempio un server dns cache) puo'
3544 mantenere un record <em>negativo</em> (che non indica
3545 la corrispondenza tra un nome di dominio e un ip, ma
3546 la non esistenza del record). Nell'uso per il
3547 negative caching viene fissato un valore massimo di 3
3548 ore dalla RFC 2308.</dd>
3552 <div class="section" id="altri-campi">
3553 <h4><a class="toc-backref" href=
3554 "#id69">6.2.2.2 Altri campi:</a></h4>
3556 <p>All'interno della zona possono essere utilizati vari
3557 tipi di records (RR):</p>
3559 <dl class="docutils">
3562 <dd>Informazioni testuali associate ad un record</dd>
3566 <dd>Name Server della zona</dd>
3570 <dd>Indirizzo ipv4 da associare al record</dd>
3574 <dd>Indirizzo ipv6 da associare al record</dd>
3578 <dd>Canonical Name: un alias per un host</dd>
3582 <dd>Mail Exchanger: server di posta che si occupera'
3583 della posta elettronica per questo dominio.E'
3584 opportuno avere almeno un server di posta di back-up,
3585 per indicare la priorita' di un MX rispettoad un
3586 altro si usa un valore di 2 cifre: il valore piu'
3587 basso indica priorita' piu' bassa. Es: <tt class=
3588 "docutils literal"><span class=
3589 "pre">MX</span> <span class=
3590 "pre">10</span> <span class=
3591 "pre">smtp.piffa.net.</span></tt> per il server SMTP
3592 principale e <tt class=
3593 "docutils literal"><span class="pre">MX</span>
3594 <span class="pre">40</span> <span class=
3595 "pre">smtp2.piffa.net</span></tt> per il
3600 <dd>Reverse look-up, usato per la mappatura inversa
3601 di un indirizzo ip a una stringa identificativa
3602 dell'host. Si noti che per poter modificare questi
3603 record si deve avere <em>in gestione</em> la <em>zona
3604 IP</em>, se cosi' non fosse si dovra' chiedere al
3605 propio provider la modifica di questo record per il
3606 propio ip. Links: <a class="reference external" href=
3607 "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
3613 <div class="section" id="link-suggeriti">
3614 <h2><a class="toc-backref" href=
3615 "#id70">6.3 Link suggeriti:</a></h2>
3618 <li>DNS for Rocket Scientists <a class=
3619 "reference external" href=
3620 "http://www.zytrax.com/books/dns/">http://www.zytrax.com/books/dns/</a></li>
3622 <li>DNS HOWTO <a class="reference external" href=
3623 "http://www.langfeldt.net/DNS-HOWTO/BIND-9/">http://www.langfeldt.net/DNS-HOWTO/BIND-9/</a></li>
3628 <div class="section" id="samba">
3629 <h1><a class="toc-backref" href=
3630 "#id71">7 Samba</a></h1>
3632 <p>Samba e' un progetto libero che fornisce servizi di
3633 condivisione di file e stampanti a client SMB/CIFS.</p>
3635 <p>Samba e' liberamente disponibile, al contrario di altre
3636 implementazioni SMB/CIFS, e permette di ottenere
3637 interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
3639 <p>Samba e' un software che puo' girare su piattaforme che
3640 non siano Microsoft Windows, per esempio, UNIX, Linux, IBM
3641 System 390, OpenVMS e altri sistemi operativi. Samba utilizza
3642 il protocollo TCP/IP utilizzando i servizi offerti sul server
3643 ospite. Quando correttamente configurato, permette di
3644 interagire con client o server Microsoft Windows come se
3645 fosse un file e print server Microsoft agendo da Primary
3646 Domain Controller (PDC) o come Backup Domain Controller, puo'
3647 inoltre prendere parte ad un dominio Active Directory.</p>
3649 <div class="section" id="pacchetti">
3650 <h2><a class="toc-backref" href=
3651 "#id72">7.1 Pacchetti</a></h2>
3653 <p>Pacchetti da installare per utilizzare Samba in
3654 modalita' client <a class="footnote-reference" href="#id6"
3655 id="id5" name="id5">[2]</a></p>
3656 <pre class="literal-block">
3660 <p>Pacchetti da installare per utilizzare Samba in
3661 modalita' server:</p>
3662 <pre class="literal-block">
3663 samba smbfs smbclient
3666 <table class="docutils footnote" frame="void" id="id6"
3673 <tbody valign="top">
3675 <td class="label"><a class="fn-backref" href=
3678 <td>Anche se nato per i sistemi Windows, Samba puo'
3679 essere usato anche per montare cartelle sotto
3680 GNU/Linux come alternativa a NFS. Per la condivisione
3681 di stampanti sarebbe invece opportuno intervenire
3682 direttamente su <tt class=
3683 "docutils literal"><span class=
3684 "pre">CUPS</span></tt>.</td>
3689 <p>Durante la prima installazione viene chiesto il nome del
3690 gruppo di appartenenza, il default per Windows e'
3691 <tt class="docutils literal"><span class=
3692 "pre">WORKGROUP</span></tt>. In aula usiamo invece
3693 <tt class="docutils literal"><span class=
3694 "pre">208</span></tt> .</p>
3696 <p>Per riconfigurare Samba si usi il comando:</p>
3697 <pre class="literal-block">
3698 dpkg-reconfigure samba-common
3702 <div class="section" id="passwords-e-autenticazione">
3703 <h2><a class="toc-backref" href=
3704 "#id73">7.2 Passwords e
3705 autenticazione</a></h2>
3707 <p>Per poter configurare Samba in modo che usi un sistema
3708 di negoziazione degli accessi alle cartelle condivise
3709 basato su accoppiate <em>nome utente / password</em>
3710 bisogna distinguere tra 3 livelli di password (e
3711 generalmente volete usare <em>sempre la stessa
3712 password</em> per ognuno di questi) e delle differenze tra
3713 le modalita' di <em>autenticazione</em> (e quindi anche di
3714 criptaggio delle passwords) usate da sistemi GNU/Linux e
3717 <dl class="docutils">
3718 <dt>1 Sistema *Unix ( GNU/Linux )</dt>
3720 <dd>E' la password dell'<em>utente di sistema</em> che
3721 viene usata sul sistema operativo su cui gira il software
3722 Samba. E' importante tenere conto anche delle
3723 <em>user-id</em> e <em>group-id</em> degli utenti che
3724 dovranno fisicamente scrivere sui file system. Se un
3725 utente non puo' scrivere in una certa posizione del file
3726 system (ad esempio nella cartella <tt class=
3727 "docutils literal"><span class=
3728 "pre">/mnt/condivisione</span></tt> che sara' stata
3729 necessariamente creata inizialmente dall'utente
3730 <tt class="docutils literal"><span class=
3731 "pre">root</span></tt>) per mancanza dei privilegi di
3732 scrittura allora neanche Samba potra' farlo nel momento
3733 in mette a disposizione la risorsa all'utente. Se si
3734 montano file-system dedicati per le condivisioni
3735 controllare i permessi e proprieta' dei <em>punti di
3736 mount*</em>. Queste passwords sono salvate nel solito
3737 file /etc/shadow (richiamato da /etc/passwd).</dd>
3739 <dt>2 Password per l'applicativo Samba</dt>
3741 <dd>Samba deve essere compatibile con Windows e quindi
3742 utilizzare un sistema di criptazione delle password
3743 diverso da /etc/shadow . Le password per Samba possono
3744 essere gestite ad esempio col comando <tt class=
3745 "docutils literal"><span class=
3746 "pre">smbpasswd</span></tt> e vengono generalmente
3747 salvate all'interno di <tt class=
3748 "docutils literal"><span class=
3749 "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
3751 <dt>3 Password per Windows.</dt>
3753 <dd>Gli utenti Windows effettuano il log-in alla partenza
3754 della sessione di Windows. Se si avra' l'accortezza di
3755 usare sempre la <em>stessa password</em> data
3756 precedentemente anche a Windows (o viceversa impostare la
3757 password per GNU/Linux / Samba uguale a quella di
3758 Windows) l'utente potra' accedere automaticamente alle
3759 condivisioni a lui disponibili.</dd>
3763 <div class="section" id="creazione-utenti">
3764 <h2><a class="toc-backref" href=
3765 "#id74">7.3 Creazione Utenti</a></h2>
3767 <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
3768 attenzione a <em>non dargli una shell di sistema</em>. Gli
3769 utenti Windows che accedono al server solo per le
3770 condivisioni non hanno bisogno di poter eseguire comandi
3773 <p>Creazione di un utente denominato sambo:</p>
3774 <pre class="literal-block">
3775 adduser --shell /bin/false sambo
3778 <p>Nel file <tt class="docutils literal"><span class=
3779 "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
3780 <pre class="literal-block">
3781 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
3784 <p>Aggiunta dell'utente al database delle password per
3785 Samba e generazione della sua password:</p>
3786 <pre class="literal-block">
3790 <p>Se successivamente si vorra' modificare la password di
3791 un utente gia' esistente si usi:</p>
3792 <pre class="literal-block">
3796 <p>La password sotto Windows verra' modificata sul sistema
3800 <div class="section" id="creare-la-condivisione">
3801 <h2><a class="toc-backref" href=
3802 "#id75">7.4 Creare la
3803 condivisione</a></h2>
3805 <p>La condivisione altro non e' che una cartella sul server
3806 che viene resa disponibile ai client negoziando l'accesso
3807 in base a una autenticazione basata su <em>user-name /
3808 password</em>. E' per altro possibile permettere l'accesso
3809 a una risorsa a chiunque indiscriminatamente (a tutti i
3810 <tt class="docutils literal"><span class=
3811 "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
3812 punto di vista della sicurezza. Si decida se la cartella
3813 condivisa debba risiedere nella <em>home</em> di un utente
3814 (nel caso quest'ultimo ne sia l'unico fruitore) o in una
3815 cartella in /mnt/ (nel caso piu' utenti accedano a questa).
3816 Nel secondo caso si potranno gestire gli accessi sotto
3817 GNU/Linux tramite i gruppi.</p>
3819 <p>Creazione della risorsa sambo_share nella home
3820 dell'utente sambo:</p>
3821 <pre class="literal-block">
3822 # mkdir /home/sambo/sambo_share
3823 # chown sambo:sambo /home/sambo/sambo_share/
3826 <div class="section" id=
3827 "sicurezza-permessi-di-esecuzione-sul-server">
3828 <h3><a class="toc-backref" href=
3829 "#id76">7.4.1 Sicurezza: permessi di
3830 esecuzione sul server</a></h3>
3832 <p>Bisognerebbe notare sul server i permessi di
3833 esecuzione del file-system che ospita la cartella da
3834 condividere. Se i file che saranno contenuti nella
3835 condivisione saranno da usarsi sotto Windows non c'e'
3836 motivo che questi siano eseguibili sotto GNU/Linux. Si
3837 potrebbe avere quindi, ipotizzando una condivisione in
3838 <tt class="docutils literal"><span class=
3839 "pre">/mnt/share</span></tt> che risieda su di un file
3840 system dedicato:</p>
3842 <p><tt class="docutils literal"><span class=
3843 "pre">/etc/fstab</span></tt></p>
3846 /dev/hda10 /mnt/share ext3 rw,
3847 <strong>nosuid,noexec</strong> 0 3
3850 <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
3851 possibilita' di eseguire programmi con credenziali
3856 <div class="section" id=
3857 "configurazione-dell-applicativo-samba-vero-e-proprio">
3858 <h2><a class="toc-backref" href=
3859 "#id77">7.5 Configurazione
3860 dell'applicativo Samba vero e proprio.</a></h2>
3862 <p>Avendo preparato gli utenti (ancora una volta: non si
3863 dia una shell completa a un utente che serve solo per Samba
3864 o la posta elettronica) e la cartella sul file system si
3865 puo' procedere a configurare la condivisione su Samba.</p>
3867 <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
3868 vim si usi 235gg ):</p>
3869 <pre class="literal-block">
3871 # Percorso della cartella condivisa
3872 path = /home/sambo/sambo_share
3873 # Se gli utenti possono scrivere / modificare file
3875 # Negoziazione degli accessi su base utenti / passwords
3878 # #######################################
3879 # Altri parametri opzionali di interesse
3880 # Se posso vedere la condivisione da esplora risorse
3881 # anche se non ho i privilegi per accedervi.
3883 # Commento indicativo della risorsa
3884 comment = Condivisione per Sambo
3887 <p>Dopo aver salvato il file si puo' fare un primo
3888 controllo tramite l'utility <tt class=
3889 "docutils literal"><span class="pre">testparm</span></tt> ,
3890 che controlla la sintassi del file di configurazione di
3891 Samba. Se questo non rileva problemi si puo' procedere a un
3892 <tt class="docutils literal"><span class="pre">#</span>
3893 <span class="pre">/etc/init.d/samba</span> <span class=
3894 "pre">restart</span></tt> .</p>
3897 <div class="section" id="testare-il-servizio">
3898 <h2><a class="toc-backref" href=
3899 "#id78">7.6 Testare il Servizio</a></h2>
3901 <p>Come testare il servizio</p>
3904 <pre class="literal-block">
3905 smbclient -U sambo -L localhost
3908 <p>Questo comando permette di esplorare la risorsa
3909 qualificandosi come utente, in questo modo potete testare
3910 il corretto funzionamento dell'autenticazione. Si provi
3911 inizialmente a sbagliare la password deliberatamente, poi a
3912 inserirla correttamente: dovrebbero essere visibili le
3913 risorse disponibili al solo utente sambo: la suo /home e la
3914 cartella samba_share:</p>
3915 <pre class="literal-block">
3916 Sharename Type Comment
3917 --------- ---- -------
3918 sambo_share Disk Condivisione per Sambo
3919 print$ Disk Printer Drivers
3920 IPC$ IPC IPC Service (base server)
3921 sambo Disk Home Directories
3924 <p>In particolare l'ultima voce relativa alla home
3925 directory dell'utente dovrebbe essere visibile solo agli
3926 utenti autenticati.</p>
3928 <p>In alternativa e' possibile montare realmente la
3929 condivisone anche su GNU/Linux tramite un client per samba
3930 e testarne il corretto funzionamento:</p>
3931 <pre class="literal-block">
3932 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
3937 <div class="section" id="server-di-posta-postfix">
3938 <h1><a class="toc-backref" href=
3939 "#id79">8 Server di posta: Postfix</a></h1>
3941 <p>Il server di posta che prenderemo in considerazione e'
3942 Postfix, a seguire un estratto di un file di configurazione
3943 <em>semplice</em> con l'abilitazione delle <em>Maildir</em>
3944 nelle <tt class="docutils literal"><span class=
3945 "pre">/home</span></tt> degli utenti per la consegna della
3948 <p><tt class="docutils literal"><span class=
3949 "pre">/etc/postfix/main.cf</span></tt>:</p>
3950 <pre class="literal-block">
3951 # ...segue dalla riga ~30
3952 myhostname = 162.piffa.net
3953 alias_maps = hash:/etc/aliases
3954 alias_database = hash:/etc/aliases
3955 myorigin = 162.piffa.net
3956 mydestination = 162.piffa.net, localhost
3957 # Se non avete un ip pubblico e statico, con un adeguato record PTR
3958 # dovrete usare un realy host per l'invio della posta
3959 relayhost = smtp.piffa.net
3961 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
3962 # Se dovete inviare la posta per i client della vostra LAN privata:
3963 # mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
3964 # E si faccia BEN ATTENZIONE a non diventare un open realay smtp
3967 # Per effettuare lo storaggio della posta nelle home directory degli utenti
3968 # in una Maildir invece che nella Mailbox in /var/mail/nome_utente
3969 # si disabiliti procmail
3970 #mailbox_command = procmail -a "$EXTENSION"
3972 # cartella_i abiliti lo storaggio della posta nella Maildir/ (si noti lo slash)
3973 # all'interno della home dell'utente:
3974 home_mailbox = Maildir/
3975 mailbox_size_limit = 0
3976 recipient_delimiter = +
3977 inet_interfaces = all
3980 <dl class="docutils">
3981 <dt>E' disponibile un file di configurazione di esempio ben
3982 piu' articolato e commentato::</dt>
3984 <dd>/usr/share/postfix/main.cf.dist .</dd>
3987 <div class="section" id="test-del-server-smtp">
3988 <h2><a class="toc-backref" href=
3989 "#id80">8.1 Test del server smtp</a></h2>
3991 <p>Per testare il corretto funzionamento del server di
3992 posta si puo' procedere in vari modi.</p>
3995 <li>Spedire una mail a una casella locale / remota e
3996 controllare i log (syslog)</li>
3998 <li>Collegarsi via <em>telnet</em> al server di posta:
3999 <a class="reference external" href=
4000 "http://www.netadmintools.com/art276.html">http://www.netadmintools.com/art276.html</a></li>
4002 <li>usare una utility come SWAKS</li>
4005 <div class="section" id="swaks">
4006 <h3><a class="toc-backref" href=
4007 "#id81">8.1.1 Swaks</a></h3>
4009 <dl class="docutils">
4010 <dt>Per gli utenti meno esperti e' consigliabile
4011 utilizzare <em>SWAKS</em>: si installi l'omonimo
4012 pacchetto e si esegua un test con::</dt>
4014 <dd>swaks --to <a class="reference external" href=
4015 "mailto:utente@destinatario.tilde">utente@destinatario.tilde</a>
4016 --from <a class="reference external" href=
4017 "mailto:utente@propio.mail.tilde">utente@propio.mail.tilde</a></dd>
4020 <p>Ecco un esempio di una sessione corretta:</p>
4021 <pre class="literal-block">
4022 swaks --to andrea@piffa.net from andrea@mydomain.com
4023 === Trying smtp.piffa.net:25...
4024 === Connected to smtp.piffa.net.
4025 <- 220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
4026 -> EHLO alice.mydomain.com
4027 <- 250-zoo.piffa.net
4028 <- 250-PIPELINING
4029 <- 250-SIZE 10240000
4033 <- 250-ENHANCEDSTATUSCODES
4036 -> MAIL FROM:<root@alice.mydomain.com>
4038 -> RCPT TO:<andrea@piffa.net>
4041 <- 354 End data with <CR><LF>.<CR><LF>
4042 -> Date: Thu, 28 May 2009 13:11:19 +0200
4043 -> To: andrea@piffa.net
4044 -> From: root@alice.mydomain.com
4045 -> Subject: test Thu, 28 May 2009 13:11:19 +0200
4046 -> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
4048 -> This is a test mailing
4051 <- 250 2.0.0 Ok: queued as 41FB261AFC
4054 === Connection closed with remote host.
4059 <div class="section" id="imap-e-pop">
4060 <h2><a class="toc-backref" href=
4061 "#id82">8.2 Imap e pop</a></h2>
4063 <p>Postfix e' un server SMTP, di conseguenza se volete che
4064 i vostri utenti possano <em>scaricare</em> in locale la
4065 posta generalmente volete mettere a loro disposizione un
4066 server <em>POP3</em> o <em>IMAP</em>. Oppure entrambi.</p>
4068 <dl class="docutils">
4069 <dt>Pacchetti da installare</dt>
4071 <dd>courier-imap courier-pop</dd>
4074 <p>Si noti che IMAP necessita delle <em>Maildir</em>, non
4075 funziona con le Mailbox in <tt class=
4076 "docutils literal"><span class="pre">/var/mail/</span></tt>
4080 <div class="section" id="client-a-riga-di-comando">
4081 <h2><a class="toc-backref" href=
4082 "#id83">8.3 Client a riga di
4085 <p>Per testare il corretto funzionamento del server di
4086 posta e' utile avere a disposizione delle utility per
4087 inviare e leggere la posta: ovviamente da riga di
4090 <div class="section" id="mailx">
4091 <h3><a class="toc-backref" href=
4092 "#id84">8.3.1 mailx</a></h3>
4094 <dl class="docutils">
4095 <dt>Uno dei client piu' semplici, sopratutto per
4096 inviare un messaggioi. e' sufficiente usare una formula
4099 <dd>mail <a class="reference external" href=
4100 "mailto:utente@dominio.com">utente@dominio.com</a></dd>
4103 <p>Se il comando <tt class=
4104 "docutils literal"><span class="pre">mail</span></tt> non
4105 fosse disponibile si installi il pacchetto <tt class=
4106 "docutils literal"><span class=
4107 "pre">mailx</span></tt>.</p>
4109 <p>Al primo prompt si digitera' l'oggetto, il testo del
4110 messaggio (per terminare l'inserimento lasciare una riga
4111 vuota, digitare un <tt class=
4112 "docutils literal"><span class="pre">punto</span>
4113 <span class="pre">+</span> <span class=
4114 "pre">Invio</span></tt> su una riga vuota), la Carbon
4115 Copy (se necessaria).</p>
4118 <pre class="literal-block">
4119 mail andrea@localhost
4120 Subject: Oggetto della mail
4122 per terminare il messaggio
4123 lasciare una riga vuota
4124 e un punto (poi Invio).
4130 <p>Per altrre opzioni si veda la pagina man.</p>
4133 <div class="section" id="mutt">
4134 <h3><a class="toc-backref" href=
4135 "#id85">8.3.2 Mutt</a></h3>
4137 <p>Mutt e' uno dei gestori di posta preferiti da chi
4138 preferisce utilizzare l'interfaccia testuale per la
4139 gestione della posta.</p>
4141 <p>Mutt ha un file di configurazione <tt class=
4142 "docutils literal"><span class="pre">.muttrc</span></tt>
4143 nella <em>home</em> dell'utente, alcuni settaggi possono
4146 <dl class="docutils">
4147 <dt>set folder="~/Maildir"</dt>
4149 <dd>Per utilizzare <tt class=
4150 "docutils literal"><span class=
4151 "pre">/home/nome_utente/Maildir</span> <span class=
4152 "pre">come</span> <span class=
4153 "pre">mailbox</span></tt>, invece del default
4154 <tt class="docutils literal"><span class=
4155 "pre">/var/mail/nome_utente</span></tt>.</dd>
4157 <dt>set editor="vim"</dt>
4159 <dd>Utilizzare <tt class=
4160 "docutils literal"><span class="pre">vim</span></tt>
4161 come editor per comporre i messaggi.</dd>
4164 <p>Spesso e' utile poter <em>levvere al volo</em> la
4165 Mailbox / Maildir di un utente sul server di posta, per
4166 controllare se i messaggi vengono recapitati
4168 <pre class="literal-block">
4169 mutt -f /var/mail/utente
4170 mutt -f /home/utente/Maildir
4173 <p>In modo analogo si puo' consultare al volo la propia
4174 mailbox su un server remoto tramite IMAP/POP:</p>
4175 <pre class="literal-block">
4176 mutt -f imap://nome_utente@piffa.net
4180 <div class="section" id="web-client">
4181 <h3><a class="toc-backref" href=
4182 "#id86">8.3.3 Web client</a></h3>
4184 <p>Per mettere a disposizione degli utenti un client web
4185 per gestire la propria posta si installi il pacchetto:
4186 <tt class="docutils literal"><span class=
4187 "pre">squirrelmail</span></tt> . Ci sono tanti altri
4188 client web disponibili: questo e' particolarmente
4189 semplice. Naturalmente dovrete aver installato:
4190 <tt class="docutils literal"><span class=
4191 "pre">php5</span> <span class="pre">apache2</span></tt>
4194 <p>L'interfaccia dovrebbe essere disponibile all'url:
4195 <tt class="docutils literal"><span class=
4196 "pre">http://localhost/squirrelmail</span></tt> . Se
4197 cosi' non fosse assicuratevi che Apache abbia incluso il
4198 file di configurazione di squirrelmail:</p>
4199 <pre class="literal-block">
4200 cd /etc/apache2/conf.d/
4201 ln -s /etc/squirrelmail/apache.conf ./squirrelmail.conf
4206 <div class="section" id="graylisting">
4207 <h2><a class="toc-backref" href=
4208 "#id87">8.4 Graylisting</a></h2>
4210 <p>Il <em>graylisting</em> e' un sistema relativamente poco
4211 invasivo, con un limitato consumo di risorse per limitare
4212 lo <em>SPAM</em> in arrivo sul propio server di posta. Come
4213 suggerisce il nome e' una via di mezzo tra una <em>white
4214 list</em> (una lista di mittenti privilegiata, sempre
4215 benvenuti) e una <em>black list</em> (mittenti
4216 <em>bannati</em>, banditi dal poter inviare nuovi
4219 <p>Il funzionamento e' relativamente semplice: ogni
4220 mittente sconosciuto viene immediatamente rifiutato con un
4221 errore <em>non grave</em> come un <em>server non
4222 disponibile, provare piu' tardi</em>. Questo inconveniente
4223 non dovrebbe mettere in difficolta' un server di posta /
4224 mittente legittimo, che dopo un periodo di attesa tentera'
4225 nuovamente di inviare il messaggio ottenendo finalmente il
4226 risultato atteso. Diversamente un <em>bot</em> per l'invio
4227 di SPAM o un applicazione improvvisata (tipicamente di
4228 derivazione virale) che stesse inviando il messaggio
4229 <em>probabilmente</em> non insisterebbe, rinunciano ad
4230 inviare il messaggio preferendo destinazioni meno
4233 <div class="section" id="abilitazione-in-postfix">
4234 <h3><a class="toc-backref" href=
4235 "#id88">8.4.1 Abilitazione in
4238 <p>Installare il pacchetto: <tt class=
4239 "docutils literal"><span class="pre">postgrey</span></tt>
4240 e aggiungere il file di configurazione di Postfix
4241 <tt class="docutils literal"><span class=
4242 "pre">/etc/postfix/main.cf</span></tt>:</p>
4243 <pre class="literal-block">
4244 smtpd_recipient_restrictions =
4246 reject_unauth_destination,
4247 check_policy_service inet:127.0.0.1:60000
4251 <div class="section" id="test">
4252 <h3><a class="toc-backref" href=
4253 "#id89">8.4.2 Test</a></h3>
4255 <p>Inviando un messaggio il client dovrebbe ricevere un
4256 iniziale messaggio di rifiuto del messaggio:</p>
4257 <pre class="literal-block">
4258 swaks --to andrea@piffa.net from andrea@mydonain.com
4259 === Trying smtp.piffa.net:25...
4260 === Connected to smtp.piffa.net
4263 -> RCPT TO:<andrea@piffa.net>
4264 <** 450 4.2.0 <andrea@piffa.net>: Recipient address rejected:
4265 Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
4268 === Connection closed with remote host.
4271 <p>A lato server si dovrebbe rilevare su <tt class=
4272 "docutils literal"><span class=
4273 "pre">/var/log/syslog</span></tt> qualcosa di simile:</p>
4274 <pre class="literal-block">
4275 connect from alice.mydomain.com[65.98.21.97]
4276 May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
4277 client_name=alice.mydomain.com,
4278 client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
4279 May 28 14:53:34 r24266 postfix/smtpd[22538]:
4280 NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
4281 450 4.2.0 <andrea@piffa.net>: Recipient address rejected: Greylisted,
4282 see http://postgrey.schweikert.ch/help/piffa.net.html;
4283 from=<root@alice.mydomain.com> to=<andrea@piffa.net>
4284 proto=ESMTP helo=<alice.mydomain.com>
4285 May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
4289 <div class="section" id="statistiche">
4290 <h3><a class="toc-backref" href=
4291 "#id90">8.4.3 Statistiche</a></h3>
4293 <p>E' sempre utile poter tracciare qualche statistica
4294 sulle percentuali di messaggi ricevuti, da chi, messaggi
4295 rifiutati (e per quale motivo). Statistiche che attingono
4296 dai soliti log del server di posta <tt class=
4297 "docutils literal"><span class=
4298 "pre">/var/log/syslog</span></tt> di default oltre che i
4299 dedicati <tt class="docutils literal"><span class=
4300 "pre">/var/log/mail</span></tt> .</p>
4302 <p>Una utility semplice per analizzare l'attivita' del
4303 propio server smtp potrebbe essere <tt class=
4304 "docutils literal"><span class=
4305 "pre">pflogsumm</span></tt> , installato il pacchetto la
4306 si puo' invocare con:</p>
4307 <pre class="literal-block">
4308 pflogsumm.pl /var/log/mail.log
4311 <p>oppure utilizzare i log piu' vecchi ad es. <tt class=
4312 "docutils literal"><span class=
4313 "pre">/var/log/mail.log.0</span></tt></p>
4318 <div class="section" id="firewall">
4319 <h1><a class="toc-backref" href=
4320 "#id91">9 Firewall</a></h1>
4322 <p>In Informatica, nell'ambito delle reti di computer, un
4323 firewall (termine inglese dal significato originario di
4324 parete refrattaria, muro tagliafuoco, muro ignifugo; in
4325 italiano anche parafuoco o parafiamma) e' un componente
4326 passivo di difesa perimetrale che puo'ò anche svolgere
4327 funzioni di collegamento tra due o piu' tronconi di rete.
4328 Usualmente la rete viene divisa in due sotto reti: una, detta
4329 esterna, comprende l'intera Internet mentre l'altra interna,
4330 detta LAN (Local Area Network), comprende una sezione piu' o
4331 meno grande di un insieme di computer locali. In alcuni casi
4332 e' possibile che si crei l'esigenza di creare una terza sotto
4333 rete detta DMZ (o zona demilitarizzata) atta a contenere quei
4334 sistemi che devono essere isolati dalla rete interna ma
4335 devono comunque essere protetti dal firewall.</p>
4337 <p>Una prima definizione chiusa di firewall è la
4340 <p>Apparato di rete hardware o software che filtra tutti i
4341 pacchetti entranti ed uscenti, da e verso una rete o un
4342 computer, applicando regole che contribuiscono alla sicurezza
4345 <p>In realta'à un firewall puo'ò essere realizzato con
4346 un normale computer (con almeno due schede di rete e software
4347 apposito), puo'ò essere una funzione inclusa in un router o
4348 puo'ò essere un apparato specializzato. Esistono inoltre i
4349 cosiddetti "firewall personali", che sono programmi
4350 installati sui normali calcolatori, che filtrano solamente i
4351 pacchetti che entrano ed escono da quel calcolatore; in tal
4352 caso viene utilizzata una sola scheda di rete.</p>
4354 <p>La funzionalita'à principale in sostanza è quella
4355 di creare un filtro sulle connessioni entranti ed uscenti, in
4356 questo modo il dispositivo innalza il livello di sicurezza
4357 della rete e permette sia agli utenti interni che a quelli
4358 esterni di operare nel massimo della sicurezza. Il firewall
4359 agisce sui pacchetti in transito da e per la zona interna
4360 potendo eseguire su di essi operazioni di: controllo modifica
4363 <p>Questo grazie alla sua capacita'Ã di "aprire" il
4364 pacchetto IP per leggere le informazioni presenti sul suo
4365 header, e in alcuni casi anche di effettuare verifiche sul
4366 contenuto del pacchetto.</p>
4368 <div class="section" id="links">
4369 <h2><a class="toc-backref" href=
4370 "#id92">9.1 Links</a></h2>
4373 <li><a class="reference external" href=
4374 "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
4376 <li><a class="reference external" href=
4377 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
4378 http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
4382 <div class="section" id="ipfilter">
4383 <h2><a class="toc-backref" href=
4384 "#id93">9.2 Ipfilter</a></h2>
4386 <p>Link: <a class="reference external" href=
4387 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
4388 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
4390 <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
4391 po' del 3) e su cosa <em>non</em> lavora (livello 4).
4392 Netfilter lavora anche su parti del livello 3 (TCP, UDP,
4393 etc) e del livello 1 (MAC source address). Iptables
4394 comunque permette di fare il <em>connection-tracking</em>,
4395 mediante il quale possiamo implementare il Network Address
4398 <p>Netfilter non ricostruisce il flusso di dati tra
4399 pacchetti, non puo' quindi rilevare la presenza di virus o
4400 simili che si trasmettono su pacchetti separati:
4401 ricomporre, analizzare e tornare a scomporre i frammenti
4402 richiederebbe troppa RAM e risorse di sistema, con il
4403 conseguente rischio di saturare il firewall fino
4404 all'abbandono dei nuovi pacchetti in transito. Ci sono
4405 altri software piu' adatti a questi compiti, ad esempio un
4406 proxy HTTP come Squid che e' appunto una applicazione di
4407 quarto livello, progettata e strutturata per analizzare e
4408 modificare i flussi di dati (il <em>contenuto</em> dei
4409 pacchetti, non le sole <em>intestazioni</em>) facendo
4410 abbondate uso delle risorse RAM e di calcolo del sistema.
4411 Non a caso su macchine embedded dalle prestazioni molto
4412 ridotte (CPU ARM ~250MHZ con ~30MB di RAM) Squid sfrutta al
4413 massimo le risorse di sistema per gestire il traffico di
4414 una rete 10/100, mentre il lavoro tipico svolto da
4415 netfilter e' quasi irrilevante.</p>
4418 <div class="section" id="progettazione-di-un-firewall">
4419 <h2><a class="toc-backref" href=
4420 "#id94">9.3 Progettazione di un
4423 <p>Per implementare un firewall bisogna decidere un aio di
4424 cose: la collocazione e l'approccio (inclusivo o esclusivo)
4425 al filtraggio, il tipo di hardware.</p>
4427 <div class="section" id="collocazione">
4428 <h3><a class="toc-backref" href=
4429 "#id95">9.3.1 Collocazione</a></h3>
4431 <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
4432 della rete, decidere se diversi reparti di una azienda si
4433 possano vedere tra loro e in che misura.</p>
4435 <p>Collocazione:</p>
4438 <ol class="arabic simple">
4441 <li>tra router e servers / LAN</li>
4443 <li>Unico server / router / firewall e connessi
4444 rischi. considerare l'acquisto di un router hardware
4449 <dl class="docutils">
4450 <dt>Layeed security:</dt>
4452 <dd>Implementare piu' device / software sui diversi
4453 livelli: <a class="reference external" href=
4454 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
4455 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
4459 <div class="section" id="policy-di-default">
4460 <h3><a class="toc-backref" href=
4461 "#id96">9.3.2 Policy di default</a></h3>
4463 <p>Drop o Accept: conseguenze per sicurezza, facilita' di
4467 <div class="section" id="hardware">
4468 <h3><a class="toc-backref" href=
4469 "#id97">9.3.3 Hardware</a></h3>
4471 <p>Sostanzialmente potremmo distinguere due tipologie di
4474 <dl class="docutils">
4475 <dt>Network appliance dedicata::</dt>
4477 <dd>Un dispositivo hardware dedicato alla funzione di
4478 Firewall, ad es un Cisco / Fortigate. Si noti che molti
4479 firewall economici altro non sono che Linux box molto
4482 <dt>Server / Personal computer:</dt>
4484 <dd>Un server sul quale viene fatto girare Netfilter ad
4485 uso del server stesso e della rete connessa.</dd>
4488 <p>Vantaggi e svantaggi: consumo elettrico, efficienza,
4489 flessibilita', strumenti di gestione, sicurezza,
4494 <div class="section" id=
4495 "percorso-dei-pacchetti-tra-tabelle-e-catene">
4496 <h2><a class="toc-backref" href=
4497 "#id98">9.4 Percorso dei pacchetti tra
4498 tabelle e catene</a></h2>
4500 <p>link: <a class="reference external" href=
4501 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
4502 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
4505 <div class="section" id="concetti-di-base">
4506 <h2><a class="toc-backref" href=
4507 "#id99">9.5 Concetti di base</a></h2>
4509 <div class="section" id="tabelle-catene-regole">
4510 <h3><a class="toc-backref" href=
4511 "#id100">9.5.1 Tabelle, catene,
4514 <p>Iptables lavora su 3 tabelle (tables) di default:</p>
4517 <li>filter - Regola il firewalling: quali pacchetti
4518 accettare, quali bloccare</li>
4520 <li>nat - Regola le attivita'Ã di natting</li>
4522 <li>mangle - Interviene sulla alterazione dei
4526 <p>Ogni tabella ha delle catene (chains) predefinite
4527 (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
4528 aggiunte catene custom. Ogni catena è composta da un
4529 elenco di regole (rules) che identificano pacchetti di
4530 rete secondo criteri diversi (es: -p tcp --dport 80 -d
4531 10.0.0.45) Ogni regola termina con una indicazione
4532 (target) su cosa fare dei pacchetti identificati dalla
4533 regola stessa (es: -j ACCEPT, -j DROP ...)</p>
4536 <div class="section" id="match">
4537 <h3><a class="toc-backref" href=
4538 "#id101">9.5.2 Match</a></h3>
4540 <p>I Match di una regola (rule) servono a testare un
4541 pacchetto per valutare se corrisponda a certe
4542 caratteristiche. I match di possono servire a controllare
4543 se un pacchetto e' destinato a una porta particolare o
4544 utilizza un protocollo particolare.</p>
4546 <p>Alcuni esempi:</p>
4548 <dl class="docutils">
4549 <dt>-p [!] proto</dt>
4551 <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
4552 udp, gre, ah...)</dd>
4554 <dt>-s [!] address[/mask]</dt>
4556 <dd>Indirizzo IP sorgente (o network con maschera di
4559 <dt>-d [!] address[/mask]</dt>
4561 <dd>Indirizzo IP destinazione (o network)</dd>
4563 <dt>-i [!] interface[+]</dt>
4565 <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
4567 <dt>-o [!] interface[+]</dt>
4569 <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
4572 <table class="docutils option-list" frame="void" rules=
4574 <col class="option">
4575 <col class="description">
4577 <tbody valign="top">
4579 <td class="option-group"><kbd><span class=
4580 "option">-f</span></kbd></td>
4582 <td>Frammento di pacchetto</td>
4588 <div class="section" id="targets">
4589 <h3><a class="toc-backref" href=
4590 "#id102">9.5.3 Targets</a></h3>
4592 <p>Se un pacchetto soddisfa le condizioni del Match
4593 <em>salta</em> (jump) su uno dei target possibili, in
4594 caso contrario continua il suo percorso tra regole catene
4597 <p>Target principali:</p>
4599 <dl class="docutils">
4600 <dt><em>-j ACCEPT</em></dt>
4602 <dd>Il pacchetto matchato viene accettato e procede
4603 verso la sua destinazione. Si usa per definire il
4604 traffico permesso.</dd>
4606 <dt><em>-j DROP</em></dt>
4608 <dd>Il pacchetto viene rifiutato e scartato, senza
4609 alcuna notifica al mittente. Si usa, in alternativa a
4610 REJECT, per bloccare traffico.</dd>
4612 <dt><em>-j REJECT</em></dt>
4614 <dd>Il pacchetto viene rifiutato. Al mittente viene
4615 mandato un pacchetto (configurabile) di notifica tipo
4616 ICMP port-unreachable (--reject-with
4617 icmp-port-unreachable)</dd>
4620 <table class="docutils option-list" frame="void" rules=
4622 <col class="option">
4623 <col class="description">
4625 <tbody valign="top">
4627 <td class="option-group"><kbd><span class=
4628 "option">-t <var>LOG</var></span></kbd></td>
4630 <td>Il pacchetto viene loggato via syslog e procede
4631 l'attraversamento della catena. Opzioni:
4632 (--log-level, --log-prefix, --log-tcp-sequence,
4633 --log-tcp-options, --log-ip-options)</td>
4637 <td class="option-group"><kbd><span class=
4638 "option">-j <var>DNAT</var></span></kbd></td>
4640 <td>Viene modificato l'IP di destinazione del
4641 pacchetto. Target disponibile solo in nat /
4642 PREROUTING e nat / OUTPUT. L'opzione
4643 --to-destination IP:porta definisce il nuovo IP di
4644 destinazione. Si usa tipicamente su network
4645 firewall che nattano server di una DMZ</td>
4649 <td class="option-group"><kbd><span class=
4650 "option">-j <var>SNAT</var></span></kbd></td>
4652 <td>Viene modificato l'IP sorgente. Solo in nat /
4653 POSTROUTING. Prevede l'opzione --to-source
4654 IP:porta. Si usa per permettere l'accesso a
4655 Internet da una rete locale con IP privati.</td>
4659 <td class="option-group"><kbd><span class=
4660 "option">-j <var>MASQUERADE</var></span></kbd></td>
4662 <td>Simile a SNAT, si applica quando i pacchetti
4663 escono da interfacce con IP dinamico (dialup, adsl,
4664 dhcp...). Si usa solo in nat / POSTROUTING e
4665 prevede l'opzione --to-ports porte.</td>
4669 <td class="option-group"><kbd><span class=
4670 "option">-j <var>REDIRECT</var></span></kbd></td>
4672 <td>Redirige il pacchetto ad una porta locale.
4673 Usabile solo in nat / PREROUTING e nat / OUTPUT è
4674 previsto per fare un transparent proxy (con proxy
4675 server in esecuzione sulla macchina con
4680 <td class="option-group"><kbd><span class=
4681 "option">-j <var>RETURN</var></span></kbd></td>
4683 <td>Interrompe l'attraversamento della catena. Se
4684 questa è una secondaria, il pacchetto torna ad
4685 attraversare la catena madre da punto in cui aveva
4686 fatto il salto nella secondaria. Se il RETURN è in
4687 una delle catene di default, il pacchetto
4688 interrompe l'attraversamento e segue la policy di
4693 <td class="option-group"><kbd><span class=
4694 "option">-j <var>TOS</var></span></kbd></td>
4696 <td>Usabile solo nella tabella mangle, permette di
4697 cambiare il TOS (Type Of Service) di un pacchetto
4698 con l'opzione --set-tos. Per un elenco dei
4699 parametri disponibili: iptables -j TOS -h</td>
4703 <td class="option-group"><kbd><span class=
4704 "option">-j <var>MIRROR</var></span></kbd></td>
4706 <td>Curioso e sperimentale, questo target invia un
4707 pacchetto speculare al mittente. In pratica è come
4708 se facesse da specchio per tutti i pacchetti
4709 ricevuti. Da usare con cautela, per evitare
4710 attacchi DOS indiretti.</td>
4717 <div class="section" id="tabella-filter">
4718 <h2><a class="toc-backref" href=
4719 "#id103">9.6 Tabella Filter</a></h2>
4721 <p>E' quella implicita e predefinita (-t filter) Riguarda
4722 le attività di filtraggio del traffico. Ha 3 catene
4723 di default: INPUT - Riguarda tutti i pacchetti destinati al
4724 sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
4725 i pacchetti che sono originati dal sistema e destinati ad
4726 uscire. FORWARD - Riguarda i pacchetti che attraversano il
4727 sistema, con IP sorgente e destinazione esterni.</p>
4729 <p>Esempio per permettere accesso alla porta 80 locale:
4730 iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
4731 Analoga a: iptables -I INPUT -p tcp --dport 80 -j
4734 <p>Esempio per permettere ad un pacchetto con IP sorgente
4735 10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
4736 il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
4740 <div class="section" id=
4741 "flush-automatico-per-macchine-remote">
4742 <h2><a class="toc-backref" href=
4743 "#id104">9.7 Flush automatico per macchine
4746 <p>Se state provando una configurazione del firewall per
4747 una macchina remota e' buona norma per evitare brutte
4748 figure attivare uno script che faccia il <em>flush</em>
4749 delle regole dopo qualche minuto. Potreste infatti
4750 inavvertitamente impostare una regola che vi impedisca di
4751 raggiungere la macchina remota, cosi' da non poter neanche
4752 eliminare quella regola e ripristinare la situazione
4755 <p><em>Veramente</em>, prima di lavorare sul firewall di
4756 una macchina remota impostate almeno un <tt class=
4757 "docutils literal"><span class="pre">at</span> <span class=
4758 "pre">now</span> <span class="pre">+5</span> <span class=
4759 "pre">min</span></tt> o con un'oretta di margine per fare
4760 il <em>flush</em> delle regole (su tutte le tabelle):</p>
4761 <pre class="literal-block">
4763 at> /sbin/iptables -F
4768 <div class="section" id="gestione-regole-rules">
4769 <h2><a class="toc-backref" href=
4770 "#id105">9.8 Gestione regole
4773 <p>Il comando iptables viene usato per ogni
4774 attivita'Ã di gestione e configurazione.</p>
4776 <p>Inserimento regole:</p>
4778 <dl class="docutils">
4779 <dt>iptables -A CATENA ...</dt>
4781 <dd>Aggiunge una regola alla fine della catena
4784 <dt>iptables -I CATENA [#] ...</dt>
4786 <dd>Inserisce alla riga # (default 1) una regola nella
4787 catena indicata</dd>
4789 <dt>iptables -N CATENA</dt>
4791 <dd>Crea una nuova catena custom</dd>
4793 <dt>iptables -P CATENA TARGET</dt>
4795 <dd>Imposta il target di default per la catena
4799 <p>Rimozione regole e azzeramenti:</p>
4801 <dl class="docutils">
4802 <dt>iptables -F [catena]</dt>
4804 <dd>Ripulisce tutte le catene (o quella indicata)</dd>
4806 <dt>iptables -X [catena]</dt>
4808 <dd>Ripulisce tutte le catene custom (o quella
4811 <dt>iptables -Z [catena]</dt>
4813 <dd>Azzera i contatori sulle catene</dd>
4815 <dt>iptables -D catena #</dt>
4817 <dd>Cancella la regola numero # dalla catena
4821 <p>Interrogazione:</p>
4823 <dl class="docutils">
4824 <dt>iptables -L</dt>
4826 <dd>Elenca le regole esistenti</dd>
4828 <dt>iptables -L -n -v</dt>
4830 <dd>Elenca, senza risolvere gli host, in modo verboso le
4831 regole esistenti</dd>
4835 <div class="section" id="salvataggio-regole">
4836 <h2><a class="toc-backref" href=
4837 "#id106">9.9 Salvataggio regole</a></h2>
4839 <p>Il comando <tt class="docutils literal"><span class=
4840 "pre">iptables</span></tt> serve per interagire con il
4841 framework <tt class="docutils literal"><span class=
4842 "pre">Netfilter</span></tt> che gestisce il firewall di
4843 Linux al livello del kernel. Questo comporta, in modo
4844 analogo a quando avviene col comando <tt class=
4845 "docutils literal"><span class="pre">ifconfig</span></tt>,
4846 che i cambiamenti impostati siano in <em>tempo reale,
4847 RAM</em>, non persistenti nel sistema: al boot successivo
4848 del sistema tutto tornera' alle impostazioni di base (in
4849 questo caso <em>nulle</em>, con policy di default settate
4850 su <tt class="docutils literal"><span class=
4851 "pre">ACCEPT</span></tt> per tutto).</p>
4853 <p>Le varie invocazioni di iptables potrebbero essere
4854 richiamate da degli scripts dedicati, ma fortunatamente e'
4855 stata predisposta una apposita utility per gestire questi
4856 scripts in modo da avere a disposizione un <em>formato
4857 standard</em> per il salvataggio e il ripristino delle
4858 regole del firewall.</p>
4860 <p>Altro problema: decidere quando attivare / disattivare
4861 queste regole. Utilizzare i <em>runlevels</em> non e' una
4862 soluzione adeguata: le regole del firewall sono legate
4863 all'attivita' delle schede di rete (e un host con diverse
4864 schede di rete puo' attivarle a secondo delle esigenze di
4865 routing, partenza di servizi es file_sharing per un
4866 back-up...): il sistema operativo Debian permette di legare
4867 l'esecuzione di comandi alla attivazione di una device di
4868 rete (<tt class="docutils literal"><span class=
4869 "pre">up</span></tt>), dopo la sua attivazione (<tt class=
4870 "docutils literal"><span class="pre">post-up</span></tt>,
4871 utile per devices che richiedono un certo tempo per
4872 inizializzarsi: come un tunnel o una connessione punto a
4873 punto), prima della sua attivazione (<tt class=
4874 "docutils literal"><span class="pre">pre-up</span></tt>).
4875 Allo stesso modo sono disponibili eventi analoghi per
4876 accompagnare la disattivazione dei device di rete: si veda
4877 la pagina man di <tt class="docutils literal"><span class=
4878 "pre">interfaces</span></tt>.</p>
4880 <p>Nel nostro caso avremo per una possibile scheda
4881 <tt class="docutils literal"><span class=
4882 "pre">eth0</span></tt>:</p>
4884 <p><tt class="docutils literal"><span class=
4885 "pre">/etc/network/interfaces</span></tt></p>
4886 <pre class="literal-block">
4887 iface eth1 inet static
4888 up /sbin/iptables-restore /root/firewall/basic_fw
4889 # Seguono i soliti parametri della scheda di rete
4890 address 10.10.208.21
4893 <div class="section" id="iptables-save">
4894 <h3><a class="toc-backref" href=
4895 "#id107">9.9.1 Iptables-save</a></h3>
4897 <p>Per salvare le regole di iptables attualmente presenti
4898 nel kernel si usi il comando:</p>
4899 <pre class="literal-block">
4900 # iptables-save >> /root/firewall/basic_fw
4903 <p>Il contenuto del file dovrebbe essere
4904 <em>comprensibile</em>: sostanzialmente sono regole di
4905 iptables, senza il comando iptables ripetuto, suddivisi
4906 per le varie tabelle. Potete comunque correggere
4907 eventuali parametri con un edito di testo.</p>
4909 <p>Se non avete un'idea migliore potreste voler tenere
4910 gli script dei firewall in una cartella <tt class=
4911 "docutils literal"><span class=
4912 "pre">~/firewall</span></tt> nella home directory
4913 dell'utente <tt class="docutils literal"><span class=
4914 "pre">root</span></tt>.</p>
4917 <div class="section" id="iptables-restore">
4918 <h3><a class="toc-backref" href=
4919 "#id108">9.9.2 Iptables-restore</a></h3>
4921 <p>Per ripristinare un set di regole precedentemente
4922 salvate con <tt class="docutils literal"><span class=
4923 "pre">iptables-save</span></tt> si utilizzi <tt class=
4924 "docutils literal"><span class=
4925 "pre">iptables-restore</span></tt>. Se questo deve essere
4926 fatto in modalita' <em>non interattiva</em>, ad esempio
4927 deve essere eseguito dal demone che si occupa di
4928 inizializzare le schede di rete, oppure un <em>cron</em>
4929 o altro, e' buona norma richiamare i percorsi completi
4930 sia dei comandi che dei file:</p>
4931 <pre class="literal-block">
4932 /sbin/iptables-restore /root/firewall/basic_fw
4937 <div class="section" id="esempi">
4938 <h2><a class="toc-backref" href=
4939 "#id109">9.10 Esempi</a></h2>
4941 <p>Seguono alcuni esempi sull'uso di iptables, lo scenario
4942 e' un computer con un paio di schede di rete fisiche una
4943 delle quali collegata alla rete internet l'altra a una rete
4944 privata per la LAN interna.</p>
4947 <ol class="arabic simple">
4948 <li><tt class="docutils literal"><span class=
4949 "pre">eth0</span></tt> scheda di rete principale sulla
4950 rete privata interna 192.168.0.0/24</li>
4952 <li><tt class="docutils literal"><span class=
4953 "pre">eth1</span></tt> scheda di rete secondaria per la
4954 connessione ad internet</li>
4956 <li><tt class="docutils literal"><span class=
4957 "pre">ppp0</span></tt> punto-a-punto per una
4958 connessione ad internet</li>
4962 <div class="section" id="bloccare-i-ping-dall-esterno">
4963 <h3><a class="toc-backref" href=
4964 "#id110">9.10.1 Bloccare i ping
4965 dall'esterno</a></h3>
4967 <p>Spesso gli script che attaccano
4968 <em>automaticamente</em> le varie reti provano a fare un
4969 ping per verificare quali IP sono on-line: bloccare il
4970 traffico <tt class="docutils literal"><span class=
4971 "pre">ICMP</span></tt> in ingresso puo' aiutare ad
4972 evitare parte di questi attacchi:</p>
4973 <pre class="literal-block">
4974 iptables -A INPUT -i ppp0 -p ICMP -j DROP
4978 <div class="section" id="masquerading-snat">
4979 <h3><a class="toc-backref" href=
4980 "#id111">9.10.2 Masquerading
4983 <dl class="docutils">
4984 <dt>Per attivare la network address translation (in
4985 questo caso un SNAT) per la rete locale privata
4986 sull'indirizzo ip del <em>modem</em>::</dt>
4988 <dd>iptables -A POSTROUTING -s
4989 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE</dd>
4992 <p>Il <em>Masquerading</em> a differenza dello
4993 <em>SNAT</em> puro (<tt class=
4994 "docutils literal"><span class="pre">-j</span>
4995 <span class="pre">SNAT</span> <span class=
4996 "pre">--to-source</span> <span class=
4997 "pre">proprio_ip_pubblico</span> <span class=
4998 "pre">)</span> <span class="pre">legge</span>
4999 <span class="pre">l'indirizzo</span> <span class=
5000 "pre">ip</span> <span class="pre">del</span> <span class=
5001 "pre">device</span> <span class="pre">``ppp0</span></tt>.
5002 In questo modo se l'IP cambia automaticamente si aggiorna
5003 anche il source natting. Se avete un indirizzo IP statico
5004 assegnato al vostro gateway potete invece usare lo SNAT
5007 <dl class="docutils">
5008 <dt>Altri esempi::</dt>
5011 <p class="first">## Change source addresses to
5012 1.2.3.4. # iptables -t nat -A POSTROUTING -o eth0 -j
5013 SNAT --to 1.2.3.4</p>
5015 <p>## Change source addresses to 1.2.3.4, 1.2.3.5 or
5016 1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j
5017 SNAT --to 1.2.3.4-1.2.3.6</p>
5019 <p class="last">## Change source addresses to
5020 1.2.3.4, ports 1-1023 # iptables -t nat -A
5021 POSTROUTING -p tcp -o eth0 -j SNAT --to
5027 <div class="section" id="brute-force">
5028 <h3><a class="toc-backref" href=
5029 "#id112">9.10.3 Brute force</a></h3>
5031 <dl class="docutils">
5032 <dt>Per limitare attacchi di tipo brute force su
5036 <p class="first">iptables -A INPUT -i ppp0 -p tcp -m
5037 tcp --dport 22 -m state --state NEW -m recent
5038 --update --seconds 3000 --hitcount 4 --name DEFAULT
5039 --rsource -j DROP</p>
5041 <p class="last">iptables -A INPUT -i ppp0 -p tcp -m
5042 tcp --dport 22 -m state --state NEW -m recent --set
5043 --name DEFAULT --rsource</p>
5050 <div class="section" id="note">
5051 <h1><a class="toc-backref" href=
5052 "#id113">10 NOTE</a></h1>
5054 <dl class="docutils">
5058 <ul class="first last simple">
5059 <li>altri esempi commenti su una zona</li>
5061 <li>esempi di una zona PTR?</li>
5063 <li>dns secondari</li>
5070 <p>sintassi: in <tt class="docutils literal"><span class=
5071 "pre">monospace</span></tt> :</p>
5074 <li>nomi di files</li>