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.

[ Hits: 74.390 ]

Por: Allan GooD em 15/01/2005


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:
  • 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 -->"

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

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.

Página anterior    

Páginas do artigo
   1. Esclarecimentos
   2. Pré-requisitos
   3. Por quê DansGuardian?
   4. Como tudo irá funcionar
   5. Compilação e configuração
Outros artigos deste autor

Alta disponibilidade com IP compartilhado - UCARP

Nagios Falante

Filtragem de vírus com pop3 transparente: pop3vscan

Leitura recomendada

Soluções para Acesso Remoto Seguro com SSH

Segurança Física (Parte 2)

Segurança em seu Linux

Exploração de Falhas em Servidores FTP

Definição de hacker

  
Comentários
[1] Comentário enviado por fabio em 15/01/2005 - 01:00h

Excelente artigo Allan, meus parabéns.

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

[2] Comentário enviado por fernandoamador em 16/01/2005 - 05:29h

Me ajudou bastante.

[3] Comentário enviado por allangood em 17/01/2005 - 10:18h

Obrigado pelo elogio.

Referente ao grey, ele significa cinzento, e está correto sim. O autor original do DG, Daniel Barron, é americano, não acredito que ele tenha escrito errado! rsrsrs. :)

Até mais.

P.S.: Umá dúvida que me foi reportada: Para habilitar a filtragem de vírus é necessário aplicar o patch do AV (DGAV) que se encontra no site do Aecio f. Neto, em: http://www.harvest.com.br/asp/afn/dg.nsf

Obs.: Lá existe o patch e o tar.gz com o patch já aplicado. Para quem gosta de evitar stress, baixe o tar.gz completo.

[4] Comentário enviado por junior_87 em 17/01/2005 - 11:42h

Olá, estou tendo um erro na hora de rodar o make install eu uso uma distribuição pouco conhecida o trustix ver 2.0, vejam o erro que ocorre:
chmod u+wrx /var/log/dansguardian/
if [ -f /sbin/chkconfig ]; then /sbin/chkconfig --add dansguardian; fi
error reading information on service dansguardian: No such file or directory
make: *** [install] Error 1
Alguém pode me ajudar?

[5] Comentário enviado por flipe em 17/01/2005 - 12:20h

você disse que o squid não é 100% eficiente em fazer filtragem pq se o usuario colocar ao invés de '.zip' colocar '%122ip' ele fara o download normalmente....

o dansguardian consegui reconhecer essa diferença?

e outro coisa...

me parece, como tu mesmo disse, isso é para evitar que os própios usuarios destruam a rede :D, mas quantos 'usuarios' sabem que %122 na tabela ASCii é equivalente a letra 'z'.

contando o restante do artigo, excelente!!!

e ficarei no aguardo da outra parte do documento!!

parabéns!! :D

[6] Comentário enviado por allangood em 17/01/2005 - 12:38h

Obrigado pelo elogio flipe.
Respondendo: o DG verifica não só a URL (como o Squid e os redirecionadres, tipo o squidGuard) ele verifica o conteúdo (MIME inclusive). Por exemplo, se você falou que não pode baixar .ZIP e alguem renomear de .ZIP para .XXX ele verificará pela tipo do arquivo (quase como o comando file faz) e não apenas pelo seu nome.

Exatamente, filtros servem para proteger os usuários deles mesmos... O perigo não são os que não conhecem os segredos e artimanhas, o perigo são aqueles que sabem... A pior forma de segurança é a obscuridade (não revelar suas falhas), porque cedo ou tarde elas vão aparecer. Exemplo vivo disso é a própria MicroSoft... :) que joga seu lixo para debaixo do tapete.

Lembre-se que aprender é muito fácil. Um usuário quando quer alguma coisa... ele dá um jeito!

[7] Comentário enviado por ferreira.jorge em 17/01/2005 - 16:09h

Para quem quizer fazer download do dasnguardian, ele encontra-se em: http://dasnguardian.org e não em http://www.dasnguardian.org;

Belíssimo trabalho.

[8] Comentário enviado por pgdn em 18/01/2005 - 04:20h

Na verdade ele se encontra em www.dansguardian.org .... mais isso não é tão relevante em comparação com a ótima qualidade do artigo..

Parabéns

[9] Comentário enviado por thiagoabb em 18/01/2005 - 10:51h

HUIHAahuhAI.. muito legal cara...

parabens

[10] Comentário enviado por rogerjoi em 19/01/2005 - 12:18h

Olá,
Artigo muito bom !!!!
Já instalei na minha maquina de teste e ta funcionando perfeito !

Só tenho uma dúvida:
Instalei o DansG com o ClamAV, dai para fazer o teste fui no site http://www.trendmicro.com/en/security/test/overview.htm ele baixou o arquivo normalmente, mas se tentar baixar do site http://www.eicar.org/anti_virus_test_file.htm dai ele bloqueia o site certinho informando o virus Eicar - Testfile.

Aguem saberia me dizer pq ?

[11] Comentário enviado por johnhenrique em 22/01/2005 - 14:51h

Muito interessante, sou novato na área, mas da forma como foi muito bem explicado entendi legal. Apliquei e agora é só alegria.

[12] Comentário enviado por sk em 28/02/2005 - 21:52h

Para configurarar o dansguardian com o squid em modo transparente substitua a regra similar a esta : iptables -t nat -A PREROUTING -i eth1 -s 192.168.13.0/24 -d any/0 -p tcp --dport 80 -j REDIRECT --to 3128 ( eth1 é a iface da rede interna) por: iptables -t nat -A PREROUTING -i eth1 -s 192.168.13.0/24 -d any/0 -p tcp --dport 80 -j REDIRECT --to 8080

[13] Comentário enviado por reimassupilami em 10/03/2005 - 11:14h

cara, bom o artigo hein... esse dansguardian tem funcionalidade pra caramba... estou implementando aki aquele outro artigo seu sobre o p3scan, e em seguida vou partir pra esse aki...

me diga uma coisa, no artigo você não fala nada sobre a configuração do antivirus... pq?

[14] Comentário enviado por reimassupilami em 10/03/2005 - 11:33h

tive o mesmo problema que o junior_87:

if [ -f /sbin/chkconfig ]; then /sbin/chkconfig --add dansguardian; fi
error reading information on service dansguardian: No such file or directory
make: *** [install] Error 1

q será?

[15] Comentário enviado por allangood em 10/03/2005 - 14:59h

reimassupilami:
O junior_87 teve este problema por ter usado EXATAMENTE as mesmas configurações que eu postei aqui como exemplo. Este erro acontece na hora de instalar os scripts de inicialização (no arqtigo eu apontei para o /tmp) e isso eralmente gera erro, aponta pro /etc/rc.d/ ou /etc/init.d/ (depende da sua distro)

Eu não falei nada sobre o antivírus por não ter muita coisa a dizer. A configuração é super simples e os arquivos de configuração são auto-explicativos. A única diferença (real) é um parâmetro a mais no dansguardian.conf.

Mas está saindo uma nova versão do DG (2.9) com algumas funcionalidades a mais. Prometo que quando ela estiver pronta, faço um artigo mais detalhado Ok? Até mais.

[16] Comentário enviado por aura em 17/03/2005 - 21:59h

Olá
Artigo legal em...
Eu realizei a implementação do dansguardian, mas não estou conseguindo configurar uma maquina para fazer download...
Apenas consigo se coloco o ip da mesma no arquivo exceptioniplist.
mas desta forma estou liberando todo o acesso desta maquina para a internet.
Sabe como posso fazer isso?
Obrigado

[17] Comentário enviado por allangood em 18/03/2005 - 10:06h

O DG não implementa ACLs como o Squid... tratar este tipo de excessão é mais complicado. Você pode configurar grupos com configurações diferentes para resolver o seu problema. Tanto no artigo como nos arquivos de configuração do DG mostra como fazer isso. Procure por grupos ok?

Até mais.

[18] Comentário enviado por kakaroto em 14/06/2006 - 19:43h

Ola allangood,

Muito bom seu artigo, parabéns! instalei usando seu tutorial e funcionou perfeitamente soh estou com uma dúvida, em relação a configuração pelo que percebi o dansguardian para fazer um filtro mais minuscioso precisaria que meu squid fosse autenticado, ai fiz alguns teste no arquivo filtergroup coloquei o ip da minha maquina e o "perfil" filter2

