{"id":50,"date":"2010-07-26T15:04:31","date_gmt":"2010-07-26T18:04:31","guid":{"rendered":"http:\/\/blog.digavoip.com.br\/2010\/07\/26\/squid-3-parte-criando-uma-configuracao-basica\/"},"modified":"2010-07-26T15:40:45","modified_gmt":"2010-07-26T18:40:45","slug":"squid-3-parte-criando-uma-configuracao-basica","status":"publish","type":"post","link":"https:\/\/blog.abratel.com.br\/?p=50","title":{"rendered":"Squid &#8211; 3 parte &#8211; Criando uma configura\u00e7\u00e3o b\u00e1sica"},"content":{"rendered":"<p>Cr\u00e9dito: Carlos E. Morimoto <\/p>\n<p>O problema com o modelo de configura\u00e7\u00e3o minimalista que acabamos de ver \u00e9 que com apenas estas quatro linhas o proxy ficar\u00e1 muito aberto. Se voc\u00ea deixar o servidor proxy ativo no pr\u00f3prio servidor que compartilha a conex\u00e3o e n\u00e3o houver nenhum firewall ativo, qualquer um na internet poderia usar o seu proxy, o que naturalmente n\u00e3o \u00e9 desejado. O proxy deve ficar ativo apenas para a rede local. <\/p>\n<p>Vamos gerar, ent\u00e3o, um arquivo mais completo, permitindo que apenas os micros da rede local possam usar o proxy e definindo mais algumas pol\u00edticas de seguran\u00e7a. Neste segundo exemplo j\u00e1 aproveitei algumas linhas do arquivo original, criando regras que permitem o acesso a apenas algumas portas espec\u00edficas e n\u00e3o mais a qualquer coisa, como na configura\u00e7\u00e3o anterior:<\/p>\n<p>http_port 3128<br \/>\nvisible_hostname gdh<br \/>\nacl all src 0.0.0.0\/0.0.0.0<br \/>\nacl manager proto cache_object<br \/>\nacl localhost src 127.0.0.1\/255.255.255.255<br \/>\nacl SSL_ports port 443 563<br \/>\nacl Safe_ports port 80 # http<br \/>\nacl Safe_ports port 21 # ftp<br \/>\nacl Safe_ports port 443 563 # https, snews<br \/>\nacl Safe_ports port 70 # gopher<br \/>\nacl Safe_ports port 210 # wais<br \/>\nacl Safe_ports port 280 # http-mgmt<br \/>\nacl Safe_ports port 488 # gss-http<br \/>\nacl Safe_ports port 591 # filemaker<br \/>\nacl Safe_ports port 777 # multiling http<br \/>\nacl Safe_ports port 901 # swat<br \/>\nacl Safe_ports port 1025-65535 # portas altas<br \/>\nacl purge method PURGE<br \/>\nacl CONNECT method CONNECT<br \/>\nhttp_access allow manager localhost<br \/>\nhttp_access deny manager<br \/>\nhttp_access allow purge localhost<br \/>\nhttp_access deny purge<br \/>\nhttp_access deny !Safe_ports<br \/>\nhttp_access deny CONNECT !SSL_ports<br \/>\nacl redelocal src 192.168.1.0\/24<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow redelocal<br \/>\nhttp_access deny all<br \/>\nAs acl&#8217;s &#8220;SSL_ports&#8221; e a &#8220;Safe_ports&#8221; s\u00e3o as respons\u00e1veis por limitar as portas que podem ser usadas atrav\u00e9s do proxy. Neste exemplo, usei a configura\u00e7\u00e3o-modelo indicada na documenta\u00e7\u00e3o do Squid, que prev\u00ea o uso de diversos protocolos conhecidos e tamb\u00e9m o uso de portas altas, acima da 1024. Ela \u00e9 t\u00e3o extensa porque cada porta \u00e9 especificada em uma linha diferente. Podemos simplificar isso agrupando as portas na mesma linha, o que resulta em um arquivo de configura\u00e7\u00e3o muito menor, mas que faz exatamente a mesma coisa:<\/p>\n<p>http_port 3128<br \/>\nvisible_hostname gdh<br \/>\nacl all src 0.0.0.0\/0.0.0.0<br \/>\nacl manager proto cache_object<br \/>\nacl localhost src 127.0.0.1\/255.255.255.255<br \/>\nacl SSL_ports port 443 563<br \/>\nacl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535<br \/>\nacl purge method PURGE<br \/>\nacl CONNECT method CONNECT<br \/>\nhttp_access allow manager localhost<br \/>\nhttp_access deny manager<br \/>\nhttp_access allow purge localhost<br \/>\nhttp_access deny purge<br \/>\nhttp_access deny !Safe_ports<br \/>\nhttp_access deny CONNECT !SSL_ports<br \/>\nacl redelocal src 192.168.1.0\/24<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow redelocal<br \/>\nhttp_access deny all<br \/>\nVeja que em ambos os exemplos adicionei duas novas acl&#8217;s. A acl &#8220;localhost&#8221; cont\u00e9m o endere\u00e7o 127.0.0.1, que voc\u00ea utiliza ao usar o proxy localmente (ao navegar usando o pr\u00f3prio servidor), e a acl &#8220;rede local&#8221;, que inclui os demais micros da rede local. Substitua o &#8220;192.168.1.0\/24&#8221; pela faixa de endere\u00e7os IP e a m\u00e1scara de sub-rede usada na sua rede local (o 24 equivale \u00e0 mascara 255.255.255.0).<br \/>\nDepois de criadas as duas pol\u00edticas de acesso, v\u00e3o duas linhas no final do arquivo que especificam que os micros que se enquadrarem nelas poder\u00e3o usar o proxy:<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow redelocal<br \/>\nLembra-se da acl &#8220;all&#8221;, que cont\u00e9m todo mundo? Vamos us\u00e1-la para especificar que os clientes que n\u00e3o se enquadrarem nas duas regras acima (ou seja, clientes n\u00e3o-autorizados, vindos da Internet) n\u00e3o poder\u00e3o usar o proxy:<br \/>\nhttp_access deny all<br \/>\nEsta linha deve ir no final do arquivo, depois das outras duas. A ordem \u00e9 importante, pois o Squid interpreta as regras na ordem em que s\u00e3o colocadas no arquivo. Se voc\u00ea permite que o micro X acesse o proxy, ele acessa, mesmo que uma regra mais abaixo diga que n\u00e3o.<br \/>\nSe voc\u00ea adicionasse algo como:<br \/>\nacl redelocal src 192.168.1.0\/24<br \/>\nhttp_access allow redelocal<br \/>\nhttp_access deny redelocal<br \/>\n&#8230; os micros da rede local continuariam acessando, pois a regra que permite vem antes da que pro\u00edbe.<br \/>\nExistem alguns casos de sites que n\u00e3o funcionam bem quando acessados atrav\u00e9s de proxies, um exemplo comum \u00e9 o &#8220;Conectividade Social&#8221;, da Caixa. Normalmente nesses casos o problema est\u00e1 em algum recurso fora do padr\u00e3o usado pelo sistema do site e n\u00e3o no servidor proxy propriamente dito, mas, de qualquer forma, voc\u00ea pode solucionar o problema de forma muito simples orientando o servidor proxy a repassar as requisi\u00e7\u00f5es destinadas ao site diretamente. <\/p>\n<p>Para isso, adicionamos uma ACL na configura\u00e7\u00e3o, especificando a URL do site e usando a op\u00e7\u00e3o &#8220;always_direct&#8221;:<br \/>\nacl site dstdomain siteproblematico.com<br \/>\nalways_direct allow site<br \/>\nEsta regra deve vir antes da regra que libera os acessos provenientes da rede local, como em:<br \/>\nacl site dstdomain siteproblematico.com<br \/>\nalways_direct allow site<br \/>\nacl redelocal src 192.168.1.0\/24<br \/>\nhttp_access allow localhost<br \/>\nhttp_access allow redelocal<br \/>\nhttp_access deny all<br \/>\nDepois de configurar o arquivo, n\u00e3o se esque\u00e7a de reiniciar o servi\u00e7o para que a configura\u00e7\u00e3o entre em vigor:<br \/>\n# \/etc\/init.d\/squid restart<br \/>\nNesse ponto o seu proxy j\u00e1 est\u00e1 completamente funcional. Voc\u00ea pode come\u00e7ar a configurar os navegadores nos PCs da rede local para utiliz\u00e1-lo e acompanhar o desempenho da rede. Agora que j\u00e1 vimos o arroz com feij\u00e3o, vamos aos detalhes mais avan\u00e7ados da configura\u00e7\u00e3o:<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cr\u00e9dito: Carlos E. Morimoto O problema com o modelo de configura\u00e7\u00e3o minimalista que acabamos de ver \u00e9 que com apenas estas quatro linhas o proxy ficar\u00e1 muito aberto. Se voc\u00ea deixar o servidor proxy ativo no pr\u00f3prio servidor que compartilha a conex\u00e3o e n\u00e3o houver&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[2],"tags":[],"_links":{"self":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/50"}],"collection":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=50"}],"version-history":[{"count":0,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=\/wp\/v2\/posts\/50\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=50"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=50"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.abratel.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=50"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}