{"id":4227,"date":"2015-12-12T08:43:14","date_gmt":"2015-12-12T10:43:14","guid":{"rendered":"https:\/\/www.viazap.com.br\/?p=4227"},"modified":"2015-12-12T08:43:14","modified_gmt":"2015-12-12T10:43:14","slug":"filtragem-de-paginas-ssl-443-no-squid-transparente-2","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4227","title":{"rendered":"Filtragem de p\u00e1ginas SSL (443) no Squid transparente"},"content":{"rendered":"<h1>INTRODU\u00c7\u00c3O E CONFIGURA\u00c7\u00d5ES<\/h1>\n<div>\n<h1>MOTIVA\u00c7\u00c3O<\/h1>\n<p>H\u00e1 pouco tempo, precisei realizar a implanta\u00e7\u00e3o de um proxy Squid transparente, que realizasse a filtragem da navega\u00e7\u00e3o em HTTP (80) e navega\u00e7\u00e3o segura &#8211; SSL (443).<\/p>\n<p>Ao procurar literatura especializada, verifiquei um grande quantitativo de documenta\u00e7\u00e3o para esta implementa\u00e7\u00e3o do <em>Squid<\/em>, mas tamb\u00e9m observei que para a navega\u00e7\u00e3o segura (SSL- 443), os artigos e fontes de pesquisa, praticamente n\u00e3o existiam.<\/p>\n<p>Neste artigo, demonstro o passo a passo para a cria\u00e7\u00e3o de certificados e chaves que ser\u00e3o utilizados no Squid, recompila\u00e7\u00e3o do Squid com suporte a SSL (em um Debian Squeeze) e implementa\u00e7\u00e3o do redirecionamento de portas para direcionar o tr\u00e1fego de HTPS e HTTP, para o Squid.<\/p><\/div>\n<div><\/div>\n<div>\n<!--more--><\/p>\n<h1>OPENSSL &#8211; CRIANDO CERTIFICADOS E CHAVES PARA O SQUID<\/h1>\n<p>Para a cria\u00e7\u00e3o do certificado e gera\u00e7\u00e3o da chave p\u00fablica e chave privada, utilizaremos os comandos abaixo:<\/p>\n<p><strong># openssl genrsa -des3 -out empresa. Key 1024<br \/>\n# openssl req -new \u2013key -out empresa.csr<br \/>\n# openssl req -new -key server. Key -out server.csr<\/strong><\/p>\n<p>Ap\u00f3s a cria\u00e7\u00e3o das chaves, temos que remover a senha da chave:<\/p>\n<p><strong># cp empresa. Key empresa. Key.old<br \/>\n# openssl rsa -in empresa. Key.old -out empresa. Key<\/strong><\/p>\n<p>Criar certificado da empresa:<\/p>\n<p><strong># openssl x509 -req -days 365 -in empresa.csr -sign.key -out empresa.crt<\/strong><\/p>\n<p>Ao fim, copiaremos a chave e o certificado para pasta onde o Squid realizar\u00e1 a leitura:<\/p>\n<p><strong># cp empresa. Key \/etc\/squid\/certificados\/<br \/>\n# cp empresa. csr \/etc\/squid\/certificados\/<\/strong><\/p>\n<p>Obs.: A pasta &#8220;certificados&#8221; \u00e9 opcional, e a cria\u00e7\u00e3o foi meramente para efeito de organiza\u00e7\u00e3o.<\/p>\n<h1>RECOMPILANDO O SQUID COM SUPORTE A CONEX\u00d5ES SSL<\/h1>\n<p>Primeiro, devemos adicionar os reposit\u00f3rios abaixo na <em>sources.list<\/em> do seu <em>Debian Squeeze<\/em>, editando o arquivo: <em>\/etc\/apt\/sources.list<\/em>:<\/p>\n<div class=\"codigo\">deb-src http:\/\/ftp.de.debian.org\/debian\/ squeeze main contrib non-free<br \/>\ndeb-src http:\/\/backports.debian.org\/debian-backports squeeze-backports main contrib non-free<br \/>\ndeb http:\/\/security.debian.org\/ squeeze\/updates main contrib non-free<br \/>\ndeb-src http:\/\/security.debian.org\/ squeeze\/updates main contrib non-free<\/div>\n<p>Depois, execute o comando:<\/p>\n<p><strong># apt-get update<\/strong><\/p>\n<p>Para atualizar a base de dados do APT, com base nos novos reposit\u00f3rios.<\/p>\n<h1>PROCESSO DE RECOMPILA\u00c7\u00c3O DO SQUID<\/h1>\n<p>Entre no diret\u00f3rio <em>\/usr\/src<\/em>:<\/p>\n<p><strong># cd \/usr\/src<\/strong><\/p>\n<p>Baixe os fontes do Squid:<\/p>\n<p><strong># apt-get source squid<\/strong><\/p>\n<p>Baixe as depend\u00eancias de compila\u00e7\u00e3o do Squid:<\/p>\n<p><strong># apt-get build-dep squid<\/strong><\/p>\n<p>Baixe as depend\u00eancias de compila\u00e7\u00e3o do <em>OpenSSL<\/em>:<\/p>\n<p><strong># apt-get build-dep openssl<\/strong><\/p>\n<p>Baixe e instale depend\u00eancias necess\u00e1rias para o recompila\u00e7\u00e3o:<\/p>\n<p><strong># apt-get install devscripts build-essential fakeroot<\/strong><\/p>\n<p>Entre no diret\u00f3rio dos fontes:<\/p>\n<p><strong># cd squid-&lt;vers\u00e3o&gt;<br \/>\n# cd debian\/<\/strong><\/p>\n<p>Acesse o arquivo \u201crules\u201d, e adicione a linha de op\u00e7\u00e3o:<\/p>\n<div class=\"codigo\">&#8211;enable-ssl<\/div>\n<p>&#8230;No arquivo, para recompilarmos o Squid com suporte a SSL:<\/p>\n<p><strong># vim rules<\/strong><\/p>\n<p>Configure a nova op\u00e7\u00e3o (n\u00e3o execute o <em>make<\/em>, ou <em>make install<\/em>):<\/p>\n<p><strong># .\/configure<\/strong><\/p>\n<p>Compile e gere os pacotes para instala\u00e7\u00e3o:<\/p>\n<p><strong># debuild -us -uc -b<\/strong><\/p>\n<p>Instale os dois pacotes gerados:<\/p>\n<p><strong># dpkg \u2013i squid-(vers\u00e3o).deb squid-comon-(vers\u00e3o).deb<\/strong><\/p>\n<h1>CONFIGURA\u00c7\u00c3O DO SQUID.CONF PARA SUPORTE \u00c0 SSL + PROXY TRANSPARENTE<\/h1>\n<p>O intuito do arquivo \u00e9 adicionar a funcionalidade de SSL proxy ao Squid, e neste, j\u00e1 pressuponho que seu Squid esteja funcional, sendo que adicionaremos apenas as novas funcionalidades.<\/p>\n<p>No &#8220;squid.conf&#8221;, adicione as linhas para ativar o funcionamento da filtragem do HTTP e HTTPS no proxy:<\/p>\n<div class=\"codigo\">http_port 3128 transparent<br \/>\nhttps_port 3129 transparent cert=\/etc\/squid\/certificados\/empresa.crt Key=\/etc\/squid\/certificados\/empresa.key<\/div>\n<p>Obs.: Verifique que a adi\u00e7\u00e3o da linha que faz refer\u00eancia \u00e0 &#8220;HTTPS_PORT&#8221;, \u00e9 o momento que incorporamos a funcionalidade de suporte a SSL ao Squid. Assim, para o funcionamento pleno como argumentos, indicamos onde est\u00e1 localizado o certificado e a chave da empresa.<\/p>\n<h1>IPTABLES &#8211; REDIRECIONANDO OS PACOTES HTTP E HTTPS PARA O SQUID<\/h1>\n<p>Adicione ao seu <em>firewall<\/em>, o redirecionamento de portas de acesso 80 (http &#8211; navega\u00e7\u00e3o) e 443 (https- navega\u00e7\u00e3o segura):<\/p>\n<p>Obs.: eth0 &#8211; Interface de LAN<\/p>\n<div class=\"codigo\"><span class=\"comentario\"># iptables -t nat -A PREROUTING -i eth0 -p tcp &#8211;dport 80 -j REDIRECT &#8211;to-port 3128<br \/>\n# iptables -t nat -A PREROUTING -i eth0 -p tcp &#8211;dport 443 -j REDIRECT &#8211;to-port 3129<\/span><\/div>\n<h1>CONCLUS\u00c3O<\/h1>\n<p>A utiliza\u00e7\u00e3o de filtragem da navega\u00e7\u00e3o segura \u00e9 muito importante, e por desconhecimento, ou at\u00e9 mesmo por falta de literatura que indique os meios para esta implementa\u00e7\u00e3o, muitos administradores de rede continuam a utilizar o NAT para estes acessos, de forma a n\u00e3o aproveitarem toda a potencialidade do seu proxy.<\/p>\n<p>Espero que este artigo contribua para toda comunidade do VOL, na busca por uma literatura mais coesa e direta sobre este assunto.<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>INTRODU\u00c7\u00c3O E CONFIGURA\u00c7\u00d5ES MOTIVA\u00c7\u00c3O H\u00e1 pouco tempo, precisei realizar a implanta\u00e7\u00e3o de um proxy Squid transparente, que realizasse a filtragem da navega\u00e7\u00e3o em HTTP (80) e navega\u00e7\u00e3o segura &#8211; SSL (443). Ao procurar literatura especializada, verifiquei um grande quantitativo de documenta\u00e7\u00e3o para esta implementa\u00e7\u00e3o do Squid, mas tamb\u00e9m observei que para a navega\u00e7\u00e3o segura (SSL- [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[455,460,91,730,1,830,42,51,495,85,68,271,111,548],"tags":[1013,353,1011,361,720,86,1012,1014],"class_list":["post-4227","post","type-post","status-publish","format-standard","hentry","category-apache2","category-awstats","category-banco-de-dados","category-clusterweb","category-viazap","category-debian","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-proxy","category-redes-2","category-seguranca-2","category-squid-2","category-ubuntu-2","tag-1013","tag-de","tag-filtragem","tag-no","tag-paginas","tag-squid","tag-ssl","tag-transparente"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4227","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4227"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4227\/revisions"}],"predecessor-version":[{"id":4228,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4227\/revisions\/4228"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4227"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4227"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4227"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}