From e9f87918ea6f2aef34ef7afa824a3a9a61c7cfea Mon Sep 17 00:00:00 2001 From: Andrea Manni Date: Mon, 18 May 2009 18:59:41 +0200 Subject: [PATCH] Sistemata la parte di Squid per servizi.txt --- servizi.html | 597 ++++++++++++++++++++++++++++++--------------- source/servizi.txt | 84 ++++++- 2 files changed, 474 insertions(+), 207 deletions(-) diff --git a/servizi.html b/servizi.html index 9c85f5e..8facfa0 100644 --- a/servizi.html +++ b/servizi.html @@ -319,7 +319,7 @@ Version: - 0.4 + 0.5 @@ -395,315 +395,325 @@ squid.conf
  • 2.2   Negoziazione degli + "#negoziazione-degli-accesi-al-servizio" id="id22" + name="id22">2.2   Negoziazione degli accesi al servizio
  • 2.3   Testare + id="id24" name="id24">2.3   Testare Squid
  • - 3   Apache + 3   Apache
  • 4   Domain Name + id="id47" name="id47">4   Domain Name System
  • -
  • 5   DNSmasq
  • +
  • 5   DNSmasq
  • - 6   Samba + 6   Samba
  • - 7   Firewall + 7   Firewall
  • -
  • 8   NOTE
  • +
  • 8   NOTE
  • @@ -724,7 +734,14 @@

    Qui riportati per comodita' degli studenti (e del docente che non sara' mai piu' costretto a - ripeterli! )

    + ripeterli continuamente! ). Gli altri lettori potranno + tenerli presenti per cercare di comprendere gli esempi nel + testo. Ad esempio: quando leggerete 10.10.208.254:3128 saprete che si tratta + del nostro proxy http, stara' quindi a voi + sostituire i dati con gli ip della vostra + rete.

    @@ -735,8 +752,8 @@ - - + + @@ -785,6 +802,12 @@ + + + + + +
    10.10.208.250 persistente
    proxy http10.10.208.254:3128
    @@ -795,7 +818,9 @@ 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 ;) .

    + trasparente, quindi fate pure come se non ci fosse ;) . + Questo in attesa che si sappia se sara' nuovamente + utilizzabile il vecchio server Bender.

    @@ -1155,6 +1180,42 @@ Acquire::http::Proxy "http://10.10.208.254:3128";

    2   Squid

    +

    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 + partendo dalle configurazioni piu' semplici per la semplice + condivisione della navigazione internet, 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 ipfilter limitato al 2') nel l + bilanciamento del carico tra piu' hosts.

    + +
    +
    Inoltre svolge la funzione di anonymizer:
    + +
    nasconde i client http alla rete internet: risulta solo + il server proxy nei log dei server web frequentati dagli + utenti di Squid.
    +
    + +

    Cosa a volte sottovalutata, squid 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 un NAT od + altro, basta il solo Squid. Per altro non servira' neanche un + servizio DNS dato che sara' il solo squid a risolvere i + nomi di dominio per i suoi client http.

    + +

    Squid ascolta di default sulla porta 3128, per impostare + apt per utilizzarlo si aggiunga ad /etc/apt/apt.conf

    +
    +Acquire::http::Proxy "10.10.208.254:3128";
    +
    +

    Per installare Squid si usino i pacchetti:

     squid3
    @@ -1165,9 +1226,73 @@ squid3
             "#id17">2.1   Configurazione:
             squid.conf
     
    -        

    Segue un estratto del file di configurazione:

    -
    -#TAG: cache_dir (1628)
    +        

    Segue un estratto delle direttive principali viste in + aula presenti nel file di configurazione /etc/squid3/squid.conf .

    + +
    +

    2.1.1   Cache_dir

    + +

    Cache dir serve per impostare dimensione e percorso + della cache creata sul supporto di storaggio. Essendo la + dimensione di default della cache pari a ~100 + MB e' altamente + consigliabili aumentare questo parametro se si vuole + poter utilizzare la funzione di cache http del + software.

    + +

    La dimensione ovviamente dipendera' dallo spazio + disponibile, dimensioni tipiche e massime degli oggetti + che si vuole tenere in cache (un solo file .iso e' + circa ``700 MB``, il pacchetto *Openoffice.org cira + 150 + MB, un pacchetto debian + circa 20 MB), numero + dei client.

    + +

    Si presti poi attenzione alla natura dei dati che + saranno salvati nella cache: sono tutti dati facilmenti + sostituibili (gli originali sono on-line) la cui + perdita non arreca danni permanenti. Questo rende la + cache di Squid un possibile candidato ad un RAID + stripe (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 + garantire la disponibilita' del servizio (se il + RAID stripe dovesse rompersi gli utenti non potrebbero + piu' navigare, cosa che per natura dello stripe e' + maggiormente probabile rispetto ad un mirror o a + un filesytem normale) con un RAID mirror o + 5.

    + +

    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 noatime per renderlo piu' veloce, + che si usi o meno il journal dipende dalle preferenze: + affidabilita' oppure prestazioni):

    + +

    /etc/fstab

    +
    +...
    +# Filesystem per Squid http cache
    +/dev/md3/       /var/spool/squid/       ext3,noexec,nosuid,noatime  0 3
    +
    + +

    Ora possiamo impostare la cache direttamente nel file + /etc/squid3/squid.conf:

    +
    +#TAG: cache_dir (riga 1628)
     #       Usage:
     #
     #       cache_dir Type Directory-Name Fs-specific-data [options]
    @@ -1185,27 +1310,34 @@ cache_dir aufs /var/spool/squid3 300 24 256
     #                                       secondo livello di directory
     
    -

    Se si modifica la struttura del filesytem della cache di - Squid, ad esempio variando il numero delle directory, puo' - essere (ed in genere lo e') opportuno rigenerare la - struttura della cache di squid. Tipicamente e' opportuno - cancellare la vecchia cache e poi generarne una nuova:

    -
    +          

    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 aumenta il numero delle + directory di primo o secondo livello). Tipicamente e' + opportuno cancellare (se si ha *ridotto il numero + delle diectory) 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

    +
     # /etc/init.d/squid3 stop
     # rm -r /var/spool/squid3/??
     # squid3 -z
     # /etc/init.d/squid3 start
     
    +

    2.1.1   TAG: + "#id19">2.1.2   TAG: maximum_object_size

    Questa direttiva imposta la dimensione massima degli oggetti che vengono slvati sul supporto di storaggio, - oggetti di dimensioni superiori verranno scaricati ma non - tenuti in cache.

    + oggetti di dimensioni superiori saranno comunque + scaricati ma non tenuti in cache.

    TAG: maximum_object_size (1760):

    @@ -1229,14 +1361,34 @@ maximum_object_size 150 MB
     
             

    2.1.2   TAG: cache_mem

    + "#id20">2.1.3   TAG: cache_mem -

    Cache_mem imposta quanta memoria RAM - utilizzare per la cache di Squid. Questo dipendera' dalla +

    Cache_mem 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. Questo paramentro - influisce sulle prestazioni e sul degrado dei supporti di - storaggio (sopratutto se magnetici).

    + mettere a disposizione di Squid (altri servizi + iimportanti girano sulla stessa macchina?). Questo + paramentro influisce sulle prestazioni e sul degrado dei + supporti di storaggio (sopratutto se magnetici).

    + +

    Se si stesse pensando di usare dell'hardware + embedded 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 ~25MB + (MegaByte) di RAM e ~150MHZ di CPU ARM per + servire decorosamente una decina di client http su una + rete ethernet 10/100. In questo caso non fate scendere + cache_mem sotto i 2/4 + MB pena un accesso continuo + al supporto di storaggio.

    + +

    Se invece si disponesse di una macchina dedicata a + Squid con gigabytes di RAM non si esiti a dedicarne buona + parte a cache_mem.

    TAG: cache_mem (1566):

    @@ -1253,15 +1405,16 @@ cache_mem 100 M
     
             

    2.1.3   TAG: + "#id21">2.1.4   TAG: minimum_object_size

    -

    Questo paramentro imposta la dimensione minima degli +

    Questo parametro imposta la dimensione minima degli oggetti salvati nella cache. Settato a 0 o a valori molto piccoli puo' influire negativamente sulla deframmentazione del filesytem e consumare un numero - elevato di inode.

    + elevato di inode (cosa non piu' importante con + ext4 o altri filesytem).

    TAG: minimum_object_size:

    @@ -1280,16 +1433,59 @@ minimum_object_size 0 KB
           

    2.2   Negoziazione degli accesi al + "#id22">2.2   Negoziazione degli accesi al servizio

    Squid e' uno di quei servizi soggetto a problemi di tipo - open relay, si deve quindi limitare la rete che + open relay , si deve quindi limitare la rete che puo' accedere al servizio.

    +
    +
    Open Relay:
    + +
    Un servizio a cui possono accedere tutti + 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).
    +
    + +

    Generalmente non volete che il vostro proxy http venga + usato da persone sconosciute le quali sostanzialmente + navigherebbero sotto l'identita' del vostro proxy + (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 + modalita' Open relay e' al giorno d'oggi un buon + modo per essere inseriti in una black list.

    + +

    Per poter limitare gli accessi a Squid dal punto di + vista dell'applicazione (quarto livello TCP/IP) si + identifichera' inizialmente l'entita' rete locale + (es: localnet) con una ACL di tipo + src (indirizi IP sorgenti) indicando la classe + / range di ip della nostra rete.

    + +
    + Dopodiche l'accesso (http_access) si concedera' + (allow) a questa entita' (es: localnet) negando chiunque altro. +
    + +

    Per maggiori dettagli sulla sintassi utilizzabile per + esprimere i range di ip: + http://www.visolve.com/squid/squid24s1/access_controls.php

    +

    2.2.1   ACL e http access

    + "#id23">2.2.1   ACL e http access

    Si proceda a creare una ACL di @@ -1323,6 +1519,7 @@ minimum_object_size 0 KB #acl localnet src 192.168.0.0/16 # RFC1918 possible internal network # acl localnet src 10.10.208.0/24 + # Riga 606 # TAG: http_access # Allowing or Denying access based on defined access lists @@ -1349,7 +1546,7 @@ http_access allow localnet

    2.3   Testare Squid

    + "#id24">2.3   Testare Squid

    Configurato squid e' fondamentale testarne il corretto funzionamento per assicurarsi di non aver creato un @@ -1359,9 +1556,9 @@ http_access allow localnet "docutils literal">wget da riga di comando.

    -
    +

    2.3.1   wgetrc

    + "#id25">2.3.1   Client: ~/.wgetrc

    Nel file .wgetrc (si noti il punto iniziale: e' @@ -1393,19 +1590,31 @@ http_access allow localnet

     wget http://www.google.it
     
    +
    + +
    +

    2.3.2   Server: + access.log

    Si puo' controllare il corretto funzionamento del server seguendo i log di accesso a Squid:

     # tail -f /var/log/squid3/access.log
     
    + +

    In oltre e' possibile configurare diversi + analizzatori di log come Webalizer per studiare i log di + Squid.

    3   Apache

    + "#id27">3   Apache

    Apache HTTP Server, o piu' comunemente Apache, e' il nome dato alla piattaforma server Web modulare piu' diffusa (ma @@ -1423,7 +1632,7 @@ wget http://www.google.it

    3.1   Pacchetti da + "#id28">3.1   Pacchetti da installare::

    @@ -1437,7 +1646,7 @@ wget http://www.google.it

    3.2   Configurazione di + "#id29">3.2   Configurazione di Apache

    I file di configurazione di apache si trovano nella @@ -1496,7 +1705,7 @@ wget http://www.google.it

    3.3   apache.conf

    + "#id30">3.3   apache.conf

    File di configurazione del servizio Apache, contiene le impostazioni generiche (ad esempio utilizzo della RAM e @@ -1553,7 +1762,7 @@ wget http://www.google.it

    3.4   Installazione di PHP

    + "#id31">3.4   Installazione di PHP

    Pacchetti da installare: php5 @@ -1561,7 +1770,7 @@ wget http://www.google.it

    3.4.1   Test del modulo + "#id32">3.4.1   Test del modulo php

    Creare nella cartella

    3.4.2   Installazione del supporto + "#id33">3.4.2   Installazione del supporto per Mysql

    Installare i pacchetti:

    @@ -1608,7 +1817,7 @@ php5-mysql phpmyadmin

    3.4.3   phpmyadmin

    + "#id34">3.4.3   phpmyadmin

    L'interfaccia web Phpmyadmin non richede necessariamente la presenza di un database Mysql locale, @@ -1633,7 +1842,7 @@ php5-mysql phpmyadmin

    3.4.4   Installazione del supporto + "#id35">3.4.4   Installazione del supporto per Postgresql

    Installare i pacchetti:

    @@ -1650,7 +1859,7 @@ php5-pgsql phppgadmin

    3.4.5   phppgadmin

    + "#id36">3.4.5   phppgadmin

    L'interfaccia web Phppgadmin per il database server PostgreSQL non richede necessariamente la presenza di un @@ -1675,7 +1884,7 @@ php5-pgsql phppgadmin

    3.5   Virtual hosts

    + "#id37">3.5   Virtual hosts
      @@ -1716,7 +1925,7 @@ php5-pgsql phppgadmin

      3.5.1   Gestione DNS

      + "#id38">3.5.1   Gestione DNS

      Prima di tutto per poter impostare i virtual hosts dovete avere un server DNS che risolva i vostri nomi di @@ -1799,7 +2008,7 @@ php5-pgsql phppgadmin

      3.5.2   Virtual host

      + "#id39">3.5.2   Virtual host

      Esempio di Virtual host:

      @@ -1911,7 +2120,7 @@ php5-pgsql phppgadmin
       
             

      3.6   Negoziazione accessi

      + "#id40">3.6   Negoziazione accessi

      Tipicamente quando si installa un server web il proprio desiderio e' di dare accesso ai materiali disponibili al @@ -1924,7 +2133,7 @@ php5-pgsql phppgadmin

      3.6.1   Limiti su base ip

      + "#id41">3.6.1   Limiti su base ip

      La forma piu' semplice di restrizine degli accessi e' su base degli indirizzi IP dei client: tipicamente i siti @@ -1979,7 +2188,7 @@ php5-pgsql phppgadmin

      3.7   User Authentication

      + "#id42">3.7   User Authentication

      A volte conviene negoziare gli accessi ad un area di un sito tramite autenticazione basata sull'accopiata nome @@ -1996,7 +2205,7 @@ php5-pgsql phppgadmin

      3.7.1   Definire la + "#id43">3.7.1   Definire la cartella

      Decidere quale sara' il path della cartella @@ -2013,7 +2222,7 @@ php5-pgsql phppgadmin

      3.7.2   Creazione del database + "#id44">3.7.2   Creazione del database delle passwords

      Un modo semplice per gestire una database di @@ -2051,7 +2260,7 @@ htpasswd -c /home/utente/passwords luca

      3.7.3   Configurazione di + "#id45">3.7.3   Configurazione di Apache

      Ora possiamo passare alla configurazione vera e @@ -2126,7 +2335,7 @@ require valid-user

      3.8   Cavets

      + "#id46">3.8   Cavets

      Problemi di cache:

      @@ -2151,7 +2360,7 @@ require valid-user

      4   Domain Name System

      + "#id47">4   Domain Name System

      Domain Name System (spesso indicato con DNS) e' un servizio utilizzato per la risoluzione di nomi di host in @@ -2176,7 +2385,7 @@ require valid-user

      4.1   Nomi di dominio

      + "#id48">4.1   Nomi di dominio

      Un nome a dominio e' costituito da una serie di stringhe separate da punti, ad esempio it.wikipedia.org. A @@ -2198,7 +2407,7 @@ require valid-user

      4.2   Tipologie di record

      + "#id49">4.2   Tipologie di record

      Ad un nome DNS possono corrispondere diversi tipi di informazioni. Per questo motivo, esistono diversi tipi di @@ -2253,7 +2462,7 @@ require valid-user

      4.3   Utilizzo

      + "#id50">4.3   Utilizzo

      I computer vengono identificati in rete grazie agli indirizzi IP, questi pero' non sono comodi per gli @@ -2270,7 +2479,7 @@ PING www.l.google.com (74.125.43.104) 56(84) bytes of data.

      4.4   Risoluzione dei nomi di + "#id51">4.4   Risoluzione dei nomi di dominio

      Ci sono vari strumenti per interrogare i server DNS e @@ -2335,7 +2544,7 @@ ns4.mydomain.com. 96208 IN A 63.251.83.74

      4.5   Dig

      + "#id52">4.5   Dig

      Vediamo alcune opzioni utili nell'utilizzo di dig per @@ -2412,7 +2621,7 @@ l.google.com. 80856 IN NS g.l.google.com.

      5   DNSmasq

      + "#id53">5   DNSmasq

      Dnsmasq puo' svolgere le funzioni di un DNS cache / forwarder e un server DHCP caratterizzato dalla facilita' di @@ -2451,7 +2660,7 @@ l.google.com. 80856 IN NS g.l.google.com.

      6   Samba

      + "#id54">6   Samba

      Samba e' un progetto libero che fornisce servizi di condivisione di file e stampanti a client SMB/CIFS.

      @@ -2472,7 +2681,7 @@ l.google.com. 80856 IN NS g.l.google.com.

      6.1   Pacchetti

      + "#id55">6.1   Pacchetti

      Pacchetti da installare per utilizzare Samba in modalita' client

      6.2   Passwords e + "#id56">6.2   Passwords e autenticazione

      Per poter configurare Samba in modo che usi un sistema @@ -2586,7 +2795,7 @@ dpkg-reconfigure samba-common

      6.3   Creazione Utenti

      + "#id57">6.3   Creazione Utenti

      Creiamo per primo l'utente sotto GNU/Linux, facendo attenzione a non dargli una shell di sistema. Gli @@ -2623,7 +2832,7 @@ smbpasswd sambo

      6.4   Creare la + "#id58">6.4   Creare la condivisione

      La condivisione altro non e' che una cartella sul server @@ -2650,7 +2859,7 @@ smbpasswd sambo

      6.4.1   Sicurezza: permessi di + "#id59">6.4.1   Sicurezza: permessi di esecuzione sul server

      Bisognerebbe notare sul server i permessi di @@ -2680,7 +2889,7 @@ smbpasswd sambo

      6.5   Configurazione + "#id60">6.5   Configurazione dell'applicativo Samba vero e proprio.

      Avendo preparato gli utenti (ancora una volta: non si @@ -2720,7 +2929,7 @@ smbpasswd sambo

      6.6   Testare il Servizio

      + "#id61">6.6   Testare il Servizio

      Come testare il servizio

      @@ -2760,7 +2969,7 @@ mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo

      7   Firewall

      + "#id62">7   Firewall

      In Informatica, nell'ambito delle reti di computer, un firewall (termine inglese dal significato originario di @@ -2810,7 +3019,7 @@ mount -t smbfs //localhost/sambo_share /mnt/sambo_mount/ --verbose -o user=sambo