Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 243

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
 <META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
 <TITLE>Firewalling and Proxy Server HOWTO: Preparare il sistema Linux</TITLE>
 <LINK HREF="Firewall-HOWTO-7.html" REL=next>
 <LINK HREF="Firewall-HOWTO-5.html" REL=previous>
 <LINK HREF="Firewall-HOWTO.html#toc6" REL=contents>
</HEAD>
<BODY>
<A HREF="Firewall-HOWTO-7.html">Avanti</A>
<A HREF="Firewall-HOWTO-5.html">Indietro</A>
<A HREF="Firewall-HOWTO.html#toc6">Indice</A>
<HR>
<H2><A NAME="s6">6. Preparare il sistema Linux</A></H2>

<P>Si installi il sistema Linux nel modo pi&ugrave; 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. 
<P>Siccome la maggior parte delle distribuzioni non fornisce in genere un kernel efficiente per le proprie esigenze, sar&agrave; 
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&agrave;, ci si ricordi di rimuoverle dopo aver completato la configurazione del kernel. 
<P>
<P>
<H2><A NAME="ss6.1">6.1 Compilazione del Kernel</A>
</H2>

<P> 
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.
<P>Si prenda un kernel stabile.  Io sto utilizzando, per il mio sistema, la 2.2.13. 
Quindi questa documentazione &egrave; basata sulle sue impostazioni.
<P>&Egrave; necessario ricompilare il kernel di Linux con le opzioni
appropriate.  Se non si &egrave; mai ricompilato il proprio kernel prima
d'ora, si dovrebbe leggere il Kernel HOWTO, l'Ethernet HOWTO e il NET-2
HOWTO.
<P>Qui ci sono le impostazioni di rete che so per certo come funzionanti. 
Ne ho marcate alcune con un ?.  Se si &egrave; intenzionati ad utilizzarle, le si abilitino
pure.
Per modificare le impostazioni del mio kernel utilizzo "make menuconfig".
<P>
<PRE>
    &lt;*> Packet socket
    [ ] Kernel/User netlink socket
    [*] Network firewalls
    [ ] Socket Filtering
    &lt;*> 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
    &lt; > IP: tunneling
    &lt; > IP: GRE tunnels over IP
    [?] IP: aliasing support
    [*] IP: TCP syncookie support (not enabled per default)
    --- (it is safe to leave these untouched)
    &lt; > IP: Reverse ARP
    [*] IP: Allow large windows (not recommended if &lt;16Mb of memory)
    &lt; > The IPv6 protocol (EXPERIMENTAL)
    ---
    &lt; > The IPX protocol
    &lt; > Appletalk DDP
    &lt; > CCITT X.25 Packet Layer (EXPERIMENTAL)
    &lt; > LAPB Data Link Driver (EXPERIMENTAL)
    [ ] Bridging (EXPERIMENTAL)
    [ ] 802.2 LLC (EXPERIMENTAL)
    &lt; > Acorn Econet/AUN protocols (EXPERIMENTAL)
    &lt; > WAN router
    [ ] Fast switching (read help!)
    [ ] Forwarding between high speed interfaces
    [ ] PU is too slow to handle full bandwidth
    QoS and/or fair queueing  ---> 
</PRE>
<P>Dopo aver completato tutte le impostazioni sar&agrave; necessario ricompilare, reinstallare il kernel e riavviare.
Io utilizzo il comando:
<P>make dep;make clean;make bzlilo;make modules;make modules_install;init 6 per fare tutto in un colpo solo.
<P>
<H2><A NAME="ss6.2">6.2 Configurazione di due schede di rete</A>
</H2>

<P>Se il proprio computer possiede due schede di rete, molto probabilmente
sar&agrave; 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 &egrave; la seguente:
<PRE>
append=&quot;ether=12,0x300,eth0 ether=15,0x340,eth1&quot; 
</PRE>
<P>
<H2><A NAME="ss6.3">6.3 Configurazione degli indirizzi di rete</A>
</H2>

