ct

    Guia: Compartilhando a conexão e configurando o Squid


     Carlos E. Morimoto
     20/11/2006


    Usando o DansGuardian para barrar páginas impróprias


    Bloquear domínios e endereços IP individuais funciona bem para bloquear páginas específicas, mas não funciona para bloquear páginas pornográficas, por exemplo, simplesmente porque existem muitas delas e você iria morrer louco se tentasse bloquear todas manualmente.

    O DansGuardian é um filtro de conteúdo destinado a trabalhar junto com o Squid, filtrando páginas pornográficas e com outros tipos de conteúdo indesejado. Ele inclui um conjunto de regras prontas, que contém palavras, frases e tipos de arquivos freqüentemente usados neste tipo de página e endereços de páginas conhecidas. Cruzando estas informações, ele consegue fazer um excelente trabalho, realmente bloqueando quase todas as páginas indesejadas, em várias línguas, com relativamente poucos falsos-positivos.

    Ele é ideal para uso em micros de trabalho e, principalmente, para quem tem crianças em casa e não quer que elas acessem páginas pornográficas.

    Atualmente, o DansGuardian é um produto "semicomercial", que tem o código aberto e é gratuito para uso pessoal ou para qualquer fim não comercial (pode ser usado em uma escola ou escritório, por exemplo, desde que implementado internamente), mas é pago para uso comercial (quando você cobra pelo serviço de implantação, ou o fornece como parte de uma solução comercial). Você pode ver mais detalhes sobre a licença de uso no:
    http://dansguardian.org/?page=copyright2

    Ao instalar, comece verificando se já não existe um pacote disponível na distribuição que está usando. O DansGuardian é um pacote de uso muito comum; por isso, a maioria das distribuições o inclui nos CDs de instalação. No Debian, por exemplo, você pode instalá-lo com um:

    # apt-get install dansguardian

    Você pode também encontrar pacotes para várias distribuições, junto com o tradicional pacote com código fonte no http://dansguardian.org/?page=download2.

    Depois de instalar o pacote, inicie-o com o comando:

    # /etc/init.d/dansguardian start
    ou:
    # dansguardian &

    Para que o DansGuardian funcione, é preciso que o Squid esteja instalado e ativo. Ele trabalha sobre o Squid, implementando suas políticas de acesso, mas deixando que o próprio Squid faça o acesso à web, cache e autenticação.

    O principal arquivo de configuração é o "/etc/dansguardian/dansguardian.conf". Ao editá-lo pela primeira vez, é importante verificar algumas opções:

    # UNCONFIGURED

    Esta linha deve ficar comentada, indicando que o arquivo já foi configurado por você.

    language = 'portuguese'

    Esta opção configura a língua em que as mensagens de acesso bloqueado serão mostradas aos clientes.

    loglocation = '/var/log/dansguardian/access.log'

    Aqui vai a localização do arquivo de log do dansguardian, onde ficam armazenados os endereços das páginas cujo acesso foi bloqueado. Serve tanto para verificar a eficiência do filtro, quanto para identificar falsos-positivos, ou seja, páginas legítimas que estão sendo bloqueadas por engano. Estas exceções podem ser especificadas individualmente no arquivo "/etc/dansguardian/exceptionsitelist", que funciona como uma white list, contendo uma lista de páginas que sempre são permitidas, mesmo que sejam encontradas palavras proibidas dentro do texto.

    filterport = 8080

    A porta onde o DansGuardian fica ativo. Ele sempre deve utilizar uma porta diferente do Squid, pois são duas coisas separadas. O padrão é a porta 8080.

    proxyip = 127.0.0.1

    O endereço IP do servidor proxy que será usado. Por padrão, ele vai utilizar uma cópia do Squid ativa na mesma máquina, mas é possível utilizar outro servidor Squid disponível na rede.

    proxyport = 3128

    A porta TCP onde o servidor Squid especificado na opção acima está ativo. Lembre-se de que, por padrão, o Squid usa a porta 3128.


    A filtragem de páginas funciona em dois níveis. Ao receber a requisição do cliente, o DansGuardian verifica se o endereço a ser acesso está em uma das listas de domínios ou IPs proibidos. Caso esteja, o cliente recebe a mensagem de erro e o acesso sequer é feito, economizando banda.

    Se não existir nenhum bloqueio relacionado ao domínio, a requisição é enviada ao Squid e o acesso é realizado. Ao receber os arquivos da página, o DansGuardian verifica o conteúdo da página, em busca de expressões e palavras "ruins", freqüentemente encontradas em páginas indesejadas, e também palavras "boas", normalmente encontradas em páginas de bom conteúdo.

    Cada palavra ruim soma um certo número de pontos. Por exemplo, a palavra "s3xy" soma apenas 5 pontos, enquanto a expressão "s3x org1es" soma 80 pontos (estou trocando as vogais por números para que o meu próprio texto não caia nos filtros ;). Palavras "boas", por outro lado, subtraem pontos, fazendo com que a página tenha uma possibilidade menor de ser bloqueada. A palavra "education" subtrai 20 pontos, enquanto "medical problem" subtrai 50. As listas com palavras boas e ruins, juntamente com o peso positivo ou negativo de cada uma, vão na pasta "/etc/dansguardian/phraselist".

    No final, o site recebe uma nota, apelidada pelos desenvolvedores de "naughtynesslimit", ou "índice de sem-vergonhice", resultado da soma de todas as palavras boas e ruins. Você define um índice máximo a ser tolerado no arquivo "/etc/dansguardian/dansguardianf1.conf", na opção:

    naughtynesslimit = 160

    Quanto mais baixo o número, mais severa é a censura, porém mais páginas boas acabam sendo bloqueadas por engano. Os valores recomendados pelos desenvolvedores são "60" para crianças pequenas, "100" para pré-adolescentes e "160" para adolescentes. Para um público adulto, onde a principal preocupação seja não bloquear páginas boas, mesmo que isso faça com que uma ou outra página inadequada passe pelo filtro de vez em quando, você pode arriscar "200" ou mesmo "240".

    Como você pode notar dando uma olhada no conteúdo dos arquivos das listas de palavras, o DansGuardian vem configurado com listas em inglês, que deixam passar muitos sites nacionais. Você pode baixar um arquivo com listas em outras línguas, incluindo português no:
    http://dansguardian.org/downloads/grosvenor/languages.tar.gz

    Para instalar, descompacte o arquivo "languages.tar.gz" e copie os arquivos de dentro da pasta "languages", que será criada para a pasta "/etc/dansguardian/phraselist/". Falta agora configurar o DansGuardian para utilizar os novos arquivos. Para isso, abra o arquivo "/etc/dansguardian/weightedphraselist" e adicione as linhas:

    .Include</etc/squid/dansguardian/languages/weightedphraselist.pornsites.portuguese>
    .Include</etc/squid/dansguardian/languages/weightedphraselist.pornwords.portuguese>

    Antes de usar estas listas de palavras, verifique o conteúdo dos arquivos. As listas de palavras em português são excessivamente rigorosas, o que faz com que seja bloqueado o acesso a um número muito grande de sites "bons", mesmo ao usar um naughtynesslimit alto. Use-os com cautela.

    Aparentemente, os arquivos disponíveis no site foram escritos por um estrangeiro. Por isso, não se adaptam bem à nossa realidade. Se decidir corrigir os arquivos, não deixe de enviá-los para os mantenedores, para que sejam incluídos no pacote.

    Note que neste arquivo são especificados todos os arquivos de palavras que são utilizados. Na pasta existem várias categorias diferentes. Em algumas situações, você pode querer desabilitar algumas das categorias, a fim de flexibilizar o filtro. Você pode adicionar novas palavras ou editar o peso de cada uma, editando diretamente os arquivos.

    Concluindo, abra também o arquivo "/etc/dansguardian/bannedphraselist" e inclua a linha:

    .Include</etc/squid/dansguardian/languages/bannedphraselist.portuguese>

    Lembre-se de que é necessário reiniciar o DansGuardian para que qualquer uma das alterações tenha efeito:

    # /etc/init.d/dansguardian restart

    Configurando os clientes


    O DansGuardian pode ser usado tanto dentro da rede, quanto localmente. Além de ser utilizado em redes de todos os tamanhos, muita gente com crianças em casa se dá ao trabalho de instalá-lo avulso, no micro de casa.

    Para usá-lo, você precisa configurar os navegadores, tanto os instalados no próprio servidor onde ele está sendo executado, quanto em outras máquinas da rede para acessarem via proxy. Nas configurações do proxy, coloque o endereço IP do servidor (como por exemplo 192.168.0.1) e a porta do DansGuardian, definida no arquivo de configuração. Lembre-se de que, por padrão, ele usa a porta 8080.

    No Firefox, a opção de configurar um proxy está em "Editar > Preferências > Proxy". Ou seja, com exceção da porta diferente, a configuração para usar o DansGuardian é a mesma que para um proxy tradicional. Em casos onde ele é usado num micro doméstico, com o objetivo de servir como um simples filtro de conteúdo, você pode até mesmo rodá-lo localmente. Neste caso, use o endereço "127.0.0.1" como proxy:


    Atualizando as blacklists


    Além do filtro com base em palavras, o DansGuardian utiliza uma lista de sites proibidos, que sequer chegam a ser acessados. Por padrão, o DansGuardian vem com uma lista muito pequena e desatualizada, apenas como exemplo. Para efetivamente usar este recurso, é preciso baixar uma lista de palavras mais elaborada.

    Você pode baixar uma lista longa e atualizada no: http://urlblacklist.com/.

    O link completo para a versão mais recente é:
    http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist

    Para instalar, basta descompactar o arquivo e mover o conteúdo para dentro da pasta "/etc/dansguardian/", substituindo a pasta "/etc/dansguardian/blacklists" existente:

    $ tar -zxvf bigblacklist.tar.gz
    # cp -a --reply=yes blacklists/ /etc/dansguardian/

    Depois de instalar o arquivão completo, você pode usar o script de atualização, disponível no site para baixar atualizações de forma automática. Baixe-o em:
    http://urlblacklist.com/downloads/UpdateBL

    Basta ativar a permissão de execução e executá-lo. Em algumas distribuições é preciso criar a pasta "/var/lib/lrpkg/", onde ele guarda os logs. Sem esta pasta, ele exibe um erro e não conclui a atualização.

    # mkdir -p /var/lib/lrpkg/
    # chmod +x UpdateBL
    # ./UpdateBL

    O pacote inclui várias listas diferentes, separadas por assunto. As listas incluem muitos assuntos inocentes como, "cellphones", "sports" e "childcare" (saúde infantil). Ele não é uma "blacklist" no sentido estrito da palavra, mas sim um conjunto de listas que inclui também sites sobre conteúdos diversos. A idéia aqui é que você pode bloquear todos os assuntos desejados.

    Dentro de cada uma das subpastas, você encontra três arquivos: domains (sites completamente bloqueados), expressions e urls (páginas específicas, dentro de sites permitidos). Para ativar o uso das blacklists, edite os arquivos "/etc/dansguardian/bannedsitelist" e "/etc/dansguardian/bannedurllist", adicionando (ou descomentando) as linhas referentes às categorias que devem ser ativadas.

    Para bloquear páginas de conteúdo adulto (adult), drogas (drugs), páginas pornográficas (porn) e warez, adicione (ou descomente) no arquivo "/etc/dansguardian/bannedurllist" as linhas:

    .Include</etc/dansguardian/blacklists/adult/urls>
    .Include</etc/dansguardian/blacklists/drugs/urls>
    .Include</etc/dansguardian/blacklists/porn/urls>
    .Include</etc/dansguardian/blacklists/warez/urls>

    No arquivo "/etc/dansguardian/bannedsitelist" vão as linhas:

    .Include</etc/dansguardian/blacklists/adult/domains>
    .Include</etc/dansguardian/blacklists/drugs/domains>
    .Include</etc/dansguardian/blacklists/porn/domains>
    .Include</etc/dansguardian/blacklists/warez/domains>

    Você pode usar também os arquivos com expressões proibidas, incluídos no pacote para reforçar a lista adicional, com os termos em português, que já ativamos anteriormente. Para isso, abra novamente o arquivo "/etc/dansguardian/bannedphraselist" e adicione as linhas:

    .Include</etc/dansguardian/blacklists/adult/expressions>
    .Include</etc/dansguardian/blacklists/drugs/expressions>
    .Include</etc/dansguardian/blacklists/porn/expressions>
    .Include</etc/dansguardian/blacklists/warez/expressions>

    Faça o mesmo com outras categorias que quiser adicionar.


    Proxy transparente com o DansGuardian


    Como vimos até agora, o DansGuardian funciona como uma camada extra, uma espécie de "pedágio", por onde as requisições passam antes de chegarem ao Squid e por onde as respostas passam antes de serem enviadas ao cliente.

    Normalmente, os clientes precisam ser configurados manualmente para utilizar o DansGuardian como proxy, acessando-o através da porta 8080. Isso traz de volta o problema de configurar manualmente cada um dos micros e evitar que os usuários removam a configuração para acessar diretamente, sem passar pelo filtro.

    Contudo, é possível configurar o DansGuardian para trabalhar como proxy transparente, da mesma forma que fizemos anteriormente com o Squid. Neste caso, o firewall redireciona as requisições recebidas na porta 80 para o DansGuardian e ele as repassa para o Squid, que finalmente faz o acesso. Os clientes precisam apenas ser configurados para acessar a internet usando o servidor onde estão instalados o Squid e DansGuardian como gateway.

    Comece adicionando as quatro linhas que ativam o proxy transparente no "/etc/squid/squid.conf":

    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on

    Depois vêm as regras de firewall para habilitar o compartilhamento da conexão e direcionar as requisições recebidas na porta 80 para a porta usada pelo DansGuardian. Novamente, é a mesma configuração usada para fazer um proxy transparente no Squid, mudando apenas a porta. Lembre-se que o "eth0" deve ser substituído pela interface ligada na rede local:

    modprobe iptable_nat
    iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT \
    --to-port 8080
    iptables -A INPUT -m tcp -p tcp -s ! 127.0.0.1 --dport 3128 -j DROP

    A última regra bloqueia a porta 3128 usada pelo Squid, para impedir que algum espertinho configure o navegador para acessar diretamente através do Squid, sem passar pelo DansGuardian. A única exceção é o endereço 127.0.0.1, ou seja, o próprio servidor. Lembre-se de colocar estes comandos no arquivo "/etc/rc.d/rc.local" ou "/etc/init.d/bootmisc.sh" para não precisar ficar digitando tudo a cada boot.

cb
HOME