Controle de conteúdo: Como proteger seus usuários deles mesmos
Este artigo mostra como configurar um proxy com um potente controle de conteúdo. URLs, sites, palavras ou conjunto de palavras e até vírus dentro de um site podem ser filtrados. A melhor maneira de proteger seus usuários é protegê-los deles mesmos, não os deixando trazer vírus e materiais danosos à sua rede.
Parte 5: Compilação e configuração
Primeiro devemos baixar e instalar tudo.
Vou colocar aqui os parâmetros que eu usei.
No Squid:
$ ./configure --datadir=/usr/local/share/squid \
--sysconfdir=/etc/squid \
--enable-underscores \
--disable-ident-lookups \
-enable-linux-netfilter \
--enable-err-languages="Portuguese" \
--enable-default-err-language="Portuguese" \
--enable-snmp \
--disable-wccp \
--enable-delay-pools \
--enable-removal-policies="heap lru" \
--enable-storeio="diskd aufs coss ufs" \
--with-pthreads \
--libexecdir=/usr/local/libexec \
--sbindir=/usr/local/sbin \
--bindir=/usr/local/bin \
--mandir=/usr/share/man \
--enable-ntlm-auth-helpers="SMB fakeauth no_check winbind" \
--enable-basic-auth-helpers="NCSA SMB winbind" \
--enable-external-acl-helpers="ip_user wbinfo_group winbind_group" \
--enable-ntlm-fail-open \
--enable-auth="basic ntlm"
Claro que você deve adaptar para suas necessidades.
$ make
$ su
# make install
OBS: O Squid estará preparado para fazer autenticação NTLM, Basic e Basic via Samba/winbind, que no próximo artigo eu falo como utilizar com o DansGuardian.
Diretorios da instalação:
Não vou falar da configuração do Squid.
Verifique se o Squid está funcionando corretamente. Depois altere o seguinte parâmetro no squid.conf:
http_port
para:
Vou colocar aqui os parâmetros que eu usei.
No Squid:
$ ./configure --datadir=/usr/local/share/squid \
--sysconfdir=/etc/squid \
--enable-underscores \
--disable-ident-lookups \
-enable-linux-netfilter \
--enable-err-languages="Portuguese" \
--enable-default-err-language="Portuguese" \
--enable-snmp \
--disable-wccp \
--enable-delay-pools \
--enable-removal-policies="heap lru" \
--enable-storeio="diskd aufs coss ufs" \
--with-pthreads \
--libexecdir=/usr/local/libexec \
--sbindir=/usr/local/sbin \
--bindir=/usr/local/bin \
--mandir=/usr/share/man \
--enable-ntlm-auth-helpers="SMB fakeauth no_check winbind" \
--enable-basic-auth-helpers="NCSA SMB winbind" \
--enable-external-acl-helpers="ip_user wbinfo_group winbind_group" \
--enable-ntlm-fail-open \
--enable-auth="basic ntlm"
Claro que você deve adaptar para suas necessidades.
$ make
$ su
# make install
OBS: O Squid estará preparado para fazer autenticação NTLM, Basic e Basic via Samba/winbind, que no próximo artigo eu falo como utilizar com o DansGuardian.
Diretorios da instalação:
- Configuração -> /etc/squid
- Shared -> /usr/local/share/squid
- Bin dir -> /usr/local/bin
- Sbin dir -> /usr/local/sbin
- Libexec (helpers) -> /usr/local/libexec
- Man -> /usr/share/man
Não vou falar da configuração do Squid.
Verifique se o Squid está funcionando corretamente. Depois altere o seguinte parâmetro no squid.conf:
http_port
para:
http_port 127.0.0.1:3128
Isso fará o Squid escutar apenas no loopback, ou seja, ninguém conseguirá acessar o Squid, apenas o DansGuardian fará isso.
No DansGuardian:
$ ./configure \
--logrotatedir=/etc/logrotate.d/ \
--piddir=/var/run/ \
--runas_usr=squid \
--runas_grp=squid \
--logdir=/var/log/cache/ \
--mandir=/usr/share/man/ \
--cgidir=/usr/local/httpd/cgi-bin/ \
--sysvdir=/tmp/ \
--sysconfdir=/etc/dansguardian/ \
--bindir=/usr/local/bin/
$ make
$ su
# make install
Diretórios da instalação:
- Diretório de configuração -> /etc/dansguardian/
- Diretório do PID -> /var/run/
- Bin dir -> /usr/local/bin/
- CGI Dir -> /usr/local/httpd/cgi-bin/
- Diretório dos manuais -> /usr/share/man/
- Usuário e grupo de execução: squid
- Diretório de log -> /var/log/cache/
O parâmetros mais importantes são (dansguardian.conf):
- filterport = 8080 (a porta que o DansGuardian irá escutar)
- proxyip = 127.0.0.1 (ip do Squid, no nosso caso o loopback)
- proxyport = 3128 (a porta do seu Squid, no nosso caso 3128)
Agora que temos tudo instalado, vou explicar o que cada arquivo no diretório do DansGuardian faz.
Nota: Tudo o que começar com "banned" são arquivos de negação e tudo que começar com "exception" são arquivos de exceções.
- bannedextensionlist -> Lista de extensões de arquivos bloqueados;
- bannediplist -> Lista de ips (da sua rede) bloqueados (ips sem acesso a internet);
- bannedmimetypelist -> Tipo MIME bloqueados (download bloqueado);
- bannedphraselist -> Lista de frases banidas dentro da página (e não na URL);
- bannedregexpurllist -> Lista de expressões regulares bloqueadas*;
- bannedsitelist -> Lista de sites bloqueados**;
- bannedurllist -> Lista de URLs bloqueados**;
- banneduserlist -> Lista de usuários (da sua rede) bloqueados;
- contentregexplist -> Conteúdo baseado em expressões regulares que serão substituídos***;
- dansguardian.conf -> Arquivo de configuração principal;
- dansguardianf1.conf -> Arquivo de configuração de grupos de usuários;
- exceptioniplist -> Exceção de ips filtrados (ips da sua rede que não serão filtrados);
- exceptionphraselist -> Lista frases que são exceção;
- exceptionsitelist -> Lista de sites que são exceção;
- exceptionurllist -> Lista de urls que são exceção;
- exceptionuserlist -> Lista de usuários (da sua rede) que são exceção;
- filtergroupslist -> Definição dos grupos de usuários;
- greysitelist -> Sites que estão na lista cinza;
- greyurllist -> URLs que estão na lista cinza;
- pics -> Definição do PICS Labeling;
- weightedphraselist -> Lista de frases/palavras e seus "pesos" (os pesos podem ser positivos ou negativos).
Não pense duas vezes, LEIA TODOS OS ARQUIVOS DE CONFIGURAÇÃO. Isso ajudará a entender melhor a lógica de funcionamento do DansGuardian.
* Mantenha este arquivo pequeno, com o mínimo de regras possíveis, se você não sabe o que é regex (expressões regulares), aconselho a manter este arquivo vazio. Ele bloqueia URLs da seguinte maneira:
No arquivo existe a expressão "anal", então ele bloqueia tudo que tenha "anal", como analítico, canal, sexoanal, etc.
A possibilidade de ter um falso-positivo é enorme, por isso use o mínimo de regras aqui.
** Sites e URLs são tratados de maneiras completamente diferentes, observe os exemplos:
http://www.playboy.com.br --> Site: Isto é, qualquer coisa dentro deste site será bloqueado (até as piadas!)
http://www.terra.com.br/sexo --> URL: Isto é, apenas esta parte do site (URL) será bloqueada.
*** Isso é interessante para barrar popups, ActiveX, músicas de fundo (AAAARRRG!), etc.
A sintaxe é a seguinte (case insensitive):
"o que deve ser substituído"->"substituição"
Exemplo:
"droga"->"censurado"
"windown.open"->"<!-- disarmed -->"
"windown.open"->"<!-- disarmed -->"
Sabendo disso, basta editar o arquivo dansguardian.conf e ajustá-lo para sua realidade.
Uma dica: Para colocar vários "perfis" de acesso, basta editar o arquivo filtergroupslist e criar um dansguardianfx.conf, onde "x" representa o grupo dos usuários.
Exemplo:
Tenho 400 pessoas na empresa, 2 delas precisam fazer download, 1 precisa acessar páginas de sexo(???) e o restante não pode fazer nada de diferente.
No arquivo filtergroupslist coloco o seguinte:
huguinho=filter2
zezinho=filter2
luizinho=filter3
zezinho=filter2
luizinho=filter3
E crio 3 arquivos dansguardianfx.conf
- dansguardianf1.conf -> Restrição geral;
- dansguardianf2.conf -> Permito download;
- dansguardianf3.conf -> Permito páginas de sexo.
Vale lembrar: O DANSGUARDIAN NÃO FAZ AUTENTICAÇÃO DE USUÁRIO, este é um papel do SQUID!!!!
Ele apenas utiliza a autenticação do Squid OK?
Não vou me aprofundar nos arquivos de configuração, estão todos muito bem documentados e comentados linha-a-linha.
Os parâmetros mais interessantes são:
- reportinglevel = 3 (manda o usuário barrado para a URL abaixo e explica o por quê da negação, usando um template)
- accessdeniedaddress = 'http://seuproxy/cgi-bin/dansguardian.pl'
- usernameidmethodproxyauth = on (para usar a autenticação do Squid deve-se habilitar este parâmetro)
- preemptivebanning = off (ativado este parâmetro, o usuário deve acessar uma página "OK" primeiro antes de acessar alguma da greylist)
Para o tutorial não ficar muito extenso vou ficar por aqui.
Agora uma curiosidade, seguindo a linha das cores, whitelist, blacklist, o correto não seria GRAYlist ao invés de greylist? Pior que procurei no Google e realmente todas as referências são de grey com E.
Se tiver algum expert em inglês, grey também é correto ou foi falha do pessoal do DansGuardian ao dar nomenclatura mesmo?
[]'s