<html lang="it">
<head>
<meta name="generator" content=
- "HTML Tidy for Linux/x86 (vers 7 December 2008), see www.w3.org">
+ "HTML Tidy for Linux/x86 (vers 25 March 2009), see www.w3.org">
<meta http-equiv="Content-Type" content=
"text/html; charset=iso-8859-1">
<meta name="generator" content=
margin: 2em;
padding: 0em 2em;
}
+ pre.literal-block {
+ overflow: auto;
+ padding: 5px;
+ background-color: #eeffcc;
+ color: #333333;
+ line-height: 120%;
+ border: 1px solid #ac9;
+ border-left: none;
+ border-right: none;
+ }
p.topic-title {
font-weight: bold;
p {
margin: 0.5em 0 1em 0;
+ text-align: justify;
line-height: 1.5em;
}
+
p a:visited {
color: purple;
background-color: transparent;
<h1 class="title">Servizi di rete passo a passo</h1>
<h2 class="subtitle" id=
- "appunti-sulla-installazione-e-configurazione-dei-servizi">
- Appunti sulla installazione e configurazione dei servizi</h2>
+ "appunti-sulla-installazione-e-configurazione-dei-servizi-di-rete-in-ambiete-gnu-linx">
+ Appunti sulla installazione e configurazione dei servizi di
+ rete in ambiete Gnu/Linx</h2>
<blockquote>
<table class="docutils field-list" frame="void" rules="none">
<tr class="field">
<th class="field-name">Version:</th>
- <td class="field-body">0.8</td>
+ <td class="field-body">0.94</td>
</tr>
</tbody>
</table>
</blockquote>
- <p>Questa guida e' dedicata agli studenti delle lezioni di
- informatica tenute da Andrea nel lab208. Nella parte iniziale
- sono presenti alcuni richiami alle impostazioni di rete e di
- installazione del laboratorio 208 (lab208) dove generalmente si
- tengono le lezioni. Questi parametri non sono interessanti per
- chiunque si trovasse al di fuori della rete piffa.net .</p>
+ <p>Questa guida tratta la configurazione di base dei principali
+ servizi di rete utilizzati con sistemi operativi <em>Unix</em>
+ e derivati come <em>GNU/Linux</em> per gli studenti dei corsi
+ per amministratori di rete in ambiente <em>GNU/Linux</em>. In
+ particolare questa guida e' stata scritta usando come
+ riferimento la distribuzione <em>Debian GNU/Linux</em>. Gli
+ esempi presentati dovrebbero quindi essere direttamente
+ utilizzabili anche su distribuzioni derivate da Debian come
+ Ubuntu, per sistemi operativi diversi si presti attenzione ai
+ percorsi dei file citati.</p>
<div class="contents topic" id="indice-degli-argomenti">
<p class="topic-title first">Indice degli argomenti</p>
<ul class="auto-toc simple">
<li>
<a class="reference internal" href=
- "#configurazione-sistema" id="id7" name=
- "id7">1 Configurazione sistema</a>
+ "#configurazione-sistema" id="id9" name=
+ "id9">1 Configurazione sistema</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#solo-per-uso-interno" id="id8" name=
- "id8">1.1 Solo per uso
+ "#solo-per-uso-interno" id="id10" name=
+ "id10">1.1 Solo per uso
interno</a></li>
<li>
- <a class="reference internal" href="#rete" id="id9"
- name="id9">1.2 Rete</a>
+ <a class="reference internal" href="#rete" id="id11"
+ name="id11">1.2 Rete</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#interfaces" id="id10" name=
- "id10">1.2.1 interfaces</a></li>
+ "#interfaces" id="id12" name=
+ "id12">1.2.1 interfaces</a></li>
</ul>
</li>
<li><a class="reference internal" href=
- "#bash-completion" id="id11" name=
- "id11">1.3 Bash completion</a></li>
+ "#bash-completion" id="id13" name=
+ "id13">1.3 Bash completion</a></li>
- <li><a class="reference internal" href="#vim" id="id12"
- name="id12">1.4 Vim</a></li>
+ <li><a class="reference internal" href="#vim" id="id14"
+ name="id14">1.4 Vim</a></li>
- <li><a class="reference internal" href="#vnc" id="id13"
- name="id13">1.5 VNC</a></li>
+ <li><a class="reference internal" href="#vnc" id="id15"
+ name="id15">1.5 VNC</a></li>
<li><a class="reference internal" href=
- "#lista-dei-pacchetti-di-base" id="id14" name=
- "id14">1.6 Lista dei pacchetti di
+ "#lista-dei-pacchetti-di-base" id="id16" name=
+ "id16">1.6 Lista dei pacchetti di
base</a></li>
<li>
<a class="reference internal" href=
- "#apt-configurazione" id="id15" name=
- "id15">1.7 Apt configurazione</a>
+ "#apt-configurazione" id="id17" name=
+ "id17">1.7 Apt configurazione</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#sources-list" id="id16" name=
- "id16">1.7.1 sources.list</a></li>
+ "#sources-list" id="id18" name=
+ "id18">1.7.1 sources.list</a></li>
<li><a class="reference internal" href=
- "#etc-apt-apt-conf" id="id17" name=
- "id17">1.7.2 /etc/apt/apt.conf</a></li>
+ "#etc-apt-apt-conf" id="id19" name=
+ "id19">1.7.2 /etc/apt/apt.conf</a></li>
</ul>
</li>
</ul>
</li>
<li>
- <a class="reference internal" href="#squid" id="id18"
- name="id18">2 Squid</a>
+ <a class="reference internal" href="#squid" id="id20"
+ name="id20">2 Squid</a>
<ul class="auto-toc">
<li>
<a class="reference internal" href=
- "#configurazione-squid-conf" id="id19" name=
- "id19">2.1 Configurazione:
+ "#configurazione-squid-conf" id="id21" name=
+ "id21">2.1 Configurazione:
squid.conf</a>
<ul class="auto-toc">
- <li><a class="reference internal" href="#cache-dir"
- id="id20" name=
- "id20">2.1.1 Cache_dir</a></li>
+ <li>
+ <a class="reference internal" href="#cache-dir"
+ id="id22" name=
+ "id22">2.1.1 Cache_dir</a>
+
+ <ul class="auto-toc">
+ <li><a class="reference internal" href=
+ "#opzioni-del-file-system" id="id23" name=
+ "id23">2.1.1.1 Opzioni del
+ file system</a></li>
+ </ul>
+ </li>
+
+ <li><a class="reference internal" href=
+ "#configurazioni-di-cache-dir" id="id24" name=
+ "id24">2.1.2 Configurazioni di
+ Cache_dir</a></li>
<li><a class="reference internal" href=
- "#tag-maximum-object-size" id="id21" name=
- "id21">2.1.2 TAG:
+ "#tag-maximum-object-size" id="id25" name=
+ "id25">2.1.3 TAG:
maximum_object_size</a></li>
<li><a class="reference internal" href=
- "#tag-cache-mem" id="id22" name=
- "id22">2.1.3 TAG:
+ "#tag-cache-mem" id="id26" name=
+ "id26">2.1.4 TAG:
cache_mem</a></li>
<li><a class="reference internal" href=
- "#tag-minimum-object-size" id="id23" name=
- "id23">2.1.4 TAG:
+ "#tag-minimum-object-size" id="id27" name=
+ "id27">2.1.5 TAG:
minimum_object_size</a></li>
</ul>
</li>
<li>
<a class="reference internal" href=
- "#negoziazione-degli-accesi-al-servizio" id="id24"
- name="id24">2.2 Negoziazione degli
+ "#negoziazione-degli-accesi-al-servizio" id="id28"
+ name="id28">2.2 Negoziazione degli
accesi al servizio</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#acl-e-http-access" id="id25" name=
- "id25">2.2.1 ACL e http
+ "#acl-e-http-access" id="id29" name=
+ "id29">2.2.1 ACL e http
access</a></li>
</ul>
</li>
<li>
<a class="reference internal" href="#testare-squid"
- id="id26" name="id26">2.3 Testare
+ id="id30" name="id30">2.3 Testare
Squid</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#client-wgetrc" id="id27" name=
- "id27">2.3.1 Client:
+ "#client-wgetrc" id="id31" name=
+ "id31">2.3.1 Client:
~/.wgetrc</a></li>
<li><a class="reference internal" href=
- "#server-access-log" id="id28" name=
- "id28">2.3.2 Server:
+ "#server-access-log" id="id32" name=
+ "id32">2.3.2 Server:
access.log</a></li>
</ul>
</li>
</ul>
</li>
+ <li><a class="reference internal" href="#tiny-proxy" id=
+ "id33" name="id33">3 Tiny proxy</a></li>
+
<li>
- <a class="reference internal" href="#apache" id="id29"
- name="id29">3 Apache</a>
+ <a class="reference internal" href="#apache" id="id34"
+ name="id34">4 Apache</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#pacchetti-da-installare" id="id30" name=
- "id30">3.1 Pacchetti da
+ "#pacchetti-da-installare" id="id35" name=
+ "id35">4.1 Pacchetti da
installare::</a></li>
<li><a class="reference internal" href=
- "#configurazione-di-apache" id="id31" name=
- "id31">3.2 Configurazione di
+ "#configurazione-di-apache" id="id36" name=
+ "id36">4.2 Configurazione di
Apache</a></li>
<li><a class="reference internal" href="#apache-conf"
- id="id32" name=
- "id32">3.3 apache.conf</a></li>
+ id="id37" name=
+ "id37">4.3 apache.conf</a></li>
<li>
<a class="reference internal" href=
- "#installazione-di-php" id="id33" name=
- "id33">3.4 Installazione di PHP</a>
+ "#installazione-di-php" id="id38" name=
+ "id38">4.4 Installazione di PHP</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#test-del-modulo-php" id="id34" name=
- "id34">3.4.1 Test del modulo
+ "#test-del-modulo-php" id="id39" name=
+ "id39">4.4.1 Test del modulo
php</a></li>
<li><a class="reference internal" href=
- "#installazione-del-supporto-per-mysql" id="id35"
- name="id35">3.4.2 Installazione
- del supporto per Mysql</a></li>
+ "#installazione-del-supporto-per-mysql-a-php" id=
+ "id40" name=
+ "id40">4.4.2 Installazione del
+ supporto per Mysql a PHP</a></li>
<li><a class="reference internal" href=
- "#phpmyadmin" id="id36" name=
- "id36">3.4.3 phpmyadmin</a></li>
+ "#phpmyadmin" id="id41" name=
+ "id41">4.4.3 phpmyadmin</a></li>
<li><a class="reference internal" href=
- "#installazione-del-supporto-per-postgresql" id=
- "id37" name=
- "id37">3.4.4 Installazione del
- supporto per Postgresql</a></li>
+ "#installazione-del-supporto-per-postgresql-a-php"
+ id="id42" name=
+ "id42">4.4.4 Installazione del
+ supporto per Postgresql a PHP</a></li>
<li><a class="reference internal" href=
- "#phppgadmin" id="id38" name=
- "id38">3.4.5 phppgadmin</a></li>
+ "#phppgadmin" id="id43" name=
+ "id43">4.4.5 phppgadmin</a></li>
</ul>
</li>
<li>
<a class="reference internal" href="#virtual-hosts"
- id="id39" name="id39">3.5 Virtual
+ id="id44" name="id44">4.5 Virtual
hosts</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#gestione-dns" id="id40" name=
- "id40">3.5.1 Gestione DNS</a></li>
+ "#gestione-dns" id="id45" name=
+ "id45">4.5.1 Gestione DNS</a></li>
<li><a class="reference internal" href=
- "#virtual-host" id="id41" name=
- "id41">3.5.2 Virtual host</a></li>
+ "#eseguire-una-query-dns-con-dig" id="id46" name=
+ "id46">4.5.2 Eseguire una query
+ DNS con <tt class="docutils literal"><span class=
+ "pre">dig</span></tt>::</a></li>
+
+ <li><a class="reference internal" href="#id3" id=
+ "id47" name="id47">4.5.3 Virtual
+ hosts</a></li>
</ul>
</li>
<li>
<a class="reference internal" href=
- "#negoziazione-accessi" id="id42" name=
- "id42">3.6 Negoziazione accessi</a>
+ "#negoziazione-accessi" id="id48" name=
+ "id48">4.6 Negoziazione accessi</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#limiti-su-base-ip" id="id43" name=
- "id43">3.6.1 Limiti su base
+ "#limiti-su-base-ip" id="id49" name=
+ "id49">4.6.1 Limiti su base
IP</a></li>
</ul>
</li>
<li>
<a class="reference internal" href=
- "#user-authentication" id="id44" name=
- "id44">3.7 User Authentication</a>
+ "#user-authentication" id="id50" name=
+ "id50">4.7 User Authentication</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#definire-la-cartella" id="id45" name=
- "id45">3.7.1 Definire la
+ "#definire-la-cartella" id="id51" name=
+ "id51">4.7.1 Definire la
cartella</a></li>
<li><a class="reference internal" href=
- "#creazione-del-database-delle-passwords" id="id46"
- name="id46">3.7.2 Creazione del
+ "#creazione-del-database-delle-passwords" id="id52"
+ name="id52">4.7.2 Creazione del
database delle passwords</a></li>
- <li><a class="reference internal" href="#id3" id=
- "id47" name=
- "id47">3.7.3 Configurazione di
+ <li><a class="reference internal" href="#id4" id=
+ "id53" name=
+ "id53">4.7.3 Configurazione di
Apache</a></li>
</ul>
</li>
<li><a class="reference internal" href="#cavets" id=
- "id48" name="id48">3.8 Cavets</a></li>
+ "id54" name="id54">4.8 Cavets</a></li>
</ul>
</li>
<li>
<a class="reference internal" href="#domain-name-system"
- id="id49" name="id49">4 Domain Name
+ id="id55" name="id55">5 Domain Name
System</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#risoluzione-inversa" id="id50" name=
- "id50">4.1 Risoluzione
+ "#risoluzione-inversa" id="id56" name=
+ "id56">5.1 Risoluzione
Inversa</a></li>
<li><a class="reference internal" href=
- "#nomi-di-dominio" id="id51" name=
- "id51">4.2 Nomi di dominio</a></li>
+ "#nomi-di-dominio" id="id57" name=
+ "id57">5.2 Nomi di dominio</a></li>
<li><a class="reference internal" href=
- "#tipologie-di-record" id="id52" name=
- "id52">4.3 Tipologie di
+ "#tipologie-di-record" id="id58" name=
+ "id58">5.3 Tipologie di
record</a></li>
<li><a class="reference internal" href="#utilizzo" id=
- "id53" name=
- "id53">4.4 Utilizzo</a></li>
+ "id59" name=
+ "id59">5.4 Utilizzo</a></li>
<li><a class="reference internal" href=
- "#risoluzione-dei-nomi-di-dominio" id="id54" name=
- "id54">4.5 Risoluzione dei nomi di
+ "#risoluzione-dei-nomi-di-dominio" id="id60" name=
+ "id60">5.5 Risoluzione dei nomi di
dominio</a></li>
- <li><a class="reference internal" href="#dig" id="id55"
- name="id55">4.6 Dig</a></li>
+ <li><a class="reference internal" href="#dig" id="id61"
+ name="id61">5.6 Dig</a></li>
<li><a class="reference internal" href="#resolv-conf"
- id="id56" name=
- "id56">4.7 resolv.conf</a></li>
+ id="id62" name=
+ "id62">5.7 resolv.conf</a></li>
<li><a class="reference internal" href="#etc-hosts" id=
- "id57" name=
- "id57">4.8 /etc/hosts</a></li>
+ "id63" name=
+ "id63">5.8 /etc/hosts</a></li>
+
+ <li>
+ <a class="reference internal" href="#hostname" id=
+ "id64" name="id64">5.9 Hostname</a>
- <li><a class="reference internal" href="#hostname" id=
- "id58" name=
- "id58">4.9 Hostname</a></li>
+ <ul class="auto-toc">
+ <li><a class="reference internal" href="#fqdn" id=
+ "id65" name=
+ "id65">5.9.1 FQDN</a></li>
+ </ul>
+ </li>
</ul>
</li>
<li>
- <a class="reference internal" href="#dnsmasq" id="id59"
- name="id59">5 DNSmasq</a>
+ <a class="reference internal" href="#dnsmasq" id="id66"
+ name="id66">6 DNSmasq</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#configurazione" id="id60" name=
- "id60">5.1 Configurazione</a></li>
+ "#configurazione" id="id67" name=
+ "id67">6.1 Configurazione</a></li>
<li><a class="reference internal" href="#dhcp" id=
- "id61" name="id61">5.2 DHCP</a></li>
+ "id68" name="id68">6.2 DHCP</a></li>
<li><a class="reference internal" href="#dns-cache" id=
- "id62" name="id62">5.3 DNS
+ "id69" name="id69">6.3 DNS
cache</a></li>
</ul>
</li>
<li>
<a class="reference internal" href=
- "#bind-dns-autoritativo" id="id63" name=
- "id63">6 Bind : DNS Autoritativo</a>
+ "#bind-dns-autoritativo" id="id70" name=
+ "id70">7 Bind : DNS Autoritativo</a>
<ul class="auto-toc">
- <li><a class="reference internal" href="#id4" id="id64"
- name="id64">6.1 DNS cache</a></li>
+ <li><a class="reference internal" href="#id5" id="id71"
+ name="id71">7.1 DNS cache</a></li>
<li>
<a class="reference internal" href=
- "#ospitare-una-zona" id="id65" name=
- "id65">6.2 Ospitare una zona</a>
+ "#ospitare-una-zona" id="id72" name=
+ "id72">7.2 Ospitare una zona</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#named-conf-local" id="id66" name=
- "id66">6.2.1 named.conf.local</a></li>
+ "#named-conf-local" id="id73" name=
+ "id73">7.2.1 named.conf.local</a></li>
<li>
<a class="reference internal" href=
- "#configurazione-della-zona" id="id67" name=
- "id67">6.2.2 Configurazione
+ "#configurazione-della-zona" id="id74" name=
+ "id74">7.2.2 Configurazione
della zona</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#soa-start-of-authority-record" id="id68"
- name="id68">6.2.2.1 SOA: Start
+ "#soa-start-of-authority-record" id="id75"
+ name="id75">7.2.2.1 SOA: Start
of Authority Record</a></li>
<li><a class="reference internal" href=
- "#altri-campi" id="id69" name=
- "id69">6.2.2.2 Altri
+ "#altri-campi" id="id76" name=
+ "id76">7.2.2.2 Altri
campi:</a></li>
</ul>
</li>
</li>
<li><a class="reference internal" href="#dns-slave" id=
- "id70" name="id70">6.3 DNS
+ "id77" name="id77">7.3 DNS
slave</a></li>
<li>
<a class="reference internal" href=
- "#aggiornamento-dinamico-nsupdate" id="id71" name=
- "id71">6.4 Aggiornamento dinamico:
+ "#aggiornamento-dinamico-nsupdate" id="id78" name=
+ "id78">7.4 Aggiornamento dinamico:
nsupdate</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#configurazione-client-nsupdate" id="id72" name=
- "id72">6.4.1 Configurazione client
+ "#configurazione-client-nsupdate" id="id79" name=
+ "id79">7.4.1 Configurazione client
(nsupdate)</a></li>
<li><a class="reference internal" href=
"#configurazione-server-riconoscimento-chiave" id=
- "id73" name=
- "id73">6.4.2 Configurazione
+ "id80" name=
+ "id80">7.4.2 Configurazione
server: riconoscimento chiave</a></li>
<li><a class="reference internal" href=
- "#server-gestione-dell-intera-zona" id="id74" name=
- "id74">6.4.3 Server: gestione
+ "#server-gestione-dell-intera-zona" id="id81" name=
+ "id81">7.4.3 Server: gestione
dell'intera zona</a></li>
+
+ <li><a class="reference internal" href=
+ "#automatizzare-l-aggiornamento-dinamico" id="id82"
+ name="id82">7.4.4 Automatizzare
+ l'aggiornamento dinamico</a></li>
</ul>
</li>
<li><a class="reference internal" href=
- "#link-suggeriti" id="id75" name=
- "id75">6.5 Link suggeriti:</a></li>
+ "#link-suggeriti" id="id83" name=
+ "id83">7.5 Link suggeriti:</a></li>
</ul>
</li>
<li>
- <a class="reference internal" href="#samba" id="id76"
- name="id76">7 Samba</a>
+ <a class="reference internal" href="#samba" id="id84"
+ name="id84">8 Samba</a>
<ul class="auto-toc">
<li><a class="reference internal" href="#pacchetti" id=
- "id77" name=
- "id77">7.1 Pacchetti</a></li>
+ "id85" name=
+ "id85">8.1 Pacchetti</a></li>
<li><a class="reference internal" href=
- "#passwords-e-autenticazione" id="id78" name=
- "id78">7.2 Passwords e
+ "#passwords-e-autenticazione" id="id86" name=
+ "id86">8.2 Passwords e
autenticazione</a></li>
<li><a class="reference internal" href=
- "#creazione-utenti" id="id79" name=
- "id79">7.3 Creazione Utenti</a></li>
+ "#creazione-utenti" id="id87" name=
+ "id87">8.3 Creazione Utenti</a></li>
<li>
<a class="reference internal" href=
- "#creare-la-condivisione" id="id80" name=
- "id80">7.4 Creare la
+ "#creare-la-condivisione" id="id88" name=
+ "id88">8.4 Creare la
condivisione</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
"#sicurezza-permessi-di-esecuzione-sul-server" id=
- "id81" name=
- "id81">7.4.1 Sicurezza: permessi
+ "id89" name=
+ "id89">8.4.1 Sicurezza: permessi
di esecuzione sul server</a></li>
</ul>
</li>
<li>
<a class="reference internal" href=
"#configurazione-dell-applicativo-samba-vero-e-proprio"
- id="id82" name=
- "id82">7.5 Configurazione
+ id="id90" name=
+ "id90">8.5 Configurazione
dell'applicativo Samba vero e proprio.</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#creazione-di-un-gruppo" id="id83" name=
- "id83">7.5.1 Creazione di un
+ "#creazione-di-un-gruppo" id="id91" name=
+ "id91">8.5.1 Creazione di un
gruppo</a></li>
</ul>
</li>
<li><a class="reference internal" href=
- "#testare-il-servizio" id="id84" name=
- "id84">7.6 Testare il
+ "#testare-il-servizio" id="id92" name=
+ "id92">8.6 Testare il
Servizio</a></li>
</ul>
</li>
<li>
<a class="reference internal" href=
- "#server-di-posta-postfix" id="id85" name=
- "id85">8 Server di posta: Postfix</a>
+ "#server-di-posta-postfix" id="id93" name=
+ "id93">9 Server di posta: Postfix</a>
<ul class="auto-toc">
<li>
<a class="reference internal" href=
- "#test-del-server-smtp" id="id86" name=
- "id86">8.1 Test del server smtp</a>
+ "#test-del-server-smtp" id="id94" name=
+ "id94">9.1 Test del server smtp</a>
<ul class="auto-toc">
<li><a class="reference internal" href="#swaks" id=
- "id87" name=
- "id87">8.1.1 Swaks</a></li>
+ "id95" name=
+ "id95">9.1.1 Swaks</a></li>
</ul>
</li>
<li><a class="reference internal" href="#imap-e-pop"
- id="id88" name="id88">8.2 Imap e
+ id="id96" name="id96">9.2 Imap e
pop</a></li>
<li>
<a class="reference internal" href=
- "#client-a-riga-di-comando" id="id89" name=
- "id89">8.3 Client a riga di
+ "#client-a-riga-di-comando" id="id97" name=
+ "id97">9.3 Client a riga di
comando</a>
<ul class="auto-toc">
<li><a class="reference internal" href="#mailx" id=
- "id90" name=
- "id90">8.3.1 mailx</a></li>
+ "id98" name=
+ "id98">9.3.1 mailx</a></li>
<li><a class="reference internal" href="#mutt" id=
- "id91" name=
- "id91">8.3.2 Mutt</a></li>
+ "id99" name=
+ "id99">9.3.2 Mutt</a></li>
<li><a class="reference internal" href=
- "#web-client" id="id92" name=
- "id92">8.3.3 Web client</a></li>
+ "#web-client" id="id100" name=
+ "id100">9.3.3 Web client</a></li>
</ul>
</li>
<li>
<a class="reference internal" href="#graylisting" id=
- "id93" name=
- "id93">8.4 Graylisting</a>
+ "id101" name=
+ "id101">9.4 Graylisting</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#abilitazione-in-postfix" id="id94" name=
- "id94">8.4.1 Abilitazione in
+ "#abilitazione-in-postfix" id="id102" name=
+ "id102">9.4.1 Abilitazione in
Postfix</a></li>
<li><a class="reference internal" href="#test" id=
- "id95" name=
- "id95">8.4.2 Test</a></li>
+ "id103" name=
+ "id103">9.4.2 Test</a></li>
<li><a class="reference internal" href=
- "#statistiche" id="id96" name=
- "id96">8.4.3 Statistiche</a></li>
+ "#statistiche" id="id104" name=
+ "id104">9.4.3 Statistiche</a></li>
</ul>
</li>
</ul>
</li>
<li>
- <a class="reference internal" href="#firewall" id="id97"
- name="id97">9 Firewall</a>
+ <a class="reference internal" href="#firewall" id="id105"
+ name="id105">10 Firewall</a>
<ul class="auto-toc">
<li><a class="reference internal" href="#links" id=
- "id98" name="id98">9.1 Links</a></li>
+ "id106" name=
+ "id106">10.1 Links</a></li>
<li><a class="reference internal" href="#ipfilter" id=
- "id99" name=
- "id99">9.2 Ipfilter</a></li>
+ "id107" name=
+ "id107">10.2 Ipfilter</a></li>
<li>
<a class="reference internal" href=
- "#progettazione-di-un-firewall" id="id100" name=
- "id100">9.3 Progettazione di un
+ "#progettazione-di-un-firewall" id="id108" name=
+ "id108">10.3 Progettazione di un
firewall</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#collocazione" id="id101" name=
- "id101">9.3.1 Collocazione</a></li>
+ "#collocazione" id="id109" name=
+ "id109">10.3.1 Collocazione</a></li>
<li><a class="reference internal" href=
- "#policy-di-default" id="id102" name=
- "id102">9.3.2 Policy di
+ "#policy-di-default" id="id110" name=
+ "id110">10.3.2 Policy di
default</a></li>
<li><a class="reference internal" href="#hardware"
- id="id103" name=
- "id103">9.3.3 Hardware</a></li>
+ id="id111" name=
+ "id111">10.3.3 Hardware</a></li>
</ul>
</li>
<li><a class="reference internal" href=
"#percorso-dei-pacchetti-tra-tabelle-e-catene" id=
- "id104" name="id104">9.4 Percorso dei
+ "id112" name="id112">10.4 Percorso dei
pacchetti tra tabelle e catene</a></li>
<li>
<a class="reference internal" href=
- "#concetti-di-base" id="id105" name=
- "id105">9.5 Concetti di base</a>
+ "#concetti-di-base" id="id113" name=
+ "id113">10.5 Concetti di base</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#tabelle-catene-regole" id="id106" name=
- "id106">9.5.1 Tabelle, catene,
+ "#tabelle-catene-regole" id="id114" name=
+ "id114">10.5.1 Tabelle, catene,
regole</a></li>
<li><a class="reference internal" href="#match" id=
- "id107" name=
- "id107">9.5.2 Match</a></li>
+ "id115" name=
+ "id115">10.5.2 Match</a></li>
<li><a class="reference internal" href="#targets"
- id="id108" name=
- "id108">9.5.3 Targets</a></li>
+ id="id116" name=
+ "id116">10.5.3 Targets</a></li>
</ul>
</li>
<li><a class="reference internal" href=
- "#tabella-filter" id="id109" name=
- "id109">9.6 Tabella Filter</a></li>
+ "#tabella-filter" id="id117" name=
+ "id117">10.6 Tabella Filter</a></li>
<li><a class="reference internal" href=
- "#flush-automatico-per-macchine-remote" id="id110"
- name="id110">9.7 Flush automatico per
+ "#flush-automatico-per-macchine-remote" id="id118"
+ name="id118">10.7 Flush automatico per
macchine remote</a></li>
<li><a class="reference internal" href=
- "#gestione-regole-rules" id="id111" name=
- "id111">9.8 Gestione regole
+ "#gestione-regole-rules" id="id119" name=
+ "id119">10.8 Gestione regole
(rules)</a></li>
<li>
<a class="reference internal" href=
- "#salvataggio-regole" id="id112" name=
- "id112">9.9 Salvataggio regole</a>
+ "#salvataggio-regole" id="id120" name=
+ "id120">10.9 Salvataggio regole</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#iptables-save" id="id113" name=
- "id113">9.9.1 Iptables-save</a></li>
+ "#iptables-save" id="id121" name=
+ "id121">10.9.1 Iptables-save</a></li>
<li><a class="reference internal" href=
- "#iptables-restore" id="id114" name=
- "id114">9.9.2 Iptables-restore</a></li>
+ "#iptables-restore" id="id122" name=
+ "id122">10.9.2 Iptables-restore</a></li>
</ul>
</li>
<li>
<a class="reference internal" href="#esempi" id=
- "id115" name="id115">9.10 Esempi</a>
+ "id123" name=
+ "id123">10.10 Esempi</a>
<ul class="auto-toc">
<li><a class="reference internal" href=
- "#bloccare-i-ping-dall-esterno" id="id116" name=
- "id116">9.10.1 Bloccare i ping
+ "#bloccare-i-ping-dall-esterno" id="id124" name=
+ "id124">10.10.1 Bloccare i ping
dall'esterno</a></li>
<li><a class="reference internal" href=
- "#masquerading-snat" id="id117" name=
- "id117">9.10.2 Masquerading
+ "#masquerading-snat" id="id125" name=
+ "id125">10.10.2 Masquerading
(sNAT)</a></li>
<li><a class="reference internal" href=
- "#brute-force" id="id118" name=
- "id118">9.10.3 Brute
+ "#brute-force" id="id126" name=
+ "id126">10.10.3 Brute
force</a></li>
</ul>
</li>
</ul>
</li>
- <li><a class="reference internal" href="#note" id="id119"
- name="id119">10 NOTE</a></li>
+ <li>
+ <a class="reference internal" href="#ftp-server" id=
+ "id127" name="id127">11 FTP Server</a>
+
+ <ul class="auto-toc">
+ <li><a class="reference internal" href="#id8" id=
+ "id128" name=
+ "id128">11.1 Pacchetti</a></li>
+
+ <li><a class="reference internal" href="#sessioni-ftp"
+ id="id129" name="id129">11.2 Sessioni
+ ftp</a></li>
+
+ <li><a class="reference internal" href=
+ "#configurazione-iniziale" id="id130" name=
+ "id130">11.3 Configurazione
+ iniziale</a></li>
+
+ <li><a class="reference internal" href=
+ "#abilitare-gli-utenti-locali" id="id131" name=
+ "id131">11.4 Abilitare gli utenti
+ locali</a></li>
+
+ <li><a class="reference internal" href="#jail-chroot"
+ id="id132" name="id132">11.5 Jail
+ chroot</a></li>
+
+ <li><a class="reference internal" href=
+ "#permessi-sul-filesystem" id="id133" name=
+ "id133">11.6 Permessi sul
+ filesystem</a></li>
+
+ <li><a class="reference internal" href=
+ "#shell-dell-utente" id="id134" name=
+ "id134">11.7 Shell
+ dell'utente</a></li>
+
+ <li><a class="reference internal" href="#altre-opzioni"
+ id="id135" name="id135">11.8 Altre
+ opzioni</a></li>
+ </ul>
+ </li>
</ul>
</div>
- <p>Generato con: <a class="reference external" href=
+ <p>Generato il 2010-02-09 con: <a class="reference external"
+ href=
"http://docutils.sourceforge.net/rst.html">http://docutils.sourceforge.net/rst.html</a></p>
<div class="section" id="configurazione-sistema">
<h1><a class="toc-backref" href=
- "#id7">1 Configurazione sistema</a></h1>
+ "#id9">1 Configurazione sistema</a></h1>
<div class="section" id="solo-per-uso-interno">
<h2><a class="toc-backref" href=
- "#id8">1.1 Solo per uso interno</a></h2>
+ "#id10">1.1 Solo per uso interno</a></h2>
<p>Impostazioni di base per la configurazione del sistema
operativo e della rete nel laboratorio 208 facente parte
della rete piffa.net .</p>
- <p>Qui riportati per comodita' degli studenti (e del
- docente che non sara' <strong>mai piu'</strong> costretto a
- ripeterli continuamente! ). Gli altri lettori potranno
- tenerli presenti per cercare di comprendere gli esempi nel
- testo. Ad esempio: quando leggerete <tt class=
- "docutils literal"><span class=
- "pre">10.10.208.254:3128</span></tt> saprete che si tratta
- del nostro <em>proxy http</em>, stara' quindi a voi
- sostituire i dati con gli equivalenti <em>IP</em> della
- vostra rete.</p>
+ <p>Sono qui riportati i parametri della rete locale per
+ comodita' degli studenti, gli altri lettori possono
+ considerarli come riferimento per comprendere i valori
+ espressi nei vari file di configurazione. Ad esempio:
+ quando leggerete <tt class="docutils literal"><span class=
+ "pre">10.10.208.248:3128</span></tt> saprete che si tratta
+ del nostro <em>proxy http</em> in ascolto sulla porta
+ <cite>3128</cite>, stara' quindi a voi sostituire i dati
+ con gli equivalenti <em>IP</em> della vostra rete.</p>
</div>
<div class="section" id="rete">
<h2><a class="toc-backref" href=
- "#id9">1.2 Rete</a></h2>
+ "#id11">1.2 Rete</a></h2>
<p>Parametri della rete attualmente in uso:</p>
<table border="1" class="docutils">
<colgroup>
- <col width="42%">
- <col width="58%">
+ <col width="45%">
+ <col width="55%">
</colgroup>
<tbody valign="top">
<tr>
<td>gateway</td>
- <td>10.10.208.254</td>
+ <td>10.10.208.248</td>
</tr>
<tr>
<td>DNS</td>
- <td>10.10.208.254</td>
- </tr>
-
- <tr>
- <td>proxy http</td>
-
- <td>10.10.208.254:3128</td>
+ <td>10.10.208.248</td>
</tr>
</tbody>
</table>
- <p>Sul portatile di Andrea, corrispondente all'IP 254, gira
- un DHCP, proxy http e mirror di Debian ( <a class=
- "reference external" href=
- "http://debian.piffa.net">http://debian.piffa.net</a>). Se
- Andrea non e' in aula (o ancora peggio non c'e' il suo
- portatile Net) gli studenti dovranno darsi un indirizzo IP
- manualmente e disabilitare il proxy (che pero' e
- trasparente, quindi fate pure come se non ci fosse ;) . Ad
- oggi il <em>lab208</em> e' servito dal server Bender (254 o
- 248) che ha ripreso le sue vecchie funzioni.</p>
+ <p>Dal server locale degli studeti,
+ <strong>Bender</strong>, corrispondente all'IP <tt class=
+ "docutils literal"><span class=
+ "pre">10.10.208.248</span></tt>, vengono erogati i servizi
+ DHCP, DNS, gateway (con NAT), proxy http e mirror della
+ distribuzione Debian ( <a class="reference external" href=
+ "http://debian.piffa.net">http://debian.piffa.net</a>).
+ Altri servizi in esecuzione sul server:</p>
+
+ <ul class="simple">
+ <li>Rsync server e altri software di aggiornamento /
+ installazione di massa</li>
+
+ <li>Server imap / pop3 / webmail / smtp</li>
+
+ <li>Server ssh per i test degli studenti</li>
+
+ <li>File server Samba, NFS e controller di qualsiasi
+ altro FS distribuito</li>
+
+ <li>Print server per la gestione delle stampanti</li>
+
+ <li>DNS server</li>
+
+ <li>Mirror locale delle *.iso dei sistemi operativi e dei
+ vari software usati durante le lezioni</li>
+
+ <li>Spazi web con PHP, MySQL, Postgresql (altri DB o
+ framework vengono attivati a seconda dei corsi
+ attivi)</li>
+ </ul>
+
+ <p>Durante il corso delle lezioni e' opportuno che le
+ macchine degli studenti si appoggino al server Bender
+ (ottetto finale <tt class="docutils literal"><span class=
+ "pre">248</span></tt>), nel caso questo non fosse
+ raggiungibile (ad esempio per permettere impostazioni di
+ DHCP / routing diverse) sara' comunque disponibile il
+ <tt class="docutils literal"><span class=
+ "pre">10.10.208.254</span></tt> come gateway | DNS per la
+ rete <tt class="docutils literal"><span class=
+ "pre">10.10.208.10</span></tt>.</p>
+
+ <p><strong>Non e' piu' possibile</strong> raggiungere
+ Bender tramite l'IP pubblico <tt class=
+ "docutils literal"><span class=
+ "pre">212.22.136.248</span></tt> o <em>qualsiasi altro
+ ip</em> della classe <tt class=
+ "docutils literal"><span class="pre">C</span> <span class=
+ "pre">212.22.136.0/24</span></tt> precedentemente
+ disponibile.</p>
+
+ <p>Il computer del docente con il server VNC e' sempre
+ configurato con l'ottetto finale: <tt class=
+ "docutils literal"><span class="pre">177</span></tt> della
+ rete utilizzata durante le lezioni (quindi generalmente la
+ VNC sara' disponibile sul <tt class=
+ "docutils literal"><span class=
+ "pre">10.10.208.177:1</span></tt>.</p>
+
+ <p>Gli studenti sono pregati di non impedire l'accesso SSH
+ alla propria macchina dal computer del docente, e non
+ modificare la password dell'utente <tt class=
+ "docutils literal"><span class="pre">root</span></tt> del
+ sistema operativo <em>pre-istallato</em> (ad es:
+ <em>Diurno</em>).</p>
<div class="section" id="interfaces">
<h3><a class="toc-backref" href=
- "#id10">1.2.1 interfaces</a></h3>
+ "#id12">1.2.1 interfaces</a></h3>
<p>Segue un esempio del file di configurazione della
scheda di rete con configurazione statica:</p>
iface lo inet loopback
# La prima scheda di rete (se si chiama eth0)
-# (network, broadcast and gateway sono optional)
iface etho inet static
# esempio con dhcp:
# iface etho inet dhcp
broadcast 10.10.208.255
gateway 10.10.208.254
-# Quali interfacci devono partire automaticamente:
+# Quali interfaccie devono partire automaticamente:
auto lo eth0
</pre>
<p>I DNS vanno indicati nel file <tt class=
"docutils literal"><span class=
"pre">/etc/resolv.conf</span></tt> , la cui sintassi e'
- spiegata al punto 4.6 .</p>
+ spiegata al punto 4.6 . Come DNS si <em>deve</em> usare
+ il server Bender, alcuni parametri dei software di
+ installazione, risoluzione dei mirror, vengono
+ opportunamente modificatia da questo DNS.</p>
</div>
</div>
<div class="section" id="bash-completion">
<h2><a class="toc-backref" href=
- "#id11">1.3 Bash completion</a></h2>
+ "#id13">1.3 Bash completion</a></h2>
<p>Il completamento automatico della shell (che si attiva
premendo il tasto tab una o due volte mentre si sta
alias ll='ls $LS_OPTIONS -l'
alias l='ls $LS_OPTIONS -lA'
-# Some more alias to avoid making mistakes:
+# Abilitare i seguenti alias per impostare la conferma per cancellare file
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'
<li><a class="reference external" href=
"http://www.caliban.org/bash/">Working more productively
with bash 2.x/3.x</a></li>
+
+ <li>UNIX / Linux Shell Scripting Tutorial: <a class=
+ "reference external" href=
+ "http://steve-parker.org/sh/sh.shtml">http://steve-parker.org/sh/sh.shtml</a></li>
</ul>
</div>
<div class="section" id="vim">
<h2><a class="toc-backref" href=
- "#id12">1.4 Vim</a></h2>
+ "#id14">1.4 Vim</a></h2>
<p>Vim e' l'editor di testo preferito dai sistemisti,
quindi sara' conveniente impostare fin da subito alcune
impostazioni per renderlo piu' comodo.</p>
<p>Assicurarsi che sia installata nel sistema la versione
- completa dell'editor <tt class=
- "docutils literal"><span class="pre">vim</span></tt>
- installando il pacchetto <tt class=
+ completa dell'editor installando il pacchetto <tt class=
"docutils literal"><span class="pre">vim</span></tt>:</p>
<pre class="literal-block">
- # apt-get install vim
-
-e modificare il file di configurazione generale ``/etc/vim/vimrc`` ::
-
- " All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
- " /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
- " you can find below. If you wish to change any of those settings, you should
- " do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
- " everytime an upgrade of the vim packages is performed. It is recommended to
- " make changes after sourcing debian.vim since it alters the value of the
- " 'compatible' option.
-
- " This line should not be removed as it ensures that various options are
- " properly set to work with the Vim-related packages available in Debian.
- runtime! debian.vim
-
- " Uncomment the next line to make Vim more Vi-compatible
- " NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
- " options, so any other options should be set AFTER setting 'compatible'.
- "set compatible
-
- " Vim5 and later versions support syntax highlighting. Uncommenting the next
- " line enables syntax highlighting by default.
- syntax on
-
- " If using a dark background within the editing area and syntax highlighting
- " turn on this option as well.
- set background=dark
-
- " Uncomment the following to have Vim jump to the last position when
- " reopening a file
-
- if has("autocmd")
- au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
- \| exe "normal! g'\"" | endif
- endif
-
- " Uncomment the following to have Vim load indentation rules and plugins
- " according to the detected filetype.
- " This is not recommanded if you often copy and paste into vim,
- " as it messes all the indentation.
- if has("autocmd")
- filetype plugin indent on
- endif
-
- " This goes for comments folding: use co to expnad and zc to compress,
- " zi to toggle on/off
- set fdm=expr
- set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
-
- " The following are commented out as they cause vim to behave a lot
- " differently from regular Vi. They are highly recommended though.
- set showcmd " Show (partial) command in status line.
- "set showmatch " Show matching brackets.
- # Ignorecase is quite userfull
- set ignorecase " Do case insensitive matching
- "set smartcase " Do smart case matching
- "set incsearch " Incremental search
- set autowrite " Automatically save before commands like :next and :make
- "set hidden " Hide buffers when they are abandoned
- "set mouse=a " Enable mouse usage (all modes) in terminals
-
- " Source a global configuration file if available
- " XXX Deprecated, please move your changes here in /etc/vim/vimrc
- if filereadable("/etc/vim/vimrc.local")
- source /etc/vim/vimrc.local
- endif
+# apt-get install vim
+</pre>
+
+ <p>Modificare poi il file di configurazione generale
+ <tt class="docutils literal"><span class=
+ "pre">/etc/vim/vimrc</span></tt></p>
+ <pre class="literal-block">
+" All system-wide defaults are set in $VIMRUNTIME/debian.vim (usually just
+" /usr/share/vim/vimcurrent/debian.vim) and sourced by the call to :runtime
+" you can find below. If you wish to change any of those settings, you should
+" do it in this file (/etc/vim/vimrc), since debian.vim will be overwritten
+" everytime an upgrade of the vim packages is performed. It is recommended to
+" make changes after sourcing debian.vim since it alters the value of the
+" 'compatible' option.
+
+" This line should not be removed as it ensures that various options are
+" properly set to work with the Vim-related packages available in Debian.
+runtime! debian.vim
+
+" Uncomment the next line to make Vim more Vi-compatible
+" NOTE: debian.vim sets 'nocompatible'. Setting 'compatible' changes numerous
+" options, so any other options should be set AFTER setting 'compatible'.
+"set compatible
+
+" Vim5 and later versions support syntax highlighting. Uncommenting the next
+" line enables syntax highlighting by default.
+syntax on
+
+" If using a dark background within the editing area and syntax highlighting
+" turn on this option as well.
+set background=dark
+
+" Uncomment the following to have Vim jump to the last position when
+" reopening a file
+
+if has("autocmd")
+ au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$")
+ \| exe "normal! g'\"" | endif
+endif
+
+" Uncomment the following to have Vim load indentation rules and plugins
+" according to the detected filetype.
+" This is not recommanded if you often copy and paste into vim,
+" as it messes all the indentation.
+if has("autocmd")
+ filetype plugin indent on
+endif
+
+" This goes for comments folding: use co to expnad and zc to compress,
+" zi to toggle on/off
+set fdm=expr
+set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
+
+" The following are commented out as they cause vim to behave a lot
+" differently from regular Vi. They are highly recommended though.
+set showcmd " Show (partial) command in status line.
+"set showmatch " Show matching brackets.
+# Ignorecase is quite userfull
+set ignorecase " Do case insensitive matching
+"set smartcase " Do smart case matching
+"set incsearch " Incremental search
+set autowrite " Automatically save before commands like :next and :make
+"set hidden " Hide buffers when they are abandoned
+"set mouse=a " Enable mouse usage (all modes) in terminals
+
+" Source a global configuration file if available
+" XXX Deprecated, please move your changes here in /etc/vim/vimrc
+if filereadable("/etc/vim/vimrc.local")
+ source /etc/vim/vimrc.local
+endif
</pre>
<p>I principianti faranno bene ad esercitarsi con
<tt class="docutils literal"><span class=
"pre">vimtutor</span> <span class="pre">it</span></tt>.</p>
+
+ <p>Altri link per VIM:</p>
+
+ <ul class="simple">
+ <li>Vim Introduction and Tutorial: <a class=
+ "reference external" href=
+ "http://blog.interlinked.org/tutorials/vim_tutorial.html">
+ http://blog.interlinked.org/tutorials/vim_tutorial.html</a></li>
+
+ <li><a class="reference external" href=
+ "http://blog.smr.co.in/category/vim/">http://blog.smr.co.in/category/vim/</a></li>
+
+ <li><a class="reference external" href=
+ "http://vimdoc.sourceforge.net/">http://vimdoc.sourceforge.net/</a></li>
+ </ul>
</div>
<div class="section" id="vnc">
<h2><a class="toc-backref" href=
- "#id13">1.5 VNC</a></h2>
+ "#id15">1.5 VNC</a></h2>
<p>I Virtual Network Computing (o VNC) sono software di
- controllo remoto e servono per amministrare il proprio
- computer a distanza o visualizzare la sessione di lavoro di
- un altro computer sul proprio a scopo didattico.</p>
+ controllo remoto e servono per amministrare un computer a
+ distanzai. Nel nostro caso la VNC sara' utilizzata per
+ visualizzare la sessione di lavoro di un altro computer sul
+ proprio a scopo didattico.</p>
- <p>Scaricare il pacchetto <tt class=
- "docutils literal"><span class=
- "pre">xtightvncviewer</span></tt> e lo script <tt class=
- "docutils literal"><span class="pre">guarda.sh</span></tt>
- in una posizione (collocazione nel <em>path</em> degli
- utenti, es <tt class="docutils literal"><span class=
- "pre">echo</span> <span class="pre">$PATH</span></tt> per
- visualizzare l'attuale path ) comoda per gli utenti ( in
- genere <tt class="docutils literal"><span class=
- "pre">/bin</span></tt> ), rendere eseguibile lo script.</p>
+ <p>Per collegarvi al server del docente usate lo script
+ <tt class="docutils literal"><span class=
+ "pre">guarda.sh</span></tt> che dovrebbe gia essere
+ disponibili sui sistemi preconfigurati, oppure potete
+ invocare direttamente il collegamento con:</p>
+ <pre class="literal-block">
+xtightvncviewer -viewonly 10.10.208.177:1
+</pre>
+
+ <p>Se il comando non fosse disponibile installate il
+ pacchetto <tt class="docutils literal"><span class=
+ "pre">xtightvncviewer</span></tt>. Potete anche scaricare
+ lo script <tt class="docutils literal"><span class=
+ "pre">guarda.sh</span></tt> e renderlo eseguibile, ed
+ eventualmente creare una voce nel menu di KDE per
+ richiamarlo.</p>
<p>Procedura:</p>
<pre class="literal-block">
su root
-cd /bin
-wget http://debian.piffa.net/guarda.sh
+cd /usr/local/bin
+wget http://bender/guarda.sh
chmod +x guarda.sh
exit
</pre>
+ <p>Per eseguire lo script digitare semplicemente <tt class=
+ "docutils literal"><span class="pre">guarda.sh</span></tt>,
+ oppure creare un link / collegamento sul Desktop allo
+ script <tt class="docutils literal"><span class=
+ "pre">/usr/local/bin/guarda.sh</span></tt>.</p>
+
+ <p>Le impostazioni del server VNC sono:</p>
+
+ <table border="1" class="docutils">
+ <colgroup>
+ <col width="55%">
+ <col width="45%">
+ </colgroup>
+
+ <thead valign="bottom">
+ <tr>
+ <th class="head">Parametro</th>
+
+ <th class="head">Valore</th>
+ </tr>
+ </thead>
+
+ <tbody valign="top">
+ <tr>
+ <td>IP</td>
+
+ <td>10.10.208.177:1</td>
+ </tr>
+
+ <tr>
+ <td>Server grafico</td>
+
+ <td>:1</td>
+ </tr>
+
+ <tr>
+ <td>password</td>
+
+ <td>password</td>
+ </tr>
+ </tbody>
+ </table>
+
<p>Si noti che non e' possibile lanciare un applicativo sul
server grafico di un utente da una shell in cui si sta
lavorando come altro utente, anche se root. E' quindi
<div class="section" id="lista-dei-pacchetti-di-base">
<h2><a class="toc-backref" href=
- "#id14">1.6 Lista dei pacchetti di
+ "#id16">1.6 Lista dei pacchetti di
base</a></h2>
<p>I pacchetti installati generalmente <a class=
pacchetto <tt class="docutils literal"><span class=
"pre">kde</span></tt>. Esiste un equivalente
<tt class="docutils literal"><span class=
- "pre">gnome-core</span> <span class=
- "pre">gnome</span></tt> per chi preferisce gnome, nel
- caso si potrebbe installare il log-in manager
- <tt class="docutils literal"><span class=
- "pre">gdm</span></tt> al posto di <tt class=
- "docutils literal"><span class=
- "pre">kdm</span></tt>.</td>
+ "pre">gnome-core</span></tt> per chi preferisce
+ Gnome, nel caso si potrebbe installare il log-in
+ manager <cite>gdm</cite> al posto di
+ <cite>kdm</cite>.</td>
</tr>
</tbody>
</table>
<div class="section" id="apt-configurazione">
<h2><a class="toc-backref" href=
- "#id15">1.7 Apt configurazione</a></h2>
+ "#id17">1.7 Apt configurazione</a></h2>
<p>Vediamo i due file principali di apt:</p>
<div class="section" id="sources-list">
<h3><a class="toc-backref" href=
- "#id16">1.7.1 sources.list</a></h3>
+ "#id18">1.7.1 sources.list</a></h3>
<p>Questo file contiene i sorgenti da cui <em>apt</em>
preleva i pacchetti da installare tramite <em>dpkg</em>,
# esempio di accesso a un CDROM:
# cdrom:[Debian GNU/Linux 5.0.1 _Lenny_ - Official i386 kde-CD Binary-1 20090$
-# Archivio principale debian via http su piffa.net,
-# non funziona al di fuori dell'aula dei corsi
-deb http://debian.piffa.net/debian/ lenny main
+# ftp.it.debian.org viene rediretto su un mirror interno
+# quando vi trovate nella rete interna piffa.net
+deb http://ftp.it.debian.org/debian/ lenny main
# Sono disponibili anche i rami non-free contrib
-# deb http://debian.piffa.net/debian/ lenny non-free contrib
+# deb http://ftp.it.debian.org/debian/ lenny non-free contrib
# Sono disponibili anche le release unstable e testing
-# deb http://debian.piffa.net/debian/ testing main non-free contrib
-# deb http://debian.piffa.net/debian/ sid main non-free contrib
+# deb http://ftp.it.debian.org/debian/ testing main non-free contrib
+# deb http://ftp.it.debian.org/debian/ sid main non-free contrib
+
+# Sorgenti dei pacchetti:
+# deb-src http://ftp.bononia.it/debian/ lenny main
# Mirror da kernel.org europa da usare a casa:
deb http://mirrors.eu.kernel.org/debian/ lenny main
# Security dal sito principale
deb http://security.debian.org/ lenny/updates main
-deb-src http://security.debian.org/ lenny/updates main
+# deb-src http://security.debian.org/ lenny/updates main
-# Debian volatile per le cose soggette a cambiamenti non legati
-# a dinamiche di sicurezza
+# Debian volatile per i pacchetti soggetti a frequanti cambiamenti
+# non legati a dinamiche di sicurezza
deb http://volatile.debian.org/debian-volatile Lenny/volatile main
-deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
+# deb-src http://volatile.debian.org/debian-volatile Lenny/volatile main
# Esempio di accesso a un file system locale contenente i pacchetti:
# Potete scaricarei in aula con debmirror da debian.piffa.net
<div class="section" id="etc-apt-apt-conf">
<h3><a class="toc-backref" href=
- "#id17">1.7.2 /etc/apt/apt.conf</a></h3>
+ "#id19">1.7.2 /etc/apt/apt.conf</a></h3>
<p>Questo file contiene le opzioni di apt, come ad
esempio il proxy:</p>
<pre class="literal-block">
-Acquire::http::Proxy "http://10.10.208.254:3128";
+Acquire::http::Proxy "http://10.10.208.248:3128";
</pre>
<p>Si tenga conto che se si imposta un proxy per apt sul
proprio portatile e tornati a casa propria si vuole
- scaricare nuovi pacchetti si dovra' disabilitare il
- proxy.</p>
+ scaricare nuovi pacchetti si dovra' disabilitare il proxy
+ commentando la riga con ";" (''punto-e-virgola''). Su un
+ portatile vi conviene tracciare il mirror <tt class=
+ "docutils literal"><span class=
+ "pre">ftp.it.debian.org</span></tt> senza impostare il
+ proxy: in aula verra' rediretto al mirror locale e a casa
+ vi appoggerete al mirror ufficiale.</p>
+
+ <p>E' consigliabile impostare il proxy per apt anche in
+ presenza di un proxy-http <em>trasparente</em>.</p>
</div>
</div>
</div>
<div class="section" id="squid">
<h1><a class="toc-backref" href=
- "#id18">2 Squid</a></h1>
-
- <p>Squid e' un proxy cache http (ma anche FTP e https)
- robusto e strutturato, puo' essere usato sia in reti
- relativamente piccole grazie alla semplicita' di
- configurazione che in scenari piu' complessi grazie alla
- possibilita' di gestirne in modo granulare le risorse. Si
- partira' dalle configurazioni piu' semplici per la semplice
- <em>condivisione della navigazione</em> internet, per poi
- poter configurare la gestione degli accessi, il filtraggio
- dei contenuti (Squid e' una applicazione che si muove nel 4'
- livello del modello TCP/IP a differenza di un
- <em>ipfilter</em> limitato al 2') nel l bilanciamento del
- carico tra piu' hosts.</p>
-
- <dl class="docutils">
- <dt>Inoltre Squid svolge la funzione di
- <em>anonymizer</em>:</dt>
-
- <dd>nasconde i client http alla rete internet: risulta solo
- il server proxy nei log dei server web frequentati dagli
- utenti di Squid.</dd>
- </dl>
-
- <p>Cosa a volte sottovalutata, Squid permette la navigazione
- web a una rete basata su <em>indirizzi IP privati</em> (es
- una 192.168.0.0/24). E se la rete privata deve <em>solo
- navigare</em> in internet, non serve un <em>NAT</em> od
- altro, basta il solo Squid. Per altro non servira' neanche un
- servizio DNS dato che <em>sara' il solo Squid a risolvere i
- nomi di dominio</em> per i suoi client http.</p>
-
- <p>Squid ascolta di default sulla porta 3128, per impostare
- <em>apt</em> per utilizzarlo si aggiunga ad <tt class=
- "docutils literal"><span class=
+ "#id20">2 Squid</a></h1>
+
+ <p>Squid e' un proxy cache http (ma puo' anche gestire i
+ protocolli FTP e https) robusto e strutturato, grazie alla
+ sua flessibilita' puo' essere utilizzato sia in piccole reti
+ locali che in scenari piu' complessi. E' molto semplice
+ configurarlo per la semplice <em>condivisione della
+ navigazione internet</em> all'interno di una rete locale, per
+ poi poter sucessivamente implementare la autenticazione degli
+ utenti, il filtraggio dei contenuti (Squid e' una
+ applicazione che si muove nel 4' livello del modello TCP/IP a
+ differenza di un <em>ipfilter</em> limitato al 2'), il
+ bilanciamento del carico tra piu' server proxy.</p>
+
+ <p>Se il server Squid e' in grado di accedere a internet
+ puor' permette la navigazione web a una rete basata su
+ indirizzi IP privati (es una 192.168.0.0/24). E se la rete
+ privata deve solo navigare in internet, non serve introdurre
+ nella rete un NAT (si veda la sezione sui firewall) per
+ condividere la connessione: basta il solo Squid. Per altro
+ non servira' neanche un servizio DNS accessibile dai clients
+ dato che sara' il solo Squid a risolvere i nomi di dominio
+ per i suoi client http.</p>
+
+ <p>Inoltre Squid svolge la funzione di <em>anonymizer</em>:
+ nasconde i client http alla rete internet: e' solo il server
+ proxy ad accedere ai server web frequentati dai client:
+ questi non sono percepiti ed esposti all'esterno della rete
+ locale ma si relazionano solo con Squid. Dal punto di vista
+ della sicurezza della rete locale questo e' preferibile ad un
+ approccio alla navigazione basato su NAT.</p>
+
+ <p>Squid ascolta di default sulla porta <tt class=
+ "docutils literal"><span class="pre">3128</span></tt>, per
+ quanto in genere la porta preferita per i servizi di caching
+ http sia la <tt class="docutils literal"><span class=
+ "pre">8080</span></tt>. Per utilizzarlo subito anche per apt
+ si aggiunga ad <tt class="docutils literal"><span class=
"pre">/etc/apt/apt.conf</span></tt></p>
<pre class="literal-block">
Acquire::http::Proxy "10.10.208.254:3128";
</pre>
- <p>Per installare Squid si usino i pacchetti:</p>
+ <p>Per installare Squid si usi il pacchetto:</p>
<pre class="literal-block">
squid3
</pre>
<div class="section" id="configurazione-squid-conf">
<h2><a class="toc-backref" href=
- "#id19">2.1 Configurazione:
+ "#id21">2.1 Configurazione:
squid.conf</a></h2>
- <p>Segue un estratto delle direttive principali viste in
+ <p>egue un estratto delle direttive principali viste in
aula presenti nel file di configurazione <tt class=
"docutils literal"><span class=
"pre">/etc/squid3/squid.conf</span></tt> .</p>
<div class="section" id="cache-dir">
<h3><a class="toc-backref" href=
- "#id20">2.1.1 Cache_dir</a></h3>
-
- <p>Cache dir serve per impostare dimensione e percorso
- della cache creata sul supporto di storaggio. Essendo la
- dimensione di default della cache pari a <tt class=
- "docutils literal"><span class="pre">~100</span>
- <span class="pre">MB</span></tt> e' altamente
- consigliabili aumentare questo parametro se si vuole
- poter utilizzare la funzione di <em>cache</em> http del
- software.</p>
-
- <p>La dimensione ovviamente dipendera' dallo spazio
- disponibile, dimensioni tipiche e massime degli oggetti
- che si vuole tenere in cache (un solo file <em>.iso e'
- circa ``700 MB``, il pacchetto *Openoffice.org</em> circa
- <tt class="docutils literal"><span class="pre">150</span>
- <span class="pre">MB</span></tt>, un pacchetto debian
- circa <tt class="docutils literal"><span class=
- "pre">20</span> <span class="pre">MB</span></tt>), numero
- dei client.</p>
+ "#id22">2.1.1 Cache_dir</a></h3>
+
+ <p>Cache dir serve per impostare caratteristiche
+ fondamentali della cache creata sul supporto di storaggio
+ quali dimensione e percorso nel file-system. Essendo la
+ dimensione di default della cache pari a ~``100 MB`` e'
+ altamente consigliabili aumentare questo parametro se si
+ vuole godere dei vantaggi della funzione di cache per
+ piu' clients.</p>
+
+ <p>Per stabilire il dimensionamento della cache si tenga
+ conto dello spazio disponibile, dimensioni tipiche e
+ massime degli oggetti che si vuole tenere in cache (un
+ solo file .iso occupa circa <tt class=
+ "docutils literal"><span class="pre">700</span>
+ <span class="pre">MB</span></tt>, il pacchetto
+ Openoffice.org circa 150 MB, un pacchetto Debian circa 20
+ MB), e in fine del numero dei client.</p>
<p>Si presti poi attenzione alla natura dei dati che
saranno salvati nella cache: sono tutti dati facilmente
- sostituibili (gli originali sono <em>on-line</em>) la cui
- perdita non arreca danni permanenti. Questo rende la
- cache di Squid un possibile candidato ad un <em>RAID
- stirpe</em> (livello 0), con vantaggi sia per le
- prestazioni (e la velocita' di navigazione e' uno dei
- motivi per cui si installa Squid) che per l'utilizzo
- estensivo dello spazio di storaggio. Questo fino al
- momento in cui per voi non sia piu' importante
- <em>garantire la disponibilita' del servizio</em> (se il
- RAID stripe dovesse rompersi gli utenti non potrebbero
- piu' navigare, cosa che per natura dello stripe e'
- maggiormente probabile rispetto ad un <em>mirror</em> o a
- un filesytem <em>normale</em>) con un RAID mirror o
- 5.</p>
-
- <p>Altra considerazione: i dati del proxy vengono slavati
- sul filesytem del server dietro richiesta di utenti
- esterni talvolta sconosciuti. Come per i servizi di file
- sharing o per la posta elettronica non c'e' motivo che il
- filesystem su cui sono ospitati questi dati abbia i
- privilegi di eseguibilita' o suid (in genere si puo'
- anche usare <em>noatime</em> per renderlo piu' veloce,
- che si usi o meno il journal dipende dalle preferenze:
- affidabilita' oppure prestazioni):</p>
-
- <p>/etc/fstab</p>
- <pre class="literal-block">
+ sostituibili (gli originali sono on-line) la cui perdita
+ causerebbe solo la necessita' di ripopolare la cache.
+ Questo rende la cache di Squid un possibile candidato ad
+ un RAID stirpe (livello 0) a ad un file system che
+ prediliga le performance a scapito della consistenza, con
+ vantaggi sia per le prestazioni (e la velocita' di
+ navigazione e' uno dei motivi per cui si installa Squid)
+ che per l'utilizzo estensivo dello spazio di
+ storaggio.</p>
+
+ <p>Questo fino al momento in cui per voi non sia piu'
+ importante garantire la disponibilita' del servizio: se
+ il RAID stripe dovesse rompersi gli utenti non potrebbero
+ piu' navigare, cosa che per natura dello stripe e' piu'
+ probabile rispetto ad un filesytem normale.</p>
+
+ <div class="section" id="opzioni-del-file-system">
+ <h4><a class="toc-backref" href=
+ "#id23">2.1.1.1 Opzioni del file
+ system</a></h4>
+
+ <p>I dati che compongono la cache vengono salvati sul
+ filesytem del server dietro richiesta dei client http
+ degli utenti della rete locale. Come per i servizi di
+ file sharing o per la posta elettronica non c'e' motivo
+ che il filesystem su cui sono ospitati questi dati
+ abbiano i privilegi di eseguibilita' o suid (in genere
+ si possono anche usare opzioni come noatime per rendere
+ i file-systems piu' veloci, scegliere di utilizzare un
+ journal dipende dalla dimesione della cache dalle
+ preferenze: affidabilita' oppure prestazioni):</p>
+
+ <p>/etc/fstab</p>
+ <pre class="literal-block">
...
# Filesystem per Squid http cache
-/dev/md3/ /var/spool/squid/ ext3,noexec,nosuid,noatime 0 3
+/dev/md3/ /var/spool/squid/ ext2,noexec,nosuid,noatime 0 3
</pre>
+ </div>
+ </div>
- <p>Ora possiamo impostare la cache direttamente nel file
- <tt class="docutils literal"><span class=
+ <div class="section" id="configurazioni-di-cache-dir">
+ <h3><a class="toc-backref" href=
+ "#id24">2.1.2 Configurazioni di
+ Cache_dir</a></h3>
+
+ <p>Ora possiamo impostare la cache nel file di
+ configurazione <tt class="docutils literal"><span class=
"pre">/etc/squid3/squid.conf</span></tt>:</p>
<pre class="literal-block">
#TAG: cache_dir (riga 1628)
#Default:
# cache_dir ufs /var/spool/squid3 100 16 256
cache_dir aufs /var/spool/squid3 300 24 256
+# | | | | secondo livello di directory
+# | | | directory primo livello
+# | | dimensione in MB
+# | path della cache
# algoritmo
-# path della cache
-# dimensione in MB
-# directory primo livello
-# secondo livello di directory
</pre>
- <p>Se si modifica la struttura del filesytem della cache
- di Squid, ad esempio variando il numero delle directory,
- puo' essere opportuno rigenerare la struttura della cache
- di squid (per lo meno se si <em>aumenta</em> il numero
- delle directory di primo o secondo livello). Tipicamente
- e' consigliabile cancellare (se si ha <em>ridotto</em> il
- numero delle directory) la vecchia cache e poi generare
- una nuova struttura. Se si vuole <em>star nel sicuro</em>
- ogni volta che si modifica l'impostazione delle directory
- <em>si svuoti la vecchia cache e se ne generi una
- nuova</em></p>
+ <p>Se si modifica la struttura della cache di Squid, ad
+ esempio variando il numero delle directory, puo' essere
+ opportuno cancellare e rigenerare la cache. Tipicamente
+ e' consigliabile cancellare (se si ha ridotto il numero
+ delle directory) la vecchia cache e poi generare una
+ nuova struttura. Se si vuole star nel sicuro ogni volta
+ che si modifica l'impostazione delle directory si svuoti
+ la vecchia cache e se ne generi una nuova:</p>
<pre class="literal-block">
# /etc/init.d/squid3 stop
# rm -r /var/spool/squid3/??
<div class="section" id="tag-maximum-object-size">
<h3><a class="toc-backref" href=
- "#id21">2.1.2 TAG:
+ "#id25">2.1.3 TAG:
maximum_object_size</a></h3>
<p>Questa direttiva imposta la dimensione massima degli
<div class="section" id="tag-cache-mem">
<h3><a class="toc-backref" href=
- "#id22">2.1.3 TAG: cache_mem</a></h3>
-
- <p><em>Cache_mem</em> imposta quanta memoria RAM venga
- utilizzata per la cache di Squid. Questo dipendera' dalla
- RAM disponibile sul sistema, e da quanta di questa volete
- mettere a disposizione di Squid (altri servizi importanti
- girano sulla stessa macchina?). Questo parametro
- influisce sulle prestazioni e sul degrado dei supporti di
- storaggio (sopratutto se magnetici).</p>
+ "#id26">2.1.4 TAG: cache_mem</a></h3>
+
+ <p><strong>Cache_mem</strong> imposta quanta memoria RAM
+ venga dedicata alla cache di Squid. Si consideri non solo
+ quanta RAM sia disponibile sul sistema, ma anche quale
+ sia l'utilizzo tipico di questo: altri servizi
+ fondamentali necessitano di molta memoria?</p>
+
+ <p>Questo parametro per altro influisce sulle prestazioni
+ e sul degrado dei supporti di storaggio (sopratutto se
+ magnetici). Ad esempio se si stanno utilizzando dischi
+ rigidi esterni USB per la cache sara' preferibile cercare
+ di usare quanta piu' RAM possibile per evitare il
+ sovraccarico computazionale dovuto alla gestione dello
+ stack USB, fenomeno evidente sui sistemi embedded come
+ NAS.</p>
<p>Se si stesse pensando di usare dell'hardware
<em>embedded</em> a basse prestazioni / consumo per
realizzare un server gateway / NAT / Squid si tenga
- presente che Squid e' relativamente esoso di risorse:
- avra' bisogno di una macchina con <tt class=
+ presente che Squid e' relativamente esoso di risorse
+ rispetto agli altri servizi: avra' bisogno di <tt class=
"docutils literal"><span class="pre">~25MB</span></tt>
(MegaByte) di RAM e <em>~150MHZ di CPU ARM</em> per
servire decorosamente una decina di client http su una
<div class="section" id="tag-minimum-object-size">
<h3><a class="toc-backref" href=
- "#id23">2.1.4 TAG:
+ "#id27">2.1.5 TAG:
minimum_object_size</a></h3>
<p>Questo parametro imposta la dimensione minima degli
oggetti salvati nella cache. Settato a <tt class=
"docutils literal"><span class="pre">0</span></tt> o a
valori molto piccoli puo' influire negativamente sulla
- deframmentazione del filesytem e consumare un numero
+ frammentazione del filesytem e consumare un numero
elevato di <em>inode</em> (cosa non piu' importante con
ext4 o altri filesytem).</p>
+ <p>In scenari con connessioni molto veloci ( >~10Mb),
+ pochi client (una decina) e server poco performanti nella
+ velocita' di accesso ai filesystem ( ~20MB/s, per quanto
+ il limte sia piuttosto il <em>seek-time</em> ) tenere in
+ cache i file piu' piccoli finisce per aumentare la
+ latenza della navigazione.</p>
+
<p>TAG: minimum_object_size:</p>
<pre class="literal-block">
# TAG: minimum_object_size (bytes)
<div class="section" id=
"negoziazione-degli-accesi-al-servizio">
<h2><a class="toc-backref" href=
- "#id24">2.2 Negoziazione degli accesi al
+ "#id28">2.2 Negoziazione degli accesi al
servizio</a></h2>
- <p>Squid e' uno di quei servizi soggetto a problemi di tipo
- <em>open relay</em> , si deve quindi limitare la rete che
- puo' accedere al servizio.</p>
+ <p>Squid fa parte di quei servizi suscettibili di diventare
+ un open relay, sara' quindi necessario prestare attenzione
+ a delimitare la rete che puo' accedere al servizio.</p>
<dl class="docutils">
<dt>Open Relay:</dt>
indiscriminatamente. La cosa puo' andare bene per servizi
come i server web, che aspirano per loro natura al
maggior numero possibile di utenti, ma non a servizi come
- i proxy http oppure ai server di posta elettronica (che
- permetterebbero l'invio di SPAM).</dd>
+ i proxy http oppure ai server di posta elettronica
+ (adibiti ai soli utenti della rete locale).</dd>
</dl>
<p>Generalmente non volete che il vostro proxy http venga
- usato da persone sconosciute le quali sostanzialmente
- <em>navigherebbero sotto l'identita' del vostro proxy</em>
- (probabilmente per visionare materiali che non vorrebbero
- fossero ricondotti direttamente a loro, per motivi che sta
- a voi prendere in considerazione) consumando traffico e
- banda della vostra connessione a internet. Tenere Squid in
+ usato da persone sconosciute ed esterne alla vostra rete,
+ le quali sostanzialmente <em>navigherebbero sotto
+ l'identita' del vostro proxy</em> (probabilmente per
+ visionare materiali che non vorrebbero fossero ricondotti
+ direttamente a loro) generando traffico e consumando banda
+ della vostra connessione a internet. Tenere Squid in
modalita' <em>Open relay</em> e' al giorno d'oggi un buon
modo per essere inseriti in una <em>black list</em>.</p>
href="http://www.visolve.com/squid/squid24s1/access_controls.php">
http://www.visolve.com/squid/squid24s1/access_controls.php</a></p>
+ <p>E' poi sempre possibile tenere il proxy in ascolto su un
+ solo indirizzo IP, nel caso si disponga di piu' device di
+ rete, oppure settare un IP firewall per limitare il
+ traffico in base al protocollo IP.</p>
+
<div class="section" id="acl-e-http-access">
<h3><a class="toc-backref" href=
- "#id25">2.2.1 ACL e http access</a></h3>
+ "#id29">2.2.1 ACL e http access</a></h3>
<p>Si proceda a creare una <tt class=
"docutils literal"><span class="pre">ACL</span></tt> di
<div class="section" id="testare-squid">
<h2><a class="toc-backref" href=
- "#id26">2.3 Testare Squid</a></h2>
+ "#id30">2.3 Testare Squid</a></h2>
- <p>Configurato squid e' fondamentale testarne il corretto
- funzionamento per assicurarsi di non aver creato un
- <em>open-relay</em>. Per fare dei test significativi serve
- utilizzare degli host remoti: ci si connetta via ssh a
- questi per poi utilizzare <tt class=
- "docutils literal"><span class="pre">wget</span></tt> da
- riga di comando.</p>
+ <p>Dopo aver configurato squid e' fondamentale testarne il
+ corretto funzionamento per assicurarsi di non aver creato
+ un <em>open-relay</em>. Per fare dei test significativi
+ serve utilizzare degli host remoti: ci si connetta via ssh
+ a questi e si usi <tt class="docutils literal"><span class=
+ "pre">wget</span></tt> da riga di comando.</p>
<div class="section" id="client-wgetrc">
<h3><a class="toc-backref" href=
- "#id27">2.3.1 Client: ~/.wgetrc</a></h3>
+ "#id31">2.3.1 Client: ~/.wgetrc</a></h3>
<p>Nel file <tt class="docutils literal"><span class=
"pre">.wgetrc</span></tt> (si noti il punto iniziale: e'
<div class="section" id="server-access-log">
<h3><a class="toc-backref" href=
- "#id28">2.3.2 Server:
+ "#id32">2.3.2 Server:
access.log</a></h3>
<p>Si puo' controllare il corretto funzionamento del
</div>
</div>
+ <div class="section" id="tiny-proxy">
+ <h1><a class="toc-backref" href=
+ "#id33">3 Tiny proxy</a></h1>
+
+ <p>Se avete l'esigenza di un proxy server per la condivisione
+ della connessione ad internet ma non avete la necessita' o le
+ risorse di un <em>caching</em> proxy come Squid potete
+ considerare <strong>tinyproxy</strong>, questo e' molto piu'
+ leggero (utilizza circa ~2MB di RAM e ovviamente non deve
+ accedere continuamente ad un file system per lo storaggio
+ della cache) e risulta piu' semplice nella
+ configurazione.</p>
+
+ <p>TinyProxy puo' essere utilizzato come sostituto di
+ emergenza in una rete in cui Squid e' momentaneamente non
+ disponibile.</p>
+
+ <p>File di configurazione: <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/tinyproxy/tinyproxy.conf</span></tt></p>
+ <pre class="literal-block">
+# Porta su cui ascoltare
+Port 3128
+# IP su cui ascoltare
+Listen 10.10.208.160
+# Negoziazione accessi
+Allow 10.10.208.0/24
+</pre>
+ </div>
+
<div class="section" id="apache">
<h1><a class="toc-backref" href=
- "#id29">3 Apache</a></h1>
+ "#id34">4 Apache</a></h1>
- <p>Apache HTTP Server, o piu' comunemente Apache, e' il nome
- dato alla piattaforma server Web modulare piu' diffusa (ma
- anche al gruppo di lavoro open source che ha creato,
- sviluppato e aggiornato il software server), in grado di
- operare da sistemi operativi UNIX-Linux e Microsoft.</p>
+ <p>Apache HTTP Server, o piu' comunemente Apache (<em>a
+ patchy NCSA web server</em> ), e' il server web modulare piu'
+ diffuso e strutturato disponibile con licenza libera, in
+ grado di operare da sistemi operativi UNIX/Linux e
+ Microsoft.</p>
<p>Un server web e' un processo, e per estensione il computer
su cui e' in esecuzione, che si occupa di fornire, su
<div class="section" id="pacchetti-da-installare">
<h2><a class="toc-backref" href=
- "#id30">3.1 Pacchetti da
+ "#id35">4.1 Pacchetti da
installare::</a></h2>
<blockquote>
<p>Con la release 2.0 di Apache viene automaticamente resa
disponibile anche la versione SSL (Secure Socket Layer,
- connessioni criptate ) del web server.</p>
+ connessioni criptate ) del web server senza che ci sia la
+ necessita' di installare altri pacchetti.</p>
</div>
<div class="section" id="configurazione-di-apache">
<h2><a class="toc-backref" href=
- "#id31">3.2 Configurazione di
+ "#id36">4.2 Configurazione di
Apache</a></h2>
<p>I file di configurazione di apache si trovano nella
<div class="section" id="apache-conf">
<h2><a class="toc-backref" href=
- "#id32">3.3 apache.conf</a></h2>
+ "#id37">4.3 apache.conf</a></h2>
<p>File di configurazione del servizio Apache, contiene le
impostazioni generiche (ad esempio utilizzo della RAM e
<div class="section" id="installazione-di-php">
<h2><a class="toc-backref" href=
- "#id33">3.4 Installazione di PHP</a></h2>
+ "#id38">4.4 Installazione di PHP</a></h2>
<p>Pacchetti da installare: <tt class=
"docutils literal"><span class="pre">php5</span>
<div class="section" id="test-del-modulo-php">
<h3><a class="toc-backref" href=
- "#id34">3.4.1 Test del modulo
+ "#id39">4.4.1 Test del modulo
php</a></h3>
<p>Creare nella cartella <tt class=
</div>
<div class="section" id=
- "installazione-del-supporto-per-mysql">
+ "installazione-del-supporto-per-mysql-a-php">
<h3><a class="toc-backref" href=
- "#id35">3.4.2 Installazione del supporto
- per Mysql</a></h3>
+ "#id40">4.4.2 Installazione del supporto
+ per Mysql a PHP</a></h3>
<p>Installare i pacchetti:</p>
<pre class="literal-block">
<div class="section" id="phpmyadmin">
<h3><a class="toc-backref" href=
- "#id36">3.4.3 phpmyadmin</a></h3>
+ "#id41">4.4.3 phpmyadmin</a></h3>
<p>L'interfaccia web Phpmyadmin non richiede
necessariamente la presenza di un database Mysql locale,
</div>
<div class="section" id=
- "installazione-del-supporto-per-postgresql">
+ "installazione-del-supporto-per-postgresql-a-php">
<h3><a class="toc-backref" href=
- "#id37">3.4.4 Installazione del supporto
- per Postgresql</a></h3>
+ "#id42">4.4.4 Installazione del supporto
+ per Postgresql a PHP</a></h3>
<p>Installare i pacchetti:</p>
<pre class="literal-block">
<div class="section" id="phppgadmin">
<h3><a class="toc-backref" href=
- "#id38">3.4.5 phppgadmin</a></h3>
+ "#id43">4.4.5 phppgadmin</a></h3>
<p>L'interfaccia web Phppgadmin per il database server
PostgreSQL non richiede necessariamente la presenza di un
<div class="section" id="virtual-hosts">
<h2><a class="toc-backref" href=
- "#id39">3.5 Virtual hosts</a></h2>
+ "#id44">4.5 Virtual hosts</a></h2>
<blockquote>
<ul class="simple">
<div class="section" id="gestione-dns">
<h3><a class="toc-backref" href=
- "#id40">3.5.1 Gestione DNS</a></h3>
+ "#id45">4.5.1 Gestione DNS</a></h3>
<p>Prima di tutto per poter impostare i virtual hosts
dovete avere un server DNS che risolva i vostri nomi di
<blockquote>
<dl class="docutils">
- <dt><em>Bind</em> (DNS server)</dt>
+ <dt><tt class="docutils literal"><span class=
+ "pre">/etc/hosts</span></tt></dt>
- <dd>Impostare i campi A nelle proprie zone gestite
- dal server DNS Bind. Ad es: <tt class=
+ <dd>Per prove sul proprio sistema potete impostare i
+ nomi dei vostri virtual server nel file /etc/hosts
+ .</dd>
+
+ <dt><em>Dnsmasq</em> (DNS server)</dt>
+
+ <dd>Utilizzabile al livello della rete locale per
+ fare dei test, utilizzando direttive come: <tt class=
"docutils literal"><span class=
- "pre">papo</span>
- <span class=
- "pre">A</span>
- <span class="pre">212.22.136.248</span></tt></dd>
+ "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
<dt><em>Servizio DNS dinamico on line</em>.</dt>
pubblico (anche se dinamico) per la propria
connessione ad internet.</dd>
- <dt><em>Dnsmasq</em> (DNS server)</dt>
+ <dt><em>Bind</em> (DNS server)</dt>
- <dd>Utilizzabile al livello della rete locale per
- fare dei test, utilizzando direttive come: <tt class=
+ <dd>Impostare i campi A nelle proprie zone gestite
+ dal server DNS Bind. Ad es: <tt class=
"docutils literal"><span class=
- "pre">address=/davide.piffa.net/10.10.208.178</span></tt></dd>
-
- <dt><tt class="docutils literal"><span class=
- "pre">/etc/hosts</span></tt></dt>
-
- <dd>Per prove sul proprio sistema potete impostare i
- nomi dei vostri virtual server nel file /etc/hosts
- .</dd>
+ "pre">papo</span>
+ <span class=
+ "pre">A</span>
+ <span class="pre">212.22.136.248</span></tt></dd>
</dl>
</blockquote>
+ </div>
- <p>Query DNS con <tt class=
- "docutils literal"><span class="pre">dig</span></tt>:</p>
- <pre class="literal-block">
-# dig 177.piffa.net
+ <div class="section" id="eseguire-una-query-dns-con-dig">
+ <h3><a class="toc-backref" href=
+ "#id46">4.5.2 Eseguire una query DNS con
+ <tt class="docutils literal"><span class=
+ "pre">dig</span></tt>::</a></h3>
-; <<>> DiG 9.5.1-P1 <<>> 177.piffa.net
-;; global options: printcmd
-;; Got answer:
-;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 38036
-;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
+ <p>Per testare la corretta risoluzione dei vostri nomi di
+ dominio sui relaivi indirizzi IP si usi dig (o altre
+ utlity, vedere la sezione relativa i DNS). Dig e'
+ contenuto nel pacchetto <tt class=
+ "docutils literal"><span class=
+ "pre">dnsutils</span></tt>.</p>
-;; QUESTION SECTION:
-;177.piffa.net. IN A
+ <blockquote>
+ <p># dig 177.piffa.net</p>
-;; ANSWER SECTION:
-177.piffa.net. 0 IN A 10.10.208.177
-</pre>
+ <p>; <<>> DiG 9.5.1-P1 <<>>
+ 177.piffa.net ;; global options: printcmd ;; Got
+ answer: ;; ->>HEADER<<- opcode: QUERY,
+ status: NOERROR, id: 38036 ;; flags: qr aa rd ra;
+ QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0</p>
+
+ <p>;; QUESTION SECTION: ;177.piffa.net. IN A</p>
+
+ <p>;; ANSWER SECTION: 177.piffa.net. 0 IN A
+ 10.10.208.177</p>
+
+ <p>;; SERVER: 10.10.208.248#53(10.10.28.248)</p>
+ </blockquote>
<p>La parte interessante e' l'<em>ANSWER SECTION</em>:
<tt class="docutils literal"><span class=
"pre">177.piffa.net</span></tt> (<tt class=
"docutils literal"><span class=
"pre">ServerName</span></tt>) .</p>
+
+ <p>Il server DNS utilizzato dal sistema e' evidenziato
+ dalla stringa: <tt class="docutils literal"><span class=
+ "pre">;;</span> <span class="pre">SERVER:</span>
+ <span class=
+ "pre">10.10.28.248#53(10.10.28.248)</span></tt> che
+ dovrebbe corrispondere a quanto impostato nel vostro
+ <tt class="docutils literal"><span class=
+ "pre">/etc/resolv.conf</span></tt>. Se il vostro browser
+ web utilizza un proxy http sara questo a risolvere i nomi
+ di dominio, tipicamente potete disabilitare l'uso del
+ proxy per determinati domini nella sezione di
+ configurazione del browser.</p>
</div>
- <div class="section" id="virtual-host">
+ <div class="section" id="id3">
<h3><a class="toc-backref" href=
- "#id41">3.5.2 Virtual host</a></h3>
+ "#id47">4.5.3 Virtual hosts</a></h3>
<p>Esempio di Virtual host:</p>
<pre class="literal-block">
<dd>
<p class="first last">Livello di importanza degli
- eventi loggati= warning <em>attenzione</em> .</p>
+ eventi loggati: warning <em>attenzione</em> .</p>
</dd>
</dl>
</li>
<div class="section" id="negoziazione-accessi">
<h2><a class="toc-backref" href=
- "#id42">3.6 Negoziazione accessi</a></h2>
+ "#id48">4.6 Negoziazione accessi</a></h2>
<p>Tipicamente quando si installa un server web il proprio
desiderio e' di dare accesso ai materiali disponibili al
<div class="section" id="limiti-su-base-ip">
<h3><a class="toc-backref" href=
- "#id43">3.6.1 Limiti su base IP</a></h3>
+ "#id49">4.6.1 Limiti su base IP</a></h3>
<p>La forma piu' semplice di restrizione degli accessi e'
su base degli indirizzi IP dei client: tipicamente i siti
Meno facile e' accedere ad una classe privata trovandosi
all'esterno di questa, ma ci sono comunque soluzioni piu'
eleganti.</p>
+
+ <ul class="simple">
+ <li>Mod_access: <a class="reference external" href=
+ "http://httpd.apache.org/docs/2.0/mod/mod_access.html">http://httpd.apache.org/docs/2.0/mod/mod_access.html</a></li>
+
+ <li>mod_authz_hosti(Available in Apache 2.1 and later):
+ <a class="reference external" href=
+ "http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html">
+ http://httpd.apache.org/docs/2.2/mod/mod_authz_host.html</a></li>
+ </ul>
</div>
</div>
<div class="section" id="user-authentication">
<h2><a class="toc-backref" href=
- "#id44">3.7 User Authentication</a></h2>
+ "#id50">4.7 User Authentication</a></h2>
<p>Si puo' negoziare gli accessi ad un area del sito
tramite autenticazione basata su <em>nome utente /
<div class="section" id="definire-la-cartella">
<h3><a class="toc-backref" href=
- "#id45">3.7.1 Definire la
+ "#id51">4.7.1 Definire la
cartella</a></h3>
<p>Decidere quale sara' il <em>path</em> della cartella
<div class="section" id=
"creazione-del-database-delle-passwords">
<h3><a class="toc-backref" href=
- "#id46">3.7.2 Creazione del database
+ "#id52">4.7.2 Creazione del database
delle passwords</a></h3>
<p>Un modo semplice per gestire una database di
"pre">-c</span></tt>.</p>
</div>
- <div class="section" id="id3">
+ <div class="section" id="id4">
<h3><a class="toc-backref" href=
- "#id47">3.7.3 Configurazione di
+ "#id53">4.7.3 Configurazione di
Apache</a></h3>
<p>Ora possiamo passare alla configurazione vera e
<div class="section" id="cavets">
<h2><a class="toc-backref" href=
- "#id48">3.8 Cavets</a></h2>
+ "#id54">4.8 Cavets</a></h2>
<p>Problemi di cache:</p>
<div class="section" id="domain-name-system">
<h1><a class="toc-backref" href=
- "#id49">4 Domain Name System</a></h1>
+ "#id55">5 Domain Name System</a></h1>
<p>Domain Name System (spesso indicato con DNS) e' un
servizio utilizzato per la risoluzione di nomi di host in
<div class="section" id="risoluzione-inversa">
<h2><a class="toc-backref" href=
- "#id50">4.1 Risoluzione Inversa</a></h2>
+ "#id56">5.1 Risoluzione Inversa</a></h2>
<p>Per la risoluzione inversa sono invece i provider di
connettivita' a gestire i DNS: se volete impostare il
<div class="section" id="nomi-di-dominio">
<h2><a class="toc-backref" href=
- "#id51">4.2 Nomi di dominio</a></h2>
+ "#id57">5.2 Nomi di dominio</a></h2>
<p>Un nome a dominio e' costituito da una serie di stringhe
separate da punti, ad esempio bender.piffa.net. I nomi di
<div class="section" id="tipologie-di-record">
<h2><a class="toc-backref" href=
- "#id52">4.3 Tipologie di record</a></h2>
+ "#id58">5.3 Tipologie di record</a></h2>
<p>Ad un nome DNS possono corrispondere diversi tipi di
informazioni. Per questo motivo, esistono diversi tipi di
<div class="section" id="utilizzo">
<h2><a class="toc-backref" href=
- "#id53">4.4 Utilizzo</a></h2>
+ "#id59">5.4 Utilizzo</a></h2>
<p>I computer vengono identificati in rete grazie agli
indirizzi <em>IP</em>, questi pero' non sono comodi per gli
<div class="section" id="risoluzione-dei-nomi-di-dominio">
<h2><a class="toc-backref" href=
- "#id54">4.5 Risoluzione dei nomi di
+ "#id60">5.5 Risoluzione dei nomi di
dominio</a></h2>
<p>Ci sono vari strumenti per interrogare i server DNS e
<div class="section" id="dig">
<h2><a class="toc-backref" href=
- "#id55">4.6 Dig</a></h2>
+ "#id61">5.6 Dig</a></h2>
<p>Vediamo alcune opzioni utili nell'utilizzo di <tt class=
"docutils literal"><span class="pre">dig</span></tt> per
<div class="section" id="resolv-conf">
<h2><a class="toc-backref" href=
- "#id56">4.7 resolv.conf</a></h2>
+ "#id62">5.7 resolv.conf</a></h2>
<p>Il file <tt class="docutils literal"><span class=
"pre">/etc/resolv.conf</span></tt> contiene le impostazioni
</blockquote>
<p>Predisponendo l'infrastruttura di rete della vostra LAN
- e' consigliabile impostare sempre un DNS cache sul vostro
- server locale per i vari client. In questo modo in caso di
- malfunzionamento del DNS o necessita' di intervenire /
- sostituire i DNS non sara' piu' necessario dover
- reimpostare ogni singolo client della LAN: bastera'
- modificare l'impostazione del server DNS cache, ad esempio
- per utilizzare un nuovo forwarder, o modificare al volo un
- record DNS. La modifica, anche detta
- <em>mascheramento</em>, di un record come il <em>server
- smtp</em> o un <em>MX</em> potrebbe tirarvi rapidamente
- fuori dai guai nel caso di un problema improvviso con la
- posta elettronica o qualunque altro servizio che possiate
- reindirizzare col DNS.</p>
-
- <p>Un server DHCP e un DNS cache come <tt class=
- "docutils literal"><span class="pre">Dnsmasq</span></tt>
- possono permettervi di risolvere al volo (o per lo meno
- reindirizzare) molte delle problematiche relative alla
- configurazione della rete della vostra LAN: dover
+ e' consigliabile impostare sempre almeno un DNS cache sul
+ vostro server locale per i vari client. In questo modo in
+ caso di malfunzionamento del DNS o necessita' di
+ intervenire / sostituire i DNS non sara' piu' necessario
+ dover reimpostare ogni singolo client della LAN: bastera'
+ intervenire sul server DNS cache, ad esempio per utilizzare
+ un nuovo forwarder, o modificare al volo un record DNS. La
+ modifica, anche detta <em>mascheramento</em>, di un record
+ come il <em>server smtp</em> o un <em>MX</em> potrebbe
+ tirarvi rapidamente fuori dai guai nel caso di un problema
+ improvviso con la posta elettronica o qualunque altro
+ servizio che possiate reindirizzare col DNS.</p>
+
+ <p>Utilizzare un server DHCP e una DNS cache come
+ <tt class="docutils literal"><span class=
+ "pre">Dnsmasq</span></tt> possono permettervi di risolvere
+ al volo molte delle problematiche relative alla
+ configurazione della vostra LAN: ad esempio dover
intervenire manualmente su decine di client per modificare
- le impostazioni di SMTP | gateway | SMTP | proxy.</p>
+ le impostazioni di SMTP | gateway | DNS | proxy.</p>
<p>Si veda anche la pagina man di resolv.conf.</p>
<div class="section" id="etc-hosts">
<h2><a class="toc-backref" href=
- "#id57">4.8 /etc/hosts</a></h2>
+ "#id63">5.8 /etc/hosts</a></h2>
<p>Tabella statica per l'associazione tra IP e nomi di
dominio:</p>
192.168.0.11 chrome chrome.mydomain.com
</blockquote>
- <p>Il contenuto e' un associazione tra un <em>IP</em> e
- stringhe di testo (anche piu' di una per IP) es: <tt class=
- "docutils literal"><span class="pre">mirror</span></tt> e
+ <p>Il contenuto del file e' un associazione tra un
+ <em>IP</em> e stringhe di testo (anche piu' di una per IP)
+ es: <tt class="docutils literal"><span class=
+ "pre">mirror</span></tt> o veri e propi nomi di dominio
<tt class="docutils literal"><span class=
- "pre">mirror.piffa.net</span></tt>.</p>
-
- <p>Il problema e' la gestione di questo file: quando gli
- host cambiano IP si devono aggiornare i records, e poi c'e'
- il problema di distribuire questo file tra i vari hosts
- della propria LAN. Un metodo semplice per distribuire
- questo file e' utilizzare <tt class=
+ "pre">mirror.piffa.net</span></tt>. Si puo inserire un nome
+ semplice come <em>casa</em> per riferirsi ad un host che si
+ ha necessita' di contattare spesso, oppure mappare un nome
+ di dominio completo su un indirizzo IP.</p>
+
+ <p>Il problema e' la gestione di questo file su molti
+ hosts: quando gli host cambiano IP si devono aggiornare
+ manualmente i records, operazione in se' non
+ particolarmente gravosa ma che andra' fatta per ogni client
+ della vostra LAN. Un metodo semplice per distribuire questo
+ file e' utilizzare <tt class=
"docutils literal"><span class="pre">Dnsmasq</span></tt>:
questo infatti legge e onora il file <tt class=
"docutils literal"><span class="pre">hosts</span></tt> che
- avete prodotto e lo <em>distribuisce</em> ai clients
- tramite le normali query DNS.</p>
-
- <p>Modificare (riconducendola a un IP interno, cosi'
- annullandola) la risoluzione di un nome di dominio e' un
+ avete prodotto e lo rende disponibile ai clients tramite le
+ query DNS.</p>
+
+ <p>Dnsmasq lavora come un server DNS, i vostri client lo
+ interrogheranno per tradurre nomi di host e domini in
+ indirizzi IP, risolvendo il problema della
+ <em>distribuzione</em> del file <tt class=
+ "docutils literal"><span class="pre">hosts</span></tt> tra
+ molteplici clients. Infatti il servizio DNS indica appunto
+ una <em>directory distribuita</em> per la risoluzione dei
+ nomi di dominio, risolvendo i problemi dell'aggiornamento e
+ diffusione dei continui cambiamenti di questa.</p>
+
+ <p>Modificare la risoluzione di un nome di dominio
+ esistente (ad esempio riconducendola a un IP interno) e' un
modo drastico e funzionale per <em>annullarlo</em>
- rendendolo indisponibile alla propria rete locale, ad
+ rendendolo non disponibile alla propria rete locale. Ad
esempio aggiungere al file <tt class=
"docutils literal"><span class=
"pre">/etc/hosts</span></tt>:</p>
</pre>
<p>Impedira' agli utenti della LAN di raggiungere
- <em>facebook</em>, ora reindirizzato a i``localhost``.</p>
+ <em>facebook</em>, ora reindirizzato a <tt class=
+ "docutils literal"><span class=
+ "pre">localhost</span></tt>.</p>
+
+ <p>Oppure si potrebbe ricondurre l'indirizzo IP di un
+ server HTTP pubblico usato per i downloads (ad esempio un
+ mirror della propia distribuzione come <tt class=
+ "docutils literal"><span class=
+ "pre">ftp.it.debian.org</span></tt>) a un equivalente
+ mirror creato all'interno della rete locale, riducendo il
+ traffico verso l'esterno e aumentando notevolmente la
+ velocita' di scaricamento.</p>
</div>
<div class="section" id="hostname">
<h2><a class="toc-backref" href=
- "#id58">4.9 Hostname</a></h2>
+ "#id64">5.9 Hostname</a></h2>
<p>Ogni computer ha un <em>proprio nome</em> visualizzabile
(e modificabile) con il comando <tt class=
- "docutils literal"><span class=
- "pre">hostname</span></tt>.</p>
-
- <p>Per modificare in modo permanente il nome del computer
- si modifichi il contenuto del file <tt class=
- "docutils literal"><span class=
+ "docutils literal"><span class="pre">hostname</span></tt>.
+ Quando utilizzate a una shell su un host in genere
+ l'hostname compare nel prompt della shell.</p>
+
+ <p>Per visualizzare il nome dell'host su cui si sta
+ operando si digiti semplicemnte <tt class=
+ "docutils literal"><span class="pre">hostname</span></tt>,
+ lo stesso comando con un oggetto modifica temporaneamente
+ il nome dell'host. Per modificare in modo permanente il
+ nome del computer si modifichi il contenuto del file
+ <tt class="docutils literal"><span class=
"pre">/etc/hostname</span></tt>.</p>
- <p>Tipicamente si vuole mantenere una correlazione tra il
- nome dell' host, o meglio la stringa con cui il server si
- qualifica all'esterno, e il <em>PTR</em> dell'IP. Nel caso
- di <em>servizi virtuali</em> ci sara' un <em>nome
- server</em> principale associato al <em>PTR</em> condiviso.
- Non e' automatico che un servizio, ad esempio un server di
- posta, si qualifichi leggendo il contenuto di questo file e
- magari aggiungendo come suffisso il dominio di cui fa parte
- l' host: a volte questo parametro puo' essere specificato
- nel file di configurazione del servizio:</p>
- <pre class="literal-block">
-* Squid: ``visible_hostname``
-
-* Postfix: ``myhostname``
-</pre>
-
<p>Si faccia attenzione a non aver un hostname puramente
numerico: ad es. <tt class="docutils literal"><span class=
"pre">161</span></tt>. E' opportuno che il nome sia
comunque un alfanumerico: <tt class=
"docutils literal"><span class="pre">host-161</span></tt> o
simile.</p>
+
+ <div class="section" id="fqdn">
+ <h3><a class="toc-backref" href=
+ "#id65">5.9.1 FQDN</a></h3>
+
+ <p>Per semplicita' gli host sono generalemente
+ raggiungibili dall'esterno mappando il loro IP su un nome
+ di dominio FQDN: fully qualified domain name, composto
+ generalmente da <em>hostname</em>.``domain-name``, ad es.
+ <em>bender</em>.``piffa.net``.</p>
+
+ <p>Alcuni servizi internet fanno affidamento sul PTR
+ dell'IP del server per cercare una conferma che il
+ <em>servizio</em> sia veramente chi afferma di essere (ad
+ esempio STMP).</p>
+
+ <p>Non e' automatico che un servizio, ad esempio un
+ server di posta, si qualifichi leggendo il contenuto del
+ file <tt class="docutils literal"><span class=
+ "pre">hostname</span></tt> aggiungendo come suffisso il
+ dominio della rete di cui fa parte l' host: a volte
+ questo parametro puo' essere specificato nel file di
+ configurazione del servizio:</p>
+ <pre class="literal-block">
+* Squid (HTTP proxy): ``visible_hostname``
+
+* Postfix (SMTP server): ``myhostname``
+</pre>
+
+ <p>I motivi sono diversi, senza entrare nel dettaglio dei
+ vari protocolli si pensi comunque che un host ha sempre
+ un solo nome, ma puo' avere un numero variabile di
+ <em>device di rete</em> sia fisici che virtuali con
+ relativi <em>indirizzi IP</em>, e piu' servizi in ascolto
+ sui vari IP.</p>
+ </div>
</div>
</div>
<div class="section" id="dnsmasq">
<h1><a class="toc-backref" href=
- "#id59">5 DNSmasq</a></h1>
+ "#id66">6 DNSmasq</a></h1>
<p>Dnsmasq puo' svolgere le funzioni di un DNS cache /
forwarder, server DHCP, e' caratterizzato dalla facilita' di
<div class="section" id="configurazione">
<h2><a class="toc-backref" href=
- "#id60">5.1 Configurazione</a></h2>
+ "#id67">6.1 Configurazione</a></h2>
<p>Vediamo alcune direttive di basi del file di
configurazione <tt class="docutils literal"><span class=
<div class="section" id="dhcp">
<h2><a class="toc-backref" href=
- "#id61">5.2 DHCP</a></h2>
+ "#id68">6.2 DHCP</a></h2>
<p>Per attivare il demone DHCP di Dnsmasq basta aggiungere
al file di configurazione il <em>range</em> degli IP che si
<div class="section" id="dns-cache">
<h2><a class="toc-backref" href=
- "#id62">5.3 DNS cache</a></h2>
+ "#id69">6.3 DNS cache</a></h2>
<p>Dnsmasq lavora di default come cache dns: inserire al
file <tt class="docutils literal"><span class=
<div class="section" id="bind-dns-autoritativo">
<h1><a class="toc-backref" href=
- "#id63">6 Bind : DNS Autoritativo</a></h1>
+ "#id70">7 Bind : DNS Autoritativo</a></h1>
<p>Le soluzioni viste possono bastare per la rete locale o
per fare delle prove, ma prima o poi verra' il momento in cui
bind9
</pre>
- <div class="section" id="id4">
+ <div class="section" id="id5">
<h2><a class="toc-backref" href=
- "#id64">6.1 DNS cache</a></h2>
+ "#id71">7.1 DNS cache</a></h2>
<p>Bind appena installato funzionera' come DNS cache: si
faccia un test con un <tt class=
<div class="section" id="ospitare-una-zona">
<h2><a class="toc-backref" href=
- "#id65">6.2 Ospitare una zona</a></h2>
+ "#id72">7.2 Ospitare una zona</a></h2>
<p>Se avete acquistato un nome di dominio e vi serve un
software DNS per gestirlo Bind e' la scelta piu' diffusa.
<div class="section" id="named-conf-local">
<h3><a class="toc-backref" href=
- "#id66">6.2.1 named.conf.local</a></h3>
+ "#id73">7.2.1 named.conf.local</a></h3>
<p>Prima di tutti impostiamo il server bind per gestire
la zona, per non fare confusione e' opportuno inserire le
<div class="section" id="configurazione-della-zona">
<h3><a class="toc-backref" href=
- "#id67">6.2.2 Configurazione della
+ "#id74">7.2.2 Configurazione della
zona</a></h3>
<p>Ora dovremo preparare il file contenente i record DNS
<div class="section" id="soa-start-of-authority-record">
<h4><a class="toc-backref" href=
- "#id68">6.2.2.1 SOA: Start of
+ "#id75">7.2.2.1 SOA: Start of
Authority Record</a></h4>
<p>Il record SOA puo' comparire solo una volta in una
<div class="section" id="altri-campi">
<h4><a class="toc-backref" href=
- "#id69">6.2.2.2 Altri campi:</a></h4>
+ "#id76">7.2.2.2 Altri campi:</a></h4>
<p>All'interno della zona possono essere utilizati vari
tipi di records (RR):</p>
<div class="section" id="dns-slave">
<h2><a class="toc-backref" href=
- "#id70">6.3 DNS slave</a></h2>
+ "#id77">7.3 DNS slave</a></h2>
<p>Data l'importanza del servizio DNS e' necessario avere
ridondanza per i server DNS che ospitano i vostri dati: in
<div class="section" id="aggiornamento-dinamico-nsupdate">
<h2><a class="toc-backref" href=
- "#id71">6.4 Aggiornamento dinamico:
+ "#id78">7.4 Aggiornamento dinamico:
nsupdate</a></h2>
<p>Dalla versione 8 di Bind e' dsponibile l'utility
<div class="section" id="configurazione-client-nsupdate">
<h3><a class="toc-backref" href=
- "#id72">6.4.1 Configurazione client
+ "#id79">7.4.1 Configurazione client
(nsupdate)</a></h3>
<p>Sul client, sul quale non deve essere necessariamente
<div class="section" id=
"configurazione-server-riconoscimento-chiave">
<h3><a class="toc-backref" href=
- "#id73">6.4.2 Configurazione server:
+ "#id80">7.4.2 Configurazione server:
riconoscimento chiave</a></h3>
<dl class="docutils">
<div class="section" id="server-gestione-dell-intera-zona">
<h3><a class="toc-backref" href=
- "#id74">6.4.3 Server: gestione
+ "#id81">7.4.3 Server: gestione
dell'intera zona</a></h3>
<p>Sul server modifichiamo il file di configurazione
si consiglia la lettura della relativa pagina man. Nella
prima riga viene invocato il comando <tt class=
"docutils literal"><span class="pre">nsupdate</span></tt>
- impostando col <em>flag</em> <tt class=
+ impostando col flag <tt class=
"docutils literal"><span class="pre">-k</span></tt> la
- chiave <em>privata</em> generata precedentemente, con
+ chiave privata generata precedentemente, con <tt class=
+ "docutils literal"><span class="pre">server</span></tt>
+ si imposta quale server NS autoritario della zona (che
+ abbiamo precedentemente configurato per ricevere gli
+ aggiornamenti) vogliamo contattare. Alla riga sucessiva
+ <tt class="docutils literal"><span class=
+ "pre">update</span></tt> viene aggiunto un record
<tt class="docutils literal"><span class=
- "pre">server</span></tt> si imposta quale server NS
- autoritario della zona (che abbiamo precedentemente
- configurato per ricevere gli aggiornamenti) vogliamo
- contattare. Alla riga sucessiva <tt class=
- "docutils literal"><span class="pre">update</span></tt>
- viene aggiunto un record <tt class=
- "docutils literal"><span class="pre">A</span></tt> per la
- il dominio <tt class="docutils literal"><span class=
+ "pre">A</span></tt> per la il dominio <tt class=
+ "docutils literal"><span class=
"pre">home.piffa.net</span></tt> indirizzato all'IP
<tt class="docutils literal"><span class=
"pre">192.168.0.2</span></tt>, poi <tt class=
finale <tt class="docutils literal"><span class=
"pre">send</span></tt> .</p>
- <p>Si noti che in questo modo <em>l'intera</em> zona
+ <p>Si noti che in questo modo <em>l'intera zona</em>
piffa.net e suscettibile di essere modificata dal client,
che potra' eliminare e inserire qualunque record. E'
possibile gestire in modo piu' granulare la zona, ad
esempio concedendo al client i privilegi per gestire solo
una parte della zona o i tipo di record da gestire.</p>
</div>
+
+ <div class="section" id=
+ "automatizzare-l-aggiornamento-dinamico">
+ <h3><a class="toc-backref" href=
+ "#id82">7.4.4 Automatizzare
+ l'aggiornamento dinamico</a></h3>
+
+ <p>Nsupdate risulta comodo per tenere aggiornati i record
+ DNS degli host connessi ad internet con indirizzi IP
+ dinamici (pubblici) assegnati dal provider. Il client
+ deve essere in grado di contattare autonomamente il
+ server DNS per comunicare un cambiamento del suo ip.
+ Vediamo innanzi tutto un primo script per nsupdate:</p>
+ <pre class="literal-block">
+#!/bin/bash
+# Diamo al demone ppp un po' di tempo per negoziare la connessione
+# prima di leggere l'IP ottenuto
+sleep 15
+IPADDR=$(/sbin/ifconfig ppp0 | awk '/inet/ { print $2 } ' | sed -e s/addr://)
+
+nsupdate -k /root/dns/Khome.piffa.net.+157+04331.private <<-EOF
+ server 192.168.0.254
+ zone home.piffa.net.
+ update delete home.piffa.net. A
+ update delete home.piffa.net. MX
+ update add home.piffa.net. 432000 A $IPADDR
+ update add home.piffa.net. 432000 MX 10 home.piffa.net.
+ show
+ send
+ EOF
+</pre>
+
+ <p>Questo script legge il valore del device di rete
+ <tt class="docutils literal"><span class=
+ "pre">ppp0</span></tt> creato dal <cite>pppoe</cite> di
+ una connessione ADSL per ottenere l'indirizzo IP ottenuto
+ dal provider (prima di farlo aspetta 15 secondi per dare
+ il tempo al <tt class="docutils literal"><span class=
+ "pre">pppoe</span></tt> di negoziare la
+ connessione).Vengono poi eliminati gli esistenti valori
+ <tt class="docutils literal"><span class=
+ "pre">A</span></tt> e <tt class=
+ "docutils literal"><span class="pre">MX</span></tt> per
+ <tt class="docutils literal"><span class=
+ "pre">home.piffa.net</span></tt> (si noti il punto finale
+ dopo <em>net</em>) e inseriti quelli attuali.</p>
+
+ <p>Resta da decidere quando richiamare questo script:
+ l'evento che causa l'assegnazione del nuovo IP in questo
+ caso e una nuova connessione <tt class=
+ "docutils literal"><span class="pre">pppoe</span></tt>,
+ quindi sarebbe consigliabile inserire lo script nelle
+ routine comprese in <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/ppp/ip-up.d</span></tt> (si veda la
+ documentazione di ppp), nel caso questo non desse i
+ risultati sperati (per problemi di connessione) come via
+ estrema si consideri di mettere lo script nella routine
+ del demone <tt class="docutils literal"><span class=
+ "pre">cron</span></tt> in modo che venga eseguito
+ periodicamente (ad esempio ogni giorno).</p>
+ </div>
</div>
<div class="section" id="link-suggeriti">
<h2><a class="toc-backref" href=
- "#id75">6.5 Link suggeriti:</a></h2>
+ "#id83">7.5 Link suggeriti:</a></h2>
<ul class="simple">
<li>DNS for Rocket Scientists <a class=
<div class="section" id="samba">
<h1><a class="toc-backref" href=
- "#id76">7 Samba</a></h1>
+ "#id84">8 Samba</a></h1>
<p>Samba e' un progetto libero che fornisce servizi di
condivisione di file e stampanti a client SMB/CIFS.</p>
<div class="section" id="pacchetti">
<h2><a class="toc-backref" href=
- "#id77">7.1 Pacchetti</a></h2>
+ "#id85">8.1 Pacchetti</a></h2>
<p>Pacchetti da installare per utilizzare Samba in
- modalita' client <a class="footnote-reference" href="#id6"
- id="id5" name="id5">[2]</a></p>
+ modalita' client <a class="footnote-reference" href="#id7"
+ id="id6" name="id6">[2]</a></p>
<pre class="literal-block">
samba-client
</pre>
samba smbfs smbclient
</pre>
- <table class="docutils footnote" frame="void" id="id6"
+ <table class="docutils footnote" frame="void" id="id7"
rules="none">
<colgroup>
<col class="label">
<tbody valign="top">
<tr>
<td class="label"><a class="fn-backref" href=
- "#id5">[2]</a></td>
+ "#id6">[2]</a></td>
<td>Anche se nato per i sistemi Windows, Samba puo'
essere usato anche per montare cartelle sotto
<div class="section" id="passwords-e-autenticazione">
<h2><a class="toc-backref" href=
- "#id78">7.2 Passwords e
+ "#id86">8.2 Passwords e
autenticazione</a></h2>
<p>Per poter configurare Samba in modo che usi un sistema
<div class="section" id="creazione-utenti">
<h2><a class="toc-backref" href=
- "#id79">7.3 Creazione Utenti</a></h2>
+ "#id87">8.3 Creazione Utenti</a></h2>
<p>Creiamo per primo l'utente sotto GNU/Linux, facendo
attenzione a <em>non dargli una shell di sistema</em>. Gli
<div class="section" id="creare-la-condivisione">
<h2><a class="toc-backref" href=
- "#id80">7.4 Creare la
+ "#id88">8.4 Creare la
condivisione</a></h2>
<p>La condivisione altro non e' che una cartella sul server
<div class="section" id=
"sicurezza-permessi-di-esecuzione-sul-server">
<h3><a class="toc-backref" href=
- "#id81">7.4.1 Sicurezza: permessi di
+ "#id89">8.4.1 Sicurezza: permessi di
esecuzione sul server</a></h3>
<p>Bisognerebbe notare sul server i permessi di
<div class="section" id=
"configurazione-dell-applicativo-samba-vero-e-proprio">
<h2><a class="toc-backref" href=
- "#id82">7.5 Configurazione
+ "#id90">8.5 Configurazione
dell'applicativo Samba vero e proprio.</a></h2>
<p>Avendo preparato gli utenti (ancora una volta: non si
<div class="section" id="creazione-di-un-gruppo">
<h3><a class="toc-backref" href=
- "#id83">7.5.1 Creazione di un
+ "#id91">8.5.1 Creazione di un
gruppo</a></h3>
<p>Se si deve condividere una risorsa con un numero
<div class="section" id="testare-il-servizio">
<h2><a class="toc-backref" href=
- "#id84">7.6 Testare il Servizio</a></h2>
+ "#id92">8.6 Testare il Servizio</a></h2>
<p>Come testare il servizio</p>
<div class="section" id="server-di-posta-postfix">
<h1><a class="toc-backref" href=
- "#id85">8 Server di posta: Postfix</a></h1>
+ "#id93">9 Server di posta: Postfix</a></h1>
<p>Il server di posta che prenderemo in considerazione e'
Postfix, a seguire un estratto di un file di configurazione
<div class="section" id="test-del-server-smtp">
<h2><a class="toc-backref" href=
- "#id86">8.1 Test del server smtp</a></h2>
+ "#id94">9.1 Test del server smtp</a></h2>
<p>Per testare il corretto funzionamento del server di
posta si puo' procedere in vari modi.</p>
<div class="section" id="swaks">
<h3><a class="toc-backref" href=
- "#id87">8.1.1 Swaks</a></h3>
+ "#id95">9.1.1 Swaks</a></h3>
<dl class="docutils">
<dt>Per gli utenti meno esperti e' consigliabile
<div class="section" id="imap-e-pop">
<h2><a class="toc-backref" href=
- "#id88">8.2 Imap e pop</a></h2>
+ "#id96">9.2 Imap e pop</a></h2>
<p>Postfix e' un server SMTP, di conseguenza se volete che
i vostri utenti possano <em>scaricare</em> in locale la
<div class="section" id="client-a-riga-di-comando">
<h2><a class="toc-backref" href=
- "#id89">8.3 Client a riga di
+ "#id97">9.3 Client a riga di
comando</a></h2>
<p>Per testare il corretto funzionamento del server di
<div class="section" id="mailx">
<h3><a class="toc-backref" href=
- "#id90">8.3.1 mailx</a></h3>
+ "#id98">9.3.1 mailx</a></h3>
<dl class="docutils">
<dt>Uno dei client piu' semplici, sopratutto per
<div class="section" id="mutt">
<h3><a class="toc-backref" href=
- "#id91">8.3.2 Mutt</a></h3>
+ "#id99">9.3.2 Mutt</a></h3>
<p>Mutt e' uno dei gestori di posta preferiti da chi
preferisce utilizzare l'interfaccia testuale per la
<div class="section" id="web-client">
<h3><a class="toc-backref" href=
- "#id92">8.3.3 Web client</a></h3>
+ "#id100">9.3.3 Web client</a></h3>
<p>Per mettere a disposizione degli utenti un client web
per gestire la propria posta si installi il pacchetto:
<div class="section" id="graylisting">
<h2><a class="toc-backref" href=
- "#id93">8.4 Graylisting</a></h2>
+ "#id101">9.4 Graylisting</a></h2>
<p>Il <em>graylisting</em> e' un sistema relativamente poco
invasivo, con un limitato consumo di risorse per limitare
<div class="section" id="abilitazione-in-postfix">
<h3><a class="toc-backref" href=
- "#id94">8.4.1 Abilitazione in
+ "#id102">9.4.1 Abilitazione in
Postfix</a></h3>
<p>Installare il pacchetto: <tt class=
<div class="section" id="test">
<h3><a class="toc-backref" href=
- "#id95">8.4.2 Test</a></h3>
+ "#id103">9.4.2 Test</a></h3>
<p>Inviando un messaggio il client dovrebbe ricevere un
iniziale messaggio di rifiuto del messaggio:</p>
<div class="section" id="statistiche">
<h3><a class="toc-backref" href=
- "#id96">8.4.3 Statistiche</a></h3>
+ "#id104">9.4.3 Statistiche</a></h3>
<p>E' sempre utile poter tracciare qualche statistica
sulle percentuali di messaggi ricevuti, da chi, messaggi
<div class="section" id="firewall">
<h1><a class="toc-backref" href=
- "#id97">9 Firewall</a></h1>
+ "#id105">10 Firewall</a></h1>
<p>In Informatica, nell'ambito delle reti di computer, un
firewall (termine inglese dal significato originario di
<div class="section" id="links">
<h2><a class="toc-backref" href=
- "#id98">9.1 Links</a></h2>
+ "#id106">10.1 Links</a></h2>
<ul class="simple">
<li><a class="reference external" href=
<div class="section" id="ipfilter">
<h2><a class="toc-backref" href=
- "#id99">9.2 Ipfilter</a></h2>
+ "#id107">10.2 Ipfilter</a></h2>
<p>Link: <a class="reference external" href=
"http://iptables-tutorial.frozentux.net/iptables-tutorial.html#IPFILTERING">
<div class="section" id="progettazione-di-un-firewall">
<h2><a class="toc-backref" href=
- "#id100">9.3 Progettazione di un
+ "#id108">10.3 Progettazione di un
firewall</a></h2>
<p>Per implementare un firewall bisogna decidere un aio di
<div class="section" id="collocazione">
<h3><a class="toc-backref" href=
- "#id101">9.3.1 Collocazione</a></h3>
+ "#id109">10.3.1 Collocazione</a></h3>
<p>DMZ e MZ, internet, intranet, extranet. Frammentazione
della rete, decidere se diversi reparti di una azienda si
<div class="section" id="policy-di-default">
<h3><a class="toc-backref" href=
- "#id102">9.3.2 Policy di
+ "#id110">10.3.2 Policy di
default</a></h3>
<p>Drop o Accept: conseguenze per sicurezza, facilita' di
<div class="section" id="hardware">
<h3><a class="toc-backref" href=
- "#id103">9.3.3 Hardware</a></h3>
+ "#id111">10.3.3 Hardware</a></h3>
<p>Sostanzialmente potremmo distinguere due tipologie di
hardware:</p>
<div class="section" id=
"percorso-dei-pacchetti-tra-tabelle-e-catene">
<h2><a class="toc-backref" href=
- "#id104">9.4 Percorso dei pacchetti tra
+ "#id112">10.4 Percorso dei pacchetti tra
tabelle e catene</a></h2>
<p>link: <a class="reference external" href=
<div class="section" id="concetti-di-base">
<h2><a class="toc-backref" href=
- "#id105">9.5 Concetti di base</a></h2>
+ "#id113">10.5 Concetti di base</a></h2>
<div class="section" id="tabelle-catene-regole">
<h3><a class="toc-backref" href=
- "#id106">9.5.1 Tabelle, catene,
+ "#id114">10.5.1 Tabelle, catene,
regole</a></h3>
<p>Iptables lavora su 3 tabelle (tables) di default:</p>
<div class="section" id="match">
<h3><a class="toc-backref" href=
- "#id107">9.5.2 Match</a></h3>
+ "#id115">10.5.2 Match</a></h3>
<p>I Match di una regola (rule) servono a testare un
pacchetto per valutare se corrisponda a certe
<div class="section" id="targets">
<h3><a class="toc-backref" href=
- "#id108">9.5.3 Targets</a></h3>
+ "#id116">10.5.3 Targets</a></h3>
<p>Se un pacchetto soddisfa le condizioni del Match
<em>salta</em> (jump) su uno dei target possibili, in
<div class="section" id="tabella-filter">
<h2><a class="toc-backref" href=
- "#id109">9.6 Tabella Filter</a></h2>
+ "#id117">10.6 Tabella Filter</a></h2>
<p>E' quella implicita e predefinita (-t filter) Riguarda
le attivita' di filtraggio del traffico. Ha 3 catene di
<div class="section" id=
"flush-automatico-per-macchine-remote">
<h2><a class="toc-backref" href=
- "#id110">9.7 Flush automatico per macchine
- remote</a></h2>
+ "#id118">10.7 Flush automatico per
+ macchine remote</a></h2>
<p>Se state provando una configurazione del firewall per
una macchina remota e' buona norma per evitare brutte
<div class="section" id="gestione-regole-rules">
<h2><a class="toc-backref" href=
- "#id111">9.8 Gestione regole
+ "#id119">10.8 Gestione regole
(rules)</a></h2>
<p>Il comando iptables viene usato per ogni attivita' di
<div class="section" id="salvataggio-regole">
<h2><a class="toc-backref" href=
- "#id112">9.9 Salvataggio regole</a></h2>
+ "#id120">10.9 Salvataggio regole</a></h2>
<p>Il comando <tt class="docutils literal"><span class=
"pre">iptables</span></tt> serve per interagire con il
<div class="section" id="iptables-save">
<h3><a class="toc-backref" href=
- "#id113">9.9.1 Iptables-save</a></h3>
+ "#id121">10.9.1 Iptables-save</a></h3>
<p>Per salvare le regole di iptables attualmente presenti
nel kernel si usi il comando:</p>
<div class="section" id="iptables-restore">
<h3><a class="toc-backref" href=
- "#id114">9.9.2 Iptables-restore</a></h3>
+ "#id122">10.9.2 Iptables-restore</a></h3>
<p>Per ripristinare un set di regole precedentemente
salvate con <tt class="docutils literal"><span class=
<div class="section" id="esempi">
<h2><a class="toc-backref" href=
- "#id115">9.10 Esempi</a></h2>
+ "#id123">10.10 Esempi</a></h2>
<p>Seguono alcuni esempi sull'uso di iptables, lo scenario
e' un computer con un paio di schede di rete fisiche una
<div class="section" id="bloccare-i-ping-dall-esterno">
<h3><a class="toc-backref" href=
- "#id116">9.10.1 Bloccare i ping
+ "#id124">10.10.1 Bloccare i ping
dall'esterno</a></h3>
<p>Spesso gli script che attaccano
<div class="section" id="masquerading-snat">
<h3><a class="toc-backref" href=
- "#id117">9.10.2 Masquerading
+ "#id125">10.10.2 Masquerading
(sNAT)</a></h3>
<dl class="docutils">
<div class="section" id="brute-force">
<h3><a class="toc-backref" href=
- "#id118">9.10.3 Brute force</a></h3>
+ "#id126">10.10.3 Brute force</a></h3>
- <dl class="docutils">
- <dt>Per limitare attacchi di tipo brute force su
- SSH::</dt>
+ <p>Per limitare attacchi di tipo brute force su SSH:</p>
+ <pre class="literal-block">
+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
- <dd>
- <p class="first">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</p>
-
- <p class="last">iptables -A INPUT -i ppp0 -p tcp -m
- tcp --dport 22 -m state --state NEW -m recent --set
- --name DEFAULT --rsource</p>
- </dd>
- </dl>
+iptables -A INPUT -i ppp0 -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
+</pre>
</div>
</div>
</div>
- <div class="section" id="note">
+ <div class="section" id="ftp-server">
<h1><a class="toc-backref" href=
- "#id119">10 NOTE</a></h1>
+ "#id127">11 FTP Server</a></h1>
+
+ <p>Il File Transfer Protocol (FTP) (protocollo di
+ trasferimento file), รจ un Protocollo per la trasmissione di
+ dati tra host basato su TCP, in genere usato dagli autori di
+ pagine web per <em>pubblicare</em> queste nei propio spazi
+ web. Storicamente veniva anche usato, mediate l'utilizzo di
+ utenze anonime, come punto di scambio per materiali di vari
+ utenti tra loro sconosciuti (una directory dei materiali
+ scaricabili e una dedicata agli <em>uploads</em> degli
+ utenti, poi riordinati dall'<em>ftpmaster</em>). Tuttora si
+ mantiene la cosuetudine di renedere disponibile i materiali
+ dei <em>mirrors</em> anche tramite FTP, probabilmente per
+ garantire l'accesso ai client piu' datati che non possono
+ utilizzare tecnologie piu' recenti.</p>
+
+ <p>Il protocollo FTP e' in chiaro (cioe' non criptato), sia
+ per quanto riguarda il traffico ad esso associato che per il
+ passaggio delle passwords degli utenti, facilmente sniffabili
+ da chiunque abbia accesso alla rete. Naturalmente vsftp per
+ quanto votato alla sicurezza non modifica queste
+ caratteristiche del protocollo FTP (ma consente di usare
+ OpenSSL per la autenticazione degli utenti).</p>
+
+ <p>Se propio si deve mettere a disposizione un server FTP ai
+ propi utenti si considerino le seguenti alternative:</p>
- <dl class="docutils">
- <dt>Bind:</dt>
+ <ul class="simple">
+ <li>Spingere gli utenti ad usare SFTP invece che FTP</li>
- <dd>
- <ul class="first last simple">
- <li>altri esempi commenti su una zona</li>
+ <li>Spingere gli utenti ad usare SSL per autenticarsi al
+ server FTP</li>
- <li>esempi di una zona PTR?</li>
+ <li>Nel caso di webdesigners si consideri la possibilita'
+ di offrire alternative come GIT, Subversion, Rsync o
+ Webdav</li>
+ </ul>
- <li>dns secondari</li>
+ <p>Nel caso non si possa evitare il server FTP:</p>
- <li>nsupdate</li>
- </ul>
- </dd>
- </dl>
+ <ul class="simple">
+ <li>Non dare agli utenti FTP una shell di sistema (
+ Concedere come shell <tt class=
+ "docutils literal"><span class="pre">ftp</span></tt> al
+ posto di <tt class="docutils literal"><span class=
+ "pre">bash</span></tt> in <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/passwd</span></tt>)</li>
+
+ <li>Rendere il filesytem su cui scrive il demone FTP
+ <tt class="docutils literal"><span class=
+ "pre">noexec</span></tt> e <tt class=
+ "docutils literal"><span class="pre">nosuid</span></tt>
+ (vedi dopo)</li>
+
+ <li>Utilizzare un demone FTP come Vsftp: un server FTP con
+ una forte inclinazione alla sicurezza: <em>Very Secure FTP
+ Daemon</em>.</li>
+ </ul>
- <p>sintassi: in <tt class="docutils literal"><span class=
- "pre">monospace</span></tt> :</p>
+ <p>Per maggiori informazioni sulle scelte di design legate
+ alla sicurezza del demone si veda: <a class=
+ "reference external" href=
+ "http://vsftpd.beasts.org/DESIGN">http://vsftpd.beasts.org/DESIGN</a></p>
+
+ <p>Vsftp mette a disposizione le seguenti funzionalita':</p>
<ul class="simple">
- <li>nomi di files</li>
+ <li>Virtual IP configurations</li>
+
+ <li>Virtual users</li>
+
+ <li>Standalone or inetd operation</li>
+
+ <li>Powerful per-user configurability</li>
+
+ <li>Bandwidth throttling</li>
- <li>comandi</li>
+ <li>Per-source-IP configurability</li>
- <li>pacchetti</li>
+ <li>Per-source-IP limits</li>
+
+ <li>IPv6</li>
+
+ <li>Encryption support through SSL integration</li>
</ul>
+
+ <div class="section" id="id8">
+ <h2><a class="toc-backref" href=
+ "#id128">11.1 Pacchetti</a></h2>
+
+ <p>Per installare il demone vero e propio si usi il
+ pacchetto <tt class="docutils literal"><span class=
+ "pre">vsftpd</span></tt> , mentre per aver un client da cui
+ fare qualche test sono dipsonibili:</p>
+
+ <ul class="simple">
+ <li><tt class="docutils literal"><span class=
+ "pre">ftp</span></tt> (pacchetto da installare) e' il
+ solito client a riga di comando</li>
+
+ <li><tt class="docutils literal"><span class=
+ "pre">gftp</span></tt> e' un client grafico simile al
+ classico <em>WSftp</em></li>
+
+ <li>Normalmente i file mananager com Konqueror possono
+ lavarorare come client FTP</li>
+ </ul>
+ </div>
+
+ <div class="section" id="sessioni-ftp">
+ <h2><a class="toc-backref" href=
+ "#id129">11.2 Sessioni ftp</a></h2>
+
+ <p>Vediamo alcuni dei comandi di base per gestire una
+ sessione ftp a riga di comando:</p>
+
+ <dl class="docutils">
+ <dt>ftp nome_host</dt>
+
+ <dd>stabilire la connessione all'host, poi verra' chiesta
+ la password dell'utente. Se avete sbagliato utente: user
+ .</dd>
+
+ <dt>help</dt>
+
+ <dd>Lista dei comandi disponibili.</dd>
+
+ <dt>help [nome_comando]</dt>
+
+ <dd>Cosa fa quel comando.</dd>
+
+ <dt>put</dt>
+
+ <dd>Per caricare un file.</dd>
+
+ <dt>get</dt>
+
+ <dd>Per scaricare un file.</dd>
+
+ <dt>ls</dt>
+
+ <dd>Lista dei file disponibili.</dd>
+
+ <dt>cd</dt>
+
+ <dd>Spostarsi in un altra directory.</dd>
+
+ <dt>lcd</dt>
+
+ <dd>Cambio directory in LOCALE.</dd>
+
+ <dt>mput/mget</dt>
+
+ <dd>Per lavorare su file multipli.</dd>
+
+ <dt>prompt</dt>
+
+ <dd>
+ <dl class="first last docutils">
+ <dt>Per uscire dalla modalita' interattiva</dt>
+
+ <dd>
+ <dl class="first last docutils">
+ <dt>(non vi chiede conferma di ogni singola
+ operazione</dt>
+
+ <dd>su ogni singolo file...).</dd>
+ </dl>
+ </dd>
+ </dl>
+ </dd>
+
+ <dt>binary</dt>
+
+ <dd>Entra in modalita' trasferimento binario.</dd>
+
+ <dt>asii</dt>
+
+ <dd>Entra in modalita' trasferimento ascii.</dd>
+
+ <dt>bye</dt>
+
+ <dd>Per chiudere la sessione.</dd>
+ </dl>
+ </div>
+
+ <div class="section" id="configurazione-iniziale">
+ <h2><a class="toc-backref" href=
+ "#id130">11.3 Configurazione
+ iniziale</a></h2>
+
+ <p>Il demone di vsftpd e' immediatamente disponibile ma
+ solo in modalita' anonima (si pensi a uno scenario in cui
+ si vuole rendere disponibili dei files tramite FTP) e in
+ <em>sola lettura</em>. Per accedere al servizio si usi
+ quini come utente <tt class="docutils literal"><span class=
+ "pre">anonymous</span></tt> (la passwords in genere e' come
+ consuetudine il propio indirizzo email), la cui
+ <em>home</em> directory sara' <tt class=
+ "docutils literal"><span class="pre">/home/ftp/</span></tt>
+ (<tt class="docutils literal"><span class=
+ "pre">/srv/ftp</span></tt> in Squeeze):</p>
+ <pre class="literal-block">
+zoo:~# ftp localhost
+Connected to localhost.localdomain.
+220 (vsFTPd 2.0.7)
+Name (localhost:root): anonymous
+331 Please specify the password.
+Password:
+230 Login successful.
+Remote system type is UNIX.
+Using binary mode to transfer files.
+ftp> ls
+200 PORT command successful. Consider using PASV.
+150 Here comes the directory listing.
+-rw-r--r-- 1 0 0 0 Feb 03 17:17 anoni
+226 Directory send OK.
+</pre>
+ </div>
+
+ <div class="section" id="abilitare-gli-utenti-locali">
+ <h2><a class="toc-backref" href=
+ "#id131">11.4 Abilitare gli utenti
+ locali</a></h2>
+
+ <p>Per poter modificare le impostazioni iniziali, ad
+ esempio per permettere l'accesso agli utenti del server, si
+ modifichera' il file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/vsftpd.conf</span></tt>, a seguire le
+ impostazioni fondamentali ed altre interessanti per rendere
+ il server accessibile da utenti di sistema (autenticati
+ tramite la loro password, quindi con PAM) per il tipico
+ utilizzo di web designers che debbano pubblicare le loro
+ pagine web (e non si siano fatti convincere a usare
+ SFTP!):</p>
+ <pre class="literal-block">
+# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
+anonymous_enable=NO
+# Disabilitiamo l'utente anonimo
+
+# Uncomment this to allow local users to log in.
+local_enable=YES
+# Accesso garantito agli utenti di sistema
+
+# Uncomment this to enable any form of FTP write command.
+write_enable=YES
+# Permettiamo agli utenti di caricare documenti nella loro home
+
+# You may fully customise the login banner string:
+ftpd_banner=Benvenuti al servizio ftp del sito example.com
+</pre>
+
+ <p>Per abilitare i cambiamenti si proceda a riavviare il
+ server: <tt class="docutils literal"><span class=
+ "pre">/etc/init.d/vsftpd</span> <span class=
+ "pre">restart</span></tt> e si monitorizzi il file di log
+ <tt class="docutils literal"><span class="pre">tail</span>
+ <span class="pre">-f</span> <span class=
+ "pre">/var/log/vsftpd.log</span></tt> per controllarne il
+ funzionamento (e anche <tt class=
+ "docutils literal"><span class=
+ "pre">/var/log/syslog</span></tt> nel caso non si riuscisse
+ a far partire correttamente il servizio.</p>
+
+ <p>NOTE: Se non riuscite ad ottenere un <em>directory
+ listing</em> (<tt class="docutils literal"><span class=
+ "pre">ls</span></tt>) ottenendo un errore <tt class=
+ "docutils literal"><span class="pre">500</span>
+ <span class="pre">Illegal</span> <span class=
+ "pre">PORT</span> <span class="pre">command?</span>
+ <span class="pre">FTP</span> <span class=
+ "pre">error</span></tt> abilitare la modalita' passiva col
+ comando ftp <tt class="docutils literal"><span class=
+ "pre">passive</span></tt>.</p>
+ </div>
+
+ <div class="section" id="jail-chroot">
+ <h2><a class="toc-backref" href=
+ "#id132">11.5 Jail chroot</a></h2>
+
+ <p>Si puo' impedire all'utente di spostarsi arbitrariamente
+ per il file system del servere visualizzare il contenuto
+ delle directory, ad esempio la cartella <tt class=
+ "docutils literal"><span class="pre">/etc</span></tt>,
+ confinandolo in una jail chroot limitata alla sua home
+ directory:</p>
+ <pre class="literal-block">
+# You may restrict local users to their home directories. See the FAQ for
+# the possible risks in this before using chroot_local_user or
+# chroot_list_enable below.
+chroot_local_user=YES
+</pre>
+
+ <p>Generalmente un utente di sistema con il solo accesso
+ FTP non dovrebbe avere la possibilita' di poter navigare
+ liberamente per il file system del server, esponendo file
+ di configurazione e quant'altro l'utente potrebbe trarre
+ utili informazioni sul quali software siano installati e di
+ che tipo:</p>
+ <pre class="literal-block">
+Remote system type is UNIX.
+Using binary mode to transfer files.
+ftp> pwd
+257 "/"
+ftp> cd /etc/
+550 Failed to change directory.
+</pre>
+ </div>
+
+ <div class="section" id="permessi-sul-filesystem">
+ <h2><a class="toc-backref" href=
+ "#id133">11.6 Permessi sul
+ filesystem</a></h2>
+
+ <p>Come accennato precedentemente e' opportuno che i
+ filesystems sui quali un utente puo' scrivere o modificare
+ il contenuto non abbiano i privilegi di eseguibilita' e
+ suid, nel nonstro caso vsftpd lavora sull'intera <tt class=
+ "docutils literal"><span class="pre">/home/</span></tt>
+ directory quindi avremo in <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/fstab</span></tt>:</p>
+ <pre class="literal-block">
+/dev/mapper/store-homes /home ext3 rw,nosuid,noexec 0 2
+</pre>
+ </div>
+
+ <div class="section" id="shell-dell-utente">
+ <h2><a class="toc-backref" href=
+ "#id134">11.7 Shell dell'utente</a></h2>
+
+ <p>Come gia' detto piu' volte le passwords degli utenti
+ viaaggiano in rete in chiaro, ponendo un grave problema di
+ sicurezza. Sara' quindi opportuno disbilitare la shell di
+ questi utenti, tramite il flag <tt class=
+ "docutils literal"><span class="pre">--shell</span>
+ <span class="pre">/bin/false</span></tt> in fase di
+ creazione degli utenti:</p>
+ <pre class="literal-block">
+# adduser --shell /bin/false nome_utente
+</pre>
+
+ <p>Oppure correggiendo manualmente il file <tt class=
+ "docutils literal"><span class=
+ "pre">/etc/passwd</span></tt> per modificare l'inpostazione
+ della shell dell'utente:</p>
+ <pre class="literal-block">
+nome_utente:x:1001:1001::/var/spool/postfix:/bin/bash
+# la riga sopra deve essere trasformata in
+nome_utente:x:1001:1001::/var/spool/postfix:/bin/false
+</pre>
+
+ <p>Sui sistemi DEbian REcenti sara' necessario aggiungere
+ <tt class="docutils literal"><span class=
+ "pre">/bin/false</span></tt> all'elenco delle shell
+ valide.</p>
+
+ <p><tt class="docutils literal"><span class=
+ "pre">/etc/shells</span></tt></p>
+ <pre class="literal-block">
+...
+/bin/false
+</pre>
+ </div>
+
+ <div class="section" id="altre-opzioni">
+ <h2><a class="toc-backref" href=
+ "#id135">11.8 Altre opzioni</a></h2>
+
+ <dl class="docutils">
+ <dt>xferlog_enable=YES</dt>
+
+ <dd>Verra' tenuto un file di log <tt class=
+ "docutils literal"><span class=
+ "pre">/var/log/vsftpd.log</span></tt> degli upload e
+ download sul server.</dd>
+
+ <dt>hide_ids=YES</dt>
+
+ <dd>Nasconde le userid e groupid mascherandole con
+ <tt class="docutils literal"><span class=
+ "pre">ftp</span></tt> .</dd>
+
+ <dt>anon_root=/home/ftp</dt>
+
+ <dd>Home directory dell'utente anonimo.</dd>
+
+ <dt>write_enable=YES</dt>
+
+ <dd>Permette agli utenti di eseguire i comandi che
+ possono modificare il filesystem: STOR, DELE, RNFR, RNTO,
+ MKD, RMD, APPE e SITE .</dd>
+
+ <dt>idle_session_timeout=600</dt>
+
+ <dd>Permette agli utenti di restare connessi piu' a
+ lungo, utile per i webdesigners che passano intere
+ giornate connessi al server.</dd>
+ </dl>
+ </div>
</div>
</div>
</body>