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 paolo il Mer, 09/03/2005 - 16:40.
Ottimo.
Guida utilissima, ottimo l'uso dei tag di formattazione, molto ben dettagliata.
Ti meriti un bel 10!
Grazie per il tuo impegno.
Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network
Inviato da Incubus il Mer, 09/03/2005 - 18:33.
Re: Ottimo.
Grazie 1000
KNOWLEDGE IS POWER
Homeoage: http://incubus.homelinux.net
Wiki: http://wiki.incubus.homelinux.net
LUG: http://www.gl-como.net
Inviato da pigio il Mer, 09/03/2005 - 18: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
Inviato da cheis il Gio, 10/03/2005 - 09:23.
Re: grazieeeeeeeeeeee
complimenti!!.. metto in pratica subito..
[=x-small]Knowledge is power: SHARE IT BABY!!![/]
_____________________________________________
Inviato da Incubus il Gio, 10/03/2005 - 10: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
KNOWLEDGE IS POWER
Homeoage: http://incubus.homelinux.net
Wiki: http://wiki.incubus.homelinux.net
LUG: http://www.gl-como.net
Inviato da kripsio il Gio, 10/03/2005 - 23: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
Inviato da kripsio il Gio, 10/03/2005 - 23:21.
Re: grazieeeeeeeeeeee
Quote:
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.
Inviato da pipex il Lun, 14/03/2005 - 22: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
Inviato da Incubus il Gio, 17/03/2005 - 09: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
KNOWLEDGE IS POWER
Homeoage: http://incubus.homelinux.net
Wiki: http://wiki.incubus.homelinux.net
LUG: http://www.gl-como.net
Inviato da madbrains il Dom, 20/03/2005 - 18: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!
http://mad.nemail.it