|
|
Guia: Compartilhando a conexão e configurando o SquidCarlos E. Morimoto 20/11/2006 Adicionando restrições de acesso
Bloqueando por domínios ou palavras
Isso é feito usando o parâmetro "dstdomain" (destination domain). Veja um exemplo:
acl bloqueados dstdomain
orkut.com playboy.abril.com.br Aqui eu criei uma acl chamada "bloqueados", que contém os endereços "orkut.com" e "playboy.abril.com.br" e, em seguida, incluí a regra "http_access deny bloqueados", que bloqueia o acesso a eles. Ao aplicar a regra, o Squid faz a resolução do domínio e passa a bloquear todas sub-páginas. Existe uma ressalva: muitos sites podem ser acessados tanto com o "www" quanto sem. Para o Squid, "www.orkut.com" e "orkut.com" são duas coisas diferentes. Bloqueando o "orkut.com" os usuários ainda conseguirão acessar o site através do "www.orkut.com" e vice-versa. Para bloquear ambos, é preciso incluir as duas possibilidades dentro da regra, como em:
acl bloqueados
dstdomain orkut.com www.orkut.com playboy.abril.com.br Você pode incluir quantos domínios quiser dentro da regra, basta separá-los por espaço e deixar tudo na mesma linha. Se a regra começar a ficar muito grande, você tem a opção de transferir as entradas para um arquivo. Neste caso, crie um arquivo de texto simples, com todos os domínios desejados (um por linha) e use a regra abaixo na configuração do Squid. No exemplo, estou usando o arquivo "/etc/squid/bloqueados":
acl bloqueados
url_regex -i "/etc/squid/bloqueados" Naturalmente, não seria viável tentar bloquear manualmente todos os sites pornográficos, chats, comunidades online, e todos os outros tipos de sites que não são úteis num ambiente de trabalho. A idéia seria logar os acessos (com a ajuda do Sarg, que veremos mais adiante) e bloquear os sites mais acessados, conforme tomar conhecimento deles. É sempre uma corrida de gato e rato, mas, em se tratando de pessoas adultas, não há nada que uma boa conversa com o chefe não possa resolver ;). De qualquer forma, em alguns ambientes, pode ser mais fácil bloquear inicialmente o acesso a todos os sites e ir abrindo o acesso a apenas alguns sites específicos, conforme a necessidade. Neste caso, invertemos a lógica da regra. Criamos um arquivo com sites permitidos, adicionamos a regra que permite o acesso a eles e em seguida bloqueamos o acesso a todos os demais, como neste exemplo:
acl permitidos
url_regex -i "/etc/squid/permitidos" Nas versões recentes do Squid, ao bloquear um domínio, é automaticamente bloqueado também o endereço IP do servidor correspondente. Isso evita que os usuários da rede consigam burlar o proxy, acessando os sites diretamente pelo IP. De qualquer forma, você pode criar diretamente regras que bloqueiem determinados endereços IP, o que é útil em casos de servidores sem domínio registrado, ou que respondam por vários domínios. Neste caso, a regra ficaria:
acl
ips-bloqueados dst 200.234.21.23 200.212.15.45 Você pode descobrir rapidamente o endereço IP de um determinado domínio usando o comando "host", como em:
$ host
google.com Depois de adicionar as novas regras, nosso arquivo de configuração ficaria assim:
http_port
3128
cache_mem
32 MB
acl
all src 0.0.0.0/0.0.0.0
http_access
allow manager localhost
acl
bloqueados url_regex -i "/etc/squid/bloqueados"
acl
redelocal src 192.168.1.0/24 http_access deny all Veja que coloquei as duas regras antes do "http_access allow redelocal", que abre tudo para a rede local. Como o Squid processa as regras seqüencialmente, as páginas que forem bloqueadas pelas duas regras não chegarão a passar pela seguinte. Uma segunda possibilidade é usar o parâmetro "dstdom_regex", que permite bloquear sites de uma forma mais geral, com base em palavras incluídas na URL de acesso. Você pode bloquear todas as páginas cujo endereço inclua a palavra "sexo", por exemplo. Ao usar esta regra, o Squid verifica a existência das palavras na URL do site e não no conteúdo da página. Crie mais um arquivo de texto, contendo as palavras que devem ser bloqueadas (uma por linha) e adicione a regra abaixo, contendo a localização do arquivo:
acl
nomesproibidos dstdom_regex "/etc/squid/nomesproibidos" O uso desta regra é um pouco mais problemática, pois bloqueará todas páginas que contenham alguma das palavras listadas na URL. Esta opção sempre levará a alguns falsos positivos e por isso deve ser usada com mais cuidado. Não existe problema em combinar o bloqueio de domínios e de palavras dentro da URL, você pode lançar mão de uma combinação das duas coisas, de acordo com a situação. Basta usar as duas regras simultaneamente, como em:
acl
bloqueados url_regex -i "/etc/squid/bloqueados"
acl
redelocal src 192.168.1.0/24 Incluídas as regras, os clientes passam a ver uma mensagem de erro ao tentar acessar páginas que se enquadrem nos bloqueios:
Você pode personalizar as páginas de erro editando os arquivos dentro da pasta "/usr/share/squid/errors/English" ou "/usr/share/squid/errors/Portuguese" (de acordo com a língua definida na configuração). São várias páginas html, uma para cada tipo de erro indicado.
Gerenciando o uso da banda
Você pode evitar isso limitando a banda que cada usuário pode usar e a banda total, que todos os usuários somados poderão usar simultaneamente. É recomendável, neste caso, que o servidor proxy (que combina todos os acessos via http) consuma um pouco menos que o total de banda disponível, de forma a sempre deixar um pouco reservado para outros protocolos. Um link de 1 megabit (1024 kbits) corresponde a 131.072 bytes por segundo. Nas regras do Squid, sempre usamos bytes, por isso lembre-se de fazer a conversão, dividindo tudo por 8 e multiplicando por 1024 para ter o número em bytes. Podemos limitar a banda total usada pelo Squid a 114.688 bytes por segundo, deixando 128 kbits do link livres para outros protocolos e limitar cada usuário a no máximo 16.384 bytes por segundo, que correspondem a 128 kbits. Nem todos os usuários vão ficar baixando arquivos a todo momento, por isso o valor ideal reservado a cada usuário vai variar muito de acordo com a rede. Você pode acompanhar o uso do link e ir ajustando o valor conforme a utilização. Neste caso, a parte final do arquivo de configuração ficaria:
acl redelocal src
192.168.1.0/24 A acl "redelocal" agora está condicionada a três novas regras, que aplicam o uso do limite de banda. O acesso continua sendo permitido, mas agora dentro das condições especificadas na linha "delay_parameters 1 114688/114688 16384/16384", onde vão os valores com a banda total disponível para o Squid e a banda disponível para cada usuário. Veja que nesta regra limitamos a banda apenas para a acl "redelocal" e não para o "localhost". Isso significa que você continua conseguindo fazer downloads na velocidade máxima permitida pelo link a partir do servidor; a regra se aplica apenas às estações. É possível também criar regras para endereços IP específicos, que poderão fazer downloads sem passar pelo filtro. Concluindo, mais um tipo de bloqueio que é útil em muitas situações é com relação a formatos de arquivos. Você pode querer bloquear o download de arquivos .exe ou .sh para dificultar a instalação de programas nas estações, ou bloquear arquivo .avi ou .wmf para economizar banda da rede, por exemplo. Neste caso, você pode usar a regra a seguir, especificando as extensões de arquivo desejadas:
acl video
url_regex -i \.avi
Bloqueando por horário
acl madrugada
time 00:00-06:00
acl almoco time
12:00-14:00 Estas regras iriam novamente antes da regra "http_access allow redelocal" no arquivo de configuração. Agora imagine que você quer fazer diferente. Ao invés de bloquear o acesso na hora de almoço, você quer deixar o proxy aberto, para que aqueles que queiram acessar o Orkut ou acessar os e-mails possam fazer isso fora do horário de trabalho. Neste caso você usaria uma regra como:
acl almoco time
12:00-14:00 Esta regra entraria no arquivo de configuração antes das regras "http_access deny bloqueados" e "http_access deny nomesproibidos". Assim, os acessos que forem aceitos pela regra do almoço não passarão pelas regras que fazem o bloqueio. Você pode também combinar o bloqueio de palavras ou domínio com as regras de bloqueio por horário, permitindo que os usuários acessem um determinado site apenas no horário de almoço, por exemplo. A regra, neste caso, seria:
acl almoco time
12:00-14:00 Assim, o acesso ao site (que normalmente estaria bloqueado em uma acl mais adiante) é permitido dentro do horário de almoço. |