[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Proxy HTTPS transparente



El 26/02/14 17:33, Francesc Guitart escribió:
Buenas,

El 26/02/2014 2:03, Vicios escribió:
Buenas noches,

Llevo algún tiempo peleándome con Squid para que trabaje de forma
transparente con el tráfico HTTP y HTTPS. He compilado, con soporte SSL,
tanto el paquete squid3 de Debian como la última versión de Squid con el
mismo resultado.

Estoy utilizando un certificado auto-firmado generado con OpenSSL y
aunque recibo la advertencia de seguridad en el navegador, puedo acceder
al contenido.


Es decir, estás llevando a cabo un ataque MitM sistemáticamente contra
tus usuarios. SSL se pensó justamente para que las comunicaciones fuesen
privadas y tener la certeza de que te estás conectando al servidor que
crees que te estás conectando. Es normal entonces que te salten alertas
en los navegadores. Metiéndote en medio (aunque sea para filtrar el
contenido usando un proxy) de la comunicación estás burlando las
especificaciones SSL.

El problema viene al utilizar el navegador Chrome y acceder a ciertas
páginas como google o paypal (imagino que habrá muchas más) que muestran
la siguiente información técnica:

www.google.es le ha pedido a Chrome que bloquee los certificados que
contengan errores, pero el certificado que ha recibido Chrome durante
este intento de conexión contiene un error.
Tipo de error: HSTS failure
Destinatario: www.miweb.es
Emisor: www.miweb.es
Hashes de clave pública: sha1//56eU2r1eF2ylEej7cDkTo0SbBk=
sha256/uoXtr1FR/avDhIbWRaqKcgpVL6kV4Yvqb+EveDoSqzc=

Desde Firefox no tengo problemas tras confirmar la advertencia de
seguridad con ninguna página HTTPS pero a la hora de utilizar Chrome hay
ciertas páginas que no quiere.

En Squid, para el tráfico HTTPS estoy utilizando https_port y ssl-bump
junto con alguna acl para manejar errores y de momento es lo mejor que
he encontrado salvo el problema con Chrome.

Si no es indiscreción... ¿Cómo gestionan/manejan/filtran las conexiones
HTTPS?


Usa las directiva CONNECT de squid para evitar interceptar el tunnel SSL:

acl CONNECT method CONNECT
acl SSL_ports port 443
acl SSL_ports port otros_puertos_SSL_deseados # ejemplo: 8443
acl ssl_forbiden facebook.com  twitter.com otros_ejemplos.com
...
http_access deny CONNECT ssl_forbiden
http_access deny CONNECT !SSL_ports

Atención al orden de los http_access, es importante.

Más info: http://wiki.squid-cache.org/Features/HTTPS

Si no me equivoco este método no funciona para squid en modo
transparente. Configuralo en modo normal e implementa la configuración
automática del proxy (PAC/WPAD). Solo necesitas añadir un registro DNS
(wpad.tudominio.com) y poner un ficherito wpad.dat en la raiz del
servidor web http://wapd.tudominio.com.

El fichero wpad.pad se parece a esto. Como ves va a determinar cuando
los clientes de tu LAN deben usar tu proxy:

function FindProxyForURL(url, host){
   if(isPlainHostName(host)) return DIRECT;
   if(isInNet(dnsResolver(host), "192.168.1.0", "255.255.255.0")) return
DIRECT;
   if(shExpMatch(url, "*192.168.1.*")) return "DIRECT";
   if(isInNet(myIpAddress(), "10.1.1.0", "255.255.255.0")) return DIRECT;
   if(
     url.substring(0, 5) == "http:" ||
     url.substring(0, 6) == "https:" ||
     url.substring(0, 5) == "ftp:"
    )
   return "PROXY 192.168.1.254:3228";
   return "DIRECT";
}

Saludos


Gracias por la información. Voy a ponerme a probar esta configuración.

Saludos.


Reply to: