Instalando e Configurando DansGuardian no Debian 5.0.3


Utilizando o Debian 5.03, a última versão de instalação via apt-get do DansGuardian é 2.10.1.1 e do Squid é 3.0.STABLE25. Quando fiz as atualizações desses aplicativos verifiquei muitas mudanças, principalmente no Dansguardian, que melhoraram muito o sistema.

Instalação dos aplicativos e arquivos de configurações

Atualmente a última versão, segundo seu próprio site, é a 2.10.1.1. E aqui demonstrarei a instalação da última versão do repositório do Debian 5.03, que instala o DansGuardian 2.10.1.1 e Squid 3.0, até a presente data.

Primeiramente devemos instalar e configurar o Squid.

Instalação do Squid:

# apt-get install squid

O arquivo de configuração do Squid é: /etc/squid/squid.conf

Vamos ao diretório:

# cd /etc/squid/

Backup do squid.conf original:

# cp squid.conf squid.conf.orig

Instalação do Dansguardian:

# apt-get install dansguardian

Os arquivos de configurações do Dansguardian que trabalharemos são:

# cd /etc/dansguardian
# ls -la

drwxr-xr-x 9 root root 4096 Jul 8 10:08 .
drwxr-xr-x 63 root root 4096 Jul 6 14:41 ..
drwxr-xr-x 2 root root 4096 Jun 24 11:49 authplugins
drwxr-xr-x 2 root root 4096 Jul 7 15:12 contentscanners
-rw-r–r– 1 root root 22503 Jun 24 17:25 dansguardian.conf
-rw-r–r– 1 root root 11719 Jul 6 09:51 dansguardianf1.conf
drwxr-xr-x 2 root root 4096 Jun 24 10:35 downloadmanagers
drwxr-xr-x 29 root root 4096 Jun 24 11:36 languages
drwxr-xr-x 7 root root 4096 Jul 8 10:53 lists

Entrar do diretório lists:

# cd lists

Baixando uma blacklist em:

http://urlblacklist.com/cgi-bin/commercialdownload.pl?type=download&file=bigblacklist

Descompactando a lista:

# tar -xvf bigblacklist.tar.gz

Removendo o arquivo:

# rm -rf bigblacklist.tar.gz

Configuração do Squid

Não detalharemos as configurações do Squid, há centenas de artigos espalhados pela internet que ensinam determinada configuração dependendo da sua necessidade, neste caso há uma configuração do Squid com autenticação no OpenLDAP.

Edição do squid.conf:

# vim /etc/squid/squid.conf


#squid.conf Gustavo Hendrigo Marcon
#(cc) Creative Commons - Gustavo Hendrigo, Adamantina - SP - 2009

#Porta de acesso do proxy - Escuta do Dansguardian
#http_port 3128
http_port 127.0.0.1:3128

#Define o nome que irá aparecer nas páginas de erro ou acesso do squid
visible_hostname NetServer-Servidor-Proxy

#Não faz cache de dados de formulários html, nem de resultados de programas cgi
hierarchy_stoplist cgi-bin ?

#Cria uma access control list, baseando-se na url e utilizando exp. regulares
#nesta situação foi criado uma exp. regular para cgi e ?.
acl QUERY urlpath_regex cgi-bin \?

#Não faz cache da acl QUERY
cache deny QUERY

#apache
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache

#Configura o número máximo de tentativas de conexões em um servidor que tenha somente um endereço
maximum_single_addr_tries 1

#Tamanho máximo de memória para cache
cache_mem 256 MB

#Tamanho máximo de um objeto
maximum_object_size 20128 KB
#Com o cache_swap_high define qual a porcentagem máxima que o cache deverá
#atingir para começar a apagar arquivos antigos. O cache_swap_low define qual a
#porcentagem deverá ser atingida durante a remoção desses arquivos.
cache_swap_low 80
cache_swap_high 95

#Tamanho máximo de um objeto na memória ram, caso o objeto seja
#maior que o valor estipulado ele será gravado direto no disco
maximum_object_size_in_memory 128 KB

#Define a localização do cache de disco, tamanho
#Quantidade de diretórios pai, e por fim a quantidade de diretórios filhos
cache_dir ufs /var/spool/squid 256 128 256

#Arquivo de Log
access_log /var/log/squid/access.log squid

#Arquivo que contém os nomes de máquinas
#hosts_file /etc/hosts