<P> 
Siamo arrivati finalmente alla parte pi&ugrave; divertente dell'impostazione. 
Non sto per addentrarmi ad approfondire come impostare una LAN, per risolvere eventuali problemi  
si legga il Networking-HOWTO.
<P>L'obiettivo &egrave; di fornire il sistema firewall di due connessioni di rete, 
una diretta verso Internet (versante non sicuro) e una verso la LAN (versante sicuro).
<P>Ad ogni modo, ci sono un paio di decisioni da prendere.
<P>
<OL>
<LI> Si vogliono utilizzare per la propria rete locale indirizzi IP reali o qualcosa di differente ?</LI>
<LI> L'indirizzo IP &egrave; statico oppure &egrave; assegnato dall'ISP ?</LI>
</OL>
<P>Dal momento che non si desidera che Internet abbia
accesso ad alcuna parte della rete privata, non &egrave; necessario
utilizzare degli &quot;indirizzi reali&quot;. 
Si potrebbero prendere degli indirizzi qualsiasi per la propria rete LAN, ma ci&ograve; non &egrave; raccomandato.
Se i dati dovessero essere instradati fuori dalla LAN, potrebbero giungere ad una porta di un altro sistema.
<P>Esistono comunque molti intervalli di indirizzi internet riservati appositamente per le reti private. 
<P>Tra questi c'&egrave; 192.168.1.xxx che utilizzeremo nei nostri esempi.
<P>Sar&agrave; inoltre necessario utilizzare l'IP masquerading. 
Con questo procedimento il firewall far&agrave; proseguire i pacchetti e, per farli viaggiare in Internet, 
li modificher&agrave; utilizzando un indirizzo IP &quot;REALE&quot;.  
<P>Utilizzando questi indirizzi IP non-instradabili la propria rete sar&agrave; pi&ugrave; sicura.
I router internet non invieranno pacchetti con questi indirizzi.
<P>A questo punto potrebbe essere utile leggere l'IP Masquerading HOWTO.
<P>
<PRE>
            24.94.1.123  __________    192.168.1.1
      _/\__/\_        \ |          | /           _______________
     |        |        \| Sistema  |/           |               |
    / Internet \--------| Firewall |------------| Workstation/s |
    \_  _  _  _/        |__________|            |_______________|
      \/ \/ \/  
</PRE>
<P>E' necessario possedere un indirizzo IP &quot;reale&quot; da assegnare alla scheda di rete corrispondente ad Internet.
Questo indirizzo pu&ograve; essere assegnato in modo permanente (indirizzo IP statico) oppure 
al momento della connessione alla rete attraverso il processo PPP.
<P>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&agrave; il gateway di default. A tutte le altre macchine nella rete protetta (LAN) 
si potr&agrave; assegnare un numero appartenente all'intervallo 192.168.1.xxx (da 192.168.1.2 a 192.168.1.254).  
<P>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 &egrave; assegnato in base al tipo di connessione.
<P>Segue, come esempio, ifcfg-eth1 (seconda scheda ethernet):
<P>
<PRE>
    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
</PRE>
<P>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.
<P>Questo file ifcfg potrebbe essere simile a:
<P>
<PRE>
    DEVICE=&quot;ppp0&quot;           
    ONBOOT=&quot;yes&quot;
    USERCTL=&quot;no&quot;
    MODEMPORT=&quot;/dev/modem&quot;      
    LINESPEED=&quot;115200&quot;          
    PERSIST=&quot;yes&quot;   
    DEFABORT=&quot;yes&quot;  
    DEBUG=&quot;yes&quot;     
    INITSTRING=&quot;ATZ&quot;
    DEFROUTE=&quot;yes&quot;  
    HARDFLOWCTL=&quot;yes&quot;           
    ESCAPECHARS=&quot;no&quot;
    PPPOPTIONS=&quot;&quot;   
    PAPNAME=&quot;LoginID&quot;           
    REMIP=&quot;&quot;        
    NETMASK=&quot;&quot;      
    IPADDR=&quot;&quot;       
    MRU=&quot;&quot;          
    MTU=&quot;&quot;          
    DISCONNECTTIMEOUT=&quot;&quot;        
    RETRYTIMEOUT=&quot;5&quot;
    BOOTPROTO=&quot;none&quot;
</PRE>
<P>
<P>
<H2><A NAME="ss6.4">6.4 Verifica del funzionamento della rete</A>
</H2>

<P>Si cominci impartendo i comandi ifconfig e route. Se si possiedono due
schede di rete l'output di ifconfig dovrebbe essere simile al seguente:
<P>
<PRE>
  #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
