miti e fatti del proxy SSL trasparenti


8

Sono molte ore che cerco un modo per impostare un proxy trasparente per SSL (non Squid). La risposta generale è che non posso, ma so che ci sono alcuni modi , però. Il mio scopo è solo il seguente:

  1. Blacklist / whitelist nomi di dominio (non numeri IP). Il contenuto non verrà filtrato o modificato.
  2. Forzare gli utenti attraverso questi elenchi. Se modifico tali impostazioni nei browser Web, possono semplicemente annullarle.

La pagina seguente dice che potrei passare il traffico non modificato, ma non dice come: iptables https proxy trasparente con privoxy?

La pagina seguente mostra una regola iptables per 443 che io stesso non riuscivo a far funzionare: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:proxy

La pagina seguente spiega come farlo funzionare solo con Squid: http://www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

EDIT: una persona dice qui: Come posso usare IPTABLES per creare un passthrough HTTPS (443) attorno a Squid? "La cosa migliore che devi fare è bloccare l'accesso diretto alla porta 443 e dire ai tuoi utenti che se vogliono usare HTTPS, devono configurare il loro browser per usare il proxy." Ma so solo come bloccare completamente 443, per non farlo funzionare sotto un proxy allora.

Risposte:


7

Se vuoi filtrare i nomi di dominio, hai due modi possibili: potresti prendere il nome dal metodo CONNECT emesso dal client se sa che deve usare un proxy per le definizioni HTTPS e filtrare su quello (Squids supporta che BTW). O, se veramente veramente bisogno di farlo in modo trasparente, si avrebbe bisogno di esaminare le (criptato) intestazioni di richiesta.

Se si desidera visualizzare le intestazioni delle richieste crittografate, è necessario disporre di una chiave. Se si desidera disporre di una chiave, è necessario un certificato che sia a) considerato attendibile dal client per essere il certificato "corretto" eb) che certifichi ogni possibile host (jolly-tutto).

Quindi quello che dovresti fare è

  1. impostare un certificato per il proxy. Dipende dal tuo software come farlo - potresti usare stunnel per terminare la connessione SSL dal lato del proxy, avere un proxy HTTP di filtro dietro di esso e ristabilire SSL per tutto il traffico in uscita usando target DNAT iptables e stunnel di nuovo. Potrebbero esserci soluzioni "in scatola" anche per il proxy SSL MitM.
  2. installa il suddetto certificato su tutti i tuoi client che utilizzeranno il proxy

Principalmente, se hai bisogno di un proxy trasparente, è perché non vuoi o non puoi riconfigurare i client per usare il proxy. Se questo è anche il caso della tua richiesta, probabilmente non avresti la possibilità di installare certificati sui client e contrassegnarli come "attendibili". Quindi, anche se esiste un modo tecnico per il proxy SSL trasparente, sospetto che non ci sarà molto da guadagnare per te.


Ciò è stato sufficiente per chiarirmi i fatti sui proxy trasparenti. Grazie!
Teresa e Junior,

Come "... prendi il nome dal metodo CONNECT emesso dal client se sa che deve usare un proxy per le definizioni HTTPS e filtrarlo su quello"?
Big McLargeHuge

@ davidkennedy85 con Squid più o meno allo stesso modo in cui si filtrerebbe per altri metodi di accesso - basta usare gli ACL. Esempio: servercomputing.blogspot.de/2012/01/…
the-wabbit

La tua spiegazione è per lo più comprensibile; Ho imparato molto. Grazie. Una cosa su cui dubito è che il nome host (nome dominio) sia noto a chiunque controlli il traffico. security.stackexchange.com/questions/2914/…
Albert Netymk,

4

So che questa è una vecchia domanda, ma se l'OP vuole solo inserire nella blacklist / whitelist alcuni nomi di dominio, non devono usare affatto un proxy, potrebbero semplicemente usare una blacklist basata su DNS.

  • configurare i server DNS in loco per restituire 127.0.0.1 per qualsiasi dominio che si desidera inserire nella blacklist
  • sul tuo gateway Internet impedisci a tutti gli IP tranne i tuoi server DNS di accedere alle porte TCP / UDP 53, quindi solo i tuoi server DNS possono effettuare richieste DNS da server basati su Internet.

Sarà consentito qualsiasi altro dominio. Tutto il traffico Web SSL o altro passerà invariato attraverso il gateway.

Modifica: visto che l'OP è pronto a forzare gli utenti attraverso i suoi elenchi, può bloccare altri metodi di accesso al DNS. In questo modo, se l'utente tenta di utilizzare uno di quegli altri metodi DNS bloccati, i siti Web non funzioneranno. alias "La mia strada o l'autostrada"

Per DNS-over-HTTPS menzionato da @wheeler, puoi semplicemente bloccare le normali ricerche DNS su siti come https://dns.google.com e https://cloudflare-dns.com/dns-query e https: // doh.cleanbrowsing.org/doh/family-filter/ . Anche se questo diventerà rapidamente insostenibile man mano che sempre più servizi entrano online.

Potrebbe anche essere necessario un modo per bloccare i tipi MIME come application / dns-udpwireformat per altri metodi di sviluppo del DNS.


Non è più una soluzione molto efficace, visto che DNS-over-HTTPS è ormai una cosa.
wheeler

2

Il delegato può funzionare come proxy Man-In-The-Middle per HTTPS.


Grazie, lo fa davvero, ma non sono riuscito a farlo funzionare! Sembra che abbia bisogno di regole iptables diverse da quelle per la porta 80, o c'è qualche opzione che non riesco a capire per Delegate.
Teresa e Junior,

1

Per la modalità trasparente, il sistema Inline IPS (Suricata, Snort) può aiutarti a bloccare i siti ssl.

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

Blocco delle regole del sito SSL per utenti specifici:

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

Blocco delle regole di download dei file in base alle estensioni:

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

Prova questo con SimpleWall

È molto semplice aggiungere una regola di blocco con l'interfaccia web di Simplewall.

Puoi anche aggiungere regole in Simplewall => Content Filteruso con le stesse regole per IPS insieme al filtro contenuti http.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.