Monitorare il traffico http/s della propria lan verso l'esterno senza l'utente se ne accorga
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.
L'installazione di squid è semplice:
ed il gioco è fatto.
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ì
hierarchy_stoplist cgi-bin ?
# TAG: no_cache
# Lasciamo il default che va bene così
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
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
per fare si che venga (ri)generata la struttura delle cartelle di cache.
Per quanto riguarda iptables, basta impostare una semplice regola:
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
Autore: Incubus
E-Mail: incubus@gl-como.net
Membro del Gruppo Linux Como: http://www.gl-como.net
Commenti
Inviato da bonz79 il Mer, 30/03/2005 - 21:53.
NTLM auth
ciao ragazzi, intanto mando un bravo all'autore di questa mini guida, io però chiedo se qualcuno sa dovre trovare documentazione per autenticare gli utenti proxy in un domain controller win2003 e avere quindi in /var/log/squid/access.log ip e username
grazie a tutti
bonz
Inviato da Incubus il Mer, 13/04/2005 - 14:32.
Re: NTLM auth
Hai provato cercando su google? Io non ho esperienza in merito a quello che chiedi così ho fatto questa ricerca generica:
http://www.google.it/search?hl=it&q=squid%2Bntlm%2Bauth&spell=1
e ho trovato parecchio materiale ma nn avendo modo di provare nn so a che link specifico indirizzarti
KNOWLEDGE IS POWER
Homepage: http://incubus.homelinux.net
Wiki: http://wiki.incubus.homelinux.net
LUG: http://www.gl-como.net
Inviato da beaver il Lun, 01/10/2007 - 15:38.
richiesta correzione
innanzitutto complimenti per la guida.
credo che a causa di qualche aggiornamento
non è più possibile specificare --to-destination dopo il target redirect di iptables
come si potrebbe impostare netfilter per avere lo stesso risultato?
Inviato da Incubus il Lun, 15/10/2007 - 13:33.
Re: richiesta correzione
Al momento non ho modo di provare se la regola funziona ma, per quanto riguarda iptables, dovrebbe diventare:
<br /># iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.2:8080<br />
Per quanto riguarda la configurazione di squid vera e propria, se usi una versione 2.6.X (per la serie 2.5.X nn ho idea) c'è da modificare un po' di roba:
Tutta la parte
<br /># HTTPD-ACCELERATOR OPTIONS<br /># -----------------------------------------------------------------------------<br /><br /># TAG: httpd_accel_host<br /># TAG: httpd_accel_port<br /># Necessarie per il transparent proxy<br />httpd_accel_host virtual<br />httpd_accel_port 80<br /><br /># TAG: httpd_accel_with_proxy on|off<br /># Necessario per il transparent proxy<br />httpd_accel_with_proxy on<br /><br /># TAG: httpd_accel_uses_host_header on|off<br /># Necessario per il transparent proxy<br />httpd_accel_uses_host_header on<br />
diventa inutile, e basta aggiungere transparent alla direttiva http_port così che
<br />http_port proxy.valhalla.lan:8080<br />
diventa
<br />http_port proxy.valhalla.lan:8080 transparent<br />
Ciao
KNOWLEDGE IS POWER
Homepage: http://incubus.homelinux.net
Wiki: http://wiki.incubus.homelinux.net
LUG: http://www.gl-como.net
Inviato da paolo il Lun, 15/10/2007 - 14:00.
Re: richiesta correzione
Grazie per aver aggiunto le correzioni da fare per Squid 2.6, le stavo per aggiungere io
Che ne dici di dare un aggiornata all'intera guida ?
Ciao
Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network
Inviato da Incubus il Lun, 15/10/2007 - 15:51.
Re: richiesta correzione
Penso sia l'unico modo dato che io non posso modificare la guida :-P
KNOWLEDGE IS POWER
Homepage: http://incubus.homelinux.net
Wiki: http://wiki.incubus.homelinux.net
LUG: http://www.gl-como.net
Inviato da Damianodd il Gio, 19/11/2015 - 16:13.
Re: Squid e Transparent Proxy
Ciao a tutti, volevo chiedere alcune informazioni, con tale impostazione posso monitorare il traffico, come posso poi vedere i log? Dopo tale configurazione come posso dare delle restrizioni a dei determinati URL? Avete qualche soluzione per la configurazione di SquidGuard?