Squidguard+ squid problemi pagine https



  • Salve a tutti.
    Ho un problema sul filtering ssl di squid.
    Ho configurato squid e abilitato il proxy e la modalità ssl filtering .
    Ho installato il certificato sulla macchina client.
    Ho configurato squidguard e settato il content filtering.

    Quando apro una pagina http il sistema funziona correttamente e viene visualizzata la pagina di blocco impostata su squidguard usando external url redirect.
    Quando provo ad aprire una pagina https invece viene viene mostrata la pagina di errore di squid ma con un errore DNS.


    "Mentre si cercava di accedere alla URL https://http/ si è presentato il seguente errore:
              Non è stato possibile risalire all'indirizzo ip corrispondente al nome "http"
    Il server DNS ha risposto:
    Name error: the domain name does not exist.
    Questo significa che il proxy non è riuscito a tradurre il nome host nella URL nel relativo indirizzo. Verificate la correttezza dell'indirizzo e riprovate"
    *

    Ved immagine allegata


    Questo accade anche aprendo la pagina www.google.it o www.google.com

    Se invece provo a disabilitare squidguard , queste pagine vengono aperte in maniera corretta senza riportare l'errore. Mentre le pagine appartenenti alla blacklist di squid vengono bloccate in maniera corretta.

    Qualcuno di voi potrebbe aiutarmi ?
    Grazie



  • Ciao,
    Il filtro https con proxy si basa su un attacco man in the midle.
    Assunto che si tratti di qualcosa che sta violando la sicurezza del protocollo, gli errori in cui incapperai sono molteplici. In molti casi una delle due parti si accorge dell'accaduto e ti blocca.
    L'errore che riscontri è il più banale ma anche il più fastidioso, perché rilevato direttamente dal browser.
    Hai intercettatouna connessione diretta ad un sito A per poi ridirigerla ad un sito B (la pagina di blocco) di certo non la farai franca
    Se una cosa così fosse normalmente possibile, il protocollo https sarebbe una chiavica… pensa al redirect del traffico di login di una banca su un sito farlocco.
    Sia chiaro che questo non vuol dire che non ci sia modo di far funzionare correttamente quello che stai facendo, ma semplicemente  non è il modo migliore perché stai compromettendo la sicurezza delle connessioni  https dei tuoi utenti.

    A mio avviso il controllo dei contenuti tramite proxy, nel 2017 è anacronistico, meglio adottare sistemi basati su filtro delle query dns, sono più semplici da implementare, gestire e non stressano la macchina costringendola ad effettuare l'inspection del traffico http ed https con conseguente sovraccarico di CPU e rallentamento della navigazione.

    Ciao Fabio



  • @stealkey:

    Salve a tutti.
    Ho un problema sul filtering ssl di squid.
    Ho configurato squid e abilitato il proxy e la modalità ssl filtering .
    Ho installato il certificato sulla macchina client.
    Ho configurato squidguard e settato il content filtering.

    Quando apro una pagina http il sistema funziona correttamente e viene visualizzata la pagina di blocco impostata su squidguard usando external url redirect.
    Quando provo ad aprire una pagina https invece viene viene mostrata la pagina di errore di squid ma con un errore DNS.


    "Mentre si cercava di accedere alla URL https://http/ si è presentato il seguente errore:
              Non è stato possibile risalire all'indirizzo ip corrispondente al nome "http"
    Il server DNS ha risposto:
    Name error: the domain name does not exist.
    Questo significa che il proxy non è riuscito a tradurre il nome host nella URL nel relativo indirizzo. Verificate la correttezza dell'indirizzo e riprovate"
    *

    Ved immagine allegata


    Questo accade anche aprendo la pagina www.google.it o www.google.com

    Se invece provo a disabilitare squidguard , queste pagine vengono aperte in maniera corretta senza riportare l'errore. Mentre le pagine appartenenti alla blacklist di squid vengono bloccate in maniera corretta.

    Qualcuno di voi potrebbe aiutarmi ?
    Grazie

    ciao, puoi implementare il tutto semplicemente non facendo un vero e proprio MITM ma, per dirla alla squid: split & splice. Si tratta di configurare squid in modo che faccia l'intercept del traffico ssl solo per quanto riguarda il nome del sito da bloccare inserendo nelle Custom ACLS (Before auth):

    setup ssl bump acl's

    acl bump_step1 at_step SslBump1
    acl bump_step2 at_step SslBump2
    acl bump_step3 at_step SslBump3

    configure bump

    ssl_bump peek bump_step1 all
    ssl_bump splice all
    ssl_bump peek bump_step2 all
    ssl_bump splice bump_step3 all

    sslproxy_cert_error deny all

    e il gioco è fatto. Il client riceverà il vero certificato e tu potrai usare squidguard per bloccare i siti che desideri.

    ps: con queste linee non occorre installare certificati sui dispositivi.



  • dopo la mia segnalazione a doktornotor ha deciso di introdurre lo Splice ALL come opzione al pacchetto squid, dunque basta aggiornare all'ultima release per avere la possibilità di abilitare il transparent ssl proxy (limitatamente al controllo del dominio via squidguard, niente a/v e/o content filtering) senza la necessità di dover installare certificati sui client.




  • Ciao,
    io nonostante l'aggiornamento continuo ad avere problemi nel caricamento delle pagine https://.
    Utilizzo squid + Squidguard con le shalla's blacklist: a volte carica subito, a volte invece va in time out.
    Mettere o togliere le custom ACLs non mi cambia niente. Nella scheda realtime segna continui tag_none 200 400 e 503.
    Non so dove mettere le mani, please help.

    Grazie



  • @randrys:

    Ciao,
    io nonostante l'aggiornamento continuo ad avere problemi nel caricamento delle pagine https://.
    Utilizzo squid + Squidguard con le shalla's blacklist: a volte carica subito, a volte invece va in time out.
    Mettere o togliere le custom ACLs non mi cambia niente. Nella scheda realtime segna continui tag_none 200 400 e 503.
    Non so dove mettere le mani, please help.

    Grazie

    prova a fare degli screenshot della configurazione e incollarli qui, vediamo se è tutto corretto.



  • Ciao
    ecco lo zip: ho messo solo squid. se c'e` bisogno faccio anche squidguard.

    squid.zip



  • @randrys:

    Ciao
    ecco lo zip: ho messo solo squid. se c'e` bisogno faccio anche squidguard.

    c'è un motivo per cui hai scelto intermediate per SSL Proxy Compatibility mode? se no metti Modern
    poi:

    • seleziona Accept remote server certificate with errors

    • seleziona Sets not after

    • seleziona Sets not before

    sei certo di volte utilizzare l'offline mode? se no togli la spunta.



  • Grazie dell'aiuto ma sto ancora avendo problemi.
    La cosa strana eche non sono tutti i siti che ferma: gia questo forum ehttps e non mi ha mai dato problemi a caricarlo, idem google e suoi servizi collegati. Altri siti come amazon o engadget in particolare non li carica quasi mai. E possibile che ci sia qualcosa in particolare in questi siti che crea problemi?

    Grazie ancora



  • @randrys:

    Grazie dell'aiuto ma sto ancora avendo problemi.
    La cosa strana eche non sono tutti i siti che ferma: gia questo forum ehttps e non mi ha mai dato problemi a caricarlo, idem google e suoi servizi collegati. Altri siti come amazon o engadget in particolare non li carica quasi mai. E possibile che ci sia qualcosa in particolare in questi siti che crea problemi?

    Grazie ancora

    puoi postare i log di squid?



  • @bbassotti:

    puoi postare i log di squid?

    Eccoli

    EDIT: ho notato che da quando ho attivato il proxy, i server ubuntu non riescono ad aggiornare alcuni pacchetti.
    Ho provato ad importare i *.crt ma non eservito. Questo e l'errore: E: Failed to fetch "…"    gnutls_handshake() failed: An unexpected TLS packet was received.

    cache.txt
    access.txt



  • @randrys:

    @bbassotti:

    puoi postare i log di squid?

    Eccoli

    EDIT: ho notato che da quando ho attivato il proxy, i server ubuntu non riescono ad aggiornare alcuni pacchetti.
    Ho provato ad importare i *.crt ma non eservito. Questo e l'errore: E: Failed to fetch "…"    gnutls_handshake() failed: An unexpected TLS packet was received.

    da una macchina linux puoi eseguire il comando:

    openssl s_client -showcerts -connect api.nixstats.com:443
    e postare il risultato?



  • @bbassotti:

    da una macchina linux puoi eseguire il comando:

    openssl s_client -showcerts -connect api.nixstats.com:443
    e postare il risultato?

    CONNECTED(00000003)
    140245638424216:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
    –-
    no peer certificate available

    No client certificate CA names sent

    SSL handshake has read 7 bytes and written 305 bytes

    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : 0000
        Session-ID:
        Session-ID-ctx:
        Master-Key:
        Key-Arg  : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1486134078
        Timeout  : 300 (sec)
        Verify return code: 0 (ok)



  • @randrys:

    @bbassotti:

    da una macchina linux puoi eseguire il comando:

    openssl s_client -showcerts -connect api.nixstats.com:443
    e postare il risultato?

    CONNECTED(00000003)
    140245638424216:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
    –-
    no peer certificate available

    No client certificate CA names sent

    SSL handshake has read 7 bytes and written 305 bytes

    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : 0000
        Session-ID:
        Session-ID-ctx:
        Master-Key:
        Key-Arg  : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1486134078
        Timeout  : 300 (sec)
        Verify return code: 0 (ok)

    La tua configurazione non funziona, tira fuori la conf dal firewall, la trovi in :

    /usr/local/etc/squid/squid.conf

    e incollala qui.



  • Grazie dell'aiuto

    squid_.txt
    squidGuard.txt



  • @randrys:

    Grazie dell'aiuto

    disattiva l'antivirus (tanto non potresti usarlo con l'https) e riprova l'openssl s_client …. se funziona vedrai tutta la chain dei certificati.



  • @bbassotti:

    @randrys:

    Grazie dell'aiuto

    disattiva l'antivirus (tanto non potresti usarlo con l'https) e riprova l'openssl s_client …. se funziona vedrai tutta la chain dei certificati.

    Ancora niente.. Stesso risultato di prima

    @:~$ openssl s_client -showcerts -connect api.nixstats.com:443 CONNECTED(00000003)
    140344441861784:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
    –-
    no peer certificate available

    No client certificate CA names sent

    SSL handshake has read 7 bytes and written 305 bytes

    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : 0000
        Session-ID:
        Session-ID-ctx:
        Master-Key:
        Key-Arg  : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1486137854
        Timeout  : 300 (sec)
        Verify return code: 0 (ok)



  • @randrys:

    @bbassotti:

    @randrys:

    Grazie dell'aiuto

    disattiva l'antivirus (tanto non potresti usarlo con l'https) e riprova l'openssl s_client …. se funziona vedrai tutta la chain dei certificati.

    Ancora niente.. Stesso risultato di prima

    @:~$ openssl s_client -showcerts -connect api.nixstats.com:443 CONNECTED(00000003)
    140344441861784:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:794:
    –-
    no peer certificate available

    No client certificate CA names sent

    SSL handshake has read 7 bytes and written 305 bytes

    New, (NONE), Cipher is (NONE)
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    SSL-Session:
        Protocol  : TLSv1.2
        Cipher    : 0000
        Session-ID:
        Session-ID-ctx:
        Master-Key:
        Key-Arg  : None
        PSK identity: None
        PSK identity hint: None
        SRP username: None
        Start Time: 1486137854
        Timeout  : 300 (sec)
        Verify return code: 0 (ok)

    prova ad abilitare il flag: sslproxy_flags DONT_VERIFY_PEER (do not verify remote certificate)



  • Adesso amazon lo carica "quasi" a colpo sicuro. Altri siti restano recidivi.
    Mentre il comando che mi hai fatto mandare da command line su una macchina ubuntu mi risponde ancora allo stesso modo.



  • @randrys:

    Adesso amazon lo carica "quasi" a colpo sicuro. Altri siti restano recidivi.
    Mentre il comando che mi hai fatto mandare da command line su una macchina ubuntu mi risponde ancora allo stesso modo.

    prova a rifare la CA cancellando la vecchia.



  • @bbassotti:

    prova a rifare la CA cancellando la vecchia.

    Niente di nuovo..
    Ho fatto il nuovo CA e caricato sul server ma nessun cambiamento in risposta al comando open_ssl.
    Il certificato lo sto facendo su "SystemCertificate / Manager / CAs" e poi "Create an internal Certificate Authority" a 2048b e sha256.
    Il certificato sul server lo sto installando con "dpkg-reconfigure ca-certificates".



  • @randrys:

    @bbassotti:

    prova a rifare la CA cancellando la vecchia.

    Niente di nuovo..
    Ho fatto il nuovo CA e caricato sul server ma nessun cambiamento in risposta al comando open_ssl.
    Il certificato lo sto facendo su "SystemCertificate / Manager / CAs" e poi "Create an internal Certificate Authority" a 2048b e sha256.
    Il certificato sul server lo sto installando con "dpkg-reconfigure ca-certificates".

    non serve installare la ca, mi sfugge qualcosa evidentemente. il fatto che il comando non ritorni nulla implica che la connessione non vada a buon fine e squid a parte potrebbero essere altri problemi. Prova ad eseguire sul firewall il comando:

    tcpdump -niNOME_INTEFACCIA_LAN -s0 host IP_DA_CUI_ESEGUI_OPENSSL

    poi esegui l'openssl e riporta entrambi gli output.



  • Ecco il dump. Ho messo all'inizio quello del firewall e poi il server.

    dump.txt



  • @randrys:

    Ecco il dump. Ho messo all'inizio quello del firewall e poi il server.

    è molto anomalo il dump, per esempio questo ping:

    10:15:02.904700 IP 192.168.100.243 > 8.8.8.8: ICMP echo request, id 29060, seq 2, length 64
    10:15:02.909962 IP 192.168.100.243 > 8.8.8.8: ICMP echo request, id 28940, seq 2, length 64
    10:15:02.916299 IP 192.168.100.243 > 8.8.8.8: ICMP echo request, id 19441, seq 2, length 64
    10:15:02.942392 IP 8.8.8.8 > 192.168.100.243: ICMP echo reply, id 29060, seq 2, length 64
    10:15:02.952082 IP 8.8.8.8 > 192.168.100.243: ICMP echo reply, id 28940, seq 2, length 64
    10:15:02.953823 IP 8.8.8.8 > 192.168.100.243: ICMP echo reply, id 19441, seq 2, length 64

    ci sono prima tre richieste e poi le tre risposte, normalmente avviene questo:

    18:10:50.718928 IP 10.0.0.1 > 8.8.8.8: ICMP echo request, id 8615, seq 1, length 64
    18:10:50.751147 IP 8.8.8.8 > 10.0.0.1: ICMP echo reply, id 8615, seq 1, length 64
    18:10:51.720471 IP 10.0.0.1 > 8.8.8.8: ICMP echo request, id 8615, seq 2, length 64
    18:10:51.752152 IP 8.8.8.8 > 10.0.0.1: ICMP echo reply, id 8615, seq 2, length 64
    18:10:52.722482 IP 10.0.0.1 > 8.8.8.8: ICMP echo request, id 8615, seq 3, length 64
    18:10:52.754059 IP 8.8.8.8 > 10.0.0.1: ICMP echo reply, id 8615, seq 3, length 64

    c'e' qualche configurazione errata.



  • Finalmente ho risolto il problema: ho disabilitato "Do not allow IP-Addresses in URL" su Proxy SquidGuard. Adesso tutte le pagine vengono caricate e i server non hanno problemi con gli aggiornamenti.
    Ringrazio bbassotti per l'aiuto che mi ha dato.  ;)