Router + Proxy + Firewall

Preambolo

Ho una LAN con 25 utenti che utilizzano un accesso a internet attraverso una linea ADSL e ho la necessità di proteggerla e ottimizzare l’uso della banda dell’ADSL.
Per fare questo utilizzo un PC con Intel Celeron 1.1 GHz, 128 Mb di RAM e un disco di 20 GB.
Ho scelto il seguente software Open Source:
– Distribuzione :Linux Slackware 10.1
– Utilità per l’aggiornamento del software Swaret
– Proxy server: Squid
– Utilità per la configurazione del firewall Guarddog
La configurazione prevede un proxy trasparente e il mascheramento egli indirizzi (NAT)

Squid

– Risorse : Per l’installazione di Squid è sufficente seguire le indicazioni in Squid-Book.
Il processo è molto semplice, a patto che si seguano le considerazioni fatte per riservare la memoria e lo spazio su disco.
Nel mio sistema ho riservato 32Mb di Ram e 1200 MB di Hard disk.

L’installazione l’ho effettuata compilando il sorgente scaricato dal sito ufficiale, sperando di ottenere qualche miglioramento nelle prestazioni.

Dopo aver configurato a dovere il file squid.conf, ho eseguito Squid, con le opzioni -N -d1, questo mi ha permesso di testare il funzionamento senza che il programma venisse esguito come servizio (-s).

Per testare l’effettivo funzionamento del proxy, è sufficente impostare un browser di un client della LAN per avere come proxy predefinito il nostro.

Per il transparent proxy sono sufficenti le impostazioni di squid.conf e la riga che esegue il redirect dei pacchetti sulla porta 3128 del proxy

Configurazione della macchina

Dopo l’installazione della Slack e l’aggiornamento con Swaret, abilito le due schede di rete installate sul PC utilizzando il comando ifconfig.
Le due reti hanno i seguenti indirizzi

192.168.0.0/24
192.168.1.0/24
ifconfig eth0 192.168.1.0 up netmask 255.255.255.0
ifconfig eth1 192.168.1.1 up netmask 255.255.255.0

Ora si deve dare le regole di routing che indicano il percorso dei pacchetti verso la corretta interfaccia
route add -net 192.168.0.0 netmask 255.255.255.0 eth0
route add -net 192.168.1.0 netmask 255.255.255.0 eth1
route add default gw 192.168.1.1

Ora digitando il comando route -n posso vedere l’impostazione delle regole di routing della mia macchina:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo
0.0.0.0 192.168.0.1 0.0.0.0 UG 1 0 0 eth0

Per attivare il NAT e redirezionare il traffico sul proxy si crea uno script da eseguire all’avvio del server che imposta la giusta configurazione.
#!/bin/sh
iptables="/usr/sbin/iptables"

echo ‘0’ > /proc/sys/net/ipv4/ip_forward
# Finche’ tutto non e’ in ordine, niente forwarding

# Carichiamo i moduli pi importanti!
# (attenzione NAT e MASQUERADE sono essenziali x il nostro scopo)
modprobe ip_tables
modprobe ip_conntrack
modprobe ip_conntrack_ftp ip_nat_ftp
modprobe iptable_nat
modprobe ipt_MASQUERADE

# Aggiungiamo una regola alla catena di postrouting:
# tutti i pacchetti in uscita attraverso l’interfaccia “eth0”
# dovranno essere mascherati
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

# Adesso abilitiamo il passaggio dei pacchetti (forwarding)
echo ‘1’ > /proc/sys/net/ipv4/ip_forward

# attivo il proxy (lo metto qui per comodit?)
squid -s

Vado a dare un’occhiata al file di log per gli accessi di Squid e verifico che il proxy ha loggato correttamente tutti i siti che ho visitato.

Tutti, ma non quei due

Può capitare che nella LAN alcune macchine siano abilitate a usi diversi e non c’è la necessità di tracciare un log dei siti visitati.
Quindi bisogna dare delle direttive che impediscano ai pacchetti che arrivano da quelle macchine di passare per il proxy.
# escludo alcuni IP
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 0/0 -s 192.168.1.25 --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 0/0 -s 192.168.1.3 --dport 80 -j ACCEPT

# e poi mando tutto al PROXY
iptables -t nat -A PREROUTING -i eth1 -p tcp -d 0/0 –dport 80 -j REDIRECT –to-port 3128

Configurare il Firewall con Guarddog

Guarddog è molto semplice da installare (basta usare Swaret) e da configurare.
Per usarlo come firewall per una rete LAN è necessario definire una nuova zona che identifica la LAN, specificando il range di indirizzi.
Successivamente bisogna abilitare i servizi che una zona può fornire alle altre.
Quindi la zona Internet (predefinita) deve fornire il serizio HTTP alla zona LAN (o come l’avete chiamata) per far si che gli utenti della LAN possano accedere alla web Internet.

La maggior parte delle applicazioni è presente negli elenchi di Guarddog e basta “spuntare” la casellina giusta, ma si possono anche aggiungere porte e servizi mancanti.

Il tutto è ben spiegato sulla guida ufficiale di Guarddog
… e ora ? tutto al sicuro ?

Per avere una buona rassicurazione si può utilizzare un servizio on-line di scansione delle porte che diversi siti offrono.
Ne segnalo uno, ma ce ne sono diversi, gratuiti, che vanno a curiosare sulle porte del nostro firewall per vedere cosa abbiamo lasciato aperto e ci dicono anche quali pericoli corriamo.

Il sito che segnalo è http://www.pcflank.com, dove si possono eseguire molteplici test: trojan, port scanner, exploit, ecc.

2 comments for “Router + Proxy + Firewall

  1. 28 gennaio 2008 at 18:06

    Hope it would be useful!

    Yes, it is ! Thanks.

  2. artiomix
    28 gennaio 2008 at 15:35

    Here is detailed article on how to set up NAT gateway with Linux and ipables. Hope it would be useful! :)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *