Squid e Transparent Proxy

Mer, 09/03/2005 - 13:49

Squid e Transparent Proxy

Inviato da Incubus 17 commenti
SCOPO

Monitorare il traffico http/s della propria lan verso l'esterno senza l'utente se ne accorga

STRUMENTI

Per raggiungere il nostro scopo avremo bisogno di squid e iptables.
Con squid monitoreremo il traffico, con iptables forzeremo in modo invisibile la navigazione attraverso il proxy.

ATTENZIONE! In questa guida è indicata solo la regole di iptables per forzare la navigazione. La configurazione del firewall è lasciata al lettore
INSTALLAZIONE

L'installazione di squid è semplice:

# apt-get install squid

ed il gioco è fatto.

CONFIGURAZIONE

Il file principale di squid è /etc/squid/squid.conf, quindi non ci resta che andare ad aprirlo con l'editor di fiducia:


# NETWORK OPTIONS
# Nome host (FQDN) e porta dove il proxy sarà in ascolto
http_port proxy.valhalla.lan:8080

# TAG: icp_port
# Porta usata per comunicare con altri proxy
# 0: funziona disabilitata (inutile visto che useremo un solo proxy)
icp_port 0

# TAG: hierarchy_stoplist
# Lasciamo il default che va bene così Smile
hierarchy_stoplist cgi-bin ?

# TAG: no_cache
# Lasciamo il default che va bene così Smile
acl QUERY urlpath_regex cgi-bin \?

# TAG: maximum_object_size (bytes)
# Dimensione massima degli oggetti da tenere in cache.
# Uso un valore molto altro perchè avendo N pc con debian che si aggiornano in un lasso di tempo molto piccolo, mantengo in cache i pacchetti comuni che non devono quindi essere riscaricati da internet.
maximum_object_size 30 MB

# TAG: cache_access_log
# File di log degli accessi al proxy
cache_access_log /var/log/squid/access.log

# TAG: cache_log
# File di log della cache
cache_log /var/log/squid/cache.log

# TAG: cache_store_log
# File di log degli oggetti
cache_store_log /var/log/squid/store.log

# TAG: emulate_httpd_log on|off
# Simulo il log nel formato del demone http per poter generare le statistiche con awstats
emulate_httpd_log on

# TAG: pid_filename
# File con il pid del processo
pid_filename /var/run/squid.pid

# TAG: log_fqdn on|off
# Squid effettua un DNS lookup per sapere i nomi di chi vuole usarlo e salvare tali nomi nel log. Questo causa una latenza per cui lo disabilitiamo.
log_fqdn off

# OPTIONS FOR EXTERNAL SUPPORT PROGRAMS
# -----------------------------------------------------------------------------

# TAG: ftp_user
# Utente da usare per gli accessi ai server ftp
ftp_user anonymous@tin.it

# TAG: hosts_file
# Path assoluto del file hosts (solitamente /etc/hosts)
hosts_file /etc/hosts

# TAG: refresh_pattern
# Lasciamo i valori di default che vanno bene Smile
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320

# ACCESS CONTROLS
# -----------------------------------------------------------------------------

# TAG: acl
# Definiamo le Access Control List
# Nome: all
# Tipo: filtrosu ip sorgente
# Valore: 0.0.0.0/0.0.0.0 (tutti)
acl all src 0.0.0.0/0.0.0.0

acl manager proto cache_object

# Nome: localhost
# Tipo: filtro su ip sorgente
# Valore: 127.0.0.1/255.255.255.255 (Solo il localhost)
acl localhost src 127.0.0.1/255.255.255.255

# Nome: to_localhost
# Tipo: filtro su ip di destinazione
# Valore: 127.0.0.0/8 (Solo gli ip che identificano il localhost)
acl to_localhost dst 127.0.0.0/8

# Nome: SSL_ports
# Tipo: filtro su numero porta
# Valore: 443 563 (Porte protocollo ssl)
acl SSL_ports port 443 563

