Newsgroup: it.comp.os.linux.sys
Titolo: squid e filtraggio siti https

Salve a tutti,
vorrei chiedere a voi pi� esperti di me, se implementando un proxy con squid 
� possibile filtrare i siti https... mi spiego meglio: vorrei per esempio 
lasciare abilitato tutto il traffico in https ad eccezione di facebook ed 
alcuni altri siti... che voi sappiate � possibile fare cio'?
 
grazie a tutti,
D. 
 

alcuni altri siti... che voi sappiate è possibile fare cio'?
 
Sicuro.
 
acl network    src         
192.168.0.0/16
 
acl facebook   dstdomain   .
facebook.com
 
 
http_reply_access deny facebook network
http_access       deny CONNECT facebook
 
(man squid.conf)
 
Leonardo
 
-- 
Were I Glenallan's Earl this tide, and were you Roland Cheyne,
My spur would be in my horse's side, the bridle upon his mane.
If they hae twenty thousand blades and we twice ten times ten,
Yet they hae but their tartan plaids, and we're mail-clad men.

 Leonardo
 
sicuro che cosi' funzioni? perchè da quanto mi è stato detto, il traffico 
https così come la richiesta di https, sono crittografate, quindi digitando 
nel browser (da quanto ho capito) 
https://facebook.com
 non è possibile 
filtrarlo... a meno di non analizzare i pacchetti...
 
grazie 1000,
D.


filtrarlo... a meno di non analizzare i pacchetti...
 
Io mica analizzo niente. Tu su quel sito NON CI VAI PROPRIO :-)
 
E del resto, se passi da un proxy, gli DEVI dire a che sito connettersi;
non e' che puoi dirgli, "Dammi una connessione a un sito, ma non ti dico
quale". E questo anche se e' HTTPS.
 
Perche' e' lo Squid che si collega al sito esterno per conto tuo (se no,
che proxy sarebbe?), e se non gli dici dove collegarsi...
 
Leonardo


> filtrarlo... a meno di non analizzare i pacchetti...
 
[CUT]
 
I dati sono crittografati non l' header del pacchetto
Altrimenti come farebbero i vari router e gateway a smistare i pacchetti ?
 
 

 quale". E questo anche se e' HTTPS.
 
Non vorrei sparar cazzate perché non ho tempo di testare la conf che hai
scritto, ma AFAIK la CONNECT riceve come parametro solo un indirizzo IP
e una porta, non un URL.
L'url è parte della GET ed è un dato che quando viene passato è già
all'interno della sessione crittografata SSL
 
PQM è necessario bloccare a livello di IP
 
Per facebook 
p.es
., come da whois,
http://whois.arin.net/rest/org/THEFA-3.html
 
 
Si possono bloccare le classi IP:
69.171.224.0/19
 
74.119.76.0/22
 
204.15.20.0/22
 
66.220.144.0/20
 
69.63.176.0/20
 
173.252.64.0/18
 
2620:0:1C00::/40
 
Tradotto in squid:
 
acl net_facebook dst 
69.171.224.0/19
 
acl net_facebook dst 
74.119.76.0/22
 
acl net_facebook dst 
204.15.20.0/22
 
acl net_facebook dst 
66.220.144.0/20
 
acl net_facebook dst 
69.63.176.0/20
 
acl net_facebook dst 
173.252.64.0/18
 
acl net_facebook dst 2620:0:1C00::/40
 
http_access deby net_facebook
 
 
-- 
Flavio Visentin
 
Scientists discovered what's wrong with the female brain: on the left
side, there's nothing right, and on the right side, there's nothing left

 e una porta, non un URL.
 
Riceve l'host (che il proxy risolve in un IP) quindi puoi agire su quello.
 
CONNECT 
facebook.com
 HTTP/1.1
 
Quindi a prescindere dal metodo (GET, POST, CONNECT) puoi filtrare 
opportunamente.
 
Teoricamente quando il browser utilizza un proxy, puoi anche evitare di 
configurargli un DNS resolver (e molti, per security policy, lo fanno).
 
 
Se vuoi divertirti: a fare prove,
 
https://github.com/ctrix/nproxy/blob/master/config/scripts/default.lua
 
 
ti consiglio questo aggeggio.
 
 

 a meno di non analizzare i pacchetti...
 
Come fai ad analizzare pacchetti HTTPS?
Sono cifrati end-to-end con un certificato. L'unico modo sarebbe qello di fare HTTPS proxy costringendo l'utente ad accettare il certificato del tuo proxy. Però non credo sia molto pulito...

e una porta, non un URL.
 
Quasi: riceve un host e una porta. Per cui blocchi "
facebook.com
".
 
Nel caso che facebook non richiedesse l'header Host e funzionasse col solo IP,
uno furbo potrebbe usare l'IP per bypassare il proxy. In questo caso, uno puo'
bloccare tutto TRANNE i siti HTTPS consentiti (whitelisting), oppure fare come
dici tu e inserire anche tutti i range di IP proibiti (e poi monitorarli, dato
che ogni tanto cambiano).
 
Il browser deve sapere che sta venendo proxato, altrimenti ci sta che anziche'
una CONNECT faccia un tentativo di connessione diretto TLS/SSL, rimbalzando.
 
Se uno vuole fare proxying HTTPS *trasparente*, sono cavoli acidi perche' e' a
tutti gli effetti un man-in-the-middle attack. E' possibile, comunque.
 
http://wiki.squid-cache.org/Features/HTTPS
 
 
Il che non vuol dire che sia facile: 
http://mitmproxy.org/
 
