Resumo

Este artigo visa mostrar algumas das formas de uso do servidor proxy Squid, assim como as configurações para os casos apresentados. Não é proposta analisarmos todas as possíveis implementações com uso do Squid, fato este impossível de ser realizado, dado a grande flexibilidade que este software oferece, mas sim mostrar as maneiras mais comuns de sua utilização e configuração.

1 - Objetivos
O objetivo principal deste documento é proporcionar o entendimento do funcionamento do servidor proxy Squid e como são realizadas suas configurações. Não será abordado aqui o processo de instalação, tendo em vista tratar-se de tarefa muito simples, já que estamos falando de um software muito popular e presente em praticamente todas as distribuições Linux atuais, portanto podendo ser instalado através de pacotes da própria distribuição com muita facilidade. Mesmo que seja feita a escolha de instalação através do código fonte, provavelmente não será necessário muito mais do que os comandos ./configure, make all e make install, já velhos conhecidos de todos. Falaremos do uso das ACL's, recurso que faz com que o Squid seja tão flexível e eficiente, apresentado alguns exemplos mais usados e possíveis erros que podem ser cometidos na construção das regras de acesso. Será abordado também a utilização de softwares geradores de relatórios baseados na análise dos logs gerados pelo Squid, dado ao fato deste tema ser muito importante para a abordagem do trabalho, já que tais softwares são fundamentais para o processo de administração do servidor proxy. Esta não é uma abordagem definitiva, que visa esgotar o tema ou apresentar todas as possibilidades de uso e configurações, o que queremos é apresentar formas de implementar um servidor proxy eficiente de maneira fácil, rápida e com qualidade. O sistema operacional Linux será a base para o desenvolvimento deste trabalho, onde será utilizada a distribuição nacional Conectiva, versão 9, com kernel 2.4.21-28872cl, e a versão 2.5.125760cl do Squid.

2 - O que é o Squid?
Atualmente o acesso à internet tem se tornado praticamente obrigatório, principalmente no ambiente corporativo, tendo em vista o dinamismo que as novas tecnologias da comunicação podem trazer para este ambiente. Entretanto surgem vários problemas quanto a definição de como implementar esse acesso de computadores das redes corporativas à internet de forma segura e eficiente. No conjunto de medidas a serem tomadas para implementar esse acesso temos a utilização de servidores proxy. Um servidor proxy funciona como um intermediário no contato dos computadores da rede local com outras máquinas fora dela, como por exemplo na internet. Ele recebe as requisições de acesso externo dos hosts locais e as repassa a outros computadores fora da rede local, retornando as respostas aos computadores que as solicitaram. O Squid é um dos servidores proxy mais utilizados no mundo, dado a sua robustez, segurança e recursos que oferece. Apesar dos poucos protocolos que ele consegue trabalhar, no caso apenas o HTTP, HTTPS, FTP e gopher, é ainda uma alternativa muito interessante, já que estes são os principais protocolos da internet, e além do mais, muitos dos aplicativos que usam outros protocolos tem capacidade de usar o Squid através de um dos protocolos suportados por ele. O proxy Squid funciona ouvindo requisições numa determinada porta padrão, ou numa outra porta que pode ser configurada pelo administrador da rede.

O Squid é um software livre, o que implica dizer que ele está licenciado nos termos da GPL (General Public License), com isso temos uma garantia a mais (ao nosso ver, sem sombras de dúvidas é muito mais seguro que ter o software nas mão de uma única corporação que pode fechar as portas de uma hora para outra, como já vimos por várias vezes) de que nenhuma corporação vai descontinuar o projeto e deixar os seus usuários sem rumo, já que é a própria comunidade de usuários que contribui com o desenvolvimento e avanços deste software.

3 - Porque usar o Squid
Além da capacidade de intermediar o acesso à internet, como já mencionado, o Squid tem outros recursos que o torna uma excelente alternativa para aproveitamento mais racional da comunicação. Dentre esses recursos podemos destacar: Cache - através desse recurso o Squid armazena em cache o conteúdo acessado, de forma que se algum host fizer novamente uma requisição ao mesmo conteúdo, que já se encontra armazenado, ele recebe diretamente do cache, sem a necessidade de efetuar uma nova busca dos dados na internet. O uso desse recurso pode trazer uma rapidez maior ao acesso à internet, pois provavelmente o link do host com o proxy é bem mais rápido do que deste com a internet; Autenticação - podemos restringir o acesso ao servidor proxy com o uso da autenticação de usuários, de forma que seja melhorada a segurança, já que somente usuários autorizados poderão acessar a internet. Este recurso é bastante flexível e pode ser implementado de várias maneiras, como uso do protocolo LDAP, SMB, módulos PAM, etc; Registro de acessos - os acessos são registrados em arquivos de log, podendo esses serem utilizados para as mais diversas finalidades, que vão desde a análise de performance do servidor, até a geração de relatórios detalhados dos acessos à internet. Existem vários softwares analisadores de logs do Squid capazes de gerar relatórios tão bons, que por si já justificariam o uso do Squid, em razão do controle proporcionado; Controle centralizado - com o uso do proxy temos a facilidade de um único ponto centralizador do acesso à internet, o que torna a gerência da rede mais fácil e eficiente. Uma única máquina é capaz de prover acesso à várias outras; Segurança - como apenas o proxy está diretamente ligado à internet, temos apenas uma (ou mesmo poucas, caso tenhamos mais de um servidor proxy) máquina potencialmente vulnerável. Desta forma fica mais fácil concentrar esforços na melhoria da segurança de apenas um ponto na rede. A base instalada do Squid é hoje muito grande, sendo utilizado por empresas dos mais variados ramos e portes, vão desde instalações para uso doméstico até grandes corporações, Governos, etc. Isso mostra a credibilidade que este software livre possui.

4 - Proxy transparente
Cada software que precise acessar a internet e esteja atraz de um proxy, precisa ter configuradas as informações de endereçamento e porta onde o proxy da rede esteja ``ouvindo''. Entretanto, usuários mais ``espertos'' podem querer fugir do controle do proxy e utilizar uma outra maneira de acesso à internet, sem que este possa ser auditado e controlado. Caso as configurações relativas ao proxy sejam retiradas do browser ou outro utilitário pelo usuário, por exemplo, ele poderá se utilizar de um outro meio para se conectar à internet sem nenhum controle, colocando em risco a segurança da rede. Uma das maneiras mais eficientes de implementação de um proxy, levando-se em consideração a necessidade de controle, é com uso da técnica denominada proxy transparente. Isto é feito com a utilização de uma regra no firewall que efetua o redirecionamento das requisições destinadas à internet ao servidor proxy. Esse redirecionamento faz com que não mais precisem ser configurados os softwares com as informações do proxy, pois o firewall se encarrega de redirecionar as requisições à redes externas para o Squid, independente da vontade ou configuração do usuário. Além disso realizar a configuração dos parâmetros do servidor proxy

É também mais barato em termos de ciclos de CPU e uso da memória bloquear a porta 80 ao invés de redirecionar o tráfego. devem ser redirecionadas para a porta 3128. lembrando apenas que a opção -c deve ser usada apenas caso o arquivo de senhas ainda não exista. a seguinte regra: Se o redirecionamento for para uma máquina diferente #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192. um PDC Windows NT/2000. A maneira mais comum de realizar autenticação é com o uso do formato NCSA que usa o módulo ncsa_auth. visto que alguns usuários poderão ter problemas caso estejam usando estes navegadores que não atendem aos padrões. ou ainda através de um servidor LDAP. conforme podemos ver no exemplo abaixo. etc. Outro detalhe importante é com relação ao fato de que é mais barato em termos de ciclos de CPU e uso da memória ter os navegadores configurados explicitamente para usar um proxy. dessa forma cada usuário que deseje ter acesso à internet deverá antes de tudo se autenticar no proxy.10:3128 Se o redirecionamento for para a mesma máquina #iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 Estas regras dizem ao firewall que todas a requisições que entrarem pela interface eth0 (interface usada neste caso apenas como exemplo). Para implementarmos esse redirecionamento precisamos apenas inserir no Iptables. então sua adoção deve ser avaliada antes da implementação. # htpasswd -c arquivo_de_senhas usuario Para que o Squid forneça suporte a autenticação devemos habilitar estas configurações no arquivo squid. Além do mais. já que deveremos fazer uma escolha entre eles. pois ela instrui o utilitário a criá-lo.10. que é o software para criação de firewall em Linux. No . 5 . O bloqueio tem menos overhead que a redireção. no nosso caso esta é a interface onde está ligada nossa rede interna. e que o protocolo seja o TCP.168. destinadas a porta 80. Para este trabalho nossa implementação foi baseada neste método. no formato NCSA (geralmente associado ao utilitário htpasswd. para que seu acesso seja liberado. alguns navegadores podem não funcionar corretamente com o uso deste recurso. como por exemplo. portanto cabe uma análise de qual dos dois será mais interessante para cada caso. Uma observação importante é que este recurso de proxy transparente não funciona com a autenticação de usuário. entretanto o Squid fornece mecanismos para ser efetuado um controle por usuário.numa meia dúzia de máquinas pode ser fácil e rapidamente feito. o controle de acesso é feito por máquina. O uso do proxy transparente deve sempre que possível ser evitado e usado apenas se não houver uma outra maneira mais prática e eficiente de se fazer o que se pretende com o uso deste recurso. O cadastro dos usuários para acesso ao Squid é feito com o uso do utilitário htpasswd.16. No primeiro caso como o Squid não está instalado na mesma máquina onde está o firewall este redirecionamento é feito para a máquina com IP 192. que é onde nosso servidor proxy está ouvindo. já que por padrão ele não vem habilitado. É nela que são realizadas as mudanças necessárias para que o esquema de autenticação comece a funcionar. A autenticação poderá ser feita de várias maneiras.16. ou módulos PAM. Feito o redirecionamento o Squid assume o controle da conexão e aplica suas regras de forma que sejam liberados os acessos apenas de acordo com as regras nele definidas.conf através da TAG auth_param.Autenticação no Squid Por padrão.168. o mesmo utilizado pelo Apache). mas isto não é interessante quando temos uma rede com uma quantidade muito grande de máquinas a serem configuradas. e pode forçar as pessoas a utilizar um proxy. do que redirecionar o tráfego como vimos. que é a porta padrão do serviço WWW.

