{"id":2145,"date":"2019-07-22T11:21:25","date_gmt":"2019-07-22T17:21:25","guid":{"rendered":"https:\/\/www.lastdragon.net\/?p=2145"},"modified":"2019-07-22T17:49:02","modified_gmt":"2019-07-22T23:49:02","slug":"proxy-trasparente-de-ssl-el-gobierno-de-kazajstan-ahora-esta-interceptando-todo-el-trafico-https","status":"publish","type":"post","link":"https:\/\/www.lastdragon.net\/?p=2145","title":{"rendered":"Proxy Trasparente de SSL &#8211; El gobierno de Kazajst\u00e1n ahora est\u00e1 interceptando todo el tr\u00e1fico HTTPS"},"content":{"rendered":"\n<p>Interceptar el trafico de seguro por TLS\/SSL no es cosa f\u00e1cil, pero Kazajst\u00e1n va a intentarlo.<\/p>\n\n\n\n<p><strong>\u00bf Como va a hacerlo ?<\/strong><\/p>\n\n\n\n<p>Con un tipo de SslStrip pero profesional, obligara a sus ciudadanos a a instalar un certificado de autoridad en sus computadoras y de esta forma teniendo la llave privada del certificado puede descifrar el contenido sin mayor problema.  Este certificado al ser de autoridad puede firmar cualquier otro certificado para cualquier dominio incluyendo los bancarios. La \u00fanica posible defensa contra esto seria los PINeados de certificados en el navegador.<\/p>\n\n\n\n<p>Uno de los usos leg\u00edtimos para este tipo de acci\u00f3n es un proxy transparente  para control y listas de acceso<\/p>\n\n\n\n<p><strong>Requerimientos<\/strong><\/p>\n\n\n\n<p>Generar un certificado de autoridad<\/p>\n\n\n\n<p><em>0 Generar llave privada<\/em><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>openssl genrsa -out private.key 4096<\/p><\/blockquote>\n\n\n\n<p>Generar certificado de autoridad<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>openssl req -new -x509 -days 10000 -key private.key -subj &#8216;\/C=MX\/ST=DF\/L=CDMX\/CN=GNU Linux Network Firewall CA&#8217; -out ca.crt<\/p><\/blockquote>\n\n\n\n<p>Al igual que el gobierno de  Kazajst\u00e1n que obligara a sus ISP a instalar un certificado en cada computadora como el que se ha generado, esto es muy necesario de lo contrario el navegador mandar\u00eda una alerta de conexi\u00f3n insegura.<\/p>\n\n\n\n<p><strong>Configurando el Squid Proxy como transparente para SSL<\/strong><\/p>\n\n\n\n<p><em>1 Preparar el directorio donde se almacenaran los certificados de los sitios WEB y darles permisos al usuario Squid<\/em><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>\/usr\/lib64\/squid\/ssl_crtd -c -s \/var\/lib\/ssl_db <br \/> chown squid.squid -R \/var\/lib\/ssl_db\/<\/p><\/blockquote>\n\n\n\n<p><em>2 Crear carpeta para certificado CA del proxy, es el certificado que firmara todo y el que hemos instalado en cada maquina como autoridad.<\/em><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>mkdir \/etc\/squid\/ssl_cert\/<\/p><\/blockquote>\n\n\n\n<p><em>2.1 El certificado debe estar en formato PEM, debe incluir su llave privada<\/em><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>cp ca.crt proxyca.pem<br \/> cat private.key &gt;&gt; proxyca.pem<\/p><\/blockquote>\n\n\n\n<p><br \/><em> 3 Configurar Squid para ser proxy transparente tanto para trafico cifrado como para standart<\/em> <\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>acl clientes src 10.10.0.0\/16 <\/p><p>http_access allow localhost <br \/> http_access allow clientes <br \/> http_access deny all <\/p><p>http_port 3128 intercept <br \/> https_port 3129 intercept ssl-bump cert=\/etc\/squid\/ssl_cert\/proxyca.pem generate-host-certificates=on dynamic_cert_mem_cache_size=4MB <\/p><p>sslcrtd_program \/usr\/lib64\/squid\/ssl_crtd -s \/var\/lib\/ssl_db -M 4MB <\/p><p>acl step1 at_step SslBump1 <br \/> ssl_bump peek step1 <br \/> ssl_bump bump all <\/p><\/blockquote>\n\n\n\n<p><em>4 Finalmente se redirecciona cualquier paquete que vaya por el puerto 80 y 443 al puerto 3128 o 3129  donde squid esta escuchando para que interceptarlos, firmarlos, seg\u00fan las necesidades de la configuraci\u00f3n de la red. <\/em><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>iptables -t nat -A PREROUTING -p tcp&nbsp; &#8211;dport 443 -j DNAT &#8211;to 192.168.10.254:3129 <\/p><\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>iptables -t nat -A PREROUTING -p tcp&nbsp; &#8211;dport 80 -j DNAT &#8211;to 192.168.10.254:3128<\/p><\/blockquote>\n\n\n\n<p><strong>Conclusi\u00f3n<\/strong><\/p>\n\n\n\n<p>con estos 5 pasos ya se tiene un proxy transparente que puede interceptar trafico cifrado y con el certificado en cada maquina como autoridad esta lo aceptara, aunque el uso legitimo de esto seria para un sysadmin para el control del trafico de la red como listas de acceso, es obvio que manipulando el codigo fuente de squid y otras configuraciones se podria almacenar el contenido cifrado para una posterior auditoria perdiendo por completo la protecci\u00f3n del cifrado<\/p>\n\n\n\n<p>Ejemplo.<\/p>\n\n\n\n<p>As\u00ed es como se veria algunos sitios web que han sido manipulados y que salvo uno vea directamente el certificado en el navegador no habria advertencia de que ha sido manipulada la conexi\u00f3n que se considera segura e inquebrantable y realmente no se ha quebrado esto funciona por que los clientes consideran una autoridad el certificado que se le ha creado, si ese certificado no se instala en cada computadora no seria efectivo. <\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/www.lastdragon.net\/misarchivos\/proxytransparentessl.jpg\" alt=\"\"\/><figcaption><a href=\"https:\/\/www.lastdragon.net\/misarchivos\/proxytransparentessl.jpg\">https:\/\/www.lastdragon.net\/misarchivos\/proxytransparentessl.jpg<\/a><\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Interceptar el trafico de seguro por TLS\/SSL no es cosa f\u00e1cil, pero Kazajst\u00e1n va a intentarlo. \u00bf Como va a hacerlo ? Con un tipo de SslStrip pero profesional, obligara a sus ciudadanos a a instalar un certificado de autoridad en sus computadoras y de esta forma teniendo la llave privada del certificado puede descifrar&#8230;<\/p>\n","protected":false},"author":1,"featured_media":2147,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[],"class_list":["post-2145","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-consultoria-y-manuales"],"_links":{"self":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2145","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2145"}],"version-history":[{"count":3,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2145\/revisions"}],"predecessor-version":[{"id":2150,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/posts\/2145\/revisions\/2150"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=\/wp\/v2\/media\/2147"}],"wp:attachment":[{"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2145"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2145"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lastdragon.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}