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 6 November 2007), 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
625 <a class="reference internal" href=
626 "#aggiornamento-dinamico-nsupdate" id="id71" name=
627 "id71">6.4 Aggiornamento dinamico:
630 <ul class="auto-toc">
631 <li><a class="reference internal" href=
632 "#configurazione-client-nsupdate" id="id72" name=
633 "id72">6.4.1 Configurazione client
636 <li><a class="reference internal" href=
637 "#configurazione-server-riconoscimento-chiave" id=
639 "id73">6.4.2 Configurazione
640 server: riconoscimento chiave</a></li>
642 <li><a class="reference internal" href=
643 "#server-gestione-dell-intera-zona" id="id74" name=
644 "id74">6.4.3 Server: gestione
645 dell'intera zona</a></li>
649 <li><a class="reference internal" href=
650 "#link-suggeriti" id="id75" name=
651 "id75">6.5 Link suggeriti:</a></li>
656 <a class="reference internal" href="#samba" id="id76"
657 name="id76">7 Samba</a>
659 <ul class="auto-toc">
660 <li><a class="reference internal" href="#pacchetti" id=
662 "id77">7.1 Pacchetti</a></li>
664 <li><a class="reference internal" href=
665 "#passwords-e-autenticazione" id="id78" name=
666 "id78">7.2 Passwords e
667 autenticazione</a></li>
669 <li><a class="reference internal" href=
670 "#creazione-utenti" id="id79" name=
671 "id79">7.3 Creazione Utenti</a></li>
674 <a class="reference internal" href=
675 "#creare-la-condivisione" id="id80" name=
676 "id80">7.4 Creare la
679 <ul class="auto-toc">
680 <li><a class="reference internal" href=
681 "#sicurezza-permessi-di-esecuzione-sul-server" id=
683 "id81">7.4.1 Sicurezza: permessi
684 di esecuzione sul server</a></li>
689 <a class="reference internal" href=
690 "#configurazione-dell-applicativo-samba-vero-e-proprio"
692 "id82">7.5 Configurazione
693 dell'applicativo Samba vero e proprio.</a>
695 <ul class="auto-toc">
696 <li><a class="reference internal" href=
697 "#creazione-di-un-gruppo" id="id83" name=
698 "id83">7.5.1 Creazione di un
703 <li><a class="reference internal" href=
704 "#testare-il-servizio" id="id84" name=
705 "id84">7.6 Testare il
711 <a class="reference internal" href=
712 "#server-di-posta-postfix" id="id85" name=
713 "id85">8 Server di posta: Postfix</a>
715 <ul class="auto-toc">
717 <a class="reference internal" href=
718 "#test-del-server-smtp" id="id86" name=
719 "id86">8.1 Test del server smtp</a>
721 <ul class="auto-toc">
722 <li><a class="reference internal" href="#swaks" id=
724 "id87">8.1.1 Swaks</a></li>
728 <li><a class="reference internal" href="#imap-e-pop"
729 id="id88" name="id88">8.2 Imap e
733 <a class="reference internal" href=
734 "#client-a-riga-di-comando" id="id89" name=
735 "id89">8.3 Client a riga di
738 <ul class="auto-toc">
739 <li><a class="reference internal" href="#mailx" id=
741 "id90">8.3.1 mailx</a></li>
743 <li><a class="reference internal" href="#mutt" id=
745 "id91">8.3.2 Mutt</a></li>
747 <li><a class="reference internal" href=
748 "#web-client" id="id92" name=
749 "id92">8.3.3 Web client</a></li>
754 <a class="reference internal" href="#graylisting" id=
756 "id93">8.4 Graylisting</a>
758 <ul class="auto-toc">
759 <li><a class="reference internal" href=
760 "#abilitazione-in-postfix" id="id94" name=
761 "id94">8.4.1 Abilitazione in
764 <li><a class="reference internal" href="#test" id=
766 "id95">8.4.2 Test</a></li>
768 <li><a class="reference internal" href=
769 "#statistiche" id="id96" name=
770 "id96">8.4.3 Statistiche</a></li>
777 <a class="reference internal" href="#firewall" id="id97"
778 name="id97">9 Firewall</a>
780 <ul class="auto-toc">
781 <li><a class="reference internal" href="#links" id=
782 "id98" name="id98">9.1 Links</a></li>
784 <li><a class="reference internal" href="#ipfilter" id=
786 "id99">9.2 Ipfilter</a></li>
789 <a class="reference internal" href=
790 "#progettazione-di-un-firewall" id="id100" name=
791 "id100">9.3 Progettazione di un
794 <ul class="auto-toc">
795 <li><a class="reference internal" href=
796 "#collocazione" id="id101" name=
797 "id101">9.3.1 Collocazione</a></li>
799 <li><a class="reference internal" href=
800 "#policy-di-default" id="id102" name=
801 "id102">9.3.2 Policy di
804 <li><a class="reference internal" href="#hardware"
806 "id103">9.3.3 Hardware</a></li>
810 <li><a class="reference internal" href=
811 "#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
812 "id104" name="id104">9.4 Percorso dei
813 pacchetti tra tabelle e catene</a></li>
816 <a class="reference internal" href=
817 "#concetti-di-base" id="id105" name=
818 "id105">9.5 Concetti di base</a>
820 <ul class="auto-toc">
821 <li><a class="reference internal" href=
822 "#tabelle-catene-regole" id="id106" name=
823 "id106">9.5.1 Tabelle, catene,
826 <li><a class="reference internal" href="#match" id=
828 "id107">9.5.2 Match</a></li>
830 <li><a class="reference internal" href="#targets"
832 "id108">9.5.3 Targets</a></li>
836 <li><a class="reference internal" href=
837 "#tabella-filter" id="id109" name=
838 "id109">9.6 Tabella Filter</a></li>
840 <li><a class="reference internal" href=
841 "#flush-automatico-per-macchine-remote" id="id110"
842 name="id110">9.7 Flush automatico per
843 macchine remote</a></li>
845 <li><a class="reference internal" href=
846 "#gestione-regole-rules" id="id111" name=
847 "id111">9.8 Gestione regole
851 <a class="reference internal" href=
852 "#salvataggio-regole" id="id112" name=
853 "id112">9.9 Salvataggio regole</a>
855 <ul class="auto-toc">
856 <li><a class="reference internal" href=
857 "#iptables-save" id="id113" name=
858 "id113">9.9.1 Iptables-save</a></li>
860 <li><a class="reference internal" href=
861 "#iptables-restore" id="id114" name=
862 "id114">9.9.2 Iptables-restore</a></li>
867 <a class="reference internal" href="#esempi" id=
868 "id115" name="id115">9.10 Esempi</a>
870 <ul class="auto-toc">
871 <li><a class="reference internal" href=
872 "#bloccare-i-ping-dall-esterno" id="id116" name=
873 "id116">9.10.1 Bloccare i ping
874 dall'esterno</a></li>
876 <li><a class="reference internal" href=
877 "#masquerading-snat" id="id117" name=
878 "id117">9.10.2 Masquerading
881 <li><a class="reference internal" href=
882 "#brute-force" id="id118" name=
883 "id118">9.10.3 Brute
890 <li><a class="reference internal" href="#note" id="id119"
891 name="id119">10 NOTE</a></li>
895 <p>Generato con: <a class="reference external" href=
896 "http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
898 <div class="section" id="configurazione-sistema">
899 <h1><a class="toc-backref" href=
900 "#id7">1 Configurazione sistema</a></h1>
902 <div class="section" id="solo-per-uso-interno">
903 <h2><a class="toc-backref" href=
904 "#id8">1.1 Solo per uso interno</a></h2>
906 <p>Impostazioni di base per la configurazione del sistema
907 operativo e della rete nel laboratorio 208 facente parte
908 della rete piffa.net .</p>
910 <p>Sono qui riportati i parametri della rete locale per
911 comodita' degli studenti, gli altri lettori possono
912 considerarli come riferimento per comprendere i valori
913 espressi nei vari file di configurazione. Ad esempio:
914 quando leggerete <tt class="docutils literal"><span class=
915 "pre">10.10.208.254:3128</span></tt> saprete che si tratta
916 del nostro <em>proxy http</em>, stara' quindi a voi
917 sostituire i dati con gli equivalenti <em>IP</em> della
921 <div class="section" id="rete">
922 <h2><a class="toc-backref" href=
923 "#id9">1.2 Rete</a></h2>
925 <p>Parametri della rete attualmente in uso:</p>
927 <table border="1" class="docutils">
935 <td colspan="2">Parametri della rete</td>
941 <td>10.10.208.0/24</td>
947 <td>255.255.255.0</td>
953 <td>10.10.208.255</td>
959 <td>10.10.208.254</td>
965 <td>10.10.208.254</td>
970 <p>Dal server locale degli studeti,
971 <strong>Bender</strong>, corrispondente all'IP <tt class=
972 "docutils literal"><span class=
973 "pre">10.10.208.248</span></tt>, vengono erogati i servizi
974 DHCP, DNS, gateway (con NAT), proxy http e mirror della
975 distribuzione Debian ( <a class="reference external" href=
976 "http://debian.piffa.net">http://debian.piffa.net</a>).
977 Altri servizi in esecuzione sul server:</p>
980 <li>Rsync server e altri software di aggiornamento /
981 installazione di massa</li>
983 <li>Server imap / pop3 / webmail / smtp</li>
985 <li>Server ssh per i test degli studenti</li>
987 <li>File server Samba, NFS e controller di qualsiasi
988 altro FS distribuito</li>
990 <li>Print server per la gestione delle stampanti</li>
994 <li>Mirror locale delle *.iso dei sistemi operativi e dei
995 vari software usati durante le lezioni</li>
997 <li>Spazi web con PHP, MySQL, Postgresql (altri DB o
998 framework vengono attivati a seconda dei corsi
1002 <p>Durante il corso delle lezioni e' opportuno che le
1003 macchine degli studenti si appoggino al server Bender
1004 (ottetto finale <tt class="docutils literal"><span class=
1005 "pre">248</span></tt>), nel caso questo non fosse
1006 raggiungibile (ad esempio per permettere impostazioni di
1007 DHCP / routing diverse) sara' comunque disponibile il
1008 <tt class="docutils literal"><span class=
1009 "pre">10.10.208.254</span></tt> come gateway | DNS per la
1010 rete <tt class="docutils literal"><span class=
1011 "pre">10.10.208.10</span></tt>.</p>
1013 <p><strong>Non e' piu' possibile</strong> raggiungere
1014 Bender tramite l'IP pubblico <tt class=
1015 "docutils literal"><span class=
1016 "pre">212.22.136.248</span></tt> o <em>qualsiasi altro
1017 ip</em> della classe <tt class=
1018 "docutils literal"><span class="pre">C</span> <span class=
1019 "pre">212.22.136.0/24</span></tt> precedentemente
1022 <p>Il computer del docente con il server VNC e' sempre
1023 configurato con l'ottetto finale: <tt class=
1024 "docutils literal"><span class="pre">177</span></tt> della
1025 rete utilizzata durante le lezioni (quindi generalmente la
1026 VNC sara' disponibile sul <tt class=
1027 "docutils literal"><span class=
1028 "pre">10.10.208.177:1</span></tt>.</p>
1030 <p>Gli studenti sono pregati di non impedire l'accesso SSH
1031 alla propria macchina dal computer del docente, e non
1032 modificare la password dell'utente <tt class=
1033 "docutils literal"><span class="pre">root</span></tt> del
1034 sistema operativo <em>pre-istallato</em> (ad es:
1035 <em>Diurno</em>).</p>
1037 <div class="section" id="interfaces">
1038 <h3><a class="toc-backref" href=
1039 "#id10">1.2.1 interfaces</a></h3>
1041 <p>Segue un esempio del file di configurazione della
1042 scheda di rete con configurazione statica:</p>
1044 <p>/etc/network/interfaces:</p>
1045 <pre class="literal-block">
1046 # /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)
1048 # The loopback interface
1049 iface lo inet loopback
1051 # La prima scheda di rete (se si chiama eth0)
1052 iface etho inet static
1054 # iface etho inet dhcp
1055 address 10.10.208.101
1056 netmask 255.255.255.0
1058 broadcast 10.10.208.255
1059 gateway 10.10.208.254
1061 # Quali interfaccie devono partire automaticamente:
1065 <p>Controllare il nome della propria scheda di rete: a
1066 volte <em>udev</em> rinomina la prima scheda a <tt class=
1067 "docutils literal"><span class="pre">eth1</span></tt>,
1068 oppure potreste avere piu' di una scheda di rete (anche
1069 un'interfaccia <em>firewire</em> puo' essere
1070 automaticamente abilitata come scheda di rete).</p>
1072 <p>Se si usano <em>schede di rete virtuali</em> ( eth0:1
1073 , eth0:1 , ...) ricordarsi che queste dipendono dalla
1074 scheda fisica a cui sono associate: abbattere con
1075 <tt class="docutils literal"><span class=
1076 "pre">ifconfig</span> <span class="pre">down</span>
1077 <span class="pre">eth0</span></tt> la scheda principale
1078 fara' cadere anche queste. Tornando ad attivare la scada
1079 principale con <tt class="docutils literal"><span class=
1080 "pre">ifconfig</span> <span class="pre">eth0</span>
1081 <span class="pre">up</span></tt> la virtuale tornera'
1082 attiva: nel caso voleste disabilitarla dovrete quindi
1083 sempre abbattere manualmente la scheda virtuale
1084 <em>prima</em> della scheda reale.</p>
1086 <p>I DNS vanno indicati nel file <tt class=
1087 "docutils literal"><span class=
1088 "pre">/etc/resolv.conf</span></tt> , la cui sintassi e'
1089 spiegata al punto 4.6 . Come DNS si <em>deve</em> usare
1090 il server Bender, alcuni parametri dei software di
1091 installazione, risoluzione dei mirror, vengono
1092 opportunamente modificatia da questo DNS.</p>
1096 <div class="section" id="bash-completion">
1097 <h2><a class="toc-backref" href=
1098 "#id11">1.3 Bash completion</a></h2>
1100 <p>Il completamento automatico della shell (che si attiva
1101 premendo il tasto tab una o due volte mentre si sta
1102 scrivendo un termine) permette di comporre automaticamente
1103 i nomi dei comandi e i percorsi dei file, sopratutto la
1104 composizione automatica dei percorsi dei file e' di grande
1107 <p>Bash_completion permette di integrare il completamento
1108 automatico con i nomi dei pacchetti e oggetti dei comandi:
1109 ad es. volendo digitare <tt class=
1110 "docutils literal"><span class="pre">apt-get</span>
1111 <span class="pre">inst[TAB]</span> <span class=
1112 "pre">xtigh[TAB]</span></tt> ora verra' completato
1113 automaticamente sia la parola <tt class=
1114 "docutils literal"><span class="pre">install</span></tt>
1115 che il nome del pacchetto <tt class=
1116 "docutils literal"><span class=
1117 "pre">xtightvncviewer</span></tt>.</p>
1119 <p>Abilitare /etc/bash_completion nel file <tt class=
1120 "docutils literal"><span class=
1121 "pre">/etc/bash.bashrc</span></tt> oppure includerlo nel
1122 proprio <tt class="docutils literal"><span class=
1123 "pre">~/.bashrc</span></tt> (che sarebbe il file
1124 <em>nascosto</em>, quindi con un punto all'inizio del nome
1125 del file, di configurazione della shell bash per ogni
1126 utente, presente nella propria <em>home
1127 directory</em>):</p>
1128 <pre class="literal-block">
1129 echo ". /etc/bash_completion" >> ~/.bashrc
1132 <p>Esempio di ~/.bahsrc</p>
1133 <pre class="literal-block">
1134 # ~/.bashrc: executed by bash(1) for non-login shells.
1136 export PS1='\h:\w\$ '
1139 # De-commentare le seguenti righe per abilitare la colorazione dei
1141 export LS_OPTIONS='--color=auto'
1143 alias ls='ls $LS_OPTIONS'
1144 alias ll='ls $LS_OPTIONS -l'
1145 alias l='ls $LS_OPTIONS -lA'
1147 # Abilitare i seguenti alias per impostare la conferma per cancellare file
1152 # questo abilita bash completion
1153 . /etc/bash_completion
1156 <p>Il file <tt class="docutils literal"><span class=
1157 "pre">/etc/bash_completion</span></tt> deve essere presente
1158 nel sistema, in caso contrario installare il pacchetto:
1159 <tt class="docutils literal"><span class=
1160 "pre">bash-completion</span></tt>. Generalmente l'utente
1161 <tt class="docutils literal"><span class=
1162 "pre">root</span></tt> ha un file <tt class=
1163 "docutils literal"><span class="pre">.bashrc</span></tt>
1164 preimpostato analogo a quello citato sopra, a differenza
1165 dei normali utenti di sistema.</p>
1170 <li><a class="reference external" href=
1171 "http://www.debian-administration.org/articles/316">An
1172 introduction to bash completion</a></li>
1174 <li><a class="reference external" href=
1175 "http://www.caliban.org/bash/">Working more productively
1176 with bash 2.x/3.x</a></li>
1178 <li>UNIX / Linux Shell Scripting Tutorial: <a class=
1179 "reference external" href=
1180 "http://steve-parker.org/sh/sh.shtml">http://steve-parker.org/sh/sh.shtml</a></li>
1184 <div class="section" id="vim">
1185 <h2><a class="toc-backref" href=
1186 "#id12">1.4 Vim</a></h2>
1188 <p>Vim e' l'editor di testo preferito dai sistemisti,
1189 quindi sara' conveniente impostare fin da subito alcune
1190 impostazioni per renderlo piu' comodo.</p>
1192 <p>Assicurarsi che sia installata nel sistema la versione
1193 completa dell'editor installando il pacchetto <tt class=
1194 "docutils literal"><span class="pre">vim</span></tt>:</p>
1195 <pre class="literal-block">
1196 # apt-get install vim
1199 <p>Modificare poi il file di configurazione generale
1200 <tt class="docutils literal"><span class=
1201 "pre">/etc/vim/vimrc</span></tt></p>
1202 <pre class="literal-block">
1203 " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
1204 " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
1205 " you can find below. If you wish to change any of those settings, you should
1206 " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
1207 " everytime an upgrade of the vim packages is performed. It is recommended to
1208 " make changes after sourcing debian.vim since it alters the value of the
1209 " 'compatible' option.
1211 " This line should not be removed as it ensures that various options are
1212 " properly set to work with the Vim-related packages available in Debian.
1215 " Uncomment the next line to make Vim more Vi-compatible
1216 " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
1217 " options, so any other options should be set AFTER setting 'compatible'.
1220 " Vim5 and later versions support syntax highlighting. Uncommenting the next
1221 " line enables syntax highlighting by default.
1224 " If using a dark background within the editing area and syntax highlighting
1225 " turn on this option as well.
1228 " Uncomment the following to have Vim jump to the last position when
1232 au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
1233 \| exe "normal! g'\"" | endif
1236 " Uncomment the following to have Vim load indentation rules and plugins
1237 " according to the detected filetype.
1238 " This is not recommanded if you often copy and paste into vim,
1239 " as it messes all the indentation.
1241 filetype plugin indent on
1244 " This goes for comments folding: use co to expnad and zc to compress,
1245 " zi to toggle on/off
1247 set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
1249 " The following are commented out as they cause vim to behave a lot
1250 " differently from regular Vi. They are highly recommended though.
1251 set showcmd " Show (partial) command in status line.
1252 "set showmatch " Show matching brackets.
1253 # Ignorecase is quite userfull
1254 set ignorecase " Do case insensitive matching
1255 "set smartcase " Do smart case matching
1256 "set incsearch " Incremental search
1257 set autowrite " Automatically save before commands like :next and :make
1258 "set hidden " Hide buffers when they are abandoned
1259 "set mouse=a " Enable mouse usage (all modes) in terminals
1261 " Source a global configuration file if available
1262 " XXX Deprecated, please move your changes here in /etc/vim/vimrc
1263 if filereadable("/etc/vim/vimrc.local")
1264 source /etc/vim/vimrc.local
1268 <p>I principianti faranno bene ad esercitarsi con
1269 <tt class="docutils literal"><span class=
1270 "pre">vimtutor</span> <span class="pre">it</span></tt>.</p>
1272 <p>Altri link per VIM:</p>
1275 <li>Vim Introduction and Tutorial: <a class=
1276 "reference external" href=
1277 "http://blog.interlinked.org/tutorials/vim_tutorial.html">
1278 http://blog.interlinked.org/tutorials/vim_tutorial.html</a></li>
1280 <li><a class="reference external" href=
1281 "http://blog.smr.co.in/category/vim/">http://blog.smr.co.in/category/vim/</a></li>
1283 <li><a class="reference external" href=
1284 "http://vimdoc.sourceforge.net/">http://vimdoc.sourceforge.net/</a></li>
1288 <div class="section" id="vnc">
1289 <h2><a class="toc-backref" href=
1290 "#id13">1.5 VNC</a></h2>
1292 <p>I Virtual Network Computing (o VNC) sono software di
1293 controllo remoto e servono per amministrare il proprio
1294 computer a distanza o visualizzare la sessione di lavoro di
1295 un altro computer sul proprio a scopo didattico.</p>
1297 <p>Scaricare il pacchetto <tt class=
1298 "docutils literal"><span class=
1299 "pre">xtightvncviewer</span></tt> e lo script <tt class=
1300 "docutils literal"><span class="pre">guarda.sh</span></tt>
1301 in una posizione (collocazione nel <em>path</em> degli
1302 utenti, es <tt class="docutils literal"><span class=
1303 "pre">echo</span> <span class="pre">$PATH</span></tt> per
1304 visualizzare l'attuale path ) comoda per gli utenti ( in
1305 genere <tt class="docutils literal"><span class=
1306 "pre">/bin</span></tt> ), rendere eseguibile lo script.</p>
1309 <pre class="literal-block">
1312 wget http://bender/guarda.sh
1317 <p>Per eseguire lo script digitare semplicemente <tt class=
1318 "docutils literal"><span class="pre">guarda.sh</span></tt>,
1319 oppure creare un link / collegamento sul Desktop allo
1320 script <tt class="docutils literal"><span class=
1321 "pre">/bin/guarda.sh</span></tt>.</p>
1323 <p>Le impostazioni del server VNC sono:</p>
1325 <table border="1" class="docutils">
1331 <thead valign="bottom">
1333 <th class="head">Parametro</th>
1335 <th class="head">Valore</th>
1339 <tbody valign="top">
1343 <td>10.10.208.177:1</td>
1347 <td>Server grafico</td>
1360 <p>Si noti che non e' possibile lanciare un applicativo sul
1361 server grafico di un utente da una shell in cui si sta
1362 lavorando come altro utente, anche se root. E' quindi
1363 necessario essere l'utente di sistema che si e' loggato
1364 inizialmente nella sessione grafica per poter lanciare lo
1365 script guarda.sh da una shell.</p>
1367 <p>Controllare con <tt class=
1368 "docutils literal"><span class="pre">whoami</span></tt> di
1369 essere l'utente normale (es <tt class=
1370 "docutils literal"><span class="pre">utente</span>
1371 <span class="pre">|</span> <span class=
1372 "pre">studente</span> <span class="pre">|</span>
1373 <span class="pre">proprio</span> <span class=
1374 "pre">nome</span></tt> ), in caso si sia assunta una altra
1375 <tt class="docutils literal"><span class=
1376 "pre">id</span></tt> si apra un altra shell o si esca da
1377 quella attuale con <tt class=
1378 "docutils literal"><span class="pre">exit</span></tt> .</p>
1381 <div class="section" id="lista-dei-pacchetti-di-base">
1382 <h2><a class="toc-backref" href=
1383 "#id14">1.6 Lista dei pacchetti di
1386 <p>I pacchetti installati generalmente <a class=
1387 "footnote-reference" href="#id2" id="id1" name=
1388 "id1">[1]</a> per poter seguire le lezioni sono:</p>
1389 <pre class="literal-block">
1390 kde-core kdm kde-i18n-it xorg vim less xtightvncviewer
1393 <table class="docutils footnote" frame="void" id="id2"
1400 <tbody valign="top">
1402 <td class="label"><a class="fn-backref" href=
1405 <td><tt class="docutils literal"><span class=
1406 "pre">kde-core</span></tt> e' piu' leggero del
1407 pacchetto <tt class="docutils literal"><span class=
1408 "pre">kde</span></tt>. Esiste un equivalente
1409 <tt class="docutils literal"><span class=
1410 "pre">gnome-core</span></tt> per chi preferisce
1411 Gnome, nel caso si potrebbe installare il log-in
1412 manager <tt class="docutils literal"><span class=
1413 "pre">gdm</span></tt> al posto di <tt class=
1414 "docutils literal"><span class=
1415 "pre">kdm</span></tt>.</td>
1421 <div class="section" id="apt-configurazione">
1422 <h2><a class="toc-backref" href=
1423 "#id15">1.7 Apt configurazione</a></h2>
1425 <p>Vediamo i due file principali di apt:</p>
1428 <li><tt class="docutils literal"><span class=
1429 "pre">/etc/apt/sources.list</span></tt></li>
1431 <li><tt class="docutils literal"><span class=
1432 "pre">/etc/apt/apt.conf</span></tt></li>
1435 <div class="section" id="sources-list">
1436 <h3><a class="toc-backref" href=
1437 "#id16">1.7.1 sources.list</a></h3>
1439 <p>Questo file contiene i sorgenti da cui <em>apt</em>
1440 preleva i pacchetti da installare tramite <em>dpkg</em>,
1441 vengono quindi precisati i metodi (ad es. http / ftp /
1442 cdrom / file), la release che si vuole tracciare (es
1443 <tt class="docutils literal"><span class=
1444 "pre">stable,</span> <span class="pre">testing,</span>
1445 <span class="pre">unstable</span></tt> oppure i
1446 corrispondenti release name es: <tt class=
1447 "docutils literal"><span class="pre">Lenny,</span>
1448 <span class="pre">Squeeze,</span> <span class=
1449 "pre">Sid</span></tt>), i rami di interesse (es:
1450 <tt class="docutils literal"><span class=
1451 "pre">main</span></tt> che e' l'archivio principale,
1452 <tt class="docutils literal"><span class=
1453 "pre">non-free</span></tt> per il software non libero,
1454 <tt class="docutils literal"><span class=
1455 "pre">contrib</span></tt> per i pacchetti non realizzati
1456 dai manutentori ufficiali).</p>
1458 <p>Gli archivi sono generalmente:</p>
1461 <li><tt class="docutils literal"><span class=
1462 "pre">deb</span></tt> per pacchetti Debian binari,
1463 pronti per l'installazione.</li>
1465 <li><tt class="docutils literal"><span class=
1466 "pre">deb-src</span></tt> per i pacchetti sorgenti
1467 (quindi da compilare, come il kernel) degli stessi
1468 pacchetti binari. In genere se non compilate spesso
1469 potete evitare di tracciare i sorgenti per risparmiare
1473 <p><tt class="docutils literal"><span class=
1474 "pre">/etc/apt/sources.list</span></tt></p>
1475 <pre class="literal-block">
1476 # esempio di accesso a un CDROM:
1477 # cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
1479 # Archivio principale debian via http su piffa.net,
1480 # non funziona al di fuori dell'aula dei corsi
1481 deb http://debian.piffa.net/debian/ lenny main
1482 # Sono disponibili anche i rami non-free contrib
1483 # deb http://debian.piffa.net/debian/ lenny non-free contrib
1484 # Sono disponibili anche le release unstable e testing
1485 # deb http://debian.piffa.net/debian/ testing main non-free contrib
1486 # deb http://debian.piffa.net/debian/ sid main non-free contrib
1488 # Mirror da kernel.org europa da usare a casa:
1489 deb http://mirrors.eu.kernel.org/debian/ lenny main
1491 # Security dal sito principale
1492 deb http://security.debian.org/ lenny/updates main
1493 deb-src http://security.debian.org/ lenny/updates main
1495 # Debian volatile per le cose soggette a cambiamenti non legati
1496 # a dinamiche di sicurezza
1497 deb http://volatile.debian.org/debian-volatile Lenny/volatile main
1498 deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
1500 # Esempio di accesso a un file system locale contenente i pacchetti:
1501 # Potete scaricarei in aula con debmirror da debian.piffa.net
1502 # un mirror locale da usare poi a casa anche senza internet
1503 # deb file:/mnt/mirror sid main non-free contrib
1507 <div class="section" id="etc-apt-apt-conf">
1508 <h3><a class="toc-backref" href=
1509 "#id17">1.7.2 /etc/apt/apt.conf</a></h3>
1511 <p>Questo file contiene le opzioni di apt, come ad
1512 esempio il proxy:</p>
1513 <pre class="literal-block">
1514 Acquire::http::Proxy "http://10.10.208.248:3128";
1517 <p>Si tenga conto che se si imposta un proxy per apt sul
1518 proprio portatile e tornati a casa propria si vuole
1519 scaricare nuovi pacchetti si dovra' disabilitare il proxy
1520 commentando la riga con ";" (''punto-e-virgola''):</p>
1522 <div class="system-message">
1523 <p class="system-message-title">System Message:
1524 WARNING/2 (<tt class="docutils">servizi.txt</tt>, line
1525 326)</p>Literal block expected; none found.
1528 <p>E' consigliabile impostare il proxy per apt anche in
1529 presenza di un proxy-http <em>trasparente</em></p>
1534 <div class="section" id="squid">
1535 <h1><a class="toc-backref" href=
1536 "#id18">2 Squid</a></h1>
1538 <p>Squid e' un proxy cache http (ma anche FTP e https)
1539 robusto e strutturato, puo' essere usato sia in reti
1540 relativamente semplici che in scenari piu' complessi grazie
1541 alla possibilita' di gestirne in modo granulare le risorse.
1542 Si partira' dalle configurazioni piu' semplici per la
1543 semplice <em>condivisione della navigazione</em> internet,
1544 per poi poter configurare la gestione degli accessi, il
1545 filtraggio dei contenuti (Squid e' una applicazione che si
1546 muove nel 4' livello del modello TCP/IP a differenza di un
1547 <em>ipfilter</em> limitato al 2'), nel bilanciamento del
1548 carico tra piu' server proxy.</p>
1550 <dl class="docutils">
1551 <dt>Inoltre Squid svolge la funzione di
1552 <em>anonymizer</em>:</dt>
1554 <dd>nasconde i client http alla rete internet: e' solo il
1555 server proxy a risultare nei log dei server web frequentati
1556 dagli utenti di Squid. Glu utenti non sono percepiti ed
1557 esposti all'esterno.</dd>
1560 <p>Cosa a volte sottovalutata, Squid permette la navigazione
1561 web a una rete basata su <em>indirizzi IP privati</em> (es
1562 una 192.168.0.0/24). E se la rete privata deve <em>solo
1563 navigare</em> in internet, non serve dover introdurre nella
1564 rete un <em>NAT</em> (si veda la sezione sui firewall) per
1565 condividere la connessione, basta il solo Squid. Per altro
1566 non servira' neanche un servizio DNS utilizzabile dai clients
1567 dato che <em>sara' il solo Squid a risolvere i nomi di
1568 dominio</em> per i suoi client http.</p>
1570 <p>Squid ascolta di default sulla porta 3128, per impostare
1571 <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
1572 "docutils literal"><span class=
1573 "pre">/etc/apt/apt.conf</span></tt></p>
1574 <pre class="literal-block">
1575 Acquire::http::Proxy "10.10.208.254:3128";
1578 <p>Per installare Squid si usino i pacchetti:</p>
1579 <pre class="literal-block">
1583 <div class="section" id="configurazione-squid-conf">
1584 <h2><a class="toc-backref" href=
1585 "#id19">2.1 Configurazione:
1588 <p>Segue un estratto delle direttive principali viste in
1589 aula presenti nel file di configurazione <tt class=
1590 "docutils literal"><span class=
1591 "pre">/etc/squid3/squid.conf</span></tt> .</p>
1593 <div class="section" id="cache-dir">
1594 <h3><a class="toc-backref" href=
1595 "#id20">2.1.1 Cache_dir</a></h3>
1597 <p>Cache dir serve per impostare dimensione e percorso
1598 della cache creata sul supporto di storaggio. Essendo la
1599 dimensione di default della cache pari a <tt class=
1600 "docutils literal"><span class="pre">~100</span>
1601 <span class="pre">MB</span></tt> e' altamente
1602 consigliabili aumentare questo parametro se si vuole
1603 poter utilizzare la funzione di <em>cache</em> http del
1606 <p>La dimensione ovviamente dipendera' dallo spazio
1607 disponibile, dimensioni tipiche e massime degli oggetti
1608 che si vuole tenere in cache (un solo file <em>.iso e'
1609 circa ``700 MB``, il pacchetto *Openoffice.org</em> circa
1610 <tt class="docutils literal"><span class="pre">150</span>
1611 <span class="pre">MB</span></tt>, un pacchetto debian
1612 circa <tt class="docutils literal"><span class=
1613 "pre">20</span> <span class="pre">MB</span></tt>), numero
1616 <p>Si presti poi attenzione alla natura dei dati che
1617 saranno salvati nella cache: sono tutti dati facilmente
1618 sostituibili (gli originali sono <em>on-line</em>) la cui
1619 perdita non arreca danni permanenti. Questo rende la
1620 cache di Squid un possibile candidato ad un <em>RAID
1621 stirpe</em> (livello 0), con vantaggi sia per le
1622 prestazioni (e la velocita' di navigazione e' uno dei
1623 motivi per cui si installa Squid) che per l'utilizzo
1624 estensivo dello spazio di storaggio. Questo fino al
1625 momento in cui per voi non sia piu' importante
1626 <em>garantire la disponibilita' del servizio</em> (se il
1627 RAID stripe dovesse rompersi gli utenti non potrebbero
1628 piu' navigare, cosa che per natura dello stripe e'
1629 maggiormente probabile rispetto ad un <em>mirror</em> o a
1630 un filesytem <em>normale</em>) con un RAID mirror o
1633 <p>Altra considerazione: i dati del proxy vengono slavati
1634 sul filesytem del server dietro richiesta di utenti
1635 esterni talvolta sconosciuti. Come per i servizi di file
1636 sharing o per la posta elettronica non c'e' motivo che il
1637 filesystem su cui sono ospitati questi dati abbia i
1638 privilegi di eseguibilita' o suid (in genere si puo'
1639 anche usare <em>noatime</em> per renderlo piu' veloce,
1640 che si usi o meno il journal dipende dalle preferenze:
1641 affidabilita' oppure prestazioni):</p>
1644 <pre class="literal-block">
1646 # Filesystem per Squid http cache
1647 /dev/md3/ /var/spool/squid/ ext3,noexec,nosuid,noatime 0 3
1650 <p>Ora possiamo impostare la cache direttamente nel file
1651 <tt class="docutils literal"><span class=
1652 "pre">/etc/squid3/squid.conf</span></tt>:</p>
1653 <pre class="literal-block">
1654 #TAG: cache_dir (riga 1628)
1657 # cache_dir Type Directory-Name Fs-specific-data [options]
1659 # You can specify multiple cache_dir lines to spread the
1660 # cache among different disk partitions.
1663 # cache_dir ufs /var/spool/squid3 100 16 256
1664 cache_dir aufs /var/spool/squid3 300 24 256
1668 # directory primo livello
1669 # secondo livello di directory
1672 <p>Se si modifica la struttura del filesytem della cache
1673 di Squid, ad esempio variando il numero delle directory,
1674 puo' essere opportuno rigenerare la struttura della cache
1675 di squid (per lo meno se si <em>aumenta</em> il numero
1676 delle directory di primo o secondo livello). Tipicamente
1677 e' consigliabile cancellare (se si ha <em>ridotto</em> il
1678 numero delle directory) la vecchia cache e poi generare
1679 una nuova struttura. Se si vuole <em>star nel sicuro</em>
1680 ogni volta che si modifica l'impostazione delle directory
1681 <em>si svuoti la vecchia cache e se ne generi una
1683 <pre class="literal-block">
1684 # /etc/init.d/squid3 stop
1685 # rm -r /var/spool/squid3/??
1687 # /etc/init.d/squid3 start
1691 <div class="section" id="tag-maximum-object-size">
1692 <h3><a class="toc-backref" href=
1693 "#id21">2.1.2 TAG:
1694 maximum_object_size</a></h3>
1696 <p>Questa direttiva imposta la dimensione massima degli
1697 oggetti che vengono salvati sul supporto di storaggio,
1698 oggetti di dimensioni superiori saranno comunque
1699 scaricati ma non tenuti in cache.</p>
1701 <p>TAG: maximum_object_size (1760):</p>
1702 <pre class="literal-block">
1703 # TAG: maximum_object_size (1760)
1704 # Objects larger than this size will NOT be saved on disk. The
1705 # value is specified in kilobytes, and the default is 4MB. If
1706 # you wish to get a high BYTES hit ratio, you should probably
1707 # increase this (one 32 MB object hit counts for 3200 10KB
1708 # hits). If you wish to increase speed more than your want to
1709 # save bandwidth you should leave this low.
1711 # NOTE: if using the LFUDA replacement policy you should increase
1712 # this value to maximize the byte hit rate improvement of LFUDA!
1713 # See replacement_policy below for a discussion of this policy.
1716 # maximum_object_size 4096 KB
1717 maximum_object_size 150 MB
1721 <div class="section" id="tag-cache-mem">
1722 <h3><a class="toc-backref" href=
1723 "#id22">2.1.3 TAG: cache_mem</a></h3>
1725 <p><em>Cache_mem</em> imposta quanta memoria RAM venga
1726 utilizzata per la cache di Squid. Questo dipendera' dalla
1727 RAM disponibile sul sistema, e da quanta di questa volete
1728 mettere a disposizione di Squid (altri servizi importanti
1729 girano sulla stessa macchina?). Questo parametro
1730 influisce sulle prestazioni e sul degrado dei supporti di
1731 storaggio (sopratutto se magnetici).</p>
1733 <p>Se si stesse pensando di usare dell'hardware
1734 <em>embedded</em> a basse prestazioni / consumo per
1735 realizzare un server gateway / NAT / Squid si tenga
1736 presente che Squid e' relativamente esoso di risorse:
1737 avra' bisogno di una macchina con <tt class=
1738 "docutils literal"><span class="pre">~25MB</span></tt>
1739 (MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
1740 servire decorosamente una decina di client http su una
1741 rete ethernet 10/100. In questo caso non fate scendere
1742 <tt class="docutils literal"><span class=
1743 "pre">cache_mem</span></tt> sotto i <tt class=
1744 "docutils literal"><span class="pre">2/4</span>
1745 <span class="pre">MB</span></tt> pena un accesso continuo
1746 al supporto di storaggio.</p>
1748 <p>Se invece si disponesse di una macchina dedicata a
1749 Squid con gigabytes di RAM non si esiti a dedicarne buona
1750 parte a <em>cache_mem</em>.</p>
1752 <p>TAG: cache_mem (1566):</p>
1753 <pre class="literal-block">
1754 # 'cache_mem' specifies the ideal amount of memory to be used
1756 # * In-Transit objects
1758 # * Negative-Cached objects
1765 <div class="section" id="tag-minimum-object-size">
1766 <h3><a class="toc-backref" href=
1767 "#id23">2.1.4 TAG:
1768 minimum_object_size</a></h3>
1770 <p>Questo parametro imposta la dimensione minima degli
1771 oggetti salvati nella cache. Settato a <tt class=
1772 "docutils literal"><span class="pre">0</span></tt> o a
1773 valori molto piccoli puo' influire negativamente sulla
1774 deframmentazione del filesytem e consumare un numero
1775 elevato di <em>inode</em> (cosa non piu' importante con
1776 ext4 o altri filesytem).</p>
1778 <p>TAG: minimum_object_size:</p>
1779 <pre class="literal-block">
1780 # TAG: minimum_object_size (bytes)
1781 # Objects smaller than this size will NOT be saved on disk. The
1782 # value is specified in kilobytes, and the default is 0 KB, which
1783 # means there is no minimum.
1786 # minimum_object_size 0 KB
1787 minimum_object_size 0 KB
1792 <div class="section" id=
1793 "negoziazione-degli-accesi-al-servizio">
1794 <h2><a class="toc-backref" href=
1795 "#id24">2.2 Negoziazione degli accesi al
1798 <p>Squid e' uno di quei servizi soggetto a problemi di tipo
1799 <em>open relay</em> , si deve quindi limitare la rete che
1800 puo' accedere al servizio.</p>
1802 <dl class="docutils">
1803 <dt>Open Relay:</dt>
1805 <dd>Un servizio a cui possono accedere tutti
1806 indiscriminatamente. La cosa puo' andare bene per servizi
1807 come i server web, che aspirano per loro natura al
1808 maggior numero possibile di utenti, ma non a servizi come
1809 i proxy http oppure ai server di posta elettronica (che
1810 permetterebbero l'invio di SPAM).</dd>
1813 <p>Generalmente non volete che il vostro proxy http venga
1814 usato da persone sconosciute le quali sostanzialmente
1815 <em>navigherebbero sotto l'identita' del vostro proxy</em>
1816 (probabilmente per visionare materiali che non vorrebbero
1817 fossero ricondotti direttamente a loro, per motivi che sta
1818 a voi prendere in considerazione) consumando traffico e
1819 banda della vostra connessione a internet. Tenere Squid in
1820 modalita' <em>Open relay</em> e' al giorno d'oggi un buon
1821 modo per essere inseriti in una <em>black list</em>.</p>
1823 <p>Per poter limitare gli accessi a Squid dal punto di
1824 vista dell'applicazione (quarto livello TCP/IP) si
1825 identifichera' inizialmente l'entita' <em>rete locale</em>
1826 (es: <tt class="docutils literal"><span class=
1827 "pre">localnet</span></tt>) con una ACL di tipo
1828 <em>src</em> (indirizzi IP sorgenti) indicando la
1829 <em>classe / range di IP</em> della nostra rete.</p>
1832 Dopodiche l'accesso (<tt class=
1833 "docutils literal"><span class=
1834 "pre">http_access</span></tt>) si concedera'
1835 (<em>allow</em>) a questa entita' (es: <tt class=
1836 "docutils literal"><span class=
1837 "pre">localnet</span></tt>) negando chiunque altro.
1840 <p>Per maggiori dettagli sulla sintassi utilizzabile per
1841 esprimere i range di IP: <a class="reference external"
1842 href="http://www.visolve.com/squid/squid24s1/access_controls.php">
1843 http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
1845 <div class="section" id="acl-e-http-access">
1846 <h3><a class="toc-backref" href=
1847 "#id25">2.2.1 ACL e http access</a></h3>
1849 <p>Si proceda a creare una <tt class=
1850 "docutils literal"><span class="pre">ACL</span></tt> di
1851 tipo <tt class="docutils literal"><span class=
1852 "pre">src</span></tt> per identificare la nostra rete
1853 locale, poi si abiliti l'accesso a questa con la
1854 direttiva <tt class="docutils literal"><span class=
1855 "pre">http_access</span></tt>. Tutto quanto non e'
1856 espressamente autorizzato viene poi negato da un
1857 <tt class="docutils literal"><span class=
1858 "pre">http_access</span> <span class="pre">deny</span>
1859 <span class="pre">all</span></tt> finale.</p>
1860 <pre class="literal-block">
1862 # Defining an Access List
1864 # Every access list definition must begin with an aclname and acltype,
1865 # followed by either type-specific arguments or a quoted filename that
1866 # they are read from.
1868 # ***** ACL TYPES AVAILABLE *****
1870 # acl aclname src ip-address/netmask ... # clients IP address
1873 # Example rule allowing access from your local networks.
1874 # Adapt to list your (internal) IP networks from where browsing
1876 #acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
1877 #acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
1878 #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
1880 acl localnet src 10.10.208.0/24
1884 # Allowing or Denying access based on defined access lists
1886 # Access to the HTTP port:
1887 # http_access allow|deny [!]aclname ...
1889 # NOTE on default values:
1891 # If there are no "access" lines present, the default is to deny
1895 # INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
1897 # Example rule allowing access from your local networks.
1898 # Adapt localnet in the ACL section to list your (internal) IP networks
1899 # from where browsing should be allowed
1900 #http_access allow localnet
1901 http_access allow localnet
1906 <div class="section" id="testare-squid">
1907 <h2><a class="toc-backref" href=
1908 "#id26">2.3 Testare Squid</a></h2>
1910 <p>Configurato squid e' fondamentale testarne il corretto
1911 funzionamento per assicurarsi di non aver creato un
1912 <em>open-relay</em>. Per fare dei test significativi serve
1913 utilizzare degli host remoti: ci si connetta via ssh a
1914 questi per poi utilizzare <tt class=
1915 "docutils literal"><span class="pre">wget</span></tt> da
1916 riga di comando.</p>
1918 <div class="section" id="client-wgetrc">
1919 <h3><a class="toc-backref" href=
1920 "#id27">2.3.1 Client: ~/.wgetrc</a></h3>
1922 <p>Nel file <tt class="docutils literal"><span class=
1923 "pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
1924 un file nascosto) si puo' impostare il proxy per wget. Si
1925 utilizzi l'indirizzo IP del server che si vuole testare,
1926 e si seguano i log <tt class=
1927 "docutils literal"><span class=
1928 "pre">/var/log/squid3/access.log</span></tt> sul
1931 <p>Da notare che la prova va' fatta su una macchina della
1932 rete che si vuole testare, non da <em>localhost</em>. Per
1933 altro se si utilizzasse <em>direttamente</em> <tt class=
1934 "docutils literal"><span class=
1935 "pre">localhost</span></tt> non si testerebbe la
1936 <em>ACL</em> predisposta, dato che si si rientrerebbe
1937 nella ACL (pre-configurata di default) <tt class=
1938 "docutils literal"><span class=
1939 "pre">localhost</span></tt>.</p>
1941 <dl class="docutils">
1944 <dd>http_proxy=10.10.208.178:3128</dd>
1947 <p>Si proceda a scaricare dal client scelto con un
1949 <pre class="literal-block">
1950 wget http://www.google.it
1954 <div class="section" id="server-access-log">
1955 <h3><a class="toc-backref" href=
1956 "#id28">2.3.2 Server:
1959 <p>Si puo' controllare il corretto funzionamento del
1960 server seguendo i log di accesso a Squid:</p>
1961 <pre class="literal-block">
1962 # tail -f /var/log/squid3/access.log
1965 <p>In oltre e' possibile configurare diversi
1966 <em>analizzatori di log</em> come <tt class=
1967 "docutils literal"><span class=
1968 "pre">Webalizer</span></tt> per studiare i log di
1974 <div class="section" id="apache">
1975 <h1><a class="toc-backref" href=
1976 "#id29">3 Apache</a></h1>
1978 <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
1979 dato alla piattaforma server Web modulare piu' diffusa (ma
1980 anche al gruppo di lavoro open source che ha creato,
1981 sviluppato e aggiornato il software server), in grado di
1982 operare da sistemi operativi UNIX-Linux e Microsoft.</p>
1984 <p>Un server web e' un processo, e per estensione il computer
1985 su cui e' in esecuzione, che si occupa di fornire, su
1986 richiesta del browser, una pagina web (spesso scritta in
1987 HTML). Le informazioni inviate dal server web viaggiano in
1988 rete trasportate dal protocollo HTTP. L'insieme di server web
1989 da' vita al World Wide Web, uno dei servizi piu' utilizzati
1992 <div class="section" id="pacchetti-da-installare">
1993 <h2><a class="toc-backref" href=
1994 "#id30">3.1 Pacchetti da
1995 installare::</a></h2>
2001 <p>Con la release 2.0 di Apache viene automaticamente resa
2002 disponibile anche la versione SSL (Secure Socket Layer,
2003 connessioni criptate ) del web server.</p>
2006 <div class="section" id="configurazione-di-apache">
2007 <h2><a class="toc-backref" href=
2008 "#id31">3.2 Configurazione di
2011 <p>I file di configurazione di apache si trovano nella
2012 cartella: <tt class="docutils literal"><span class=
2013 "pre">/etc/apache2</span></tt> e sono strutturati come
2014 descritto nel file <tt class=
2015 "docutils literal"><span class="pre">/usr/share/doc/apache2/README.Debian.gz</span></tt>
2016 . Sostanzialmente lo schema e' il seguente:</p>
2018 <dl class="docutils">
2019 <dt>apache2.conf</dt>
2022 <p class="first">File di configurazione principale del
2025 <p class="last">httpd.conf e' il vecchio file di
2026 configurazione di Apache1, presente per motivi di
2027 retrocompatibilita' e' generalmente vuoto.</p>
2032 <dd>In questo file vengono specificate le porte sulle
2033 quali resta in ascolto il server web. Si noti che
2034 utilizzando dei virtual hosts generalmente viene
2035 specificata per questi la porta su cui ascoltare nel file
2036 di configurazione del virtual host, ad es: <tt class=
2037 "docutils literal"><span class=
2038 "pre"><VirtualHost</span> <span class=
2039 "pre">*:80></span></tt></dd>
2041 <dt>sites-available</dt>
2043 <dd>In questa cartella vengono raccolti i file di
2044 configurazione dei virtual host disponibili.</dd>
2046 <dt>sites-enabled</dt>
2048 <dd>In questa cartella sono contenuti dei link simbolici
2049 ai files in ../sites-available : se il link e' presente
2050 in questa cartella il virtual host e' abilitato.</dd>
2052 <dt>mods-available</dt>
2054 <dd>Stesso metodo per i moduli: in questa cartella ci
2055 sono i moduli veri e propri che verranno poi abilitati
2056 grazie all'esistenza di link simbolici nella cartella
2059 <dt>mods-enabled</dt>
2061 <dd>Moduli abilitati, effettivamente caricati.</dd>
2065 <div class="section" id="apache-conf">
2066 <h2><a class="toc-backref" href=
2067 "#id32">3.3 apache.conf</a></h2>
2069 <p>File di configurazione del servizio Apache, contiene le
2070 impostazioni generiche (ad esempio utilizzo della RAM e
2071 risorse di sistema) dell'intero servizio. Nella
2072 configurazione di default per Debian non viene definito un
2073 vero e proprio sito di default ma solo dei virtual
2076 <p>Guardiamo alcune direttive interessanti:</p>
2078 <dl class="docutils">
2081 <dd>Numero di secondi da aspettare prima di chiudere la
2082 connessione con il client. Questo parametro serve a
2083 liberare le risorse di sistema nel caso che un client,
2084 magari a causa di una connessione particolarmente lenta o
2085 instabili, tenga attivo indefinitamente un processo di
2090 <dd>L'estensione keep-alive (http 1.0) congiuntamente
2091 alle connessioni persistenti (http 1.1) permettono al
2092 server di rispondere a piu' richieste dei client mediante
2093 la stessa connessione. Il protocollo http per sua natura
2094 e' senza stato (<em>stateless</em> ), quindi ogni risorsa
2095 richiesta (per pagine web si pensi ad esempio alle
2096 immagini) dal client necessita di una connessione
2097 autonoma. Keep-alive permette di ottimizzare la
2098 connessione anche fino al 50% a seconda delle situazioni
2101 <dt>Server-Pool Size Regulation</dt>
2103 <dd>Questi parametri (StartServers, MinSpareServers, ecc.
2104 Tutti spiegati nel manuale di apache) servono per
2105 attribuire le risorse di sistema disponibili al server
2106 Apache. Tenere questi parametri bassi serve a limitare il
2107 rischio di Denial of Service per il server, nel caso
2108 offra altri servizi. I settagli di default sono come
2109 sempre abbastanza conservativi, se si conta di usare il
2110 proprio Apache per servire un sito web con molti
2111 visitatori sara' necessario aumentare sensibilmente le
2112 impostazioni di base.</dd>
2114 <dt>AccessFileName</dt>
2116 <dd>Il nome del file che viene onorato per modificare le
2117 impostazioni per una singola directory, legato alla
2118 direttiva AllowOverride .</dd>
2122 <div class="section" id="installazione-di-php">
2123 <h2><a class="toc-backref" href=
2124 "#id33">3.4 Installazione di PHP</a></h2>
2126 <p>Pacchetti da installare: <tt class=
2127 "docutils literal"><span class="pre">php5</span>
2128 <span class="pre">php-pear</span></tt></p>
2130 <div class="section" id="test-del-modulo-php">
2131 <h3><a class="toc-backref" href=
2132 "#id34">3.4.1 Test del modulo
2135 <p>Creare nella cartella <tt class=
2136 "docutils literal"><span class="pre">/var/www</span></tt>
2137 (o altra cartella visibile) un file con estensione *.php
2138 (es <tt class="docutils literal"><span class=
2139 "pre">/var/www/info.php</span></tt> contenete codice php
2140 eseguibile dall'interprete, ad es:</p>
2141 <pre class="literal-block">
2142 <?php phpinfo() ; ?>
2145 <p>Questa funzione di php generera' la tipica pagina con
2146 le impostazioni attuali per PHP. Richiamando la pagina
2147 (es: <tt class="docutils literal"><span class=
2148 "pre">http://localhost/info.php</span></tt> ) verra'
2149 generata dall'interprete PHP la pagina HTML e resa
2150 disponibile tramite Apache ai client HTTP, a prova del
2151 corretto funzionamento del modulo di PHP e della sua
2152 integrazione con il server web Apache. In caso contrario
2153 se il client http proporra' di scaricare la pagina invece
2154 che visualizzarla nel browser: non funziona l'interprete
2155 di php o sono mal configurati i MIME-type. prima di tutto
2156 assicurarsi di aver fatto ripartire Apache.</p>
2159 <div class="section" id=
2160 "installazione-del-supporto-per-mysql">
2161 <h3><a class="toc-backref" href=
2162 "#id35">3.4.2 Installazione del supporto
2165 <p>Installare i pacchetti:</p>
2166 <pre class="literal-block">
2167 php5-mysql phpmyadmin
2170 <p>Controllare tramite la pagina php.info che sia
2171 abilitato il supporto per Mysql (ripartito Apache,
2172 ricaricare la pagina e cercare con CTRL+f <tt class=
2173 "docutils literal"><span class=
2174 "pre">mysql</span></tt>).</p>
2177 <div class="section" id="phpmyadmin">
2178 <h3><a class="toc-backref" href=
2179 "#id36">3.4.3 phpmyadmin</a></h3>
2181 <p>L'interfaccia web Phpmyadmin non richiede
2182 necessariamente la presenza di un database Mysql locale,
2183 puo' infatti essere utilizzata per gestire database
2184 remoti (il suo file di configurazione: <tt class=
2185 "docutils literal"><span class=
2186 "pre">/etc/phpmyadmin/config.inc.php</span></tt> ). Nel
2187 caso si voglia installare localmente Mysql si utilizzi il
2188 pacchetto <tt class="docutils literal"><span class=
2189 "pre">mysql-server</span></tt> .</p>
2191 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2192 <tt class="docutils literal"><span class=
2193 "pre">http://localhost/phpmyadmin/</span></tt>, se cosi
2194 non fosse controllare che sia incluso il file <tt class=
2195 "docutils literal"><span class=
2196 "pre">/etc/phpmyadmin/apache.conf</span></tt> in
2197 <tt class="docutils literal"><span class=
2198 "pre">/etc/apache2/conf.d/</span></tt> .</p>
2201 <div class="section" id=
2202 "installazione-del-supporto-per-postgresql">
2203 <h3><a class="toc-backref" href=
2204 "#id37">3.4.4 Installazione del supporto
2205 per Postgresql</a></h3>
2207 <p>Installare i pacchetti:</p>
2208 <pre class="literal-block">
2209 php5-pgsql phppgadmin
2212 <p>Controllare tramite la pagina php.info che sia
2213 abilitato il supporto per PostgreSQL (ripartito Apache,
2214 ricaricare la pagina e cercare con CTRL+f <tt class=
2215 "docutils literal"><span class=
2216 "pre">pgsql</span></tt>).</p>
2219 <div class="section" id="phppgadmin">
2220 <h3><a class="toc-backref" href=
2221 "#id38">3.4.5 phppgadmin</a></h3>
2223 <p>L'interfaccia web Phppgadmin per il database server
2224 PostgreSQL non richiede necessariamente la presenza di un
2225 database locale, puo' infatti essere utilizzata per
2226 gestire database remoti (il suo file di configurazione:
2227 <tt class="docutils literal"><span class=
2228 "pre">/etc/phppgadmin/config.inc.php</span></tt> ). Nel
2229 caso si voglia installare localmente Mysql si utilizzi il
2230 pacchetto <tt class="docutils literal"><span class=
2231 "pre">postgresql</span></tt> .</p>
2233 <p>Phpmyadmin dovrebbe essere disponibile all'URL:
2234 <tt class="docutils literal"><span class=
2235 "pre">http://localhost/phppgadmin/</span></tt>, se cosi
2236 non fosse controllare che sia incluso il file <tt class=
2237 "docutils literal"><span class=
2238 "pre">/etc/phppgadmin/apache.conf</span></tt> in
2239 <tt class="docutils literal"><span class=
2240 "pre">/etc/apache2/conf.d/</span></tt> .</p>
2244 <div class="section" id="virtual-hosts">
2245 <h2><a class="toc-backref" href=
2246 "#id39">3.5 Virtual hosts</a></h2>
2250 <li><a class="reference external" href=
2251 "http://www.apacheweek.com/features/vhost">http://www.apacheweek.com/features/vhost</a></li>
2253 <li><a class="reference external" href=
2254 "http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html">
2255 http://www.onlamp.com/pub/a/apache/2004/01/08/apacheckbk.html</a></li>
2259 <p>I virtual host permettono di avere piu' siti internet
2260 disponibili tramite lo stesso server web, eventualmente
2261 mappati su un solo indirizzo IP. Sono generalmente di due
2266 <li>Basati su <em>indirizzi IP</em>. Se si ha la
2267 possibilita' di avere piu' indirizzi IP dedicati per i
2268 diversi siti che si vuole servire. ES: <tt class=
2269 "docutils literal"><span class=
2270 "pre"><VirtualHost</span> <span class=
2271 "pre">192.168.0.2:80></span></tt> . Soluzione
2272 dispendiosa, si tende ad usarla solo se servono
2273 certificati di sicurezza (SSL ) dedicati per ogni
2276 <li>Basati su <em>nomi di dominio</em> che puntano allo
2277 stesso IP. Soluzione piu' economica e diffusa che si
2278 basa sulle funzionalita' di http 1.1 .</li>
2282 <p>Prenderemo in esame la gestione di virtual hosts basati
2283 su nomi di dominio.</p>
2285 <div class="section" id="gestione-dns">
2286 <h3><a class="toc-backref" href=
2287 "#id40">3.5.1 Gestione DNS</a></h3>
2289 <p>Prima di tutto per poter impostare i virtual hosts
2290 dovete avere un server DNS che risolva i vostri nomi di
2291 dominio sull'indirizzo IP del server. Questo si puo'
2292 ottenere in vari modi, ad es:</p>
2295 <dl class="docutils">
2296 <dt><em>Bind</em> (DNS server)</dt>
2298 <dd>Impostare i campi A nelle proprie zone gestite
2299 dal server DNS Bind. Ad es: <tt class=
2300 "docutils literal"><span class=
2301 "pre">papo</span>
2303 "pre">A</span>
2304 <span class="pre">212.22.136.248</span></tt></dd>
2306 <dt><em>Servizio DNS dinamico on line</em>.</dt>
2308 <dd>Utilizzare un servizio come ad es: <a class=
2309 "reference external" href=
2310 "https://www.dyndns.com/">https://www.dyndns.com/</a>
2311 per mappare nomi di dominio sul proprio indirizzo IP,
2312 comodo ad esempio se si dispone di un indirizzo IP
2313 pubblico (anche se dinamico) per la propria
2314 connessione ad internet.</dd>
2316 <dt><em>Dnsmasq</em> (DNS server)</dt>
2318 <dd>Utilizzabile al livello della rete locale per
2319 fare dei test, utilizzando direttive come: <tt class=
2320 "docutils literal"><span class=
2321 "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
2323 <dt><tt class="docutils literal"><span class=
2324 "pre">/etc/hosts</span></tt></dt>
2326 <dd>Per prove sul proprio sistema potete impostare i
2327 nomi dei vostri virtual server nel file /etc/hosts
2332 <p>Query DNS con <tt class=
2333 "docutils literal"><span class="pre">dig</span></tt>:</p>
2334 <pre class="literal-block">
2337 ; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
2338 ;; global options: printcmd
2340 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
2341 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
2343 ;; QUESTION SECTION:
2344 ;177.piffa.net. IN A
2347 177.piffa.net. 0 IN A 10.10.208.177
2350 <p>La parte interessante e' l'<em>ANSWER SECTION</em>:
2351 <tt class="docutils literal"><span class=
2352 "pre">177.piffa.net.</span>
2354 "pre">0</span>
2355 <span class="pre">IN</span>
2357 "pre">A</span>
2358 <span class="pre">10.10.208.177</span></tt> . Il nome di
2359 dominio 177.piffa.net viene risolto sull'ip 10.10.208.177
2360 , nel nostro Apache (che risponde all'ip 10.10.208.177 )
2361 dovra' essere disponibile un virtual host che corrisponde
2362 al nome <tt class="docutils literal"><span class=
2363 "pre">177.piffa.net</span></tt> (<tt class=
2364 "docutils literal"><span class=
2365 "pre">ServerName</span></tt>) .</p>
2368 <div class="section" id="virtual-host">
2369 <h3><a class="toc-backref" href=
2370 "#id41">3.5.2 Virtual host</a></h3>
2372 <p>Esempio di Virtual host:</p>
2373 <pre class="literal-block">
2374 <VirtualHost *:80 >
2375 ServerName 177.piffa.net
2376 DocumentRoot /var/www/177.piffa.net/
2377 ServerAdmin webmaster@177.piffa.net
2378 </VirtualHost>
2381 <ol class="arabic simple">
2382 <li><tt class="docutils literal"><span class=
2383 "pre"><VirtualHost</span> <span class=
2384 "pre">\*:80</span> <span class="pre">></span></tt>
2385 La prima riga indica l'inizio della stanza relativa al
2386 nostro virtual host, che ascoltera' su qualunque
2387 indirizzo IP (nel caso il server abbia piu' indirizzi
2388 dai quali e' raggiungibile) sulla porta <tt class=
2389 "docutils literal"><span class=
2390 "pre">80</span></tt>.</li>
2392 <li><tt class="docutils literal"><span class=
2393 "pre">Server/name</span></tt> precisa quale sara' il
2394 nome di dominio a cui verra' associato questo sito
2395 rispetto ad altri eventualmente presenti sullo stesso
2398 <li><tt class="docutils literal"><span class=
2399 "pre">DocumentRoot</span></tt> : il path della
2400 directory che contiene le pagine del sito.</li>
2402 <li><tt class="docutils literal"><span class=
2403 "pre">ServerAdmin</span></tt>: l'indirizzo del
2404 webmaster, in modo da poterlo contattare in caso di
2405 problemi col sito.</li>
2407 <li><tt class="docutils literal"><span class=
2408 "pre"></VirtualHost></span></tt>: <em>tag</em> di
2409 chiusura della stanza di definizione del virtual
2413 <p>Quelle che abbiamo appena visto sono le direttive
2414 essenziali per definire un sito virtuale, potrebbe essere
2415 utile aggiungere altre:</p>
2419 <dl class="first docutils">
2420 <dt><tt class="docutils literal"><span class=
2421 "pre">ErrorLog</span> <span class=
2422 "pre">/var/log/apache2/177.piffa.net/error.log</span></tt></dt>
2425 <p class="first last">Log degli errori separato
2426 dai restanti siti web ospitati dal server.</p>
2432 <dl class="first docutils">
2433 <dt><tt class="docutils literal"><span class=
2434 "pre">LogLevel</span> <span class=
2435 "pre">warn</span></tt></dt>
2438 <p class="first last">Livello di importanza degli
2439 eventi loggati= warning <em>attenzione</em> .</p>
2445 <dl class="first docutils">
2446 <dt><tt class="docutils literal"><span class=
2447 "pre">CustomLog</span> <span class=
2448 "pre">/var/log/apache2/177.piffa.net/access.log</span>
2449 <span class="pre">combined</span></tt></dt>
2452 <p class="first last">Log di accesso separati
2453 dagli altri siti, utile anche qua per statistiche
2454 di accesso per il solo sito virtuale.</p>
2460 <p>Potrebbe essere utile modificare le impostazioni di
2461 una intera directory, ad esempio per abilitare
2462 l'<tt class="docutils literal"><span class=
2463 "pre">AuthConfig</span></tt>:</p>
2464 <pre class="literal-block">
2465 <Directory "/var/www/miosito.net/privata">
2466 AllowOverride AuthConfig
2467 Options ExecCGI Indexes MultiViews FollowSymLinks
2473 <p><tt class="docutils literal"><span class=
2474 "pre">AllowOverride</span> <span class=
2475 "pre">AuthConfig</span></tt> ora vale per l'intera
2476 directory, come le altre opzioni.</p>
2480 <div class="section" id="negoziazione-accessi">
2481 <h2><a class="toc-backref" href=
2482 "#id42">3.6 Negoziazione accessi</a></h2>
2484 <p>Tipicamente quando si installa un server web il proprio
2485 desiderio e' di dare accesso ai materiali disponibili al
2486 maggior numero di visitatori possibile. Talvolta pero' puo'
2487 essere utile poter limitare questi accessi, ad esempio per
2488 escludere un <em>bot</em> indesiderato che scansiona
2489 ininterrottamente le nostre pagine o per creare una
2490 <em>Area Riservata</em> i cui materiali non devono essere
2491 disponibile a tutti.</p>
2493 <div class="section" id="limiti-su-base-ip">
2494 <h3><a class="toc-backref" href=
2495 "#id43">3.6.1 Limiti su base IP</a></h3>
2497 <p>La forma piu' semplice di restrizione degli accessi e'
2498 su base degli indirizzi IP dei client: tipicamente i siti
2499 web sono settati per dare accesso a chiunque:</p>
2500 <pre class="literal-block">
2501 <VirtualHost *:80 >
2503 <Directory "/var/www/177.piffa.net">
2507 </VirtualHost>
2510 <p>Potremmo negare l'accesso a uno o piu' indirizzi IP in
2512 <pre class="literal-block">
2513 <VirtualHost *:80 >
2515 <Directory "/var/www/177.piffa.net">
2518 Deny from 192.168.0.1
2520 </VirtualHost>
2523 <p>Ora l'IP 192.168.0.1 non potra' piu' accedere ai
2524 materiali dell'intero sito virtuale, oppure potremmo
2525 lavorare su una sola directory:</p>
2526 <pre class="literal-block">
2527 <Directory "/var/www/miosito.net/limitata">
2529 Allow from 192.168.0.0./24
2534 <p>In questo modo solo la classe IP <tt class=
2535 "docutils literal"><span class=
2536 "pre">192.168.0.0/24</span></tt> potra' accedere alla
2537 directory <tt class="docutils literal"><span class=
2538 "pre">/limitata</span></tt> Si tenga pero' conto che e'
2539 relativamente facile per un malintenzionato cambiare il
2540 proprio indirizzo IP, oppure collegarsi da un altra zona.
2541 Meno facile e' accedere ad una classe privata trovandosi
2542 all'esterno di questa, ma ci sono comunque soluzioni piu'
2547 <div class="section" id="user-authentication">
2548 <h2><a class="toc-backref" href=
2549 "#id44">3.7 User Authentication</a></h2>
2551 <p>Si puo' negoziare gli accessi ad un area del sito
2552 tramite autenticazione basata su <em>nome utente /
2553 password</em>. Questo puo' venire utile per creare una area
2554 download <em>intranet</em>, alla quale possano accedere
2555 solo gli utenti previsti a prescindere dagli indirizzi IP
2556 dei loro client.</p>
2558 <p>Tramite il modulo di Apache <em>mod-auth</em> e'
2559 possibile implementare questo paradigma, per quanto
2560 esistano soluzioni piu' granulari e sofisticate, che
2561 richiedono pero' l'implementazione di interpreti di
2562 linguaggi di programmazione, criptazione delle passwords,
2563 gestione degli utenti ed eventualmente delle sessioni. Mod
2564 auth non richiede l'installazione di niente di tutto
2567 <p>link: <a class="reference external" href=
2568 "http://www.apacheweek.com/features/userauth">http://www.apacheweek.com/features/userauth</a></p>
2570 <div class="section" id="definire-la-cartella">
2571 <h3><a class="toc-backref" href=
2572 "#id45">3.7.1 Definire la
2575 <p>Decidere quale sara' il <em>path</em> della cartella
2576 da sottoporre ad autenticazione:</p>
2579 <tt class="docutils literal"><span class=
2580 "pre">mkdir</span> <span class=
2581 "pre">/var/www/177.piffa.net/privata</span></tt>
2585 <div class="section" id=
2586 "creazione-del-database-delle-passwords">
2587 <h3><a class="toc-backref" href=
2588 "#id46">3.7.2 Creazione del database
2589 delle passwords</a></h3>
2591 <p>Un modo semplice per gestire una database di
2592 <em>user-id / passwords</em> e' utilizzare l'utility
2593 <tt class="docutils literal"><span class=
2594 "pre">htpasswd</span></tt> di Apache. Questa crea un file
2595 in cui un <em>crypt</em> delle password viene associato
2598 <p>Si dovra' decidere dove tenere questo file, la cosa
2599 importante e' che non sia visibile nel sito web: non deve
2600 essere scaricabile dai visitatori. Deve essere cioe'
2601 all'esterno della <em>DocumentRoot</em>: un buon posto
2602 potrebbe essere la /home dell'utente.</p>
2604 <p>Creiamo (con il <em>flag</em> <tt class=
2605 "docutils literal"><span class="pre">-c</span></tt>) il
2606 file <tt class="docutils literal"><span class=
2607 "pre">/home/utente/passwords</span></tt> con l'utente
2608 <tt class="docutils literal"><span class=
2609 "pre">luca</span></tt>:</p>
2610 <pre class="literal-block">
2611 htpasswd -c /home/utente/passwords luca
2614 <p><tt class="docutils literal"><span class=
2615 "pre">htpasswd</span></tt> ci chiedera' la password da
2616 associare all'utente <tt class=
2617 "docutils literal"><span class="pre">luca</span></tt>.
2618 Per successive modifiche della password o aggiunta di
2619 nuovi utenti non sara' necessario usare il flag
2620 <tt class="docutils literal"><span class=
2621 "pre">-c</span></tt>.</p>
2624 <div class="section" id="id3">
2625 <h3><a class="toc-backref" href=
2626 "#id47">3.7.3 Configurazione di
2629 <p>Ora possiamo passare alla configurazione vera e
2630 propria di Apache, ma con una novita': andremo a inserire
2631 la voce in un <tt class="docutils literal"><span class=
2632 "pre">.htaccess</span></tt> invece che modificare
2633 (tramite una direttiva <tt class=
2634 "docutils literal"><span class=
2635 "pre"><Directory></span></tt> ) il file di
2636 impostazione del virtual-host.</p>
2638 <p>Questo per motivi pratici: solo l'utente <em>root</em>
2639 puo' modificare l'impostazione del virtual host nel file
2640 <tt class="docutils literal"><span class=
2641 "pre">/etc/apache2/sites-enabled/177.piffa.net</span></tt>,
2642 ma spesso il motivo per cui creiamo i virtual hosts e'
2643 ospitare i siti di altri utenti, che possono solo
2644 pubblicare (generalmente tramite <em>FTP</em>) i loro
2645 documenti nella loro <em>DocumentRoot</em>, senza poter
2646 quindi modificare in alcun modo la configurazione del
2649 <p>Dando agli utenti la possibilita' di modificare
2650 (<em>AllowOverride</em>) autonomamente alcuni parametri
2651 (in questo caso solo l'<em>AuthConfig</em>) relativi al
2652 funzionamento del loro spazio web ci togliera'
2653 l'incombenza di dover intervenire continuamente sui vari
2656 <p>Abilitiamo l'AllowOverride nel file di configurazione
2657 del virtual host per la sola directory <tt class=
2658 "docutils literal"><span class=
2659 "pre">privata</span></tt>:</p>
2660 <pre class="literal-block">
2661 <VirtualHost *:80 >
2662 ServerName 177.piffa.net
2663 DocumentRoot /var/www/177.piffa.net/
2664 ServerAdmin webmaster@177.piffa.net
2665 <Directory "/var/www/177.piffa.net/privata">
2666 AllowOverride AuthConfig
2668 </VirtualHost>
2671 <p>Per rendere il cambiamento effettivo sara' necessario
2672 fare un restart / reload di Apache.</p>
2674 <p>Ora sara' possibile, anche per l'utente di sistema,
2675 creare un file <tt class="docutils literal"><span class=
2676 "pre">.htaccess</span></tt> che sara' onorato da
2679 <p>/var/www/177.piffa.net/privata/.htaccess</p>
2680 <pre class="literal-block">
2681 # Messaggio visualizzato al prompt per l'autenticazione
2682 AuthName "Area privata soggetta ad autentizazione"
2683 # tipo di autenticazione da usarsi
2685 # File precedentemente generato con htpasswd
2686 AuthUserFile /home/utente/passwords
2688 # Negoziazione degli accessi
2689 # valid users permette l'accesso agli utenti specificati
2690 # nel file generato da htpasswd
2694 <p>Si noti che non e' necessario fare ripartire Apache
2695 per onorare i cambiamenti (un utente non avrebbe la
2696 possibilita' di farlo!).</p>
2698 <dl class="docutils">
2699 <dt>Oltre a <tt class="docutils literal"><span class=
2700 "pre">valid-users</span></tt> si potrebbe scegliere di
2701 usare la formula <tt class=
2702 "docutils literal"><span class="pre">users</span></tt>
2703 che permette di elencare esplicitamente gli
2706 <dd>require user pippo pluto</dd>
2709 <p>L'utente <em>paperino</em> che fosse comunque presente
2710 nel file generato da htpasswd non potrebbe accedere alla
2713 <dl class="docutils">
2714 <dt>Nel caso ci fossero molti utenti conviene gestirli
2715 tramite <em>gruppi</em>::</dt>
2717 <dd>require group staff studenti</dd>
2720 <p>I gruppi vengono definiti in un file in modo simile a
2721 <tt class="docutils literal"><span class=
2722 "pre">/etc/groups</span></tt> per gli utenti di
2724 <pre class="literal-block">
2726 studenti: lucap federico luca
2729 <p>da richiamare tramite la direttiva <tt class=
2730 "docutils literal"><span class=
2731 "pre">AuthGroupFile</span></tt>.</p>
2735 <div class="section" id="cavets">
2736 <h2><a class="toc-backref" href=
2737 "#id48">3.8 Cavets</a></h2>
2739 <p>Problemi di cache:</p>
2743 <li>Proxy: nei settaggi del browser specificare di non
2744 utilizzare un server proxy http per il sito web locale
2745 (o per gli altri che si stanno monitorando). Se si ha
2746 il controllo del proxy server: stopparlo, ricaricare la
2747 pagina (operazione che fallira'), far ripartire il
2748 proxy, ricaricare la pagina.</li>
2750 <li>Provare con un altro browser, o cercare di svuotare
2751 la cache chiudere/riaprire l'applicativo. Provare a
2752 fermare Apache, ricaricare la pagina (operazione che
2753 fallira'), far ripartire Apache, ricaricare la
2760 <div class="section" id="domain-name-system">
2761 <h1><a class="toc-backref" href=
2762 "#id49">4 Domain Name System</a></h1>
2764 <p>Domain Name System (spesso indicato con DNS) e' un
2765 servizio utilizzato per la risoluzione di nomi di host in
2766 indirizzi IP e viceversa. Il servizio e' realizzato tramite
2767 un sistema <strong>gerarchico</strong> (quindi una struttura
2768 ad albero, simile ai <em>file system</em>)
2769 <strong>distribuito</strong> (ogni server DNS facente parte
2770 del sistema puo' mantenere solo una parte delle informazioni,
2771 ad esempio per la sua sola <em>zona</em>), costituito dai
2774 <p>I DNS sono un servizio <em>core</em> (fondamentale) per la
2775 rete internet come per qualunque rete locale. Ad esempio
2776 durante la navigazione web un client vorrebbe vedere
2777 l'<em>URL</em> <tt class="docutils literal"><span class=
2778 "pre">http://ww.piffa.net/</span></tt>, quindi per potersi
2779 connettere via <em>http</em> al server web deve prima
2780 ottenere l'indirizzo IP del <em>server http</em>
2781 corrispondente a <em>www.piffa.net</em>. Se il DNS gli
2782 fornisce un IP sbagliato l'utente non potra' raggiungere il
2783 servizio: di fatto e' come se il serve http fosse spento.</p>
2785 <p>Stessa cosa vale per gli altri servizi, come la posta
2786 elettronica, ssh, ecc. : <em>prima si deve effettuare una
2789 <p>Potrebbe verificarsi uno scenario simile a questo: i
2790 vostri server per i siti web funzionano correttamente come i
2791 siti ospitati, stessa cosa per i vostri server di posta, IMAP
2792 e POP3, e tutto il resto. Ma se poi un errore nella
2793 configurazione del DNS non rende raggiungibile l'intero
2794 <em>sito</em>: per l'utente finale e' come se nulla
2797 <p>Infatti quando si parla di un intervento della Polizia
2798 Postale per l'<em>oscuramento</em> di un sito dal punto di
2799 vista pratico questo si traduce generalmente nella rimozione
2800 o mistificazione del record DNS relativo a quel dominio (la
2801 <em>PP</em> ha facolta' di chiedere un simile intervento ai
2802 principali provider internet che forniscono connettivita'
2803 agli utenti italiani, oltre che poter agire direttamente sul
2804 NIC italiano per i domini della TLD <em>.it</em>)</p>
2806 <p>L'operazione di convertire un nome in un indirizzo e'
2807 detta risoluzione DNS, convertire un indirizzo IP in nome e'
2808 detto risoluzione inversa.</p>
2811 Un <em>Registar</em> e' un operatore che ha la facolta'
2812 (accreditamento da parte dell ICANN) di registrare i domini
2813 di secondo livello per gli utenti finali, dietro compenso
2814 di una modica cifra (una decina di euro) che vale come
2815 contributo su base annuale per il mantenimento
2816 dell'infrastruttura.
2819 <div class="section" id="risoluzione-inversa">
2820 <h2><a class="toc-backref" href=
2821 "#id50">4.1 Risoluzione Inversa</a></h2>
2823 <p>Per la risoluzione inversa sono invece i provider di
2824 connettivita' a gestire i DNS: se volete impostare il
2825 <em>PTR</em> associato al vostro indirizzo IP dovete
2826 contattare il vostro provider (tipo <em>telecom</em> per
2827 una connessione ADSL) e <em>non il Registar del vostro
2830 <p>Ad esempio all'IP <tt class=
2831 "docutils literal"><span class=
2832 "pre">212.22.136.248</span></tt> era associato un PTR
2833 <tt class="docutils literal"><span class=
2834 "pre">bender.piffa.net</span></tt>, corrispondente al
2835 record <tt class="docutils literal"><span class=
2836 "pre">212</span></tt> facente parte della zona <tt class=
2837 "docutils literal"><span class=
2838 "pre">136.22.212.in-addr.arpa</span></tt> gestito dal
2839 provider Tiscali/Nextra proprietario della classe C
2840 <tt class="docutils literal"><span class=
2841 "pre">212.22.136.0</span></tt>. Se avete un solo IP
2842 conviene lasciare al fornitore la gestire del PTR, ma se
2843 avete a disposizione un'itera classe potete chiedere sempre
2844 al vostro provider che vi <em>deleghi</em> la gestione
2845 della zona tramite i vostri DNS.</p>
2847 <p>Per alcuni servizi, ad esempio la spedizione della posta
2848 elettronica, e' richiedeiesto che venga impostata
2849 correttamente l'associazione tra il PTR dell'indirizzo IP
2850 usato dal server di postai e il record A RR al quale questo
2851 punta( RFC1912 sezione 2.1, paragrafo 2).</p>
2856 <li><a class="reference external" href=
2857 "http://www.faqs.org/rfcs/rfc1912.html">http://www.faqs.org/rfcs/rfc1912.html</a>
2858 2.1 Inconsistent, Missing, or Bad Data</li>
2860 <li><a class="reference external" href=
2861 "http://www.ietf.org/rfc/rfc2505.txt">http://www.ietf.org/rfc/rfc2505.txt</a></li>
2865 <div class="section" id="nomi-di-dominio">
2866 <h2><a class="toc-backref" href=
2867 "#id51">4.2 Nomi di dominio</a></h2>
2869 <p>Un nome a dominio e' costituito da una serie di stringhe
2870 separate da punti, ad esempio bender.piffa.net. I nomi di
2871 dominio si leggono da destra verso sinistra: <em>TLD</em> o
2872 dominio di primo livello <tt class=
2873 "docutils literal"><span class="pre">net</span></tt>,
2874 secondo livello <tt class="docutils literal"><span class=
2875 "pre">piffa</span></tt>, terzo livello <tt class=
2876 "docutils literal"><span class="pre">bender</span></tt>. Il
2877 dominio di primo livello (o TLD, Top Level Domain,
2878 pronunciato <em>tilde</em> in Italia), per esempio .net o
2879 .it sono limitati e decisi direttamente dall'ente
2880 assegnatario ICANN ( Internet Corporation for Assigned
2881 Names and Numbers).</p>
2883 <p>L'utente finale potra' chiedere l'assegnazione (pagando
2884 un contributo al Register preferito per il mantenimento
2885 delle spese dell'infrastruttura) di un dominio di
2886 <em>secondo</em> livello (es <tt class=
2887 "docutils literal"><span class="pre">piffa</span></tt>) di
2888 una delle varie TLD disponibili (noi italiani diciamo
2889 <em>tildi</em>), sempre che non sia gia' stato assegnato a
2892 <p>Ottenuto il secondo livello sara' l'utente a gestirlo:
2893 potra' in stanziare domini di terzo livello (es <tt class=
2894 "docutils literal"><span class="pre">bender</span></tt>) e
2895 anche oltre (es www.andrea.bender.piffa.net). Tali records
2896 saranno mantenuti dall'utente, sotto la sua responsbilita':
2897 se il proprio server DNS non fosse raggiungibile o
2898 risultasse mal configurato gli utenti non potrebbero
2899 risolvere / raggiungere i siti di loro interesse.</p>
2901 <p>Tipicamente si ha almeno un server DNS secondario per
2902 garantire la sussistenza del servizio in caso di guasto del
2903 DNS principale. I secondari <em>replicano</em> i dati
2904 presenti nei DNS principali.</p>
2907 <div class="section" id="tipologie-di-record">
2908 <h2><a class="toc-backref" href=
2909 "#id52">4.3 Tipologie di record</a></h2>
2911 <p>Ad un nome DNS possono corrispondere diversi tipi di
2912 informazioni. Per questo motivo, esistono diversi tipi di
2913 record DNS. Ogni voce del database DNS deve essere
2914 caratterizzata da un tipo. I principali tipi sono:</p>
2917 <li>Record A - Indica la corrispondenza tra un nome ed
2918 uno (o piu') indirizzi IP (per la precisione indirizzi
2919 IPv4, ovvero la versione attualmente in uso).</li>
2921 <li>Record MX - (Mail eXchange) indica a quali server
2922 debba essere inviata la posta elettronica per un certo
2925 <li>Record CNAME - Sono usati per creare un alias, ovvero
2926 per fare in modo che lo stesso calcolatore sia noto con
2927 piu' nomi. Uno degli utilizzi di questo tipo di record
2928 consiste nell'attribuire ad un host che offre piu'
2929 servizi un nome per ciascun servizio. In questo modo, i
2930 servizi possono poi essere spostati su altri host senza
2931 dover riconfigurare i client, ma modificando solo il
2934 <li>Record PTR - Il DNS viene utilizzato anche per
2935 realizzare la risoluzione inversa, ovvero per far
2936 corrispondere ad un indirizzo IP il corrispondente nome a
2937 dominio. Per questo si usano i record di tipo "PTR" (e
2938 una apposita zona dello spazio dei nomi
2941 <li>Record AAAA - Restituisce un indirizzo IPv6.</li>
2943 <li>Record SRV - Identificano il server per un
2944 determinato servizio all'interno di un dominio. Possono
2945 essere considerati una generalizzazione dei record
2948 <li>Record TXT - Associano campi di testo arbitrari ad un
2949 dominio. Questi campi possono contenere una descrizione
2950 informativa oppure essere utilizzati per realizzare
2954 <p>Vi sono anche tipi di record "di servizio", necessari al
2955 funzionamento del database distribuito: * Record NS -
2956 Utilizzato per indicare quali siano i server DNS
2957 autoritativi per un certo dominio, ovvero per delegarne la
2958 gestione. * Record SOA - (Start of Authority) usato per la
2959 gestione delle zone DNS.</p>
2962 <div class="section" id="utilizzo">
2963 <h2><a class="toc-backref" href=
2964 "#id53">4.4 Utilizzo</a></h2>
2966 <p>I computer vengono identificati in rete grazie agli
2967 indirizzi <em>IP</em>, questi pero' non sono comodi per gli
2968 utenti come riferimento per i vari server. Ad esempio
2969 sarebbe scomodo riferirsi al motore di ricerca Goggle con
2970 uno dei suoi IP: <tt class="docutils literal"><span class=
2971 "pre">74.125.43.104</span></tt>, e' preferibile usare il
2972 nome di dominio <em>www.google.com</em>:</p>
2973 <pre class="literal-block">
2974 ping -c 1 www.google.com
2975 PING www.l.google.com (74.125.43.104) 56(84) bytes of data.
2979 <div class="section" id="risoluzione-dei-nomi-di-dominio">
2980 <h2><a class="toc-backref" href=
2981 "#id54">4.5 Risoluzione dei nomi di
2984 <p>Ci sono vari strumenti per interrogare i server DNS e
2985 ottenere l'indirizzo IP associato al nome di dominio che ci
2987 <pre class="literal-block">
2988 $ host www.piffa.net
2989 www.piffa.net is an alias for piffa.net.
2990 piffa.net has address 65.98.21.97
2991 piffa.net mail is handled by 10 65.98.21.97
2994 $ nslookup www.piffa.net
2995 Server: 192.168.0.10
2996 Address: 192.168.0.10#53
2998 Non-authoritative answer:
2999 www.piffa.net canonical name = piffa.net.
3001 Address: 65.98.21.97
3006 ; <<>> DiG 9.6.0-P1 <<>> www.piffa.net
3007 ;; global options: +cmd
3009 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47751
3010 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 4, ADDITIONAL: 4
3012 ;; QUESTION SECTION:
3013 ;www.piffa.net. IN A
3016 www.piffa.net. 3489 IN CNAME piffa.net.
3017 piffa.net. 3489 IN A 65.98.21.97
3019 ;; AUTHORITY SECTION:
3020 piffa.net. 86289 IN NS ns2.mydomain.com.
3021 piffa.net. 86289 IN NS ns1.mydomain.com.
3022 piffa.net. 86289 IN NS ns4.mydomain.com.
3023 piffa.net. 86289 IN NS ns3.mydomain.com.
3025 ;; ADDITIONAL SECTION:
3026 ns1.mydomain.com. 96208 IN A 64.94.117.193
3027 ns2.mydomain.com. 96208 IN A 64.94.31.67
3028 ns3.mydomain.com. 96208 IN A 66.150.161.137
3029 ns4.mydomain.com. 96208 IN A 63.251.83.74
3031 ;; Query time: 1 msec
3032 ;; SERVER: 192.168.0.10#53(192.168.0.10)
3033 ;; WHEN: Sun May 10 21:23:11 2009
3034 ;; MSG SIZE rcvd: 209
3037 <p>Lo strumento piu' esaustivo e' <tt class=
3038 "docutils literal"><span class="pre">dig</span></tt>,
3039 installabile con il pacchetto <tt class=
3040 "docutils literal"><span class="pre">dnsutils</span></tt>
3044 <div class="section" id="dig">
3045 <h2><a class="toc-backref" href=
3046 "#id55">4.6 Dig</a></h2>
3048 <p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
3049 "docutils literal"><span class="pre">dig</span></tt> per
3050 l'interrogazione dei DNS Server:</p>
3051 <pre class="literal-block">
3054 ; <<>> DiG 9.6.0-P1 <<>> www.google.it
3055 ;; global options: +cmd
3057 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18816
3058 ;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 7, ADDITIONAL: 0
3060 ;; QUESTION SECTION:
3061 ;www.google.it. IN A
3064 www.google.it. 250683 IN CNAME www.google.com.
3065 www.google.com. 334819 IN CNAME www.l.google.com.
3066 www.l.google.com. 186 IN A 74.125.43.103
3067 www.l.google.com. 186 IN A 74.125.43.104
3068 www.l.google.com. 186 IN A 74.125.43.147
3069 www.l.google.com. 186 IN A 74.125.43.99
3071 ;; AUTHORITY SECTION:
3072 l.google.com. 80856 IN NS f.l.google.com.
3073 l.google.com. 80856 IN NS d.l.google.com.
3074 l.google.com. 80856 IN NS b.l.google.com.
3075 l.google.com. 80856 IN NS c.l.google.com.
3076 l.google.com. 80856 IN NS a.l.google.com.
3077 l.google.com. 80856 IN NS e.l.google.com.
3078 l.google.com. 80856 IN NS g.l.google.com.
3080 ;; Query time: 1 msec
3081 ;; SERVER: 192.168.0.10#53(192.168.0.10)
3082 ;; WHEN: Sun May 10 21:34:47 2009
3083 ;; MSG SIZE rcvd: 255
3086 <dl class="docutils">
3089 <dd>(senza opzioni o oggetti) Fornisce l'elenco dei
3090 <em>root server</em> utilizzati. I root server sono i
3091 server che mantengono le informazioni sui domini di primo
3092 livello (TLD) e sono quindi il punto di partenza per
3093 scorrere nella directory dei DNS per recuperare le
3094 informazioni (tipicamente un campo <tt class=
3095 "docutils literal"><span class="pre">A</span></tt> per un
3096 indirizzo IP) che ci servono per raggiungere un certo
3105 <p>;; ANSWER SECTION: . 192032 IN NS C.ROOT-SERVERS.NET.
3106 . 192032 IN NS E.ROOT-SERVERS.NET. . 192032 IN NS
3107 B.ROOT-SERVERS.NET. . 192032 IN NS L.ROOT-SERVERS.NET. .
3108 192032 IN NS A.ROOT-SERVERS.NET. . 192032 IN NS
3109 F.ROOT-SERVERS.NET. . 192032 IN NS H.ROOT-SERVERS.NET. .
3110 192032 IN NS G.ROOT-SERVERS.NET. . 192032 IN NS
3111 K.ROOT-SERVERS.NET. . 192032 IN NS M.ROOT-SERVERS.NET. .
3112 192032 IN NS I.ROOT-SERVERS.NET. . 192032 IN NS
3113 J.ROOT-SERVERS.NET. . 192032 IN NS
3114 D.ROOT-SERVERS.NET.</p>
3119 <dl class="docutils">
3120 <dt>dig @nome_dns</dt>
3122 <dd>Permette di fare una query ad un server dns
3123 particolare. Es: <tt class=
3124 "docutils literal"><span class="pre">dig</span>
3125 <span class="pre">@151.99.25.1</span> <span class=
3126 "pre">www.google.it</span></tt></dd>
3128 <dt>dig MX www.google.it</dt>
3130 <dd>Chiede un campo in particolare, in questo caso il
3133 <dt>dig ANY www.google.it</dt>
3135 <dd>Chiede tutti i campi, non solo i campi
3138 <dt>dig -x 74.125.43.104</dt>
3140 <dd>Effettua una richiesta inversa: dall'IP al PTR
3145 <div class="section" id="resolv-conf">
3146 <h2><a class="toc-backref" href=
3147 "#id56">4.7 resolv.conf</a></h2>
3149 <p>Il file <tt class="docutils literal"><span class=
3150 "pre">/etc/resolv.conf</span></tt> contiene le impostazioni
3151 sul dns usato dal sistema, in genere anche altre
3152 applicazioni che devono effettuare query DNS leggono
3153 resolv.conf per conoscere l'ubicazione del DNS.</p>
3155 <p>/etc/resolv.conf:</p>
3159 <li><tt class="docutils literal"><span class=
3160 "pre">nameserver</span></tt>: indica il nameserver da
3161 utilizzare, indicato con l'indirizzo IP.</li>
3163 <li><tt class="docutils literal"><span class=
3164 "pre">domain</span></tt>: indica il nome di dominio
3165 della rete attuale, vedi voce successiva.</li>
3167 <li><tt class="docutils literal"><span class=
3168 "pre">search</span></tt>: nome di dominio usato dalla
3169 rete sul quale cercare gli hosts. Ad esempio se
3170 impostato su <tt class="docutils literal"><span class=
3171 "pre">piffa.net</span></tt> pingando l' host <tt class=
3172 "docutils literal"><span class="pre">bender</span></tt>
3173 viene automaticamente fatto un tentativo di ricerca per
3174 <tt class="docutils literal"><span class=
3175 "pre">bender.piffa.net</span></tt>.</li>
3179 <p>Predisponendo l'infrastruttura di rete della vostra LAN
3180 e' consigliabile impostare sempre un DNS cache sul vostro
3181 server locale per i vari client. In questo modo in caso di
3182 malfunzionamento del DNS o necessita' di intervenire /
3183 sostituire i DNS non sara' piu' necessario dover
3184 reimpostare ogni singolo client della LAN: bastera'
3185 modificare l'impostazione del server DNS cache, ad esempio
3186 per utilizzare un nuovo forwarder, o modificare al volo un
3187 record DNS. La modifica, anche detta
3188 <em>mascheramento</em>, di un record come il <em>server
3189 smtp</em> o un <em>MX</em> potrebbe tirarvi rapidamente
3190 fuori dai guai nel caso di un problema improvviso con la
3191 posta elettronica o qualunque altro servizio che possiate
3192 reindirizzare col DNS.</p>
3194 <p>Un server DHCP e un DNS cache come <tt class=
3195 "docutils literal"><span class="pre">Dnsmasq</span></tt>
3196 possono permettervi di risolvere al volo (o per lo meno
3197 reindirizzare) molte delle problematiche relative alla
3198 configurazione della rete della vostra LAN: dover
3199 intervenire manualmente su decine di client per modificare
3200 le impostazioni di SMTP | gateway | SMTP | proxy.</p>
3202 <p>Si veda anche la pagina man di resolv.conf.</p>
3204 <div class="warning">
3205 <p class="first admonition-title">Avvertenza</p>
3207 <p class="last">Attenzione: se si usa un client DHCP, ppp
3208 (ADSL compresa) o simile questo file potrebbe' essere
3209 riscritto automaticamente in base a quanto ottenuto dal
3210 DHCP. Si veda la documentazione del pacchetto <tt class=
3211 "docutils literal"><span class=
3212 "pre">resolvconf</span></tt>.</p>
3216 <div class="section" id="etc-hosts">
3217 <h2><a class="toc-backref" href=
3218 "#id57">4.8 /etc/hosts</a></h2>
3220 <p>Tabella statica per l'associazione tra IP e nomi di
3222 <pre class="literal-block">
3227 127.0.0.1 localhost.localdomain localhost 10.10.208.162
3228 daniela daniela.piffa.net 10.10.208.254 mirror
3229 mirror.piffa.net 91.191.138.15 thepiratebay.org
3230 192.168.0.11 chrome chrome.mydomain.com
3233 <p>Il contenuto e' un associazione tra un <em>IP</em> e
3234 stringhe di testo (anche piu' di una per IP) es: <tt class=
3235 "docutils literal"><span class="pre">mirror</span></tt> e
3236 <tt class="docutils literal"><span class=
3237 "pre">mirror.piffa.net</span></tt>.</p>
3239 <p>Il problema e' la gestione di questo file: quando gli
3240 host cambiano IP si devono aggiornare i records, e poi c'e'
3241 il problema di distribuire questo file tra i vari hosts
3242 della propria LAN. Un metodo semplice per distribuire
3243 questo file e' utilizzare <tt class=
3244 "docutils literal"><span class="pre">Dnsmasq</span></tt>:
3245 questo infatti legge e onora il file <tt class=
3246 "docutils literal"><span class="pre">hosts</span></tt> che
3247 avete prodotto e lo <em>distribuisce</em> ai clients
3248 tramite le normali query DNS.</p>
3250 <p>Modificare (riconducendola a un IP interno, cosi'
3251 annullandola) la risoluzione di un nome di dominio e' un
3252 modo drastico e funzionale per <em>annullarlo</em>
3253 rendendolo indisponibile alla propria rete locale, ad
3254 esempio aggiungere al file <tt class=
3255 "docutils literal"><span class=
3256 "pre">/etc/hosts</span></tt>:</p>
3257 <pre class="literal-block">
3258 127.0.0.1 www.facebook.com
3261 <p>Impedira' agli utenti della LAN di raggiungere
3262 <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
3265 <div class="section" id="hostname">
3266 <h2><a class="toc-backref" href=
3267 "#id58">4.9 Hostname</a></h2>
3269 <p>Ogni computer ha un <em>proprio nome</em> visualizzabile
3270 (e modificabile) con il comando <tt class=
3271 "docutils literal"><span class=
3272 "pre">hostname</span></tt>.</p>
3274 <p>Per modificare in modo permanente il nome del computer
3275 si modifichi il contenuto del file <tt class=
3276 "docutils literal"><span class=
3277 "pre">/etc/hostname</span></tt>.</p>
3279 <p>Tipicamente si vuole mantenere una correlazione tra il
3280 nome dell' host, o meglio la stringa con cui il server si
3281 qualifica all'esterno, e il <em>PTR</em> dell'IP. Nel caso
3282 di <em>servizi virtuali</em> ci sara' un <em>nome
3283 server</em> principale associato al <em>PTR</em> condiviso.
3284 Non e' automatico che un servizio, ad esempio un server di
3285 posta, si qualifichi leggendo il contenuto di questo file e
3286 magari aggiungendo come suffisso il dominio di cui fa parte
3287 l' host: a volte questo parametro puo' essere specificato
3288 nel file di configurazione del servizio:</p>
3289 <pre class="literal-block">
3290 * Squid: ``visible_hostname``
3292 * Postfix: ``myhostname``
3295 <p>Si faccia attenzione a non aver un hostname puramente
3296 numerico: ad es. <tt class="docutils literal"><span class=
3297 "pre">161</span></tt>. E' opportuno che il nome sia
3298 comunque un alfanumerico: <tt class=
3299 "docutils literal"><span class="pre">host-161</span></tt> o
3304 <div class="section" id="dnsmasq">
3305 <h1><a class="toc-backref" href=
3306 "#id59">5 DNSmasq</a></h1>
3308 <p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
3309 forwarder, server DHCP, e' caratterizzato dalla facilita' di
3310 configurazione, limitato uso di risorse, adattabilita' a
3311 connessioni <em>dinamiche</em> come ADSL o altre punto a
3312 punto (anche via cellulari) per condividere rapidamente la
3313 rete (cosa molto utile se ci dovesse trovare a ridare
3314 connettetivita' a una rete momentaneamente sprovvista), dalla
3315 possibilita' di modificare rapidamente i record DNS serviti
3316 alla rete anche grazie alla distribuzione del file <tt class=
3317 "docutils literal"><span class="pre">/etc/hosts</span></tt>
3318 locale. Puo' essere anche utilizzato come <cite>server per il
3320 <http://www.debian-administration.org/articles/478>_</cite>
3323 <p>Dnsmasq e' un interessante alternativa all'uso del server
3324 DNS Bind in modalita' <em>forwarding e cache-only</em> (non
3325 autoritativo) accompagnato dal server DHCPd. I vantaggi
3329 <li>Leggerezza: puo' essere fatto girare su una macchina
3330 relativamente debole in caso di bisogno.</li>
3332 <li>Rapidita' di configurazione (in particolare per servire
3333 dei record A / MX alla rete, modificando al volo i valori
3334 originali ospitati sul server DNS pubblico).</li>
3336 <li>Ben integrato con connessioni PPP : e' ingrado di
3337 rilevare i cambiamenti dei dns suggeriti e impostarli come
3338 forwarders (utile se dovete rendere disponibile rapidamente
3339 una connessione a internet a una rete in difficolta').</li>
3342 <p>Tutto cio' rende Dnsmasq una soluzione valida in
3343 particolare quando si deve intervenire in una rete
3344 pre-esistente in cui il server principale e' in crisi: si
3345 potra' utilizzare Dnsmasq anche su una macchina piu' debole e
3346 <em>mascherare</em> i servizi al momento non disponibili.
3347 Molto utile per scopi didattici, sopratutto per testare
3348 server SMTP impostando al volo i campi MX per nomi di dominio
3351 <div class="section" id="configurazione">
3352 <h2><a class="toc-backref" href=
3353 "#id60">5.1 Configurazione</a></h2>
3355 <p>Vediamo alcune direttive di basi del file di
3356 configurazione <tt class="docutils literal"><span class=
3357 "pre">/etc/dnsmasq.conf</span></tt> utili per la
3358 configurazione sia del DNS cache che per il DHCP
3361 <dl class="docutils">
3362 <dt>domain-needed</dt>
3364 <dd>Non inoltrare query ai server DNS esterni per nomi
3365 semplici (es andrea, portatile, pippo) che verranno
3366 risolti solo in locale o causeranno direttamente una
3367 risposta <em>not found</em> .</dd>
3371 <dd>Simile alla voce precedente ma per i reverse
3376 <dd>Nome di dominio della rete da passare ai client.</dd>
3378 <dt>expand_hosts</dt>
3380 <dd>Aggiunge il <tt class="docutils literal"><span class=
3381 "pre">nome</span> <span class="pre">host</span></tt> (
3382 <tt class="docutils literal"><span class=
3383 "pre">/etc/hostname</span></tt>) dei client al nome di
3384 dominio per qualificarli in rete, senza bisogno di dover
3385 comporre a un elenco statico di record nel file
3386 <tt class="docutils literal"><span class=
3387 "pre">/etc/hosts</span></tt> o nello stesso file di
3388 configurazione di dnsmasq. Es: se un vostro client si
3389 chiama <tt class="docutils literal"><span class=
3390 "pre">chrome</span></tt> e il vostro dominio <tt class=
3391 "docutils literal"><span class=
3392 "pre">piffa.net</span></tt> dnsmasq rendera' disponibile
3393 il campo <em>A</em> per il dominio <tt class=
3394 "docutils literal"><span class=
3395 "pre">chrome.piffa.net</span></tt> diretto all'ip che
3396 verra' assegnato al client.</dd>
3400 <div class="section" id="dhcp">
3401 <h2><a class="toc-backref" href=
3402 "#id61">5.2 DHCP</a></h2>
3404 <p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
3405 al file di configurazione il <em>range</em> degli IP che si
3406 vuole assegnare ai client con il <em>lease time</em> (tempo
3407 di rilascio: quanto a lungo saranno validi gli IP
3408 assegnati) espresso in ore.</p>
3410 <p>Si faccia <em>attenzione</em>: in una rete puo' essere
3411 presente <strong>un solo server DHCP</strong>, o per meglio
3412 dire qualunque server DHCP ascolta sul broadcast <tt class=
3413 "docutils literal"><span class=
3414 "pre">255.255.255.255</span></tt> e potrebbe rispondere a
3415 un pacchetto di richiesta DHCP. Quindi non fate partire
3416 inavvertitamente un server DHCP in una rete gia' servita e
3417 <strong>non vi azzardate ad andare in giro con un portatile
3418 con un server DHCP attivo</strong> nelle reti altrui.
3419 Questo vale anche per i laboratori di informatica dei corsi
3420 di reti: non fate partire il vostro server DHCP se siete
3421 collegati alla rete interna!</p>
3423 <p>/etc/dnsmasq.conf (riga 118):</p>
3424 <pre class="literal-block">
3425 dhcp-range=192.168.0.20,192.168.0.50,24h
3429 <div class="section" id="dns-cache">
3430 <h2><a class="toc-backref" href=
3431 "#id62">5.3 DNS cache</a></h2>
3433 <p>Dnsmasq lavora di default come cache dns: inserire al
3434 file <tt class="docutils literal"><span class=
3435 "pre">/etc/resolv.conf</span></tt> il nameserver localhost
3436 in cima alla lista dei <em>nameserver</em> disponibili.</p>
3439 nameserver 127.0.0.1
3442 <p>Questo pero' potrebbe essere problematico se un altro
3443 servizio, ad esempio il DHCP client, riscrive il contenuto
3444 del file <tt class="docutils literal"><span class=
3445 "pre">/etc/resolv.conf</span></tt>. Per superare il
3446 problema si aggiunga (riga 20) al file di configurazione
3447 <tt class="docutils literal"><span class=
3448 "pre">/etc/dhcp3/dhclient.conf</span></tt></p>
3449 <pre class="literal-block">
3450 prepend domain-name-servers 127.0.0.1;
3453 <p>Oppure potrebbe essere il nostro <em>PPP client</em>
3454 (per la connessione ADSL) a intervenire sul file <tt class=
3455 "docutils literal"><span class=
3456 "pre">//etc/resolv.conf</span></tt>, si modifichi quindi
3457 <tt class="docutils literal"><span class=
3458 "pre">/etc/ppp/peers/dsl-provider</span></tt> commentando
3459 <tt class="docutils literal"><span class=
3460 "pre">usepeerdns</span></tt>. Se la vostra connessione ad
3461 internet e' ADSL raramente dovreste aver bisogno di
3462 cambiare i DNS una volta impostati (a meno che non usiate
3467 <div class="section" id="bind-dns-autoritativo">
3468 <h1><a class="toc-backref" href=
3469 "#id63">6 Bind : DNS Autoritativo</a></h1>
3471 <p>Le soluzioni viste possono bastare per la rete locale o
3472 per fare delle prove, ma prima o poi verra' il momento in cui
3473 si e' chiamati a gestire dei domini su internet: lo standard
3474 e' da sempre <em>Bind</em> ( demone <em>named</em>), ora alla
3477 <p>Installare i pacchetti:</p>
3478 <pre class="literal-block">
3482 <div class="section" id="id4">
3483 <h2><a class="toc-backref" href=
3484 "#id64">6.1 DNS cache</a></h2>
3486 <p>Bind appena installato funzionera' come DNS cache: si
3487 faccia un test con un <tt class=
3488 "docutils literal"><span class="pre">dig</span>
3489 <span class="pre">@localhost</span></tt> . Bind a
3490 differenza di Dnsmasq e' autonomo: non ha bisogno di
3491 forwardare (inoltrare) le query a un DNS esterno: queste
3492 verranno risolte direttamente da Bind partendo dai <em>DNS
3493 root servers</em>.</p>
3495 <p>E' comunque possibile impostare dei DNS forwarders,
3496 tipicamente i DNS server forniti dal proprio provider, per
3497 velocizzare le query:</p>
3499 <p>/etc/bind/named.conf.options (riga 13):</p>
3500 <pre class="literal-block">
3506 <p>Nel caso si voglia usare Bind solo come server DNS cache
3507 per la propria LAN senza ospitare delle zone DNS pubbliche
3508 sara' il caso di limitare gli accessi al server alla sola
3511 <p>/etc/bind/named.conf.options (riga 19):</p>
3512 <pre class="literal-block">
3513 // Se il proprio server ha IP 10.10.208.254
3514 // sulla rete LAN privata:
3515 listen-on { 10.10.208.254; }
3518 <p>E non si lasci il server in ascolto su uno degli
3519 eventuali indirizzi IP pubblici.</p>
3521 <p>Se questo non fosse possibile si puo' sempre lavorare su
3522 una <em>acl</em>:</p>
3524 <p>/etc/bind/named.conf</p>
3525 <pre class="literal-block">
3527 10.10.208.0/24 ; 127.0.0.0/8 ;
3531 <p>Per poi aggiungere all'interno della stanza options la
3532 direttiva che abilita' l'entita' <tt class=
3533 "docutils literal"><span class=
3534 "pre">localnet</span></tt>:</p>
3536 <p>/etc/bind/named.conf.options</p>
3537 <pre class="literal-block">
3538 allow-query {"localnet" ;} ;
3542 <div class="section" id="ospitare-una-zona">
3543 <h2><a class="toc-backref" href=
3544 "#id65">6.2 Ospitare una zona</a></h2>
3546 <p>Se avete acquistato un nome di dominio e vi serve un
3547 software DNS per gestirlo Bind e' la scelta piu' diffusa.
3548 Ora vedremo come configurare una <em>zona</em> (come
3549 piffa.net) in modo che Bind sia autoritativoper questa,
3550 rispondendo alle query DNS di tutta la rete internet.</p>
3552 <div class="section" id="named-conf-local">
3553 <h3><a class="toc-backref" href=
3554 "#id66">6.2.1 named.conf.local</a></h3>
3556 <p>Prima di tutti impostiamo il server bind per gestire
3557 la zona, per non fare confusione e' opportuno inserire le
3558 propie zone DNS nel file <tt class=
3559 "docutils literal"><span class=
3560 "pre">named.conf.local</span></tt> e non in <tt class=
3561 "docutils literal"><span class=
3562 "pre">named.conf</span></tt>.</p>
3564 <p>named.conf.local:</p>
3565 <pre class="literal-block">
3567 // Do any local configuration here
3570 // Consider adding the 1918 zones here, if they are not used in your
3572 //include "/etc/bind/zones.rfc1918";
3576 file "/etc/bind/pz/piffa.net";
3580 <dl class="docutils">
3581 <dt>type master</dt>
3583 <dd>Il nostro server DNS sara' il principale, al quale
3584 poi potremo affiancare dei DNS secondari nel caso
3585 questo non sia disponibile.</dd>
3587 <dt>file "/etc/bind/pz/piffa.net"</dt>
3589 <dd>Dove verranno inserite le informazioni vere e
3590 propie di questa zona.</dd>
3594 <div class="section" id="configurazione-della-zona">
3595 <h3><a class="toc-backref" href=
3596 "#id67">6.2.2 Configurazione della
3599 <p>Ora dovremo preparare il file contenente i record DNS
3600 della zona <em>piffa.net</em>, come abbiamo indicato
3601 prima questi saranno contenuti nel file <tt class=
3602 "docutils literal"><span class=
3603 "pre">/etc/bind/pz/piffa.net</span></tt> . Tenere le zone
3604 dentro una sottocartella e' buona abitudine, usare
3605 <tt class="docutils literal"><span class=
3606 "pre">pz</span></tt> per queste e' una vecchia
3610 <pre class="literal-block">
3611 ; Zona per il dominio di secondo livello piffa.net
3614 @ IN SOA ns1.piffa.net. hostmaster.piffa.net. (
3616 8H ; refresh (8 hours)
3617 2H ; retry (2 hours)
3618 4W ; expire (4 weeks)
3619 1D ; minimum (1 day)
3626 TXT "Piffanet main site"
3632 test.piffa.net. A 94.23.63.105
3633 *.piffa.net. A 94.23.63.105 ; *catch all domain
3638 <p>All'interno di questo file si possono inserire dei
3639 commenti con il carattere <tt class=
3640 "docutils literal"><span class="pre">;</span></tt>
3641 (punto-e-virgola), si faccia attenzione alla rigida
3642 sintassi: apertura e chiusura delle parentesi tonde nella
3643 parte <tt class="docutils literal"><span class=
3644 "pre">IN</span> <span class="pre">SOA</span></tt>, uso
3645 del <tt class="docutils literal"><span class=
3646 "pre">punto</span></tt> finale per precisare un nome di
3647 dominio specifico (<em>FQDN</em>: Fully-qualified Domain
3648 Name) come <tt class="docutils literal"><span class=
3649 "pre">test.piffa.net.</span></tt> a differenza degli
3650 altri domini di terzo livello come <tt class=
3651 "docutils literal"><span class=
3652 "pre">pop,imap,smtp</span></tt> .</p>
3654 <p>La zona inizia con una direttiva <tt class=
3655 "docutils literal"><span class="pre">$TTL</span>
3656 <span class="pre">3D</span></tt> (RFC 2308) che indica la
3657 durata (in questo caso tre giorni) che ogni record
3658 dovrebbe avrebbe nella cache degli altri serber DNS.
3659 Questo valore dovrebbe essere superiore a un giorno, se
3660 non modificate spesso i valori dei vostri record DNS e'
3661 consigliabile settarlo a 2/3 settimane in modo da
3662 limitare la frequenza delle query al propio server.
3663 Questo parametro puo' essere modificato per singoli
3665 <pre class="literal-block">
3666 $TTL 3D ; 3 giorni: default se non specificato altrimenti
3667 rapido 5h IN A 94.23.63.105 ; usa un TTL di 5 ore
3668 lento 3w IN A 94.23.63.105 ; usa un TTL di 3 settimane
3669 normale IN A 94.23.63.105 ; usa il TTL di default: 3 giorni
3672 <p>Segue poi il nome della zona, indicato con la
3673 <tt class="docutils literal"><span class=
3674 "pre">@</span></tt> per richiamare la zona originale
3675 precisata nel file <tt class=
3676 "docutils literal"><span class=
3677 "pre">named.conf.options</span></tt> . Segue il campo
3678 <tt class="docutils literal"><span class=
3679 "pre">SOA</span></tt>.</p>
3681 <div class="section" id="soa-start-of-authority-record">
3682 <h4><a class="toc-backref" href=
3683 "#id68">6.2.2.1 SOA: Start of
3684 Authority Record</a></h4>
3686 <p>Il record SOA puo' comparire solo una volta in una
3687 zona, contiene informazioni relative all'autorita' del
3690 <dl class="docutils">
3691 <dt>ns1.piffa.net. name-server</dt>
3693 <dd>primary master DNS di questo dominio.</dd>
3695 <dt>hostmaster.piffa.net. email-addr</dt>
3697 <dd>email-addr: indirizzo email della persona
3698 responsabile di questa zona, il primo punto viene
3699 tradotto in una <em>chiocciola</em> <tt class=
3700 "docutils literal"><span class="pre">@</span></tt>
3701 dato che questo carattere ha un'altro utilizzo
3702 all'interno di questo file. Il referente della zona
3703 <strong>deve</strong> essere un email valido e
3704 controllato, come consuetudine si usa <tt class=
3705 "docutils literal"><span class=
3706 "pre">hostmaster@dominio.tilde</span></tt> .</dd>
3708 <dt>200905245 serial number</dt>
3710 <dd>Questo valore serve per indicare quando e' stato
3711 modificato questo file di configurazione, secondo il
3712 formato <tt class="docutils literal"><span class=
3713 "pre">yyyymmddss</span></tt>: <tt class=
3714 "docutils literal"><span class="pre">yyyy</span></tt>
3715 = anno, ''mm'' = mese, ''dd'' = giorno, ''ss'' =
3716 seriale. Il seriale che deve essere sempre
3717 specificato anche per una cifra, va incrementato di
3718 una unita' nel caso vengano fatte piu' modifiche
3719 <em>nello stesso giorno</em>.</dd>
3723 <dd>Indica ai DNS secondari quanto tempo attendere
3724 per cercare di aggiornare i loro dati con il DNS
3729 <dd>Intervallo di tempo per il DNS slave (secondario)
3730 da aspettare prima di cercare di ricontattare il
3731 <em>master</em> in caso di problemi col
3732 <em>refresh</em>.</dd>
3736 <dd>Indica quando i dati dei dns secondarinon sono
3737 piu' autoritativi in caso di impossibilita' degli
3738 <em>slaves</em> di ri-aggiornarsi con il
3739 <em>master</em>. Consigliato un valore di 2/4
3744 <dd>Questo valore indicava il TTL fino alla versione
3745 8 di Bind, da Bind 9 e secondo la RFC2308 indica la
3746 durata del <em>negative caching</em>, quanto i
3747 resolvers (ad esempio un server dns cache) puo'
3748 mantenere un record <em>negativo</em> (che non indica
3749 la corrispondenza tra un nome di dominio e un ip, ma
3750 la non esistenza del record). Nell'uso per il
3751 negative caching viene fissato un valore massimo di 3
3752 ore dalla RFC 2308.</dd>
3756 <div class="section" id="altri-campi">
3757 <h4><a class="toc-backref" href=
3758 "#id69">6.2.2.2 Altri campi:</a></h4>
3760 <p>All'interno della zona possono essere utilizati vari
3761 tipi di records (RR):</p>
3763 <dl class="docutils">
3766 <dd>Informazioni testuali associate ad un record</dd>
3770 <dd>Name Server della zona. Non deve essere un
3775 <dd>Indirizzo ipv4 da associare al record</dd>
3779 <dd>Indirizzo ipv6 da associare al record</dd>
3783 <dd>Canonical Name: un alias per un host: ad esempio
3784 per il dominio piffa.net possiamo settare degli alias
3785 come <tt class="docutils literal"><span class=
3786 "pre">www.piffa.net,</span> <span class=
3787 "pre">http.piffa.net,</span> <span class=
3788 "pre">virtual.piffa.net,</span> <span class=
3789 "pre">ftp.piffa.net,</span> <span class=
3790 "pre">imap.piffa.net</span></tt>. Comodo quando
3791 diversi alias sono sempre riferiti allo stesso
3796 <dd>Mail Exchanger: server di posta che si occupera'
3797 della posta elettronica per questo dominio.E'
3798 opportuno avere almeno un server di posta di back-up,
3799 per indicare la priorita' di un MX rispettoad un
3800 altro si usa un valore di 2 cifre: il valore piu'
3801 basso indica priorita' piu' bassa. Es: <tt class=
3802 "docutils literal"><span class=
3803 "pre">MX</span> <span class=
3804 "pre">10</span> <span class=
3805 "pre">smtp.piffa.net.</span></tt> per il server SMTP
3806 principale e <tt class=
3807 "docutils literal"><span class="pre">MX</span>
3808 <span class="pre">40</span> <span class=
3809 "pre">smtp2.piffa.net</span></tt> per il secondario.
3810 Non deve essere un cname.</dd>
3814 <dd>Reverse look-up, usato per la mappatura inversa
3815 di un indirizzo ip a una stringa identificativa
3816 dell'host. Si noti che per poter modificare questi
3817 record si deve avere <em>in gestione</em> la <em>zona
3818 IP</em>, se cosi' non fosse si dovra' chiedere al
3819 propio provider la modifica di questo record per il
3820 propio ip. Links: <a class="reference external" href=
3821 "http://www.zytrax.com/books/dns/ch3/">http://www.zytrax.com/books/dns/ch3/</a></dd>
3827 <div class="section" id="dns-slave">
3828 <h2><a class="toc-backref" href=
3829 "#id70">6.3 DNS slave</a></h2>
3831 <p>Data l'importanza del servizio DNS e' necessario avere
3832 ridondanza per i server DNS che ospitano i vostri dati: in
3833 caso di indisponibilita' del server <em>master</em> (nel
3834 caso fosse il solo a tenere i dati questo comporterebbe la
3835 <em>scomparsa</em> di tutti i servizi / host da esso
3836 seviti!) il client potrebbe contattare uno degli
3839 <p>Gli slave recuperano i dati dei recordos RR direttamente
3840 dal master e non sara' quindi necessario dover mantenere
3841 manualmente il file di configurazione della zona sugli
3842 slaves, ogni volta che aggiorneremo il master questi dati
3843 si propaghera' agli slaves automaticamente.</p>
3845 <p>Per attivare uno <em>slave</em> per la nostra zona di
3846 esempio <tt class="docutils literal"><span class=
3847 "pre">piffa.net</span></tt> si inserisca nel file
3848 <tt class="docutils literal"><span class=
3849 "pre">named.conf.local</span></tt> dello slave server:</p>
3850 <pre class="literal-block">
3853 file "/etc/bind/pz/piffa.net";
3854 masters { 192.168.0.1; };
3858 <p>Facendo ripartire Bind il file <tt class=
3859 "docutils literal"><span class=
3860 "pre">/etc/bind/pz/piffa.net</span></tt> viene creato
3861 automaticamente.</p>
3863 <p>Segue un estratto di <tt class=
3864 "docutils literal"><span class=
3865 "pre">/var/log/syslog</span></tt> al <tt class=
3866 "docutils literal"><span class="pre">restart</span></tt> di
3867 <tt class="docutils literal"><span class=
3868 "pre">bind9</span></tt> sullo slave:</p>
3869 <pre class="literal-block">
3870 ... slave named[2256]: zone piffa.net/IN: loaded serial 200905245
3871 ... slave named[2256]: running
3872 ... slave named[2256]: zone piffa.net/IN: sending notifies (serial 200905245)
3873 ... slave named[2256]: client 192.168.0.1#1464: received notify for zone 'piffa.net'
3874 ... slave named[2256]: zone piffa.net/IN: notify from 192.168.0.1#1464: zone is up to date
3877 <div class="warning">
3878 <p class="first admonition-title">Avvertenza</p>
3880 <p class="last">Bind9 (versione 9.3 presente in Debian
3881 Lenny) richiede una esplicita autorizzazione alla
3882 notifica per lo stesso server slave, che in fase di avvio
3883 interroghera' (inviando un notify) se' stesso per
3884 valutare se i dati relativi alla zona di cui e' slave
3885 sono aggiornati. Si aggiunga quindi al file <tt class=
3886 "docutils literal"><span class=
3887 "pre">/etc/bind/named.conf.options</span></tt> dello
3888 slave: <tt class="docutils literal"><span class=
3889 "pre">allow-notify</span> <span class="pre">{</span>
3890 <span class="pre">192.168.0.1;</span> <span class=
3891 "pre">};</span></tt> all'interno della stanza <tt class=
3892 "docutils literal"><span class="pre">options</span></tt>,
3893 in cui l'inidirizzo IP inserito e' quello dello stesso
3898 <div class="section" id="aggiornamento-dinamico-nsupdate">
3899 <h2><a class="toc-backref" href=
3900 "#id71">6.4 Aggiornamento dinamico:
3903 <p>Dalla versione 8 di Bind e' dsponibile l'utility
3904 <tt class="docutils literal"><span class=
3905 "pre">nsupdate</span></tt> (disponibile nel pacchetto
3906 <tt class="docutils literal"><span class=
3907 "pre">dnsutils</span></tt>) per aggiornare automaticamente
3908 i record di una zona secondo il paradigma client / server (
3909 RFC2136 ) . Posto che abbiate a disposizione un server DNS
3910 Bind on-line su un indirizzo IP fisso e un zona da gestire
3911 (che potrebbe essere anche solo la delega di un dominio di
3912 terzo livello come <em>casa.miodominio.net</em>) sara'
3913 possibile aggiornare automaticamente i record che tirano a
3914 degli indirizzi IP <em>pubblici ma dnamici</em>, come
3915 quelli spesso messi a disposizione dei provider per le
3916 connessioni ad internet residenziali, in modo da poter
3917 rendere sempre raggiungibile la vostra workstation a casa
3918 anche dopo un aggiornamento dell'ip dinamico associato alla
3921 <p>L'auenticazione del client nsupdate che avra' la
3922 possibilita' di aggiornare il server DNS master avviene
3923 tramite <em>Transaction signatures</em> (TSIG, RFC2845)
3924 usando un algoritmo di criptazione dati asimmetrico
3925 <em>HMAC-MD5</em> : generata una coppia di chiavi sul
3926 client / nsupdate con l'utility si dovra' trasferire la
3927 chiave pubblica sul server <em>master</em>, che verra'
3928 configurato per onorare gli aggiornamenti (eliminazione e
3929 inserimento di record RR) autenticati dalla chiave
3932 <div class="section" id="configurazione-client-nsupdate">
3933 <h3><a class="toc-backref" href=
3934 "#id72">6.4.1 Configurazione client
3937 <p>Sul client, sul quale non deve essere necessariamente
3938 installato un server DNS Bind ma la sola utility
3939 <tt class="docutils literal"><span class=
3940 "pre">nsupdate</span></tt>, generiamo la coppia di chiavi
3941 con l'utility <tt class="docutils literal"><span class=
3942 "pre">dnssec-keygen</span></tt> installabile tramite il
3943 pacchetto <tt class="docutils literal"><span class=
3944 "pre">bind9utils</span></tt>:</p>
3945 <pre class="literal-block">
3946 dnssec-keygen -a HMAC-MD5 -b 512 -n USER home.piffa.net.
3949 <p>Otterremo le due chiavi <tt class=
3950 "docutils literal"><span class=
3951 "pre">Khome.piffa.net.+157+04331.key</span>
3953 "pre">Khome.piffa.net.+157+04331.private</span></tt>, la
3954 chiave pubblica dovra' essere resa noto al server master
3955 che ricevera' l'update dei records.</p>
3958 <div class="section" id=
3959 "configurazione-server-riconoscimento-chiave">
3960 <h3><a class="toc-backref" href=
3961 "#id73">6.4.2 Configurazione server:
3962 riconoscimento chiave</a></h3>
3964 <dl class="docutils">
3965 <dt>Per rendere nota al server la chiave pubblica
3966 generata sul client si aggiunga quindi al file
3967 <tt class="docutils literal"><span class=
3968 "pre">/etc/bind/named.conf</span></tt> sul
3972 <dl class="first last docutils">
3973 <dt>key home.piffa.net. {</dt>
3975 <dd>algorithm HMAC-MD5; secret
3976 "txfAkNTScANEu2V73mCeiDpXNc3pmf+7ONOoKnTKQKIZMzierSmeHjK5
3977 Z8ntnByt/PJwv26jCIsVh8n+xzVsRw=="; };</dd>
3983 <p class="first admonition-title">Nota</p>
3985 <p class="last">La parte <tt class=
3986 "docutils literal"><span class=
3987 "pre">secret</span></tt>, che potete leggere
3988 direttamente nel file *.key della chiave genearta, e'
3989 scritto <em>tutto sulla stessa riga</em> senza ritorni
3994 <div class="section" id="server-gestione-dell-intera-zona">
3995 <h3><a class="toc-backref" href=
3996 "#id74">6.4.3 Server: gestione
3997 dell'intera zona</a></h3>
3999 <p>Sul server modifichiamo il file di configurazione
4000 <tt class="docutils literal"><span class=
4001 "pre">named.conf.local</span></tt> della zona della quale
4002 vogliamo concedere l'aggiornamento al client:</p>
4003 <pre class="literal-block">
4006 file "/etc/bind/pz/piffa.net" ;
4013 <dl class="docutils">
4014 <dt>Sara' necessario assicurarsi che il demone di Bind
4015 sia in grado di modificare il file <tt class=
4016 "docutils literal"><span class=
4017 "pre">/etc/bind/pz/piffa.net</span></tt>: dato che
4018 questo file ora sara' gestito da lui si proceda a
4019 cedergli la propieta' del file::</dt>
4021 <dd>chown bind /etc/bind/pz/piffa.net</dd>
4024 <p>Altro problema che si potrebbe porre: gli orologi di
4025 sistema dei due host devono essere sincronizzati per
4026 poter valutare l'opportunita' di un aggiornamento: si
4027 consigla di installare su entrambi l'utility <tt class=
4028 "docutils literal"><span class="pre">ntpdate</span></tt>
4029 e di eseguirla facendo riferimento ai time server di
4031 <pre class="literal-block">
4032 apt-get install ntpdate
4036 <p>Ora possiamo provare dal client a effettuare
4037 l'iserimento di un record per testarne il
4039 <pre class="literal-block">
4040 # nsupdate -k Khome.piffa.net.+157+04331.private -v
4041 > server ns1.piffa.net
4042 > update add home.piffa.net. 86400 A 192.168.0.2
4044 Outgoing update query:
4045 ;; ->>HEADER<<- opcode: UPDATE, status: NOERROR, id: 0
4046 ;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0
4048 home.piffa.net. 86400 IN A 192.168.0.1
4054 <p>Per comprendere meglio l'uso dell'utility <tt class=
4055 "docutils literal"><span class="pre">nsupdate</span></tt>
4056 si consiglia la lettura della relativa pagina man. Nella
4057 prima riga viene invocato il comando <tt class=
4058 "docutils literal"><span class="pre">nsupdate</span></tt>
4059 impostando col <em>flag</em> <tt class=
4060 "docutils literal"><span class="pre">-k</span></tt> la
4061 chiave <em>privata</em> generata precedentemente, con
4062 <tt class="docutils literal"><span class=
4063 "pre">server</span></tt> si imposta quale server NS
4064 autoritario della zona (che abbiamo precedentemente
4065 configurato per ricevere gli aggiornamenti) vogliamo
4066 contattare. Alla riga sucessiva <tt class=
4067 "docutils literal"><span class="pre">update</span></tt>
4068 viene aggiunto un record <tt class=
4069 "docutils literal"><span class="pre">A</span></tt> per la
4070 il dominio <tt class="docutils literal"><span class=
4071 "pre">home.piffa.net</span></tt> indirizzato all'IP
4072 <tt class="docutils literal"><span class=
4073 "pre">192.168.0.2</span></tt>, poi <tt class=
4074 "docutils literal"><span class="pre">show</span></tt>
4075 mostra quanto ci si prepara a comunicare al server con il
4076 finale <tt class="docutils literal"><span class=
4077 "pre">send</span></tt> .</p>
4079 <p>Si noti che in questo modo <em>l'intera</em> zona
4080 piffa.net e suscettibile di essere modificata dal client,
4081 che potra' eliminare e inserire qualunque record. E'
4082 possibile gestire in modo piu' granulare la zona, ad
4083 esempio concedendo al client i privilegi per gestire solo
4084 una parte della zona o i tipo di record da gestire.</p>
4088 <div class="section" id="link-suggeriti">
4089 <h2><a class="toc-backref" href=
4090 "#id75">6.5 Link suggeriti:</a></h2>
4093 <li>DNS for Rocket Scientists <a class=
4094 "reference external" href=
4095 "http://www.zytrax.com/books/dns/">http://www.zytrax.com/books/dns/</a></li>
4097 <li>DNS HOWTO <a class="reference external" href=
4098 "http://www.langfeldt.net/DNS-HOWTO/BIND-9/">http://www.langfeldt.net/DNS-HOWTO/BIND-9/</a></li>
4103 <div class="section" id="samba">
4104 <h1><a class="toc-backref" href=
4105 "#id76">7 Samba</a></h1>
4107 <p>Samba e' un progetto libero che fornisce servizi di
4108 condivisione di file e stampanti a client SMB/CIFS.</p>
4110 <p>Samba e' liberamente disponibile, al contrario di altre
4111 implementazioni SMB/CIFS, e permette di ottenere
4112 interoperabilita' tra Linux, Unix, Mac OS X e Windows.</p>
4114 <p>Samba e' un software che puo' girare su piattaforme che
4115 non siano Microsoft Windows, per esempio, UNIX, Linux, IBM
4116 System 390, OpenVMS e altri sistemi operativi. Samba utilizza
4117 il protocollo TCP/IP utilizzando i servizi offerti sul server
4118 ospite. Quando correttamente configurato, permette di
4119 interagire con client o server Microsoft Windows come se
4120 fosse un file e print server Microsoft agendo da Primary
4121 Domain Controller (PDC) o come Backup Domain Controller, puo'
4122 inoltre prendere parte ad un dominio Active Directory.</p>
4124 <div class="section" id="pacchetti">
4125 <h2><a class="toc-backref" href=
4126 "#id77">7.1 Pacchetti</a></h2>
4128 <p>Pacchetti da installare per utilizzare Samba in
4129 modalita' client <a class="footnote-reference" href="#id6"
4130 id="id5" name="id5">[2]</a></p>
4131 <pre class="literal-block">
4135 <p>Pacchetti da installare per utilizzare Samba in
4136 modalita' server:</p>
4137 <pre class="literal-block">
4138 samba smbfs smbclient
4141 <table class="docutils footnote" frame="void" id="id6"
4148 <tbody valign="top">
4150 <td class="label"><a class="fn-backref" href=
4153 <td>Anche se nato per i sistemi Windows, Samba puo'
4154 essere usato anche per montare cartelle sotto
4155 GNU/Linux come alternativa a NFS. Per la condivisione
4156 di stampanti sarebbe invece opportuno intervenire
4157 direttamente su <tt class=
4158 "docutils literal"><span class=
4159 "pre">CUPS</span></tt>.</td>
4164 <p>Durante la prima installazione viene chiesto il nome del
4165 gruppo di appartenenza, il default per Windows e'
4166 <tt class="docutils literal"><span class=
4167 "pre">WORKGROUP</span></tt>. In aula usiamo invece
4168 <tt class="docutils literal"><span class=
4169 "pre">208</span></tt> .</p>
4171 <p>Per riconfigurare Samba si usi il comando:</p>
4172 <pre class="literal-block">
4173 dpkg-reconfigure samba-common
4177 <div class="section" id="passwords-e-autenticazione">
4178 <h2><a class="toc-backref" href=
4179 "#id78">7.2 Passwords e
4180 autenticazione</a></h2>
4182 <p>Per poter configurare Samba in modo che usi un sistema
4183 di negoziazione degli accessi alle cartelle condivise
4184 basato su accoppiate <em>nome utente / password</em>
4185 bisogna distinguere tra 3 livelli di password (e
4186 generalmente volete usare <em>sempre la stessa
4187 password</em> per ognuno di questi) e delle differenze tra
4188 le modalita' di <em>autenticazione</em> (e quindi anche di
4189 criptaggio delle passwords) usate da sistemi GNU/Linux e
4192 <dl class="docutils">
4193 <dt>1 Sistema *Unix ( GNU/Linux )</dt>
4195 <dd>E' la password dell'<em>utente di sistema</em> che
4196 viene usata sul sistema operativo su cui gira il software
4197 Samba. E' importante tenere conto anche delle
4198 <em>user-id</em> e <em>group-id</em> degli utenti che
4199 dovranno fisicamente scrivere sui file system. Se un
4200 utente non puo' scrivere in una certa posizione del file
4201 system (ad esempio nella cartella <tt class=
4202 "docutils literal"><span class=
4203 "pre">/mnt/condivisione</span></tt> che sara' stata
4204 necessariamente creata inizialmente dall'utente
4205 <tt class="docutils literal"><span class=
4206 "pre">root</span></tt>) per mancanza dei privilegi di
4207 scrittura allora neanche Samba potra' farlo nel momento
4208 in mette a disposizione la risorsa all'utente. Se si
4209 montano file-system dedicati per le condivisioni
4210 controllare i permessi e proprieta' dei <em>punti di
4211 mount*</em>. Queste passwords sono salvate nel solito
4212 file /etc/shadow (richiamato da /etc/passwd).</dd>
4214 <dt>2 Password per l'applicativo Samba</dt>
4216 <dd>Samba deve essere compatibile con Windows e quindi
4217 utilizzare un sistema di criptazione delle password
4218 diverso da /etc/shadow . Le password per Samba possono
4219 essere gestite ad esempio col comando <tt class=
4220 "docutils literal"><span class=
4221 "pre">smbpasswd</span></tt> e vengono generalmente
4222 salvate all'interno di <tt class=
4223 "docutils literal"><span class=
4224 "pre">/var/lib/samba/passdb.tdb</span></tt> .</dd>
4226 <dt>3 Password per Windows.</dt>
4228 <dd>Gli utenti Windows effettuano il log-in alla partenza
4229 della sessione di Windows. Se si avra' l'accortezza di
4230 usare sempre la <em>stessa password</em> data
4231 precedentemente anche a Windows (o viceversa impostare la
4232 password per GNU/Linux / Samba uguale a quella di
4233 Windows) l'utente potra' accedere automaticamente alle
4234 condivisioni a lui disponibili.</dd>
4238 <div class="section" id="creazione-utenti">
4239 <h2><a class="toc-backref" href=
4240 "#id79">7.3 Creazione Utenti</a></h2>
4242 <p>Creiamo per primo l'utente sotto GNU/Linux, facendo
4243 attenzione a <em>non dargli una shell di sistema</em>. Gli
4244 utenti Windows che accedono al server solo per le
4245 condivisioni non hanno bisogno di poter eseguire comandi
4248 <p>Creazione di un utente denominato sambo:</p>
4249 <pre class="literal-block">
4250 adduser --shell /bin/false sambo
4253 <p>Nel file <tt class="docutils literal"><span class=
4254 "pre">/etc/passwd</span></tt> avremo qualcosa come:</p>
4255 <pre class="literal-block">
4256 sambo:x:1001:1001:Sambo utente Samba,,,:/home/sambo:/bin/false
4259 <p>Aggiunta dell'utente al database delle password per
4260 Samba e generazione della sua password:</p>
4261 <pre class="literal-block">
4265 <p>Se successivamente si vorra' modificare la password di
4266 un utente gia' esistente si usi:</p>
4267 <pre class="literal-block">
4271 <p>La password sotto Windows verra' modificata sul sistema
4275 <div class="section" id="creare-la-condivisione">
4276 <h2><a class="toc-backref" href=
4277 "#id80">7.4 Creare la
4278 condivisione</a></h2>
4280 <p>La condivisione altro non e' che una cartella sul server
4281 che viene resa disponibile ai client negoziando l'accesso
4282 in base a una autenticazione basata su <em>user-name /
4283 password</em>. E' per altro possibile permettere l'accesso
4284 a una risorsa a chiunque indiscriminatamente (a tutti i
4285 <tt class="docutils literal"><span class=
4286 "pre">guest</span></tt>) ma la cosa e' sconsigliabile dal
4287 punto di vista della sicurezza. Si decida se la cartella
4288 condivisa debba risiedere nella <em>home</em> di un utente
4289 (nel caso quest'ultimo ne sia l'unico fruitore) o in una
4290 cartella in /mnt/ (nel caso piu' utenti accedano a questa).
4291 Nel secondo caso si potranno gestire gli accessi sotto
4292 GNU/Linux tramite i gruppi.</p>
4294 <p>Creazione della risorsa sambo_share nella home
4295 dell'utente sambo:</p>
4296 <pre class="literal-block">
4297 # mkdir /home/sambo/sambo_share
4298 # chown sambo:sambo /home/sambo/sambo_share/
4301 <div class="section" id=
4302 "sicurezza-permessi-di-esecuzione-sul-server">
4303 <h3><a class="toc-backref" href=
4304 "#id81">7.4.1 Sicurezza: permessi di
4305 esecuzione sul server</a></h3>
4307 <p>Bisognerebbe notare sul server i permessi di
4308 esecuzione del file-system che ospita la cartella da
4309 condividere. Se i file che saranno contenuti nella
4310 condivisione saranno da usarsi sotto Windows non c'e'
4311 motivo che questi siano eseguibili sotto GNU/Linux. Si
4312 potrebbe avere quindi, ipotizzando una condivisione in
4313 <tt class="docutils literal"><span class=
4314 "pre">/mnt/share</span></tt> che risieda su di un file
4315 system dedicato:</p>
4317 <p><tt class="docutils literal"><span class=
4318 "pre">/etc/fstab</span></tt></p>
4321 /dev/hda10 /mnt/share ext3 rw,
4322 <strong>nosuid,noexec</strong> 0 3
4325 <p>Si noti anche l'uso di <em>nosuid</em> per evitare la
4326 possibilita' di eseguire programmi con credenziali
4331 <div class="section" id=
4332 "configurazione-dell-applicativo-samba-vero-e-proprio">
4333 <h2><a class="toc-backref" href=
4334 "#id82">7.5 Configurazione
4335 dell'applicativo Samba vero e proprio.</a></h2>
4337 <p>Avendo preparato gli utenti (ancora una volta: non si
4338 dia una shell completa a un utente che serve solo per Samba
4339 o la posta elettronica) e la cartella sul file system si
4340 puo' procedere a configurare la condivisione su Samba.</p>
4342 <p>/etc/samba/smb.conf riga ~235 , Share Definitions (in
4343 vim si usi 235gg ):</p>
4344 <pre class="literal-block">
4346 # Percorso della cartella condivisa
4347 path = /home/sambo/sambo_share
4348 # Se gli utenti possono scrivere / modificare file
4350 # Negoziazione degli accessi su base utenti / passwords
4353 # #######################################
4354 # Altri parametri opzionali di interesse
4355 # Se posso vedere la condivisione da esplora risorse
4356 # anche se non ho i privilegi per accedervi.
4358 # Commento indicativo della risorsa
4359 comment = Condivisione per Sambo
4362 <p>Dopo aver salvato il file si puo' fare un primo
4363 controllo tramite l'utility <tt class=
4364 "docutils literal"><span class="pre">testparm</span></tt> ,
4365 che controlla la sintassi del file di configurazione di
4366 Samba. Se questo non rileva problemi si puo' procedere a un
4367 <tt class="docutils literal"><span class="pre">#</span>
4368 <span class="pre">/etc/init.d/samba</span> <span class=
4369 "pre">restart</span></tt> .</p>
4371 <div class="section" id="creazione-di-un-gruppo">
4372 <h3><a class="toc-backref" href=
4373 "#id83">7.5.1 Creazione di un
4376 <p>Se si deve condividere una risorsa con un numero
4377 consistente di utenti e' consigliabile lavorare in
4378 termini termini di gruppi piuttosto che elencare la lista
4379 degli utenti in <tt class="docutils literal"><span class=
4380 "pre">valid</span> <span class=
4381 "pre">users</span></tt>.</p>
4383 <p>Dopo aver creato il gruppo del quale volete facciano
4384 parte i vostri utenti (<tt class=
4385 "docutils literal"><span class="pre">addgroup</span>
4386 <span class="pre">nome_gruppo</span></tt>), inserite i
4387 vostri utenti nel gruppo (<tt class=
4388 "docutils literal"><span class="pre">adduser</span>
4389 <span class="pre">nome_utente</span> <span class=
4390 "pre">nome_gruppo</span></tt>) e modificate la direttiva
4391 <tt class="docutils literal"><span class=
4392 "pre">valid</span> <span class="pre">users</span></tt> in
4393 <tt class="docutils literal"><span class=
4394 "pre">smb.conf</span></tt> per riferirsi ad un gruppo
4395 piuttosto che a degli utenti. Per riferirsi a un gruppo
4396 si usi il carattere <tt class=
4397 "docutils literal"><span class="pre">@</span>
4398 <span class="pre">chicciola</span></tt> col <tt class=
4399 "docutils literal"><span class=
4400 "pre">nome_del_gruppo</span></tt>:</p>
4401 <pre class="literal-block">
4402 # Negoziazione degli accessi su base gruppo
4403 valid users = @nome_gruppo
4408 <div class="section" id="testare-il-servizio">
4409 <h2><a class="toc-backref" href=
4410 "#id84">7.6 Testare il Servizio</a></h2>
4412 <p>Come testare il servizio</p>
4415 <pre class="literal-block">
4416 smbclient -U sambo -L localhost
4419 <p>Questo comando permette di esplorare la risorsa
4420 qualificandosi come utente, in questo modo potete testare
4421 il corretto funzionamento dell'autenticazione. Si provi
4422 inizialmente a sbagliare la password deliberatamente, poi a
4423 inserirla correttamente: dovrebbero essere visibili le
4424 risorse disponibili al solo utente sambo: la suo /home e la
4425 cartella samba_share:</p>
4426 <pre class="literal-block">
4427 Sharename Type Comment
4428 --------- ---- -------
4429 sambo_share Disk Condivisione per Sambo
4430 print$ Disk Printer Drivers
4431 IPC$ IPC IPC Service (base server)
4432 sambo Disk Home Directories
4435 <p>In particolare l'ultima voce relativa alla home
4436 directory dell'utente dovrebbe essere visibile solo agli
4437 utenti autenticati.</p>
4439 <p>In alternativa e' possibile montare realmente la
4440 condivisone anche su GNU/Linux tramite un client per samba
4441 e testarne il corretto funzionamento:</p>
4442 <pre class="literal-block">
4443 mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo
4448 <div class="section" id="server-di-posta-postfix">
4449 <h1><a class="toc-backref" href=
4450 "#id85">8 Server di posta: Postfix</a></h1>
4452 <p>Il server di posta che prenderemo in considerazione e'
4453 Postfix, a seguire un estratto di un file di configurazione
4454 <em>semplice</em> con l'abilitazione delle <em>Maildir</em>
4455 nelle <tt class="docutils literal"><span class=
4456 "pre">/home</span></tt> degli utenti per la consegna della
4459 <p><tt class="docutils literal"><span class=
4460 "pre">/etc/postfix/main.cf</span></tt>:</p>
4461 <pre class="literal-block">
4462 # ...segue dalla riga ~30
4463 myhostname = 162.piffa.net
4464 alias_maps = hash:/etc/aliases
4465 alias_database = hash:/etc/aliases
4466 myorigin = 162.piffa.net
4467 mydestination = 162.piffa.net, localhost
4468 # Se non avete un ip pubblico e statico, con un adeguato record PTR
4469 # dovrete usare un realy host per l'invio della posta
4470 relayhost = smtp.piffa.net
4472 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
4473 # Se dovete inviare la posta per i client della vostra LAN privata:
4474 # mynetworks = 127.0.0.0/8 192.168.0.0/24 [::ffff:127.0.0.0]/104 [::1]/128
4475 # E si faccia BEN ATTENZIONE a non diventare un open realay smtp
4478 # Per effettuare lo storaggio della posta nelle home directory degli utenti
4479 # in una Maildir invece che nella Mailbox in /var/mail/nome_utente
4480 # si disabiliti procmail
4481 #mailbox_command = procmail -a "$EXTENSION"
4483 # cartella_i abiliti lo storaggio della posta nella Maildir/ (si noti lo slash)
4484 # all'interno della home dell'utente:
4485 home_mailbox = Maildir/
4486 mailbox_size_limit = 0
4487 recipient_delimiter = +
4488 inet_interfaces = all
4491 <dl class="docutils">
4492 <dt>E' disponibile un file di configurazione di esempio ben
4493 piu' articolato e commentato::</dt>
4495 <dd>/usr/share/postfix/main.cf.dist .</dd>
4498 <div class="section" id="test-del-server-smtp">
4499 <h2><a class="toc-backref" href=
4500 "#id86">8.1 Test del server smtp</a></h2>
4502 <p>Per testare il corretto funzionamento del server di
4503 posta si puo' procedere in vari modi.</p>
4506 <li>Spedire una mail a una casella locale / remota e
4507 controllare i log (syslog)</li>
4509 <li>Collegarsi via <em>telnet</em> al server di posta:
4510 <a class="reference external" href=
4511 "http://www.netadmintools.com/art276.html">http://www.netadmintools.com/art276.html</a></li>
4513 <li>usare una utility come SWAKS</li>
4516 <div class="section" id="swaks">
4517 <h3><a class="toc-backref" href=
4518 "#id87">8.1.1 Swaks</a></h3>
4520 <dl class="docutils">
4521 <dt>Per gli utenti meno esperti e' consigliabile
4522 utilizzare <em>SWAKS</em>: si installi l'omonimo
4523 pacchetto e si esegua un test con::</dt>
4525 <dd>swaks --to <a class="reference external" href=
4526 "mailto:utente@destinatario.tilde">utente@destinatario.tilde</a>
4527 --from <a class="reference external" href=
4528 "mailto:utente@propio.mail.tilde">utente@propio.mail.tilde</a></dd>
4531 <p>Ecco un esempio di una sessione corretta:</p>
4532 <pre class="literal-block">
4533 swaks --to andrea@piffa.net from andrea@mydomain.com
4534 === Trying smtp.piffa.net:25...
4535 === Connected to smtp.piffa.net.
4536 <- 220 zoo.piffa.net ESMTP Postfix (Debian/GNU)
4537 -> EHLO alice.mydomain.com
4538 <- 250-zoo.piffa.net
4539 <- 250-PIPELINING
4540 <- 250-SIZE 10240000
4544 <- 250-ENHANCEDSTATUSCODES
4547 -> MAIL FROM:<root@alice.mydomain.com>
4549 -> RCPT TO:<andrea@piffa.net>
4552 <- 354 End data with <CR><LF>.<CR><LF>
4553 -> Date: Thu, 28 May 2009 13:11:19 +0200
4554 -> To: andrea@piffa.net
4555 -> From: root@alice.mydomain.com
4556 -> Subject: test Thu, 28 May 2009 13:11:19 +0200
4557 -> X-Mailer: swaks v20061116.0 jetmore.org/john/code/#swaks
4559 -> This is a test mailing
4562 <- 250 2.0.0 Ok: queued as 41FB261AFC
4565 === Connection closed with remote host.
4570 <div class="section" id="imap-e-pop">
4571 <h2><a class="toc-backref" href=
4572 "#id88">8.2 Imap e pop</a></h2>
4574 <p>Postfix e' un server SMTP, di conseguenza se volete che
4575 i vostri utenti possano <em>scaricare</em> in locale la
4576 posta generalmente volete mettere a loro disposizione un
4577 server <em>POP3</em> o <em>IMAP</em>. Oppure entrambi.</p>
4579 <dl class="docutils">
4580 <dt>Pacchetti da installare</dt>
4582 <dd>courier-imap courier-pop</dd>
4585 <p>Si noti che IMAP necessita delle <em>Maildir</em>, non
4586 funziona con le Mailbox in <tt class=
4587 "docutils literal"><span class="pre">/var/mail/</span></tt>
4591 <div class="section" id="client-a-riga-di-comando">
4592 <h2><a class="toc-backref" href=
4593 "#id89">8.3 Client a riga di
4596 <p>Per testare il corretto funzionamento del server di
4597 posta e' utile avere a disposizione delle utility per
4598 inviare e leggere la posta: ovviamente da riga di
4601 <div class="section" id="mailx">
4602 <h3><a class="toc-backref" href=
4603 "#id90">8.3.1 mailx</a></h3>
4605 <dl class="docutils">
4606 <dt>Uno dei client piu' semplici, sopratutto per
4607 inviare un messaggioi. e' sufficiente usare una formula
4610 <dd>mail <a class="reference external" href=
4611 "mailto:utente@dominio.com">utente@dominio.com</a></dd>
4614 <p>Se il comando <tt class=
4615 "docutils literal"><span class="pre">mail</span></tt> non
4616 fosse disponibile si installi il pacchetto <tt class=
4617 "docutils literal"><span class=
4618 "pre">mailx</span></tt>.</p>
4620 <p>Al primo prompt si digitera' l'oggetto, il testo del
4621 messaggio (per terminare l'inserimento lasciare una riga
4622 vuota, digitare un <tt class=
4623 "docutils literal"><span class="pre">punto</span>
4624 <span class="pre">+</span> <span class=
4625 "pre">Invio</span></tt> su una riga vuota), la Carbon
4626 Copy (se necessaria).</p>
4629 <pre class="literal-block">
4630 mail andrea@localhost
4631 Subject: Oggetto della mail
4633 per terminare il messaggio
4634 lasciare una riga vuota
4635 e un punto (poi Invio).
4641 <p>Per altrre opzioni si veda la pagina man.</p>
4644 <div class="section" id="mutt">
4645 <h3><a class="toc-backref" href=
4646 "#id91">8.3.2 Mutt</a></h3>
4648 <p>Mutt e' uno dei gestori di posta preferiti da chi
4649 preferisce utilizzare l'interfaccia testuale per la
4650 gestione della posta.</p>
4652 <p>Mutt ha un file di configurazione <tt class=
4653 "docutils literal"><span class="pre">.muttrc</span></tt>
4654 nella <em>home</em> dell'utente, alcuni settaggi possono
4657 <dl class="docutils">
4658 <dt>set folder="~/Maildir"</dt>
4660 <dd>Per utilizzare <tt class=
4661 "docutils literal"><span class=
4662 "pre">/home/nome_utente/Maildir</span> <span class=
4663 "pre">come</span> <span class=
4664 "pre">mailbox</span></tt>, invece del default
4665 <tt class="docutils literal"><span class=
4666 "pre">/var/mail/nome_utente</span></tt>.</dd>
4668 <dt>set editor="vim"</dt>
4670 <dd>Utilizzare <tt class=
4671 "docutils literal"><span class="pre">vim</span></tt>
4672 come editor per comporre i messaggi.</dd>
4675 <p>Spesso e' utile poter <em>levvere al volo</em> la
4676 Mailbox / Maildir di un utente sul server di posta, per
4677 controllare se i messaggi vengono recapitati
4679 <pre class="literal-block">
4680 mutt -f /var/mail/utente
4681 mutt -f /home/utente/Maildir
4684 <p>In modo analogo si puo' consultare al volo la propia
4685 mailbox su un server remoto tramite IMAP/POP:</p>
4686 <pre class="literal-block">
4687 mutt -f imap://nome_utente@piffa.net
4691 <div class="section" id="web-client">
4692 <h3><a class="toc-backref" href=
4693 "#id92">8.3.3 Web client</a></h3>
4695 <p>Per mettere a disposizione degli utenti un client web
4696 per gestire la propria posta si installi il pacchetto:
4697 <tt class="docutils literal"><span class=
4698 "pre">squirrelmail</span></tt> . Ci sono tanti altri
4699 client web disponibili: questo e' particolarmente
4700 semplice. Naturalmente dovrete aver installato:
4701 <tt class="docutils literal"><span class=
4702 "pre">php5</span> <span class="pre">apache2</span></tt>
4705 <p>L'interfaccia dovrebbe essere disponibile all'url:
4706 <tt class="docutils literal"><span class=
4707 "pre">http://localhost/squirrelmail</span></tt> . Se
4708 cosi' non fosse assicuratevi che Apache abbia incluso il
4709 file di configurazione di squirrelmail:</p>
4710 <pre class="literal-block">
4711 cd /etc/apache2/conf.d/
4712 ln -s /etc/squirrelmail/apache.conf ./squirrelmail.conf
4717 <div class="section" id="graylisting">
4718 <h2><a class="toc-backref" href=
4719 "#id93">8.4 Graylisting</a></h2>
4721 <p>Il <em>graylisting</em> e' un sistema relativamente poco
4722 invasivo, con un limitato consumo di risorse per limitare
4723 lo <em>SPAM</em> in arrivo sul propio server di posta. Come
4724 suggerisce il nome e' una via di mezzo tra una <em>white
4725 list</em> (una lista di mittenti privilegiata, sempre
4726 benvenuti) e una <em>black list</em> (mittenti
4727 <em>bannati</em>, banditi dal poter inviare nuovi
4730 <p>Il funzionamento e' relativamente semplice: ogni
4731 mittente sconosciuto viene immediatamente rifiutato con un
4732 errore <em>non grave</em> come un <em>server non
4733 disponibile, provare piu' tardi</em>. Questo inconveniente
4734 non dovrebbe mettere in difficolta' un server di posta /
4735 mittente legittimo, che dopo un periodo di attesa tentera'
4736 nuovamente di inviare il messaggio ottenendo finalmente il
4737 risultato atteso. Diversamente un <em>bot</em> per l'invio
4738 di SPAM o un applicazione improvvisata (tipicamente di
4739 derivazione virale) che stesse inviando il messaggio
4740 <em>probabilmente</em> non insisterebbe, rinunciano ad
4741 inviare il messaggio preferendo destinazioni meno
4744 <div class="section" id="abilitazione-in-postfix">
4745 <h3><a class="toc-backref" href=
4746 "#id94">8.4.1 Abilitazione in
4749 <p>Installare il pacchetto: <tt class=
4750 "docutils literal"><span class="pre">postgrey</span></tt>
4751 e aggiungere il file di configurazione di Postfix
4752 <tt class="docutils literal"><span class=
4753 "pre">/etc/postfix/main.cf</span></tt>:</p>
4754 <pre class="literal-block">
4755 smtpd_recipient_restrictions =
4757 reject_unauth_destination,
4758 check_policy_service inet:127.0.0.1:60000
4762 <div class="section" id="test">
4763 <h3><a class="toc-backref" href=
4764 "#id95">8.4.2 Test</a></h3>
4766 <p>Inviando un messaggio il client dovrebbe ricevere un
4767 iniziale messaggio di rifiuto del messaggio:</p>
4768 <pre class="literal-block">
4769 swaks --to andrea@piffa.net from andrea@mydonain.com
4770 === Trying smtp.piffa.net:25...
4771 === Connected to smtp.piffa.net
4774 -> RCPT TO:<andrea@piffa.net>
4775 <** 450 4.2.0 <andrea@piffa.net>: Recipient address rejected:
4776 Greylisted, see http://postgrey.schweikert.ch/help/piffa.net.html
4779 === Connection closed with remote host.
4782 <p>A lato server si dovrebbe rilevare su <tt class=
4783 "docutils literal"><span class=
4784 "pre">/var/log/syslog</span></tt> qualcosa di simile:</p>
4785 <pre class="literal-block">
4786 connect from alice.mydomain.com[65.98.21.97]
4787 May 28 14:53:34 r24266 postgrey: action=greylist, reason=new,
4788 client_name=alice.mydomain.com,
4789 client_address=10.0.0.1, sender=root@alice.mydomain.com, recipient=andrea@piffa.net
4790 May 28 14:53:34 r24266 postfix/smtpd[22538]:
4791 NOQUEUE: reject: RCPT from alice.mydomain.com[10.0.0.1]:
4792 450 4.2.0 <andrea@piffa.net>: Recipient address rejected: Greylisted,
4793 see http://postgrey.schweikert.ch/help/piffa.net.html;
4794 from=<root@alice.mydomain.com> to=<andrea@piffa.net>
4795 proto=ESMTP helo=<alice.mydomain.com>
4796 May 28 14:53:34 r24266 postfix/smtpd[22538]: disconnect from alice.mydomain.com[10.0.0.1]
4800 <div class="section" id="statistiche">
4801 <h3><a class="toc-backref" href=
4802 "#id96">8.4.3 Statistiche</a></h3>
4804 <p>E' sempre utile poter tracciare qualche statistica
4805 sulle percentuali di messaggi ricevuti, da chi, messaggi
4806 rifiutati (e per quale motivo). Statistiche che attingono
4807 dai soliti log del server di posta <tt class=
4808 "docutils literal"><span class=
4809 "pre">/var/log/syslog</span></tt> di default oltre che i
4810 dedicati <tt class="docutils literal"><span class=
4811 "pre">/var/log/mail</span></tt> .</p>
4813 <p>Una utility semplice per analizzare l'attivita' del
4814 propio server smtp potrebbe essere <tt class=
4815 "docutils literal"><span class=
4816 "pre">pflogsumm</span></tt> , installato il pacchetto la
4817 si puo' invocare con:</p>
4818 <pre class="literal-block">
4819 pflogsumm.pl /var/log/mail.log
4822 <p>oppure utilizzare i log piu' vecchi ad es. <tt class=
4823 "docutils literal"><span class=
4824 "pre">/var/log/mail.log.0</span></tt></p>
4829 <div class="section" id="firewall">
4830 <h1><a class="toc-backref" href=
4831 "#id97">9 Firewall</a></h1>
4833 <p>In Informatica, nell'ambito delle reti di computer, un
4834 firewall (termine inglese dal significato originario di
4835 parete refrattaria, muro tagliafuoco, muro ignifugo; in
4836 italiano anche parafuoco o parafiamma) e' un componente
4837 passivo di difesa perimetrale che puo anche svolgere funzioni
4838 di collegamento tra due o piu' tronconi di rete. Usualmente
4839 la rete viene divisa in due sotto reti: una, detta esterna,
4840 comprende l'intera Internet mentre l'altra interna, detta LAN
4841 (Local Area Network), comprende una sezione piu' o meno
4842 grande di un insieme di computer locali. In alcuni casi e'
4843 possibile che si crei l'esigenza di creare una terza sotto
4844 rete detta DMZ (o zona demilitarizzata) atta a contenere quei
4845 sistemi che devono essere isolati dalla rete interna ma
4846 devono comunque essere protetti dal firewall.</p>
4848 <p>Una prima definizione chiusa di firewall e' la
4851 <p>Apparato di rete hardware o software che filtra tutti i
4852 pacchetti entranti ed uscenti, da e verso una rete o un
4853 computer, applicando regole che contribuiscono alla sicurezza
4856 <p>In realta' un firewall puo' essere realizzato con un
4857 normale computer (con almeno due schede di rete e software
4858 apposito), puo' essere una funzione inclusa in un router o
4859 puo' essere un apparato specializzato. Esistono inoltre i
4860 cosiddetti "firewall personali", che sono programmi
4861 installati sui normali calcolatori, che filtrano solamente i
4862 pacchetti che entrano ed escono da quel calcolatore; in tal
4863 caso viene utilizzata una sola scheda di rete.</p>
4865 <p>La funzionalita' principale in sostanza e' quella di
4866 creare un filtro sulle connessioni entranti ed uscenti, in
4867 questo modo il dispositivo innalza il livello di sicurezza
4868 della rete e permette sia agli utenti interni che a quelli
4869 esterni di operare nel massimo della sicurezza. Il firewall
4870 agisce sui pacchetti in transito da e per la zona interna
4871 potendo eseguire su di essi operazioni di: controllo modifica
4874 <p>Questo grazie alla sua capacita' di "aprire" il pacchetto
4875 IP per leggere le informazioni presenti sul suo header, e in
4876 alcuni casi anche di effettuare verifiche sul contenuto del
4879 <div class="section" id="links">
4880 <h2><a class="toc-backref" href=
4881 "#id98">9.1 Links</a></h2>
4884 <li><a class="reference external" href=
4885 "http://openskill.info/topic.php?ID=124">http://openskill.info/topic.php?ID=124</a></li>
4887 <li><a class="reference external" href=
4888 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html">
4889 http://iptables-tutorial.frozentux.net/iptables-tutorial.html</a></li>
4893 <div class="section" id="ipfilter">
4894 <h2><a class="toc-backref" href=
4895 "#id99">9.2 Ipfilter</a></h2>
4897 <p>Link: <a class="reference external" href=
4898 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
4899 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING</a></p>
4901 <p>Natura di un firewall ip: su cosa lavora (livello 2 e un
4902 po' del 3) e su cosa <em>non</em> lavora (livello 4).
4903 Netfilter lavora anche su parti del livello 3 (TCP, UDP,
4904 etc) e del livello 1 (MAC source address). Iptables
4905 comunque permette di fare il <em>connection-tracking</em>,
4906 mediante il quale possiamo implementare il Network Address
4909 <p>Netfilter non ricostruisce il flusso di dati tra
4910 pacchetti, non puo' quindi rilevare la presenza di virus o
4911 simili che si trasmettono su pacchetti separati:
4912 ricomporre, analizzare e tornare a scomporre i frammenti
4913 richiederebbe troppa RAM e risorse di sistema, con il
4914 conseguente rischio di saturare il firewall fino
4915 all'abbandono dei nuovi pacchetti in transito. Ci sono
4916 altri software piu' adatti a questi compiti, ad esempio un
4917 proxy HTTP come Squid che e' appunto una applicazione di
4918 quarto livello, progettata e strutturata per analizzare e
4919 modificare i flussi di dati (il <em>contenuto</em> dei
4920 pacchetti, non le sole <em>intestazioni</em>) facendo
4921 abbondate uso delle risorse RAM e di calcolo del sistema.
4922 Non a caso su macchine embedded dalle prestazioni molto
4923 ridotte (CPU ARM ~250MHZ con ~30MB di RAM) Squid sfrutta al
4924 massimo le risorse di sistema per gestire il traffico di
4925 una rete 10/100, mentre il lavoro tipico svolto da
4926 netfilter e' quasi irrilevante.</p>
4929 <div class="section" id="progettazione-di-un-firewall">
4930 <h2><a class="toc-backref" href=
4931 "#id100">9.3 Progettazione di un
4934 <p>Per implementare un firewall bisogna decidere un aio di
4935 cose: la collocazione e l'approccio (inclusivo o esclusivo)
4936 al filtraggio, il tipo di hardware.</p>
4938 <div class="section" id="collocazione">
4939 <h3><a class="toc-backref" href=
4940 "#id101">9.3.1 Collocazione</a></h3>
4942 <p>DMZ e MZ, internet, intranet, extranet. Frammentazione
4943 della rete, decidere se diversi reparti di una azienda si
4944 possano vedere tra loro e in che misura.</p>
4946 <p>Collocazione:</p>
4949 <ol class="arabic simple">
4952 <li>tra router e servers / LAN</li>
4954 <li>Unico server / router / firewall e connessi
4955 rischi. considerare l'acquisto di un router hardware
4960 <dl class="docutils">
4961 <dt>Layeed security:</dt>
4963 <dd>Implementare piu' device / software sui diversi
4964 livelli: <a class="reference external" href=
4965 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER">
4966 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#HOWTOPLANANIPFILTER</a></dd>
4970 <div class="section" id="policy-di-default">
4971 <h3><a class="toc-backref" href=
4972 "#id102">9.3.2 Policy di
4975 <p>Drop o Accept: conseguenze per sicurezza, facilita' di
4979 <div class="section" id="hardware">
4980 <h3><a class="toc-backref" href=
4981 "#id103">9.3.3 Hardware</a></h3>
4983 <p>Sostanzialmente potremmo distinguere due tipologie di
4986 <dl class="docutils">
4987 <dt>Network appliance dedicata::</dt>
4989 <dd>Un dispositivo hardware dedicato alla funzione di
4990 Firewall, ad es un Cisco / Fortigate. Si noti che molti
4991 firewall economici altro non sono che Linux box molto
4994 <dt>Server / Personal computer:</dt>
4996 <dd>Un server sul quale viene fatto girare Netfilter ad
4997 uso del server stesso e della rete connessa.</dd>
5000 <p>Vantaggi e svantaggi: consumo elettrico, efficienza,
5001 flessibilita', strumenti di gestione, sicurezza,
5006 <div class="section" id=
5007 "percorso-dei-pacchetti-tra-tabelle-e-catene">
5008 <h2><a class="toc-backref" href=
5009 "#id104">9.4 Percorso dei pacchetti tra
5010 tabelle e catene</a></h2>
5012 <p>link: <a class="reference external" href=
5013 "http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES">
5014 http://iptables-tutorial.frozentux.net/iptables-tutorial.html#TRAVERSINGOFTABLES</a></p>
5017 <div class="section" id="concetti-di-base">
5018 <h2><a class="toc-backref" href=
5019 "#id105">9.5 Concetti di base</a></h2>
5021 <div class="section" id="tabelle-catene-regole">
5022 <h3><a class="toc-backref" href=
5023 "#id106">9.5.1 Tabelle, catene,
5026 <p>Iptables lavora su 3 tabelle (tables) di default:</p>
5029 <li>filter - Regola il firewalling: quali pacchetti
5030 accettare, quali bloccare</li>
5032 <li>nat - Regola le attivita' di natting</li>
5034 <li>mangle - Interviene sulla alterazione dei
5038 <p>Ogni tabella ha delle catene (chains) predefinite
5039 (INPUT, OUTPUT, FORWARD ... ) a cui possono essere
5040 aggiunte catene custom. Ogni catena e' composta da un
5041 elenco di regole (rules) che identificano pacchetti di
5042 rete secondo criteri diversi (es: -p tcp --dport 80 -d
5043 10.0.0.45) Ogni regola termina con una indicazione
5044 (target) su cosa fare dei pacchetti identificati dalla
5045 regola stessa (es: -j ACCEPT, -j DROP ...)</p>
5048 <div class="section" id="match">
5049 <h3><a class="toc-backref" href=
5050 "#id107">9.5.2 Match</a></h3>
5052 <p>I Match di una regola (rule) servono a testare un
5053 pacchetto per valutare se corrisponda a certe
5054 caratteristiche. I match di possono servire a controllare
5055 se un pacchetto e' destinato a una porta particolare o
5056 utilizza un protocollo particolare.</p>
5058 <p>Alcuni esempi:</p>
5060 <dl class="docutils">
5061 <dt>-p [!] proto</dt>
5063 <dd>Protocollo IP. Secondo IP number o nome (es: tcp,
5064 udp, gre, ah...)</dd>
5066 <dt>-s [!] address[/mask]</dt>
5068 <dd>Indirizzo IP sorgente (o network con maschera di
5071 <dt>-d [!] address[/mask]</dt>
5073 <dd>Indirizzo IP destinazione (o network)</dd>
5075 <dt>-i [!] interface[+]</dt>
5077 <dd>Interfaccia di rete di entrata ([+] wildcard)</dd>
5079 <dt>-o [!] interface[+]</dt>
5081 <dd>Interfaccia di rete di uscita ([+] wildcard)</dd>
5084 <table class="docutils option-list" frame="void" rules=
5086 <col class="option">
5087 <col class="description">
5089 <tbody valign="top">
5091 <td class="option-group"><kbd><span class=
5092 "option">-f</span></kbd></td>
5094 <td>Frammento di pacchetto</td>
5100 <div class="section" id="targets">
5101 <h3><a class="toc-backref" href=
5102 "#id108">9.5.3 Targets</a></h3>
5104 <p>Se un pacchetto soddisfa le condizioni del Match
5105 <em>salta</em> (jump) su uno dei target possibili, in
5106 caso contrario continua il suo percorso tra regole catene
5109 <p>Target principali:</p>
5111 <dl class="docutils">
5112 <dt><em>-j ACCEPT</em></dt>
5114 <dd>Il pacchetto matchato viene accettato e procede
5115 verso la sua destinazione. Si usa per definire il
5116 traffico permesso.</dd>
5118 <dt><em>-j DROP</em></dt>
5120 <dd>Il pacchetto viene rifiutato e scartato, senza
5121 alcuna notifica al mittente. Si usa, in alternativa a
5122 REJECT, per bloccare traffico.</dd>
5124 <dt><em>-j REJECT</em></dt>
5126 <dd>Il pacchetto viene rifiutato. Al mittente viene
5127 mandato un pacchetto (configurabile) di notifica tipo
5128 ICMP port-unreachable (--reject-with
5129 icmp-port-unreachable)</dd>
5132 <table class="docutils option-list" frame="void" rules=
5134 <col class="option">
5135 <col class="description">
5137 <tbody valign="top">
5139 <td class="option-group"><kbd><span class=
5140 "option">-t <var>LOG</var></span></kbd></td>
5142 <td>Il pacchetto viene loggato via syslog e procede
5143 l'attraversamento della catena. Opzioni:
5144 (--log-level, --log-prefix, --log-tcp-sequence,
5145 --log-tcp-options, --log-ip-options)</td>
5149 <td class="option-group"><kbd><span class=
5150 "option">-j <var>DNAT</var></span></kbd></td>
5152 <td>Viene modificato l'IP di destinazione del
5153 pacchetto. Target disponibile solo in nat /
5154 PREROUTING e nat / OUTPUT. L'opzione
5155 --to-destination IP:porta definisce il nuovo IP di
5156 destinazione. Si usa tipicamente su network
5157 firewall che nattano server di una DMZ</td>
5161 <td class="option-group"><kbd><span class=
5162 "option">-j <var>SNAT</var></span></kbd></td>
5164 <td>Viene modificato l'IP sorgente. Solo in nat /
5165 POSTROUTING. Prevede l'opzione --to-source
5166 IP:porta. Si usa per permettere l'accesso a
5167 Internet da una rete locale con IP privati.</td>
5171 <td class="option-group"><kbd><span class=
5172 "option">-j <var>MASQUERADE</var></span></kbd></td>
5174 <td>Simile a SNAT, si applica quando i pacchetti
5175 escono da interfacce con IP dinamico (dialup, adsl,
5176 dhcp...). Si usa solo in nat / POSTROUTING e
5177 prevede l'opzione --to-ports porte.</td>
5181 <td class="option-group"><kbd><span class=
5182 "option">-j <var>REDIRECT</var></span></kbd></td>
5184 <td>Redirige il pacchetto ad una porta locale.
5185 Usabile solo in nat / PREROUTING e nat / OUTPUT e'
5186 previsto per fare un transparent proxy (con proxy
5187 server in esecuzione sulla macchina con
5192 <td class="option-group"><kbd><span class=
5193 "option">-j <var>RETURN</var></span></kbd></td>
5195 <td>Interrompe l'attraversamento della catena. Se
5196 questa e' una secondaria, il pacchetto torna ad
5197 attraversare la catena madre da punto in cui aveva
5198 fatto il salto nella secondaria. Se il RETURN e' in
5199 una delle catene di default, il pacchetto
5200 interrompe l'attraversamento e segue la policy di
5205 <td class="option-group"><kbd><span class=
5206 "option">-j <var>TOS</var></span></kbd></td>
5208 <td>Usabile solo nella tabella mangle, permette di
5209 cambiare il TOS (Type Of Service) di un pacchetto
5210 con l'opzione --set-tos. Per un elenco dei
5211 parametri disponibili: iptables -j TOS -h</td>
5215 <td class="option-group"><kbd><span class=
5216 "option">-j <var>MIRROR</var></span></kbd></td>
5218 <td>Curioso e sperimentale, questo target invia un
5219 pacchetto speculare al mittente. In pratica e' come
5220 se facesse da specchio per tutti i pacchetti
5221 ricevuti. Da usare con cautela, per evitare
5222 attacchi DOS indiretti.</td>
5229 <div class="section" id="tabella-filter">
5230 <h2><a class="toc-backref" href=
5231 "#id109">9.6 Tabella Filter</a></h2>
5233 <p>E' quella implicita e predefinita (-t filter) Riguarda
5234 le attivita' di filtraggio del traffico. Ha 3 catene di
5235 default: INPUT - Riguarda tutti i pacchetti destinati al
5236 sistema. In entrata da ogni interfaccia. OUTPUT - Riguarda
5237 i pacchetti che sono originati dal sistema e destinati ad
5238 uscire. FORWARD - Riguarda i pacchetti che attraversano il
5239 sistema, con IP sorgente e destinazione esterni.</p>
5241 <p>Esempio per permettere accesso alla porta 80 locale:
5242 iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
5243 Analoga a: iptables -I INPUT -p tcp --dport 80 -j
5246 <p>Esempio per permettere ad un pacchetto con IP sorgente
5247 10.0.0.4 di raggiungere il server 192.168.0.1 attraversando
5248 il firewall: iptables -I FORWARD -s 10.0.0.4 -d 192.168.0.1
5252 <div class="section" id=
5253 "flush-automatico-per-macchine-remote">
5254 <h2><a class="toc-backref" href=
5255 "#id110">9.7 Flush automatico per macchine
5258 <p>Se state provando una configurazione del firewall per
5259 una macchina remota e' buona norma per evitare brutte
5260 figure attivare uno script che faccia il <em>flush</em>
5261 delle regole dopo qualche minuto. Potreste infatti
5262 inavvertitamente impostare una regola che vi impedisca di
5263 raggiungere la macchina remota, cosi' da non poter neanche
5264 eliminare quella regola e ripristinare la situazione
5267 <p><em>Veramente</em>, prima di lavorare sul firewall di
5268 una macchina remota impostate almeno un <tt class=
5269 "docutils literal"><span class="pre">at</span> <span class=
5270 "pre">now</span> <span class="pre">+5</span> <span class=
5271 "pre">min</span></tt> o con un'oretta di margine per fare
5272 il <em>flush</em> delle regole (su tutte le tabelle):</p>
5273 <pre class="literal-block">
5275 at> /sbin/iptables -F
5280 <div class="section" id="gestione-regole-rules">
5281 <h2><a class="toc-backref" href=
5282 "#id111">9.8 Gestione regole
5285 <p>Il comando iptables viene usato per ogni attivita' di
5286 gestione e configurazione.</p>
5288 <p>Inserimento regole:</p>
5290 <dl class="docutils">
5291 <dt>iptables -A CATENA ...</dt>
5293 <dd>Aggiunge una regola alla fine della catena
5296 <dt>iptables -I CATENA [#] ...</dt>
5298 <dd>Inserisce alla riga # (default 1) una regola nella
5299 catena indicata</dd>
5301 <dt>iptables -N CATENA</dt>
5303 <dd>Crea una nuova catena custom</dd>
5305 <dt>iptables -P CATENA TARGET</dt>
5307 <dd>Imposta il target di default per la catena
5311 <p>Rimozione regole e azzeramenti:</p>
5313 <dl class="docutils">
5314 <dt>iptables -F [catena]</dt>
5316 <dd>Ripulisce tutte le catene (o quella indicata)</dd>
5318 <dt>iptables -X [catena]</dt>
5320 <dd>Ripulisce tutte le catene custom (o quella
5323 <dt>iptables -Z [catena]</dt>
5325 <dd>Azzera i contatori sulle catene</dd>
5327 <dt>iptables -D catena #</dt>
5329 <dd>Cancella la regola numero # dalla catena
5333 <p>Interrogazione:</p>
5335 <dl class="docutils">
5336 <dt>iptables -L</dt>
5338 <dd>Elenca le regole esistenti</dd>
5340 <dt>iptables -L -n -v</dt>
5342 <dd>Elenca, senza risolvere gli host, in modo verboso le
5343 regole esistenti</dd>
5347 <div class="section" id="salvataggio-regole">
5348 <h2><a class="toc-backref" href=
5349 "#id112">9.9 Salvataggio regole</a></h2>
5351 <p>Il comando <tt class="docutils literal"><span class=
5352 "pre">iptables</span></tt> serve per interagire con il
5353 framework <tt class="docutils literal"><span class=
5354 "pre">Netfilter</span></tt> che gestisce il firewall di
5355 Linux al livello del kernel. Questo comporta, in modo
5356 analogo a quando avviene col comando <tt class=
5357 "docutils literal"><span class="pre">ifconfig</span></tt>,
5358 che i cambiamenti impostati siano in <em>tempo reale,
5359 RAM</em>, non persistenti nel sistema: al boot successivo
5360 del sistema tutto tornera' alle impostazioni di base (in
5361 questo caso <em>nulle</em>, con policy di default settate
5362 su <tt class="docutils literal"><span class=
5363 "pre">ACCEPT</span></tt> per tutto).</p>
5365 <p>Le varie invocazioni di iptables potrebbero essere
5366 richiamate da degli scripts dedicati, ma fortunatamente e'
5367 stata predisposta una apposita utility per gestire questi
5368 scripts in modo da avere a disposizione un <em>formato
5369 standard</em> per il salvataggio e il ripristino delle
5370 regole del firewall.</p>
5372 <p>Altro problema: decidere quando attivare / disattivare
5373 queste regole. Utilizzare i <em>runlevels</em> non e' una
5374 soluzione adeguata: le regole del firewall sono legate
5375 all'attivita' delle schede di rete (e un host con diverse
5376 schede di rete puo' attivarle a secondo delle esigenze di
5377 routing, partenza di servizi es file_sharing per un
5378 back-up...): il sistema operativo Debian permette di legare
5379 l'esecuzione di comandi alla attivazione di una device di
5380 rete (<tt class="docutils literal"><span class=
5381 "pre">up</span></tt>), dopo la sua attivazione (<tt class=
5382 "docutils literal"><span class="pre">post-up</span></tt>,
5383 utile per devices che richiedono un certo tempo per
5384 inizializzarsi: come un tunnel o una connessione punto a
5385 punto), prima della sua attivazione (<tt class=
5386 "docutils literal"><span class="pre">pre-up</span></tt>).
5387 Allo stesso modo sono disponibili eventi analoghi per
5388 accompagnare la disattivazione dei device di rete: si veda
5389 la pagina man di <tt class="docutils literal"><span class=
5390 "pre">interfaces</span></tt>.</p>
5392 <p>Nel nostro caso avremo per una possibile scheda
5393 <tt class="docutils literal"><span class=
5394 "pre">eth0</span></tt>:</p>
5396 <p><tt class="docutils literal"><span class=
5397 "pre">/etc/network/interfaces</span></tt></p>
5398 <pre class="literal-block">
5399 iface eth1 inet static
5400 up /sbin/iptables-restore /root/firewall/basic_fw
5401 # Seguono i soliti parametri della scheda di rete
5402 address 10.10.208.21
5405 <div class="section" id="iptables-save">
5406 <h3><a class="toc-backref" href=
5407 "#id113">9.9.1 Iptables-save</a></h3>
5409 <p>Per salvare le regole di iptables attualmente presenti
5410 nel kernel si usi il comando:</p>
5411 <pre class="literal-block">
5412 # iptables-save >> /root/firewall/basic_fw
5415 <p>Il contenuto del file dovrebbe essere
5416 <em>comprensibile</em>: sostanzialmente sono regole di
5417 iptables, senza il comando iptables ripetuto, suddivisi
5418 per le varie tabelle. Potete comunque correggere
5419 eventuali parametri con un edito di testo.</p>
5421 <p>Se non avete un'idea migliore potreste voler tenere
5422 gli script dei firewall in una cartella <tt class=
5423 "docutils literal"><span class=
5424 "pre">~/firewall</span></tt> nella home directory
5425 dell'utente <tt class="docutils literal"><span class=
5426 "pre">root</span></tt>.</p>
5429 <div class="section" id="iptables-restore">
5430 <h3><a class="toc-backref" href=
5431 "#id114">9.9.2 Iptables-restore</a></h3>
5433 <p>Per ripristinare un set di regole precedentemente
5434 salvate con <tt class="docutils literal"><span class=
5435 "pre">iptables-save</span></tt> si utilizzi <tt class=
5436 "docutils literal"><span class=
5437 "pre">iptables-restore</span></tt>. Se questo deve essere
5438 fatto in modalita' <em>non interattiva</em>, ad esempio
5439 deve essere eseguito dal demone che si occupa di
5440 inizializzare le schede di rete, oppure un <em>cron</em>
5441 o altro, e' buona norma richiamare i percorsi completi
5442 sia dei comandi che dei file:</p>
5443 <pre class="literal-block">
5444 /sbin/iptables-restore /root/firewall/basic_fw
5449 <div class="section" id="esempi">
5450 <h2><a class="toc-backref" href=
5451 "#id115">9.10 Esempi</a></h2>
5453 <p>Seguono alcuni esempi sull'uso di iptables, lo scenario
5454 e' un computer con un paio di schede di rete fisiche una
5455 delle quali collegata alla rete internet l'altra a una rete
5456 privata per la LAN interna.</p>
5459 <ol class="arabic simple">
5460 <li><tt class="docutils literal"><span class=
5461 "pre">eth0</span></tt> scheda di rete principale sulla
5462 rete privata interna 192.168.0.0/24</li>
5464 <li><tt class="docutils literal"><span class=
5465 "pre">eth1</span></tt> scheda di rete secondaria per la
5466 connessione ad internet</li>
5468 <li><tt class="docutils literal"><span class=
5469 "pre">ppp0</span></tt> punto-a-punto per una
5470 connessione ad internet</li>
5474 <div class="section" id="bloccare-i-ping-dall-esterno">
5475 <h3><a class="toc-backref" href=
5476 "#id116">9.10.1 Bloccare i ping
5477 dall'esterno</a></h3>
5479 <p>Spesso gli script che attaccano
5480 <em>automaticamente</em> le varie reti provano a fare un
5481 ping per verificare quali IP sono on-line: bloccare il
5482 traffico <tt class="docutils literal"><span class=
5483 "pre">ICMP</span></tt> in ingresso puo' aiutare ad
5484 evitare parte di questi attacchi:</p>
5485 <pre class="literal-block">
5486 iptables -A INPUT -i ppp0 -p ICMP -j DROP
5490 <div class="section" id="masquerading-snat">
5491 <h3><a class="toc-backref" href=
5492 "#id117">9.10.2 Masquerading
5495 <dl class="docutils">
5496 <dt>Per attivare la network address translation (in
5497 questo caso un SNAT) per la rete locale privata
5498 sull'indirizzo ip del <em>modem</em>::</dt>
5500 <dd>iptables -A POSTROUTING -s
5501 192.168.0.0/255.255.255.0 -o ppp0 -j MASQUERADE</dd>
5504 <p>Il <em>Masquerading</em> a differenza dello
5505 <em>SNAT</em> puro (<tt class=
5506 "docutils literal"><span class="pre">-j</span>
5507 <span class="pre">SNAT</span> <span class=
5508 "pre">--to-source</span> <span class=
5509 "pre">proprio_ip_pubblico</span> <span class=
5510 "pre">)</span> <span class="pre">legge</span>
5511 <span class="pre">l'indirizzo</span> <span class=
5512 "pre">ip</span> <span class="pre">del</span> <span class=
5513 "pre">device</span> <span class="pre">``ppp0</span></tt>.
5514 In questo modo se l'IP cambia automaticamente si aggiorna
5515 anche il source natting. Se avete un indirizzo IP statico
5516 assegnato al vostro gateway potete invece usare lo SNAT
5519 <dl class="docutils">
5520 <dt>Altri esempi::</dt>
5523 <p class="first">## Change source addresses to
5524 1.2.3.4. # iptables -t nat -A POSTROUTING -o eth0 -j
5525 SNAT --to 1.2.3.4</p>
5527 <p>## Change source addresses to 1.2.3.4, 1.2.3.5 or
5528 1.2.3.6 # iptables -t nat -A POSTROUTING -o eth0 -j
5529 SNAT --to 1.2.3.4-1.2.3.6</p>
5531 <p class="last">## Change source addresses to
5532 1.2.3.4, ports 1-1023 # iptables -t nat -A
5533 POSTROUTING -p tcp -o eth0 -j SNAT --to
5539 <div class="section" id="brute-force">
5540 <h3><a class="toc-backref" href=
5541 "#id118">9.10.3 Brute force</a></h3>
5543 <p>Per limitare attacchi di tipo brute force su SSH:</p>
5544 <pre class="literal-block">
5545 iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 3000 --hitcount 4 --name DEFAULT --rsource -j DROP
5547 iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
5553 <div class="section" id="note">
5554 <h1><a class="toc-backref" href=
5555 "#id119">10 NOTE</a></h1>
5557 <dl class="docutils">
5561 <ul class="first last simple">
5562 <li>altri esempi commenti su una zona</li>
5564 <li>esempi di una zona PTR?</li>
5566 <li>dns secondari</li>
5573 <p>sintassi: in <tt class="docutils literal"><span class=
5574 "pre">monospace</span></tt> :</p>
5577 <li>nomi di files</li>