objetos ``quentes'' e objetos com negativa de cache. entretanto em redes maiores pode haver a necessidade de um incremento deste.Esta opção vem habilitada por padrão no squid.próprio arquivo tem comentários que mostram como isso deve ser feito para cada tipo escolhido.Nesta opção é definida a quantidade de memória que o Squid irá usar.Esta ACL diz ao squid para não armazenar em cache o conteúdo dos CGI's. acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY . entretanto não há com o que se preocupar. nossa configuração ficou assim. Em auth_param basic children 5 estamos definindo quantos processos filhos do módulo de autenticação poderão existir. que pode ser duas ou três vezes maior. bastando para isso que sejam feitas ACL's para isso e definidas as regras de acesso.conf O arquivo de configuração do Squid garante um grau elevado de capacidade de customização deste servidor. mas é bom lembrar que o manual do Squid adverte que a memória aqui mencionada é referente a objetos em trânsito. Ela é responsável por dizer ao Squid que ele deve buscar os dados diretamente na origem. Com estas configurações já temos nosso proxy habilitado a trabalhar com autenticação de usuários. é a memória apenas para ele utilizar na manipulação dos seus objetos e não ao total de memória consumida por ele. ou seja. . Esta configuração se refere a conteúdo dinâmico. Abaixo mostraremos algumas destas opções.conf e inclusive é recomendado o seu uso. pois a maior parte delas se constitui de comentários referentes as funções de cada TAG e como deve-se utilizá-la.Principais TAG's do arquivo squid. pois obviamente não é interessante por tratar-se de conteúdo dinâmico. esse número é o padrão do Squid. E por último auth_param basic credentialsttl 2 hours especifica a validade de uma autenticação bem sucedida. auth_param auth_param auth_param auth_param basic basic basic basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd children 5 realm Servidor Proxy Squid ARL credentialsttl 2 hours A linha auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd especifica qual módulo será usado. portanto se a URL contém o padrão aqui especificado. sem passar pelos vizinhos na hierarquia. hierarchy_stoplist cgi-bin ? . cache_mem 64 MB . Como vamos utilizar o método básico. será tomada a atitude de ir direto a origem buscar o conteúdo. não querendo tornar isso um guia definitivo para configuração do Squid.conf não precisam ser alteradas. 6 . mas sim um ponto de partida para implementação de um servidor proxy. Desta forma vamos nos ater as configurações mais importantes e necessárias para que possamos ter um servidor proxy funcional. Em auth_param basic realm Servidor Proxy Squid ARL configura-se a mensagem que aparecerá na tela onde são fornecidas as informações do usuário para autenticação. no caso /usr/lib/squid/ncsa_auth é onde se encontra o arquivo com os usuários e senhas gerado conforme comentado acima. pois já representam a configuração mais adequada. Esta opção é interessante para que possamos personalizar este mensagem da tela de login do nosso servidor. Ele é composto por mais de 3000 linhas. De tantos comentários ele parece mais um manual do que um arquivo de configuração. devido ao número provavelmente maior de usuários que precisarão se autenticar simultaneamente. Podemos ter um servidor configurado e funcional com apenas pouco mais de 30 linhas no arquivo. devemos considerar também que boa parte das opções configuradas como padrão no arquivo squid.

0 20% 4320 . acl acl acl acl acl acl acl acl acl acl acl acl acl acl acl all src 0. além das anteriormente comentadas que já vêm configuradas por padrão. também não é necessária nenhuma alteração. com o tamanho de 300 MB.0. .0. snews Safe_ports port 70 # gopher Safe_ports port 210 # wais Safe_ports port 1025-65535 # unregistered ports Safe_ports port 280 # http-mgmt Safe_ports port 488 # gss-http Safe_ports port 591 # filemaker Safe_ports port 777 # multiling http CONNECT method CONNECT .0.. tendo 64 diretórios com 64 outros diretórios em cada um deles.0.Estas regras de acesso foram feitas com o uso das ACL's criadas anteriormente na área designada ao usuário.Esta TAG determina onde e como será feito o cache.0.0/8 SSL_ports port 443 563 acl Safe_ports port 80 # http Safe_ports port 21 # ftp Safe_ports port 443 563 # https. neste caso o diretório de cache é /var/cache/squid.0.255 to_localhost dst 127. refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . Não há necessidade de mudança nestes valores.Seção do arquivo com ACL's definidas pelo usuário.Estas ACL's fazem parte da configuração padrão do Squid e é o mínimo recomendável para seu uso. http_access http_access http_access http_access allow manager localhost deny manager deny !Safe_ports deny CONNECT !SSL_ports . portanto apenas acrescente as suas próprias regras a estas.TAG's referentes ao processo de autenticação. não sendo necessária nenhuma alteração nas mesmas.0/24 USUARIOS proxy_auth REQUIRED PORNO url_regex -i ``/etc/squid/porn'' PORNO1 url_regex -i ``/etc/squid/porn1'' NAO_PORNO url_regex -i ``/etc/squid/noporn'' .Definição de regras de acesso referentes as ACL's da parte da configuração padrão do Squid. http_access allow USUARIOS NAO_PORNO MINHA_REDE http_access allow USUARIOS !PORNO !PORNO1 MINHA_REDE . o Squid faz uso destes valores para verificar se os objetos armazenados são os mais recentes ou há a necessidade de atualizá-los. auth_param auth_param auth_param auth_param basic basic basic basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd children 5 realm Servidor Proxy ARL credentialsttl 2 hours .0.0/0.0 manager proto cache_object localhost src 127.255. isto é.1/255.0. como podemos observar elas foram feitas pelo próprio usuário.168. acl acl acl acl acl MINHA_REDE src 192.Estas opções são o padrão do Squid e configuram como serão tratados os tempos de vida dos objetos no cache.16.255.cache_dir ufs /var/cache/squid 300 64 64 .

Isto pode trazer consequências indesejáveis principalmente se for usado negação ou liberação explícita como por exemplo http_access deny PORNO ou http_access allow NAO_PORNO. como por exemplo um acesso bloqueado de forma errada. Isto é importante para que os usuários tenham informações de como interagir com o responsável pelo servidor em caso de problemas. Deve ser registrado o FQDN do servidor e não apenas o hostname. de forma que o cliente não perceba que está ``conversando'' com um proxy. como no caso das apresentadas abaixo para serem usadas quando estamos com o recurso de proxy transparente habilitado. coredump_dir /var/cache/squid . pois o Squid tem uma regra implícita que inverte a última regra da lista caso nehuma delas seja aplicada.Opção para configuração do e-mail do administrador do proxy que vai aparecer nas mensagens de erro. pois por padrão as mensagens são em inglês. cache_mgr email_administrador .Local onde o Squid gravará seus arquivos core em caso de falhas. Seu uso é recomendado. E estas mensagens. visible_hostname www. pois estão em arquivos no formato html. que no nosso caso representa qualquer origem.Esta regra de acesso é recomendada para uso como última regra da lista define o acesso ao proxy.com. Ela diz ao Squid que se nenhuma das regras anteriores for aplicada o acesso será então negado. podem ser facilmente personalizadas.ACL's As ACL's . É muito importante que esta seja a última regra da sua lista. Estes arquivos são comuns em sistemas UNIX e representam o estado do software no momento em que o erro que provocou sua finalização ocorreu.http_access deny all .Com o uso dessa opção podemos determinar em qual linguagem serão apresentadas as mensagens de erro. 7 . caso contrário o Squid vai tentar descobrir o nome. constituem-se na grande flexibilidade e eficiência do Squid.br . é através delas que podemos criar regras para controlar o . httpd_accel_port 80 httpd_accel_host virtual httpd_accel_with_proxy on httpd_accel_uses_host_header on Existem várias outras opções interessantes para serem exploradas. portanto seu uso vai impedir acessos indesejados ao proxy. Está porta é usada para troca de informações entre servidores proxy.Permite o acesso a porta icp de acordo com a configuração feita na ACL all.(Access Control Lists) ou listas de controle de acesso. entretanto como não é nosso objetivo aqui dissecar cada uma delas. Em /usr/share/squid/errors/ existem vários subdiretórios com as linguagens suportadas pelo Squid. error_directory /usr/share/squid/errors/Portuguese .meu_seite.Mostra o nome do servidor configurado nas mensagens de erro. vamos deixar isso como proposta para uma outra oportunidade. Algumas outras opções também são interessantes. icp_access allow all . Estas opções vão fazer com que o Squid se comporte como um servidor web. inclusive.