acl SSL_ports port 873
acl Safe_ports port 80
acl Safe_ports port 21
acl Safe_ports port 443 563
acl Safe_ports port 70
acl Safe_ports port 210
acl Safe_ports port 1025-65535
acl Safe_ports port 280
acl Safe_ports port 488
acl Safe_ports port 591
acl Safe_ports port 777
acl Safe_ports port 631
acl Safe_ports port 873
acl Safe_ports port 901
acl purge method PURGE
acl CONNECT method CONNECT

# Questa è l'acl che identifica la mia lan
acl Valhalla.lan src 192.168.1.0/255.255.255.0

# TAG: http_access
# Definiamo chi può usare il proxy e chi no sfruttando le ACL
# Tuti gli ip appartenenti alla LAN possono usare il proxy, il resto non lo tocchiamo e lasciamo i valori di default.
http_access allow Valhalla.lan
http_access allow manager localhost

# Only allow purge requests from localhost
http_access deny manager
http_access allow purge localhost
# Deny requests to unknown ports
http_access deny !Safe_ports
# Deny CONNECT to other than SSL ports
http_access deny purge
#
http_access deny CONNECT !SSL_ports

# And finally deny all other access to this proxy
http_access allow localhost
http_access deny all

# TAG: http_reply_access
# Abilitiamo le risposte alle richieste dei client
http_reply_access allow all

# TAG: icp_access
# Abilitamo o meno le risposte alle richieste icp
icp_access allow all

# ADMINISTRATIVE PARAMETERS
# -----------------------------------------------------------------------------

# TAG: cache_mgr
# Email del gestore della cache
cache_mgr squidadmin@valhalla.lan

# TAG: visible_hostname
# Nome da mostrare in caso di errori
visible_hostname proxy.valhalla.lan

# OPTIONS FOR THE CACHE REGISTRATION SERVICE
# -----------------------------------------------------------------------------
#

# HTTPD-ACCELERATOR OPTIONS
# -----------------------------------------------------------------------------

# TAG: httpd_accel_host
# TAG: httpd_accel_port
# Necessarie per il transparent proxy
httpd_accel_host virtual
httpd_accel_port 80

# TAG: httpd_accel_with_proxy on|off
# Necessario per il transparent proxy
httpd_accel_with_proxy on

# TAG: httpd_accel_uses_host_header on|off
# Necessario per il transparent proxy
httpd_accel_uses_host_header on

# MISCELLANEOUS
# -----------------------------------------------------------------------------

# TAG: logfile_rotate
# Numero di log da tenere in memoria (da 0 a 9)
logfile_rotate 10

# TAG: error_directory
# Directory dove prendere i messaggi di errore
# E' possibile scegliere la lingua in base alle disponibili
error_directory /usr/share/squid/errors/Italian

# TAG: coredump_dir
# Dove mette i core-dump
coredump_dir /var/spool/squid

# TAG: ie_refresh on|off
# Necessaria per il transparent proxy con IE
ie_refresh on

# TAG: cache_replacement_policy
# TAG: memory_replacement_policy
# Metodo di gestione dei file in cache e su hdd
cache_replacement_policy lru
memory_replacement_policy lru

A questo punto squid è configurato:
la prima volta che lo si avvia, è necessario eseguire

# squid -z

per fare si che venga (ri)generata la struttura delle cartelle di cache.
Per quanto riguarda iptables, basta impostare una semplice regola:

# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-destination 192.168.1.2:8080

ovvero Tutti i pacchetti tcp che arrivano sull'interfaccia eth0 che hanno come porta di destinazione la 80, redirigili a 192.168.1.2 sulla porta 8080

Ovviamente sulla porta 8080 del pc che ha ip 192.168.1.2 c'è in ascolto squid. Cambiate ip e porta secondo la vostra configurazione e sottorete
CREDITS

