ct

    Bloqueando por domínios ou palavras


    O Squid permite bloquear sites indesejados de forma bastante simples usando o parâmetro "dstdomain". Ele permite que você crie acl's contendo endereços de sites que devem ser bloqueados (ou permitidos). Isso é feito em duas etapas. Primeiro você cria a acl, especificando os endereços e, em seguida, usa o parâmetro "http_access" para bloquear ou liberar o acesso a eles. Veja um exemplo:

    acl bloqueados dstdomain orkut.com playboy.abril.com.br
    http_access deny bloqueados

    Aqui eu criei uma acl chamada "bloqueados", que contém os endereços "orkut.com" e "playboy.abril.com.br" e em seguida usei o parâmetro "http_access deny" para bloquear o acesso a eles. Você pode incluir diversas acls diferentes dentro da configuração do Squid, desde que use um nome diferente para cada uma. De certa forma, elas são similares às variáveis, que usamos ao programar em qualquer linguagem.

    Ao aplicar a regra, o Squid faz a resolução do domínio e passa a bloquear todas sub-páginas que estiverem hospedadas dentro dele. Existe uma ressalva: muitos sites podem ser acessados tanto com o "www" quanto sem. Se os dois estiverem hospedados em servidores diferentes, o Squid considerará que tratam-se de dois sites diferentes, de forma que ao bloquear apenas o "www.orkut.com" os usuários ainda conseguirão acessar o site através do "orkut.com" e vice-versa. Nesses casos, 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
    http_access deny bloqueados

    Você pode incluir quantos domínios quiser dentro da acl, 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. Nesse caso, crie um arquivo de texto simples, com todos os domínios desejados (um por linha), como em:

    orkut.com
    www.orkut.com
    playboy.abril.com.br
    www.myspace.com

    ... e use a regra abaixo na configuração do Squid para que ele seja processado e os domínios sejam incluídos na acl. No exemplo, estou usando o arquivo "/etc/squid/bloqueados":

    acl bloqueados url_regex -i "/etc/squid/bloqueados"
    http_access deny 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 em um 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"
    http_access allow permitidos
    http_access deny all

    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. Nesse caso, a regra ficaria:

    acl ips-bloqueados dst 200.234.21.23 200.212.15.45
    http_access deny ips-bloqueados

    Você pode descobrir rapidamente o endereço IP de um determinado domínio usando o comando "host", como em:

    $ host google.com

    google.com A 72.14.207.99
    google.com A 64.233.187.99
    google.com A 64.233.167.99

    Depois de adicionar as novas regras, nosso arquivo de configuração ficaria assim:

    http_port 3128
    visible_hostname gdh
    error_directory /usr/share/squid/errors/Portuguese/

    cache_mem 64 MB
    maximum_object_size_in_memory 64 KB
    maximum_object_size 512 MB
    minimum_object_size 0 KB
    cache_swap_low 90
    cache_swap_high 95
    cache_dir ufs /var/spool/squid 2048 16 256
    cache_access_log /var/log/squid/access.log
    refresh_pattern ^ftp: 15 20% 2280
    refresh_pattern ^gopher: 15 0% 2280
    refresh_pattern . 15 20% 2280

    acl all src 0.0.0.0/0.0.0.0
    acl manager proto cache_object
    acl localhost src 127.0.0.1/255.255.255.255
    acl SSL_ports port 443 563
    acl Safe_ports port 21 80 443 563 70 210 280 488 59 777 901 1025-65535
    acl purge method PURGE
    acl CONNECT method CONNECT

    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports

    acl bloqueados url_regex -i "/etc/squid/bloqueados"
    http_access deny bloqueados

    acl redelocal src 192.168.1.0/24
    http_access allow localhost
    http_access allow redelocal
    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 pela acl "bloqueados" não chegam a passar pela regra que autoriza os acessos provenientes da rede local.

    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" ou "orkut", por exemplo. Note que, ao usar esta regra, o Squid verifica a existência das palavras apenas na URL do site e não no conteúdo da página. Para criar filtros baseados no conteúdo, você pode utilizar o DansGuardian, que veremos mais adiante.

    Crie mais um arquivo de texto, contendo as palavras que devem ser bloqueadas, uma por linha, como em:

    orkut
    xxx
    sexo
    teens
    warez

    ... e adicione a regra abaixo, contendo a localização do arquivo:

    acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas"
    http_access deny palavrasproibidas

    O uso desta regra é um pouco mais problemático, pois bloqueará todas páginas que contenham qualquer uma das palavras listadas na URL. Esta opção sempre levará a alguns falsos positivos e por isso deve ser usada com mais cuidado.

    Uma vantagem é que ela permite bloquear facilmente páginas dinâmicas, onde a palavra é passada como parâmetro da URL. Um exemplo é o Orkut, onde, depois da transferência para o Google, os domínios principais passaram a encaminhar para URLs dinâmicas dentro do domínio do Google, como em:

    https://www.google.com/accounts/ServiceLogin?service=orkut&continue=http%3A%2F%2Fwww.orkut.com
    %2FRedirLogin.aspx%3Fmsg%3D0%26page%3Dhttp%253A%252F%252F
    www.orkut.com%252FHome.aspx&hl=pt-BR&rm=false&passive=true

    Você não poderia simplesmente bloquear o domínio "google.com" usando uma regra url_regex, mas poderia muito bem usar o dstdom_regex para bloquear a palavra "orkut" e assim bloquear o acesso ao site sem bloquear o acesso a outros serviços do Google.

    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. Para isso, basta usar as duas regras simultaneamente, como em:

    acl bloqueados url_regex -i "/etc/squid/bloqueados"
    http_access deny bloqueados

    acl palavrasproibidas dstdom_regex "/etc/squid/palavrasproibidas"
    http_access deny palavrasproibidas

    acl redelocal src 192.168.1.0/24
    http_access allow localhost
    http_access allow redelocal
    http_access deny all

    Incluídas as regras, os clientes passam a ver uma mensagem de erro ao tentar acessar páginas que se enquadrem nos bloqueios:

    Por padrão, as mensagens de erro aparecerem em inglês. No nosso caso elas estão aparecendo em português devido à linha "error_directory /usr/share/squid/errors/Portuguese/" que incluí no modelo de configuração anterior.

    Você pode personalizar as páginas de erro editando os arquivos dentro da pasta "/usr/share/squid/errors/Portuguese" ou "/usr/share/squid/errors/English" (de acordo com a língua definida na configuração). A pasta contêm várias páginas html, uma para cada tipo de erro indicado.


    » Próximo: Bloqueando por horário





    Você está lendo um tópico de demonstração do livro Servidores, Guia Prático:

    Autor: Carlos E. Morimoto
    Páginas: 736
    Formato: 23 x 16 cm
    Editora: GDH Press e Sul Editores
    ISBN: 978-85-99593-13-4
    Lançado em: Agosto de 2008

    » R$ 76,00 + frete
    (Preço nas livrarias: R$ 96)

    » Compre o seu

    Descrição:

    O livro Redes e Servidores Linux - Guia Prático foi nosso primeiro best-seller, vendendo um total de 8.000 exemplares em suas duas edições. O processo de atualização do livro acabou dando origem a dois livros separados. O primeiro deles é o livro Redes - Guia Prático, que aborda detalhes sobre a implantação e configuração de redes, abordando detalhes sobre os padrões de rede, configuração no Windows e Linux, configuração de redes wireless e outros temas.

    O livro Servidores Linux, Guia Prático é o segundo livro da série, que complementa o primeiro, oferecendo uma visão aprofundada sobre a configuração de servidores Linux.

    No livro você aprenderá a configurar tanto servidores de rede local quanto servidores dedicados, incluindo a configuração do Squid, Samba, Apache, SSH, LTSP, Postfix, Iptables, Bind, Quota e outros serviços. O livro inclui também capítulos sobre virtualização e sobre hardware para servidores, que complementam as informações abordadas nos demais.



     


cb
HOME