#Autenticação no LDAP
auth_param basic program /usr/lib/squid/ldap_auth -v 3 -b "ou=Users,dc=empresa,dc=com,dc=br" -f "uid=%s" -h ldap. empresa.com.br
auth_param basic children 8
auth_param basic realm WebProxy. Digite seu login e senha.
auth_param basic credentialsttl 20 minutes
acl usuarios proxy_auth REQUIRED

#acl usuários controlados
#controle de banda nos arquivos: .zip .rar .avi .iso .mpg .7z
acl controlbandfiles url_regex -i "/etc/squid/acls/controlbandfiles"
#usuários sem controle de banda
acl controlbandfree proxy_auth "/etc/squid/acls/controlbandfree"

#Tempo de atualização dos objetos relacionados aos protocolos ftp, gopher e http.
#Default Sugerido:
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern .

#Mínimo de Access Control List para o squid funcionar corretamente
#Não alterar estas acls, pois poderá travar o squid
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 to_localhost dst 127.0.0.0/8
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
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 Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT

#ACLs
#limita conexoes HTTP
acl connect_abertas maxconn 8

#Repasse dos ips dos clientes pelo Dansguardian, aqui esta uma das mudanças no squid 2.7 vem com fowarded_for compilado.
#Isto possibilita o repasse dos ips cliente dos Dansguardian para o squid, antes todos ips chegavam no squid como 127.0.0.1
follow_x_forwarded_for allow localhost

#Acessos

#limite de banda
delay_pools 2

#Controle 2
#Sem limite de banda
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_access 1 allow controlbandfree

#Controle 3
#Limite de banda a arquivos, 100kbps
delay_class 2 2
#delay_parameters 2 100000/100000 100000/100000
#alterei
delay_parameters 2 100000/100000 100000/100000
delay_access 2 allow controlbandfiles

#Acessos dos usuários autenticados.
http_access allow usuarios

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

http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
cache_effective_group proxy
coredump_dir /var/spool/squid

Configuração do Dansguardian

Primeiramente iremos ao diretório do Dansguardian:

# cd /etc/dansguardian

Backup do dansguardian.conf:

# cp dansguardian.conf dansguardian.conf.orig

Edição do dansguardian.conf:

# vim dansguardian.conf

#comente esta linha para dizer que já o configuramos
#UNCONFIGURED - Please remove this line after configuration

# 3 = usar HTML template para acessos negados
reportinglevel = 3

# Diretório de Linguagens
languagedir = '/etc/dansguardian/languages'

# Linguagem usada:
language = 'portuguese'

#Nível de log 0 = nenhum 1 = somente negado 2 = todos acessados 3 = Todos requisições
loglevel = 3

# 2 = always log & mark exceptions (default)
logexceptionhits = 2

# Formato do log, 1 = Formato default.
logfileformat = 1

# Localização do arquivo de log
loglocation = '/var/log/dansguardian/access.log'

# Ips filtrados individualmente
filterip =

# Porta de escuta do Dansguardian
filterport = 8080

# Ip do proxy, onde está o squid
proxyip = 127.0.0.1

# porta do squid
proxyport = 3128

# url de acesso negado
accessdeniedaddress = 'http://YOURSERVER.YOURDOMAIN/cgi-bin/dansguardian.pl'

# Default is enabled, but to go back to the standard mode, disable it.
nonstandarddelimiter = on

# Usar banner do dansguardian on (default) | off
usecustombannedimage = on
custombannedimagefile = '/usr/share/dansguardian/transparent1x1.gif'

# Quantidade de grupos existente, pode ser criado até 9
filtergroups = 2

# Onde fica o arquivo onde são atribuídos os grupos aos usuários ou ips.
# agora podemos também atribuir faixas de ips
filtergroupslist = '/etc/dansguardian/lists/filtergroupslist'

# Ips sem acesso
bannediplist = '/etc/dansguardian/lists/bannediplist'
# Ips com acesso total
exceptioniplist = '/etc/dansguardian/lists/exceptioniplist'

# high enough, reported. on | off
showweightedfound = on

# 2 = on, singular = each weighted phrase found only counts once on a page.
weightedphrasemode = 2

urlcachenumber = 1000
urlcacheage = 900
scancleancache = on

# 2 = both of the above (default)
phrasefiltermode = 2

