29.5. Configurazione di un proxy trasparente

La procedura normale di utilizzo dei proxy è la seguente: il server Web invia le richieste a una porta specifica del server proxy e il proxy fornisce gli oggetti richiesti, indipendentemente o meno che siano presenti nella cache. Se si utilizza una rete possono verificarsi molte situazioni diverse:

In tutti questi casi è necessario usare un proxy trasparente. Il principio è semplice: il proxy intercetta e risponde alle richieste del browser Web, che riceve le pagine Web richieste senza sapere da dove provengono. Come suggerisce il nome stesso, questa operazione viene effettuata in modo trasparente.

29.5.1. Opzioni di configurazione in /etc/squid/squid.conf

Le opzioni che devono essere attivate nel file /etc/squid/squid.conf per impostare ed eseguire il proxy trasparente sono:

  • httpd_accel_host virtual

  • httpd_accel_port 80

    Il numero di porta su cui è situato il server HTTP

  • httpd_accel_with_proxy on

  • httpd_accel_uses_host_header on

29.5.2. Configurazione del firewall con SuSEfirewall2

Adesso è possibile reindirizzare tutte le richieste in arrivo alla porta Squid tramite il firewall e la regola per l'inoltro delle porte. Per eseguire questa operazione, usare lo strumento SuSEfirewall2 allegato descritto riportato nella Sezione 4.1.4.1, "Configurazione con YaST". Il file di configurazione può essere trovato in /etc/sysconfig/SuSEfirewall2. Il file di configurazione è costituito da due voci ben documentate Per impostare un proxy trasparente, è necessario configurare diverse opzioni del firewall:

  • Dispositivo che punta a Internet: FW_DEV_EXT="eth1"

  • Dispositivo che punta alla rete: FW_DEV_INT="eth0"

Definire le porte e i servizi (vedere /etc/services) sul firewall accessibile da reti non fidate (esterne). Nell'esempio vengono forniti solo i servizi Web all'esterno:

FW_SERVICES_EXT_TCP="www"

Definire le porte e i servizi (vedere /etc/services) sul firewall accessibile da reti fidati (interne) tramite TCP e UDP:

FW_SERVICES_INT_TCP="domain www 3128"
FW_SERVICES_INT_UDP="domain"

Ciò consente di accedere ai servizi Web e a Squid (la cui porta di default è 3128). Il servizio "domain" sta per DNS (Domain Name Service). Questo servizio è comunemente usato. Altrimenti rimuovere alcune delle voci e impostare la seguente opzione su no:

FW_SERVICE_DNS="yes"

L'opzione più importante è l'opzione numero 15:

Esempio 29.1. Configurazione del firewall: opzione 15

# 15.) 
# Which accesses should be redirected to a local port 
# on the firewall machine? 
# 
# This can be used to force all internal users to surf via your 
# Squid proxy, or transparently redirect incoming Web traffic to 
# a secure Web server. 
# 
# Choice: leave empty or use the following explained syntax of 
# redirecting rules, separated with spaces. 
# A redirecting rule consists of 1) source IP/net, 
# 2) destination IP/net, 3) original destination port and 
# 4) local port to redirect the traffic to, separated by a colon, 
# e.g. "10.0.0.0/8,0/0,80,3128 0/0,172.20.1.1,80,8080" 

I commenti mostrati nell'esempio mostrano la sintassi da usare. Immettere prima l'indirizzo IP, quindi la netmask delle reti interne che accedono al firewall proxy. Quindi, immettere l'indirizzo IP e la netmask a cui i client devono inviare le richieste. Per i browser Web specificare le reti 0/0, ossia una scheda jolly equivalente alla voce "to everywhere." Quindi, immettere la porta originale a cui devono essere inviate le richieste e infine la porta a cui devono essere reindirizzate tutte le richieste. Poiché Squid supporta altri protocolli oltre al protocollo HTTP, occorre reindirizzare le richieste da altre porte al proxy, ad esempio FTP (porta 21), HTTPS o SSL (porta 443). Nell'esempio i servizi Web (porta 80) vengono reindirizzati alla porta proxy (porta 3128). Se si aggiungono altre reti o servizi, è necessario ricordarsi di lasciare uno spazio vuoto dopo ciascuna voce.

FW_REDIRECT_TCP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"
FW_REDIRECT_UDP="192.168.0.0/16,0/0,80,3128 192.168.0.0/16,0/0,21,3128"

Per avviare il firewall e la nuova configurazione, modificare la voce nel file /etc/sysconfig/SuSEfirewall2. Impostare la voce START_FW su "sì".

Avviare Squid come mostrato nella Sezione 29.3, "Avvio di Squid". Per verificare che tutto funzioni correttamente, controllare i registri di Squid in /var/log/squid/access.log. Per verificare che tutte le porte siano configurate correttamente, eseguire una scansione delle porte sul computer utilizzando un qualsiasi computer esterno alla rete. Verificare che sia aperta solo la porta 80 corrispondente ai servizi Web. Per eseguire una scansione delle porte con nmap, usare la sintassi del comando nmap -O IP_address.