</PRE>
<P>mentre la propria tabella di instradamento dovrebbe essere:
<P>
<PRE>
  #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
</PRE>
<P><B>Nota:</B> 24.94.1.0 &egrave; il lato Internet di questo firewall e
192.168.1.0 &egrave; il lato privato.
<P>Ora &egrave; 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 &egrave; possibile, si passi nuovamente al NET-2 HOWTO e si lavori ancora un po' sulla rete.
<P>Dopodich&eacute;, 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 &egrave; 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.
<P>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&agrave; qualche filtro di pacchetti 
impostato. Li si disabilitino e si riprovi. E' necessario assicurarsi che il filtraggio sia a posto.
<P>Per i kernel pi&ugrave; recenti della 2.1.102 si pu&ograve; impartire il comando:
<P>
<PRE>
    echo "0" > /proc/sys/net/ipv4/ip_forward
</PRE>
<P>Se si sta utilizzando un vecchio kernel (PERCH&Eacute; ?) sar&agrave; necessario ricompilare il kernel con 
il forwarding disabilitato (meglio passare ad un kernel pi&ugrave; recente). 
<P>Si provi ad effettuare di nuovo un ping verso l'indirizzo esterno del firewall (24.94.1.123), non dovrebbe funzionare. 
<P>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:
<P>
<PRE>
    echo "1" > /proc/sys/net/ipv4/ip_forward
</PRE>
<P><B>NOTA IMPORTANTE:</B>
Se si utilizzano indirizzi IP &quot;REALI&quot; 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.
<P>Un test di questo problema pu&ograve; 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.  
<P>Funziona ? Splendido. La fase pi&ugrave; ardua &egrave; compiuta. :-)
<P>
<H2><A NAME="ss6.5">6.5 Sicurezza del Firewall</A>
</H2>

<P>Un firewall non &egrave; di nessuna utilit&agrave; se lasciato aperto agli attacchi.
Un &quot;malintenzionato&quot; 
potrebbe ottenere l'accesso ad un servizio non del firewall e modificarlo secondo le
proprie esigenze.
<P>Date un'occhiata al file /etc/inetd.conf, utilizzato per configurare inetd, noto anche come &quot;super server&quot;.
Esso controlla parecchi demoni che attiva nel momento in cui sono richiesti da pacchetti che arrivano diretti verso 
porte &quot;note&quot; (&quot;well known port&quot;).
<P>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.
<P>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 <B>&quot;kill -HUP &lt;pid&gt;&quot;</B>, dove &lt;pid&gt; 
&egrave; 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.
<P>Si faccia un test effettuando un telnet alla porta 15 (netstat) del firewall, se si ottiene dell'output allora non si &egrave; 
disabilitato questo servizio.
<P>telnet localhost 19
<P>Si pu&ograve; inoltre creare il file /etc/nologin. Si inserisca qualche linea di testo tipo (FILA VIA!).
Quando questo file esiste, login non consentir&agrave; agli utenti di connettersi. Essi vedranno il contenuto di questo file ed il 
loro login sar&agrave; rifiutato. Solo root potr&agrave; accedere.
<P>Se l'utente &egrave; 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 &egrave; attraverso la console e solo come root.
<P>MAI e poi MAI effettuare un telnet verso un sistema e accedere come ROOT. 
Se &egrave; necessario accedere in remoto come root utilizzare SSH (Secure Shell).
Si potrebbe perfino disabilitare il telnet.
<P>Se si &egrave; davvero paranoici allora si dovrebbe utilizzare lids (Linux Intrusion Detect System), una patch di scoperta delle intrusioni 
per il kernel Linux; pu&ograve; proteggere file importanti evitando che siano modificati. 
Quando &egrave; presente, nessuno (incluso root) pu&ograve; cambiare i file, le directory o sotto-directory protette.
Per modificare i file protetti &egrave; necessario riavviare il sistema con l'impostazione security=1 nel LILO 
(riavvio in single user mode).
<P>
<HR>
<A HREF="Firewall-HOWTO-7.html">Avanti</A>
<A HREF="Firewall-HOWTO-5.html">Indietro</A>
<A HREF="Firewall-HOWTO.html#toc6">Indice</A>
</BODY>
</HTML>