168. já que além da falsa sensação de segurança não será aproveitada a grande capacidade e funcionalidade do Squid. T . abaixo temos os mais comuns: src . e os horários através de intervalos na forma hora:minuto_iniciohora:minuto_final. portanto é muito importante que seja observada esta regra no momento em que estão sendo construídas as regras de acesso. um endereço de um determinado host. dstdomain .Tipo semelhante a url_regex.16. O uso das listas de controle de acesso é a parte mais importante da configuração de um servidor proxy Squid.tipo indicado para verificar o domínio da máquina cliente. o que pode causar atrasos para a resposta da requisição. Praticamente todo o processo de controle do Squid é feito com o seu uso. como 192. mas está relacionada ao endereço de destino.meudominio. M Monday (Segunda-Feira). testar e testar. as demais não serão mais verificadas. como 192.168. A primeira coisa que devemos saber é que o Squid interpreta as ACL's de cima para baixo. entretanto com relação ao destino. H . urpath_regex . não podendo ser esquecido o ``.html a procura será realizada apenas na parte . para que seja case-insensitive deve ser usada a opção -i.10/24 ou uma faixa de endereços. Pode-se especificar um endereço de rede.16. url_regex . time . pois se bem configuradas podem trazer um nível de segurança muito bom para a rede.1 .acesso à internet das mais diferentes formas.com.16.Tipos de ACL's As ACL's são definidas da seguinte forma: acl nome tipo string | ``arquivo'' Existem vários tipos de ACL que podemos utilizar. portanto cuidado com isso. Deve ser observado que a expressão é case-sensitive. dstdom_regex .br''. As ACL's são case-sensitive.20/24. Os domínios serão obtidos por resolução reversa de IP.16. 7. A definição do domínio deve ser feita da seguinte forma: ``.0/24. como 192.Friday (Sexta-Feira) e A .Sunday (Domingo).Saturday (Sábado).10-192. Uma dica para se fazer boas ACL's é testar.com. srcdomain .tipo utilizado para indicar endereços IP de origem.168. F . acrescentando a flexibilidade do uso da expressão regular.Thursday (Quinta-Feira). Os dias da semana são definidos através de letras que os representam.Tuesday (Terça-Feira). dst . isto é. É o tipo mais comum de ACL dada a flexibilidade proporcionada pelo uso de expressões regulares. entretanto se mau configuradas podem ter resultado oposto.'' (ponto) no início. Os dias da semana são especificados assim: S .semelhante ao tipo anterior. continue testando e monitorando seus logs para identificar algum problema que possa ocorrer. srcdom_regex .servidor. como por exemplo.br/pasta/sexo. Caso seja usada o opção -i elas deixarão de ser casesensitive. na URL http://www. Uma outra regra muito importante é que caso uma das regras coincida.usado da mesma forma que srcdomain. Seu uso é semelhante as duas anteriores. e depois quando achar que está bom.usado para especificar dias da semana e horários. entretanto com relação ao destino.Wednesday (Quarta-Feira). isto quer dizer que a procura vai ser feita apenas na parte da URL após o nome do servidor. Isso independe da quantidade de regras que ainda faltam para atingir o fim da lista. site_porno é diferente de Site_porno. W .usado da mesma forma que srcdom_regex. mas procura a expressão regular na URL sem levar em conta o nome do servidor e o protocolo.168.Este tipo percorre a URL a procura da expressão regular especificada.avalia o domínio usando expressões regulares.

de forma que possa se chegar a uma situação ideal de controle. Não existe uma regra rígida para criação de listas de acesso.Realiza o controle pela porta de destino do servidor. ou seja. Dado ao fato deste ser o mais importante operador. 7. proto .Usa uma expressão regular para tentar ``casar'' com os dados do cabeçalho HTTP e combinando então com o navegador utilizado pelo cliente. Este tipo requer um servidor Ident rodando na máquina do cliente. Com ele podemos construir regras de controle de acesso baseadas no protocolo HTTP e FTP.Especifica o tipo de método usado na requisição. Ela é também case-sensitive. como por exemplo GET. ident . em vez de endereço IP da placa.Especifica uma expressão regular para ser verificada no cabeçalho da requisição em busca de um tipo MIME que coincida com o especificado. proxy_auth . Podem ser passados os nomes dos usuários ou usada a opção REQUIRED para que seja autenticado qualquer usuário válido. de um mesmo tipo ou de tipos diferentes. para que se possa monitorar o Squid através deste protocolo. ident_regex .Construindo regras de acesso Muitas são as possibilidades de construção de listas de acesso com o uso destes e outros tipos citados acima. primeiramente são feitas as classes de ACL's e depois são construídas as regras de acesso com o uso destas ACL's. maxconn .Serve para especificar o protocolo. A autenticação é feita com uso de softwares externos. vamos focar o nosso trabalho no seu uso. CONNECT ou POST. mas o fato é que para cada situação específica vai ser necessário o uso de uma ou mais ACL's. Vamos descrever algumas situações de como podemos construir listas de controle de acesso para atender a cada uma das situações propostas.Semelhante a ident.Tipo usado para construir lista de acesso baseada no MAC Address da interface de rede do cliente. port . arp .2 . browser . req_mime_type . É interessante observar que o controle de acesso deve ser construído em duas etapas. method . interessante para uso com outras ACL's de forma a limitar quantidades de conexões para determinados endereços específicos.Especifica um limite de conexões vindas de um determinado cliente. mas utilizando expressão regular.html. para que seja case-insensitive deve ser usada a opção -i. No momento da construção das regas devemos levar em consideração além das observações que já foram feitas o fato de que se nenhuma das regas forem aplicadas. snmp_community . observando que se trata de uma das formas de resolver o problema e não a única./pasta/sexo. como por exemplo FTP ou HTTP.Tipo usado para especificar o nome da comunidade SNMP.Tipo usado para implementar autenticação de usuários no proxy. dos quais o mais usado é o http_access. Existem vários operadores. portanto vai depender muito da necessidade e habilidade de cada um. com o uso de operadores. usa-se o seu endereço MAC. portanto é muito importante que seja incluída como última linha das regra de acesso ``http_access deny all''. o Squid aplica o oposto da última regra da lista. Desta forma não vamos deixar que esta inversão de regra . neste tipo deve ser especificado o número da porta.Realiza o controle de acesso baseado no nome do usuário.

