  Firewalling and Proxy Server HOWTO
  Mark Grennan, mark@grennan.com
  v0.80, Feb. 26, 2000

  Questo documento si propone di insegnare le basi dei sistemi firewall
  e di fornire alcuni dettagli sull'impostazione dei firewall per fil
  tering e proxy su un sistema Linux. All'indirizzo _h_t_t_p_:_/_/_w_w_w_._g_r_e_n_
  _n_a_n_._c_o_m_/_F_i_r_e_w_a_l_l_-_H_O_W_T_O_._h_t_m_l  disponibile una versione HTML di questo
  documento.
  ______________________________________________________________________

  Indice Generale



  1. Introduzione
     1.1 Commenti
     1.2 Liberatoria
     1.3 Copyright (in inglese)
     1.4 Perch ho scritto questo documento
     1.5 Letture aggiuntive

  2. Capire i Firewall
     2.1 Politiche di Firewall
        2.1.1 Come determinare una politica per la sicurezza
     2.2 Tipi di Firewall
        2.2.1 Firewall Filtranti (Packet Filtering Firewall)
        2.2.2 Proxy Server
        2.2.3 Application Proxy
        2.2.4 Proxy SOCKS

  3. Architettura dei Firewall
     3.1 Architettura Dial-up
     3.2 Architettura a Router singolo
     3.3 Server Proxy e Firewall
     3.4 Configurazioni Internet ridondanti

  4. Impostazione del firewall Linux filtrante
     4.1 Requisiti Hardware

  5. Requisiti Software
     5.1 Selezionare un Kernel
     5.2 Selezionare un server proxy

  6. Preparare il sistema Linux
     6.1 Compilazione del Kernel
     6.2 Configurazione di due schede di rete
     6.3 Configurazione degli indirizzi di rete
     6.4 Verifica del funzionamento della rete
     6.5 Sicurezza del Firewall

  7. Impostazione del filtraggio IP (IPFWADM)
  8. Impostazione del filtraggio IP (IPCHAINS)
  9. Installare un proxy trasparente SQUID
  10. Installare il proxy server TIS
     10.1 Reperire il software
     10.2 Compilare TIS FWTK
     10.3 Installare TIS FWTK
     10.4 Configurare TIS FWTK
        10.4.1 Il file netperm-table
        10.4.2 The /etc/services file

  11. Il proxy server SOCKS
     11.1 Impostare il server proxy
     11.2 Configurare il Proxy Server
        11.2.1 Il file di accesso
        11.2.2 Il file di instradamento
        11.2.3 DNS presente dietro il Firewall
     11.3 Lavorare con un Proxy Server
        11.3.1 Unix
        11.3.2 MS Windows con Trumpet Winsock
        11.3.3 Come far funzionare il Proxy Server con i pacchetti UDP
     11.4 Svantaggi dei Proxy Server

  12. Configurazioni avanzate
     12.1 Una rete ampia con enfasi sulla sicurezza
        12.1.1 Impostazione della rete
        12.1.2 Impostazione del Proxy

  13. Semplificare la gestione
     13.1 Tool per il firewall
     13.2 Tool generici

  14. Raggirare un firewall proxy
  15. APPENDICE A - Script di esempio
     15.1 Script RC usando GFCC
     15.2 GFCC script
     15.3 Script RC senza GFCC

  16. APPENDICE B - Script RC VPN per la RedHat
  17. Nota sulla traduzione


  ______________________________________________________________________

  11..  IInnttrroodduuzziioonnee

  David Rudder ha scritto la versione originale di questo Firewall-
  HOWTO, oramai molte lune fa, e vorrei ancora ringraziarlo per avermi
  permesso di aggiornare il suo lavoro.

  Vorrei inoltre ringraziare Ian Gough per la gentile assistenza
  prestata a codesto autore dislessico.

  I firewall hanno guadagnato una grande popolarit come ultima novit
  in fatto di sicurezza in Internet. Come accade per tutte le cose che
  hanno successo, insieme alla fama sono iniziate le incomprensioni.
  Questo HOWTO spiegher i concetti base su cosa sia un firewall e come
  impostarne uno.

  Personalmente sto utilizzando il kernel 2.2.13 e la RedHat 6.1 per lo
  sviluppo di questo howto, e quindi gli esempi qui presenti sono basati
  su questa distribuzione.  Se nella propria distribuzione si trovano
  delle differenze, invito ad informarmi via email cos provveder ad
  aggiornare il documento.


  11..11..  CCoommmmeennttii

  Qualsiasi commento  pi che benvenuto. SSIIEETTEE PPRREEGGAATTII DDII CCOOMMUUNNIICCAARREE
  OOGGNNII IINNEESSAATTTTEEZZZZAA CCOONNTTEENNUUTTAA IINN QQUUEESSTTOO DDOOCCUUMMEENNTTOO!!!!!! Sono un essere umano
  e come tale incline a commettere degli errori. Se ne riscontrate,
  renderli noti  nel mio interesse. Cercher di rispondere a tutte le
  e-mail, ma poich sono molto occupato, non offendetevi se non potr
  farlo.

  _I_l _m_i_o _i_n_d_i_r_i_z_z_o _e_m_a_i_l _ mmaarrkk@@ggrreennnnaann..ccoomm <<mailto:mark@grennan.com>


  11..22..  LLiibbeerraattoorriiaa

  NNOONN SSOONNOO RREESSPPOONNSSAABBIILLEE DDII EEVVEENNTTUUAALLII DDAANNNNII CCAAUUSSAATTII DDAA AAZZIIOONNII IINNTTRRAAPPRREESSEE
  BBAASSAANNDDOOSSII SSUULL CCOONNTTEENNUUTTOO DDII QQUUEESSTTOO DDOOCCUUMMEENNTTOO. Deve essere visto come
  un'introduzione alle modalit di funzionamento dei firewall e dei
  proxy server. Non sono, e non pretendo di esserlo, un esperto di
  sicurezza. ;-) Sono solo una persona che ha letto troppo e che ama i
  computer pi di molta altra gente. Vi prego di capire che sto
  scrivendo questo documento per aiutare la gente ad informarsi
  sull'argomento, ma non sono pronto a scommettere la mia vita
  sull'accuratezza del suo contenuto.


  11..33..  CCooppyyrriigghhtt ((iinn iinngglleessee))

  Unless otherwise stated, Linux HOWTO documents are copyrighted by
  their respective authors. Linux HOWTO documents may be reproduced and
  distributed in whole or in part, in any medium physical or electronic,
  as long as this copyright notice is retained on all copies. Commercial
  redistribution is allowed and encouraged; however, the author would
  like to be notified of any such distributions.

  All translations, derivative works, or aggregate works incorporating
  any Linux HOWTO documents must be covered under this copyright notice.
  That is, you may not produce a derivative work from a HOWTO and impose
  additional restrictions on its distribution. Exceptions to these rules
  may be granted under certain conditions; please contact the Linux
  HOWTO coordinator.

  In short, we wish to promote dissemination of this information through
  as many channels as possible. However, we do wish to retain copyright
  on the HOWTO documents, and would like to be notified of any plans to
  redistribute the HOWTOs.

  If you have any questions, please email me. (See Above)


  11..44..  PPeerrcchh hhoo ssccrriittttoo qquueessttoo ddooccuummeennttoo

  Diversi anni fa, mentre lavoravo per lo Stato dell'Oklahoma come loro
  "Amministratore Internet" mi  stato chiesto di "mettere lo Stato su
  Internet", in pratica senza fondi (nota: al tempo non c'era un tale
  titolo, ero solamente un tipo che faceva tutto il lavoro).  Il miglior
  modo affinch questa cosa si potesse realizzare era di usare quanto
  pi software libero e hardware di recupero fosse possibile.  Linux e
  una manciata di vecchi 486 era tutto quello di cui disponevo.

  I firewall commerciali sono MOLTO sovrapprezzo e la documentazione sul
  loro funzionamento  considerata quasi top secret. Ho scoperto che
  crearmi da solo un firewall era praticamente impossibile.

  Al mio lavoro successivo mi  stato chiesto di inserire un firewall.
  Linux aveva appena aggiunto il codice per l'implementazione, cos
  ancora senza fondi, ho cominciato a realizzarne uno con Linux. Sei
  mesi dopo il mio firewall era a posto e questo documento  stato
  aggiornato.


  11..55..  LLeettttuurree aaggggiiuunnttiivvee


    The Linux Networking Overview HOWTO
     <http://sunsite.unc.edu/mdw/HOWTO/Networking-Overview-HOWTO.html>

    The Ethernet HOWTO <http://sunsite.unc.edu/mdw/HOWTO/Ethernet-
     HOWTO.html>

    IPchains Firewalling made Easy! <http://ipchains.nerdherd.org/>

    Linux Network Address Translation
     <http://www.linas.org/linux/load.html>

    The Net-3 HOWTO <http://sunsite.unc.edu/mdw/HOWTO/NET-3-HOWTO.html>

    The NET-PPP HOWTO <http://sunsite.unc.edu/mdw/HOWTO/PPP-HOWTO.html>

    The easiest way to create Virtual Tunnels over TCP/IP networks
     <http://vtun.netpedia.net/>

  [ Altre URL sono da collocare qui ]



  22..  CCaappiirree ii FFiirreewwaallll

  Un firewall ("parete tagliafuoco")  una struttura intesa ad impedire
  la diffusione del fuoco.  Negli edifici i firewall sono i muri in
  mattone che dividono completamente le sezioni. In un auto un firewall
   la parete metallica che separa l'abitacolo dal motore.

  I firewall di Internet sono intesi per tenere le fiamme dell'inferno
  di Internet fuori dalla propria LAN privata, oppure per conservare i
  membri della propria LAN puri e casti negandogli l'accesso a tutte le
  tentazioni della diabolica Internet. ;-)

  Il primo computer firewall era un host Unix non instradante con
  connessioni a due reti diverse. Una scheda di rete era connessa ad
  Internet e l'altra ad una LAN privata.  Per raggiungere Internet dalla
  rete privata, si doveva effettuare il login sul server firewall
  (Unix).  Poi si utilizzavano le risorse del sistema per accedere ad
  Internet.  Per esempio, si poteva usare X-Windows per lanciare il
  browser Netscape nel sistema firewall e poi esportare il display sulla
  propria workstation. Il browser in funzione sul firewall aveva quindi
  accesso ad entrambe le reti.

  Questo tipo di sistema "dual homed" (un sistema con due connessioni di
  rete)  una gran cosa se ci si pu FIDARE DI TUTTI i propri utenti.
  Si potrebbe quindi semplicemente configurare un sistema Linux e dare
  un account a chiunque abbia bisogno di accedere ad Internet. Con
  questa impostazione, il solo computer nella propria rete privata che
  sa qualcosa del mondo esterno  il firewall. Nessuno pu scaricare
  qualcosa sulla workstation personale, si deve prima scaricare un file
  sul firewall e poi scaricarlo dal firewall nella propria workstation.

  NOTA IMPORTANTE: il 99% delle irruzioni iniziano guadagnando l'accesso
  a livello utente sul sistema da attaccare.  Per questo motivo non
  raccomando questo tipo di firewall. Inoltre  molto limitante.


  22..11..  PPoolliittiicchhee ddii FFiirreewwaallll


  Non si creda che il firewall sia tutto quello di cui si ha bisogno.
  _P_e_r _p_r_i_m_a _c_o_s_a _s_i _d_e_c_i_d_a_n_o _d_e_l_l_e _p_o_l_i_t_i_c_h_e.

  I firewall sono usati con due scopi:


  1. tenere fuori la gente (worm / cracker).

  2. tenere dentro la gente (dipendenti / bambini).

  Quando ho iniziato a lavorare sui firewall mi sorpresi di scoprire che
  la compagnia per la quale lavoravo era pi interessata a "spiare" i
  propri dipendenti che a tenere fuori dalla propria rete i cracker.

  Almeno nel mio stato (Oklahoma) i datori di lavoro hanno il diritto di
  cominciare a controllare le chiamate telefoniche e l'attivit Internet
  non appena informati i propri dipendenti.

  Il Grande Fratello non  il governo. Grande Fratello = Grande
  Business.

  Non mi si fraintenda.  La gente dovrebbe lavorare, non giocare mentre
   al lavoro. E sento che l'etica nel lavoro si sta sgretolando.
  Comunque, ho osservato anche che i tipi del management sono i primi ad
  abusare delle regole da loro imposte.  Ho visto continui rimproveri
  diretti a lavoratori perch cercavano, per andare al lavoro, gli
  itinerari dei bus su Internet, quando poi gli stessi manager
  spendevano ore cercando ristoranti raffinati o nightclub per ricevere
  potenziali clienti.

  La mia soluzione per questo tipo di abusi consiste nel pubblicare su
  una pagina Web, a disposizione di chiunque, i log del firewall.

  L'affare sicurezza pu essere spaventoso. Se amministri un firewall,
  guardati le spalle.


  22..11..11..  CCoommee ddeetteerrmmiinnaarree uunnaa ppoolliittiiccaa ppeerr llaa ssiiccuurreezzzzaa

  Ho consultato diversa documentazione di rilievo su come creare una
  politica per la sicurezza.  Dopo anni di esperienza posso adesso
  affermare: non si creda ad una parola.  Creare una politica 
  semplice.



  1. determinare quali servizi si ha bisogno

  2. determinare il gruppo di persone che si vuole servire

  3. determinare a quali servizi ogni gruppo ha necessit di accedere

  4. per ciascun gruppo descrivere come si potrebbe rendere sicuro il
     servizio

  5. scrivere un'espressione che renda tutte le altre forme di accesso
     una violazione

  La politica diventer sempre pi complicata nel tempo, per ora non si
  provi a coprire troppi aspetti.  La si realizzi semplice e chiara.


  22..22..  TTiippii ddii FFiirreewwaallll

  Esistono due tipologie di firewall.


  1. Firewall Filtranti - che bloccano i pacchetti di rete selezionati.

  2. Proxy Server (talvolta detti firewall) - che fanno le connessioni
     di rete per voi.


  22..22..11..  FFiirreewwaallll FFiillttrraannttii ((PPaacckkeett FFiilltteerriinngg FFiirreewwaallll))

  Il Packet Filtering  il tipo di firewall presente nel kernel Linux.

  Un firewall filtrante funziona a livello di rete.   permesso ai dati
  di lasciare il sistema solo se lo permettono le regole del firewall.
  Come i pacchetti arrivano sono poi filtrati in base alle informazioni
  sul tipo, sull'indirizzo di provenienza, sull'indirizzo di
  destinazione e sulle porte contenute in ciascuno di essi.

  Molti router di rete hanno l'abilit di effettuare alcuni servizi di
  firewall. Un firewall filtrante pu essere pensato come un tipo
  particolare di router. Per questo motivo  necessaria una profonda
  conoscenza della struttura dei pacchetti IP per lavorarci.

  Poich sono analizzati e registrati pochissimi dati, i firewall
  filtranti occupano meno la CPU, e creano minor latenza nella propria
  rete.


  I firewall filtranti non forniscono un controllo a livello di
  password. Gli utenti non possono identificarsi.  La sola identit che
  un utente ha consiste nel numero IP assegnato alla sua macchina.  Ci
  pu essere un problema se si intende usare DHCP (assegnazione dinamica
  dell'IP).  Poich le regole sono basate sui numeri IP, dovranno essere
  aggiustate non appena saranno assegnati nuovi numeri.  Non saprei come
  automatizzare questo processo.

  I firewall filtranti sono pi trasparenti per gli utenti.  L'utente
  non deve impostare regole nella sua applicazione per utilizzare
  Internet. Con la maggioranza dei proxy server questo non  vero.


  22..22..22..  PPrrooxxyy SSeerrvveerr

  I Proxy sono principalmente usati per controllare, o monitorare, il
  traffico. Alcuni proxy di applicazioni possono fare la cache dei dati
  richiesti, ci abbassa le richieste di banda e diminuisce il tempo
  d'accesso per il successivo utente che vuole accedere a quegli stessi
  dati.  Inoltre fornisce un'evidenza inequivocabile su quanto  stato
  trasferito.

  Esistono due tipi di proxy server.

  1. Application Proxy (Proxy di Applicazione) - che fanno il lavoro al
     nostro posto.

  2. Proxy SOCKS  - che "incrociano" le comunicazioni.


  22..22..33..  AApppplliiccaattiioonn PPrrooxxyy


  Il miglior esempio  quello di una persona che effettua un telnet su
  un altro computer e poi da qui al resto del mondo.  Solo con un proxy
  server di applicazione il processo  automatizzato.  Non appena si fa
  telnet verso l'esterno il client per prima cosa vi manda al proxy.  Il
  proxy poi si connette al server che si  richiesto (il mondo esterno)
  e restituisce i dati.

  Poich i proxy server gestiscono tutte le comunicazioni, possono
  registrare qualsiasi cosa vogliono (si vuole).  Per i proxy HTTP (web)
  ci pu includere qualsiasi URL che si visita, per i proxy FTP
  qualsiasi file si scarica.  Possono anche filtrare parole
  "inappropriate" dai siti che si visitano o controllare la presenza di
  virus.

  Gli application proxy server possono autenticare gli utenti. Prima di
  effettuare una connessione verso l'esterno, il server pu richiedere
  all'utente, per prima cosa, di effettuare il login.  Ad un
  utilizzatore del web ci comporter la necessit di un login per ogni
  sito che desidera visitare.


  22..22..44..  PPrrooxxyy SSOOCCKKSS

  Un server SOCKS  molto simile ad una vecchia switch board.
  Semplicemente incrocia, attraverso il sistema, i "cavi" della propria
  connessione con un'altra connessione esterna.

  La maggior parte dei server SOCKS funziona solamente con connessioni
  di tipo TCP e come i firewall filtranti non fornisco l'autenticazione
  degli utenti. Possono comunque registrare dove si  connesso ogni
  utente.


  33..  AArrcchhiitteettttuurraa ddeeii FFiirreewwaallll


  Si pu strutturare la propria rete in un sacco di modi per proteggere
  il proprio sistema usando un firewall.

  Se si ha una connessione dedicata ad Internet attraverso un router, si
  potrebbe collocare il router direttamente nel proprio sistema
  firewall.  Oppure si potrebbe passare attraverso un hub
  ("concentratore") per fornire server a pieno accesso fuori dal proprio
  firewall.


  33..11..  AArrcchhiitteettttuurraa DDiiaall--uupp

  Probabilmente si sta facendo uso di un servizio dialup, quale una
  linea ISDN.  In questo caso si potrebbe utilizzare una terza scheda di
  rete per fornire un DMZ filtrato. Questo d il pieno controllo sui
  propri servizi Internet e li separa dalla propria rete normale.


                    __________
     _/\__/\_      |          |          _______________
    |        |     | Sistema  |  (LAN)  |               |
   / Internet \----| Firewall |--(HUB)--| Workstation/s |
   \_  _  _  _/    |__________|         |_______________|
     \/ \/ \/           |
                      (DMZ)
                      (HUB)



  33..22..  AArrcchhiitteettttuurraa aa RRoouutteerr ssiinnggoolloo

  Caso in cui  presente, tra voi ed Internet, un router o un modem.  Se
  si possiede il router si potrebbero impostare alcune rigide regole di
  filtraggio, altrimenti se il router appartiene al proprio ISP, si
  potrebbe richiederne l'inserimento.


                    ________           __________
     _/\__/\_      | Router |         |          |          _______________
    |        |     | oppure |  (DMZ)  | Sistema  |  (LAN)  |               |
   / Internet \----| Modem  |--(HUB)--| Firewall |--(HUB)--| Workstation/s |
   \_  _  _  _/    |________|    |    |__________|         |_______________|
     \/ \/ \/                    |
                             (Server)
                             (esterno)



  33..33..  SSeerrvveerr PPrrooxxyy ee FFiirreewwaallll

  Se si vuole monitorare dove vanno gli utenti della propria rete e se
  la rete  piccola, si pu integrare un server proxy nel firewall.  Gli
  ISP qualche volta lo fanno per stilare una lista degli interessi dei
  propri clienti da poter rivendere ad agenzie di marketing.



                     __________
      _/\__/\_      | Proxy /  |          _______________
     |        |     | Sistema  |  (LAN)  |               |
    / Internet \----| Firewall |--(HUB)--| Workstation/s |
    \_  _  _  _/    |__________|         |_______________|
      \/ \/ \/



  Si pu collocare il server proxy nella propria LAN come si vuole.  In
  questo caso il firewall dovrebbe per contenere delle regole che
  consentano la connessione ad Internet, e per i servizi che intende
  fornire, solo al server proxy.  In questo modo gli utenti potranno
  accedere ad Internet solamente attraverso il proxy.


                    __________
     _/\__/\_      |          |          _______________
    |        |     | Sistema  |  (LAN)  |               |
   / Internet \----| Firewall |--(HUB)--| Workstation/s |
   \_  _  _  _/    |__________|    |    |_______________|
     \/ \/ \/                      |     ______________
                                   |    |              |
                                   +----| Server Proxy |
                                        |______________|



  33..44..  CCoonnffiigguurraazziioonnii IInntteerrnneett rriiddoonnddaannttii

  Se si sta per avviare un servizio simile a YAHOO, o forse Slashdot, si
  potrebbe aver bisogno di organizzare il sistema utilizzando router
  ridondanti e firewall (consultare l'High Availability HowTo).
  Utilizzando tecniche DNS round-robin oppure load-balancing di server,
  si pu creare un servizio 100% uptime.



     _/\__/\_                                     _/\__/\_
    |        |                                   |        |
   /  ISP #1  \______                 (WAN)_____/ Partner  \
   \_  _  _  _/      |                (HUB)     \_  _  _  _/
     \/ \/ \/        |               ___|____     \/ \/ \/
                   __|___           |_______ |
     _/\__/\_     |_____ |         |Sistema ||          ______
    |        |   |      ||  (DMZ)  |Firewall||  (LAN)  |      |
   /  ISP #2  \--|Router||--(HUB)--|  (VPN) ||--(HUB)--| WS/s |
   \_  _  _  _/  |______|     |    |________|     |    |______|
     \/ \/ \/                 |         |         |     ______
            |            (Server)   (Server)      |    |      |
    ------  |            (esterno) (condivisi)    +----|Proxy |
   | WS/s | |                                          |______|
   | VPN  |-+
   |______|



  E' facile che la propria rete possa sfuggire di mano. Si controlli
  ogni connessione.  E' sufficiente un utente con un modem per
  compromettere la LAN.



  44..  IImmppoossttaazziioonnee ddeell ffiirreewwaallll LLiinnuuxx ffiillttrraannttee


  44..11..  RReeqquuiissiittii HHaarrddwwaarree


  I firewall filtranti non richiedono hardware particolare, sono solo un
  po' pi complessi di un semplice router.

  Tutto quello di cui si ha bisogno :

  1. un 486-DX66 con 32 mega di memoria

  2. un disco fisso da 250 mega (meglio 500)

  3. connessioni di rete (Schede LAN, Porte Seriali, Wireless?)

  4. monitor e tastiera

  Con alcuni sistemi utilizzando la console su porta seriale, si possono
  pure eliminare il monitor e la tastiera.  Se si ha bisogno di un
  server proxy che gestisca parecchio traffico, si dovrebbe acquistare
  il sistema pi potente possibile.  Questo perch per ogni utente che
  si connette al sistema, sar creato un nuovo processo. Se si hanno 50
  o pi utenti suppongo che si avr bisogno di:


  1. un Pentium II con 64 mega di memoria

  2. un disco fisso da 2 giga per salvare tutti i log

  3. due connessioni di rete

  4. monitor e tastiera

  Le connessioni di rete possono essere di qualsiasi tipo (schede NIC,
  ISDN e anche modem).


  55..  RReeqquuiissiittii SSooffttwwaarree

  55..11..  SSeelleezziioonnaarree uunn KKeerrnneell


  Per creare un firewall filtrante non  necessario alcun software
  particolare. Basta Linux.  Al momento sto utilizzando la RedHat 6.1.

  La base del firewall in Linux  stata modificata diverse volte.  Se si
  sta utilizzando un kernel vecchio (1.0.x o precedente) ci si procuri
  una nuova copia.  Queste versioni usano ipfwadm
  (hhttttpp::////wwwwww..xxooss..nnll//lliinnuuxx//iippffwwaaddmm//) e non sono pi supportate.

  Se si sta utilizzando la 2.2.13 o pi recente si star facendo uso di
  ipchains, sviluppato da hhttttpp::////wwwwww..rruussttccoorrpp..ccoomm//lliinnuuxx//iippcchhaaiinnss//.

  Se invece si utilizza il nuovo kernel 2.4 esiste una nuova utility per
  il firewall con diverse nuove caratteristiche.  Scriver presto
  qualcosa a riguardo.


  55..22..  SSeelleezziioonnaarree uunn sseerrvveerr pprrooxxyy

  Se si vuole impostare un server proxy si avr bisogno di uno dei
  seguenti pacchetti:


  1. Squid

  2. The TIS Firewall Toolkit (FWTK)

  3. SOCKS


  Squid  un pacchetto eccellente ed  in grado di sfruttare il proxy
  trasparente di Linux.  Descriver di seguito come impostare questo
  server.

  Al momento della stesura di questo documento, Network Associates
  <http://www.networkassociates.com/> e Trusted Information System (TIS)
  si sono uniti, quindi si visitino i loro siti per ottenere
  informazioni sui cambiamenti.  Nel frattempo, il toolkit dovrebbe
  essere ancora disponibile, hhttttpp::////wwwwww..ttiiss..ccoomm//rreesseeaarrcchh//ssooffttwwaarree//
  <<http://www.tis.com/research/software/>.

  Trusted Information System ha reso disponibile una collezione di
  programmi realizzati per facilitare la gestione del firewall.  Con
  questi strumenti  possibile impostare un daemon per ogni servizio
  (WWW, telnet, ecc.) che si intende utilizzare.


  66..  PPrreeppaarraarree iill ssiisstteemmaa LLiinnuuxx

  Si installi il sistema Linux nel modo pi compatto possibile. La mia
  installazione presentava una configurazione di tipo server quindi ho
  provveduto a disabilitare i servizi non necessari nel file
  /etc/inetd.conf.  Per una maggior sicurezza si dovrebbero
  disinstallare i servizi inutili.

  Siccome la maggior parte delle distribuzioni non fornisce in genere un
  kernel efficiente per le proprie esigenze, sar necessario compilarne
  uno proprio. Questa operazione sarebbe meglio effettuarla su un
  computer diverso dal firewall.  Se si installa sul firewall un
  compilatore C e le utilit, ci si ricordi di rimuoverle dopo aver
  completato la configurazione del kernel.



  66..11..  CCoommppiillaazziioonnee ddeell KKeerrnneell


  Si parta con un'installazione minima della propria distribuzione
  Linux.  Meno software si installa e meno buchi, backdoor e/o bug ci
  saranno ad introdurre problemi di sicurezza nel proprio server.

  Si prenda un kernel stabile.  Io sto utilizzando, per il mio sistema,
  la 2.2.13.  Quindi questa documentazione  basata sulle sue
  impostazioni.

   necessario ricompilare il kernel di Linux con le opzioni
  appropriate.  Se non si  mai ricompilato il proprio kernel prima
  d'ora, si dovrebbe leggere il Kernel HOWTO, l'Ethernet HOWTO e il
  NET-2 HOWTO.

  Qui ci sono le impostazioni di rete che so per certo come funzionanti.
  Ne ho marcate alcune con un ?.  Se si  intenzionati ad utilizzarle,
  le si abilitino pure.  Per modificare le impostazioni del mio kernel
  utilizzo "make menuconfig".



      <*> Packet socket
      [ ] Kernel/User netlink socket
      [*] Network firewalls
      [ ] Socket Filtering
      <*> Unix domain sockets
      [*] TCP/IP networking
      [ ] IP: multicasting
      [*] IP: advanced router
      [ ] IP: kernel level autoconfiguration
      [*] IP: firewalling
      [?] IP: always defragment (required for masquerading)
      [?] IP: transparent proxy support
      [?] IP: masquerading
      --- Protocol-specific masquerading support will be built as modules.
      [?] IP: ICMP masquerading
      --- Protocol-specific masquerading support will be built as modules.
      [ ] IP: masquerading special modules support
      [*] IP: optimize as router not host
      < > IP: tunneling
      < > IP: GRE tunnels over IP
      [?] IP: aliasing support
      [*] IP: TCP syncookie support (not enabled per default)
      --- (it is safe to leave these untouched)
      < > IP: Reverse ARP
      [*] IP: Allow large windows (not recommended if <16Mb of memory)
      < > The IPv6 protocol (EXPERIMENTAL)
      ---
      < > The IPX protocol
      < > Appletalk DDP
      < > CCITT X.25 Packet Layer (EXPERIMENTAL)
      < > LAPB Data Link Driver (EXPERIMENTAL)
      [ ] Bridging (EXPERIMENTAL)
      [ ] 802.2 LLC (EXPERIMENTAL)
      < > Acorn Econet/AUN protocols (EXPERIMENTAL)
      < > WAN router
      [ ] Fast switching (read help!)
      [ ] Forwarding between high speed interfaces
      [ ] PU is too slow to handle full bandwidth
      QoS and/or fair queueing  --->



  Dopo aver completato tutte le impostazioni sar necessario
  ricompilare, reinstallare il kernel e riavviare.  Io utilizzo il
  comando:

  make dep;make clean;make bzlilo;make modules;make modules_install;init
  6 per fare tutto in un colpo solo.


  66..22..  CCoonnffiigguurraazziioonnee ddii dduuee sscchheeddee ddii rreettee

  Se il proprio computer possiede due schede di rete, molto
  probabilmente sar necessario inserire un'istruzione "append" nel
  proprio file /etc/lilo.conf, per specificare l'IRQ e l'indirizzo di
  entrambe le schede. L'istruzione presente nel mio lilo  la seguente:

  append="ether=12,0x300,eth0 ether=15,0x340,eth1"



  66..33..  CCoonnffiigguurraazziioonnee ddeeggllii iinnddiirriizzzzii ddii rreettee


  Siamo arrivati finalmente alla parte pi divertente dell'impostazione.
  Non sto per addentrarmi ad approfondire come impostare una LAN, per
  risolvere eventuali problemi si legga il Networking-HOWTO.

  L'obiettivo  di fornire il sistema firewall di due connessioni di
  rete, una diretta verso Internet (versante non sicuro) e una verso la
  LAN (versante sicuro).

  Ad ogni modo, ci sono un paio di decisioni da prendere.


  1. Si vogliono utilizzare per la propria rete locale indirizzi IP
     reali o qualcosa di differente ?

  2. L'indirizzo IP  statico oppure  assegnato dall'ISP ?

  Dal momento che non si desidera che Internet abbia accesso ad alcuna
  parte della rete privata, non  necessario utilizzare degli "indirizzi
  reali".  Si potrebbero prendere degli indirizzi qualsiasi per la
  propria rete LAN, ma ci non  raccomandato.  Se i dati dovessero
  essere instradati fuori dalla LAN, potrebbero giungere ad una porta di
  un altro sistema.

  Esistono comunque molti intervalli di indirizzi internet riservati
  appositamente per le reti private.

  Tra questi c' 192.168.1.xxx che utilizzeremo nei nostri esempi.

  Sar inoltre necessario utilizzare l'IP masquerading.  Con questo
  procedimento il firewall far proseguire i pacchetti e, per farli
  viaggiare in Internet, li modificher utilizzando un indirizzo IP
  "REALE".

  Utilizzando questi indirizzi IP non-instradabili la propria rete sar
  pi sicura.  I router internet non invieranno pacchetti con questi
  indirizzi.

  A questo punto potrebbe essere utile leggere l'IP Masquerading HOWTO.


              24.94.1.123  __________    192.168.1.1
        _/\__/\_        \ |          | /           _______________
       |        |        \| Sistema  |/           |               |
      / Internet \--------| Firewall |------------| Workstation/s |
      \_  _  _  _/        |__________|            |_______________|
        \/ \/ \/



  E' necessario possedere un indirizzo IP "reale" da assegnare alla
  scheda di rete corrispondente ad Internet.  Questo indirizzo pu
  essere assegnato in modo permanente (indirizzo IP statico) oppure al
  momento della connessione alla rete attraverso il processo PPP.

  Si dovranno quindi assegnare gli indirizzi IP alla rete locale, ad
  esempio, 192.168.1.1 alla scheda di rete corrispondente alla LAN.
  Questo sar il gateway di default. A tutte le altre macchine nella
  rete protetta (LAN) si potr assegnare un numero appartenente
  all'intervallo 192.168.1.xxx (da 192.168.1.2 a 192.168.1.254).

  Io utilizzo la RedHat Linux. Per configurare la rete al momento del
  boot ho aggiunto un file ifcfg-eth1 nella directory
  /etc/sysconfig/network-scripts. Sempre in questa directory si
  potrebbero trovare anche ifcfg-ppp0 o ifcfg-tr0.  Questi file 'ifcfg-'
  sono utilizzati dalla RedHat per configurare e abilitare i dispositivi
  di rete al boot.  Il nome  assegnato in base al tipo di connessione.

  Segue, come esempio, ifcfg-eth1 (seconda scheda ethernet):


      DEVICE=eth1
      IPADDR=192.168.1.1
      NETMASK=255.255.255.0
      NETWORK=192.168.1.0
      BROADCAST=192.168.1.255
      GATEWAY=24.94.1.123
      ONBOOT=yes



  Se si sta per utilizzare una connessione dialup si dia un'occhiata ai
  file ifcfg-ppp0 e chat-ppp0.  Questi file controllano la connessione
  PPP.

  Questo file ifcfg potrebbe essere simile a:


      DEVICE="ppp0"
      ONBOOT="yes"
      USERCTL="no"
      MODEMPORT="/dev/modem"
      LINESPEED="115200"
      PERSIST="yes"
      DEFABORT="yes"
      DEBUG="yes"
      INITSTRING="ATZ"
      DEFROUTE="yes"
      HARDFLOWCTL="yes"
      ESCAPECHARS="no"
      PPPOPTIONS=""
      PAPNAME="LoginID"
      REMIP=""
      NETMASK=""
      IPADDR=""
      MRU=""
      MTU=""
      DISCONNECTTIMEOUT=""
      RETRYTIMEOUT="5"
      BOOTPROTO="none"



  66..44..  VVeerriiffiiccaa ddeell ffuunnzziioonnaammeennttoo ddeellllaa rreettee

  Si cominci impartendo i comandi ifconfig e route. Se si possiedono due
  schede di rete l'output di ifconfig dovrebbe essere simile al
  seguente:



    #ifconfig
    lo        Link encap:Local Loopback
              inet addr:127.0.0.1  Mask:255.0.0.0
              UP LOOPBACK RUNNING  MTU:3924  Metric:1
              RX packets:1620 errors:0 dropped:0 overruns:0
              TX packets:1620 errors:0 dropped:0 overruns:0
              collisions:0 txqueuelan:0

    eth0      Link encap:10Mbps Ethernet  HWaddr 00:00:09:85:AC:55
              inet addr:24.94.1.123 Bcast:24.94.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1000 errors:0 dropped:0 overruns:0
              TX packets:1100 errors:0 dropped:0 overruns:0
              collisions:0 txqueuelan:0
              Interrupt:12 Base address:0x310

    eth1      Link encap:10Mbps Ethernet  HWaddr 00:00:09:80:1E:D7
              inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:1110 errors:0 dropped:0 overruns:0
              TX packets:1111 errors:0 dropped:0 overruns:0
              collisions:0 txqueuelan:0
              Interrupt:15 Base address:0x350



  mentre la propria tabella di instradamento dovrebbe essere:


    #route -n
    Kernel routing table
    Destination     Gateway         Genmask         Flags MSS    Window Use Iface
    24.94.1.0       *               255.255.255.0   U     1500   0       15 eth0
    192.168.1.0     *               255.255.255.0   U     1500   0        0 eth1
    127.0.0.0       *               255.0.0.0       U     3584   0        2 lo
    default         24.94.1.123     *               UG    1500   0       72 eth0



  NNoottaa:: 24.94.1.0  il lato Internet di questo firewall e 192.168.1.0 
  il lato privato.

  Ora  necessario assicurarsi che ogni computer della propria LAN sia
  in grado di effettuare dei ping verso l'indirizzo interno del sistema
  firewall (192.168.1.1 in questo caso).  Se non  possibile, si passi
  nuovamente al NET-2 HOWTO e si lavori ancora un po' sulla rete.

  Dopodich, dal firewall, si provi ad effettuare un ping ad un sistema
  presente in Internet.  Per i miei test utilizzo www.internic.net.  Se
  non funziona, provare con un server del proprio ISP. Se ancora non
  funziona allora parte della propria connessione ad Internet  errata.
  Si dovrebbe essere in grado di connettersi ovunque in Internet dal
  proprio firewall. Si dia un'occhiata all'impostazione del proprio
  gateway di default.  Se si sta utilizzando una connessione dialup si
  faccia un doppio controllo della user ID e della password.  Quindi si
  rilegga il net-2 HOWTO, e si riprovi.

  Ora si provi ad effettuare un ping verso l'indirizzo esterno del
  firewall (24.94.1.123) utilizzando un computer della propria LAN.  Non
  dovrebbe funzionare. Se funziona allora il masquerading o l'IP
  Forwarding sono abilitati, oppure si ha gi qualche filtro di
  pacchetti impostato. Li si disabilitino e si riprovi. E' necessario
  assicurarsi che il filtraggio sia a posto.

  Per i kernel pi recenti della 2.1.102 si pu impartire il comando:

      echo "0" > /proc/sys/net/ipv4/ip_forward



  Se si sta utilizzando un vecchio kernel (PERCH ?) sar necessario
  ricompilare il kernel con il forwarding disabilitato (meglio passare
  ad un kernel pi recente).

  Si provi ad effettuare di nuovo un ping verso l'indirizzo esterno del
  firewall (24.94.1.123), non dovrebbe funzionare.

  Ora si abiliti l'IP forwarding e/o il masquerading, si dovrebbe essere
  in grado, da qualsiasi sistema della LAN, di effettuare dei ping
  ovunque in Internet:


      echo "1" > /proc/sys/net/ipv4/ip_forward



  NNOOTTAA IIMMPPOORRTTAANNTTEE:: Se si utilizzano indirizzi IP "REALI" per la propria
  LAN (non 192.168.1.*) e non si riescono ad effettuare i ping verso
  internet, ma solo verso il lato internet del firewall, allora ci si
  assicuri che il proprio ISP instradi i pacchetti per gli indirizzi
  della propria rete privata.

  Un test di questo problema pu essere effettuato se si ha qualcuno in
  Internet (diciamo un amico che utilizza un provider locale) attraverso
  l'utilizzo del traceroute verso la propria rete. Se il tracciamento si
  blocca con il router del proprio provider allora significa che il
  router non inoltra il proprio traffico.

  Funziona ? Splendido. La fase pi ardua  compiuta. :-)


  66..55..  SSiiccuurreezzzzaa ddeell FFiirreewwaallll

  Un firewall non  di nessuna utilit se lasciato aperto agli attacchi.
  Un "malintenzionato" potrebbe ottenere l'accesso ad un servizio non
  del firewall e modificarlo secondo le proprie esigenze.

  Date un'occhiata al file /etc/inetd.conf, utilizzato per configurare
  inetd, noto anche come "super server".  Esso controlla parecchi demoni
  che attiva nel momento in cui sono richiesti da pacchetti che arrivano
  diretti verso porte "note" ("well known port").

  Si possono disabilitare echo, discard, daytime, chargen, ftp, gopher,
  shell, login, exec, talk, ntalk, pop-2, pop-3, netstat, systat, tftp,
  bootp,  finger, cfinger, time, swat e linuxconfig se presente.

  Per disabilitare un servizio, si aggiunga un # come primo carattere
  della linea corrispondente al servizio.  Una volta concluso, si invii
  un SIG-HUP al processo impartendo ""kkiillll --HHUUPP <<ppiidd>>"", dove <pid>  il
  numero del processo di inetd.  Questo comando obbliga inetd a
  rileggere il suo file di configurazione (inetd.conf) e a riavviarsi
  senza dover spegnere il sistema.

  Si faccia un test effettuando un telnet alla porta 15 (netstat) del
  firewall, se si ottiene dell'output allora non si  disabilitato
  questo servizio.

  telnet localhost 19

  Si pu inoltre creare il file /etc/nologin. Si inserisca qualche linea
  di testo tipo (FILA VIA!).  Quando questo file esiste, login non
  consentir agli utenti di connettersi. Essi vedranno il contenuto di
  questo file ed il loro login sar rifiutato. Solo root potr accedere.

  Se l'utente  root allora il login deve avvenire su una delle tty
  elencate in /etc/securetty.  Fallimenti saranno registrati con
  l'apposita funzione del syslog.  Con presenti entrambi questi
  controlli l'unico modo per accedere al firewall  attraverso la
  console e solo come root.

  MAI e poi MAI effettuare un telnet verso un sistema e accedere come
  ROOT.  Se  necessario accedere in remoto come root utilizzare SSH
  (Secure Shell).  Si potrebbe perfino disabilitare il telnet.

  Se si  davvero paranoici allora si dovrebbe utilizzare lids (Linux
  Intrusion Detect System), una patch di scoperta delle intrusioni per
  il kernel Linux; pu proteggere file importanti evitando che siano
  modificati.  Quando  presente, nessuno (incluso root) pu cambiare i
  file, le directory o sotto-directory protette.  Per modificare i file
  protetti  necessario riavviare il sistema con l'impostazione
  security=1 nel LILO (riavvio in single user mode).


  77..  IImmppoossttaazziioonnee ddeell ffiillttrraaggggiioo IIPP ((IIPPFFWWAADDMM))


  Se si sta utilizzando un kernel 2.1.102 o pi recente passare alla
  sezione riguardante IPCHAINS.

  Nei vecchi kernel l'IP Forwarding  abilitato per default.  Per questo
  motivo la propria rete dovrebbe cominciare vietando l'accesso a
  chiunque e cancellando tutte le regole impostate l'ultima volta.
  Questo frammento di script dovrebbe essere collocato nello script di
  startup della propria rete (/etc/rc.d/init.d/network).


    #
    # Imposta IP packet Accounting e Forwarding
    #
    #   Forwarding
    #
    # Di default NEGA tutti i servizi
    ipfwadm -F -p deny
    # Cancella tutti i comandi
    ipfwadm -F -f
    ipfwadm -I -f
    ipfwadm -O -f



  Ora abbiamo il firewall definitivo. Nulla pu passare.

  Si crei il file /etc/rc.d/rc.firewall. Questo script dovrebbe
  consentire traffico email, Web e DNS. ;-)



  #! /bin/sh
  #
  # rc.firewall
  #
  # Libreria funzioni.
  . /etc/rc.d/init.d/functions

  # avvia configurazione.
  . /etc/sysconfig/network

  # Controlliamo che la rete sia presente
  if [ ${NETWORKING} = "no" ]
  then
          exit 0
  fi
  case "$1" in
    start)
    echo -n "Starting Firewall Services: "
    # Inoltro delle email al proprio server
    /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.10 25
    # Consenti connessione email verso server email esterni
    /sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.10 25 -D 0.0.0.0/0 1024:65535
    # Consenti accesso web al proprio web server
    /sbin/ipfwadm -F -a accept -b -P tcp -S 0.0.0.0/0 1024:65535 -D 192.1.2.11 80
    # Consenti connessioni Web verso server Web esterni
    /sbin/ipfwadm -F -a accept -b -P tcp -S 192.1.2.* 80 -D 0.0.0.0/0 1024:65535
    # Consenti traffico DNS
    /sbin/ipfwadm -F -a accept -b -P udp -S 0.0.0.0/0 53 -D 192.1.2.0/24
    ;;
    stop)
    echo -n "Stooping Firewall Services: "
    ipfwadm -F -p deny
    ;;
    status)
    echo -n "Now do you show firewall stats?"
    ;;
    restart|reload)
          $0 stop
          $0 start
          ;;
    *)
          echo "Usage: firewall {start|stop|status|restart|reload}"
          exit 1
  esac



  NOTA: in questo esempio l'email server  presente all'indirizzo
  192.1.2.10 dove dovrebbe essere in grado di inviare e riceve sulla
  porta 25.

  Il server web  presente all'indirizzo 192.1.2.11. Consentiamo a
  chiunque appartenente alla LAN di accedere ai server web e DNS
  esterni.

  Ci non  perfettamente sicuro, in quanto la porta 80 non dovrebbe
  essere usata come porta web, un hacker acuto potrebbe utilizzarla per
  creare una rete privata virtuale (VPN) attraverso il firewall.  Per
  raggirare questa situazione  necessario impostare un proxy web, e
  consentire solo il proxy attraverso il firewall.  Gli utenti della
  rete LAN devono passare attraverso il proxy per accedere ai server web
  esterni.

  Si potrebbe essere interessati a tenere conto del traffico che passa
  attraverso il firewall.  Il seguente script conta tutti i pacchetti.
  E' possibile aggiungere una o due linee per contare i pacchetti
  diretti solo verso un determinato sistema.



    # Cancella le regole correnti di "conteggio"
    ipfwadm -A -f
    # Conteggio
    /sbin/ipfwadm -A -f
    /sbin/ipfwadm -A out -i -S 192.1.2.0/24 -D 0.0.0.0/0
    /sbin/ipfwadm -A out -i -S 0.0.0.0/0    -D 192.1.2.0/24
    /sbin/ipfwadm -A in  -i -S 192.1.2.0/24 -D 0.0.0.0/0
    /sbin/ipfwadm -A in  -i -S 0.0.0.0/0    -D 192.1.2.0/24



  Se tutto ci di cui si ha bisogno  un firewall filtrante allora ci si
  pu fermare qui.  Si effettuino dei test e se la si goda.


  88..  IImmppoossttaazziioonnee ddeell ffiillttrraaggggiioo IIPP ((IIPPCCHHAAIINNSS))

  Linux ipchains  la riscrittura del codice IPv4 di filtraggio di Linux
  e di ipfwadm, il quale a sua volta  una riscrittura di ipfw della
  BSD, credo.   richiesto per l'amministrazione dei filtri dei
  pacchetti IP nei kernel Linux versione 2.1.102 e successivi.

  Il vecchio codice non gestisce i frammenti, ha contatori 32-bit
  (almeno su Intel), non consente la specificazione di protocolli che
  non siano TCP, UDP o ICMP, non pu effettuare grossi cambiamenti
  atomicamente, non  possibile specificare regole inverse, ha alcune
  bizzarrie, e pu essere difficile da utilizzare (incline a far
  commettere errori all'utente). Cos almeno secondo l'autore.

  Non mi accingo ad approfondire come gestire un firewall con IPChains
  in quanto esiste un'ECCELLENTE!! HOWTO all'indirizzo
  http://www.rustcorp.com/linux/ipchains/HOWTO.html
  <http://www.rustcorp.com/linux/ipchains/HOWTO.html>.

  Si lavora con le catene per nome. Si parte con tre catene predefinite
  input, output e forward che non possono essere rimosse.  Si possono
  anche creare proprie catene. Le regole, da questo sistema, possono
  essere aggiunte e cancellate.

  Le operazioni per operare su intere catene sono:

  1. Crea una nuova catena (-N).

  2. Cancella una catena vuota (-X).

  3. Cambia la tattica di una delle catene predefinite (-P).

  4. Elenca le regole di una delle catene (-L).

  5. Svuota una catena delle sue regole (-F).

  6. Azzera i contatori dei pacchetti e dei byte di tutte le regole di
     una catena (-Z).

  Esistono inoltre diversi modi per manipolare le regole di una catena:


  1. Appendi una nuova regola ad una catena (-A).


  2. Inserisci una nuova regola in una determinata posizione della
     catena (-I).

  3. Sostituisci una regola presente in una determinata posizione di una
     catena (-R).

  4. Cancella una regola presente in una determinata posizione della
     catena (-D).

  5. Cancella la prima regola di una catena (-D).

  Ci sono anche alcune operazioni riguardanti il masquerading, incluse
  in ipchains in quanto  una buona collocazione:


  1. Elenca le connessioni correntemente mascherate (-M -L).

  2. Imposta i timeout del masquerading (-M -S).

  Esistono alcuni problemi di tempo riguardanti la modifica delle regole
  del firewall.

  Se non si presta particolare attenzione, si potrebbero far passare dei
  pacchetti mentre si  nel bel mezzo delle modifiche.


       # ipchains -I input 1 -j DENY
       # ipchains -I output 1 -j DENY
       # ipchains -I forward 1 -j DENY



  ... effettua le modifiche ...


       # ipchains -D input 1
       # ipchains -D output 1
       # ipchains -D forward 1
       #



  Questa soluzione scarta tutti i pacchetti per tutta la durata delle
  modifiche.

  Segue un duplicato, adattato per IPChains, delle regole precedenti.



  #!/bin/sh
  #
  # rc.firewall
  #
  ## Svuota tutto, cominciamo da zero
    /sbin/ipchains -F input
    /sbin/ipchains -F output
    /sbin/ipchains -F forward

  ## Redirezione, necessaria per il proxy HTTP trasparente
    #$IPCHAINS  -A input -p tcp -s 192.1.2.0/24 -d 0.0.0.0/0 80 -j REDIRECT 8080

  ## Creazione della propria catena
    /sbin/ipchains -N my-chain
    # Consentiamo alle email di giungere al server
    /sbin/ipchains -A my-chain -s 0.0.0.0/0 smtp -d 192.1.2.10 1024:-j ACCEPT
    # Consentiamo connessioni email verso server email esterni
    /sbin/ipchains -A my-chain -s 192.1.2.10 -d 0.0.0.0/0 smtp -j ACCEPT
    # Consentiamo connessioni Web dirette al proprio server Web
    /sbin/ipchains -A my-chain -s 0.0.0.0/0 www -d 192.1.2.11 1024: -j ACCEPT
    # Consentiamo connessioni Web dirette verso server Web esterni
    /sbin/ipchains -A my-chain -s 192.1.2.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT
    # Consentiamo traffico DNS
    /sbin/ipchains -A my-chain -p UDP -s 0.0.0.0/0 dns -d 192.1.2.0/24 -j ACCEPT

  ## Se si utilizza il masquerading
    # Non mascherare il traffico interno-interno
    /sbin/ipchains -A forward -s 192.1.2.0/24 -d 192.1.2.0/24 -j ACCEPT
    # Non mascherare direttamente l'interfaccia esterna
    /sbin/ipchains -A forward -s 24.94.1.0/24 -d 0.0.0.0/0 -j ACCEPT
    # Maschera tutti gli IP interni diretti all'esterno
    /sbin/ipchains -A forward -s 192.1.2.0/24 -d 0.0.0.0/0 -j MASQ

  ## Scarta qualsiasi altra cosa
    /sbin/ipchains -P my-chain input DENY



  Non ci si fermi qui. Questo non  un gran firewall e sono sicuro che
  si vorranno fornire altri servizi.  Ancora, si legga l'IPCHAINS-HOWTO.



  99..  IInnssttaallllaarree uunn pprrooxxyy ttrraassppaarreennttee SSQQUUIIDD

  Il proxy squid  disponibile all'indirizzo hhttttpp::////ssqquuiidd..nnllaannrr..nneett//
  <<http://squid.nlanr.net/>.

  Gli sviluppatori di SQUID mettono a disposizione pacchetti per RedHat
  e Debian. Se possibile utilizzare uno di questi.


  1100..  IInnssttaallllaarree iill pprrooxxyy sseerrvveerr TTIISS


  1100..11..  RReeppeerriirree iill ssooffttwwaarree

  TIS FWTK  disponibile all'indirizzo
  hhttttpp::////wwwwww..ttiiss..ccoomm//rreesseeaarrcchh//ssooffttwwaarree//
  <<http://www.tis.com/research/software/ >.

  NNoonn ffaattee iill mmiioo sstteessssoo eerrrroorree..  Quando si prelevano i file da TIS, SI
  LEGGA IL README. TIS fwtk  "racchiuso" in una directory nascosta del
  loro server.


  TIS richiede che venga letto il loro contratto all'indirizzo
  http://www.tis.com/research/software/fwtk_readme.html
  <http://www.tis.com/research/software/fwtk_readme.html > e che sia
  iinnvviiaattaa,, ppeerr aapppprreennddeerree iill nnoommee ddeellllaa ddiirreeccttoorryy nnaassccoossttaa uunn''eemmaaiill
  aallll''iinnddiirriizzzzoo ffwwttkk--rreeqquueesstt@@ttiissllaabbss..ccoomm <<mailto:fwtk-
  request@tislabs.com> con presente, nel corpo del messaggio, la sola
  parola aacccceepptteedd

  Nessun argomento  richiesto nell'oggetto.  Il loro sistema provveder
  a inviare il nome della directory (buona per 12 ore) dove poter
  prelevare il sorgente.

  Al momento della stesura, la versione corrente di FWTK  la 2.1.

  Ci che ora rimane da fare  la configurazione del firewall.


  1100..22..  CCoommppiillaarree TTIISS FFWWTTKK


  La compilazione della versione 2.1 di FWTK  molto pi semplice
  rispetto a qualsiasi altra versione precedente.

  SPIEGA QUI!!!

  Ora impartire mmaakkee.


  1100..33..  IInnssttaallllaarree TTIISS FFWWTTKK

  Digitare mmaakkee iinnssttaallll.

  La directory di default dell'installazione  /usr/local/etc.  E'
  possibile cambiarla (non l'ho fatto) con una pi sicura.  Ho scelto di
  cambiare l'accesso a questa directory con 'chmod 700'.


  1100..44..  CCoonnffiigguurraarree TTIISS FFWWTTKK


  Ora comincia il vero divertimento. E' necessario imparare il sistema
  per chiamare questi nuovi servizi e creare le tabelle per
  controllarli.  Non ho intenzione qui di riscrivere il manuale di TIS
  FWTK, voglio solo mostrare le impostazioni che ho trovato funzionanti
  e spiegare i problemi che ho incontrato e come li ho risolti.

  Esistono tre file che riguardano questi controlli:



    /etc/services

       Segnala al sistema a quali porte il servizio  presente


    /etc/inetd.conf

       Segnala a inetd quali programmi richiamare quando qualcuno bussa
        ad una determinata porta


    /usr/local/etc/netperm-table

       Specifica chi pu accedere e chi no ai servizi


  Perch FWTK funzioni,  necessario modificare questi file da
  principio.  Modificare i file dei servizi senza che siano impostati
  correttamente i file inetd.conf o netperm-table pu rendere il proprio
  sistema inaccessibile.


  1100..44..11..  IIll ffiillee nneettppeerrmm--ttaabbllee


  Questo file controlla chi pu accedere ai servizi di TIS FWTK. Il
  traffico si pu considerare diretto ad entrambi i lati del firewall.
  Le persone all'esterno della propria rete dovrebbero identificarsi
  prima di poter guadagnare l'accesso, mentre agli utenti della rete
  locale dovrebbe essere consentito di passare.

  In questo modo le persone possono identificarsi; il firewall utilizza
  un programma aauutthhssrrvv per mantenere un database delle user ID e delle
  password. La sezione della netperm-table riguardante l'autenticazione
  controlla dove  collocato il database e chi vi pu accedere.

  Ho avuto alcuni problemi nel chiudere l'accesso a questo servizio.
  Nota infatti la presenza nella linea permit-hosts del carattere "*"
  usato per consentire l'accesso a chiunque.  L'impostazione corretta di
  questa linea, se vi dovesse funzionare,  '' authsrv: permit-hosts
  localhost.


    #
    # Tabella di configurazione del proxy
    #
    # server di autenticazione e regole clienti
    authsrv:      database /usr/local/etc/fw-authdb
    authsrv:      permit-hosts *
    authsrv:      badsleep 1200
    authsrv:      nobogus true
    # Applicazioni client che utilizzano il server authentication
    *:            authserver 127.0.0.1 114



  Per inizializzare il database e creare il record user administrative,
  effettuare un su root e avviare ..//aauutthhssrrvv nella directory
  /var/local/etc.  Qui  presente una semplice sezione.

  Si legga la documentazione di FWTK per imparare come aggiungere utenti
  e gruppi.



      #
      # authsrv
      authsrv# list
      authsrv# adduser admin "Auth DB admin"
      ok - user added initially disabled
      authsrv# ena admin
      enabled
      authsrv# proto admin pass
      changed
      authsrv# pass admin "plugh"
      Password changed.
      authsrv# superwiz admin
      set wizard
      authsrv# list
      Report for users in database
      user   group  longname           ok?    proto   last
      ------ ------ ------------------ -----  ------  -----
      admin         Auth DB admin      ena    passw   never
      authsrv# display admin
      Report for user admin (Auth DB admin)
      Authentication protocol: password
      Flags: WIZARD
      authsrv# ^D
      EOT
      #



  I controlli del gateway telnet (tn-gw) sono i primi da impostare.

  Nell'esempio, autorizzo gli host presenti all'interno della rete
  privata a passare senza autenticarsi (permit-hosts 19961.2.* -passok).
  Ogni altro utente invece dovr inserire il proprio user ID e la
  password per utilizzare il proxy (permit-hosts * -auth).

  Inoltre, consento ad un altro sistema (196.1.2.202) di accedere
  direttamente al firewall senza passare attraverso il firewall stesso.
  Le due righe inetacl-in.telnetd servono a definire questo. Pi avanti
  sar spiegato come queste righe sono richiamate.

  Il timeout Telnet dovrebbe essere mantenuto breve.


    # regole del gateway telnet:
    tn-gw:                denial-msg      /usr/local/etc/tn-deny.txt
    tn-gw:                welcome-msg     /usr/local/etc/tn-welcome.txt
    tn-gw:                help-msg        /usr/local/etc/tn-help.txt
    tn-gw:                timeout 90
    tn-gw:                permit-hosts 192.1.2.* -passok -xok
    tn-gw:                permit-hosts * -auth
    # Solo l'amministratore pu effettuare telnet direttamente al Firewall
    # tramite la Porta 24
    netacl-in.telnetd: permit-hosts 192.1.2.202 -exec /usr/sbin/in.telnetd



  I comandi r funzionano allo stesso modo del telnet.



    # rlogin gateway rules:
    # regole gateway rlogin:
    rlogin-gw:    denial-msg      /usr/local/etc/rlogin-deny.txt
    rlogin-gw:    welcome-msg     /usr/local/etc/rlogin-welcome.txt
    rlogin-gw:    help-msg        /usr/local/etc/rlogin-help.txt
    rlogin-gw:    timeout 90
    rlogin-gw:    permit-hosts 192.1.2.* -passok -xok
    rlogin-gw:    permit-hosts * -auth -xok
    # Solo l'Amministratore pu eseguire direttamente il telnet al Firewall
    netacl-rlogind: permit-hosts 192.1.2.202 -exec /usr/libexec/rlogind -a



   consigliabile che nessuno possa accedere direttamente al firewall,
  incluso l'accesso in FTP. Pertanto, non si metta un server FTP sul
  proprio firewall.

  Inoltre, la riga permit-hosts consente a chiunque all'interno della
  rete protetta di accedere liberamente ad Internet, mentre tutti gli
  altri devono autenticarsi. Ai miei controlli sono stati aggiunti il
  log di ogni file inviato e ricevuto (-log { retr stor }).

  Il timeout ftp controlla quanto tempo ci vuole per far cadere una
  cattiva connessione come pure quanto a lungo pu rimanere aperta una
  connessione senza attivit.


    # regole gateway ftp:
    ftp-gw:               denial-msg      /usr/local/etc/ftp-deny.txt
    ftp-gw:               welcome-msg     /usr/local/etc/ftp-welcome.txt
    ftp-gw:               help-msg        /usr/local/etc/ftp-help.txt
    ftp-gw:               timeout 300
    ftp-gw:               permit-hosts 192.1.2.* -log { retr stor }
    ftp-gw:               permit-hosts * -authall -log { retr stor }



  I web, gopher e browser basati su ftp sono stravolti dall'http-gw. Le
  prime due righe creano una directory dove poter memorizzare i
  documenti ftp e web esattamente come passano attraverso il firewall.
  Ho reso questi file di propriet di root e li ho collocati in una
  directory accessibile solo dal root.

  La connessione Web dovrebbe essere tenuta breve. Viene inoltre
  effettuato un controllo sul tempo di attesa di un utente su una
  cattiva connessione.


    # regole gateway www e gopher:
    http-gw:      userid          root
    http-gw:      directory       /jail
    http-gw:      timeout 90
    http-gw:      default-httpd   www.afs.net
    http-gw:      hosts           192.1.2.* -log { read write ftp }
    http-gw:      deny-hosts      *



  ssl-gw  di fatto un semplice gateway "passatutto". Prestategli
  attenzione. In questo esempio consento a tutti all'interno della rete
  protetta di connettersi a qualsiasi server al di fuori della rete,
  fatta eccezione per gli indirizzi 127.0.0.* e 192.1.1.*, e solo sulle
  porte da 443 a 563. Le porte da 443 a 563 sono conosciute come porte
  SSL.


    # regole gateway ssl:
    ssl-gw:         timeout 300
    ssl-gw:         hosts           192.1.2.* -dest { !127.0.0.* !192.1.1.* *:443:563 }
    ssl-gw:         deny-hosts      *



  Segue un esempio di come utilizzare il plug-gw per consentire
  connessioni ad un server news. Nell'esempio, si abilitano tutti gli
  utenti all'interno della rete privata a connettersi ad un solo sistema
  e solo alla sua porta news.

  La seconda riga consente al server news di ripassare i dati alla rete
  protetta.

  Dal momento che la maggior parte dei client si aspettano di restare
  connessi mentre gli utenti leggono le news, il timeout per un server
  di news dovrebbe essere lungo.


    # NetNews Pluged gateway
    plug-gw:        timeout 3600
    plug-gw: port nntp 192.1.2.* -plug-to 24.94.1.22 -port nntp
    plug-gw: port nntp 24.94.1.22 -plug-to 192.1.2.* -port nntp



  Il gateway finger  semplice. Chiunque dall'interno della rete
  protetta deve prima di tutto eseguire il login e solo dopo pu
  ottenere l'abilitazione a utilizzare il programma finger sul firewall.
  Tutti gli altri invece ricevono semplicemente un messaggio.


    # Abilitazione del servizio finger
    netacl-fingerd: permit-hosts 192.1.2.* -exec /usr/libexec/fingerd
    netacl-fingerd: permit-hosts * -exec /bin/cat /usr/local/etc/finger.txt



  Non ho impostato i servizi Mail e X-windows pertanto non aggiungo
  degli esempi in merito. Se qualcuno possiede un esempio funzionante 
  pregato di inviarmi un'email.


  1100..44..22..  TThhee //eettcc//sseerrvviicceess ffiillee


  Qui  dove tutto comincia.  Quando un client si connette al firewall
  lo fa su una porta conosciuta (minore di 1024). Ad esempio telnet si
  connette sulla porta 23. Il demone inetd "sente" questa connessione e
  cerca il nome di questo servizio nel file /etc/services. Quindi,
  richiama il programma assegnato al nome nel file /etc/inetd.conf.

  Alcuni dei servizi che stiamo creando non si trovano normalmente nel
  file /etc/services.  possibile assegnare alcuni di essi ad una porta
  qualsiasi. Ad esempio, ho assegnato la porta corrispondente al telnet
  dell'amministratore (telnet-a) alla porta 24. Volendo, lo si pu
  assegnare alla porta 23. Affinch l'amministratore (ossia voi stessi)
  possa connettersi direttamente al firewall  necessario eseguire il
  telnet alla porta 24 e non alla 23, e se il file netperm-table viene
  impostato, come ho fatto io, sar possibile farlo solamente da un
  sistema all'interno della propria rete protetta.



    telnet-a        24/tcp
    ftp-gw          21/tcp               # questo nome  cambiato
    auth            113/tcp   ident    # verifica dell'utente
    ssl-gw          443/tcp



  1111..  IIll pprrooxxyy sseerrvveerr SSOOCCKKSS


  1111..11..  IImmppoossttaarree iill sseerrvveerr pprrooxxyy

  Il proxy server SOCKS  disponibile all'indirizzo
  hhttttpp::////wwwwww..ssoocckkss..nneecc..ccoomm//.

  Decomprimere e decompattare (untar) i file all'interno di una
  directory del proprio sistema, e seguire le istruzioni su come
  effettuare il make. Personalmente ho avuto un paio di problemi in
  quest'ultimo caso. Assicurarsi che i Makefile siano corretti.

   importante notare che il proxy server deve essere aggiunto nel file
  /etc/inetd.conf.  necessario quindi aggiungere la riga:


    socks  stream  tcp  nowait  nobody  /usr/local/etc/sockd  sockd



  per segnalare al server di entrare in esecuzione quando richiesto.


  1111..22..  CCoonnffiigguurraarree iill PPrrooxxyy SSeerrvveerr


  Il programma SOCKS ha bisogno di due file di configurazione separati.
  Il primo per specificare gli accessi autorizzati, il secondo per
  instradare le richieste al proxy server appropriato. Il file di
  accesso dovrebbe essere localizzato sul server. Il file di
  instradamento dovrebbe trovarsi su ogni macchina Unix. I computer DOS
  e presumibilmente i Macintosh effettueranno il proprio instradamento.


  1111..22..11..  IIll ffiillee ddii aacccceessssoo

  Con socks 4.2c Beta, il file di accesso  denominato "sockd.conf".
  Dovrebbe contenere 2 righe, una riga permit e una riga deny. Ogni riga
  conterr tre campi:


    L'identificatore (permit/deny)

    L'indirizzo IP

    Il modificatore di indirizzo

  L'identificatore  di tipo permit oppure deny.  consigliabile avere
  sia la riga permit, sia la riga deny.

  L'indirizzo IP  un indirizzo a 4 byte come nella tipica notazione IP.
  Ossia, 192.168.1.0.

  Anche il modificatore di indirizzo  un tipico indirizzo IP
  rappresentato da un numero di 4 byte e funziona come una netmask.
  Supponiamo che questo numero sia a 32 bit (serie di 1 o di 0). Se il
  bit  un 1, il bit corrispondente dell'indirizzo che si sta
  controllando deve essere uguale al bit corrispondente presente nel
  campo dell'indirizzo IP.

  Ad esempio, se la riga :


      permit 192.168.1.23 255.255.255.255



  saranno ammessi solo gli indirizzi IP i cui bit corrispondono a
  192.168.1.23, ossia, solo 192.168.1.3. La riga:


      permit 192.168.1.0 255.255.255.0



  ammetter ogni numero all'interno del gruppo da 192.168.1.0 a
  192.168.1.255, ossia l'intero dominio di Classe C. Non si dovrebbe
  invece avere la riga:

      permit 192.168.1.0 0.0.0.0



  dal momento che ammetter qualsiasi indirizzo, indistintamente.

  Pertanto, prima di tutto si abilitino tutti gli indirizzi che si
  vogliono abilitare e si neghino i restanti. Per ammettere tutti coloro
  che sono presenti nel dominio 192.168.1.xxx, le righe:


      permit 192.168.1.0 255.255.255.0
      deny 0.0.0.0 0.0.0.0



  funzioneranno correttamente. Notare il primo "0.0.0.0" della riga
  deny. Con un modificatore 0.0.0.0, il campo dell'indirizzo IP non 
  rilevante. Tutti zero  la norma perch  semplice digitarli.

   consentita pi di una voce per ciascun tipo.

   anche possibile fornire o negare gli accessi a degli utenti
  specifici, tramite l'autenticazione ident. Non tutti i sistemi
  supportano ident, tra cui Trumpet Winsock, pertanto questo argomento
  non sar trattato in questa sede. La documentazione a corredo di socks
   del tutto adeguata riguardo questo argomento.


  1111..22..22..  IIll ffiillee ddii iinnssttrraaddaammeennttoo


  Il file di instradamento in SOCKS  infelicemente chiamato
  "socks.conf". L'"infelicemente"  dovuto al fatto che appare molto
  simile a quello del file di accesso, pertanto potrebbe essere facile
  confonderli.

  Il file di instradamento informa il client SOCKS quando utilizzare
  socks e quando non farlo. Ad esempio, nella nostra rete, 192.168.1.3
  non avr bisogno di utilizzare socks per parlare con 192.168.1.1, il
  firewall, in quanto possiede una connessione diretta via Ethernet e
  definisce automaticamente 127.0.0.1, ossia il loopback. Naturalmente
  non  necessario SOCKS per parlare con se stessi.  Esistono tre voci:
    deny

    direct

    sockd

  Deny specifica a SOCKS quando respingere una richiesta. Questa voce
  possiede gli stessi tre campi gi descritti per sockd.conf:
  identificatore, indirizzo e modificatore. Generalmente, dal momento
  che questo viene gestito anche da sockd.conf, il file di accesso, il
  campo del modificatore  impostato a 0.0.0.0. Se si vuole precludere
  se stessi dal chiamare qualsiasi posto, pu essere fatto in questo
  punto.

  La voce direct specifica gli indirizzi per i quali non deve essere
  utilizzato socks. Si tratta degli indirizzi che possono essere
  raggiunti senza il proxy server. Ancora una volta, abbiamo i tre
  campi: identificatore, indirizzo e modificatore. Nel nostro esempio
  corrisponderebbe a:


      direct 192.168.1.0 255.255.255.0



  che permette di andare direttamente ovunque nella nostra rete
  protetta.

  La voce sockd infine specifica al computer quale host ha in esecuzione
  il demone server socks. La sintassi :


    sockd @=<serverlist> <IP address> <modifier>



  Si noti la voce @=. Questa permette di impostare gli indirizzi IP di
  una lista di proxy server. Nel nostro esempio, viene utilizzato un
  unico proxy server. Tuttavia  possibile averne molti per consentire
  un carico maggiore e per avere a disposizione una ridondanza in caso
  di errore.

  I campi di indirizzo IP e di modificatore funzionano esattamente come
  negli altri esempi.  Attraverso questi  possibile specificare dove
  devono andare gli indirizzi.


  1111..22..33..  DDNNSS pprreesseennttee ddiieettrroo iill FFiirreewwaallll

  L'impostazione del Domain Name Service da dietro un firewall  un
  compito relativamente semplice. Prima  necessario impostare il DNS
  sulla macchina firewall e poi configurare ogni macchina dietro al
  firewall in modo che possa utilizzare questo DNS.



  1111..33..  LLaavvoorraarree ccoonn uunn PPrrooxxyy SSeerrvveerr


  1111..33..11..  UUnniixx


  Per fare in modo che le proprie applicazioni funzionino con il proxy
  server, dovranno essere "SOCKettizzate". Saranno necessarie due
  diverse tipologie di telnet, una per la comunicazione diretta e una
  per la comunicazione tramite il proxy server. SOCKS fornisce delle
  istruzioni su come SOCKettizzare un programma, come pure un paio di
  programmi pre-SOCKettizzati. Se si utilizza una versione SOCKettizzata
  per andare direttamente da qualche parte, SOCKS si commuter
  automaticamente nella versione diretta. Per questo motivo si vorranno
  rinominare tutti i programmi sulla rete protetta e sostituirli con i
  programmi SOCKettizzati. "Finger" diventer "finger.orig", "telnet"
  diventer "telnet.orig" ecc. Bisogner inoltre informare SOCKS di
  ognuno di questi cambiamenti tramite il file include/socks.h.

  Alcuni programmi saranno in grado di gestire l'instradamento e la
  SOCKettizzazione per conto loro. Netscape  uno di questi.  possibile
  utilizzare un proxy server sotto Netscape inserendo l'indirizzo del
  server (192.168.1.1 nel nostro caso) nel campo SOCKS sotto i Proxy.
  Ciascuna applicazione avr bisogno di almeno qualche modifica,
  indipendentemente da come gestisce un proxy server.


  1111..33..22..  MMSS WWiinnddoowwss ccoonn TTrruummppeett WWiinnssoocckk


  Trumpet Winsock viene gi distribuito con il supporto intrinseco per i
  server proxy. Nel menu di "setup", si inseriscano l'indirizzo IP del
  server, e gli indirizzi di tutti i computer raggiungibili
  direttamente.  Trumpet provveder poi a gestire tutti i pacchetti in
  uscita.


  1111..33..33..  CCoommee ffaarr ffuunnzziioonnaarree iill PPrrooxxyy SSeerrvveerr ccoonn ii ppaacccchheettttii UUDDPP


  Il pacchetto SOCKS funziona solamente con i pacchetti TCP, non con
  quelli UDP. Questa caratteristica lo rende leggermente meno utile.
  Molti programmi interessanti, come talk e Archie, utilizzano UDP.
  Esiste un pacchetto studiato per essere usato come proxy server per
  pacchetti UDP denominato UDPrelay, di Tom Fitzgerald <fitz@wang.com>.
  Sfortunatamente, nel momento in cui viene scritto questo documento,
  non  compatibile con Linux.



  1111..44..  SSvvaannttaaggggii ddeeii PPrrooxxyy SSeerrvveerr


  Il proxy server  soprattutto un dispositivo di sicurezza. Un suo
  utilizzo per aumentare l'accesso ad internet con limitati indirizzi IP
  causer molti svantaggi. Un proxy server consentir un maggior accesso
  dall'interno della rete protetta verso l'esterno, ma manterr
  l'interno completamente inaccessibile dall'esterno. Ci implica
  l'impossibilit di avere connessioni server, talk o archie oppure mail
  dirette verso i computer presenti all'interno. Questi svantaggi
  potrebbero sembrare irrilevanti, ma bisogna pensare ad essi in questi
  termini:


    Un report su cui state lavorando sul vostro computer  stato
     lasciato all'interno della rete protetta con firewall. Vi trovate a
     casa, e decidete di lavorarci ancora un po'. Ma questo non 
     possibile. Non potete raggiungere il vostro computer perch si
     trova al di l del firewall. Per prima cosa cercherete di
     connettervi al firewall, ma dal momento che tutti hanno un accesso
     proxy server, nessuno avr impostato un account per voi.


    Vostra figlia frequenta il college. Volete inviarle un'email. Avete
     alcuni affari personali di cui parlare, e preferireste poter
     ricevere la posta direttamente sulla vostra macchina. Avete
     completa fiducia nell'amministratore del sistema, tuttavia si
     tratta pur sempre di posta privata.


    L'incapacit di utilizzare i pacchetti UDP rappresenta un grande
     svantaggio dei proxy server. Immagino che il supporto UDP sar
     disponibile a breve.

  FTP provoca un altro problema con i proxy server. Quando si riceve o
  si esegue un comando ls, il server FTP apre un socket sulla macchina
  client e inoltre la utilizza per inviare le informazioni. Un proxy
  server non permetter queste operazioni, pertanto FTP non funzioner
  molto bene.

  Inoltre, i proxy server sono lenti. A causa del sovraccarico maggiore,
  quasi ogni altro mezzo per ottenere questo accesso sar pi veloce.

  Sostanzialmente, se si possiedono gli indirizzi IP, e non ci si
  preoccupa della sicurezza,  meglio non utilizzare un firewall e/o i
  proxy server. Se non si possiedono gli indirizzi IP, e non ci si
  preoccupa della sicurezza, si potrebbe pensare di utilizzare un
  emulatore IP, come Term, Slirp o TIA. Term  disponibile su
  ffttpp::////ssuunnssiittee..uunncc..eedduu, Slirp su
  ffttpp::////bblliittzzeenn..ccaannbbeerrrraa..eedduu..aauu//ppuubb//sslliirrpp, e TIA su mmaarrkkeettppllaaccee..ccoomm.
  Questi pacchetti saranno pi veloci, consentiranno connessioni
  migliori e forniranno un livello maggiore di accesso alla rete interna
  da internet. I proxy server sono ottimi nel caso di reti con molti
  host che richiedono di connettersi alla rete esterna al volo, con una
  sola impostazione e con poco lavoro successivo.



  1122..  CCoonnffiigguurraazziioonnii aavvaannzzaattee

  Esiste un'altra configurazione di cui vorrei parlare prima di
  concludere questo documento. Quelle che ho gi descritto probabilmente
  saranno sufficienti per la maggior parte delle persone. Tuttavia, ho
  intenzione di mostrare una configurazione pi avanzata in grado di
  chiarire alcune questioni. Se avete domande relative a quanto  stato
  descritto finora, o se siete semplicemente interessati alla
  versatilit dei proxy server e dei firewall, continuate la lettura.


  1122..11..  UUnnaa rreettee aammppiiaa ccoonn eennffaassii ssuullllaa ssiiccuurreezzzzaa

  Supponiamo, ad esempio, di voler mettere in rete il nostro sito. Si
  possiedono 50 computer e una sottorete di 32 (5 bit) numeri IP.
  Servono diversi livelli di accesso all'interno della rete. Pertanto, 
  necessario proteggere certe parti della rete dal resto.

  I livelli sono:

  1. Il livello esterno. Si tratta del livello disponibile a tutti.  il
     luogo dove si cercano nuovi volontari.

  2. TTrruuppppaa. Questo  il livello di persone che hanno superato il
     livello esterno.  il luogo dove vengono istruiti sul governo
     diabolico e su come fabbricare le bombe.

  3. MMeerrcceennaarrii. Questo  il livello dove sono tenuti i piani _v_e_r_i. In
     questo livello sono memorizzate tutte le informazioni su come il
     governo del terzo mondo ha intenzione di conquistare il mondo, i
     piani che coinvolgono Newt Gingrich, Oklahoma City, i prodotti di
     minor importanza e cosa  immagazzinato veramente negli hangar
     dell'area 51.

  1122..11..11..  IImmppoossttaazziioonnee ddeellllaa rreettee

  I numeri IP sono arrangiati in modo tale che:


    Un numero utilizzato sia 192.168.1.255, che rappresenta l'indirizzo
     di broadcast non utilizzabile.

    23 dei 32 indirizzi IP siano allocati a 23 macchine che saranno poi
     accessibili da Internet.

    Un IP extra sia assegnato ad una Linux box della rete.

    Un IP extra sia assegnato ad un'altra Linux box della rete.

    Due IP siano assegnati al router.

    Quattro siano lasciati liberi, ma ad essi siano comunque assegnati
     nomi di dominio quali paul, ringo, john, e george, tanto per
     confondere un po' le idee.

    Le reti protette abbiano entrambe gli indirizzi 192.168.1.xxx.

  Quindi, vengono costruite due reti separate, ognuna localizzata in
  stanze diverse. L'instradamento pu avvenire tramite Ethernet a
  infrarossi in modo che sia completamente invisibile alle postazioni
  esterne.  Fortunatamente, l'ethernet a infrarossi funziona esattamente
  come l'ethernet normale.

  Queste reti sono entrambe connesse ad una delle box Linux tramite un
  indirizzo IP extra.

  Esiste un file server che connette le due reti protette. Questo perch
  i piani per conquistare il mondo coinvolgono alcune delle Truppe di
  livello pi alto. Il file server mantiene l'indirizzo 192.168.1.17
  della rete della Truppa e l'indirizzo 192.168.1.23 della rete dei
  Mercenari. Deve avere due indirizzi IP differenti poich possiede due
  diverse schede Ethernet. L'IP Forwarding  disabilitato.

  Il forwarding IP  disabilitato anche su entrambe le Linux box. Il
  router non inoltrer pacchetti destinati a 192.168.1.xxx se non gli
  sar richiesto esplicitamente di farlo, pertanto Internet non sar in
  grado di entrare. La ragione per cui si  scelto di disabilitare l'IP
  Forwarding  che in questo modo i pacchetti provenienti dalla rete
  della Truppa non saranno in grado di raggiungere la rete dei
  Mercenari, e viceversa.

  Il server NFS pu essere impostato in modo da offrire file diversi a
  reti diverse. Questo pu tornare utile, e un piccolo trucco con i link
  simbolici pu fare in modo che i file comuni possano essere condivisi
  con chiunque. L'utilizzo di questa impostazione e di un'altra scheda
  ethernet pu offrire questo unico file server a tutte e tre le reti.



  1122..11..22..  IImmppoossttaazziioonnee ddeell PPrrooxxyy

  Ora, dal momento che tutti e tre i livelli vogliono essere in grado di
  monitorare la rete per i propri scopi, tutti e tre hanno bisogno di un
  accesso alla rete. La rete esterna  connessa direttamente ad
  internet, pertanto in questo caso non dobbiamo preoccuparci dei proxy
  server. Le reti dei Mercenari e della Truppa si trovano al di l del
  firewall, pertanto  necessario impostare dei proxy server.

  Entrambe le reti hanno un'impostazione molto simile. Ad entrambe
  vengono assegnati gli stessi indirizzi IP. Inserir un paio di
  parametri, solo per rendere le cose pi interessanti.


  1. Nessuno pu utilizzare il file server per l'accesso ad Internet.
     Questo esporrebbe il file server a virus ed altri problemi, ed 
     quindi molto importante e assolutamente da evitare.

  2. Non verr consentito l'accesso della Truppa al World Wide Web, dal
     momento che sono in addestramento, questo potere di recupero di
     informazioni potrebbe essere pericoloso.

  Pertanto, il file sockd.conf sulla box Linux della Truppa conterr la
  riga:


      deny 192.168.1.17 255.255.255.255



  e sulla macchina Mercenaria:


      deny 192.168.1.23 255.255.255.255



  Inoltre, la box Linux della Truppa avr anche la seguente linea:


      deny 0.0.0.0 0.0.0.0 eq 80



  che indica di negare l'accesso a tutte le macchine che cercano di
  accedere alla porta uguale (eq) a 80, la porta http. Questa continuer
  a consentire tutti gli altri servizi, nega solo l'accesso al Web.

  Quindi, entrambi i file conterranno:


      permit 192.168.1.0 255.255.255.0



  per consentire a tutti i computer sulla rete 192.168.1.xxx di
  utilizzare questo proxy server, fatta eccezione per quelli ai quali
  l'accesso  gi stato negato (cio, il file server e l'accesso al Web
  per la rete Truppa).


  Il file sockd.conf della Truppa avr il seguente formato:

      deny 192.168.1.17 255.255.255.255
      deny 0.0.0.0 0.0.0.0 eq 80
      permit 192.168.1.0 255.255.255.0


  mentre il file Mercenario avr:

      deny 192.168.1.23 255.255.255.255
      permit 192.168.1.0 255.255.255.0



  Questo dovrebbe configurare tutto correttamente. Ogni rete  isolata
  di conseguenza, con l'appropriato numero di interazioni.  Tutti
  dovrebbero essere felici.


  1133..  SSeemmpplliiffiiccaarree llaa ggeessttiioonnee


  1133..11..  TTooooll ppeerr iill ffiirreewwaallll

  Esistono molti pacchetti software che sono in grado di rendere pi
  semplice la gestione del firewall.

  Si presti per attenzione, non si utilizzino questi tool almeno che
  non se ne possa fare a meno.  Questi script inducono a commettere
  errori con la stessa facilit con cui permettono di gestire le regole.

  Sia le interfacce grafiche sia quelle basate sul web sono state
  sviluppate per operare con le regole di filtraggio di Linux.  Alcune
  compagnie hanno perfino creato dei firewall commerciali basati su
  Linux, utilizzando proprie box con proprio codice di gestione (bello).

  In realt non sono un fan delle GUI. Comunque, ho utilizzato firewall
  con interfacce GUI per un po' di tempo e ho constatato che in effetti
  aiutano a fornire un comodo report di tutte le regole, per una rapida
  occhiata.

  gfcc (GTK+ Firewall Control Center)  un'applicazione GTK+, basata su
  ipchains, che consente di controllare le tattiche e le regole del
  firewall di Linux.  Si vada all'indirizzo
  http://icarus.autostock.co.kr <http://icarus.autostock.co.kr/> e ci si
  procuri la propria copia. Questo  un tool davvero buono.

  Sono disponibili parecchi script per impostare un firewall, uno script
  davvero completo  presente all'indirizzo
  http://www.jasmine.org.uk/~simon/bookshelf/papers/instant-
  firewall/instant-firewall.html
  <http://www.jasmine.org.uk/~simon/bookshelf/papers/instant-
  firewall/instant-firewall.html>.  Un altro script ben fatto 
  disponibile all'indirizzo http://www.pointman.org/
  <http://www.pointman.org/>.

  Kfirewall  un'interfaccia GUI per ipchains o ipfwadm (dipende dal
  proprio kernel) http://megaman.ypsilonia.net/kfirewall/
  <http://megaman.ypsilonia.net/kfirewall/>.

  FCT  un tool di configurazione di firewall basato su HTML.  Comprende
  generazione automatica di script per comandi di filtraggio IP
  (ipfwadm) su firewall con interfacce multiple e per qualsiasi servizio
  internet http://www.fen.baynet.de/~ft114/FCT/firewall.htm
  <http://www.fen.baynet.de/~ft114/FCT/firewall.htm>.


  1133..22..  TTooooll ggeenneerriiccii

  Webmin  un pacchetto di amministrazione generale del sistema.  Non 
  di aiuto per gestire le regole del firewall ma  comunque utile per
  abilitare e disabilitare i demoni e i processi.  Questo programma 
  VERAMENTE buono, spero che J. Cameron includa un modulo per IPCHAINS.

  Se siete un ISP, vi interesser sapere qualcosa a riguardo di IPFA (IP
  Firewall Accounting) http://www.soaring-bird.com/ipfa/
  <http://www.soaring-bird.com/ipfa/>.  Consente di gestire log per
  mese/giorno/minuto, inoltre ha una GUI per l'amministrazione basata
  sul Web.



  1144..  RRaaggggiirraarree uunn ffiirreewwaallll pprrooxxyy

  Giusto per rovinare la giornata, e per far tenere i piedi per terra
  circa la sicurezza, descriver quanto sia facile raggirare un firewall
  proxy.

  Ora dopo aver fatto tutto quanto descritto in questo documento si ha
  un server ed una rete veramente sicuri.  Si possiede un DMZ e nessuno
  pu accedere alla rete, inoltre si registrano tutte le connessioni
  effettuate verso il mondo esterno.  Tutti gli utenti passano per il
  proxy e nessuno pu accedere ad Internet direttamente.

  Uno degli utenti, con una connessione dedicata propria, viene per a
  conoscenza di httptunnel
  <http://www.nocrew.org/software/httptunnel.html>.  httptunnel crea un
  canale dati virtuale bidirezionale incapsulato in richieste HTTP.  Se
  desiderato le richieste HTTP possono essere inviate attraverso il
  proxy HTTP.

  Oppure, nel loro sistema, gli utenti potrebbero installare una Virtual
  Private Network (vpn).  Visitare: http://sunsite.auc.dk/vpnd/
  <http://sunsite.auc.dk/vpnd/>

  O ancora questo utente potrebbe aggiungere un modem al sistema NT e
  accedere all'instradamento.

  Infine sulla workstation, nella LAN privata, potrebbe cambiare il
  gateway di default in modo che punti al nuovo instradamento verso
  Internet.

  Ora, dalla workstation, si pu andare ovunque. L'unica cosa che
  l'amministratore del firewall potrebbe notare  che qualcuno si sta
  connettendo con un accesso DNS molto lungo.

  Siete pronti a conquistare il mondo!



  1155..  AAPPPPEENNDDIICCEE AA -- SSccrriipptt ddii eesseemmppiioo



  1155..11..  SSccrriipptt RRCC uussaannddoo GGFFCCCC



  #!/bin/bash
  #
  # Firewall Script - Versione 0.9.1
  #
  # chkconfig: 2345 09 99
  # description: script firewall per i kernel 2.2.x

  # Da impostare per i test:
  # set -x
  #
  # NOTE:
  #
  #  Questo script  stato scritto per la RedHat 6.1 o pi recente.
  #
  #  Prestare attenzione per quanto riguarda l'offerta di servizi pubblici quali web o ftp server.
  #
  # INSTALLAZIONE:
  #  1. si collochi questo file nella directory /etc/rc.d/init.d  (si deve essere root..)
  #     lo si chiami con qualcosa come "firewall"    :-)
  #     lo si renda di propriet del root -->  "chown root.root (filename)"
  #     lo si renda eseguibile -->  "chmod 755 (filename)"
  #  2. si utilizzi GFCC per creare le regole per il firewall ed esportale in un file
  #     con nome /etc/gfcc/rules/firewall.rule.sh
  #
  #  3. si aggiunga il firewall alla struttura init della RH --> "chkconfig --add (filename)"
  #     Al successivo boot del router, tutto dovrebbe sistemarsi automagicamente!
  #     si dorma pure tranquilli la notte sapendo di essere *MENO* vulnerabile di prima...
  #
  # NOTE SULLE VERSIONI:
  #   30 Jan, 2000 - Modificato per lo script GFCC
  #   11 Dec, 1999 - aggiornamento di Mark Grennan <mark@grennan.com>
  #   20 July, 1999 - scrittura iniziale - Anthony Ball <tony@LinuxSIG.org>

  ################################################

  # Libreria funzioni.
  . /etc/rc.d/init.d/functions

  # Configurazione rete.
  . /etc/sysconfig/network

  # Controlla che la rete sia presente.
  [ ${NETWORKING} = "no" ] && exit 0

  # Controlla cosa  stato richiesto
  case "$1" in

    start)
          # Inizia a fornire gli accessi
          action "Starting firewall: " /bin/true
          /etc/gfcc/rules/firewall.rule.sh
          echo
          ;;

    stop)
          action "Stoping firewall: " /bin/true
          echo 0 > /proc/sys/net/ipv4/ip_forward
          /sbin/ipchains -F input
          /sbin/ipchains -F output
          /sbin/ipchains -F forward

          echo
          ;;

    restart)
          action "Restarting firewall: " /bin/true
          $0 stop
          $0 start

          echo
          ;;

    status)
          # Visualizza elenco di tutte le regole
          /sbin/ipchains -L
          ;;

    test)
          action "Test Mode firewall: " /bin/true
          /sbin/ipchains -F input
          /sbin/ipchains -F output
          /sbin/ipchains -F forward
          echo 1 > /proc/sys/net/ipv4/ip_forward
          /sbin/ipchains -A input -j ACCEPT
          /sbin/ipchains -A output -j ACCEPT
          /sbin/ipchains -P forward DENY
          /sbin/ipchains -A forward -i $PUBLIC -j MASQ

          echo
          ;;

    *)
          echo "Usage: $0 {start|stop|restart|status|test}"
          exit 1

  esac



  1155..22..  GGFFCCCC ssccrriipptt

  Questo script  stato generato da Graphical Firewall program (GFCC).
  Questo non  l'insieme delle regole in funzione,  l'insieme delle
  regole esportate.



  #!/bin/sh
  # Generato da Gtk+ firewall control center

  IPCHAINS=/sbin/ipchains


  localnet="192.168.1.0/24"
  firewallhost="192.168.1.1/32"
  localhost="172.0.0.0/8"
  DNS1="24.94.163.119/32"
  DNS2="24.94.163.124/32"
  Broadcast="255.255.255.255/32"
  Multicast="224.0.0.0/8"
  Any="0.0.0.0/0"
  mail_grennan_com="192.168.1.1/32"
  mark_grennan_com="192.168.1.3/32"

  $IPCHAINS -P input DENY
  $IPCHAINS -P forward ACCEPT
  $IPCHAINS -P output ACCEPT

  $IPCHAINS -F
  $IPCHAINS -X

  # regole catena input
  $IPCHAINS -A input -s $Any -d $Broadcast -j DENY
  $IPCHAINS -A input -p udp -s $Any -d $Any netbios-ns -j DENY
  $IPCHAINS -A input -p tcp -s $Any -d $Any netbios-ns -j DENY
  $IPCHAINS -A input -p udp -s $Any -d $Any netbios-dgm -j DENY
  $IPCHAINS -A input -p tcp -s $Any -d $Any netbios-dgm -j DENY
  $IPCHAINS -A input -p udp -s $Any -d $Any bootps -j DENY
  $IPCHAINS -A input -p udp -s $Any -d $Any bootpc -j DENY
  $IPCHAINS -A input -s $Multicast -d $Any -j DENY
  $IPCHAINS -A input -s $localhost -d $Any -i lo -j ACCEPT
  $IPCHAINS -A input -s $localnet -d $Any -i eth1 -j ACCEPT
  $IPCHAINS -A input -s $localnet -d $Broadcast -i eth1 -j ACCEPT
  $IPCHAINS -A input -p icmp -s $Any -d $Any -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any -j ACCEPT ! -y
  $IPCHAINS -A input -p udp -s $DNS1 domain -d $Any 1023:65535 -j ACCEPT
  $IPCHAINS -A input -p udp -s $DNS2 domain -d $Any 1023:65535 -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any ssh -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any telnet -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any smtp -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any pop-3 -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any auth -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any www -j ACCEPT
  $IPCHAINS -A input -p tcp -s $Any -d $Any ftp -j ACCEPT
  $IPCHAINS -A input -s $Any -d $Any -j DENY -l

  # regole catena forward
  $IPCHAINS -A forward -s $localnet -d $Any -j MASQ

  # regole catena output



  1155..33..  SSccrriipptt RRCC sseennzzaa GGFFCCCC

  Questo  l'insieme delle regole scritte di mio pugno per il firewall.
  Non si  utilizzato GFCC.



    #!/bin/bash
    #
    # Firewall Script - Versione 0.9.0

    # chkconfig: 2345 09 99
    # description: script firewall per kernel 2.2.x

    # Da impostare per i test:
    # set -x

    #
    # NOTE:
    #
    #  Questo script  stato realizzato per essere utilizzato con la RedHat 6.0 o versioni pi recenti.
    #
    #  Questo script dovrebbe funzionare con la maggior parte dei router, dial-up e modem.
    #  E' stato scritto per le distribuzioni RedHat.
    #
    #  Prestare attenzione nel caso si desideri offrire servizi pubblici come web o ftp server.
    #
    # INSTALLAZIONE:
    #  1. Questo file  pensato per un sistema RedHat. Dovrebbe
    #     funzionare, forse senza apportare modifiche, anche su altre distro, ma
    #     ancora...chi lo sa ?!!? Queste istruzioni riguardano i sistemi RedHat.
    #
    #  2. si collochi questo file in /etc/rc.d/init.d  (si dovr essere l'utente root..)
    #     e lo si denomini con qualcosa come "firewall"    :-)
    #     lo si renda di propriet del root -->  "chown root.root <filename>"
    #     lo si renda eseguibile -->  "chmod 755 <filename>"
    #
    #  3. Si impostino i valori in base alla propria rete, alle interfacce interne, e
    #     ai server DNS.
    #     Si rimuovano i commenti alle linee presenti pi avanti per abilitare
    #     i servizi opzionali verso l'interno,
    #     ci si assicuri che il proprio NIC interno sia "eth0" (altrimenti si cambi il valore
    #     presente pi avanti).
    #     lo si provi -->  "/etc/rc.d/init.d/<filename> start"
    #     si visualizzi un elenco delle regole -->  "ipchains -L -n"
    #     si sistemi tutto ci che non va...  :-)
    #
    #  4. Si aggiunga il firewall alla struttura init della RH --> "chkconfig --add <filename>"
    #     Al boot successivo del root tutto dovrebbe impostarsi automagicamente!
    #     si dorma pure tranquilli la notte sapendo di essere *MENO* vulnerabile di prima...
    #
    # NOTE SULLE VERSIONI:
    #   20 July, 1999 - scrittura iniziale - Anthony Ball <tony@LinuxSIG.org>
    #   11 Dec, 1999 - aggiornamenti di Mark Grennan <mark@grennan.com>
    #

    ################################################
    #  Sostituire i valori sottostanti con quelli
    #  della propria rete locale.

    PRIVATENET=xxx.xxx.xxx.xxx/xx

    PUBLIC=ppp0
    PRIVATE=eth0

    # i propri server dns
    DNS1=xxx.xxx.xxx.xxx
    DNS2=xxx.xxx.xxx.xxx

    ################################################

    # alcuni pratici valori generici da usare
    ANY=0.0.0.0/0
    ALLONES=255.255.255.255

    # Libreria funzioni.
    . /etc/rc.d/init.d/functions

    # Configurazione rete.
    . /etc/sysconfig/network

    # Controlliamo che la rete sia presente.
    [ ${NETWORKING} = "no" ] && exit 0

    # Vediamo cosa  stato richiesto.
    case "$1" in

      start)
            # Inizia a fornire gli accessi
            action "Starting firewall: " /bin/true

            ##
            ## Setup
            ##
            # Ripulisci tutte le liste
            /sbin/ipchains -F input
            /sbin/ipchains -F output
            /sbin/ipchains -F forward

            # Blocca qualsiasi cosa
            /sbin/ipchains -I input 1 -j DENY

            # imposta la tattica a deny (per default  ACCEPT)
            /sbin/ipchains -P input DENY
            /sbin/ipchains -P output ACCEPT
            /sbin/ipchains -P forward ACCEPT

            # Abilitiamo il packet forwarding
            echo 1 > /proc/sys/net/ipv4/ip_forward

            ##
            ## Installazione dei moduli
            ##
            # Inserire il modulo ftp attivo. Questo permetter ftp non-passivo verso
            # le macchine della rete locale (ma non verso il router in quanto non mascherato).
            if ! ( /sbin/lsmod | /bin/grep masq_ftp > /dev/null ); then
                /sbin/insmod ip_masq_ftp
            fi

            ##
            ## Alcune caratteristiche riguardanti la sicurezza
            ##
            # Abilitare il Source Address Verification su tutte le interfacce
            # presenti e future per ottenere la protezione dallo spoof.
            if [ -e /proc/sys/net/ipv4/conf/all/rp_filter ]; then
                for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
                    echo 1 > $f
                done
            else
                echo
                    echo "PROBLEMI NELL'ABILITARE LA PROTEZIONE DALL'IP SPOOFING.  FARE ATTENZIONE. "
                echo
            fi

            # scarta bcasts sulle interfacce restanti
            /sbin/ipchains -A input -d 0.0.0.0 -j DENY
            /sbin/ipchains -A input -d 255.255.255.255 -j DENY

            # scarta i seguenti senza loggarli in quanto tendono ad essere molti...
            /sbin/ipchains -A input -p udp -d $ANY 137 -j DENY   # NetBIOS su IP
            /sbin/ipchains -A input -p tcp -d $ANY 137 -j DENY   #   ""
            /sbin/ipchains -A input -p udp -d $ANY 138 -j DENY   #   ""
            /sbin/ipchains -A input -p tcp -d $ANY 138 -j DENY   #   ""
            /sbin/ipchains -A input -p udp -d $ANY 67 -j DENY    # bootp
            /sbin/ipchains -A input -p udp -d $ANY 68 -j DENY    #   ""
            /sbin/ipchains -A input -s 224.0.0.0/8 -j DENY       # indirizzi Multicast

            ##
            ## Permetti alla rete locale di uscire
            ##
            # accetta tutti i pacchetti sull'interfaccia loopback
            /sbin/ipchains -A input -i lo -j ACCEPT

            # accetta tutti i pacchetti provenienti dalle interfacce interne "fidate"
            /sbin/ipchains -A input -i $PRIVATE -s $PRIVATENET -d $ANY -j ACCEPT
            /sbin/ipchains -A input -i $PRIVATE -d $ALLONES -j ACCEPT

            ##
            ## Permetti accessi dall'esterno ai servizi del firewall (se si vuole osare)
            ##
            # accetta pacchetti ICMP
            /sbin/ipchains -A input -p icmp -j ACCEPT
            # accetta pacchetti TCP
            /sbin/ipchains -A input -p tcp ! -y -j ACCEPT

            # permetti richieste DNS (al firewall)
            /sbin/ipchains -A input -p udp -s $DNS1 domain -d $ANY 1023: -j ACCEPT
            /sbin/ipchains -A input -p udp -s $DNS2 domain -d $ANY 1023: -j ACCEPT
            # o (IDEA MIGLIORE) esegui un server DNS caching sul router e usa le
            # seguenti due linee al loro posto ...
            # /sbin/ipchains -A input -p udp -s $DNS1 domain -d $ANY domain -j ACCEPT
            # /sbin/ipchains -A input -p udp -s $DNS2 domain -d $ANY domain -j ACCEPT

            # rimuovi il commento dalla seguente linea per accettare richieste ssh
            /sbin/ipchains -A input -p tcp -d $ANY 22 -j ACCEPT

            # rimuovi il commento dalla seguente linea per accettare richieste telnet (PESSIMA IDEA!!)
            /sbin/ipchains -A input -p tcp -d $ANY telnet -j ACCEPT

            # rimuovi il commento dalla seguente linea per permettere NTP (network time protocol) verso il router
            # /sbin/ipchains -A input -p udp -d $ANY ntp -j ACCEPT

            # rimuovi il commento dalla seguente linea per permettere SMTP (non per i client mail - solo server)
            /sbin/ipchains -A input -p tcp -d $ANY smtp -j ACCEPT

            # rimuovi il commento per permettere POP3 (per client mail)
            /sbin/ipchains -A input -p tcp -d $ANY 110 -j ACCEPT

            # rimuovi il commento dalla seguente linea per inviare mail o effettuare ftp
            /sbin/ipchains -A input -p tcp -d $ANY auth -j ACCEPT

            # rimuovi il commento alla seguente linea per permettere HTTP (solo se si sta eseguendo un web server sul router)
            /sbin/ipchains -A input -p tcp -d $ANY http -j ACCEPT

            # rimuovi il commento alla seguente linea per accettare richieste FTP
            /sbin/ipchains -A input -p tcp -d $ANY ftp -j ACCEPT

            ##
            ## Masquerading
            ##
            # maschera i pacchetti provenienti dalla rete locale
            /sbin/ipchains -A forward -s $PRIVATENET -d $ANY -j MASQ

            ##
            ## scarta QUALSIASI altra cosa e registrala in /var/log/messages
            ##
            /sbin/ipchains -A input -l -j DENY

            # Rimuovi il blocco
            /sbin/ipchains -D input 1

            ;;

      stop)
            action "Stoping firewall: " /bin/true
            echo 0 > /proc/sys/net/ipv4/ip_forward
            /sbin/ipchains -F input
            /sbin/ipchains -F output
            /sbin/ipchains -F forward

            echo
            ;;

      restart)
            action "Restarting firewall: " /bin/true
            $0 stop
            $0 start

            echo
            ;;

      status)
            # Elenca le impostazioni
            /sbin/ipchains -L
            ;;

      test)
            ##
            ##     E' alquanto semplice
            ##    (Non  AFFATTO sicuro)
            action "WARNING Test Firewall: " /bin/true
            /sbin/ipchains -F input
            /sbin/ipchains -F output
            /sbin/ipchains -F forward
            echo 1 > /proc/sys/net/ipv4/ip_forward
            /sbin/ipchains -A input -j ACCEPT
            /sbin/ipchains -A output -j ACCEPT
            /sbin/ipchains -P forward DENY
            /sbin/ipchains -A forward -i $PUBLIC -j MASQ

            echo
            ;;

      *)
            echo "Usage: $0 {start|stop|restart|status|test}"
            exit 1

    esac


  esac



  1166..  AAPPPPEENNDDIICCEE BB -- SSccrriipptt RRCC VVPPNN ppeerr llaa RReeddHHaatt



    #!/bin/sh
    #
    # vpnd            Questo script basato sulla shell provveder ad avviare e
    #                 a chiudere vpnd (Virtual Privage Network connections).
    #
    # chkconfig: - 96 96
    # description: vpnd
    #

    # Libreria funzioni.
    . /etc/rc.d/init.d/functions

    # Configurazione rete.
    . /etc/sysconfig/network

    # Controlla che la rete sia presente.
    [ ${NETWORKING} = "no" ] && exit 0

    [ -f /usr/sbin/vpnd ] || exit 0

    [ -f /etc/vpnd.conf ] || exit 0

    RETVAL=0

    # Vediamo cosa  stato richiesto.
    case "$1" in
      start)
            # Avvia i daemon.
            echo -n "Starting vpnd: "
            daemon vpnd
            RETVAL=$?
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/vpnd
            echo
            ;;
      stop)
            # Ferma i daemon.
            echo -n "Shutting down vpnd: "
            killproc vpnd
            RETVAL=$?
            [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/vpnd
            echo
            ;;
      restart)
            $0 stop
            $0 start
            ;;
      *)
            echo "Usage: vpnd {start|stop|restart}"
            exit 1
    esac

    exit $RETVAL



  1177..  NNoottaa ssuullllaa ttrraadduuzziioonnee

  La traduzione originale di questo HOWTO  opera della Apogeo
  <http://www.apogeonline.com/>, per il libro LLiinnuuxx HHoowwTToo ((LLaa bbiibbbbiiaa ddii
  LLiinnuuxx)) realizzato in collaborazione con il Pluto. L'Apogeo ha
  gentilmente concesso questa ed altre traduzioni ad ILDP per la sua
  diffusione elettronica.

  Conversione in SGML e correzione a cura di Giovanni Bortolozzo
  bortopluto.linux.it, cui vanno segnalati pure eventuali errori,
  incongruenze ecc.

  Aggiornamento alla versione 0.80 ad opera di Marco Masetti
  marcomas@libero.it.