192.168.1.167=filter2

aparentemente funcionou, agora para o dansguardian me atender com completo queria saber se dah para fazer por rede tipo

192.168.1.0/24=filter2

obrigado e parabens pelo artigo :)

[19] Comentário enviado por allangood em 15/06/2006 - 02:08h

Olá kakaroto, a versão "stable" do DG (2.8) não implementa isso, mas se quiser ver um monte de funcionalidades novas (a que procura inclusive) baixe a versão "alpha" mais nova em http://www.dansguardian.org

Até mais.

[20] Comentário enviado por rilen em 07/07/2006 - 15:25h

Qual a melhor solução usando Squid com DG, caso o usuário venha baixar músicas ou programas, que seja mostrada a autenticação para prosseguir download.

Foi aplicados vários filtros (1 = Enxuto sem downloads; 2 = Enxuto com downloads de documentos; 3 = Enxuto com downloads; 4 = liberado), o DG demonstrou sua eficiência e versatilidade, porém penou ao descobrir que tinha que instalar XForward para que os dois (Squid e DG) possa tornar se em "uma carne só"!

Mesmo configurado XForward, o Squid somente trabalha na rede "localhost", dando mais resultados negativo sobre autenticação por downloads e também foi dificultado fazer controle por banda, afinal de contas, como vai limitar vários ip's se o Squid só existe um "localhost"?

Tenho esperança pela luz há bastante tempo, abraços galera!

[21] Comentário enviado por allangood em 07/07/2006 - 15:58h

Hehehe... legal essa de "uma carne só"...

Bem, com patch xff o Squid reconhece o endereço do usuário e não mais "localhost". Para isso, seu DG deve habilitar o envio do x-forwarded-for, verifique dentro do arquivo de configurações ok?

Dentro do dansguardian.conf coloque "forwardedfor = on". Se o patch tiver sido aplicado de forma correta, o Squid irá funcionar exatamente como você espera!

Até mais.

[22] Comentário enviado por freitasrdf em 11/08/2006 - 15:03h

O dansguardian não esta identificando os usuarios como eu resolvo isso??
Obs.: O programa é excelente, só tive que fazer uma alteraçoes para rodar no Mandriva ( '-user-' )

[23] Comentário enviado por allangood em 11/08/2006 - 15:27h

Olá Freitasrdf, bem... com estas informações, o máximo que posso te responder é isso:

1) O squid é responsável pela autenticação, verifique se ele está corretamente configurado.

2) Verifique se o dansguardian está com o plugin de autenticação correto (basic na versão 2.8.x).

Até mais.

[24] Comentário enviado por freitasrdf em 14/08/2006 - 13:58h

A versão do meu DG é 2.8. Meu SQUID está autenticando via PAM_AUTH, o plugin é o basic mesmo??

[25] Comentário enviado por freitasrdf em 16/08/2006 - 16:40h

Ai esquece, foi orelhada minha, meu localhost estava sem autenticação, eu mudei a config... :)
http_access allow localhost auth

[26] Comentário enviado por memaster em 21/08/2006 - 23:42h

Opa seu artigo ficou realmente bom, mais estou com um problema de novato na área q naum consigo destrinxar... olha soh, estou testando o Squid+DG+CLamav no slack 10.2 com kernel 2.4.31, o porem eh que quando vou acessar uma página ele me retorna a página de teste do apache... (putz q mico) bom sei que eh rateio meu, pois quando naum se acha em lugar algum como resolver um erro, tem-se 2 motivos ou o erro eh muito dificil de ser contornado, ou eh taum babaca q ninguem tem corajem de perguntar e acaba resolvendo de cabeça fria.... hehe, mais como ainda naum tive sucesso e eh minha primeira implementação tando de squid quando de DG, decidi dar a cara a tapas e perguntar... alguem sabe o pq disso???

[27] Comentário enviado por freitasrdf em 23/08/2006 - 10:43h

Voce esta direcionando a pagina de erro do dansguardian, para a do apache, esta pagina que normalmente fica em ../dansguardian/languages/Portuguese/template, mexe la no dansguardian.conf procure esta opção ela deve estar apontando para o seu ip ou o localhost

[28] Comentário enviado por jgama em 28/08/2006 - 23:19h