# 0 = force lower case (default)
preservecase = 0

# off = disabled (default)
# on = enabled
hexdecodecontent = off

# off (default) | on (Big5 compatible)
forcequicksearch = off

# bannedsitelist file instead.
reverseaddresslookups = off

# leave it off.
reverseclientiplookups = off

# is, enabling this option does not incur any additional forward DNS requests.
logclienthostnames = off

# be significant. Fast computers do not need this option. on | off
createlistcachefiles = on

# use -1 for no blocking
#maxuploadsize = 512
#maxuploadsize = 0
maxuploadsize = -1

# The size is in Kibibytes - eg 2048 = 2Mb
# use 0 to set it to maxcontentramcachescansize
maxcontentfiltersize = 256

# use 0 to set it to maxcontentfilecachescansize
# This option may be ignored by the configured download manager.
maxcontentramcachescansize = 2000

# The size is in Kibibytes - eg 10240 = 10Mb
maxcontentfilecachescansize = 20000

# RAM cache.
filecachedir = '/tmp'

# on|off (defaults to on)
deletedownloadedtempfiles = on

# This may be ignored by the configured download manager.
initialtrickledelay = 20

# This may be ignored by the configured download manager.
trickledelay = 10

# Controle dobre gerenciador de Downloads
downloadmanager = '/etc/dansguardian/downloadmanagers/fancy.conf'
downloadmanager = '/etc/dansguardian/downloadmanagers/default.conf'

# The default of 60 seconds is probably reasonable.
contentscannertimeout = 60

# (on|off) default = off
contentscanexceptions = off

# Este plugin deve ser habilitado para aparecer os usuários no log do Dansguardian
authplugin = '/etc/dansguardian/authplugins/proxy-basic.conf'

# Defaults to off.
recheckreplacedurls = off

# Importante, deve ser habilitado para repassar os ips clientes ao squid.
forwardedfor = on

# Warning - headers are easily spoofed. on | off
usexforwardedfor = off

# it on or off
logconnectionhandlingerrors = on

# useful in production.
logchildprocesshandling = off

# On large sites you might want to try 180.
maxchildren = 120

# On large sites you might want to try 32.
minchildren = 8

# sets the minimum number of processes to be kept ready to handle connections.
# On large sites you might want to try 8.
minsparechildren = 4

# sets the minimum number of processes to spawn when it runs out
# On large sites you might want to try 10.
preforkchildren = 6

# sets the maximum number of processes to have doing nothing.
# When this many are spare it will cull some of them.
# On large sites you might want to try 64.
maxsparechildren = 32

# On large sites you might want to try 10000.
maxagechildren = 500

# browse the web. Set to 0 for no limit, and to disable the IP cache process.
maxips = 0

# Defines IPC server directory and filename used to communicate with the log process.
ipcfilename = '/tmp/.dguardianipc'

# Defines URL list IPC server directory and filename used to communicate with the URL
# cache process.
urlipcfilename = '/tmp/.dguardianurlipc'

# Defines IP list IPC server directory and filename, for communicating with the client
# IP cache process.
ipipcfilename = '/tmp/.dguardianipipc'

# on|off (defaults to off)
nodaemon = off

# Disable logging process
# on|off (defaults to off)
nologger = off

# Enable logging of "ADs" category blocks
# on|off (defaults to off)
logadblocks = off

# Enable logging of client User-Agent
# Some browsers will cause a *lot* of extra information on each line!
# on|off (defaults to off)
loguseragent = off

# on|off (defaults to off)
softrestart = off

# Mail program
# Path (sendmail-compatible) email program, with options.
# Not used if usesmtp is disabled (filtergroup specific).
mailer = '/usr/sbin/sendmail -t'

Criando grupos no Dansguardian

Segundo o changelog do Dansguardian, a partir da versão 2.9.2.0 foi excluída a lista exceptionuserlist, e na versão 2.9.3.0 foi adicionado X-Forwarded-For, que é o repasse dos IPs clientes ao Squid. Vamos detalhar aqui essas melhorias e suas configurações.

Sem exceptionuserlist e agora, como farei para liberar acesso total a um usuário?

Para liberar acesso total a usuários devemos criar um grupo para estes usuários com tais permissões, criaremos este grupo.

No diretório do Dansguardian criaremos um novo diretório, grupo2:

# cd /etc/dansguardian
# mkdir grupo2