168. Controlando o acesso usando autenticação de usuário: 16. neste caso requisições vindas de .16.lafora. pois negaremos qualquer acesso que não tenha uma regra específica.168. destino e autenticação de usuário: 19.168.0/24 3.0/24 9.br 14. nos demais casos o acesso será negado. É muito importante não esquecer o ``. acl localnet src 192.168.16. entretanto aqui é verificado o domínio. onde usamos src e dst.168.168. 22.br e com destino a .com.0/24.17. sob pena da regra não funcionar. nos demais casos o acesso será negado.meudominio.br 13.com. acl mundo_lafora dstdomain .17.168.meudominio.0/24 acl outra_rede dst 192.com. 11.168. http_access allow localnet outra_rede http_access deny all Aqui juntamos as duas anteriores e estamos especificando que requisições vindas da rede 192. acl usuarios proxy_auth REQUIRED 17. acl localnet src 192. mas isto já foi visto na seção 5.16. dado ao uso da opção REQUIRED. Apresentamos abaixo alguns exemplos de como construir regras de acesso: 1. Controlando acesso pela nome de domínio de origem e destino: 12. http_access allow outra_rede http_access deny all Com estas regras estamos limitando o acesso apenas à rede 192.lafora. Controlando o acesso pelo destino: 5.br serão liberadas. acl meu_dominio srcdomain .'' (isso mesmo.0/24 6. http_access allow meu_dominio mundo_lafora http_access deny all Estas regras são semelhantes as acima. acl localnet src 192.0/24 acl usuarios proxy_auth REQUIRED http_access allow localnet outra_rede usuarios . desta forma qualquer acesso para outro destino será negado. 20.168. já que ela é realizada por softwares externos.0/24 10. Controlando acesso pela origem. 21. http_access allow usuarios http_access deny all Esta regra faz com que o acesso seja liberado apenas para usuários que sejam válidos.16.com. e que se autentiquem no Squid. Controlando acesso pela origem: 2. 18.0/24 serão aceitas.17. 4. Para que a autenticação funcione devem ser configuradas as TAG's que informam ao Squid como esta será feita. http_access allow localnet http_access deny all Com estas regras estamos especificando que requisições vindas da rede 192. Controlando acesso pela origem e destino: 8.17.17. 15. o ponto) antes do nome do domínio.0/24 serão aceitas.168. acl outra_rede dst 192.16.possa provocar algum dissabor. 7.0/24 e que sejam destinadas à rede 192. acl outra_rede dst 192. nos demais casos o acesso será negado.

Estes erros podem ser mais comuns quando o número de regras aumentam.0/24 acl usuarios proxy_auth REQUIRED acl expediente time MTWHF 8:00-18:00 http_access allow expediente localnet outra_rede usuarios http_access deny all Apenas acrescentamos o controle baseado no horário. mas que na verdade não representam conteúdo impróprio. No nosso caso estamos fazendo o uso de arquivos que contém as listas de palavras ou sites que consideramos inadequados. observe que a verificação dos usuários é feita por último. 7.168. acl localnet src 192. nem sempre a palavra sexo representa necessidade de bloqueio. Então aqui estamos fazendo o seguinte: primeiramente vamos liberar usuários que desejem acessar sites listados no arquivo /etc/squid/noporn e que pertençam a nossa rede.Erros mais comuns Como já mencionamos.16. 35. o horário não está dentro do permitido. acl MINHA_REDE src 192. no caso 192.0/24 acl outra_rede dst 192. 27. 32. 34.17.168. mas desde que os usuários sejam autenticados.168.http_access deny all Com estas regras estamos especificando que requisições vindas da rede 192.0/24 ou usuários que queiram acessar sites com conteúdos diferentes (! significa diferente) do listado nos arquivos /etc/squid/porn e /etc/squid/porn1 e que pertençam a nossa rede. pois com ele podemos fazer o bloqueio de conteúdo considerado impróprio de maneira muito fácil.168.br/sexoseguro.16. nos demais casos o acesso será negado. em ambos os casos deverá ser feita a autenticação. Acrescentando controle de acesso pelo horário: 24. para que o resultado seja o que realmente esperamos. 31. no caso /etc/squid/noporn. apenas no nosso caso fica melhor desta forma. 25. no caso /etc/squid/porn e /etc/squid/porn1 e outro arquivo com sites e palavras que podem ser barradas por alguma regra dos arquivos anteriores. por exemplo www. 26. Controlando o acesso por palavras chaves: 30.16. por exemplo.17. pois não vamos forçar o usuários a se autenticarem para só depois negar o acesso por um outro motivo. Veja também a ordem em que as ACL's são verificadas. 29. 28. portanto para que eles sejam evitados devemos nos lembrar sempre que: .ministeriodealgumacoisa.168.0/24 serão aceitas. As palavras ou sites devem ser colocados no arquivo uma por linha. O uso inadequado ou desconhecimento destas regras de como utilizar as ACL's podem tornar suas listas totalmente ineficientes e lhe trazer a sensação de que tudo está funcionando corretamente.3 . pois se.168. 36.0/24 e que sejam destinadas à rede 192.gov. devemos ter sempre em mente os problemas referentes a sua criação.16. Por exemplo.html. 23. apesar da grande flexibilidade na construção das listas de acesso. Isto não é obrigatório. pois podemos ter sites de conteúdo educativo que contenham essa palavra na sua URL. 33. o acesso será negado imediatamente sem nem mesmo tentar checar as outras ACL's.0/24 acl USUARIOS proxy_auth REQUIRED acl PORNO url_regex -i "/etc/squid/porn" acl PORNO1 url_regex -i "/etc/squid/porn1" acl NAO_PORNO url_regex -i "/etc/squid/noporn" http_access allow USUARIOS NAO_PORNO MINHA_REDE http_access allow USUARIOS !PORNO !PORNO1 MINHA_REDE http_access deny all Este é sem dúvida o tipo de controle mais usado.

com verificação de conteúdo impróprio através de expressões regulares. Esta regra faz com que seja invertida a última regra da lista.17.168. ou seja.168. Os dois operadores deveriam na verdade ser apenas um.  Existe uma regra implícita no Squid que é utilizada caso nenhuma das regras da lista seja aplicável ao acesso.168. 7.. pois se o usuário conseguir se autenticar já será suficiente para que o acesso seja liberado.0/24. 4.168. 6.17.168. evitando surpresas com essa inversão que o Squid faz. Este é o tipo mais comum de erro. As expressões regulares são case-sensitive. entretanto se forem analisadas com mais calma podemos verificar que elas não vão funcionar de acordo com o que esperamos. para usuários autenticados. maiúsculas são diferenciadas de minúsculas. Se uma das regras da lista de acesso for aplicada. Vejamos alguns casos de erros: 1.16. acl localnet src 192. isto é.. http_access allow localnet outra_rede http_access deny all Aqui foi cometido o mesmo erro do caso anterior.0/24 http_access allow localnet http_access allow outra_rede http_access deny all Aparentemente estas regras estão corretas. a conexão deverá ser originada na nossa rede e ter como destino uma rede específica.    As regras são sempre interpretadas de cima para baixo. A segunda regra vai ser aplicada somente se a origem for diferente de 192.16.17. só que agora com o uso de autenticação de usuários.0/24. Desta forma o correto seria ter apenas um operador escrito da seguinte maneira http_access allow localnet outra_rede.16. 2. acl USUARIOS proxy_auth REQUIRED .0/24 14.0/24 já é suficiente para que o aceso seja liberado. 13. de forma que se ela por exemplo for deny será transformada em allow e aplicada ao acesso.0/24 9. É extremamente recomendável que a última regra da lista seja http_access deny all. portanto um resultado totalmente diferente do que realmente queríamos.16.168. http_access allow usuarios 11. não sendo verificada a segunda regra que determina que o destino deve ser a rede 192. 12.0/24 acl outra_rede dst 192. acl usuarios proxy_auth REQUIRED 10. então a origem e o destino não serão mais verificados. acl MINHA_REDE src 192. pois uma regra já foi satisfeita. 3. acl outra_rede dst 192. As regras são interpretadas da seguinte forma: http_access allow ACL1 AND ACL2 AND ACL3 OR http_access allow ACL4 AND ACL5AND ACL1 OR .168.168. as demais serão ignoradas. como já visto no caso anterior. pois da forma que está se o acesso vier da rede 192. por isso devemos ter sempre isto em mente ao montarmos nossas regras.16. ou o contrário. Queremos controlar o acesso pela origem e destino. isto é. Queremos controlar o acesso pela origem. para que seja case-insensitive deve ser usada a opção -i. Queremos que o acesso seja restrito a determinada origem e destino simultaneamente.0/24 8. pois com isso todo acesso que chegar até ela será negado. acl localnet src 192. 5. apenas uma das regras da lista vai ser aplicada por vez.

8.en . 8 . A utilização deste software é muito simples.de/tools/squid/calamaris/Welcome. após isso já podemos usá-lo. Cada uma delas apresenta características e funcionalidades diferentes.html a localização do relatório gerado.html O comando acima já é suficiente para geração de relatórios excelentes da análise dos logs.Analisando os logs do Squid Não poderíamos falar do Squid sem que fossem analisadas algumas das muitas alternativas em software para análise dos logs e geração de relatórios com informações mais ``legíveis'' e amigáveis das atividades do servidor. entretanto o objetivo final é fornecer uma maneira mais amigável de se analisar as preciosas e detalhadas informações que o Squid grava em seus logs. 19.html. e sem isso caso o usuário consiga se autenticar e o site esteja na lista do arquivo /etc/squid/noporn já é suficiente para ter o acesso autorizado. 18. Os relatórios gerados são bem simples na apresentação. entretanto muito ricos em detalhes extraídos dos arquivos de logs. assim como o próprio software já traz alguns exemplos de como fazer isto.log >/srv/www/default/html/calamaris/index. 8. Oops! proxy server. escolhemos estas três ferramentas citadas para mostrarmos sua utilização. -F html especifica o formato do relatório que queremos. pois na linha http_access allow USUARIOS NAO_PORNO não foi feita a restrição com base na origem.log é onde está localizado o arquivo de log do Squid e >/srv/www/default/html/calamaris/index. conforme veremos nas subseções seguintes. neste caso uma pasta na árvore do Apache de forma que possa ser analisado de qualquer estação da rede. /var/log/squid/access. Netscape/iplanet Web Proxy Server e é claro o Squid. SARG e Squid-graph. dentre muitas outras. Compaq Tasksmart. #/usr/local/calamaris/calamaris -a -F html /var/log/squid/access. Novell Internet Caching System.2 . 17. acl PORNO url_regex -i "/etc/squid/porn" acl PORNO1 url_regex -i "/etc/squid/porn1" acl NAO_PORNO url_regex -i "/etc/squid/noporn" http_access allow USUARIOS NAO_PORNO http_access allow USUARIOS !PORNO !PORNO1 MINHA_REDE http_access deny all Nestas regras apenas foi cometido um pequeno erro.1 Calamaris O Calamaris é um software escrito em Perl que efetua a geração de relatórios bem detalhados do uso da internet usando os arquivos de logs de vários servidores proxy. mas isso não será tratado aqui dado ao fato que isto deverá ser feito de acordo com as necessidades da cada um. Neste trabalho. O ideal é que seja desenvolvido um script para que possamos programar a execução do Calamaris pelo cron. no nosso caso /usr/local/calamaris.15. 16. primeiramente temos que baixar a versão mais recente dele emhttp://cord. Existem várias ferramentas para análise e geração de relatórios dos logs do Squid. independente de qual rede esteja sendo originada a requisição. no caso em HTML. está então faltando a ACL MINHA_REDE. eles podem ser gerados no formato HTML ou mesmo em texto para ser enviado via e-mail.SARG . dentre elas podemos destacar o Calamaris. descompactar o arquivo no diretório de sua preferência. Neste caso usamos a opção -a que diz ao Calamaris para serem gerados todos os relatórios. como o NetCache. Abaixo temos um exemplo simples de comando necessário para geração dos relatórios do log do Squid. Inktomi Traffic Server.

1 squid-graph # chmod +x /usr/local/squid-graph/bin/* A execução do comando para geração dos gráficos vai depender de como e quais deverão ser gerados. mas isso não quer dizer que não possamos extrair relatórios mais personalizados e de acordo com nossas necessidades. sendo esta a última versão disponível neste momento. o SARG estará pronto para uso. Além do mais. # tar xzvf squid-graph-3. Ele foi escrito por um brasileiro e tem recursos muito interessantes. Ele pode ser conseguido em http://squid-graph. Uma outra vantagem deste software é que ele está disponível em várias línguas. #/usr/local/squid-graph/bin/squid-graph -c -n -o=/srv/www/default/html/squid-graph/ -title="Gráfico de uso do proxy" < /var/log/squid/access.Squid-Graph O Squid-Graph. além de está disponível em pacotes da maioria das distribuições. caso este recurso esteja sendo utilizado. e mais dois gráficos para os acessos e transferências UDP. como listagem de sites mais visitados. falhas na autenticação. para ser configurado para uso. quer dizer. entretanto uma boa maneira de se executar este comando de maneira que seja gerados os gráficos de forma cumulativa é apresentada abaixo. cada um destes relatórios estão recheados de informações como datas e horários dos acessos. -o=/srv/www/default/html/squid-graph/ . A opção -n faz com que não sejam ``ecoadas'' na tela as informações do processamento do log do Squid.gz e executar os comando abaixo na ordem apresentada.log No comando acima usamos a opção -c. No nosso caso utilizamos o pacote rpm disponível na nossa distribuição.1.gz. O processo de instalação é muito simples. siga apenas os passos tradicionalmente usados para instalação usando este método. assim como o Calamaris.tar. É importante lembrar que é necessário que seja instalado o módulo perl GD. etc. listas de sites acessados por usuários e horários em que foram acessados.1.tar.O SARG é um dos mais usados e eficientes softwares para geração de relatórios dos logs do Squid.com.br/orso/. mas nem por isso deixa de ser mais uma alternativa interessante e pode complementar o rol de ferramentas de administração.4. é um gerador de gráficos da utilização do servidor proxy. isto é. 8.3 . semanais e mensais. que com certeza deve está nos CD's de sua distribuição favorita. quantidades de dados trafegados e outras mais./configure make make install Para geração dos relatórios é necessário apenas a execução do comando sarg.monthly) e permitem automatizar a geração de relatórios diários.4/ . vamos ter dois gráficos para os acessos e transferências TCP. além do mais tem um arquivo de configuração relativamente simples e bem comentado. pois trata-se apenas de descompactar os arquivos no diretório escolhido.1.com/files/stable/squid-graph3. desta forma estamos gerando os gráficos cumulativos.4.onda. Após ter baixado a versão mais recente do sitehttp://web. no nosso caso sarg-1.tar. Assim como o Calamaris a execução do SARG fica mais interessante se programada através do cron. já que não precisamos compilar nada. tempo de gasto na visita ao site. sarg. Ele se atem a apresentar informações mais sintéticas dos acessos e transferências de dados.weekly e sarg. # # # # # tar zxvf sarg-1. entretanto como o próprio nome menciona.gz cd sarg-1. é escrito em Perl. sites que o acesso foi negado.gz -C /usr/local/ # mv squid-graph-3. como mostraremos a seguir. No nosso caso instalamos em /usr/local/squid-graph/.securlogic.daily. isso pode ser implementado com o uso dos scripts que o acompanham (geralmente /usr/sbin/sarg. inclusive o português é claro. respectivamente. conforme mostra o comando abaixo. no caso a verão 9 do Conectiva.tar. Mas caso você opte por instalar usando os fontes não haverão maiores problemas.

2001 Wessels. Acesso em setembro/2003. supondo que 192. Referências Bibliográficas Bastos.oreillynet.html. por exemplo grep ``. de forma que podemos ter uma infinidade de opções para seu uso..trix. usando a extensão como parâmetro. 2003 Sica. Brasport Livros e Multimídia Ltda. 2002 ViSolve.pro. Ao mesmo tempo podemos notar a facilidade no seu uso. Squid configuration manual. E. Administração de Redes Linux. 2003 Vesperman. R.http://www. Podemos ainda usar o mesmo recurso para gráficos de determinados tipos de arquivos. www. por grep ``192. além disso existem outras opções interessantes que não foram tratadas aqui.3 é o IP do seu usuário.com (2002). 2003 Campos. Pearson. Installing and configuring squid http://linux.br" | /usr/local/squid-graph/bin/squidgraph -c -n -o=/srv/www/default/html/squid-graph/ --title="Gráfico de uso do proxy" Para gerar um gráfico dos acessos de um determinado usuário.br/squid/. F.16. Wessels. precisaríamos apenas substituir o comando grep mostrado acima. e por fim temos o arquivo de log dos Squid. A robustez e flexibilidade oferecidas pelo Squid é um diferencial muito bom em relação a soluções fechadas. J.com/pub/a/linux/2001/07/26/squid.squid-cache. L. Vesperman.conf . A. 9 . (2003).ufla. A. J. Squid.log | grep "ginux.com..conf # sarg.net.mp3 '' é um bom começo. -title=``Gráfico de uso do proxy'' personaliza o título da página html.168. C. (2001). SQUID Frequently Asked Questions. A . recursos e finalidade do que queremos usar.representa o local onde os arquivos serão gravados (html e imagens).168. Como já deu pra perceber. que vão apresentar um certo grau de complexidade de acordo com o porte.3 ''. (2003).org. Acesso em setembro/2003. Uchôa. como podemos ver com o uso do comando abaixo: # cat /var/log/squid/access. Marcelo. UFLA/FAEPE. D.comp.linuxman. (2003). o que faz dele uma excelente alternativa para uso em qualquer ambiente. Configurando um squid ``ninja'' http://www. ViSolve. Q. Existem outras opções interessantes.Conclusão A configuração e o uso de servidores proxy é um assunto muito interessante e ao mesmo tempo muito extenso. Nosso objetivo aqui foi apresentar algumas das maneiras de utilização do proxy Squid de modo que fosse possível elaborar uma visão do processo de configuração e utilização deste servidor proxy. onde são mostrados os gráficos. Qualica Technologies (Pty) Ltd.conf # Inicio do arquivo sarg. and Simeone. Exemplo de arquivo Sarg. Linux in brazil .16. E.linux. O. Sica et al. Squid . Campos.A User's Guide. Temos várias maneiras de implementar soluções deste tipo. Acesso em setembro/2003. (2003). ViSolve. podemos combinar o uso do Squid-Graph com outros comandos do Linux. 2003 Pearson.com. (2003).. como gerar gráficos para uma URL específica ou um determinado usuário. Este é sem dúvidas um software livre com qualidade excepcional. 2003 Marcelo. 2003 Bastos. (2003).

450.110 use_comma no => 23.log # t&iacute.rios # topsites .&atilde.450.foo exclude_hosts none useragent_log none # formato da data: e (Europe=dd/mm/yy). # # This option can be used to disable user access # if user exceed a download limit.# Principais diretivas est&atilde. rede 192.tica do relatorio (cores. conex&atilde.rio records_without_userid ignore # use_comma yes => 23.110 use_comma no # utilit&aacute. w (Weekly=yy.&atilde.o do relat&oacute.o da linguagem language Portuguese # Localiza&ccedil. # D=Descendent # topsites_sort_order CONNECT D # Arquivo de c&oacute. # host s1.10.rios output_email none resolve_ip no user_ip yes # classifica&ccedil.tulo do relat&oacute.o do relat&oacute.o do arquivo de log do squid access_log /var/log/squid/access.rios caso j&aacute.rio user user_sort_field BYTES reverse # arquivo com usuario que serao excluidos do relatorio exclude_users none # arquivo com usuario que serao excluidos do relatorio # Ex.rio mail_utility mail # quantidade de sites mais visitados para listar no relat&oacute.rios de uso do proxy Squid" # Definicoes da est&eacute.foo e dom&iacute.168. u # (USA=mm/dd/yy).ww) date_format e # TAG: per_user_limit file MB # Save userid on file if download exceed n MB.10.o e bytes .168.rios originais # Defini&ccedil. existam overwrite_report yes # o que fazer com registros sem usu&aacute.&atilde.rio topuser topuser_sort_field BYTES reverse # classifica&ccedil.digos HTTP para serem ignorados no relat&oacute.o gravados output_dir /srv/www/default/html/sarg # e-mail para envio dos relat&oacute.0. where A=Ascendent.&atilde.10.rio topsites_num 100 # TAG: topsites_sort_order CONNECT|BYTES A|D # Sort for topsites report.rio tempor&aacute.rios ser&atilde.rio title "Relat&oacute.rio temporary_dir /tmp # Local onde os relat&oacute.rio exclude_codes /etc/sarg/exclude_codes max_elapsed 28800000 # Tipo de Relat&oacute.: ip 192.nio acme.rio usado para envio do e-mail com o relat&oacute.Mostra o site. fontes) font_face Arial header_color darkblue header_bgcolor blanchedalmond header_font_size -1 background_color white text_color black text_bgcolor beige title_color green logo_image none logo_text_color black background_image none password none # diret&oacute.acme.o comentadas e algumas # foram mantidos os coment&aacute. per_user_limit none lastlog 0 remove_temp_files yes index yes # subscrever relat&oacute.

rio e n&atilde.rio # date_time .o o ip # formato: 192.0.1 claudio usertab /etc/squid/usernames # TAG: long_url yes|no # If yes.o # site_user_time_date . the full url is showed in report.North European # Arabic # Greek # Hebrew # Latin5 .Mostra todos os sites negados # com URL completa # auth_failures .rio acessou determinado # site # report_type topsites sites_users users_sites date_time denied auth_failures site_user_time_date # usado para mostrar o nome do usu&aacute. # long_url no # TAG: date_time_by bytes|elap # Date/Time reports will use bytes or elapsed time? # date_time_by bytes # TAG: charset name # ISO 8859 is a full series of 10 standardized # multilingual # single-byte coded (8bit) # graphic character sets for writing in # alphabetic languages # You can use the following charsets: # Latin1 .1/255.0/0.168.Mostra que usu&aacute.0 acl manager proto cache_object acl localhost src 127.conf B .Mostra quantidade de bytes # usados por dia e hora # denied .0.255 acl to_localhost dst 127.Turkish # Latin6 # Windows-1251 # Koi8-r charset Latin1 # Fim do arquivo sarg.conf hierarchy_stoplist cgi-bin ? acl QUERY urlpath_regex cgi-bin ? no_cache deny QUERY cache_mem 64 MB cache_dir ufs /var/cache/squid 300 64 64 auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd auth_param basic children 5 auth_param basic realm Servidor Proxy da SEFIN auth_param basic credentialsttl 2 hours refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern . 0 20% 4320 acl all src 0.255.conf # Inicio do arquivo squid.East European # Latin3 . Exemplo de arquivo Squid.0.# sites_users .South European # Latin4 . # If no.0.0. only the site will be showed # # YES option generate very big sort files and reports.255.Mostra sites acessados # pelo usu&aacute.Mostra os hor&aacute.0/8 acl SSL_ports port 443 563 .0.rios estavam # acessando um site # users_sites .0.Mostra falhas de autentica&ccedil.10.0.&atilde.rios que um # usu&aacute.West European # Latin2 .

16.meu_seite. snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl MINHA_REDE src 192.conf .acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https.168.br error_directory /usr/share/squid/errors/Portuguese coredump_dir /var/cache/squid # Fim do arquivo squid.com.0/24 acl USUARIOS proxy_auth REQUIRED acl PORNO url_regex -i "/etc/squid/porn" acl PORNO1 url_regex -i "/etc/squid/porn1" acl NAO_PORNO url_regex -i "/etc/squid/noporn" http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow USUARIOS NAO_PORNO MINHA_REDE http_access allow USUARIOS !PORNO !PORNO1 MINHA_REDE http_access deny all http_reply_access allow all icp_access allow all visible_hostname www.

0). Se nesta tb ninguém se aplicar ele passará para a terceira.com. pois ela já vem declarada no início das acls (acl all src 0. Por issso. Como na terceira regra só chega quem não caiu na regra anterior. Por isso o acesso é direto e total. acesso_total.0.0. Agora que as regras foram declaradas vamos ativá-las dessa maneira: http_access http_access http_access http_access allow acesso_total deny bloqueado allow acesso_restrito deny all Como o squid as lê: A primeira regra que o squid lê (http_access allow acesso_total) diz que será LIBERADO acesso a quem estiver com o ip cadastrado no arquivo "/etc/squid/acesso_total". acesso_restrito e bloqueado. A terceira regra que o squid lê (http_access allow acesso_restrito) diz que será LIBERADO acesso a quem tiver com o ip cadastrado no arquivo "/etc/squid/acesso_restrito". Entendendo como o squid lê as ACLs A cada caractere inserido no squid. quem ele encontra aqui já é liberado e não passa mais pelas outras acls seguintes.0/0.0/0.conf lembre-se que o squid lê as acls de cima para baixo e quando encontra alguma que se aplique ele pára. De posse detas três acls. Se.br/sexo.conf desta maneira: acl acesso_total src "/etc/squid/acesso_total" acl acesso_restrito src "/etc/squid/acesso_restrito" acl bloqueado url_regex -i "/etc/squid/bloqueado" OBS. Então.sexomais. por exemplo. o acesso pode ser liberado tranquilamente. É óbvio concluir que se o cliente não está cadastrado no acesso_total. (Deve ser algum espertinho mudando de ip. neste arquivo tiver a palavra sexo qualquer site que tenha esta palavra na sua URL não será acessado.uol. Parece meio complicado mas funciona assim: Vou criar três acls. vamos declará-las no squid. A quarta e última regra (http_access deny all) nega o acesso a qualquer ip de qualquer máscara (0.0.0.0). Se ele lê a primeira (acesso_total) e ninguém se aplicar a ela. Não passarão por nenhuma restrição do squid.0. etc. O segredo está na sequência como o squid lê as acls. divida sua rede em quem pode ter acesso tota e restrito e cadastre os clientes em seus respectivos arquivos.br. Você deve estar se perguntando: Mas como pode negar acesso a todos os ips se tenho que liberar o meu? A resposta é simples e está no que eu enfatizei até agora.0. Mas atenção neste detalhe. www.0.: A opção -i encontrada na linha que declara o bloqueio serve para NÃO fazer distinção entre maiúsculas e minúsculas. Estes arquivos terão os seguintes conteúdos: acesso_total = IPs dos clientes que terão acesso total à internet. como em www. acesso_rstrito = IPs dos clientes que passarão pelo bloqueio de sites estabelecido na acl seguinte. Só chegará a última quem não caiu em nenhuma das anteriores. . nem está no acesso_restrito então ele não faz parte da rede e deve ser bloqueado. então passará para a segunda. hehehe!!!). ou seja quem não tiver o ip cadastrado no arquivo de acesso total.0. A segunda regra que ele encontra (http_access deny bloqueado) diz que será NEGADO o acesso às URLs que coincidirem com as palavras que estão no arquivo "/etc/squid/bloqueado".1.com. O squid vem lendo o arquivo de cima para baixo e só chegará a segunda regra quem não cair na primeira. bloqueado = Lista de palavras que o squid bloqueará se forem encontradas na URL.

5 Descrição: Máquinas que terão acesso total à internet. A desvantegem desta montagem de acesso é que se o cliente conhecer sites semelhantes aos bloqueados (com URLs diferentes) poderá acessar.2. A regra deste tipo de restrição é: QUALQUER SITE É PERMITIDO. Neste exemplo vamos montar uma rede baseada numa lista de bloqueios e exceções.168.1.3 192.1.1. Fica então a critério do administrador da rede ter uma vasta lista do que não pode acesar. Veja um exemplo de uma rede funcionando assim: Arquivo: /etc/squid/acesso_total Conteúdo: 192.9 Descrição: Máquinas que terão acesso restrito à internet.iso$ .168.mpeg$ Descrição: Extensões de arquivos que terão download bloqueado.wmv$ .1.168.exe$ . o cliente só terá o seu acesso bloqueado se o site estiver previamente cadastrado na lista de bloqueios.2 192.6 192.1. Passarão por bloqueios.168.168. mas não é complicado entender.7 192. Arquivo: /etc/squid/acesso_restrito Conteúdo: 192.1.8 192. Arquivo: /etc/squid/download Conteúdo: .1.4 192. vamos a um exemplo um mais complexo do que o anterior. Arquivo: /etc/squid/bloqueado .avi$ . DESDE QUE NÃO ESTEJA NA LISTA. Ou seja.168.mp3$ . Montando uma rede baseada numa lista de bloqueios Agora que você já entendeu como funcionam as acls.168.1.168.

168.br.com.uol.uol. Cairá então na quinta regra. Por estar no acesso restrito. Caso 1 . pois não estamos fazendo download de nenhum arquivo. à terceira regra (download) que limita os downloads.com.br.1.br/sexo Descrição: Exceções aos bloqueios. O que for colocado aqui. Encontrará então a segunda (liberado).O cliente com ip 192.168.uol.6 vai acessar o site www. Caso 2 .2 vai acessar o site www.com.Conteúdo: sexo hardcore ninfeta penis suruba playboy revistasexy Descrição: Palavras para restrição de urls. .br não está na lista de exceções ele também passará ileso por esta regra. mas como nela não tem nehuma restrição para o site uol ele também passará ileso. Chegará então a quarta (bloqueado) e mais perigosa regra. Agora vamos à prática: Declare as acls: acl acl acl acl acl acesso_total src "/etc/squid/acesso_total" acesso_restrito src "/etc/squid/acesso_restrito" liberado url_regex -i "/etc/squid/liberado" download url_regex -i "/etc/squid/download" bloqueado url_regex -i "/etc/squid/blouqeado" Depois de declarar. que são as exceções dos bloqueios.com.com.O cliente com ip 192. mesmo que esteja na lista de bloqueios será liberado. Nenhuma das regras seguintes serão aplicadas a elee tanto o uol. ele "passará ileso" pela primeira regra. Arquivo: /etc/squid/liberado Conteúdo: abcdasaude sexoesaude medicinanatural uol.1. ative as acls na mesma sequência doexemplo abaixo: http_access http_access http_access http_access http_access http_access allow acesso_total allow liberado deny download deny bloqueado alow aceso_restrito deny all Agora vamos às explicações e as análises dos casos. Nesta também não encontrará nada. Como o site www.br como qualquer outra página estará liberada. Chegará então. Por estar cadastrado no acesso total ele cairá logo na primiera regra e será LIBERADO o acesso a qualque site.

Mesmo estando cadastrado no acesso_restrito este cliente não chegará a acl que lhe dá permissão de acesso. ele passa pela primeira regra. pois antes ele já caiu no bloqueio de sites e (como já disse) o squid pára de ler quando aplica alguma regra.) vai acessar o site www. Encontrará a segunda.6) está LIBERADO (allow) podendo assim acessar o site www.3 192.br/sexo) tenha a palavra sexo. na qual há exceções para os bloqueios.1. afinal.1.sexomais.168.superdownloads.168.com. onde há uma exceção para acessar todo o conteúdo do site medicinanatural.168. EXCETO O QUE VOCÊ DEFINIR COMO EXCEÇÃO.1.com. Arquivo: /etc/squid/acesso_restrito .O cliente com ip 192. pois sei ip é do acesso restrito.br. passando ileso pelo download e caindo na regra bloqueado. Caso 4 .1.O cliente com ip 192. exceto o que você definir nos bloqueios. não há nenhuma restrição para a URL dele.6 vai acessar o site www.168.O cliente com ip 192. mas nãohá nenhuma exceção para o site sexomais.com. Na página seguinte montaremos um outro tipo de restrições de acesso. pois antes mesmo de chegar nela foi encontrada uma adequação na regra de exceções e o squid parou de ler o resto das regras para este ip.168. Montando uma rede baseada numa lista de exceções Este tipo de rede é bem mais fácil montar que a antrior. a regra de bloqueio não será aplicada. mas cairá logo na segunda.168. TUDO É BLOQUEADO. NELA. Arquivo: /etc/squid/acesso_total Conteúdo: 192.uol.. Se não tentar fazer downloads. poderá navegar tranquilamente pelo site.6 (coitado dese cara.br.br. Não se enquadrará na segunda.) Já sabemos que este cliente pulará a primeira regra.. Em alguns casos é mais fácil liberar apenas o que pode ser acessado do que bloquear tudo o que não poder ser acessado. Ele pulará a primeira regra.2 192.onde o acesso ao seu ip (192.1.168. Sua vantagem é que o administrador da rede não precisa de uma enorme lista do que "não pode ser acessado".br/sexo. ao contrário da outra que tudo é liberado.1.com.4 192. Espero que este exemplo tenha ficado claro.. mas cairá na terceira se tentar fazer qualquer download de arquivos com extensões definidas na lista /etc/squid/download.6 vai acessr o site www. pois o site sexomais.com.com. Mesmo que em sua url (www. Caso 5 .medicinanatural. Então ele prossegue.medicinanatural.1.br. Por estar no acesso restrito. A grande jogada esta aí! Vamos então a um exemplo prático.1. 3. Caso 3 ..168.com.5 Descrição: Máquinas que terão acesso total à internet.br contém uma palavra (sexo) que está na lista de bloqueios. (Mas que cara teimoso.

com.br bradesco. Encontrará então a segunda.) uma referência à URL que ele está tentando acessar.168.uol.gov. Caso 2 .9 Descrição: Máquinas que terão acesso restrito à internet.Conteúdo: 192.gov.7 192. .O cliente com ip 192. Já sabemos que ele pulará a primeira regra. pois elas negam qualquer tipode acesso. que em sua lista possui (.gov. Arquivo: /etc/squid/liberado Conteúdo: .1.6 192.168.org. o cliente poderá acessar normalmente todo o site . Como a regra está liberando (allow) o acesso a qualquer URL que contenha .com.br.com.6 vai acessar o site www.168.com.br bb.gov.ce.uol. Nenhuma das regras seguintes serão aplicadas a elee tanto o uol.edu.1. O site www. E as demias negam os acessos da rede local e de todos os outros ips também. Caso 1 . Da terceira em diante ele não faz mais nada. Por não estar no acesso total.com.2 vai acessar o site www.168.168.1.1. ele pulará esta regra.br. .uol.1.168. ufc uece unifor minhaempresa.com.1.br. Declare as acls: acl acesso_total src "/etc/squid/acesso_total" acl acesso_restrito src "/etc/squid/acesso_restrito" acl liberado url_regex -i "/etc/squid/liberado" Ative as acls: http_access http_access http_access http_access allow acesso_total allow liberado deny acesso_restrito deny all Agora vamos ao estudo dos casos.com.br como qualquer outra página estará liberada. Passarão por bloqueios. Caso 3 .br Descrição: Exceções aos bloqueios.br será bloqueado para este ip.168.uol. Como não hé nehuma exceção para o site www.O cliente com ip 192.1. Por estar cadastrado no acesso total ele cairá logo na primiera regra e será LIBERADO o acesso a qualque site.com.br ele também passará ileso pela segunda regra.6 vai acessar o site www. A segunda regra libera o acesso apenas aos conteúdos do arquivo /etc/squid/liberado. A primeira regra LIBERA o acesso dos ips cadastrados no acesso_total.8 192.O cliente com ip 192.detran.

br. 4. 2.gov. . falta apenas redirecionar as mensagens. 1.google. Você pode também acrescentar outras páginas de acordo com a quantidade de bloqueios que você possui. como no exemplo abaixo: deny_info block. Procure no seu squid.br bloqueado.html quando ocorrer algum bloqueio de sites.detran.html bloqueado deny_info down.conf a linha error_directory. concorda? É bem simples. Salve-a dentro do diretório informado acima para que o squid a encontre quando alguém for bloqueado. É ideal para escolas. Se mesmo assim. Crie então uma página html comum informando que o usuário está tentando acessar um site proibido. por isso acho que deva ter alguma utilidade. Escrevi pensando no que eu queria ter encontrado quando estava aprendendo a usar as acls. Para isso basta repetir as linhas. Redirecionando Depois de montada a rede com o modelo de sua preferência.www. Nada mais óbvio do que colocar um aviso informando isso.html all Se quiser também pode redirecionar para um site: deny_info http://www. Como vimos este exemplo é bem mais simples que o anterior e a abrangência dos bloqueios é bem maior. Vamos então à prática. dicas ou sugestões estarei à inteira disposição. onde o conteúdo da internet é altamente restrito.ce. Ela informa o doretório onde o squid vai buscar os arquivos html de erro. No meu conectiva. afinal haverão inúmeras reclamações de clientes dizendo que estão sem internet e na verdde estão tendo seus sites blouqeados. Na última página mostrarei como redirecionar as páginas (para um aviso por exemplo) quando o cliente cair em algum bloqueio.html download deny_info all. Nesta linha você define qual erro vai acionar qual página. 5. por exemplo.com. Veja um exemplo: deny_info block. Procurei exemplificar nos mínimos detalhes para não deixar nenhuma dúvida. Procure no squid.conf a linha deny_info.html bloqueado Neste exemplo o cliente será redirecionado para a página block. o referido diretório fica em /usr/share/squid/errors/Portuguese. Final Espero que este artigo possa ajudar alguém de alguma forma. houverem dúvidas. bancos e instituições públicas.

host) { return "PROXY 192. como em "http://192. um arquivo que é disponibilizado na rede local através de um servidor web.dat" (no servidor). Para começar. endereços que devem ser acessados diretamente.168. Basta instalar o Apache usando o gerenciador de pacotes. Os clientes são então configurados para buscarem a configuração de proxy no script. enquanto no IE vai no . existe a opção de usar um script PAC (Proxy Auto-Configuration).1.255. } No exemplo.com. ele passará a ser disponibilizado através do endereço "http://ip-doservidor/wpad. sem precisar configurar cada uma das máquinas manualmente.1. você pode utilizar o próprio servidor que está disponibilizando o proxy. o "192. O arquivo contém um pequeno javascript que será processado pelos clientes antes de cada requisição orientando-os a utilizarem o proxy.0")) {return "DIRECT". HTTPS e outros protocolos) e usar o proxy transparente automaticamente impede que seja usada autenticação dos usuários.1. "255.1. No Firefox. O diretório "/var/www" é o diretório raiz do servidor web.168. sem passar pelo proxy: function FindProxyForURL(url. O arquivo wpad. que será usado para disponibilizar o arquivo. mas também não quer arcar com o trabalho de configurar cada estação para usar o proxy manualmente. Aqui temos uma versão um pouco mais incrementada do arquivo.168. Entretanto. falta apenas configurar os clientes para obterem a configuração de proxy através dele.dat".dat".} return "PROXY 192. pois o proxy só atende a requisições na porta 80 (ou seja. em vez de precisar reconfigurar cada estação manualmente.1:3128". crie o arquivo "/var/www/wpad.1/wpad.com/eng/mozilla/2.0. como em: # apt-get install apache2 ou: # yum install httpd Em seguida. Esta não é exatamente uma configuração automática (você ainda tem o trabalho de configurar os clientes para utilizarem o script).168. o endereço vai no "Editar > Preferências > Avançado > Rede > Configurações > Endereço para configuração automática de proxy".0".1:3128" corresponde ao endereço do servidor proxy e a porta utilizada pelo Squid.168. "192.1.dat pode incluir diversos outros parâmetros. Para manter as coisas simples. de forma que ao colocar o arquivo wpad. mas é um bom ponto de partida. Se você acha as limitações de usar um proxy transparente pesadas demais. não funciona para FTP. host) { if (shExpMatch(url. } Você pode ver uma lista com outros parâmetros que podem http://wp.br/*")) {return "DIRECT".Configuração automática de proxy nos clientes Usar um proxy transparente é a forma mais simples de fazer com que todas as estações da rede utilizem o proxy.dat dentro dele. com o seguinte conteúdo: function FindProxyForURL(url. usar um proxy transparente está longe de ser uma solução perfeita.} if (isInNet(host.0/relnotes/demo/proxy-live.gdhpress.netscape."*.101:3128". que inclui exceções para o site da empresa (ou outro site qualquer. você precisa instalar um servidor web em algum servidor da rede. A principal vantagem em relação à configuração manual é que ao usar o script você pode alterar a configuração de proxy em todas as estações simplesmente modificando o script.html ser usados no: Depois de disponibilizar o arquivo. que você defina) e para a faixa de endereços da rede local.

log" do servidor. ."Ferramentas > Opções da Internet > Conexões > Configurações da LAN > Usar script de configuração automática": Depois de feita a configuração. você pode checar o uso do proxy pelos clientes monitorando o arquivo "/var/log/squid/access. Você verá várias entradas referentes aos acessos feitos pelos clientes.

que não lê a configuração se o \n não estiver presente. como em: ddns-update-style default-lease-time max-lease-time authoritative. Depois de configurar o DHCP. 252 = text. A alteração do servidor DHCP consiste em adicionar duas linhas no arquivo "/etc/dhcp3/dhcpd.168. permitindo que eles localizem o arquivo automaticamente.dat\n".dat e sem utilizarem o proxy: .1/wpad. 7200. "http://192. Depois de alterar o arquivo. você pode configurar os clientes com a opção "Detectar automaticamente as configurações" na configuração do proxy.100 option routers option domain-name-servers option broadcast-address option wpad-url } none.222. Ele é um workaround para um bug do IE 6.67. O degrau seguinte é o WPAD (Web Proxy Auto-Discovery protocol).222.Essa é a configuração mais elementar. 192.168.1. onde os clientes são manualmente configurados para utilizarem o arquivo. Você pode selecionar a opção "Autodetectar as configurações de proxy para esta rede" no Firefox. sem lerem o arquivo wpad.1. apenas o Internet Explorer é compatível com a configuração automática via proxy. em vez de especificar a localização do arquivo manualmente: Atualmente.168. 255.1. 600.0 { 192.255. option wpad-url code 252 = text. que permite automatizar a configuração dos clientes.conf". 208. Para usar o WPAD.0.199. 192.1/wpad.255.168.0 netmask range 192. enquanto a segunda é incluída na seção correspondente à subnet. não esqueça de reiniciar o serviço para que a alteração entre em vigor.dat\n".1.1. O "/n" na última linha insere uma quebra de linha. A primeira linha é incluída na seção global da configuração. precisaremos configurar também o servidor DHCP e o servidor DNS da rede para orientarem os clientes a utilizarem o arquivo. subnet 192.1.255.168. mas você perceberá que os clientes continuarão tentando acessar a web diretamente.1.1. a primeira contendo a diretiva "code 252 = text" e a segunda contendo a localização do arquivo wpad.dat: option wpad-url code option wpad-url "http://192.168.168.

Mais adiante teremos um capítulo dedicado à configuração de servidores DNS utilizando o Bind.br".local".conf".gdhn".1. você pode especificar qualquer domínio. não é necessário que ele esteja realmente registrado. enquanto o "192.com.com. O conteúdo do arquivo será o seguinte (veja mais detalhes sobre o significado das opções no capítulo sobre DNS): @ IN SOA etch. Isso cria o domínio "gdhn.168. "gdhn.com. estou usando o domínio "gdhn.com. Por enquanto. O primeiro passo é instalar o Bind usando o gerenciador de pacotes.gdhn". indicando a localização de um arquivo externo (onde vai a configuração) e em seguida adicionamos a configuração propriamente dita neste segundo arquivo. será o arquivo "/etc/bind/db. A 192. Opera e outros navegadores.br.gdhn. Veja que na terceira linha especificamos o arquivo externo (db.conf" (no Debian você pode também utilizar o arquivo "/etc/bind/named.com. Primeiro adicionamos uma entrada referente ao domínio no arquivo principal.com.gdhn. ou seja. onde veremos mais detalhes sobre a configuração de domínios. ( 2008030645 3H 15M 1W 1D ) NS etch. vou apenas me limitar a uma receita rápida para que você coloque o domínio no ar e possa assim ativar a configuração automática do proxy. gdhn.1 wpad IN A 192.br".gdhn.br" IN { master. hostmaster. Comece adicionando a configuração referente a ele no final do arquivo "/etc/bind/named. que é carregado como um include): zone type file }. Como estamos configurando um domínio local.1. onde irá a configuração do domínio.1 O "etch" no exemplo é o nome do servidor. A configuração do domínio é feita em duas partes.br. A configuração do DNS é um pouco mais complexa. "/etc/bind/db. que complementa a configuração.conf.gdhn.br. como em: # apt-get install bind O arquivo de configuração padrão é o "/etc/bind/named. pois é necessário configurar também um domínio para a rede local e ajustar (novamente) também a configuração do servidor DHCP para que os clientes utilizem o domínio.com.br.gdhn). No exemplo.br" e o "wpad.1. Esse arquivo precisa ser criado na mesma pasta do arquivo principal.168. atendendo a máquinas com o Firefox. ambos apontando para o .com.168.1" é o endereço IP usado por ele.Isso nos leva à configuração do DNS.

conf".dat".".1.1.1.168.1.1.conf") do servidor DHCP: search nameserver 192. . subnet 192.com. Naturalmente. Isso é feito especificando o endereço IP do servidor como único servidor DNS na opção "domain-name-servers" da configuração do DHCP e adicionando duas novas opções na seção global do arquivo: ddns-domainname option domain-name "gdhn. default-lease-time 600.com. graças à configuração do DNS.br.255.br.168.1 gdhn.".168. Veja um exemplo: Com isso.1/wpad.com. você pode configurar o Firefox para localizar o proxy automaticamente e. option broadcast-address 192. que especifica que eles devem fazer pesquisas dentro do domínio e que o endereço do servidor é usado como DNS primário. max-lease-time 7200.d/bind restart Naturalmente. option wpad-url code 252 = text.dat e utilizar a configuração definida por você.255. Uma pequena exceção fica por conta de versões antigas do Firefox para Linux. ddns-domainname "gdhn.168.1.gdhn.1.com. para que o domínio seja utilizado. a mesma configuração é fornecida aos clientes Windows configurados via DHCP. Veja que é incluída a linha "search gdhn. sem respeitar a configuração do DNS.1.255. ele será capaz de encontrar o arquivo wpad.168.com.dat no host "wpad" dentro do domínio da rede (que leva ao nosso servidor). option wpad-url "http://192. option domain-name-servers 192. authoritative. } Com essa configuração.1.168.". Este é um exemplo de arquivo "/etc/dhcp3/dhcpd.com.dat". Dessa forma.1/wpad.100 192.0 netmask 255. os clientes Linux receberão a seguinte configuração de DNS (salva no arquivo "/etc/resolv.1. Depois de terminar. "gdhn.199. elas tentam sempre baixar o arquivo a partir da URL "http://wpad/wpad.br.".com.168. que possuem um bug na variável usada para localizar o arquivo.dat\n".br.endereço IP do servidor.dat". é necessário também configurar os clientes para utilizarem o servidor DNS interno que acabamos de configurar.br. Em vez de procurarem o arquivo wpad. depois das alterações: ddns-update-style none.168.168.br/wpad. ao tentarem baixar o arquivo "http://wpad.br". os clientes baixarão na verdade o "http://192. option domain-name "gdhn. option routers 192.1.0 { range 192. não esqueça de reiniciar o Bind para que a alteração entre em vigor: # /etc/init.

183 TCP_MISS/503 1479 GET http://wpad/wpad.DIRECT/wpad text/html A solução nesses casos é editar o arquivo "/etc/hosts" nos clientes afetados. como em: 192.168. você verá uma série de entradas como essa no log do Squid: 192. solucionando o problema. as requisições passam a ser destinadas ao endereço correto.1. .1 wpad Com isso.1.dat .Ao usar clientes Linux rodando alguma das versões afetadas pelo bug. adicionando uma entrada relacionando o host "wpad" com o endereço do seu servidor.168.