View Full Version : Firewall e Squid
General Lee
10-06-2009, 16:41
Ciao a tutti, sono un amministratore di rete che sta cercando di implementare una cosa un po' ardua per me a causa delle mio non avanzate conoscenze di linux.
Abbiamo una rete LAN che esce attraverso un firewall che altro non e' se non un pc linux con squid attivo ( http proxy in trasparent mode).
Ora quello che sto provando a fare con scarso successo e' permettere a determinati ip di bypassare squid. Praticamente che tutte le navigazioni sulla porta http 80 non vengano salvate su access.log di squid che poi viene visualizzato sul pannello del router attraverso sarg.
Ho provato a smanettare con squid.conf e riavviare il servizio ma non funziona, ho aggiunto questo
acl myip src 192.168.0.24/255.255.255.255
no_cache deny myip
e fatto una policy con
http_access allow myip url_AllowALL
.. ma non va, continua a salvare tutto sui log.
L'unica cosa che avrei trovato nel web sarebbe una regola su iptables che mi farebbe uscire direttamente l'ip in questione sulla porta 80 bypassando il passaggio sulla porta squid ma ... non riesco a capire bene come fare.
... qualche aiutino??? :(
Ciao & Grassie
gurutech
10-06-2009, 23:38
Ciao General Lee,
squid e iptables collaborano tra loro per far si che funzioni il proxy trasparente.
Attualmente nel firewall c'è una regola che dice che tutto il traffico diretto alla porta 80 deve essere instradato dentro squid.
Con la regola che tu hai implementato in squid.conf gli hai solo detto di non tenere la cache di navigazione e di far passare quell'IP su tutti gli indirizzi (saltando perciò altre restrizioni e filtri che potrebbero esserci). Come però hai constatato i log continua a farli ugualemente!
Per fare ciò che desideri hai letto l'informazione giusta: devi agire su iptables.
prova a fare (come root)
iptables -L -n -t nat --line-numbers
otterai una cosa del genere
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 REDIRECT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:80 redir ports 3128
Chain POSTROUTING (policy ACCEPT)
num target prot opt source destination
1 ppp0_masq 0 -- 0.0.0.0/0 0.0.0.0/0
2 tun0_masq 0 -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
Chain ppp0_masq (1 references)
num target prot opt source destination
1 MASQUERADE 0 -- 192.168.4.0/24 0.0.0.0/0
Chain tun0_masq (1 references)
num target prot opt source destination
1 MASQUERADE 0 -- 192.168.4.0/24 192.168.5.1
come vedi sono una serie di tabelle (o catene, Chain) con diversi nomi. La regola che serve a fare il proxy trasparente dovrebbe trovarsi in PREROUTING ed essere tipo
num target prot opt source destination
4 REDIRECT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:80 redir ports 3128
che vuol dire
la regola numero 4 dice che tutto quello che arriva da 192.168.1.0/24 diretto alla destination port (dpt) 80 lo devi redirigere alla porta 3128 (la redirezione è sempre effettuata su localhost)
tu invece vuoi che per un determinato client (es 192.168.1.7) questo non venga fatto, per cui devi prima di tutto fargli bypassare questa regola
iptables -t nat -I PREROUTING 4 --src 192.168.1.7 -j ACCEPT
adesso vedrai che
iptables -L -n -t nat --line-numbers
restituisce qualcosa tipo
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
4 ACCEPT 0 -- 192.168.1.7 0.0.0.0/0
5 REDIRECT tcp -- 192.168.1.0/24 0.0.0.0/0 tcp dpt:80 redir ports 3128
questo da solo però non basta a far navigare 192.168.1.7!
ti devi ora assicurare, sempre tramite iptables, che l'IP in questione si o mascherato, oppure nattato. Il masquerading è la tecnica più semplice:
iptables -t nat -I PREROUTING 1 --src 192.168.1.7 -j MASQUERADE
(in questo modo inserisci la regola come la numero 1 della catena, per cui è sicuro che non vi sono altre regole antecedenti che fanno altro)
se invece il firewall/proxy ha un indirizzo ip di accesso a internet statico, allora per correttezza dovresti usare il source nat, in questo modo
iptables -t nat -I PREROUTING 1 --src 192.168.1.7 -j SNAT --to-source MY.PUB.LIC.IP
(al posto di MY.PUB.LIC.IP inserisci il tuo IP pubblico)
per ultimo controlla che il port forwarding sia abilitato
server:~# cat /proc/sys/net/ipv4/ip_forward
1
server:~#
se ti restituisce 1 è abilitato, altrimenti puoi abilitarlo con
echo 1 > /proc/sys/net/ipv4/ip_forward
a questo punto togli le impostazioni del proxy dal browser di 192.168.1.7 e prova a navigare. prova anche ad aprire una riga di comando e fare ping www.google.it. Se non va il ping a google, forse non hai il DNS configurato correttamente. Per controprova prova a pingare ping 151.1.1.1. Se quest'ultimo va allora devi configuare correttamente la risoluzione dei nomi sul client (o sul tuo server DNS se ne usi uno).
Se tutto funziona dovresti salvare le regole nel tuo firewall, ma questo dipende dalla distribuzione che usi e dallo script che tira su il firewall.
Ciao
G
General Lee
11-06-2009, 09:32
Grazie amico ce l'ho fatta!!!!
Avevo questa situazione:
Chain AUTO_NAT_PRE (1 references)
num target prot opt source destination
1 DROP tcp -- 192.168.0.0/16 0.0.0.0/0 tcp dpt:3128
2 REDIRECT tcp -- 192.168.0.0/16 0.0.0.0/0 tcp dpt:80 redir ports 3128
Mi e' bastato aggiungere
iptables -t nat - I AUTO_NAT_PRE 1 -p tcp --dport 80 --src 192.168.0.24 -j ACCEPT
Ora ho:
Chain AUTO_NAT_PRE (1 references)
num target prot opt source destination
1 ACCEPT tcp -- 192.168.0.24 0.0.0.0/0 tcp dpt:80
2 DROP tcp -- 192.168.0.0/16 0.0.0.0/0 tcp dpt:3128
3 REDIRECT tcp -- 192.168.0.0/16 0.0.0.0/0 tcp dpt:80 redir ports 3128
... e squid non salva i log per la navigazione http dell'ip 192.168.0.24!
Grassieeeeeee!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.