Bom dia a todos,
Recentemente vi um artigo que decompunha efetivamente o consumo de banda na utilização de internet em uma empresa.
Numa empresa onde os dados (e as páginas) não estão barrados administrativamente, o consumo de banda por anúncios, entre os quais popups que escapam ao ad-blocker e page embebbed ads anda pelos 17%.
Não é muito, mas se formos a ver o custo de uma ligação empresarial a 100mbits simétrica (+-200€/mês) o valor de desperdício são €34.
Ao fim de um ano, são €408 o que significa que dois meses de mensalidade foram para utilização sem retorno de publicidade de terceiros.
É um problema bem real, com que muitas empresas se deparam, por ter precisamente alto custo de banda, ou mesmo custo acrescido por pagar tráfego.
Existe equipamento dedicado para combater o flagelo, e aplicações para tal (por exemplo o dansguardian).
Desnecessário será dizer que ambos aumentam o custo de gestão da infra-esturtura (seja por custa dinheiro comprar equipamento dedicado, seja porque custa dinheiro em infra-esturtura montar uma VPS para correr o dansguardian).
Existe no entanto uma terceira hipótese, utilizando para tal o nosso IDM/IPA que já temos em funcionamento e em produção.
Para tal, será necessário efetuar uma simples alteração que é o que descrevo neste post.
Em primeiro lugar, será necessário criar uma zona dummy dentro do named que serve ao IDM:
#vi /var/named/null.zone.file
$TTL 86400
@ IN SOA dns01.net.xpto. hostmaster.net.xpto. (
2016010100 ; serial
21600 ; refresh after 6 hours
3600 ; retry after 1 hour
604800 ; expire after 1 week
86400 ) ; minimum TTL of 1 day
IN NS dns01.net.xpto.
@ IN A 172.16.0.148
* IN A 172.16.0.148
Nota: o 172.16.0.148 é o IP do meu servidor web de perímetro que irá servir gif’s transparentes de forma a não distorcer as páginas.
Em seguida, será necessário descarregar uma backlist de URL’s que contenham anúncios a bloquear:
#mkdir -p /var/named/blacklists
#wget -O /var/named/blacklists/ads ‘http://pgl.yoyo.org/adservers/serverlist.php?hostformat=bindconfig&showintro=0&mimetype=plaintext’
Nota: Para administradores da velha guarda recomendo verem o url http://pgl.yoyo.org. Vai vos por um sorriso na cara 🙂
Em seguida, iremos configurar no nosso servidor web de perímetro um dummy site que redirecte para um gif transparente de forma a não causar disrupção na pagina apresentada quando os anúncios forem filtrados do site:
<FilesMatch “a.gif$”>
Header set Cache-Control “max-age=290304000, public”
</FilesMatch>
<Location />
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ http://null.net.xpto/null.gif
</Location>
No meu caso, como utilizo extensivamente vhosts tenho algo como:
# cat /etc/apache2/vhosts.d/1www.conf
ServerTokens ProductOnly
ServerSignature Off
<VirtualHost *:80>
ServerName site.com
DocumentRoot /mnt/netcore/appz/site.com
Options +Indexes
<FilesMatch “a.gif$”>
Header set Cache-Control “max-age=290304000, public”
</FilesMatch>
<Location />
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ http://null.net.xpto/a.gif
</Location>
</VirtualHost>
Finalmente e após efetuarmos reload ao nosso apache (validaram se o fqdn para onde estão a fazer o redirect existe?) chegou á parte de configurar o nosso IDM, incluindo no ficheiro /etc/named.conf a seguinte linha:
include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;
include “/var/named/blacklists/ads”;
E em seguida fazer reload a stack do nosso IDM:
# ipactl restart
Restarting Directory Service
Restarting krb5kdc Service
Restarting kadmin Service
Restarting named Service
Restarting ipa_memcached Service
Restarting httpd Service
Restarting pki-tomcatd Service
Restarting ipa-otpd Service
ipa: INFO: The ipactl command was successful
Nota: Embora o restart a stack inteira do IPA/IDM (que causa indisponibilidade no servico de autenticação neste node) não fosse necessária gosto de a efetuar de forma a garantir que nada ficou fora do sitio.
É possível fazer restart com um simples # systemctl restart named
Concluindo, com esta simples configuração ao nível do DNS do IDM/IPA, consegue-se um filtro extremamente potente e rápido para ad’s.
Lembrem-se no entanto, que existem muitos sites com conteúdos que nos interessam que dependem diretamente de receitas de publicidade ou de patrocínios (como este blog).
Usem a receita com moderação. Os patrocinados agradecem. 🙂
Como sempre se tiverem duvidas e reparos, podem-me contactar através do email nuno at nuneshiggs.com.
Até a próxima. Um Abraço.
Nuno
Referencias deste post:
https://docs.fedoraproject.org/en-US/Fedora/18/html/FreeIPA_Guide/Working_with_DNS.html
https://deviantengineer.com/2016/01/bind-centos7/
http://pgl.yoyo.org/adservers/