Autore: Incubus
E-Mail: incubus@gl-como.net
Membro del Gruppo Linux Como: http://www.gl-como.net


In:



Commenti

Ritratto di paolo
#1

Inviato da paolo il Mer, 09/03/2005 - 17:40.

Ottimo.

Guida utilissima, ottimo l'uso dei tag di formattazione, molto ben dettagliata.

Ti meriti un bel 10! Wink

Grazie per il tuo impegno. Big Grin

Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network



Ritratto di Incubus
#2

Inviato da Incubus il Mer, 09/03/2005 - 19:33.

Re: Ottimo.

Grazie 1000



Ritratto di pigio
#3

Inviato da pigio il Mer, 09/03/2005 - 19:47.

grazieeeeeeeeeeee

Ma mi hai letto nella testa??? devo realizzare proprio un proxy che mi controlli gli accessi ad internet, ti adorerò a vita 8-)

toglietemi tutto, ma non toglietemi la mia tty



Ritratto di cheis
#4

Inviato da cheis il Gio, 10/03/2005 - 10:23.

Re: grazieeeeeeeeeeee

complimenti!!.. metto in pratica subito.. Wink

[=x-small]Knowledge is power: SHARE IT BABY!!![/]
_____________________________________________



Ritratto di Incubus
#5

Inviato da Incubus il Gio, 10/03/2005 - 11:57.

Re: grazieeeeeeeeeeee


Un'altra delle cose che si può fare è inibire l'accesso verso certi siti o da certi pc a seconda delle ore del giorno
Un altro programma che si affianca al proxy server in oggetto è squidguard con cui pero' non ho mai avuto a che fare Thinking



Ritratto di kripsio
#6

Inviato da kripsio il Ven, 11/03/2005 - 00:15.

Re: grazieeeeeeeeeeee

Veramente bello... ottima guida ed ottimo file di configurazione ben commentato... acc.. se la facevi 20 giorni fa mi risparmiavi un po' di grattacapi Laughing



Ritratto di kripsio
#7

Inviato da kripsio il Ven, 11/03/2005 - 00:21.

Re: grazieeeeeeeeeeee

Quote:

Un altro programma che si affianca al proxy server in oggetto è squidguard

squidguard e' un programmillo davvero simpatico che permette di impostare, tra le altre cose, whitelist || blacklist

Per istruire squid a farlo funzionare e' sufficiente inserire nello squid.conf
<br />redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf<br />

la configurazione e', necessariamente, molto personalizzata a seconda delle esigenze.
Sul sito di squidguard si trovano un sacco di esempi (http://www.squidguard.org/) e un database di siti (xxx, warex, violence && so on) da applicare.

Da notare anche il pacchetto:
<br />chastity-list - blacklists for SquidGuard<br />

che dovrebbe contenere un db aggiornato e pacchettizzato debian ma che non ho ancora avuto modo di provare.



Ritratto di pipex
#8

Inviato da pipex il Lun, 14/03/2005 - 23:42.

squid, non proprio x monitorare

la descrizione
"Monitorare il traffico http/s della propria lan verso l'esterno senza l'utente se ne accorga"
non è appropriata.
Squid non è un software server nato per monitorare, ma per fare da proxy, cache....

Pauered bai Debian and Fazer FZS 600



Ritratto di Incubus
#9

Inviato da Incubus il Gio, 17/03/2005 - 10:56.

Re: squid, non proprio x monitorare

Si è vero :-P
Ho sbagliato descrizione in quanto nel mio caso, l'ho installato per vedere cosa guardavano i miei utenti e cosa scaricavano.

Chiedo venia :-P



Ritratto di madbrains
#10

Inviato da madbrains il Dom, 20/03/2005 - 19:08.

Re: squid, non proprio x monitorare

Molto ma molto utile! Complimenti anche per le spiegazioni dettagliate sintetiche e precise, un bel dieci anche da parte mia. Mi metto subito all'opera e vediamo come funziona il tutto!