Diretório lists:

# cd lists

Listando os arquivos:

# ls
authplugins
bannedregexpheaderlist
contentregexplist
exceptionfileurllist
exceptionsitelist
headerregexplist
pics
bannedextensionlist
bannedregexpurllist
contentscanners
exceptioniplist
exceptionurllist
logregexpurllist
updateblacklist.sh
bannediplist
bannedsitelist
downloadmanagers
exceptionmimetypelist
filtergroupslist
logsitelist
urlregexplist
bannedmimetypelist
bannedurllist
exceptionextensionlist
exceptionphraselist
greysitelist
logurllist
weightedphraselist
bannedphraselist
blacklists
exceptionfilesitelist
exceptionregexpurllist
greyurllist
phraselists

Copiaremos os arquivos necessários para o diretório que criamos, “grupo2”.

# cp banned* contentregexplist exception* grey* headerregexplist pics weightedphraselist urlregexplist ../grupo2

Editar todos os arquivos deixando todas as linhas comentadas para que não haja nenhum bloqueio a este grupo. Comente com o parâmetro #, caso futuramente crie mais grupos faremos os mesmos passos descomentando as linhas que desejamos bloquear.

Voltaremos ao diretório anterior:

# cd ..

Faremos uma cópia do arquivo dansguardianf1.com para o nosso grupo 2, este arquivo é o arquivo de configurações dos grupos, o grupo default é o grupo 1, usuários ou IPs que não forem atribuídos a grupos por padrão caem neste grupo 1.

# cp dansguardianf1.conf dansguardianf2.conf

Abrindo o arquivo para edição:

# vim dansguardianf2.conf

Edite este parâmetro (no exemplo do conf anterior, já está alterado):

  • groupmode = 1 coloque o número deste grupo
  • groupmode = 2

Veja esta linha:

bannedphraselist = '/etc/dansguardian/lists/bannedphraselist'

Ela indica a lista de frase banidas, mas está ainda indicando para a lista do grupo default.

Então executaremos o comando dentro do vim para trocar todas estas linhas:

:%s/lists/grupo2/g

O parâmetro:

  • naughtynesslimit = 999

Indica o índice de “sem vergonhice”, ou seja, a pontuação máxima da página, se por exemplo tiver muitas palavras impróprias dentro do site este será bloqueado, colocaremos um índice bem alto, porque a intenção aqui é criarmos um grupo com acesso total.

Salvar o arquivo e sair, agora editaremos o arquivo dansguardian.conf:

# vim dansguardian.conf

Edite a linha que indica a quantidade de grupo existente, no máximo 9.

filtergroups = 1

Para:

filtergroups = 2

Atribuindo grupos a usuários

Dentro do diretório /etc/dansguardian/lists temos o arquivo filtergroupslist, editaremos este arquivo:

# vim filtergrouplist

# Filter Groups List file for DansGuardian
#

# Format is <user>=filter<1-9> where 1-9 are the groups

#

# Eg:

#

# This file is only of use if you have more than 1 filter group
#Atribua aqui o usuários do grupo 2, ex:
hendrigo=filter2

#Também pode ser atribuído um ip:
192.168.0.100=filter2

Reinicie o Dansguardian:

# /etc/init.d/dansguardian restart

Conclusão

O Dansguardian é um excelente filtro de conteúdo que vem melhorando a cada atualização, nele existem muitos arquivos que podemos manipular e em conjunto com Squid se torna um excelente serviço para empresas. Você só precisa adequá-lo às suas necessidades.

Referências: http://dansguardian.org/

8 Responses to Instalando e Configurando DansGuardian no Debian 5.0.3

  1. Pingback: Filtrando porcarias com o Dansguardian « BloGNU

  2. Eu disse:

    Boas..
    Excelente este artigo.. Precisava de uma ajudinha…É possível bloquear com o dansguardian o acesso a determinado site em determinado horário?

  3. Eu disse:

    o meu problema é que o squid não me reconhece a função follow_x_forwarded_for allow localhost

  4. Washington Luis disse:

    ola, gostaria de saber como fazer navegaçao por login e senha, para cada usuario quando for navegar pedir login e senha?
    como é feita essa configuraçao?

  5. SNEIVA disse:

    Gostaria de saber se este tutorial bloqueia também o usuário que usa a navegação anonima?

Conte-nos o que achou...

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: