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:

http://187.7.106.14/rafael/Unidades%20Curriculares/Artigos/Leonardo%20Cruz%20-%20Revisado.pdf

 

 

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.

http://www.hardware.com.br/livros/linux-redes/proxy-transparente-com-dansguardian.html

 

 

Configurando um servidor proxy com o Squid

O Squid permite compartilhar a conexão entre vários micros, servindo como um intermediário entre eles e a internet. Usar um proxy é diferente de simplesmente compartilhar a conexão diretamente, via NAT.

Ao compartilhar via NAT, os micros da rede acessam a internet diretamente, sem restrições. O servidor apenas repassa as requisições recebidas, como um garoto de recados. O proxy é como um burocrata que não se limita a repassar as requisições: ele analisa todo o tráfego de dados, separando o que pode ou não pode passar e guardando informações para uso posterior.

Compartilhar a conexão via NAT é mais simples do que usar um proxy como o Squid sob vários aspectos. Você compartilha a conexão no servidor, configura os clientes para o utilizarem como gateway e pronto. Ao usar um proxy, além da configuração da rede, é necessário configurar o navegador e cada outro programa que for acessar a internet em cada cliente para usar o proxy. Esta é uma tarefa tediosa e que acaba dando bastante dor de cabeça a longo prazo, pois toda vez que um micro novo for colocado na rede ou for preciso reinstalar o sistema, será preciso fazer a configuração novamente.

A configuração do proxy muda de navegador para navegador. No Firefox, por exemplo, você a encontra em “Editar > Preferências > Geral > Proxy”. No IE, a configuração está em “Opções da Internet > Opções > Configurações da Lan > Usar um servidor Proxy”.

Além do navegador, outros programas podem ser configurados para trabalhar através do proxy: clientes de ICQ e MSN e até programas P2P. As vantagens de usar um proxy são basicamente três:

1- É possível impor restrições de acesso com base no horário, login, endereço IP da máquina e outras informações e bloquear páginas com conteúdo indesejado.

2- O proxy funciona como um cache de páginas e arquivos, armazenando informações já acessadas. Quando alguém acessa uma página que já foi carregada, o proxy envia os dados que guardou no cache, sem precisar acessar a mesma página repetidamente. Isso acaba economizando bastante banda, tornando o acesso mais rápido, sem precisar investir em uma conexão mais rápida.

Hoje em dia os sites costumam usar páginas dinâmicas, onde o conteúdo muda a cada visita, mas, mesmo nestes casos, o proxy dá uma ajuda, pois embora o html seja diferente a cada visita, e realmente precise ser baixado de novo, muitos componentes da página, como ilustrações, banners e animações em flash, podem ser aproveitados do cache, diminuindo o tempo total de carregamento.

Dependendo da configuração, o proxy pode apenas acelerar o acesso às páginas ou servir como um verdadeiro cache de arquivos, armazenando atualizações do Windows Update, downloads diversos e pacotes instalados através do apt-get, por exemplo. Ao invés de ter que baixar o Service Pack XYZ do Windows XP ou o OpenOffice nos 10 micros da rede, você vai precisar baixar apenas no primeiro, pois os outros 9 vão baixar a partir do cache do Squid.

3- Uma terceira vantagem de usar um proxy é que ele loga todos os acessos. Você pode visualizar os acessos posteriormente usando o Sarg, assim você sabe quem acessou quais páginas e em que horários. Além de tudo, o Squid é “dedo-duro” ;).

Mesmo assim, você pode estar achando que as vantagens não vão compensar o trabalho de sair configurando micro por micro, programa por programa para usar o proxy, e que é mais fácil simplesmente compartilhar via NAT. Mas existe a possibilidade de juntar as vantagens das duas formas de compartilhamento, configurando um proxy transparente como veremos adiante.

Ao usar um proxy transparente, você tem basicamente uma conexão compartilhada via NAT, com a mesma configuração básica nos clientes. O proxy entra na história como um adicional. Uma regra de firewall envia as requisições recebidas na porta 80 do servidor para o proxy, que se encarrega de responder aos clientes. Toda a navegação passa a ser feita automaticamente através do proxy (incluindo o cache dos arquivos do Windows update, downloads diversos e os pacotes instalados através do apt-get), sem que você precise fazer nenhuma configuração adicional nos clientes :).

O Kurumin inclui um script de instalação e configuração de proxy, disponível juntamente com meus outros scripts no painel de configuração de servidores. O script permite instalar o proxy, estabelecer algumas restrições de acesso e ativar o proxy transparente de forma simples. Neste tópico veremos como configurar o Squid “no muque” e criar regras elaboradas de restrição de acesso em qualquer distribuição.

 

Deixe um comentário