Configurando o DNS do IPA/IDM para reduzir custos de operação de Infra-estrutura.

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/