olá galera, realmente o artigo foi muito bem feito, mas como ainda sou inexperiente, e cada dia procuro melhorar o meu aprendizado, regarcei as mangas.

Tenho um problema

Quando starto o squid não aparece nenhuma menssagem de erro no console, mas também não estarta, verificando nos log, tem este erro:

2006/08/28 23:11:55| WARNING: basicauthenticator #2 (FD 13) exited
2006/08/28 23:11:55| Too few basicauthenticator processes are running
2006/08/28 23:11:55| storeDirWriteCleanLogs: Starting...
2006/08/28 23:11:55| Finished. Wrote 0 entries.
2006/08/28 23:11:55| Took 0.0 seconds ( 0.0 entries/sec).
FATAL: The basicauthenticator helpers are crashing too rapidly, need help!

Squid Cache (Version 2.5.STABLE14): Terminated abnormally.
CPU Usage: 0.080 seconds = 0.060 user + 0.020 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 408
Memory usage for squid via mallinfo():
total space in arena: 2125 KB
Ordinary blocks: 2093 KB 5 blks
Small blocks: 0 KB 0 blks
Holding blocks: 200 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 32 KB
Total in use: 2293 KB 108%
Total free: 32 KB 2%
unknown helper protocol []

Valid helper protools:

squid-2.4-basic
squid-2.5-basic
squid-2.5-ntlmssp
ntlmssp-client-1
gss-spnego
gss-spnego-client
ntlm-server-1
unknown helper protocol []

Valid helper protools:

squid-2.4-basic
squid-2.5-basic
squid-2.5-ntlmssp
ntlmssp-client-1
gss-spnego
gss-spnego-client
ntlm-server-1

Estou usando auteticação com protocolo ntlm_auth

Bom que puder ajudar a resolver o problema ficarei muito grato.

Uso Slack 10.2

Abraço:


[29] Comentário enviado por freitasrdf em 29/08/2006 - 08:24h

Bem quanto ao /etc/dansguardian voce deveria compilar com isso aqui --sysconfdir=/etc/dansguardian/
E sobre o NTLM_auth, parece estar faltando este modulo no squid, ele devera estar em /etc/squid/ntlm_auth
É o que eu posso dizer sem ver seu squid.conf.

[30] Comentário enviado por leoberbert em 06/09/2006 - 09:14h

Estou com alguns problemas no meu DANSGUARDIAN aqui, vê se pode me ajudar.. segui todos seus passos mais com alguns dados diferentes:

No meu squid.conf
Ao invés de http_port 127.0.0.1:3128 está http_port 192.168.0.254:3128

O parâmetros mais importantes são (dansguardian.conf):

* filterport = 80
* proxyip = 192.168.0.254
* proxyport = 3128

O meu está desta forma, se puder me ajudar fico agradecido, ele está rodando numa boa, sem erros, mais não faz nada hehe.. Se puder ajudar, fico agradecido.

MSN: leoberbert@linuxmail.org

Abraço!

[31] Comentário enviado por jgama em 10/09/2006 - 18:27h

Olá leobertbert
se cv deixa assim:
No meu squid.conf
http_port 127.0.0.1:3128

No dansguardian deixa assim

* filterport = 8080
* proxyip = 127.0.0.1
* proxyport = 3128


nas estações configura o proxy para pegar o IP so seu server. 192.168.0.254 porta 8080

Vai resolver.

Abraço

[32] Comentário enviado por brunosalmito em 15/05/2007 - 14:11h

Tá ai gostei, vai pros meus fav :0

[33] Comentário enviado por kenshisk em 31/05/2007 - 14:27h

Não testei ainda mais achei muito bom seu artigo, muito bem explicado está de parabéns este concerteza vai para os meus favoritos. :-)

[34] Comentário enviado por b2-spirit em 23/07/2007 - 16:56h

Na parte dos filtergroupslist eu poderia usar este recurso para bloquear o acesso ao MSN para um determinado grupo e deixar livre para todo o resto.

Desde já agradeço.

[35] Comentário enviado por allangood em 23/07/2007 - 17:07h

Sim, os grupos podem ser definidos para qualquer fim. Basta criar as categorias e associar as listas.

Até mais.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts