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="#dns-slave" id=
621 "id70" name="id70">6.3 DNS
624 <li><a class="reference internal" href=
625 "#link-suggeriti" id="id71" name=
626 "id71">6.4 Link suggeriti:</a></li>
631 <a class="reference internal" href="#samba" id="id72"
632 name="id72">7 Samba</a>
634 <ul class="auto-toc">
635 <li><a class="reference internal" href="#pacchetti" id=
637 "id73">7.1 Pacchetti</a></li>
639 <li><a class="reference internal" href=
640 "#passwords-e-autenticazione" id="id74" name=
641 "id74">7.2 Passwords e
642 autenticazione</a></li>
644 <li><a class="reference internal" href=
645 "#creazione-utenti" id="id75" name=
646 "id75">7.3 Creazione Utenti</a></li>
649 <a class="reference internal" href=
650 "#creare-la-condivisione" id="id76" name=
651 "id76">7.4 Creare la
654 <ul class="auto-toc">
655 <li><a class="reference internal" href=
656 "#sicurezza-permessi-di-esecuzione-sul-server" id=
658 "id77">7.4.1 Sicurezza: permessi
659 di esecuzione sul server</a></li>
664 <a class="reference internal" href=
665 "#configurazione-dell-applicativo-samba-vero-e-proprio"
667 "id78">7.5 Configurazione
668 dell'applicativo Samba vero e proprio.</a>
670 <ul class="auto-toc">
671 <li><a class="reference internal" href=
672 "#creazione-di-un-gruppo" id="id79" name=
673 "id79">7.5.1 Creazione di un
678 <li><a class="reference internal" href=
679 "#testare-il-servizio" id="id80" name=
680 "id80">7.6 Testare il
686 <a class="reference internal" href=
687 "#server-di-posta-postfix" id="id81" name=
688 "id81">8 Server di posta: Postfix</a>
690 <ul class="auto-toc">
692 <a class="reference internal" href=
693 "#test-del-server-smtp" id="id82" name=
694 "id82">8.1 Test del server smtp</a>
696 <ul class="auto-toc">
697 <li><a class="reference internal" href="#swaks" id=
699 "id83">8.1.1 Swaks</a></li>
703 <li><a class="reference internal" href="#imap-e-pop"
704 id="id84" name="id84">8.2 Imap e
708 <a class="reference internal" href=
709 "#client-a-riga-di-comando" id="id85" name=
710 "id85">8.3 Client a riga di
713 <ul class="auto-toc">
714 <li><a class="reference internal" href="#mailx" id=
716 "id86">8.3.1 mailx</a></li>
718 <li><a class="reference internal" href="#mutt" id=
720 "id87">8.3.2 Mutt</a></li>
722 <li><a class="reference internal" href=
723 "#web-client" id="id88" name=
724 "id88">8.3.3 Web client</a></li>
729 <a class="reference internal" href="#graylisting" id=
731 "id89">8.4 Graylisting</a>
733 <ul class="auto-toc">
734 <li><a class="reference internal" href=
735 "#abilitazione-in-postfix" id="id90" name=
736 "id90">8.4.1 Abilitazione in
739 <li><a class="reference internal" href="#test" id=
741 "id91">8.4.2 Test</a></li>
743 <li><a class="reference internal" href=
744 "#statistiche" id="id92" name=
745 "id92">8.4.3 Statistiche</a></li>
752 <a class="reference internal" href="#firewall" id="id93"
753 name="id93">9 Firewall</a>
755 <ul class="auto-toc">
756 <li><a class="reference internal" href="#links" id=
757 "id94" name="id94">9.1 Links</a></li>
759 <li><a class="reference internal" href="#ipfilter" id=
761 "id95">9.2 Ipfilter</a></li>
764 <a class="reference internal" href=
765 "#progettazione-di-un-firewall" id="id96" name=
766 "id96">9.3 Progettazione di un
769 <ul class="auto-toc">
770 <li><a class="reference internal" href=
771 "#collocazione" id="id97" name=
772 "id97">9.3.1 Collocazione</a></li>
774 <li><a class="reference internal" href=
775 "#policy-di-default" id="id98" name=
776 "id98">9.3.2 Policy di
779 <li><a class="reference internal" href="#hardware"
781 "id99">9.3.3 Hardware</a></li>
785 <li><a class="reference internal" href=
786 "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
787 "id100" name="id100">9.4 Percorso dei
788 pacchetti tra tabelle e catene</a></li>
791 <a class="reference internal" href=
792 "#concetti-di-base" id="id101" name=
793 "id101">9.5 Concetti di base</a>
795 <ul class="auto-toc">
796 <li><a class="reference internal" href=
797 "#tabelle-catene-regole" id="id102" name=
798 "id102">9.5.1 Tabelle, catene,
801 <li><a class="reference internal" href="#match" id=
803 "id103">9.5.2 Match</a></li>
805 <li><a class="reference internal" href="#targets"
807 "id104">9.5.3 Targets</a></li>
811 <li><a class="reference internal" href=
812 "#tabella-filter" id="id105" name=
813 "id105">9.6 Tabella Filter</a></li>
815 <li><a class="reference internal" href=
816 "#flush-automatico-per-macchine-remote" id="id106"
817 name="id106">9.7 Flush automatico per
818 macchine remote</a></li>
820 <li><a class="reference internal" href=
821 "#gestione-regole-rules" id="id107" name=
822 "id107">9.8 Gestione regole
826 <a class="reference internal" href=
827 "#salvataggio-regole" id="id108" name=
828 "id108">9.9 Salvataggio regole</a>
830 <ul class="auto-toc">
831 <li><a class="reference internal" href=
832 "#iptables-save" id="id109" name=
833 "id109">9.9.1 Iptables-save</a></li>
835 <li><a class="reference internal" href=
836 "#iptables-restore" id="id110" name=
837 "id110">9.9.2 Iptables-restore</a></li>
842 <a class="reference internal" href="#esempi" id=
843 "id111" name="id111">9.10 Esempi</a>
845 <ul class="auto-toc">
846 <li><a class="reference internal" href=
847 "#bloccare-i-ping-dall-esterno" id="id112" name=
848 "id112">9.10.1 Bloccare i ping
849 dall'esterno</a></li>
851 <li><a class="reference internal" href=
852 "#masquerading-snat" id="id113" name=
853 "id113">9.10.2 Masquerading
856 <li><a class="reference internal" href=
857 "#brute-force" id="id114" name=
858 "id114">9.10.3 Brute
865 <li><a class="reference internal" href="#note" id="id115"
866 name="id115">10 NOTE</a></li>
870 <p>Generato con: <a class="reference external" href=
871 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
873 <div class="section" id="configurazione-sistema">
874 <h1><a class="toc-backref" href=
875 "#id7">1 Configurazione sistema</a></h1>
877 <div class="section" id="solo-per-uso-interno">
878 <h2><a class="toc-backref" href=
879 "#id8">1.1 Solo per uso interno</a></h2>
881 <p>Impostazioni di base per la configurazione del sistema
882 operativo e della rete nel laboratorio 208 facente parte
883 della rete piffa.net .</p>
885 <p>Qui riportati per comodita' degli studenti (e del
886 docente che non sara' <strong>mai piu'</strong> costretto a
887 ripeterli continuamente! ). Gli altri lettori potranno
888 tenerli presenti per cercare di comprendere gli esempi nel
889 testo. Ad esempio: quando leggerete <tt class=
890 "docutils literal"><span class=
891 "pre">10.10.208.254:3128</span></tt> saprete che si tratta
892 del nostro <em>proxy http</em>, stara' quindi a voi
893 sostituire i dati con gli equivalenti <em>IP</em> della
897 <div class="section" id="rete">
898 <h2><a class="toc-backref" href=
899 "#id9">1.2 Rete</a></h2>
901 <p>Parametri della rete attualmente in uso:</p>
903 <table border="1" class="docutils">
911 <td colspan="2">Parametri della rete</td>
917 <td>10.10.208.0/24</td>
923 <td>255.255.255.0</td>
929 <td>10.10.208.255</td>
935 <td>10.10.208.254</td>
941 <td>10.10.208.254</td>
947 <td>10.10.208.254:3128</td>
952 <p>Sul portatile di Andrea, corrispondente all'IP 254, gira
953 un DHCP, proxy http e mirror di Debian ( <a class=
954 "reference external" href=
955 "http://debian.piffa.net">http://debian.piffa.net</a>). Se
956 Andrea non e' in aula (o ancora peggio non c'e' il suo
957 portatile Net) gli studenti dovranno darsi un indirizzo IP
958 manualmente e disabilitare il proxy (che pero' e
959 trasparente, quindi fate pure come se non ci fosse ;) . Ad
960 oggi il <em>lab208</em> e' servito dal server Bender (254 o
961 248) che ha ripreso le sue vecchie funzioni.</p>
963 <div class="section" id="interfaces">
964 <h3><a class="toc-backref" href=
965 "#id10">1.2.1 interfaces</a></h3>
967 <p>Segue un esempio del file di configurazione della
968 scheda di rete con configurazione statica:</p>
970 <p>/etc/network/interfaces:</p>
971 <pre class="literal-block">
972 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
974 # The loopback interface
975 iface lo inet loopback
977 # La prima scheda di rete (se si chiama eth0)
978 # (network, broadcast and gateway sono optional)
979 iface etho inet static
981 # iface etho inet dhcp
982 address 10.10.208.101
983 netmask 255.255.255.0
985 broadcast 10.10.208.255
986 gateway 10.10.208.254
988 # Quali interfacci devono partire automaticamente:
992 <p>Controllare il nome della propria scheda di rete: a
993 volte <em>udev</em> rinomina la prima scheda a <tt class=
994 "docutils literal"><span class="pre">eth1</span></tt>,
995 oppure potreste avere piu' di una scheda di rete (anche
996 un'interfaccia <em>firewire</em> puo' essere
997 automaticamente abilitata come scheda di rete).</p>
999 <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
1000 , eth0:1 , ...) ricordarsi che queste dipendono dalla
1001 scheda fisica a cui sono associate: abbattere con
1002 <tt class="docutils literal"><span class=
1003 "pre">ifconfig</span> <span class="pre">down</span>
1004 <span class="pre">eth0</span></tt> la scheda principale
1005 fara' cadere anche queste. Tornando ad attivare la scada
1006 principale con <tt class="docutils literal"><span class=
1007 "pre">ifconfig</span> <span class="pre">eth0</span>
1008 <span class="pre">up</span></tt> la virtuale tornera'
1009 attiva: nel caso voleste disabilitarla dovrete quindi
1010 sempre abbattere manualmente la scheda virtuale
1011 <em>prima</em> della scheda reale.</p>
1013 <p>I DNS vanno indicati nel file <tt class=
1014 "docutils literal"><span class=
1015 "pre">/etc/resolv.conf</span></tt> , la cui sintassi e'
1016 spiegata al punto 4.6 .</p>
1020 <div class="section" id="bash-completion">
1021 <h2><a class="toc-backref" href=
1022 "#id11">1.3 Bash completion</a></h2>
1024 <p>Il completamento automatico della shell (che si attiva
1025 premendo il tasto tab una o due volte mentre si sta
1026 scrivendo un termine) permette di comporre automaticamente
1027 i nomi dei comandi e i percorsi dei file, sopratutto la
1028 composizione automatica dei percorsi dei file e' di grande
1031 <p>Bash_completion permette di integrare il completamento
1032 automatico con i nomi dei pacchetti e oggetti dei comandi:
1033 ad es. volendo digitare <tt class=
1034 "docutils literal"><span class="pre">apt-get</span>
1035 <span class="pre">inst[TAB]</span> <span class=
1036 "pre">xtigh[TAB]</span></tt> ora verra' completato
1037 automaticamente sia la parola <tt class=
1038 "docutils literal"><span class="pre">install</span></tt>
1039 che il nome del pacchetto <tt class=
1040 "docutils literal"><span class=
1041 "pre">xtightvncviewer</span></tt>.</p>
1043 <p>Abilitare /etc/bash_completion nel file <tt class=
1044 "docutils literal"><span class=
1045 "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
1046 proprio <tt class="docutils literal"><span class=
1047 "pre">~/.bashrc</span></tt> (che sarebbe il file
1048 <em>nascosto</em>, quindi con un punto all'inizio del nome
1049 del file, di configurazione della shell bash per ogni
1050 utente, presente nella propria <em>home
1051 directory</em>):</p>
1052 <pre class="literal-block">
1053 echo ". /etc/bash_completion" >> ~/.bashrc
1056 <p>Esempio di ~/.bahsrc</p>
1057 <pre class="literal-block">
1058 # ~/.bashrc: executed by bash(1) for non-login shells.
1060 export PS1='\h:\w\$ '
1063 # De-commentare le seguenti righe per abilitare la colorazione dei
1065 export LS_OPTIONS='--color=auto'
1067 alias ls='ls $LS_OPTIONS'
1068 alias ll='ls $LS_OPTIONS -l'
1069 alias l='ls $LS_OPTIONS -lA'
1071 # Some more alias to avoid making mistakes:
1076 # questo abilita bash completion
1077 . /etc/bash_completion
1080 <p>Il file <tt class="docutils literal"><span class=
1081 "pre">/etc/bash_completion</span></tt> deve essere presente
1082 nel sistema, in caso contrario installare il pacchetto:
1083 <tt class="docutils literal"><span class=
1084 "pre">bash-completion</span></tt>. Generalmente l'utente
1085 <tt class="docutils literal"><span class=
1086 "pre">root</span></tt> ha un file <tt class=
1087 "docutils literal"><span class="pre">.bashrc</span></tt>
1088 preimpostato analogo a quello citato sopra, a differenza
1089 dei normali utenti di sistema.</p>
1094 <li><a class="reference external" href=
1095 "http://www.debian-administration.org/articles/316">An
1096 introduction to bash completion</a></li>
1098 <li><a class="reference external" href=
1099 "http://www.caliban.org/bash/">Working more productively
1100 with bash 2.x/3.x</a></li>
1104 <div class="section" id="vim">
1105 <h2><a class="toc-backref" href=
1106 "#id12">1.4 Vim</a></h2>
1108 <p>Vim e' l'editor di testo preferito dai sistemisti,
1109 quindi sara' conveniente impostare fin da subito alcune
1110 impostazioni per renderlo piu' comodo.</p>
1112 <p>Assicurarsi che sia installata nel sistema la versione
1113 completa dell'editor <tt class=
1114 "docutils literal"><span class="pre">vim</span></tt>
1115 installando il pacchetto <tt class=
1116 "docutils literal"><span class="pre">vim</span></tt>:</p>
1117 <pre class="literal-block">
1118 # apt-get install vim
1120 e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
1122 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1123 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1124 " you can find below. If you wish to change any of those settings, you should
1125 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1126 " everytime an upgrade of the vim packages is performed. It is recommended to
1127 " make changes after sourcing debian.vim since it alters the value of the
1128 " 'compatible' option.
1130 " This line should not be removed as it ensures that various options are
1131 " properly set to work with the Vim-related packages available in Debian.
1134 " Uncomment the next line to make Vim more Vi-compatible
1135 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
1136 " options, so any other options should be set AFTER setting 'compatible'.
1139 " Vim5 and later versions support syntax highlighting. Uncommenting the next
1140 " line enables syntax highlighting by default.
1143 " If using a dark background within the editing area and syntax highlighting
1144 " turn on this option as well.
1147 " Uncomment the following to have Vim jump to the last position when
1151 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
1152 \| exe "normal! g'\"" | endif
1155 " Uncomment the following to have Vim load indentation rules and plugins
1156 " according to the detected filetype.
1157 " This is not recommanded if you often copy and paste into vim,
1158 " as it messes all the indentation.
1160 filetype plugin indent on
1163 " This goes for comments folding: use co to expnad and zc to compress,
1164 " zi to toggle on/off
1166 set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
1168 " The following are commented out as they cause vim to behave a lot
1169 " differently from regular Vi. They are highly recommended though.
1170 set showcmd " Show (partial) command in status line.
1171 "set showmatch " Show matching brackets.
1172 # Ignorecase is quite userfull
1173 set ignorecase " Do case insensitive matching
1174 "set smartcase " Do smart case matching
1175 "set incsearch " Incremental search
1176 set autowrite " Automatically save before commands like :next and :make
1177 "set hidden " Hide buffers when they are abandoned
1178 "set mouse=a " Enable mouse usage (all modes) in terminals
1180 " Source a global configuration file if available
1181 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1182 if filereadable("/etc/vim/vimrc.local")
1183 source /etc/vim/vimrc.local
1187 <p>I principianti faranno bene ad esercitarsi con
1188 <tt class="docutils literal"><span class=
1189 "pre">vimtutor</span> <span class="pre">it</span></tt>.</p>
1192 <div class="section" id="vnc">
1193 <h2><a class="toc-backref" href=
1194 "#id13">1.5 VNC</a></h2>
1196 <p>I Virtual Network Computing (o VNC) sono software di
1197 controllo remoto e servono per amministrare il proprio
1198 computer a distanza o visualizzare la sessione di lavoro di
1199 un altro computer sul proprio a scopo didattico.</p>
1201 <p>Scaricare il pacchetto <tt class=
1202 "docutils literal"><span class=
1203 "pre">xtightvncviewer</span></tt> e lo script <tt class=
1204 "docutils literal"><span class="pre">guarda.sh</span></tt>
1205 in una posizione (collocazione nel <em>path</em> degli
1206 utenti, es <tt class="docutils literal"><span class=
1207 "pre">echo</span> <span class="pre">$PATH</span></tt> per
1208 visualizzare l'attuale path ) comoda per gli utenti ( in
1209 genere <tt class="docutils literal"><span class=
1210 "pre">/bin</span></tt> ), rendere eseguibile lo script.</p>
1213 <pre class="literal-block">
1216 wget http://debian.piffa.net/guarda.sh
1221 <p>Si noti che non e' possibile lanciare un applicativo sul
1222 server grafico di un utente da una shell in cui si sta
1223 lavorando come altro utente, anche se root. E' quindi
1224 necessario essere l'utente di sistema che si e' loggato
1225 inizialmente nella sessione grafica per poter lanciare lo
1226 script guarda.sh da una shell.</p>
1228 <p>Controllare con <tt class=
1229 "docutils literal"><span class="pre">whoami</span></tt> di
1230 essere l'utente normale (es <tt class=
1231 "docutils literal"><span class="pre">utente</span>
1232 <span class="pre">|</span> <span class=
1233 "pre">studente</span> <span class="pre">|</span>
1234 <span class="pre">proprio</span> <span class=
1235 "pre">nome</span></tt> ), in caso si sia assunta una altra
1236 <tt class="docutils literal"><span class=
1237 "pre">id</span></tt> si apra un altra shell o si esca da
1238 quella attuale con <tt class=
1239 "docutils literal"><span class="pre">exit</span></tt> .</p>
1242 <div class="section" id="lista-dei-pacchetti-di-base">
1243 <h2><a class="toc-backref" href=
1244 "#id14">1.6 Lista dei pacchetti di
1247 <p>I pacchetti installati generalmente <a class=
1248 "footnote-reference" href="#id2" id="id1" name=
1249 "id1">[1]</a> per poter seguire le lezioni sono:</p>
1250 <pre class="literal-block">
1251 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1254 <table class="docutils footnote" frame="void" id="id2"
1261 <tbody valign="top">
1263 <td class="label"><a class="fn-backref" href=
1266 <td><tt class="docutils literal"><span class=
1267 "pre">kde-core</span></tt> e' piu' leggero del
1268 pacchetto <tt class="docutils literal"><span class=
1269 "pre">kde</span></tt>. Esiste un equivalente
1270 <tt class="docutils literal"><span class=
1271 "pre">gnome-core</span> <span class=
1272 "pre">gnome</span></tt> per chi preferisce gnome, nel
1273 caso si potrebbe installare il log-in manager
1274 <tt class="docutils literal"><span class=
1275 "pre">gdm</span></tt> al posto di <tt class=
1276 "docutils literal"><span class=
1277 "pre">kdm</span></tt>.</td>
1283 <div class="section" id="apt-configurazione">
1284 <h2><a class="toc-backref" href=
1285 "#id15">1.7 Apt configurazione</a></h2>
1287 <p>Vediamo i due file principali di apt:</p>
1290 <li><tt class="docutils literal"><span class=
1291 "pre">/etc/apt/sources.list</span></tt></li>
1293 <li><tt class="docutils literal"><span class=
1294 "pre">/etc/apt/apt.conf</span></tt></li>
1297 <div class="section" id="sources-list">
1298 <h3><a class="toc-backref" href=
1299 "#id16">1.7.1 sources.list</a></h3>
1301 <p>Questo file contiene i sorgenti da cui <em>apt</em>
1302 preleva i pacchetti da installare tramite <em>dpkg</em>,
1303 vengono quindi precisati i metodi (ad es. http / ftp /
1304 cdrom / file), la release che si vuole tracciare (es
1305 <tt class="docutils literal"><span class=
1306 "pre">stable,</span> <span class="pre">testing,</span>
1307 <span class="pre">unstable</span></tt> oppure i
1308 corrispondenti release name es: <tt class=
1309 "docutils literal"><span class="pre">Lenny,</span>
1310 <span class="pre">Squeeze,</span> <span class=
1311 "pre">Sid</span></tt>), i rami di interesse (es:
1312 <tt class="docutils literal"><span class=
1313 "pre">main</span></tt> che e' l'archivio principale,
1314 <tt class="docutils literal"><span class=
1315 "pre">non-free</span></tt> per il software non libero,
1316 <tt class="docutils literal"><span class=
1317 "pre">contrib</span></tt> per i pacchetti non realizzati
1318 dai manutentori ufficiali).</p>
1320 <p>Gli archivi sono generalmente:</p>
1323 <li><tt class="docutils literal"><span class=
1324 "pre">deb</span></tt> per pacchetti Debian binari,
1325 pronti per l'installazione.</li>
1327 <li><tt class="docutils literal"><span class=
1328 "pre">deb-src</span></tt> per i pacchetti sorgenti
1329 (quindi da compilare, come il kernel) degli stessi
1330 pacchetti binari. In genere se non compilate spesso
1331 potete evitare di tracciare i sorgenti per risparmiare
1335 <p><tt class="docutils literal"><span class=
1336 "pre">/etc/apt/sources.list</span></tt></p>
1337 <pre class="literal-block">
1338 # esempio di accesso a un CDROM:
1339 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1341 # Archivio principale debian via http su piffa.net,
1342 # non funziona al di fuori dell'aula dei corsi
1343 deb http://debian.piffa.net/debian/ lenny main
1344 # Sono disponibili anche i rami non-free contrib
1345 # deb http://debian.piffa.net/debian/ lenny non-free contrib
1346 # Sono disponibili anche le release unstable e testing
1347 # deb http://debian.piffa.net/debian/ testing main non-free contrib
1348 # deb http://debian.piffa.net/debian/ sid main non-free contrib
1350 # Mirror da kernel.org europa da usare a casa:
1351 deb http://mirrors.eu.kernel.org/debian/ lenny main
1353 # Security dal sito principale
1354 deb http://security.debian.org/ lenny/updates main
1355 deb-src http://security.debian.org/ lenny/updates main
1357 # Debian volatile per le cose soggette a cambiamenti non legati
1358 # a dinamiche di sicurezza
1359 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1360 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1362 # Esempio di accesso a un file system locale contenente i pacchetti:
1363 # Potete scaricarei in aula con debmirror da debian.piffa.net
1364 # un mirror locale da usare poi a casa anche senza internet
1365 # deb file:/mnt/mirror sid main non-free contrib
1369 <div class="section" id="etc-apt-apt-conf">
1370 <h3><a class="toc-backref" href=
1371 "#id17">1.7.2 /etc/apt/apt.conf</a></h3>
1373 <p>Questo file contiene le opzioni di apt, come ad
1374 esempio il proxy:</p>
1375 <pre class="literal-block">
1376 Acquire::http::Proxy "http://10.10.208.254:3128";
1379 <p>Si tenga conto che se si imposta un proxy per apt sul
1380 proprio portatile e tornati a casa propria si vuole
1381 scaricare nuovi pacchetti si dovra' disabilitare il
1387 <div class="section" id="squid">
1388 <h1><a class="toc-backref" href=
1389 "#id18">2 Squid</a></h1>
1391 <p>Squid e' un proxy cache http (ma anche FTP e https)
1392 robusto e strutturato, puo' essere usato sia in reti
1393 relativamente piccole grazie alla semplicita' di
1394 configurazione che in scenari piu' complessi grazie alla
1395 possibilita' di gestirne in modo granulare le risorse. Si
1396 partira' dalle configurazioni piu' semplici per la semplice
1397 <em>condivisione della navigazione</em> internet, per poi
1398 poter configurare la gestione degli accessi, il filtraggio
1399 dei contenuti (Squid e' una applicazione che si muove nel 4'
1400 livello del modello TCP/IP a differenza di un
1401 <em>ipfilter</em> limitato al 2') nel l bilanciamento del
1402 carico tra piu' hosts.</p>
1404 <dl class="docutils">
1405 <dt>Inoltre Squid svolge la funzione di
1406 <em>anonymizer</em>:</dt>
1408 <dd>nasconde i client http alla rete internet: risulta solo
1409 il server proxy nei log dei server web frequentati dagli
1410 utenti di Squid.</dd>
1413 <p>Cosa a volte sottovalutata, Squid permette la navigazione
1414 web a una rete basata su <em>indirizzi IP privati</em> (es
1415 una 192.168.0.0/24). E se la rete privata deve <em>solo
1416 navigare</em> in internet, non serve un <em>NAT</em> od
1417 altro, basta il solo Squid. Per altro non servira' neanche un
1418 servizio DNS dato che <em>sara' il solo Squid a risolvere i
1419 nomi di dominio</em> per i suoi client http.</p>
1421 <p>Squid ascolta di default sulla porta 3128, per impostare
1422 <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
1423 "docutils literal"><span class=
1424 "pre">/etc/apt/apt.conf</span></tt></p>
1425 <pre class="literal-block">
1426 Acquire::http::Proxy "10.10.208.254:3128";
1429 <p>Per installare Squid si usino i pacchetti:</p>
1430 <pre class="literal-block">
1434 <div class="section" id="configurazione-squid-conf">
1435 <h2><a class="toc-backref" href=
1436 "#id19">2.1 Configurazione:
1439 <p>Segue un estratto delle direttive principali viste in
1440 aula presenti nel file di configurazione <tt class=
1441 "docutils literal"><span class=
1442 "pre">/etc/squid3/squid.conf</span></tt> .</p>
1444 <div class="section" id="cache-dir">
1445 <h3><a class="toc-backref" href=
1446 "#id20">2.1.1 Cache_dir</a></h3>
1448 <p>Cache dir serve per impostare dimensione e percorso
1449 della cache creata sul supporto di storaggio. Essendo la
1450 dimensione di default della cache pari a <tt class=
1451 "docutils literal"><span class="pre">~100</span>
1452 <span class="pre">MB</span></tt> e' altamente
1453 consigliabili aumentare questo parametro se si vuole
1454 poter utilizzare la funzione di <em>cache</em> http del
1457 <p>La dimensione ovviamente dipendera' dallo spazio
1458 disponibile, dimensioni tipiche e massime degli oggetti
1459 che si vuole tenere in cache (un solo file <em>.iso e'
1460 circa ``700 MB``, il pacchetto *Openoffice.org</em> circa
1461 <tt class="docutils literal"><span class="pre">150</span>
1462 <span class="pre">MB</span></tt>, un pacchetto debian
1463 circa <tt class="docutils literal"><span class=
1464 "pre">20</span> <span class="pre">MB</span></tt>), numero
1467 <p>Si presti poi attenzione alla natura dei dati che
1468 saranno salvati nella cache: sono tutti dati facilmente
1469 sostituibili (gli originali sono <em>on-line</em>) la cui
1470 perdita non arreca danni permanenti. Questo rende la
1471 cache di Squid un possibile candidato ad un <em>RAID
1472 stirpe</em> (livello 0), con vantaggi sia per le
1473 prestazioni (e la velocita' di navigazione e' uno dei
1474 motivi per cui si installa Squid) che per l'utilizzo
1475 estensivo dello spazio di storaggio. Questo fino al
1476 momento in cui per voi non sia piu' importante
1477 <em>garantire la disponibilita' del servizio</em> (se il
1478 RAID stripe dovesse rompersi gli utenti non potrebbero
1479 piu' navigare, cosa che per natura dello stripe e'
1480 maggiormente probabile rispetto ad un <em>mirror</em> o a
1481 un filesytem <em>normale</em>) con un RAID mirror o
1484 <p>Altra considerazione: i dati del proxy vengono slavati
1485 sul filesytem del server dietro richiesta di utenti
1486 esterni talvolta sconosciuti. Come per i servizi di file
1487 sharing o per la posta elettronica non c'e' motivo che il
1488 filesystem su cui sono ospitati questi dati abbia i
1489 privilegi di eseguibilita' o suid (in genere si puo'
1490 anche usare <em>noatime</em> per renderlo piu' veloce,
1491 che si usi o meno il journal dipende dalle preferenze:
1492 affidabilita' oppure prestazioni):</p>
1495 <pre class="literal-block">
1497 # Filesystem per Squid http cache
1498 /dev/md3/ /var/spool/squid/ ext3,noexec,nosuid,noatime 0 3
1501 <p>Ora possiamo impostare la cache direttamente nel file
1502 <tt class="docutils literal"><span class=
1503 "pre">/etc/squid3/squid.conf</span></tt>:</p>
1504 <pre class="literal-block">
1505 #TAG: cache_dir (riga 1628)
1508 # cache_dir Type Directory-Name Fs-specific-data [options]
1510 # You can specify multiple cache_dir lines to spread the
1511 # cache among different disk partitions.
1514 # cache_dir ufs /var/spool/squid3 100 16 256
1515 cache_dir aufs /var/spool/squid3 300 24 256
1519 # directory primo livello
1520 # secondo livello di directory
1523 <p>Se si modifica la struttura del filesytem della cache
1524 di Squid, ad esempio variando il numero delle directory,
1525 puo' essere opportuno rigenerare la struttura della cache
1526 di squid (per lo meno se si <em>aumenta</em> il numero
1527 delle directory di primo o secondo livello). Tipicamente
1528 e' consigliabile cancellare (se si ha <em>ridotto</em> il
1529 numero delle directory) la vecchia cache e poi generare
1530 una nuova struttura. Se si vuole <em>star nel sicuro</em>
1531 ogni volta che si modifica l'impostazione delle directory
1532 <em>si svuoti la vecchia cache e se ne generi una
1534 <pre class="literal-block">
1535 # /etc/init.d/squid3 stop
1536 # rm -r /var/spool/squid3/??
1538 # /etc/init.d/squid3 start
1542 <div class="section" id="tag-maximum-object-size">
1543 <h3><a class="toc-backref" href=
1544 "#id21">2.1.2 TAG:
1545 maximum_object_size</a></h3>
1547 <p>Questa direttiva imposta la dimensione massima degli
1548 oggetti che vengono salvati sul supporto di storaggio,
1549 oggetti di dimensioni superiori saranno comunque
1550 scaricati ma non tenuti in cache.</p>
1552 <p>TAG: maximum_object_size (1760):</p>
1553 <pre class="literal-block">
1554 # TAG: maximum_object_size (1760)
1555 # Objects larger than this size will NOT be saved on disk. The
1556 # value is specified in kilobytes, and the default is 4MB. If
1557 # you wish to get a high BYTES hit ratio, you should probably
1558 # increase this (one 32 MB object hit counts for 3200 10KB
1559 # hits). If you wish to increase speed more than your want to
1560 # save bandwidth you should leave this low.
1562 # NOTE: if using the LFUDA replacement policy you should increase
1563 # this value to maximize the byte hit rate improvement of LFUDA!
1564 # See replacement_policy below for a discussion of this policy.
1567 # maximum_object_size 4096 KB
1568 maximum_object_size 150 MB
1572 <div class="section" id="tag-cache-mem">
1573 <h3><a class="toc-backref" href=
1574 "#id22">2.1.3 TAG: cache_mem</a></h3>
1576 <p><em>Cache_mem</em> imposta quanta memoria RAM venga
1577 utilizzata per la cache di Squid. Questo dipendera' dalla
1578 RAM disponibile sul sistema, e da quanta di questa volete
1579 mettere a disposizione di Squid (altri servizi importanti
1580 girano sulla stessa macchina?). Questo parametro
1581 influisce sulle prestazioni e sul degrado dei supporti di
1582 storaggio (sopratutto se magnetici).</p>
1584 <p>Se si stesse pensando di usare dell'hardware
1585 <em>embedded</em> a basse prestazioni / consumo per
1586 realizzare un server gateway / NAT / Squid si tenga
1587 presente che Squid e' relativamente esoso di risorse:
1588 avra' bisogno di una macchina con <tt class=
1589 "docutils literal"><span class="pre">~25MB</span></tt>
1590 (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1591 servire decorosamente una decina di client http su una
1592 rete ethernet 10/100. In questo caso non fate scendere
1593 <tt class="docutils literal"><span class=
1594 "pre">cache_mem</span></tt> sotto i <tt class=
1595 "docutils literal"><span class="pre">2/4</span>
1596 <span class="pre">MB</span></tt> pena un accesso continuo
1597 al supporto di storaggio.</p>
1599 <p>Se invece si disponesse di una macchina dedicata a
1600 Squid con gigabytes di RAM non si esiti a dedicarne buona
1601 parte a <em>cache_mem</em>.</p>
1603 <p>TAG: cache_mem (1566):</p>
1604 <pre class="literal-block">
1605 # 'cache_mem' specifies the ideal amount of memory to be used
1607 # * In-Transit objects
1609 # * Negative-Cached objects
1616 <div class="section" id="tag-minimum-object-size">
1617 <h3><a class="toc-backref" href=
1618 "#id23">2.1.4 TAG:
1619 minimum_object_size</a></h3>
1621 <p>Questo parametro imposta la dimensione minima degli
1622 oggetti salvati nella cache. Settato a <tt class=
1623 "docutils literal"><span class="pre">0</span></tt> o a
1624 valori molto piccoli puo' influire negativamente sulla
1625 deframmentazione del filesytem e consumare un numero
1626 elevato di <em>inode</em> (cosa non piu' importante con
1627 ext4 o altri filesytem).</p>
1629 <p>TAG: minimum_object_size:</p>
1630 <pre class="literal-block">
1631 # TAG: minimum_object_size (bytes)
1632 # Objects smaller than this size will NOT be saved on disk. The
1633 # value is specified in kilobytes, and the default is 0 KB, which
1634 # means there is no minimum.
1637 # minimum_object_size 0 KB
1638 minimum_object_size 0 KB
1643 <div class="section" id=
1644 "negoziazione-degli-accesi-al-servizio">
1645 <h2><a class="toc-backref" href=
1646 "#id24">2.2 Negoziazione degli accesi al
1649 <p>Squid e' uno di quei servizi soggetto a problemi di tipo
1650 <em>open relay</em> , si deve quindi limitare la rete che
1651 puo' accedere al servizio.</p>
1653 <dl class="docutils">
1654 <dt>Open Relay:</dt>
1656 <dd>Un servizio a cui possono accedere tutti
1657 indiscriminatamente. La cosa puo' andare bene per servizi
1658 come i server web, che aspirano per loro natura al
1659 maggior numero possibile di utenti, ma non a servizi come
1660 i proxy http oppure ai server di posta elettronica (che
1661 permetterebbero l'invio di SPAM).</dd>
1664 <p>Generalmente non volete che il vostro proxy http venga
1665 usato da persone sconosciute le quali sostanzialmente
1666 <em>navigherebbero sotto l'identita' del vostro proxy</em>
1667 (probabilmente per visionare materiali che non vorrebbero
1668 fossero ricondotti direttamente a loro, per motivi che sta
1669 a voi prendere in considerazione) consumando traffico e
1670 banda della vostra connessione a internet. Tenere Squid in
1671 modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1672 modo per essere inseriti in una <em>black list</em>.</p>
1674 <p>Per poter limitare gli accessi a Squid dal punto di
1675 vista dell'applicazione (quarto livello TCP/IP) si
1676 identifichera' inizialmente l'entita' <em>rete locale</em>
1677 (es: <tt class="docutils literal"><span class=
1678 "pre">localnet</span></tt>) con una ACL di tipo
1679 <em>src</em> (indirizzi IP sorgenti) indicando la
1680 <em>classe / range di IP</em> della nostra rete.</p>
1683 Dopodiche l'accesso (<tt class=
1684 "docutils literal"><span class=
1685 "pre">http_access</span></tt>) si concedera'
1686 (<em>allow</em>) a questa entita' (es: <tt class=
1687 "docutils literal"><span class=
1688 "pre">localnet</span></tt>) negando chiunque altro.
1691 <p>Per maggiori dettagli sulla sintassi utilizzabile per
1692 esprimere i range di IP: <a class="reference external"
1693 href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1694 http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1696 <div class="section" id="acl-e-http-access">
1697 <h3><a class="toc-backref" href=
1698 "#id25">2.2.1 ACL e http access</a></h3>
1700 <p>Si proceda a creare una <tt class=
1701 "docutils literal"><span class="pre">ACL</span></tt> di
1702 tipo <tt class="docutils literal"><span class=
1703 "pre">src</span></tt> per identificare la nostra rete
1704 locale, poi si abiliti l'accesso a questa con la
1705 direttiva <tt class="docutils literal"><span class=
1706 "pre">http_access</span></tt>. Tutto quanto non e'
1707 espressamente autorizzato viene poi negato da un
1708 <tt class="docutils literal"><span class=
1709 "pre">http_access</span> <span class="pre">deny</span>
1710 <span class="pre">all</span></tt> finale.</p>
1711 <pre class="literal-block">
1713 # Defining an Access List
1715 # Every access list definition must begin with an aclname and acltype,
1716 # followed by either type-specific arguments or a quoted filename that
1717 # they are read from.
1719 # ***** ACL TYPES AVAILABLE *****
1721 # acl aclname src ip-address/netmask ... # clients IP address
1724 # Example rule allowing access from your local networks.
1725 # Adapt to list your (internal) IP networks from where browsing
1727 #acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
1728 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1729 #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
1731 acl localnet src 10.10.208.0/24
1735 # Allowing or Denying access based on defined access lists
1737 # Access to the HTTP port:
1738 # http_access allow|deny [!]aclname ...
1740 # NOTE on default values:
1742 # If there are no "access" lines present, the default is to deny
1746 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1748 # Example rule allowing access from your local networks.
1749 # Adapt localnet in the ACL section to list your (internal) IP networks
1750 # from where browsing should be allowed
1751 #http_access allow localnet
1752 http_access allow localnet
1757 <div class="section" id="testare-squid">
1758 <h2><a class="toc-backref" href=
1759 "#id26">2.3 Testare Squid</a></h2>
1761 <p>Configurato squid e' fondamentale testarne il corretto
1762 funzionamento per assicurarsi di non aver creato un
1763 <em>open-relay</em>. Per fare dei test significativi serve
1764 utilizzare degli host remoti: ci si connetta via ssh a
1765 questi per poi utilizzare <tt class=
1766 "docutils literal"><span class="pre">wget</span></tt> da
1767 riga di comando.</p>
1769 <div class="section" id="client-wgetrc">
1770 <h3><a class="toc-backref" href=
1771 "#id27">2.3.1 Client: ~/.wgetrc</a></h3>
1773 <p>Nel file <tt class="docutils literal"><span class=
1774 "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
1775 un file nascosto) si puo' impostare il proxy per wget. Si
1776 utilizzi l'indirizzo IP del server che si vuole testare,
1777 e si seguano i log <tt class=
1778 "docutils literal"><span class=
1779 "pre">/var/log/squid3/access.log</span></tt> sul
1782 <p>Da notare che la prova va' fatta su una macchina della
1783 rete che si vuole testare, non da <em>localhost</em>. Per
1784 altro se si utilizzasse <em>direttamente</em> <tt class=
1785 "docutils literal"><span class=
1786 "pre">localhost</span></tt> non si testerebbe la
1787 <em>ACL</em> predisposta, dato che si si rientrerebbe
1788 nella ACL (pre-configurata di default) <tt class=
1789 "docutils literal"><span class=
1790 "pre">localhost</span></tt>.</p>
1792 <dl class="docutils">
1795 <dd>http_proxy=10.10.208.178:3128</dd>
1798 <p>Si proceda a scaricare dal client scelto con un
1800 <pre class="literal-block">
1801 wget http://www.google.it
1805 <div class="section" id="server-access-log">
1806 <h3><a class="toc-backref" href=
1807 "#id28">2.3.2 Server:
1810 <p>Si puo' controllare il corretto funzionamento del
1811 server seguendo i log di accesso a Squid:</p>
1812 <pre class="literal-block">
1813 # tail -f /var/log/squid3/access.log
1816 <p>In oltre e' possibile configurare diversi
1817 <em>analizzatori di log</em> come <tt class=
1818 "docutils literal"><span class=
1819 "pre">Webalizer</span></tt> per studiare i log di
1825 <div class="section" id="apache">
1826 <h1><a class="toc-backref" href=
1827 "#id29">3 Apache</a></h1>
1829 <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
1830 dato alla piattaforma server Web modulare piu' diffusa (ma
1831 anche al gruppo di lavoro open source che ha creato,
1832 sviluppato e aggiornato il software server), in grado di
1833 operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1835 <p>Un server web e' un processo, e per estensione il computer
1836 su cui e' in esecuzione, che si occupa di fornire, su
1837 richiesta del browser, una pagina web (spesso scritta in
1838 HTML). Le informazioni inviate dal server web viaggiano in
1839 rete trasportate dal protocollo HTTP. L'insieme di server web
1840 dà vita al World Wide Web, uno dei servizi piu'
1841 utilizzati di Internet.</p>
1843 <div class="section" id="pacchetti-da-installare">
1844 <h2><a class="toc-backref" href=
1845 "#id30">3.1 Pacchetti da
1846 installare::</a></h2>
1852 <p>Con la release 2.0 di Apache viene automaticamente resa
1853 disponibile anche la versione SSL (Secure Socket Layer,
1854 connessioni criptate ) del web server.</p>
1857 <div class="section" id="configurazione-di-apache">
1858 <h2><a class="toc-backref" href=
1859 "#id31">3.2 Configurazione di
1862 <p>I file di configurazione di apache si trovano nella
1863 cartella: <tt class="docutils literal"><span class=
1864 "pre">/etc/apache2</span></tt> e sono strutturati come
1865 descritto nel file <tt class=
1866 "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
1867 . Sostanzialmente lo schema e' il seguente:</p>
1869 <dl class="docutils">
1870 <dt>apache2.conf</dt>
1873 <p class="first">File di configurazione principale del
1876 <p class="last">httpd.conf e' il vecchio file di
1877 configurazione di Apache1, presente per motivi di
1878 retrocompatibilita' e' generalmente vuoto.</p>
1883 <dd>In questo file vengono specificate le porte sulle
1884 quali resta in ascolto il server web. Si noti che
1885 utilizzando dei virtual hosts generalmente viene
1886 specificata per questi la porta su cui ascoltare nel file
1887 di configurazione del virtual host, ad es: <tt class=
1888 "docutils literal"><span class=
1889 "pre"><VirtualHost</span> <span class=
1890 "pre">*:80></span></tt></dd>
1892 <dt>sites-available</dt>
1894 <dd>In questa cartella vengono raccolti i file di
1895 configurazione dei virtual host disponibili.</dd>
1897 <dt>sites-enabled</dt>
1899 <dd>In questa cartella sono contenuti dei link simbolici
1900 ai files in ../sites-available : se il link e' presente
1901 in questa cartella il virtual host e' abilitato.</dd>
1903 <dt>mods-available</dt>
1905 <dd>Stesso metodo per i moduli: in questa cartella ci
1906 sono i moduli veri e propri che verranno poi abilitati
1907 grazie all'esistenza di link simbolici nella cartella
1910 <dt>mods-enabled</dt>
1912 <dd>Moduli abilitati, effettivamente caricati.</dd>
1916 <div class="section" id="apache-conf">
1917 <h2><a class="toc-backref" href=
1918 "#id32">3.3 apache.conf</a></h2>
1920 <p>File di configurazione del servizio Apache, contiene le
1921 impostazioni generiche (ad esempio utilizzo della RAM e
1922 risorse di sistema) dell'intero servizio. Nella
1923 configurazione di default per Debian non viene definito un
1924 vero e proprio sito di default ma solo dei virtual
1927 <p>Guardiamo alcune direttive interessanti:</p>
1929 <dl class="docutils">
1932 <dd>Numero di secondi da aspettare prima di chiudere la
1933 connessione con il client. Questo parametro serve a
1934 liberare le risorse di sistema nel caso che un client,
1935 magari a causa di una connessione particolarmente lenta o
1936 instabili, tenga attivo indefinitamente un processo di
1941 <dd>L'estensione keep-alive (http 1.0) congiuntamente
1942 alle connessioni persistenti (http 1.1) permettono al
1943 server di rispondere a piu' richieste dei client mediante
1944 la stessa connessione. Il protocollo http per sua natura
1945 e' senza stato (<em>stateless</em> ), quindi ogni risorsa
1946 richiesta (per pagine web si pensi ad esempio alle
1947 immagini) dal client necessita di una connessione
1948 autonoma. Keep-alive permette di ottimizzare la
1949 connessione anche fino al 50% a seconda delle situazioni
1952 <dt>Server-Pool Size Regulation</dt>
1954 <dd>Questi parametri (StartServers, MinSpareServers, ecc.
1955 Tutti spiegati nel manuale di apache) servono per
1956 attribuire le risorse di sistema disponibili al server
1957 Apache. Tenere questi parametri bassi serve a limitare il
1958 rischio di Denial of Service per il server, nel caso
1959 offra altri servizi. I settagli di default sono come
1960 sempre abbastanza conservativi, se si conta di usare il
1961 proprio Apache per servire un sito web con molti
1962 visitatori sara' necessario aumentare sensibilmente le
1963 impostazioni di base.</dd>
1965 <dt>AccessFileName</dt>
1967 <dd>Il nome del file che viene onorato per modificare le
1968 impostazioni per una singola directory, legato alla
1969 direttiva AllowOverride .</dd>
1973 <div class="section" id="installazione-di-php">
1974 <h2><a class="toc-backref" href=
1975 "#id33">3.4 Installazione di PHP</a></h2>
1977 <p>Pacchetti da installare: <tt class=
1978 "docutils literal"><span class="pre">php5</span>
1979 <span class="pre">php-pear</span></tt></p>
1981 <div class="section" id="test-del-modulo-php">
1982 <h3><a class="toc-backref" href=
1983 "#id34">3.4.1 Test del modulo
1986 <p>Creare nella cartella <tt class=
1987 "docutils literal"><span class="pre">/var/www</span></tt>
1988 (o altra cartella visibile) un file con estensione *.php
1989 (es <tt class="docutils literal"><span class=
1990 "pre">/var/www/info.php</span></tt> contenete codice php
1991 eseguibile dall'interprete, ad es:</p>
1992 <pre class="literal-block">
1993 <?php phpinfo() ; ?>
1996 <p>Questa funzione di php generera' la tipica pagina con
1997 le impostazioni attuali per PHP. Richiamando la pagina
1998 (es: <tt class="docutils literal"><span class=
1999 "pre">http://localhost/info.php</span></tt> ) verra'
2000 generata dall'interprete PHP la pagina HTML e resa
2001 disponibile tramite Apache ai client HTTP, a prova del
2002 corretto funzionamento del modulo di PHP e della sua
2003 integrazione con il server web Apache. In caso contrario
2004 se il client http proporra' di scaricare la pagina invece
2005 che visualizzarla nel browser: non funziona l'interprete
2006 di php o sono mal configurati i MIME-type. prima di tutto
2007 assicurarsi di aver fatto ripartire Apache.</p>
2010 <div class="section" id=
2011 "installazione-del-supporto-per-mysql">
2012 <h3><a class="toc-backref" href=
2013 "#id35">3.4.2 Installazione del supporto
2016 <p>Installare i pacchetti:</p>
2017 <pre class="literal-block">
2018 php5-mysql phpmyadmin
2021 <p>Controllare tramite la pagina php.info che sia
2022 abilitato il supporto per Mysql (ripartito Apache,
2023 ricaricare la pagina e cercare con CTRL+f <tt class=
2024 "docutils literal"><span class=
2025 "pre">mysql</span></tt>).</p>
2028 <div class="section" id="phpmyadmin">
2029 <h3><a class="toc-backref" href=
2030 "#id36">3.4.3 phpmyadmin</a></h3>
2032 <p>L'interfaccia web Phpmyadmin non richiede
2033 necessariamente la presenza di un database Mysql locale,
2034 puo' infatti essere utilizzata per gestire database
2035 remoti (il suo file di configurazione: <tt class=
2036 "docutils literal"><span class=
2037 "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
2038 caso si voglia installare localmente Mysql si utilizzi il
2039 pacchetto <tt class="docutils literal"><span class=
2040 "pre">mysql-server</span></tt> .</p>
2042 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2043 <tt class="docutils literal"><span class=
2044 "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
2045 non fosse controllare che sia incluso il file <tt class=
2046 "docutils literal"><span class=
2047 "pre">/etc/phpmyadmin/apache.conf</span></tt> in
2048 <tt class="docutils literal"><span class=
2049 "pre">/etc/apache2/conf.d/</span></tt> .</p>
2052 <div class="section" id=
2053 "installazione-del-supporto-per-postgresql">
2054 <h3><a class="toc-backref" href=
2055 "#id37">3.4.4 Installazione del supporto
2056 per Postgresql</a></h3>
2058 <p>Installare i pacchetti:</p>
2059 <pre class="literal-block">
2060 php5-pgsql phppgadmin
2063 <p>Controllare tramite la pagina php.info che sia
2064 abilitato il supporto per PostgreSQL (ripartito Apache,
2065 ricaricare la pagina e cercare con CTRL+f <tt class=
2066 "docutils literal"><span class=
2067 "pre">pgsql</span></tt>).</p>
2070 <div class="section" id="phppgadmin">
2071 <h3><a class="toc-backref" href=
2072 "#id38">3.4.5 phppgadmin</a></h3>
2074 <p>L'interfaccia web Phppgadmin per il database server
2075 PostgreSQL non richiede necessariamente la presenza di un
2076 database locale, puo' infatti essere utilizzata per
2077 gestire database remoti (il suo file di configurazione:
2078 <tt class="docutils literal"><span class=
2079 "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
2080 caso si voglia installare localmente Mysql si utilizzi il
2081 pacchetto <tt class="docutils literal"><span class=
2082 "pre">postgresql</span></tt> .</p>
2084 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2085 <tt class="docutils literal"><span class=
2086 "pre">http://localhost/phppgadmin/</span></tt>, se cosi
2087 non fosse controllare che sia incluso il file <tt class=
2088 "docutils literal"><span class=
2089 "pre">/etc/phppgadmin/apache.conf</span></tt> in
2090 <tt class="docutils literal"><span class=
2091 "pre">/etc/apache2/conf.d/</span></tt> .</p>
2095 <div class="section" id="virtual-hosts">
2096 <h2><a class="toc-backref" href=
2097 "#id39">3.5 Virtual hosts</a></h2>
2101 <li><a class="reference external" href=
2102 "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
2104 <li><a class="reference external" href=
2105 "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
2106 http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
2110 <p>I virtual host permettono di avere piu' siti internet
2111 disponibili tramite lo stesso server web, eventualmente
2112 mappati su un solo indirizzo IP. Sono generalmente di due
2117 <li>Basati su <em>indirizzi IP</em>. Se si ha la
2118 possibilita' di avere piu' indirizzi IP dedicati per i
2119 diversi siti che si vuole servire. ES: <tt class=
2120 "docutils literal"><span class=
2121 "pre"><VirtualHost</span> <span class=
2122 "pre">192.168.0.2:80></span></tt> . Soluzione
2123 dispendiosa, si tende ad usarla solo se servono
2124 certificati di sicurezza (SSL ) dedicati per ogni
2127 <li>Basati su <em>nomi di dominio</em> che puntano allo
2128 stesso IP. Soluzione piu' economica e diffusa che si
2129 basa sulle funzionalita' di http 1.1 .</li>
2133 <p>Prenderemo in esame la gestione di virtual hosts basati
2134 su nomi di dominio.</p>
2136 <div class="section" id="gestione-dns">
2137 <h3><a class="toc-backref" href=
2138 "#id40">3.5.1 Gestione DNS</a></h3>
2140 <p>Prima di tutto per poter impostare i virtual hosts
2141 dovete avere un server DNS che risolva i vostri nomi di
2142 dominio sull'indirizzo IP del server. Questo si puo'
2143 ottenere in vari modi, ad es:</p>
2146 <dl class="docutils">
2147 <dt><em>Bind</em> (DNS server)</dt>
2149 <dd>Impostare i campi A nelle proprie zone gestite
2150 dal server DNS Bind. Ad es: <tt class=
2151 "docutils literal"><span class=
2152 "pre">papo</span>
2154 "pre">A</span>
2155 <span class="pre">212.22.136.248</span></tt></dd>
2157 <dt><em>Servizio DNS dinamico on line</em>.</dt>
2159 <dd>Utilizzare un servizio come ad es: <a class=
2160 "reference external" href=
2161 "https://www.dyndns.com/">https://www.dyndns.com/</a>
2162 per mappare nomi di dominio sul proprio indirizzo IP,
2163 comodo ad esempio se si dispone di un indirizzo IP
2164 pubblico (anche se dinamico) per la propria
2165 connessione ad internet.</dd>
2167 <dt><em>Dnsmasq</em> (DNS server)</dt>
2169 <dd>Utilizzabile al livello della rete locale per
2170 fare dei test, utilizzando direttive come: <tt class=
2171 "docutils literal"><span class=
2172 "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2174 <dt><tt class="docutils literal"><span class=
2175 "pre">/etc/hosts</span></tt></dt>
2177 <dd>Per prove sul proprio sistema potete impostare i
2178 nomi dei vostri virtual server nel file /etc/hosts
2183 <p>Query DNS con <tt class=
2184 "docutils literal"><span class="pre">dig</span></tt>:</p>
2185 <pre class="literal-block">
2188 ; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
2189 ;; global options: printcmd
2191 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
2192 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
2194 ;; QUESTION SECTION:
2195 ;177.piffa.net. IN A
2198 177.piffa.net. 0 IN A 10.10.208.177
2201 <p>La parte interessante e' l'<em>ANSWER SECTION</em>:
2202 <tt class="docutils literal"><span class=
2203 "pre">177.piffa.net.</span>
2205 "pre">0</span>
2206 <span class="pre">IN</span>
2208 "pre">A</span>
2209 <span class="pre">10.10.208.177</span></tt> . Il nome di
2210 dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2211 , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2212 dovra' essere disponibile un virtual host che corrisponde
2213 al nome <tt class="docutils literal"><span class=
2214 "pre">177.piffa.net</span></tt> (<tt class=
2215 "docutils literal"><span class=
2216 "pre">ServerName</span></tt>) .</p>
2219 <div class="section" id="virtual-host">
2220 <h3><a class="toc-backref" href=
2221 "#id41">3.5.2 Virtual host</a></h3>
2223 <p>Esempio di Virtual host:</p>
2224 <pre class="literal-block">
2225 <VirtualHost *:80 >
2226 ServerName 177.piffa.net
2227 DocumentRoot /var/www/177.piffa.net/
2228 ServerAdmin webmaster@177.piffa.net
2229 </VirtualHost>
2232 <ol class="arabic simple">
2233 <li><tt class="docutils literal"><span class=
2234 "pre"><VirtualHost</span> <span class=
2235 "pre">\*:80</span> <span class="pre">></span></tt>
2236 La prima riga indica l'inizio della stanza relativa al
2237 nostro virtual host, che ascoltera' su qualunque
2238 indirizzo IP (nel caso il server abbia piu' indirizzi
2239 dai quali e' raggiungibile) sulla porta <tt class=
2240 "docutils literal"><span class=
2241 "pre">80</span></tt>.</li>
2243 <li><tt class="docutils literal"><span class=
2244 "pre">Server/name</span></tt> precisa quale sara' il
2245 nome di dominio a cui verra' associato questo sito
2246 rispetto ad altri eventualmente presenti sullo stesso
2249 <li><tt class="docutils literal"><span class=
2250 "pre">DocumentRoot</span></tt> : il path della
2251 directory che contiene le pagine del sito.</li>
2253 <li><tt class="docutils literal"><span class=
2254 "pre">ServerAdmin</span></tt>: l'indirizzo del
2255 webmaster, in modo da poterlo contattare in caso di
2256 problemi col sito.</li>
2258 <li><tt class="docutils literal"><span class=
2259 "pre"></VirtualHost></span></tt>: <em>tag</em> di
2260 chiusura della stanza di definizione del virtual
2264 <p>Quelle che abbiamo appena visto sono le direttive
2265 essenziali per definire un sito virtuale, potrebbe essere
2266 utile aggiungere altre:</p>
2270 <dl class="first docutils">
2271 <dt><tt class="docutils literal"><span class=
2272 "pre">ErrorLog</span> <span class=
2273 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2276 <p class="first last">Log degli errori separato
2277 dai restanti siti web ospitati dal server.</p>
2283 <dl class="first docutils">
2284 <dt><tt class="docutils literal"><span class=
2285 "pre">LogLevel</span> <span class=
2286 "pre">warn</span></tt></dt>
2289 <p class="first last">Livello di importanza degli
2290 eventi loggati= warning <em>attenzione</em> .</p>
2296 <dl class="first docutils">
2297 <dt><tt class="docutils literal"><span class=
2298 "pre">CustomLog</span> <span class=
2299 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2300 <span class="pre">combined</span></tt></dt>
2303 <p class="first last">Log di accesso separati
2304 dagli altri siti, utile anche qua per statistiche
2305 di accesso per il solo sito virtuale.</p>
2311 <p>Potrebbe essere utile modificare le impostazioni di
2312 una intera directory, ad esempio per abilitare
2313 l'<tt class="docutils literal"><span class=
2314 "pre">AuthConfig</span></tt>:</p>
2315 <pre class="literal-block">
2316 <Directory "/var/www/miosito.net/privata">
2317 AllowOverride AuthConfig
2318 Options ExecCGI Indexes MultiViews FollowSymLinks
2324 <p><tt class="docutils literal"><span class=
2325 "pre">AllowOverride</span> <span class=
2326 "pre">AuthConfig</span></tt> ora vale per l'intera
2327 directory, come le altre opzioni.</p>
2331 <div class="section" id="negoziazione-accessi">
2332 <h2><a class="toc-backref" href=
2333 "#id42">3.6 Negoziazione accessi</a></h2>
2335 <p>Tipicamente quando si installa un server web il proprio
2336 desiderio e' di dare accesso ai materiali disponibili al
2337 maggior numero di visitatori possibile. Talvolta pero' puo'
2338 essere utile poter limitare questi accessi, ad esempio per
2339 escludere un <em>bot</em> indesiderato che scansiona
2340 ininterrottamente le nostre pagine o per creare una
2341 <em>Area Riservata</em> i cui materiali non devono essere
2342 disponibile a tutti.</p>
2344 <div class="section" id="limiti-su-base-ip">
2345 <h3><a class="toc-backref" href=
2346 "#id43">3.6.1 Limiti su base IP</a></h3>
2348 <p>La forma piu' semplice di restrizione degli accessi e'
2349 su base degli indirizzi IP dei client: tipicamente i siti
2350 web sono settati per dare accesso a chiunque:</p>
2351 <pre class="literal-block">
2352 <VirtualHost *:80 >
2354 <Directory "/var/www/177.piffa.net">
2358 </VirtualHost>
2361 <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2363 <pre class="literal-block">
2364 <VirtualHost *:80 >
2366 <Directory "/var/www/177.piffa.net">
2369 Deny from 192.168.0.1
2371 </VirtualHost>
2374 <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2375 materiali dell'intero sito virtuale, oppure potremmo
2376 lavorare su una sola directory:</p>
2377 <pre class="literal-block">
2378 <Directory "/var/www/miosito.net/limitata">
2380 Allow from 192.168.0.0./24
2385 <p>In questo modo solo la classe IP <tt class=
2386 "docutils literal"><span class=
2387 "pre">192.168.0.0/24</span></tt> potra' accedere alla
2388 directory <tt class="docutils literal"><span class=
2389 "pre">/limitata</span></tt> Si tenga pero' conto che e'
2390 relativamente facile per un malintenzionato cambiare il
2391 proprio indirizzo IP, oppure collegarsi da un altra zona.
2392 Meno facile e' accedere ad una classe privata trovandosi
2393 all'esterno di questa, ma ci sono comunque soluzioni piu'
2398 <div class="section" id="user-authentication">
2399 <h2><a class="toc-backref" href=
2400 "#id44">3.7 User Authentication</a></h2>
2402 <p>Si puo' negoziare gli accessi ad un area del sito
2403 tramite autenticazione basata su <em>nome utente /
2404 password</em>. Questo puo' venire utile per creare una area
2405 download <em>intranet</em>, alla quale possano accedere
2406 solo gli utenti previsti a prescindere dagli indirizzi IP
2407 dei loro client.</p>
2409 <p>Tramite il modulo di Apache <em>mod-auth</em> e'
2410 possibile implementare questo paradigma, per quanto
2411 esistano soluzioni piu' granulari e sofisticate, che
2412 richiedono pero' l'implementazione di interpreti di
2413 linguaggi di programmazione, criptazione delle passwords,
2414 gestione degli utenti ed eventualmente delle sessioni. Mod
2415 auth non richiede l'installazione di niente di tutto
2418 <p>link: <a class="reference external" href=
2419 "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2421 <div class="section" id="definire-la-cartella">
2422 <h3><a class="toc-backref" href=
2423 "#id45">3.7.1 Definire la
2426 <p>Decidere quale sara' il <em>path</em> della cartella
2427 da sottoporre ad autenticazione:</p>
2430 <tt class="docutils literal"><span class=
2431 "pre">mkdir</span> <span class=
2432 "pre">/var/www/177.piffa.net/privata</span></tt>
2436 <div class="section" id=
2437 "creazione-del-database-delle-passwords">
2438 <h3><a class="toc-backref" href=
2439 "#id46">3.7.2 Creazione del database
2440 delle passwords</a></h3>
2442 <p>Un modo semplice per gestire una database di
2443 <em>user-id / passwords</em> e' utilizzare l'utility
2444 <tt class="docutils literal"><span class=
2445 "pre">htpasswd</span></tt> di Apache. Questa crea un file
2446 in cui un <em>crypt</em> delle password viene associato
2449 <p>Si dovra' decidere dove tenere questo file, la cosa
2450 importante e' che non sia visibile nel sito web: non deve
2451 essere scaricabile dai visitatori. Deve essere cioe'
2452 all'esterno della <em>DocumentRoot</em>: un buon posto
2453 potrebbe essere la /home dell'utente.</p>
2455 <p>Creiamo (con il <em>flag</em> <tt class=
2456 "docutils literal"><span class="pre">-c</span></tt>) il
2457 file <tt class="docutils literal"><span class=
2458 "pre">/home/utente/passwords</span></tt> con l'utente
2459 <tt class="docutils literal"><span class=
2460 "pre">luca</span></tt>:</p>
2461 <pre class="literal-block">
2462 htpasswd -c /home/utente/passwords luca
2465 <p><tt class="docutils literal"><span class=
2466 "pre">htpasswd</span></tt> ci chiedera' la password da
2467 associare all'utente <tt class=
2468 "docutils literal"><span class="pre">luca</span></tt>.
2469 Per successive modifiche della password o aggiunta di
2470 nuovi utenti non sara' necessario usare il flag
2471 <tt class="docutils literal"><span class=
2472 "pre">-c</span></tt>.</p>
2475 <div class="section" id="id3">
2476 <h3><a class="toc-backref" href=
2477 "#id47">3.7.3 Configurazione di
2480 <p>Ora possiamo passare alla configurazione vera e
2481 propria di Apache, ma con una novita': andremo a inserire
2482 la voce in un <tt class="docutils literal"><span class=
2483 "pre">.htaccess</span></tt> invece che modificare
2484 (tramite una direttiva <tt class=
2485 "docutils literal"><span class=
2486 "pre"><Directory></span></tt> ) il file di
2487 impostazione del virtual-host.</p>
2489 <p>Questo per motivi pratici: solo l'utente <em>root</em>
2490 puo' modificare l'impostazione del virtual host nel file
2491 <tt class="docutils literal"><span class=
2492 "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2493 ma spesso il motivo per cui creiamo i virtual hosts e'
2494 ospitare i siti di altri utenti, che possono solo
2495 pubblicare (generalmente tramite <em>FTP</em>) i loro
2496 documenti nella loro <em>DocumentRoot</em>, senza poter
2497 quindi modificare in alcun modo la configurazione del
2500 <p>Dando agli utenti la possibilita' di modificare
2501 (<em>AllowOverride</em>) autonomamente alcuni parametri
2502 (in questo caso solo l'<em>AuthConfig</em>) relativi al
2503 funzionamento del loro spazio web ci togliera'
2504 l'incombenza di dover intervenire continuamente sui vari
2507 <p>Abilitiamo l'AllowOverride nel file di configurazione
2508 del virtual host per la sola directory <tt class=
2509 "docutils literal"><span class=
2510 "pre">privata</span></tt>:</p>
2511 <pre class="literal-block">
2512 <VirtualHost *:80 >
2513 ServerName 177.piffa.net
2514 DocumentRoot /var/www/177.piffa.net/
2515 ServerAdmin webmaster@177.piffa.net
2516 <Directory "/var/www/177.piffa.net/privata">
2517 AllowOverride AuthConfig
2519 </VirtualHost>
2522 <p>Per rendere il cambiamento effettivo sara' necessario
2523 fare un restart / reload di Apache.</p>
2525 <p>Ora sara' possibile, anche per l'utente di sistema,
2526 creare un file <tt class="docutils literal"><span class=
2527 "pre">.htaccess</span></tt> che sara' onorato da
2530 <p>/var/www/177.piffa.net/privata/.htaccess</p>
2531 <pre class="literal-block">
2532 # Messaggio visualizzato al prompt per l'autenticazione
2533 AuthName "Area privata soggetta ad autentizazione"
2534 # tipo di autenticazione da usarsi
2536 # File precedentemente generato con htpasswd
2537 AuthUserFile /home/utente/passwords
2539 # Negoziazione degli accessi
2540 # valid users permette l'accesso agli utenti specificati
2541 # nel file generato da htpasswd
2545 <p>Si noti che non e' necessario fare ripartire Apache
2546 per onorare i cambiamenti (un utente non avrebbe la
2547 possibilita' di farlo!).</p>
2549 <dl class="docutils">
2550 <dt>Oltre a <tt class="docutils literal"><span class=
2551 "pre">valid-users</span></tt> si potrebbe scegliere di
2552 usare la formula <tt class=
2553 "docutils literal"><span class="pre">users</span></tt>
2554 che permette di elencare esplicitamente gli
2557 <dd>require user pippo pluto</dd>
2560 <p>L'utente <em>paperino</em> che fosse comunque presente
2561 nel file generato da htpasswd non potrebbe accedere alla
2564 <dl class="docutils">
2565 <dt>Nel caso ci fossero molti utenti conviene gestirli
2566 tramite <em>gruppi</em>::</dt>
2568 <dd>require group staff studenti</dd>
2571 <p>I gruppi vengono definiti in un file in modo simile a
2572 <tt class="docutils literal"><span class=
2573 "pre">/etc/groups</span></tt> per gli utenti di
2575 <pre class="literal-block">
2577 studenti: lucap federico luca
2580 <p>da richiamare tramite la direttiva <tt class=
2581 "docutils literal"><span class=
2582 "pre">AuthGroupFile</span></tt>.</p>
2586 <div class="section" id="cavets">
2587 <h2><a class="toc-backref" href=
2588 "#id48">3.8 Cavets</a></h2>
2590 <p>Problemi di cache:</p>
2594 <li>Proxy: nei settaggi del browser specificare di non
2595 utilizzare un server proxy http per il sito web locale
2596 (o per gli altri che si stanno monitorando). Se si ha
2597 il controllo del proxy server: stopparlo, ricaricare la
2598 pagina (operazione che fallira'), far ripartire il
2599 proxy, ricaricare la pagina.</li>
2601 <li>Provare con un altro browser, o cercare di svuotare
2602 la cache chiudere/riaprire l'applicativo. Provare a
2603 fermare Apache, ricaricare la pagina (operazione che
2604 fallira'), far ripartire Apache, ricaricare la
2611 <div class="section" id="domain-name-system">
2612 <h1><a class="toc-backref" href=
2613 "#id49">4 Domain Name System</a></h1>
2615 <p>Domain Name System (spesso indicato con DNS) e' un
2616 servizio utilizzato per la risoluzione di nomi di host in
2617 indirizzi IP e viceversa. Il servizio e' realizzato tramite
2618 un sistema <strong>gerarchico</strong> (quindi una struttura
2619 ad albero, simile ai <em>file system</em>)
2620 <strong>distribuito</strong> (ogni server DNS facente parte
2621 del sistema puo' mantenere solo una parte delle informazioni,
2622 ad esempio per la sua sola <em>zona</em>), costituito dai
2625 <p>I DNS sono un servizio <em>core</em> (fondamentale) per la
2626 rete internet come per qualunque rete locale. Ad esempio
2627 durante la navigazione web un client vorrebbe vedere
2628 l'<em>URL</em> <tt class="docutils literal"><span class=
2629 "pre">http://ww.piffa.net/</span></tt>, quindi per potersi
2630 connettere via <em>http</em> al server web deve prima
2631 ottenere l'indirizzo IP del <em>server http</em>
2632 corrispondente a <em>www.piffa.net</em>. Se il DNS gli
2633 fornisce un IP sbagliato l'utente non potra' raggiungere il
2634 servizio: di fatto e' come se il serve http fosse spento.</p>
2636 <p>Stessa cosa vale per gli altri servizi, come la posta
2637 elettronica, ssh, ecc. : <em>prima si deve effettuare una
2640 <p>Potrebbe verificarsi uno scenario simile a questo: i
2641 vostri server per i siti web funzionano correttamente come i
2642 siti ospitati, stessa cosa per i vostri server di posta, IMAP
2643 e POP3, e tutto il resto. Ma se poi un errore nella
2644 configurazione del DNS non rende raggiungibile l'intero
2645 <em>sito</em>: per l'utente finale e' come se nulla
2648 <p>Infatti quando si parla di un intervento della Polizia
2649 Postale per l'<em>oscuramento</em> di un sito dal punto di
2650 vista pratico questo si traduce generalmente nella rimozione
2651 o mistificazione del record DNS relativo a quel dominio (la
2652 <em>PP</em> ha facolta' di chiedere un simile intervento ai
2653 principali provider internet che forniscono connettivita'
2654 agli utenti italiani, oltre che poter agire direttamente sul
2655 NIC italiano per i domini della TLD <em>.it</em>)</p>
2657 <p>L'operazione di convertire un nome in un indirizzo e'
2658 detta risoluzione DNS, convertire un indirizzo IP in nome e'
2659 detto risoluzione inversa.</p>
2662 Un <em>Registar</em> e' un operatore che ha la facolta'
2663 (accreditamento da parte dell ICANN) di registrare i domini
2664 di secondo livello per gli utenti finali, dietro compenso
2665 di una modica cifra (una decina di euro) che vale come
2666 contributo su base annuale per il mantenimento
2667 dell'infrastruttura.
2670 <div class="section" id="risoluzione-inversa">
2671 <h2><a class="toc-backref" href=
2672 "#id50">4.1 Risoluzione Inversa</a></h2>
2674 <p>Per la risoluzione inversa sono invece i provider di
2675 connettivita' a gestire i DNS: se volete impostare il
2676 <em>PTR</em> associato al vostro indirizzo IP dovete
2677 contattare il vostro provider (tipo <em>telecom</em> per
2678 una connessione ADSL) e <em>non il Registar del vostro
2681 <p>Ad esempio all'IP <tt class=
2682 "docutils literal"><span class=
2683 "pre">212.22.136.248</span></tt> era associato un PTR
2684 <tt class="docutils literal"><span class=
2685 "pre">bender.piffa.net</span></tt>, corrispondente al
2686 record <tt class="docutils literal"><span class=
2687 "pre">212</span></tt> facente parte della zona <tt class=
2688 "docutils literal"><span class=
2689 "pre">136.22.212.in-addr.arpa</span></tt> gestito dal
2690 provider Tiscali/Nextra proprietario della classe C
2691 <tt class="docutils literal"><span class=
2692 "pre">212.22.136.0</span></tt>. Se avete un solo IP
2693 conviene lasciare al fornitore la gestire del PTR, ma se
2694 avete a disposizione un'itera classe potete chiedere sempre
2695 al vostro provider che vi <em>deleghi</em> la gestione
2696 della zona tramite i vostri DNS.</p>
2698 <p>Per alcuni servizi, ad esempio la spedizione della posta
2699 elettronica, e' richiedeiesto che venga impostata
2700 correttamente l'associazione tra il PTR dell'indirizzo IP
2701 usato dal server di postai e il record A RR al quale questo
2702 punta( RFC1912 sezione 2.1, paragrafo 2).</p>
2707 <li><a class="reference external" href=
2708 "http://www.faqs.org/rfcs/rfc1912.html">http://www.faqs.org/rfcs/rfc1912.html</a>
2709 2.1 Inconsistent, Missing, or Bad Data</li>
2711 <li><a class="reference external" href=
2712 "http://www.ietf.org/rfc/rfc2505.txt">http://www.ietf.org/rfc/rfc2505.txt</a></li>
2716 <div class="section" id="nomi-di-dominio">
2717 <h2><a class="toc-backref" href=
2718 "#id51">4.2 Nomi di dominio</a></h2>
2720 <p>Un nome a dominio e' costituito da una serie di stringhe
2721 separate da punti, ad esempio bender.piffa.net. I nomi di
2722 dominio si leggono da destra verso sinistra: <em>TLD</em> o
2723 dominio di primo livello <tt class=
2724 "docutils literal"><span class="pre">net</span></tt>,
2725 secondo livello <tt class="docutils literal"><span class=
2726 "pre">piffa</span></tt>, terzo livello <tt class=
2727 "docutils literal"><span class="pre">bender</span></tt>. Il
2728 dominio di primo livello (o TLD, Top Level Domain,
2729 pronunciato <em>tilde</em> in Italia), per esempio .net o
2730 .it sono limitati e decisi direttamente dall'ente
2731 assegnatario ICANN ( Internet Corporation for Assigned
2732 Names and Numbers).</p>
2734 <p>L'utente finale potra' chiedere l'assegnazione (pagando
2735 un contributo al Register preferito per il mantenimento
2736 delle spese dell'infrastruttura) di un dominio di
2737 <em>secondo</em> livello (es <tt class=
2738 "docutils literal"><span class="pre">piffa</span></tt>) di
2739 una delle varie TLD disponibili (noi italiani diciamo
2740 <em>tildi</em>), sempre che non sia gia' stato assegnato a
2743 <p>Ottenuto il secondo livello sara' l'utente a gestirlo:
2744 potra' in stanziare domini di terzo livello (es <tt class=
2745 "docutils literal"><span class="pre">bender</span></tt>) e
2746 anche oltre (es www.andrea.bender.piffa.net). Tali records
2747 saranno mantenuti dall'utente, sotto la sua responsbilita':
2748 se il proprio server DNS non fosse raggiungibile o
2749 risultasse mal configurato gli utenti non potrebbero
2750 risolvere / raggiungere i siti di loro interesse.</p>
2752 <p>Tipicamente si ha almeno un server DNS secondario per
2753 garantire la sussistenza del servizio in caso di guasto del
2754 DNS principale. I secondari <em>replicano</em> i dati
2755 presenti nei DNS principali.</p>
2758 <div class="section" id="tipologie-di-record">
2759 <h2><a class="toc-backref" href=
2760 "#id52">4.3 Tipologie di record</a></h2>
2762 <p>Ad un nome DNS possono corrispondere diversi tipi di
2763 informazioni. Per questo motivo, esistono diversi tipi di
2764 record DNS. Ogni voce del database DNS deve essere
2765 caratterizzata da un tipo. I principali tipi sono:</p>
2768 <li>Record A - Indica la corrispondenza tra un nome ed
2769 uno (o piu') indirizzi IP (per la precisione indirizzi
2770 IPv4, ovvero la versione attualmente in uso).</li>
2772 <li>Record MX - (Mail eXchange) indica a quali server
2773 debba essere inviata la posta elettronica per un certo
2776 <li>Record CNAME - Sono usati per creare un alias, ovvero
2777 per fare in modo che lo stesso calcolatore sia noto con
2778 piu' nomi. Uno degli utilizzi di questo tipo di record
2779 consiste nell'attribuire ad un host che offre piu'
2780 servizi un nome per ciascun servizio. In questo modo, i
2781 servizi possono poi essere spostati su altri host senza
2782 dover riconfigurare i client, ma modificando solo il
2785 <li>Record PTR - Il DNS viene utilizzato anche per
2786 realizzare la risoluzione inversa, ovvero per far
2787 corrispondere ad un indirizzo IP il corrispondente nome a
2788 dominio. Per questo si usano i record di tipo "PTR" (e
2789 una apposita zona dello spazio dei nomi
2792 <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
2794 <li>Record SRV - Identificano il server per un
2795 determinato servizio all'interno di un dominio. Possono
2796 essere considerati una generalizzazione dei record
2799 <li>Record TXT - Associano campi di testo arbitrari ad un
2800 dominio. Questi campi possono contenere una descrizione
2801 informativa oppure essere utilizzati per realizzare
2805 <p>Vi sono anche tipi di record "di servizio", necessari al
2806 funzionamento del database distribuito: * Record NS -
2807 Utilizzato per indicare quali siano i server DNS
2808 autoritativi per un certo dominio, ovvero per delegarne la
2809 gestione. * Record SOA - (Start of Authority) usato per la
2810 gestione delle zone DNS.</p>
2813 <div class="section" id="utilizzo">
2814 <h2><a class="toc-backref" href=
2815 "#id53">4.4 Utilizzo</a></h2>
2817 <p>I computer vengono identificati in rete grazie agli
2818 indirizzi <em>IP</em>, questi pero' non sono comodi per gli
2819 utenti come riferimento per i vari server. Ad esempio
2820 sarebbe scomodo riferirsi al motore di ricerca Goggle con
2821 uno dei suoi IP: <tt class="docutils literal"><span class=
2822 "pre">74.125.43.104</span></tt>, e' preferibile usare il
2823 nome di dominio <em>www.google.com</em>:</p>
2824 <pre class="literal-block">
2825 ping -c 1 www.google.com
2826 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
2830 <div class="section" id="risoluzione-dei-nomi-di-dominio">
2831 <h2><a class="toc-backref" href=
2832 "#id54">4.5 Risoluzione dei nomi di
2835 <p>Ci sono vari strumenti per interrogare i server DNS e
2836 ottenere l'indirizzo IP associato al nome di dominio che ci
2838 <pre class="literal-block">
2839 $ host www.piffa.net
2840 www.piffa.net is an alias for piffa.net.
2841 piffa.net has address 65.98.21.97
2842 piffa.net mail is handled by 10 65.98.21.97
2845 $ nslookup www.piffa.net
2846 Server: 192.168.0.10
2847 Address: 192.168.0.10#53
2849 Non-authoritative answer:
2850 www.piffa.net canonical name = piffa.net.
2852 Address: 65.98.21.97
2857 ; <<>> DiG 9.6.0-P1 <<>> www.piffa.net
2858 ;; global options: +cmd
2860 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47751
2861 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
2863 ;; QUESTION SECTION:
2864 ;www.piffa.net. IN A
2867 www.piffa.net. 3489 IN CNAME piffa.net.
2868 piffa.net. 3489 IN A 65.98.21.97
2870 ;; AUTHORITY SECTION:
2871 piffa.net. 86289 IN NS ns2.mydomain.com.
2872 piffa.net. 86289 IN NS ns1.mydomain.com.
2873 piffa.net. 86289 IN NS ns4.mydomain.com.
2874 piffa.net. 86289 IN NS ns3.mydomain.com.
2876 ;; ADDITIONAL SECTION:
2877 ns1.mydomain.com. 96208 IN A 64.94.117.193
2878 ns2.mydomain.com. 96208 IN A 64.94.31.67
2879 ns3.mydomain.com. 96208 IN A 66.150.161.137
2880 ns4.mydomain.com. 96208 IN A 63.251.83.74
2882 ;; Query time: 1 msec
2883 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2884 ;; WHEN: Sun May 10 21:23:11 2009
2885 ;; MSG SIZE rcvd: 209
2888 <p>Lo strumento piu' esaustivo e' <tt class=
2889 "docutils literal"><span class="pre">dig</span></tt>,
2890 installabile con il pacchetto <tt class=
2891 "docutils literal"><span class="pre">dnsutils</span></tt>
2895 <div class="section" id="dig">
2896 <h2><a class="toc-backref" href=
2897 "#id55">4.6 Dig</a></h2>
2899 <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
2900 "docutils literal"><span class="pre">dig</span></tt> per
2901 l'interrogazione dei DNS Server:</p>
2902 <pre class="literal-block">
2905 ; <<>> DiG 9.6.0-P1 <<>> www.google.it
2906 ;; global options: +cmd
2908 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18816
2909 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
2911 ;; QUESTION SECTION:
2912 ;www.google.it. IN A
2915 www.google.it. 250683 IN CNAME www.google.com.
2916 www.google.com. 334819 IN CNAME www.l.google.com.
2917 www.l.google.com. 186 IN A 74.125.43.103
2918 www.l.google.com. 186 IN A 74.125.43.104
2919 www.l.google.com. 186 IN A 74.125.43.147
2920 www.l.google.com. 186 IN A 74.125.43.99
2922 ;; AUTHORITY SECTION:
2923 l.google.com. 80856 IN NS f.l.google.com.
2924 l.google.com. 80856 IN NS d.l.google.com.
2925 l.google.com. 80856 IN NS b.l.google.com.
2926 l.google.com. 80856 IN NS c.l.google.com.
2927 l.google.com. 80856 IN NS a.l.google.com.
2928 l.google.com. 80856 IN NS e.l.google.com.
2929 l.google.com. 80856 IN NS g.l.google.com.
2931 ;; Query time: 1 msec
2932 ;; SERVER: 192.168.0.10#53(192.168.0.10)
2933 ;; WHEN: Sun May 10 21:34:47 2009
2934 ;; MSG SIZE rcvd: 255
2937 <dl class="docutils">
2940 <dd>(senza opzioni o oggetti) Fornisce l'elenco dei
2941 <em>root server</em> utilizzati. I root server sono i
2942 server che mantengono le informazioni sui domini di primo
2943 livello (TLD) e sono quindi il punto di partenza per
2944 scorrere nella directory dei DNS per recuperare le
2945 informazioni (tipicamente un campo <tt class=
2946 "docutils literal"><span class="pre">A</span></tt> per un
2947 indirizzo IP) che ci servono per raggiungere un certo
2956 <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
2957 . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
2958 B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
2959 192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
2960 F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
2961 192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
2962 K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
2963 192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
2964 J.ROOT-SERVERS.NET. . 192032 IN NS
2965 D.ROOT-SERVERS.NET.</p>
2970 <dl class="docutils">
2971 <dt>dig @nome_dns</dt>
2973 <dd>Permette di fare una query ad un server dns
2974 particolare. Es: <tt class=
2975 "docutils literal"><span class="pre">dig</span>
2976 <span class="pre">@151.99.25.1</span> <span class=
2977 "pre">www.google.it</span></tt></dd>
2979 <dt>dig MX www.google.it</dt>
2981 <dd>Chiede un campo in particolare, in questo caso il
2984 <dt>dig ANY www.google.it</dt>
2986 <dd>Chiede tutti i campi, non solo i campi
2989 <dt>dig -x 74.125.43.104</dt>
2991 <dd>Effettua una richiesta inversa: dall'IP al PTR
2996 <div class="section" id="resolv-conf">
2997 <h2><a class="toc-backref" href=
2998 "#id56">4.7 resolv.conf</a></h2>
3000 <p>Il file <tt class="docutils literal"><span class=
3001 "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
3002 sul dns usato dal sistema, in genere anche altre
3003 applicazioni che devono effettuare query DNS leggono
3004 resolv.conf per conoscere l'ubicazione del DNS.</p>
3006 <p>/etc/resolv.conf:</p>
3010 <li><tt class="docutils literal"><span class=
3011 "pre">nameserver</span></tt>: indica il nameserver da
3012 utilizzare, indicato con l'indirizzo IP.</li>
3014 <li><tt class="docutils literal"><span class=
3015 "pre">domain</span></tt>: indica il nome di dominio
3016 della rete attuale, vedi voce successiva.</li>
3018 <li><tt class="docutils literal"><span class=
3019 "pre">search</span></tt>: nome di dominio usato dalla
3020 rete sul quale cercare gli hosts. Ad esempio se
3021 impostato su <tt class="docutils literal"><span class=
3022 "pre">piffa.net</span></tt> pingando l' host <tt class=
3023 "docutils literal"><span class="pre">bender</span></tt>
3024 viene automaticamente fatto un tentativo di ricerca per
3025 <tt class="docutils literal"><span class=
3026 "pre">bender.piffa.net</span></tt>.</li>
3030 <p>Predisponendo l'infrastruttura di rete della vostra LAN
3031 e' consigliabile impostare sempre un DNS cache sul vostro
3032 server locale per i vari client. In questo modo in caso di
3033 malfunzionamento del DNS o necessita' di intervenire /
3034 sostituire i DNS non sara' piu' necessario dover
3035 reimpostare ogni singolo client della LAN: bastera'
3036 modificare l'impostazione del server DNS cache, ad esempio
3037 per utilizzare un nuovo forwarder, o modificare al volo un
3038 record DNS. La modifica, anche detta
3039 <em>mascheramento</em>, di un record come il <em>server
3040 smtp</em> o un <em>MX</em> potrebbe tirarvi rapidamente
3041 fuori dai guai nel caso di un problema improvviso con la
3042 posta elettronica o qualunque altro servizio che possiate
3043 reindirizzare col DNS.</p>
3045 <p>Un server DHCP e un DNS cache come <tt class=
3046 "docutils literal"><span class="pre">Dnsmasq</span></tt>
3047 possono permettervi di risolvere al volo (o per lo meno
3048 reindirizzare) molte delle problematiche relative alla
3049 configurazione della rete della vostra LAN: dover
3050 intervenire manualmente su decine di client per modificare
3051 le impostazioni di SMTP | gateway | SMTP | proxy.</p>
3053 <p>Si veda anche la pagina man di resolv.conf.</p>
3055 <div class="warning">
3056 <p class="first admonition-title">Avvertenza</p>
3058 <p class="last">Attenzione: se si usa un client DHCP, ppp
3059 (ADSL compresa) o simile questo file potrebbe' essere
3060 riscritto automaticamente in base a quanto ottenuto dal
3061 DHCP. Si veda la documentazione del pacchetto <tt class=
3062 "docutils literal"><span class=
3063 "pre">resolvconf</span></tt>.</p>
3067 <div class="section" id="etc-hosts">
3068 <h2><a class="toc-backref" href=
3069 "#id57">4.8 /etc/hosts</a></h2>
3071 <p>Tabella statica per l'associazione tra IP e nomi di
3073 <pre class="literal-block">
3078 127.0.0.1 localhost.localdomain localhost 10.10.208.162
3079 daniela daniela.piffa.net 10.10.208.254 mirror
3080 mirror.piffa.net 91.191.138.15 thepiratebay.org
3081 192.168.0.11 chrome chrome.mydomain.com
3084 <p>Il contenuto e' un associazione tra un <em>IP</em> e
3085 stringhe di testo (anche piu' di una per IP) es: <tt class=
3086 "docutils literal"><span class="pre">mirror</span></tt> e
3087 <tt class="docutils literal"><span class=
3088 "pre">mirror.piffa.net</span></tt>.</p>
3090 <p>Il problema e' la gestione di questo file: quando gli
3091 host cambiano IP si devono aggiornare i records, e poi c'e'
3092 il problema di distribuire questo file tra i vari hosts
3093 della propria LAN. Un metodo semplice per distribuire
3094 questo file e' utilizzare <tt class=
3095 "docutils literal"><span class="pre">Dnsmasq</span></tt>:
3096 questo infatti legge e onora il file <tt class=
3097 "docutils literal"><span class="pre">hosts</span></tt> che
3098 avete prodotto e lo <em>distribuisce</em> ai clients
3099 tramite le normali query DNS.</p>
3101 <p>Modificare (riconducendola a un IP interno, cosi'
3102 annullandola) la risoluzione di un nome di dominio e' un
3103 modo drastico e funzionale per <em>annullarlo</em>
3104 rendendolo indisponibile alla propria rete locale, ad
3105 esempio aggiungere al file <tt class=
3106 "docutils literal"><span class=
3107 "pre">/etc/hosts</span></tt>:</p>
3108 <pre class="literal-block">
3109 127.0.0.1 www.facebook.com
3112 <p>Impedira' agli utenti della LAN di raggiungere
3113 <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
3116 <div class="section" id="hostname">
3117 <h2><a class="toc-backref" href=
3118 "#id58">4.9 Hostname</a></h2>
3120 <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
3121 (e modificabile) con il comando <tt class=
3122 "docutils literal"><span class=
3123 "pre">hostname</span></tt>.</p>
3125 <p>Per modificare in modo permanente il nome del computer
3126 si modifichi il contenuto del file <tt class=
3127 "docutils literal"><span class=
3128 "pre">/etc/hostname</span></tt>.</p>
3130 <p>Tipicamente si vuole mantenere una correlazione tra il
3131 nome dell' host, o meglio la stringa con cui il server si
3132 qualifica all'esterno, e il <em>PTR</em> dell'IP. Nel caso
3133 di <em>servizi virtuali</em> ci sara' un <em>nome
3134 server</em> principale associato al <em>PTR</em> condiviso.
3135 Non e' automatico che un servizio, ad esempio un server di
3136 posta, si qualifichi leggendo il contenuto di questo file e
3137 magari aggiungendo come suffisso il dominio di cui fa parte
3138 l' host: a volte questo parametro puo' essere specificato
3139 nel file di configurazione del servizio:</p>
3140 <pre class="literal-block">
3141 * Squid: ``visible_hostname``
3143 * Postfix: ``myhostname``
3146 <p>Si faccia attenzione a non aver un hostname puramente
3147 numerico: ad es. <tt class="docutils literal"><span class=
3148 "pre">161</span></tt>. E' opportuno che il nome sia
3149 comunque un alfanumerico: <tt class=
3150 "docutils literal"><span class="pre">host-161</span></tt> o
3155 <div class="section" id="dnsmasq">
3156 <h1><a class="toc-backref" href=
3157 "#id59">5 DNSmasq</a></h1>
3159 <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
3160 forwarder, server DHCP, e' caratterizzato dalla facilita' di
3161 configurazione, limitato uso di risorse, adattabilita' a
3162 connessioni <em>dinamiche</em> come ADSL o altre punto a
3163 punto (anche via cellulari) per condividere rapidamente la
3164 rete (cosa molto utile se ci dovesse trovare a ridare
3165 connettetivita' a una rete momentaneamente sprovvista), dalla
3166 possibilita' di modificare rapidamente i record DNS serviti
3167 alla rete anche grazie alla distribuzione del file <tt class=
3168 "docutils literal"><span class="pre">/etc/hosts</span></tt>
3169 locale. Puo' essere anche utilizzato come <cite>server per il
3171 <http://www.debian-administration.org/articles/478>_</cite>
3174 <p>Dnsmasq e' un interessante alternativa all'uso del server
3175 DNS Bind in modalita' <em>forwarding e cache-only</em> (non
3176 autoritativo) accompagnato dal server DHCPd. I vantaggi
3180 <li>Leggerezza: puo' essere fatto girare su una macchina
3181 relativamente debole in caso di bisogno.</li>
3183 <li>Rapidita' di configurazione (in particolare per servire
3184 dei record A / MX alla rete, modificando al volo i valori
3185 originali ospitati sul server DNS pubblico).</li>
3187 <li>Ben integrato con connessioni PPP : e' ingrado di
3188 rilevare i cambiamenti dei dns suggeriti e impostarli come
3189 forwarders (utile se dovete rendere disponibile rapidamente
3190 una connessione a internet a una rete in difficolta').</li>
3193 <p>Tutto cio' rende Dnsmasq una soluzione valida in
3194 particolare quando si deve intervenire in una rete
3195 pre-esistente in cui il server principale e' in crisi: si
3196 potra' utilizzare Dnsmasq anche su una macchina piu' debole e
3197 <em>mascherare</em> i servizi al momento non disponibili.
3198 Molto utile per scopi didattici, sopratutto per testare
3199 server SMTP impostando al volo i campi MX per nomi di dominio
3202 <div class="section" id="configurazione">
3203 <h2><a class="toc-backref" href=
3204 "#id60">5.1 Configurazione</a></h2>
3206 <p>Vediamo alcune direttive di basi del file di
3207 configurazione <tt class="docutils literal"><span class=
3208 "pre">/etc/dnsmasq.conf</span></tt> utili per la
3209 configurazione sia del DNS cache che per il DHCP
3212 <dl class="docutils">
3213 <dt>domain-needed</dt>
3215 <dd>Non inoltrare query ai server DNS esterni per nomi
3216 semplici (es andrea, portatile, pippo) che verranno
3217 risolti solo in locale o causeranno direttamente una
3218 risposta <em>not found</em> .</dd>
3222 <dd>Simile alla voce precedente ma per i reverse
3227 <dd>Nome di dominio della rete da passare ai client.</dd>
3229 <dt>expand_hosts</dt>
3231 <dd>Aggiunge il <tt class="docutils literal"><span class=
3232 "pre">nome</span> <span class="pre">host</span></tt> (
3233 <tt class="docutils literal"><span class=
3234 "pre">/etc/hostname</span></tt>) dei client al nome di
3235 dominio per qualificarli in rete, senza bisogno di dover
3236 comporre a un elenco statico di record nel file
3237 <tt class="docutils literal"><span class=
3238 "pre">/etc/hosts</span></tt> o nello stesso file di
3239 configurazione di dnsmasq. Es: se un vostro client si
3240 chiama <tt class="docutils literal"><span class=
3241 "pre">chrome</span></tt> e il vostro dominio <tt class=
3242 "docutils literal"><span class=
3243 "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
3244 il campo <em>A</em> per il dominio <tt class=
3245 "docutils literal"><span class=
3246 "pre">chrome.piffa.net</span></tt> diretto all'ip che
3247 verra' assegnato al client.</dd>
3251 <div class="section" id="dhcp">
3252 <h2><a class="toc-backref" href=
3253 "#id61">5.2 DHCP</a></h2>
3255 <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
3256 al file di configurazione il <em>range</em> degli IP che si
3257 vuole assegnare ai client con il <em>lease time</em> (tempo
3258 di rilascio: quanto a lungo saranno validi gli IP
3259 assegnati) espresso in ore.</p>
3261 <p>Si faccia <em>attenzione</em>: in una rete puo' essere
3262 presente <strong>un solo server DHCP</strong>, o per meglio
3263 dire qualunque server DHCP ascolta sul broadcast <tt class=
3264 "docutils literal"><span class=
3265 "pre">255.255.255.255</span></tt> e potrebbe rispondere a
3266 un pacchetto di richiesta DHCP. Quindi non fate partire
3267 inavvertitamente un server DHCP in una rete gia' servita e
3268 <strong>non vi azzardate ad andare in giro con un portatile
3269 con un server DHCP attivo</strong> nelle reti altrui.
3270 Questo vale anche per i laboratori di informatica dei corsi
3271 di reti: non fate partire il vostro server DHCP se siete
3272 collegati alla rete interna!</p>
3274 <p>/etc/dnsmasq.conf (riga 118):</p>
3275 <pre class="literal-block">
3276 dhcp-range=192.168.0.20,192.168.0.50,24h
3280 <div class="section" id="dns-cache">
3281 <h2><a class="toc-backref" href=
3282 "#id62">5.3 DNS cache</a></h2>
3284 <p>Dnsmasq lavora di default come cache dns: inserire al
3285 file <tt class="docutils literal"><span class=
3286 "pre">/etc/resolv.conf</span></tt> il nameserver localhost
3287 in cima alla lista dei <em>nameserver</em> disponibili.</p>
3290 nameserver 127.0.0.1
3293 <p>Questo pero' potrebbe essere problematico se un altro
3294 servizio, ad esempio il DHCP client, riscrive il contenuto
3295 del file <tt class="docutils literal"><span class=
3296 "pre">/etc/resolv.conf</span></tt>. Per superare il
3297 problema si aggiunga (riga 20) al file di configurazione
3298 <tt class="docutils literal"><span class=
3299 "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
3300 <pre class="literal-block">
3301 prepend domain-name-servers 127.0.0.1;
3304 <p>Oppure potrebbe essere il nostro <em>PPP client</em>
3305 (per la connessione ADSL) a intervenire sul file <tt class=
3306 "docutils literal"><span class=
3307 "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
3308 <tt class="docutils literal"><span class=
3309 "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
3310 <tt class="docutils literal"><span class=
3311 "pre">usepeerdns</span></tt>. Se la vostra connessione ad
3312 internet e' ADSL raramente dovreste aver bisogno di
3313 cambiare i DNS una volta impostati (a meno che non usiate
3318 <div class="section" id="bind-dns-autoritativo">
3319 <h1><a class="toc-backref" href=
3320 "#id63">6 Bind : DNS Autoritativo</a></h1>
3322 <p>Le soluzioni viste possono bastare per la rete locale o
3323 per fare delle prove, ma prima o poi verra' il momento in cui
3324 si e' chiamati a gestire dei domini su internet: lo standard
3325 e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
3328 <p>Installare i pacchetti:</p>
3329 <pre class="literal-block">
3333 <div class="section" id="id4">
3334 <h2><a class="toc-backref" href=
3335 "#id64">6.1 DNS cache</a></h2>
3337 <p>Bind appena installato funzionera' come DNS cache: si
3338 faccia un test con un <tt class=
3339 "docutils literal"><span class="pre">dig</span>
3340 <span class="pre">@localhost</span></tt> . Bind a
3341 differenza di Dnsmasq e' autonomo: non ha bisogno di
3342 forwardare (inoltrare) le query a un DNS esterno: queste
3343 verranno risolte direttamente da Bind partendo dai <em>DNS
3344 root servers</em>.</p>
3346 <p>E' comunque possibile impostare dei DNS forwarders,
3347 tipicamente i DNS server forniti dal proprio provider, per
3348 velocizzare le query:</p>
3350 <p>/etc/bind/named.conf.options (riga 13):</p>
3351 <pre class="literal-block">
3357 <p>Nel caso si voglia usare Bind solo come server DNS cache
3358 per la propria LAN senza ospitare delle zone DNS pubbliche
3359 sara' il caso di limitare gli accessi al server alla sola
3362 <p>/etc/bind/named.conf.options (riga 19):</p>
3363 <pre class="literal-block">
3364 // Se il proprio server ha IP 10.10.208.254
3365 // sulla rete LAN privata:
3366 listen-on { 10.10.208.254; }
3369 <p>E non si lasci il server in ascolto su uno degli
3370 eventuali indirizzi IP pubblici.</p>
3372 <p>Se questo non fosse possibile si puo' sempre lavorare su
3373 una <em>acl</em>:</p>
3375 <p>/etc/bind/named.conf</p>
3376 <pre class="literal-block">
3378 10.10.208.0/24 ; 127.0.0.0/8 ;
3382 <p>Per poi aggiungere all'interno della stanza options la
3383 direttiva che abilita' l'entita' <tt class=
3384 "docutils literal"><span class=
3385 "pre">localnet</span></tt>:</p>
3387 <p>/etc/bind/named.conf.options</p>
3388 <pre class="literal-block">
3389 allow-query {"localnet" ;} ;
3393 <div class="section" id="ospitare-una-zona">
3394 <h2><a class="toc-backref" href=
3395 "#id65">6.2 Ospitare una zona</a></h2>
3397 <p>Se avete acquistato un nome di dominio e vi serve un
3398 software DNS per gestirlo Bind e' la scelta piu' diffusa.
3399 Ora vedremo come configurare una <em>zona</em> (come
3400 piffa.net) in modo che Bind sia autoritativoper questa,
3401 rispondendo alle query DNS di tutta la rete internet.</p>
3403 <div class="section" id="named-conf-local">
3404 <h3><a class="toc-backref" href=
3405 "#id66">6.2.1 named.conf.local</a></h3>
3407 <p>Prima di tutti impostiamo il server bind per gestire
3408 la zona, per non fare confusione e' opportuno inserire le
3409 propie zone DNS nel file <tt class=
3410 "docutils literal"><span class=
3411 "pre">named.conf.local</span></tt> e non in <tt class=
3412 "docutils literal"><span class=
3413 "pre">named.conf</span></tt>.</p>
3415 <p>named.conf.local:</p>
3416 <pre class="literal-block">
3418 // Do any local configuration here
3421 // Consider adding the 1918 zones here, if they are not used in your
3423 //include "/etc/bind/zones.rfc1918";
3427 file "/etc/bind/pz/piffa.net";
3431 <dl class="docutils">
3432 <dt>type master</dt>
3434 <dd>Il nostro server DNS sara' il principale, al quale
3435 poi potremo affiancare dei DNS secondari nel caso
3436 questo non sia disponibile.</dd>
3438 <dt>file "/etc/bind/pz/piffa.net"</dt>
3440 <dd>Dove verranno inserite le informazioni vere e
3441 propie di questa zona.</dd>
3445 <div class="section" id="configurazione-della-zona">
3446 <h3><a class="toc-backref" href=
3447 "#id67">6.2.2 Configurazione della
3450 <p>Ora dovremo preparare il file contenente i record DNS
3451 della zona <em>piffa.net</em>, come abbiamo indicato
3452 prima questi saranno contenuti nel file <tt class=
3453 "docutils literal"><span class=
3454 "pre">/etc/bind/pz/piffa.net</span></tt> . Tenere le zone
3455 dentro una sottocartella e' buona abitudine, usare
3456 <tt class="docutils literal"><span class=
3457 "pre">pz</span></tt> per queste e' una vecchia
3461 <pre class="literal-block">
3462 ; Zona per il dominio di secondo livello piffa.net
3465 @ IN SOA ns1.piffa.net. hostmaster.piffa.net. (
3467 8H ; refresh (8 hours)
3468 2H ; retry (2 hours)
3469 4W ; expire (4 weeks)
3470 1D ; minimum (1 day)
3477 TXT "Piffanet main site"
3482 test.piffa.net. A 94.23.63.105
3483 *.piffa.net. A 94.23.63.105 ; *catch all domain
3487 <p>All'interno di questo file si possono inserire dei
3488 commenti con il carattere <tt class=
3489 "docutils literal"><span class="pre">;</span></tt>
3490 (punto-e-virgola), si faccia attenzione alla rigida
3491 sintassi: apertura e chiusura delle parentesi tonde nella
3492 parte <tt class="docutils literal"><span class=
3493 "pre">IN</span> <span class="pre">SOA</span></tt>, uso
3494 del <tt class="docutils literal"><span class=
3495 "pre">punto</span></tt> finale per precisare un nome di
3496 dominio specifico (<em>FQDN</em>: Fully-qualified Domain
3497 Name) come <tt class="docutils literal"><span class=
3498 "pre">test.piffa.net.</span></tt> a differenza degli
3499 altri domini di terzo livello come <tt class=
3500 "docutils literal"><span class=
3501 "pre">pop,imap,smtp</span></tt> .</p>
3503 <p>La zona inizia con una direttiva <tt class=
3504 "docutils literal"><span class="pre">$TTL</span>
3505 <span class="pre">3D</span></tt> (RFC 2308) che indica la
3506 durata (in questo caso tre giorni) che ogni record
3507 dovrebbe avrebbe nella cache degli altri serber DNS.
3508 Questo valore dovrebbe essere superiore a un giorno, se
3509 non modificate spesso i valori dei vostri record DNS e'
3510 consigliabile settarlo a 2/3 settimane in modo da
3511 limitare la frequenza delle query al propio server.
3512 Questo parametro puo' essere modificato per singoli
3514 <pre class="literal-block">
3515 $TTL 3D ; 3 giorni: default se non specificato altrimenti
3516 rapido 5h IN A 94.23.63.105 ; usa un TTL di 5 ore
3517 lento 3w IN A 94.23.63.105 ; usa un TTL di 3 settimane
3518 normale IN A 94.23.63.105 ; usa il TTL di default: 3 giorni
3521 <p>Segue poi il nome della zona, indicato con la
3522 <tt class="docutils literal"><span class=
3523 "pre">@</span></tt> per richiamare la zona originale
3524 precisata nel file <tt class=
3525 "docutils literal"><span class=
3526 "pre">named.conf.options</span></tt> . Segue il campo
3527 <tt class="docutils literal"><span class=
3528 "pre">SOA</span></tt>.</p>
3530 <div class="section" id="soa-start-of-authority-record">
3531 <h4><a class="toc-backref" href=
3532 "#id68">6.2.2.1 SOA: Start of
3533 Authority Record</a></h4>
3535 <p>Il record SOA puo' comparire solo una volta in una
3536 zona, contiene informazioni relative all'autorita' del
3539 <dl class="docutils">
3540 <dt>ns1.piffa.net. name-server</dt>
3542 <dd>primary master DNS di questo dominio.</dd>
3544 <dt>hostmaster.piffa.net. email-addr</dt>
3546 <dd>email-addr: indirizzo email della persona
3547 responsabile di questa zona, il primo punto viene
3548 tradotto in una <em>chiocciola</em> <tt class=
3549 "docutils literal"><span class="pre">@</span></tt>
3550 dato che questo carattere ha un'altro utilizzo
3551 all'interno di questo file. Il referente della zona
3552 <strong>deve</strong> essere un email valido e
3553 controllato, come consuetudine si usa <tt class=
3554 "docutils literal"><span class=
3555 "pre">hostmaster@dominio.tilde</span></tt> .</dd>
3557 <dt>200905245 serial number</dt>
3559 <dd>Questo valore serve per indicare quando e' stato
3560 modificato questo file di configurazione, secondo il
3561 formato <tt class="docutils literal"><span class=
3562 "pre">yyyymmddss</span></tt>: <tt class=
3563 "docutils literal"><span class="pre">yyyy</span></tt>
3564 = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' =
3565 seriale. Il seriale che deve essere sempre
3566 specificato anche per una cifra, va incrementato di
3567 una unita' nel caso vengano fatte piu' modifiche
3568 <em>nello stesso giorno</em>.</dd>
3572 <dd>Indica ai DNS secondari quanto tempo attendere
3573 per cercare di aggiornare i loro dati con il DNS
3578 <dd>Intervallo di tempo per il DNS slave (secondario)
3579 da aspettare prima di cercare di ricontattare il
3580 <em>master</em> in caso di problemi col
3581 <em>refresh</em>.</dd>
3585 <dd>Indica quando i dati dei dns secondarinon sono
3586 piu' autoritativi in caso di impossibilita' degli
3587 <em>slaves</em> di ri-aggiornarsi con il
3588 <em>master</em>. Consigliato un valore di 2/4
3593 <dd>Questo valore indicava il TTL fino alla versione
3594 8 di Bind, da Bind 9 e secondo la RFC2308 indica la
3595 durata del <em>negative caching</em>, quanto i
3596 resolvers (ad esempio un server dns cache) puo'
3597 mantenere un record <em>negativo</em> (che non indica
3598 la corrispondenza tra un nome di dominio e un ip, ma
3599 la non esistenza del record). Nell'uso per il
3600 negative caching viene fissato un valore massimo di 3
3601 ore dalla RFC 2308.</dd>
3605 <div class="section" id="altri-campi">
3606 <h4><a class="toc-backref" href=
3607 "#id69">6.2.2.2 Altri campi:</a></h4>
3609 <p>All'interno della zona possono essere utilizati vari
3610 tipi di records (RR):</p>
3612 <dl class="docutils">
3615 <dd>Informazioni testuali associate ad un record</dd>
3619 <dd>Name Server della zona</dd>
3623 <dd>Indirizzo ipv4 da associare al record</dd>
3627 <dd>Indirizzo ipv6 da associare al record</dd>
3631 <dd>Canonical Name: un alias per un host</dd>
3635 <dd>Mail Exchanger: server di posta che si occupera'
3636 della posta elettronica per questo dominio.E'
3637 opportuno avere almeno un server di posta di back-up,
3638 per indicare la priorita' di un MX rispettoad un
3639 altro si usa un valore di 2 cifre: il valore piu'
3640 basso indica priorita' piu' bassa. Es: <tt class=
3641 "docutils literal"><span class=
3642 "pre">MX</span> <span class=
3643 "pre">10</span> <span class=
3644 "pre">smtp.piffa.net.</span></tt> per il server SMTP
3645 principale e <tt class=
3646 "docutils literal"><span class="pre">MX</span>
3647 <span class="pre">40</span> <span class=
3648 "pre">smtp2.piffa.net</span></tt> per il
3653 <dd>Reverse look-up, usato per la mappatura inversa
3654 di un indirizzo ip a una stringa identificativa
3655 dell'host. Si noti che per poter modificare questi
3656 record si deve avere <em>in gestione</em> la <em>zona
3657 IP</em>, se cosi' non fosse si dovra' chiedere al
3658 propio provider la modifica di questo record per il
3659 propio ip. Links: <a class="reference external" href=
3660 "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
3666 <div class="section" id="dns-slave">
3667 <h2><a class="toc-backref" href=
3668 "#id70">6.3 DNS slave</a></h2>
3670 <p>Data l'importanza del servizio DNS e' necessario avere
3671 ridondanza per i server DNS che ospitano i vostri dati: in
3672 caso di indisponibilita' del server <em>master</em> (nel
3673 caso fosse il solo a tenere i dati questo comporterebbe la
3674 <em>scomparsa</em> di tutti i servizi / host da esso
3675 seviti!) il client potrebbe contattare uno degli
3678 <p>Gli slave recuperano i dati dei recordos RR direttamente
3679 dal master e non sara' quindi necessario dover mantenere
3680 manualmente il file di configurazione della zona sugli
3681 slaves, ogni volta che aggiorneremo il master questi dati
3682 si propaghera' agli slaves automaticamente.</p>
3684 <p>Per attivare uno <em>slave</em> per la nostra zona di
3685 esempio <tt class="docutils literal"><span class=
3686 "pre">piffa.net</span></tt> si inserisca nel file
3687 <tt class="docutils literal"><span class=
3688 "pre">named.conf.local</span></tt> dello slave server:</p>
3689 <pre class="literal-block">
3692 file "/etc/bind/pz/piffa.net";
3693 masters { 192.168.0.1; };
3697 <p>Facendo ripartire Bind il file <tt class=
3698 "docutils literal"><span class=
3699 "pre">/etc/bind/pz/piffa.net</span></tt> viene creato
3700 automaticamente.</p>
3702 <p>Segue un estratto di <tt class=
3703 "docutils literal"><span class=
3704 "pre">/var/log/syslog</span></tt> al <tt class=
3705 "docutils literal"><span class="pre">restart</span></tt> di
3706 <tt class="docutils literal"><span class=
3707 "pre">bind9</span></tt> sullo slave:</p>
3708 <pre class="literal-block">
3709 ... slave named[2256]: zone piffa.net/IN: loaded serial 200905245
3710 ... slave named[2256]: running
3711 ... slave named[2256]: zone piffa.net/IN: sending notifies (serial 200905245)
3712 ... slave named[2256]: client 192.168.0.1#1464: received notify for zone 'piffa.net'
3713 ... slave named[2256]: zone piffa.net/IN: notify from 192.168.0.1#1464: zone is up to date
3716 <div class="warning">
3717 <p class="first admonition-title">Avvertenza</p>
3719 <p class="last">Bind9 (versione 9.3 presente in Debian
3720 Lenny) richiede una esplicita autorizzazione alla
3721 notifica per lo stesso server slave, che in fase di avvio
3722 interroghera' (inviando un notify) se' stesso per
3723 valutare se i dati relativi alla zona di cui e' slave
3724 sono aggiornati. Si aggiunga quindi al file <tt class=
3725 "docutils literal"><span class=
3726 "pre">/etc/bind/named.conf.options</span></tt> dello
3727 slave: <tt class="docutils literal"><span class=
3728 "pre">allow-notify</span> <span class="pre">{</span>
3729 <span class="pre">192.168.0.1;</span> <span class=
3730 "pre">};</span></tt> all'interno della stanza <tt class=
3731 "docutils literal"><span class="pre">options</span></tt>,
3732 in cui l'inidirizzo IP inserito e' quello dello stesso
3737 <div class="section" id="link-suggeriti">
3738 <h2><a class="toc-backref" href=
3739 "#id71">6.4 Link suggeriti:</a></h2>
3742 <li>DNS for Rocket Scientists <a class=
3743 "reference external" href=
3744 "http://www.zytrax.com/books/dns/">http://www.zytrax.com/books/dns/</a></li>
3746 <li>DNS HOWTO <a class="reference external" href=
3747 "http://www.langfeldt.net/DNS-HOWTO/BIND-9/">http://www.langfeldt.net/DNS-HOWTO/BIND-9/</a></li>
3752 <div class="section" id="samba">
3753 <h1><a class="toc-backref" href=
3754 "#id72">7 Samba</a></h1>
3756 <p>Samba e' un progetto libero che fornisce servizi di
3757 condivisione di file e stampanti a client SMB/CIFS.</p>
3759 <p>Samba e' liberamente disponibile, al contrario di altre
3760 implementazioni SMB/CIFS, e permette di ottenere
3761 interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
3763 <p>Samba e' un software che puo' girare su piattaforme che
3764 non siano Microsoft Windows, per esempio, UNIX, Linux, IBM
3765 System 390, OpenVMS e altri sistemi operativi. Samba utilizza
3766 il protocollo TCP/IP utilizzando i servizi offerti sul server
3767 ospite. Quando correttamente configurato, permette di
3768 interagire con client o server Microsoft Windows come se
3769 fosse un file e print server Microsoft agendo da Primary
3770 Domain Controller (PDC) o come Backup Domain Controller, puo'
3771 inoltre prendere parte ad un dominio Active Directory.</p>
3773 <div class="section" id="pacchetti">
3774 <h2><a class="toc-backref" href=
3775 "#id73">7.1 Pacchetti</a></h2>
3777 <p>Pacchetti da installare per utilizzare Samba in
3778 modalita' client <a class="footnote-reference" href="#id6"
3779 id="id5" name="id5">[2]</a></p>
3780 <pre class="literal-block">
3784 <p>Pacchetti da installare per utilizzare Samba in
3785 modalita' server:</p>
3786 <pre class="literal-block">
3787 samba smbfs smbclient
3790 <table class="docutils footnote" frame="void" id="id6"
3797 <tbody valign="top">
3799 <td class="label"><a class="fn-backref" href=
3802 <td>Anche se nato per i sistemi Windows, Samba puo'
3803 essere usato anche per montare cartelle sotto
3804 GNU/Linux come alternativa a NFS. Per la condivisione
3805 di stampanti sarebbe invece opportuno intervenire
3806 direttamente su <tt class=
3807 "docutils literal"><span class=
3808 "pre">CUPS</span></tt>.</td>
3813 <p>Durante la prima installazione viene chiesto il nome del
3814 gruppo di appartenenza, il default per Windows e'
3815 <tt class="docutils literal"><span class=
3816 "pre">WORKGROUP</span></tt>. In aula usiamo invece
3817 <tt class="docutils literal"><span class=
3818 "pre">208</span></tt> .</p>
3820 <p>Per riconfigurare Samba si usi il comando:</p>
3821 <pre class="literal-block">
3822 dpkg-reconfigure samba-common
3826 <div class="section" id="passwords-e-autenticazione">
3827 <h2><a class="toc-backref" href=
3828 "#id74">7.2 Passwords e
3829 autenticazione</a></h2>
3831 <p>Per poter configurare Samba in modo che usi un sistema
3832 di negoziazione degli accessi alle cartelle condivise
3833 basato su accoppiate <em>nome utente / password</em>
3834 bisogna distinguere tra 3 livelli di password (e
3835 generalmente volete usare <em>sempre la stessa
3836 password</em> per ognuno di questi) e delle differenze tra
3837 le modalita' di <em>autenticazione</em> (e quindi anche di
3838 criptaggio delle passwords) usate da sistemi GNU/Linux e
3841 <dl class="docutils">
3842 <dt>1 Sistema *Unix ( GNU/Linux )</dt>
3844 <dd>E' la password dell'<em>utente di sistema</em> che
3845 viene usata sul sistema operativo su cui gira il software
3846 Samba. E' importante tenere conto anche delle
3847 <em>user-id</em> e <em>group-id</em> degli utenti che
3848 dovranno fisicamente scrivere sui file system. Se un
3849 utente non puo' scrivere in una certa posizione del file
3850 system (ad esempio nella cartella <tt class=
3851 "docutils literal"><span class=
3852 "pre">/mnt/condivisione</span></tt> che sara' stata
3853 necessariamente creata inizialmente dall'utente
3854 <tt class="docutils literal"><span class=
3855 "pre">root</span></tt>) per mancanza dei privilegi di
3856 scrittura allora neanche Samba potra' farlo nel momento
3857 in mette a disposizione la risorsa all'utente. Se si
3858 montano file-system dedicati per le condivisioni
3859 controllare i permessi e proprieta' dei <em>punti di
3860 mount*</em>. Queste passwords sono salvate nel solito
3861 file /etc/shadow (richiamato da /etc/passwd).</dd>
3863 <dt>2 Password per l'applicativo Samba</dt>
3865 <dd>Samba deve essere compatibile con Windows e quindi
3866 utilizzare un sistema di criptazione delle password
3867 diverso da /etc/shadow . Le password per Samba possono
3868 essere gestite ad esempio col comando <tt class=
3869 "docutils literal"><span class=
3870 "pre">smbpasswd</span></tt> e vengono generalmente
3871 salvate all'interno di <tt class=
3872 "docutils literal"><span class=
3873 "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
3875 <dt>3 Password per Windows.</dt>
3877 <dd>Gli utenti Windows effettuano il log-in alla partenza
3878 della sessione di Windows. Se si avra' l'accortezza di
3879 usare sempre la <em>stessa password</em> data
3880 precedentemente anche a Windows (o viceversa impostare la
3881 password per GNU/Linux / Samba uguale a quella di
3882 Windows) l'utente potra' accedere automaticamente alle
3883 condivisioni a lui disponibili.</dd>
3887 <div class="section" id="creazione-utenti">
3888 <h2><a class="toc-backref" href=
3889 "#id75">7.3 Creazione Utenti</a></h2>
3891 <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
3892 attenzione a <em>non dargli una shell di sistema</em>. Gli
3893 utenti Windows che accedono al server solo per le
3894 condivisioni non hanno bisogno di poter eseguire comandi
3897 <p>Creazione di un utente denominato sambo:</p>
3898 <pre class="literal-block">
3899 adduser --shell /bin/false sambo
3902 <p>Nel file <tt class="docutils literal"><span class=
3903 "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
3904 <pre class="literal-block">
3905 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
3908 <p>Aggiunta dell'utente al database delle password per
3909 Samba e generazione della sua password:</p>
3910 <pre class="literal-block">
3914 <p>Se successivamente si vorra' modificare la password di
3915 un utente gia' esistente si usi:</p>
3916 <pre class="literal-block">
3920 <p>La password sotto Windows verra' modificata sul sistema
3924 <div class="section" id="creare-la-condivisione">
3925 <h2><a class="toc-backref" href=
3926 "#id76">7.4 Creare la
3927 condivisione</a></h2>
3929 <p>La condivisione altro non e' che una cartella sul server
3930 che viene resa disponibile ai client negoziando l'accesso
3931 in base a una autenticazione basata su <em>user-name /
3932 password</em>. E' per altro possibile permettere l'accesso
3933 a una risorsa a chiunque indiscriminatamente (a tutti i
3934 <tt class="docutils literal"><span class=
3935 "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
3936 punto di vista della sicurezza. Si decida se la cartella
3937 condivisa debba risiedere nella <em>home</em> di un utente
3938 (nel caso quest'ultimo ne sia l'unico fruitore) o in una
3939 cartella in /mnt/ (nel caso piu' utenti accedano a questa).
3940 Nel secondo caso si potranno gestire gli accessi sotto
3941 GNU/Linux tramite i gruppi.</p>
3943 <p>Creazione della risorsa sambo_share nella home
3944 dell'utente sambo:</p>
3945 <pre class="literal-block">
3946 # mkdir /home/sambo/sambo_share
3947 # chown sambo:sambo /home/sambo/sambo_share/
3950 <div class="section" id=
3951 "sicurezza-permessi-di-esecuzione-sul-server">
3952 <h3><a class="toc-backref" href=
3953 "#id77">7.4.1 Sicurezza: permessi di
3954 esecuzione sul server</a></h3>
3956 <p>Bisognerebbe notare sul server i permessi di
3957 esecuzione del file-system che ospita la cartella da
3958 condividere. Se i file che saranno contenuti nella
3959 condivisione saranno da usarsi sotto Windows non c'e'
3960 motivo che questi siano eseguibili sotto GNU/Linux. Si
3961 potrebbe avere quindi, ipotizzando una condivisione in
3962 <tt class="docutils literal"><span class=
3963 "pre">/mnt/share</span></tt> che risieda su di un file
3964 system dedicato:</p>
3966 <p><tt class="docutils literal"><span class=
3967 "pre">/etc/fstab</span></tt></p>
3970 /dev/hda10 /mnt/share ext3 rw,
3971 <strong>nosuid,noexec</strong> 0 3
3974 <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
3975 possibilita' di eseguire programmi con credenziali
3980 <div class="section" id=
3981 "configurazione-dell-applicativo-samba-vero-e-proprio">
3982 <h2><a class="toc-backref" href=
3983 "#id78">7.5 Configurazione
3984 dell'applicativo Samba vero e proprio.</a></h2>
3986 <p>Avendo preparato gli utenti (ancora una volta: non si
3987 dia una shell completa a un utente che serve solo per Samba
3988 o la posta elettronica) e la cartella sul file system si
3989 puo' procedere a configurare la condivisione su Samba.</p>
3991 <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
3992 vim si usi 235gg ):</p>
3993 <pre class="literal-block">
3995 # Percorso della cartella condivisa
3996 path = /home/sambo/sambo_share
3997 # Se gli utenti possono scrivere / modificare file
3999 # Negoziazione degli accessi su base utenti / passwords
4002 # #######################################
4003 # Altri parametri opzionali di interesse
4004 # Se posso vedere la condivisione da esplora risorse
4005 # anche se non ho i privilegi per accedervi.
4007 # Commento indicativo della risorsa
4008 comment = Condivisione per Sambo
4011 <p>Dopo aver salvato il file si puo' fare un primo
4012 controllo tramite l'utility <tt class=
4013 "docutils literal"><span class="pre">testparm</span></tt> ,
4014 che controlla la sintassi del file di configurazione di
4015 Samba. Se questo non rileva problemi si puo' procedere a un
4016 <tt class="docutils literal"><span class="pre">#</span>
4017 <span class="pre">/etc/init.d/samba</span> <span class=
4018 "pre">restart</span></tt> .</p>
4020 <div class="section" id="creazione-di-un-gruppo">
4021 <h3><a class="toc-backref" href=
4022 "#id79">7.5.1 Creazione di un
4025 <p>Se si deve condividere una risorsa con un numero
4026 consistente di utenti e' consigliabile lavorare in
4027 termini termini di gruppi piuttosto che elencare la lista
4028 degli utenti in <tt class="docutils literal"><span class=
4029 "pre">valid</span> <span class=
4030 "pre">users</span></tt>.</p>
4032 <p>Dopo aver creato il gruppo del quale volete facciano
4033 parte i vostri utenti (<tt class=
4034 "docutils literal"><span class="pre">addgroup</span>
4035 <span class="pre">nome_gruppo</span></tt>), inserite i
4036 vostri utenti nel gruppo (<tt class=
4037 "docutils literal"><span class="pre">adduser</span>
4038 <span class="pre">nome_utente</span> <span class=
4039 "pre">nome_gruppo</span></tt>) e modificate la direttiva
4040 <tt class="docutils literal"><span class=
4041 "pre">valid</span> <span class="pre">users</span></tt> in
4042 <tt class="docutils literal"><span class=
4043 "pre">smb.conf</span></tt> per riferirsi ad un gruppo
4044 piuttosto che a degli utenti. Per riferirsi a un gruppo
4045 si usi il carattere <tt class=
4046 "docutils literal"><span class="pre">@</span>
4047 <span class="pre">chicciola</span></tt> col <tt class=
4048 "docutils literal"><span class=
4049 "pre">nome_del_gruppo</span></tt>:</p>
4050 <pre class="literal-block">
4051 # Negoziazione degli accessi su base gruppo
4052 valid users = @nome_gruppo
4057 <div class="section" id="testare-il-servizio">
4058 <h2><a class="toc-backref" href=
4059 "#id80">7.6 Testare il Servizio</a></h2>
4061 <p>Come testare il servizio</p>
4064 <pre class="literal-block">
4065 smbclient -U sambo -L localhost
4068 <p>Questo comando permette di esplorare la risorsa
4069 qualificandosi come utente, in questo modo potete testare
4070 il corretto funzionamento dell'autenticazione. Si provi
4071 inizialmente a sbagliare la password deliberatamente, poi a
4072 inserirla correttamente: dovrebbero essere visibili le
4073 risorse disponibili al solo utente sambo: la suo /home e la
4074 cartella samba_share:</p>
4075 <pre class="literal-block">
4076 Sharename Type Comment
4077 --------- ---- -------
4078 sambo_share Disk Condivisione per Sambo
4079 print$ Disk Printer Drivers
4080 IPC$ IPC IPC Service (base server)
4081 sambo Disk Home Directories
4084 <p>In particolare l'ultima voce relativa alla home
4085 directory dell'utente dovrebbe essere visibile solo agli
4086 utenti autenticati.</p>
4088 <p>In alternativa e' possibile montare realmente la
4089 condivisone anche su GNU/Linux tramite un client per samba
4090 e testarne il corretto funzionamento:</p>
4091 <pre class="literal-block">
4092 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
4097 <div class="section" id="server-di-posta-postfix">
4098 <h1><a class="toc-backref" href=
4099 "#id81">8 Server di posta: Postfix</a></h1>
4101 <p>Il server di posta che prenderemo in considerazione e'
4102 Postfix, a seguire un estratto di un file di configurazione
4103 <em>semplice</em> con l'abilitazione delle <em>Maildir</em>
4104 nelle <tt class="docutils literal"><span class=
4105 "pre">/home</span></tt> degli utenti per la consegna della
4108 <p><tt class="docutils literal"><span class=
4109 "pre">/etc/postfix/main.cf</span></tt>:</p>
4110 <pre class="literal-block">
4111 # ...segue dalla riga ~30
4112 myhostname = 162.piffa.net
4113 alias_maps = hash:/etc/aliases
4114 alias_database = hash:/etc/aliases
4115 myorigin = 162.piffa.net
4116 mydestination = 162.piffa.net, localhost
4117 # Se non avete un ip pubblico e statico, con un adeguato record PTR
4118 # dovrete usare un realy host per l'invio della posta
4119 relayhost = smtp.piffa.net
4121 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
4122 # Se dovete inviare la posta per i client della vostra LAN privata:
4123 # mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
4124 # E si faccia BEN ATTENZIONE a non diventare un open realay smtp
4127 # Per effettuare lo storaggio della posta nelle home directory degli utenti
4128 # in una Maildir invece che nella Mailbox in /var/mail/nome_utente
4129 # si disabiliti procmail
4130 #mailbox_command = procmail -a "$EXTENSION"
4132 # cartella_i abiliti lo storaggio della posta nella Maildir/ (si noti lo slash)
4133 # all'interno della home dell'utente:
4134 home_mailbox = Maildir/
4135 mailbox_size_limit = 0
4136 recipient_delimiter = +
4137 inet_interfaces = all
4140 <dl class="docutils">
4141 <dt>E' disponibile un file di configurazione di esempio ben
4142 piu' articolato e commentato::</dt>
4144 <dd>/usr/share/postfix/main.cf.dist .</dd>
4147 <div class="section" id="test-del-server-smtp">
4148 <h2><a class="toc-backref" href=
4149 "#id82">8.1 Test del server smtp</a></h2>
4151 <p>Per testare il corretto funzionamento del server di
4152 posta si puo' procedere in vari modi.</p>
4155 <li>Spedire una mail a una casella locale / remota e
4156 controllare i log (syslog)</li>
4158 <li>Collegarsi via <em>telnet</em> al server di posta:
4159 <a class="reference external" href=
4160 "http://www.netadmintools.com/art276.html">http://www.netadmintools.com/art276.html</a></li>
4162 <li>usare una utility come SWAKS</li>
4165 <div class="section" id="swaks">
4166 <h3><a class="toc-backref" href=
4167 "#id83">8.1.1 Swaks</a></h3>
4169 <dl class="docutils">
4170 <dt>Per gli utenti meno esperti e' consigliabile
4171 utilizzare <em>SWAKS</em>: si installi l'omonimo
4172 pacchetto e si esegua un test con::</dt>
4174 <dd>swaks --to <a class="reference external" href=
4175 "mailto:utente@destinatario.tilde">utente@destinatario.tilde</a>
4176 --from <a class="reference external" href=
4177 "mailto:utente@propio.mail.tilde">utente@propio.mail.tilde</a></dd>
4180 <p>Ecco un esempio di una sessione corretta:</p>
4181 <pre class="literal-block">
4182 swaks --to andrea@piffa.net from andrea@mydomain.com
4183 === Trying smtp.piffa.net:25...
4184 === Connected to smtp.piffa.net.
4185 <- 220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
4186 -> EHLO alice.mydomain.com
4187 <- 250-zoo.piffa.net
4188 <- 250-PIPELINING
4189 <- 250-SIZE 10240000
4193 <- 250-ENHANCEDSTATUSCODES
4196 -> MAIL FROM:<root@alice.mydomain.com>
4198 -> RCPT TO:<andrea@piffa.net>
4201 <- 354 End data with <CR><LF>.<CR><LF>
4202 -> Date: Thu, 28 May 2009 13:11:19 +0200
4203 -> To: andrea@piffa.net
4204 -> From: root@alice.mydomain.com
4205 -> Subject: test Thu, 28 May 2009 13:11:19 +0200
4206 -> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
4208 -> This is a test mailing
4211 <- 250 2.0.0 Ok: queued as 41FB261AFC
4214 === Connection closed with remote host.
4219 <div class="section" id="imap-e-pop">
4220 <h2><a class="toc-backref" href=
4221 "#id84">8.2 Imap e pop</a></h2>
4223 <p>Postfix e' un server SMTP, di conseguenza se volete che
4224 i vostri utenti possano <em>scaricare</em> in locale la
4225 posta generalmente volete mettere a loro disposizione un
4226 server <em>POP3</em> o <em>IMAP</em>. Oppure entrambi.</p>
4228 <dl class="docutils">
4229 <dt>Pacchetti da installare</dt>
4231 <dd>courier-imap courier-pop</dd>
4234 <p>Si noti che IMAP necessita delle <em>Maildir</em>, non
4235 funziona con le Mailbox in <tt class=
4236 "docutils literal"><span class="pre">/var/mail/</span></tt>
4240 <div class="section" id="client-a-riga-di-comando">
4241 <h2><a class="toc-backref" href=
4242 "#id85">8.3 Client a riga di
4245 <p>Per testare il corretto funzionamento del server di
4246 posta e' utile avere a disposizione delle utility per
4247 inviare e leggere la posta: ovviamente da riga di
4250 <div class="section" id="mailx">
4251 <h3><a class="toc-backref" href=
4252 "#id86">8.3.1 mailx</a></h3>
4254 <dl class="docutils">
4255 <dt>Uno dei client piu' semplici, sopratutto per
4256 inviare un messaggioi. e' sufficiente usare una formula
4259 <dd>mail <a class="reference external" href=
4260 "mailto:utente@dominio.com">utente@dominio.com</a></dd>
4263 <p>Se il comando <tt class=
4264 "docutils literal"><span class="pre">mail</span></tt> non
4265 fosse disponibile si installi il pacchetto <tt class=
4266 "docutils literal"><span class=
4267 "pre">mailx</span></tt>.</p>
4269 <p>Al primo prompt si digitera' l'oggetto, il testo del
4270 messaggio (per terminare l'inserimento lasciare una riga
4271 vuota, digitare un <tt class=
4272 "docutils literal"><span class="pre">punto</span>
4273 <span class="pre">+</span> <span class=
4274 "pre">Invio</span></tt> su una riga vuota), la Carbon
4275 Copy (se necessaria).</p>
4278 <pre class="literal-block">
4279 mail andrea@localhost
4280 Subject: Oggetto della mail
4282 per terminare il messaggio
4283 lasciare una riga vuota
4284 e un punto (poi Invio).
4290 <p>Per altrre opzioni si veda la pagina man.</p>
4293 <div class="section" id="mutt">
4294 <h3><a class="toc-backref" href=
4295 "#id87">8.3.2 Mutt</a></h3>
4297 <p>Mutt e' uno dei gestori di posta preferiti da chi
4298 preferisce utilizzare l'interfaccia testuale per la
4299 gestione della posta.</p>
4301 <p>Mutt ha un file di configurazione <tt class=
4302 "docutils literal"><span class="pre">.muttrc</span></tt>
4303 nella <em>home</em> dell'utente, alcuni settaggi possono
4306 <dl class="docutils">
4307 <dt>set folder="~/Maildir"</dt>
4309 <dd>Per utilizzare <tt class=
4310 "docutils literal"><span class=
4311 "pre">/home/nome_utente/Maildir</span> <span class=
4312 "pre">come</span> <span class=
4313 "pre">mailbox</span></tt>, invece del default
4314 <tt class="docutils literal"><span class=
4315 "pre">/var/mail/nome_utente</span></tt>.</dd>
4317 <dt>set editor="vim"</dt>
4319 <dd>Utilizzare <tt class=
4320 "docutils literal"><span class="pre">vim</span></tt>
4321 come editor per comporre i messaggi.</dd>
4324 <p>Spesso e' utile poter <em>levvere al volo</em> la
4325 Mailbox / Maildir di un utente sul server di posta, per
4326 controllare se i messaggi vengono recapitati
4328 <pre class="literal-block">
4329 mutt -f /var/mail/utente
4330 mutt -f /home/utente/Maildir
4333 <p>In modo analogo si puo' consultare al volo la propia
4334 mailbox su un server remoto tramite IMAP/POP:</p>
4335 <pre class="literal-block">
4336 mutt -f imap://nome_utente@piffa.net
4340 <div class="section" id="web-client">
4341 <h3><a class="toc-backref" href=
4342 "#id88">8.3.3 Web client</a></h3>
4344 <p>Per mettere a disposizione degli utenti un client web
4345 per gestire la propria posta si installi il pacchetto:
4346 <tt class="docutils literal"><span class=
4347 "pre">squirrelmail</span></tt> . Ci sono tanti altri
4348 client web disponibili: questo e' particolarmente
4349 semplice. Naturalmente dovrete aver installato:
4350 <tt class="docutils literal"><span class=
4351 "pre">php5</span> <span class="pre">apache2</span></tt>
4354 <p>L'interfaccia dovrebbe essere disponibile all'url:
4355 <tt class="docutils literal"><span class=
4356 "pre">http://localhost/squirrelmail</span></tt> . Se
4357 cosi' non fosse assicuratevi che Apache abbia incluso il
4358 file di configurazione di squirrelmail:</p>
4359 <pre class="literal-block">
4360 cd /etc/apache2/conf.d/
4361 ln -s /etc/squirrelmail/apache.conf ./squirrelmail.conf
4366 <div class="section" id="graylisting">
4367 <h2><a class="toc-backref" href=
4368 "#id89">8.4 Graylisting</a></h2>
4370 <p>Il <em>graylisting</em> e' un sistema relativamente poco
4371 invasivo, con un limitato consumo di risorse per limitare
4372 lo <em>SPAM</em> in arrivo sul propio server di posta. Come
4373 suggerisce il nome e' una via di mezzo tra una <em>white
4374 list</em> (una lista di mittenti privilegiata, sempre
4375 benvenuti) e una <em>black list</em> (mittenti
4376 <em>bannati</em>, banditi dal poter inviare nuovi
4379 <p>Il funzionamento e' relativamente semplice: ogni
4380 mittente sconosciuto viene immediatamente rifiutato con un
4381 errore <em>non grave</em> come un <em>server non
4382 disponibile, provare piu' tardi</em>. Questo inconveniente
4383 non dovrebbe mettere in difficolta' un server di posta /
4384 mittente legittimo, che dopo un periodo di attesa tentera'
4385 nuovamente di inviare il messaggio ottenendo finalmente il
4386 risultato atteso. Diversamente un <em>bot</em> per l'invio
4387 di SPAM o un applicazione improvvisata (tipicamente di
4388 derivazione virale) che stesse inviando il messaggio
4389 <em>probabilmente</em> non insisterebbe, rinunciano ad
4390 inviare il messaggio preferendo destinazioni meno
4393 <div class="section" id="abilitazione-in-postfix">
4394 <h3><a class="toc-backref" href=
4395 "#id90">8.4.1 Abilitazione in
4398 <p>Installare il pacchetto: <tt class=
4399 "docutils literal"><span class="pre">postgrey</span></tt>
4400 e aggiungere il file di configurazione di Postfix
4401 <tt class="docutils literal"><span class=
4402 "pre">/etc/postfix/main.cf</span></tt>:</p>
4403 <pre class="literal-block">
4404 smtpd_recipient_restrictions =
4406 reject_unauth_destination,
4407 check_policy_service inet:127.0.0.1:60000
4411 <div class="section" id="test">
4412 <h3><a class="toc-backref" href=
4413 "#id91">8.4.2 Test</a></h3>
4415 <p>Inviando un messaggio il client dovrebbe ricevere un
4416 iniziale messaggio di rifiuto del messaggio:</p>
4417 <pre class="literal-block">
4418 swaks --to andrea@piffa.net from andrea@mydonain.com
4419 === Trying smtp.piffa.net:25...
4420 === Connected to smtp.piffa.net
4423 -> RCPT TO:<andrea@piffa.net>
4424 <** 450 4.2.0 <andrea@piffa.net>: Recipient address rejected:
4425 Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
4428 === Connection closed with remote host.
4431 <p>A lato server si dovrebbe rilevare su <tt class=
4432 "docutils literal"><span class=
4433 "pre">/var/log/syslog</span></tt> qualcosa di simile:</p>
4434 <pre class="literal-block">
4435 connect from alice.mydomain.com[65.98.21.97]
4436 May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
4437 client_name=alice.mydomain.com,
4438 client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
4439 May 28 14:53:34 r24266 postfix/smtpd[22538]:
4440 NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
4441 450 4.2.0 <andrea@piffa.net>: Recipient address rejected: Greylisted,
4442 see http://postgrey.schweikert.ch/help/piffa.net.html;
4443 from=<root@alice.mydomain.com> to=<andrea@piffa.net>
4444 proto=ESMTP helo=<alice.mydomain.com>
4445 May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
4449 <div class="section" id="statistiche">
4450 <h3><a class="toc-backref" href=
4451 "#id92">8.4.3 Statistiche</a></h3>
4453 <p>E' sempre utile poter tracciare qualche statistica
4454 sulle percentuali di messaggi ricevuti, da chi, messaggi
4455 rifiutati (e per quale motivo). Statistiche che attingono
4456 dai soliti log del server di posta <tt class=
4457 "docutils literal"><span class=
4458 "pre">/var/log/syslog</span></tt> di default oltre che i
4459 dedicati <tt class="docutils literal"><span class=
4460 "pre">/var/log/mail</span></tt> .</p>
4462 <p>Una utility semplice per analizzare l'attivita' del
4463 propio server smtp potrebbe essere <tt class=
4464 "docutils literal"><span class=
4465 "pre">pflogsumm</span></tt> , installato il pacchetto la
4466 si puo' invocare con:</p>
4467 <pre class="literal-block">
4468 pflogsumm.pl /var/log/mail.log
4471 <p>oppure utilizzare i log piu' vecchi ad es. <tt class=
4472 "docutils literal"><span class=
4473 "pre">/var/log/mail.log.0</span></tt></p>
4478 <div class="section" id="firewall">
4479 <h1><a class="toc-backref" href=
4480 "#id93">9 Firewall</a></h1>
4482 <p>In Informatica, nell'ambito delle reti di computer, un
4483 firewall (termine inglese dal significato originario di
4484 parete refrattaria, muro tagliafuoco, muro ignifugo; in
4485 italiano anche parafuoco o parafiamma) e' un componente
4486 passivo di difesa perimetrale che puo'ò anche svolgere
4487 funzioni di collegamento tra due o piu' tronconi di rete.
4488 Usualmente la rete viene divisa in due sotto reti: una, detta
4489 esterna, comprende l'intera Internet mentre l'altra interna,
4490 detta LAN (Local Area Network), comprende una sezione piu' o
4491 meno grande di un insieme di computer locali. In alcuni casi
4492 e' possibile che si crei l'esigenza di creare una terza sotto
4493 rete detta DMZ (o zona demilitarizzata) atta a contenere quei
4494 sistemi che devono essere isolati dalla rete interna ma
4495 devono comunque essere protetti dal firewall.</p>
4497 <p>Una prima definizione chiusa di firewall è la
4500 <p>Apparato di rete hardware o software che filtra tutti i
4501 pacchetti entranti ed uscenti, da e verso una rete o un
4502 computer, applicando regole che contribuiscono alla sicurezza
4505 <p>In realta'à un firewall puo'ò essere realizzato con
4506 un normale computer (con almeno due schede di rete e software
4507 apposito), puo'ò essere una funzione inclusa in un router o
4508 puo'ò essere un apparato specializzato. Esistono inoltre i
4509 cosiddetti "firewall personali", che sono programmi
4510 installati sui normali calcolatori, che filtrano solamente i
4511 pacchetti che entrano ed escono da quel calcolatore; in tal
4512 caso viene utilizzata una sola scheda di rete.</p>
4514 <p>La funzionalita'à principale in sostanza è quella
4515 di creare un filtro sulle connessioni entranti ed uscenti, in
4516 questo modo il dispositivo innalza il livello di sicurezza
4517 della rete e permette sia agli utenti interni che a quelli
4518 esterni di operare nel massimo della sicurezza. Il firewall
4519 agisce sui pacchetti in transito da e per la zona interna
4520 potendo eseguire su di essi operazioni di: controllo modifica
4523 <p>Questo grazie alla sua capacita'Ã di "aprire" il
4524 pacchetto IP per leggere le informazioni presenti sul suo
4525 header, e in alcuni casi anche di effettuare verifiche sul
4526 contenuto del pacchetto.</p>
4528 <div class="section" id="links">
4529 <h2><a class="toc-backref" href=
4530 "#id94">9.1 Links</a></h2>
4533 <li><a class="reference external" href=
4534 "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
4536 <li><a class="reference external" href=
4537 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
4538 http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
4542 <div class="section" id="ipfilter">
4543 <h2><a class="toc-backref" href=
4544 "#id95">9.2 Ipfilter</a></h2>
4546 <p>Link: <a class="reference external" href=
4547 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
4548 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
4550 <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
4551 po' del 3) e su cosa <em>non</em> lavora (livello 4).
4552 Netfilter lavora anche su parti del livello 3 (TCP, UDP,
4553 etc) e del livello 1 (MAC source address). Iptables
4554 comunque permette di fare il <em>connection-tracking</em>,
4555 mediante il quale possiamo implementare il Network Address
4558 <p>Netfilter non ricostruisce il flusso di dati tra
4559 pacchetti, non puo' quindi rilevare la presenza di virus o
4560 simili che si trasmettono su pacchetti separati:
4561 ricomporre, analizzare e tornare a scomporre i frammenti
4562 richiederebbe troppa RAM e risorse di sistema, con il
4563 conseguente rischio di saturare il firewall fino
4564 all'abbandono dei nuovi pacchetti in transito. Ci sono
4565 altri software piu' adatti a questi compiti, ad esempio un
4566 proxy HTTP come Squid che e' appunto una applicazione di
4567 quarto livello, progettata e strutturata per analizzare e
4568 modificare i flussi di dati (il <em>contenuto</em> dei
4569 pacchetti, non le sole <em>intestazioni</em>) facendo
4570 abbondate uso delle risorse RAM e di calcolo del sistema.
4571 Non a caso su macchine embedded dalle prestazioni molto
4572 ridotte (CPU ARM ~250MHZ con ~30MB di RAM) Squid sfrutta al
4573 massimo le risorse di sistema per gestire il traffico di
4574 una rete 10/100, mentre il lavoro tipico svolto da
4575 netfilter e' quasi irrilevante.</p>
4578 <div class="section" id="progettazione-di-un-firewall">
4579 <h2><a class="toc-backref" href=
4580 "#id96">9.3 Progettazione di un
4583 <p>Per implementare un firewall bisogna decidere un aio di
4584 cose: la collocazione e l'approccio (inclusivo o esclusivo)
4585 al filtraggio, il tipo di hardware.</p>
4587 <div class="section" id="collocazione">
4588 <h3><a class="toc-backref" href=
4589 "#id97">9.3.1 Collocazione</a></h3>
4591 <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
4592 della rete, decidere se diversi reparti di una azienda si
4593 possano vedere tra loro e in che misura.</p>
4595 <p>Collocazione:</p>
4598 <ol class="arabic simple">
4601 <li>tra router e servers / LAN</li>
4603 <li>Unico server / router / firewall e connessi
4604 rischi. considerare l'acquisto di un router hardware
4609 <dl class="docutils">
4610 <dt>Layeed security:</dt>
4612 <dd>Implementare piu' device / software sui diversi
4613 livelli: <a class="reference external" href=
4614 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
4615 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
4619 <div class="section" id="policy-di-default">
4620 <h3><a class="toc-backref" href=
4621 "#id98">9.3.2 Policy di default</a></h3>
4623 <p>Drop o Accept: conseguenze per sicurezza, facilita' di
4627 <div class="section" id="hardware">
4628 <h3><a class="toc-backref" href=
4629 "#id99">9.3.3 Hardware</a></h3>
4631 <p>Sostanzialmente potremmo distinguere due tipologie di
4634 <dl class="docutils">
4635 <dt>Network appliance dedicata::</dt>
4637 <dd>Un dispositivo hardware dedicato alla funzione di
4638 Firewall, ad es un Cisco / Fortigate. Si noti che molti
4639 firewall economici altro non sono che Linux box molto
4642 <dt>Server / Personal computer:</dt>
4644 <dd>Un server sul quale viene fatto girare Netfilter ad
4645 uso del server stesso e della rete connessa.</dd>
4648 <p>Vantaggi e svantaggi: consumo elettrico, efficienza,
4649 flessibilita', strumenti di gestione, sicurezza,
4654 <div class="section" id=
4655 "percorso-dei-pacchetti-tra-tabelle-e-catene">
4656 <h2><a class="toc-backref" href=
4657 "#id100">9.4 Percorso dei pacchetti tra
4658 tabelle e catene</a></h2>
4660 <p>link: <a class="reference external" href=
4661 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
4662 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
4665 <div class="section" id="concetti-di-base">
4666 <h2><a class="toc-backref" href=
4667 "#id101">9.5 Concetti di base</a></h2>
4669 <div class="section" id="tabelle-catene-regole">
4670 <h3><a class="toc-backref" href=
4671 "#id102">9.5.1 Tabelle, catene,
4674 <p>Iptables lavora su 3 tabelle (tables) di default:</p>
4677 <li>filter - Regola il firewalling: quali pacchetti
4678 accettare, quali bloccare</li>
4680 <li>nat - Regola le attivita'Ã di natting</li>
4682 <li>mangle - Interviene sulla alterazione dei
4686 <p>Ogni tabella ha delle catene (chains) predefinite
4687 (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
4688 aggiunte catene custom. Ogni catena è composta da un
4689 elenco di regole (rules) che identificano pacchetti di
4690 rete secondo criteri diversi (es: -p tcp --dport 80 -d
4691 10.0.0.45) Ogni regola termina con una indicazione
4692 (target) su cosa fare dei pacchetti identificati dalla
4693 regola stessa (es: -j ACCEPT, -j DROP ...)</p>
4696 <div class="section" id="match">
4697 <h3><a class="toc-backref" href=
4698 "#id103">9.5.2 Match</a></h3>
4700 <p>I Match di una regola (rule) servono a testare un
4701 pacchetto per valutare se corrisponda a certe
4702 caratteristiche. I match di possono servire a controllare
4703 se un pacchetto e' destinato a una porta particolare o
4704 utilizza un protocollo particolare.</p>
4706 <p>Alcuni esempi:</p>
4708 <dl class="docutils">
4709 <dt>-p [!] proto</dt>
4711 <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
4712 udp, gre, ah...)</dd>
4714 <dt>-s [!] address[/mask]</dt>
4716 <dd>Indirizzo IP sorgente (o network con maschera di
4719 <dt>-d [!] address[/mask]</dt>
4721 <dd>Indirizzo IP destinazione (o network)</dd>
4723 <dt>-i [!] interface[+]</dt>
4725 <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
4727 <dt>-o [!] interface[+]</dt>
4729 <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
4732 <table class="docutils option-list" frame="void" rules=
4734 <col class="option">
4735 <col class="description">
4737 <tbody valign="top">
4739 <td class="option-group"><kbd><span class=
4740 "option">-f</span></kbd></td>
4742 <td>Frammento di pacchetto</td>
4748 <div class="section" id="targets">
4749 <h3><a class="toc-backref" href=
4750 "#id104">9.5.3 Targets</a></h3>
4752 <p>Se un pacchetto soddisfa le condizioni del Match
4753 <em>salta</em> (jump) su uno dei target possibili, in
4754 caso contrario continua il suo percorso tra regole catene
4757 <p>Target principali:</p>
4759 <dl class="docutils">
4760 <dt><em>-j ACCEPT</em></dt>
4762 <dd>Il pacchetto matchato viene accettato e procede
4763 verso la sua destinazione. Si usa per definire il
4764 traffico permesso.</dd>
4766 <dt><em>-j DROP</em></dt>
4768 <dd>Il pacchetto viene rifiutato e scartato, senza
4769 alcuna notifica al mittente. Si usa, in alternativa a
4770 REJECT, per bloccare traffico.</dd>
4772 <dt><em>-j REJECT</em></dt>
4774 <dd>Il pacchetto viene rifiutato. Al mittente viene
4775 mandato un pacchetto (configurabile) di notifica tipo
4776 ICMP port-unreachable (--reject-with
4777 icmp-port-unreachable)</dd>
4780 <table class="docutils option-list" frame="void" rules=
4782 <col class="option">
4783 <col class="description">
4785 <tbody valign="top">
4787 <td class="option-group"><kbd><span class=
4788 "option">-t <var>LOG</var></span></kbd></td>
4790 <td>Il pacchetto viene loggato via syslog e procede
4791 l'attraversamento della catena. Opzioni:
4792 (--log-level, --log-prefix, --log-tcp-sequence,
4793 --log-tcp-options, --log-ip-options)</td>
4797 <td class="option-group"><kbd><span class=
4798 "option">-j <var>DNAT</var></span></kbd></td>
4800 <td>Viene modificato l'IP di destinazione del
4801 pacchetto. Target disponibile solo in nat /
4802 PREROUTING e nat / OUTPUT. L'opzione
4803 --to-destination IP:porta definisce il nuovo IP di
4804 destinazione. Si usa tipicamente su network
4805 firewall che nattano server di una DMZ</td>
4809 <td class="option-group"><kbd><span class=
4810 "option">-j <var>SNAT</var></span></kbd></td>
4812 <td>Viene modificato l'IP sorgente. Solo in nat /
4813 POSTROUTING. Prevede l'opzione --to-source
4814 IP:porta. Si usa per permettere l'accesso a
4815 Internet da una rete locale con IP privati.</td>
4819 <td class="option-group"><kbd><span class=
4820 "option">-j <var>MASQUERADE</var></span></kbd></td>
4822 <td>Simile a SNAT, si applica quando i pacchetti
4823 escono da interfacce con IP dinamico (dialup, adsl,
4824 dhcp...). Si usa solo in nat / POSTROUTING e
4825 prevede l'opzione --to-ports porte.</td>
4829 <td class="option-group"><kbd><span class=
4830 "option">-j <var>REDIRECT</var></span></kbd></td>
4832 <td>Redirige il pacchetto ad una porta locale.
4833 Usabile solo in nat / PREROUTING e nat / OUTPUT è
4834 previsto per fare un transparent proxy (con proxy
4835 server in esecuzione sulla macchina con
4840 <td class="option-group"><kbd><span class=
4841 "option">-j <var>RETURN</var></span></kbd></td>
4843 <td>Interrompe l'attraversamento della catena. Se
4844 questa è una secondaria, il pacchetto torna ad
4845 attraversare la catena madre da punto in cui aveva
4846 fatto il salto nella secondaria. Se il RETURN è in
4847 una delle catene di default, il pacchetto
4848 interrompe l'attraversamento e segue la policy di
4853 <td class="option-group"><kbd><span class=
4854 "option">-j <var>TOS</var></span></kbd></td>
4856 <td>Usabile solo nella tabella mangle, permette di
4857 cambiare il TOS (Type Of Service) di un pacchetto
4858 con l'opzione --set-tos. Per un elenco dei
4859 parametri disponibili: iptables -j TOS -h</td>
4863 <td class="option-group"><kbd><span class=
4864 "option">-j <var>MIRROR</var></span></kbd></td>
4866 <td>Curioso e sperimentale, questo target invia un
4867 pacchetto speculare al mittente. In pratica è come
4868 se facesse da specchio per tutti i pacchetti
4869 ricevuti. Da usare con cautela, per evitare
4870 attacchi DOS indiretti.</td>
4877 <div class="section" id="tabella-filter">
4878 <h2><a class="toc-backref" href=
4879 "#id105">9.6 Tabella Filter</a></h2>
4881 <p>E' quella implicita e predefinita (-t filter) Riguarda
4882 le attività di filtraggio del traffico. Ha 3 catene
4883 di default: INPUT - Riguarda tutti i pacchetti destinati al
4884 sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
4885 i pacchetti che sono originati dal sistema e destinati ad
4886 uscire. FORWARD - Riguarda i pacchetti che attraversano il
4887 sistema, con IP sorgente e destinazione esterni.</p>
4889 <p>Esempio per permettere accesso alla porta 80 locale:
4890 iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
4891 Analoga a: iptables -I INPUT -p tcp --dport 80 -j
4894 <p>Esempio per permettere ad un pacchetto con IP sorgente
4895 10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
4896 il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
4900 <div class="section" id=
4901 "flush-automatico-per-macchine-remote">
4902 <h2><a class="toc-backref" href=
4903 "#id106">9.7 Flush automatico per macchine
4906 <p>Se state provando una configurazione del firewall per
4907 una macchina remota e' buona norma per evitare brutte
4908 figure attivare uno script che faccia il <em>flush</em>
4909 delle regole dopo qualche minuto. Potreste infatti
4910 inavvertitamente impostare una regola che vi impedisca di
4911 raggiungere la macchina remota, cosi' da non poter neanche
4912 eliminare quella regola e ripristinare la situazione
4915 <p><em>Veramente</em>, prima di lavorare sul firewall di
4916 una macchina remota impostate almeno un <tt class=
4917 "docutils literal"><span class="pre">at</span> <span class=
4918 "pre">now</span> <span class="pre">+5</span> <span class=
4919 "pre">min</span></tt> o con un'oretta di margine per fare
4920 il <em>flush</em> delle regole (su tutte le tabelle):</p>
4921 <pre class="literal-block">
4923 at> /sbin/iptables -F
4928 <div class="section" id="gestione-regole-rules">
4929 <h2><a class="toc-backref" href=
4930 "#id107">9.8 Gestione regole
4933 <p>Il comando iptables viene usato per ogni
4934 attivita'Ã di gestione e configurazione.</p>
4936 <p>Inserimento regole:</p>
4938 <dl class="docutils">
4939 <dt>iptables -A CATENA ...</dt>
4941 <dd>Aggiunge una regola alla fine della catena
4944 <dt>iptables -I CATENA [#] ...</dt>
4946 <dd>Inserisce alla riga # (default 1) una regola nella
4947 catena indicata</dd>
4949 <dt>iptables -N CATENA</dt>
4951 <dd>Crea una nuova catena custom</dd>
4953 <dt>iptables -P CATENA TARGET</dt>
4955 <dd>Imposta il target di default per la catena
4959 <p>Rimozione regole e azzeramenti:</p>
4961 <dl class="docutils">
4962 <dt>iptables -F [catena]</dt>
4964 <dd>Ripulisce tutte le catene (o quella indicata)</dd>
4966 <dt>iptables -X [catena]</dt>
4968 <dd>Ripulisce tutte le catene custom (o quella
4971 <dt>iptables -Z [catena]</dt>
4973 <dd>Azzera i contatori sulle catene</dd>
4975 <dt>iptables -D catena #</dt>
4977 <dd>Cancella la regola numero # dalla catena
4981 <p>Interrogazione:</p>
4983 <dl class="docutils">
4984 <dt>iptables -L</dt>
4986 <dd>Elenca le regole esistenti</dd>
4988 <dt>iptables -L -n -v</dt>
4990 <dd>Elenca, senza risolvere gli host, in modo verboso le
4991 regole esistenti</dd>
4995 <div class="section" id="salvataggio-regole">
4996 <h2><a class="toc-backref" href=
4997 "#id108">9.9 Salvataggio regole</a></h2>
4999 <p>Il comando <tt class="docutils literal"><span class=
5000 "pre">iptables</span></tt> serve per interagire con il
5001 framework <tt class="docutils literal"><span class=
5002 "pre">Netfilter</span></tt> che gestisce il firewall di
5003 Linux al livello del kernel. Questo comporta, in modo
5004 analogo a quando avviene col comando <tt class=
5005 "docutils literal"><span class="pre">ifconfig</span></tt>,
5006 che i cambiamenti impostati siano in <em>tempo reale,
5007 RAM</em>, non persistenti nel sistema: al boot successivo
5008 del sistema tutto tornera' alle impostazioni di base (in
5009 questo caso <em>nulle</em>, con policy di default settate
5010 su <tt class="docutils literal"><span class=
5011 "pre">ACCEPT</span></tt> per tutto).</p>
5013 <p>Le varie invocazioni di iptables potrebbero essere
5014 richiamate da degli scripts dedicati, ma fortunatamente e'
5015 stata predisposta una apposita utility per gestire questi
5016 scripts in modo da avere a disposizione un <em>formato
5017 standard</em> per il salvataggio e il ripristino delle
5018 regole del firewall.</p>
5020 <p>Altro problema: decidere quando attivare / disattivare
5021 queste regole. Utilizzare i <em>runlevels</em> non e' una
5022 soluzione adeguata: le regole del firewall sono legate
5023 all'attivita' delle schede di rete (e un host con diverse
5024 schede di rete puo' attivarle a secondo delle esigenze di
5025 routing, partenza di servizi es file_sharing per un
5026 back-up...): il sistema operativo Debian permette di legare
5027 l'esecuzione di comandi alla attivazione di una device di
5028 rete (<tt class="docutils literal"><span class=
5029 "pre">up</span></tt>), dopo la sua attivazione (<tt class=
5030 "docutils literal"><span class="pre">post-up</span></tt>,
5031 utile per devices che richiedono un certo tempo per
5032 inizializzarsi: come un tunnel o una connessione punto a
5033 punto), prima della sua attivazione (<tt class=
5034 "docutils literal"><span class="pre">pre-up</span></tt>).
5035 Allo stesso modo sono disponibili eventi analoghi per
5036 accompagnare la disattivazione dei device di rete: si veda
5037 la pagina man di <tt class="docutils literal"><span class=
5038 "pre">interfaces</span></tt>.</p>
5040 <p>Nel nostro caso avremo per una possibile scheda
5041 <tt class="docutils literal"><span class=
5042 "pre">eth0</span></tt>:</p>
5044 <p><tt class="docutils literal"><span class=
5045 "pre">/etc/network/interfaces</span></tt></p>
5046 <pre class="literal-block">
5047 iface eth1 inet static
5048 up /sbin/iptables-restore /root/firewall/basic_fw
5049 # Seguono i soliti parametri della scheda di rete
5050 address 10.10.208.21
5053 <div class="section" id="iptables-save">
5054 <h3><a class="toc-backref" href=
5055 "#id109">9.9.1 Iptables-save</a></h3>
5057 <p>Per salvare le regole di iptables attualmente presenti
5058 nel kernel si usi il comando:</p>
5059 <pre class="literal-block">
5060 # iptables-save >> /root/firewall/basic_fw
5063 <p>Il contenuto del file dovrebbe essere
5064 <em>comprensibile</em>: sostanzialmente sono regole di
5065 iptables, senza il comando iptables ripetuto, suddivisi
5066 per le varie tabelle. Potete comunque correggere
5067 eventuali parametri con un edito di testo.</p>
5069 <p>Se non avete un'idea migliore potreste voler tenere
5070 gli script dei firewall in una cartella <tt class=
5071 "docutils literal"><span class=
5072 "pre">~/firewall</span></tt> nella home directory
5073 dell'utente <tt class="docutils literal"><span class=
5074 "pre">root</span></tt>.</p>
5077 <div class="section" id="iptables-restore">
5078 <h3><a class="toc-backref" href=
5079 "#id110">9.9.2 Iptables-restore</a></h3>
5081 <p>Per ripristinare un set di regole precedentemente
5082 salvate con <tt class="docutils literal"><span class=
5083 "pre">iptables-save</span></tt> si utilizzi <tt class=
5084 "docutils literal"><span class=
5085 "pre">iptables-restore</span></tt>. Se questo deve essere
5086 fatto in modalita' <em>non interattiva</em>, ad esempio
5087 deve essere eseguito dal demone che si occupa di
5088 inizializzare le schede di rete, oppure un <em>cron</em>
5089 o altro, e' buona norma richiamare i percorsi completi
5090 sia dei comandi che dei file:</p>
5091 <pre class="literal-block">
5092 /sbin/iptables-restore /root/firewall/basic_fw
5097 <div class="section" id="esempi">
5098 <h2><a class="toc-backref" href=
5099 "#id111">9.10 Esempi</a></h2>
5101 <p>Seguono alcuni esempi sull'uso di iptables, lo scenario
5102 e' un computer con un paio di schede di rete fisiche una
5103 delle quali collegata alla rete internet l'altra a una rete
5104 privata per la LAN interna.</p>
5107 <ol class="arabic simple">
5108 <li><tt class="docutils literal"><span class=
5109 "pre">eth0</span></tt> scheda di rete principale sulla
5110 rete privata interna 192.168.0.0/24</li>
5112 <li><tt class="docutils literal"><span class=
5113 "pre">eth1</span></tt> scheda di rete secondaria per la
5114 connessione ad internet</li>
5116 <li><tt class="docutils literal"><span class=
5117 "pre">ppp0</span></tt> punto-a-punto per una
5118 connessione ad internet</li>
5122 <div class="section" id="bloccare-i-ping-dall-esterno">
5123 <h3><a class="toc-backref" href=
5124 "#id112">9.10.1 Bloccare i ping
5125 dall'esterno</a></h3>
5127 <p>Spesso gli script che attaccano
5128 <em>automaticamente</em> le varie reti provano a fare un
5129 ping per verificare quali IP sono on-line: bloccare il
5130 traffico <tt class="docutils literal"><span class=
5131 "pre">ICMP</span></tt> in ingresso puo' aiutare ad
5132 evitare parte di questi attacchi:</p>
5133 <pre class="literal-block">
5134 iptables -A INPUT -i ppp0 -p ICMP -j DROP
5138 <div class="section" id="masquerading-snat">
5139 <h3><a class="toc-backref" href=
5140 "#id113">9.10.2 Masquerading
5143 <dl class="docutils">
5144 <dt>Per attivare la network address translation (in
5145 questo caso un SNAT) per la rete locale privata
5146 sull'indirizzo ip del <em>modem</em>::</dt>
5148 <dd>iptables -A POSTROUTING -s
5149 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE</dd>
5152 <p>Il <em>Masquerading</em> a differenza dello
5153 <em>SNAT</em> puro (<tt class=
5154 "docutils literal"><span class="pre">-j</span>
5155 <span class="pre">SNAT</span> <span class=
5156 "pre">--to-source</span> <span class=
5157 "pre">proprio_ip_pubblico</span> <span class=
5158 "pre">)</span> <span class="pre">legge</span>
5159 <span class="pre">l'indirizzo</span> <span class=
5160 "pre">ip</span> <span class="pre">del</span> <span class=
5161 "pre">device</span> <span class="pre">``ppp0</span></tt>.
5162 In questo modo se l'IP cambia automaticamente si aggiorna
5163 anche il source natting. Se avete un indirizzo IP statico
5164 assegnato al vostro gateway potete invece usare lo SNAT
5167 <dl class="docutils">
5168 <dt>Altri esempi::</dt>
5171 <p class="first">## Change source addresses to
5172 1.2.3.4. # iptables -t nat -A POSTROUTING -o eth0 -j
5173 SNAT --to 1.2.3.4</p>
5175 <p>## Change source addresses to 1.2.3.4, 1.2.3.5 or
5176 1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j
5177 SNAT --to 1.2.3.4-1.2.3.6</p>
5179 <p class="last">## Change source addresses to
5180 1.2.3.4, ports 1-1023 # iptables -t nat -A
5181 POSTROUTING -p tcp -o eth0 -j SNAT --to
5187 <div class="section" id="brute-force">
5188 <h3><a class="toc-backref" href=
5189 "#id114">9.10.3 Brute force</a></h3>
5191 <dl class="docutils">
5192 <dt>Per limitare attacchi di tipo brute force su
5196 <p class="first">iptables -A INPUT -i ppp0 -p tcp -m
5197 tcp --dport 22 -m state --state NEW -m recent
5198 --update --seconds 3000 --hitcount 4 --name DEFAULT
5199 --rsource -j DROP</p>
5201 <p class="last">iptables -A INPUT -i ppp0 -p tcp -m
5202 tcp --dport 22 -m state --state NEW -m recent --set
5203 --name DEFAULT --rsource</p>
5210 <div class="section" id="note">
5211 <h1><a class="toc-backref" href=
5212 "#id115">10 NOTE</a></h1>
5214 <dl class="docutils">
5218 <ul class="first last simple">
5219 <li>altri esempi commenti su una zona</li>
5221 <li>esempi di una zona PTR?</li>
5223 <li>dns secondari</li>
5230 <p>sintassi: in <tt class="docutils literal"><span class=
5231 "pre">monospace</span></tt> :</p>
5234 <li>nomi di files</li>