Redes de Computadores possuem componentes que devem ser arquitetados com cuidado levando em consideração vários pontos como segurança de acesso, visibilidade, etc. O DNS é um protocolo cuja implementação pode abranger varios servidores em ambientes diferentes, com maior ou menor nível de segurança. Com essa capilaridade de ambientes, o conceito de segurança às vezes se perde ou simplesmente deixa de existir. Tal fato origina não só vulnerabilidades, mas falhas humanas que geralmente são atribuidas erroneamente a componentes nas camadas mais altas da rede.
O DNS também oferece uma vasta biblioteca de componentes que visam limitar o que o mundo externo pode fazer com ele. Um desses componentes é o TSIG. O TSIG faz uso de chaves criptografadas entre dois servidores e/ou clientes para garantir que somente o conhecedor da chave de TSIG possa realizar interações com o servidor de DNS.
Um dos recursos do DNS que pode utilizar TSIG é o mecanismo de transferência de zonas. Transferência de Zona é o processo pelo qual um servidor secundário (ou slave) “puxa” os registros do servidor master, replicando assim atualizações como adição e remoção de registros entre diversos nameservers, sem que o administrador tenha que realizar multiplas alterações em mais de um servidor. Este mecanismo é amplamente utilizado e muitas vezes, de forma pouco segura. Permitir Zone Transfers sem exceções ou de forma pouco limitada pode permitir que alguém mal intencionado tenha acesso a todo o conteúdo da zona, podendo criar um servidor de DNS falso (também conhecido como Rogue Server), facilitando assim o hijack do DNS e, um pouco mais a frente, ataques de phishing.
Neste artigo, vamos demonstrar como criar as chaves de TSIG e usá-las para assegurar transferências de zona entre um DNS Infoblox e um DNS Bind. Vamos começar pelo Infoblox.
Para realizar a configuração, efetue login no Infoblox e navegue até Data Management > DNS
Localize e clique no botão “Grid DNS Properties” na Toolbar (Lado Direito)
Selecione a Aba Lateral “Zone Transfers”
No contexto da tela, selecione a opção “Set of ACEs”
Clique no botão e selecione a opção TSIG Key
No menu “Add Tsig Key”, adicione ao campo Key Name um nome para identificar a chave.
Em Key Algorithm, selecionamos o algoritmo de criptografia utilizado para codificar a chave TSIG. Podemos escolher entre HMAC-MD5 e HMAC-SHA256. Vamos utilizar a HMAC-MD5, selecionando-a na lista suspensa.
Com o Algoritmo desejado selecionado, clique em Generate Key Data. O Infoblox realizará a geração de uma chave automaticamente, conforme exibido abaixo. Clique em Add ao finalizar.
Verifique a configuração e clique em Save & Close para salvá-la.
Em seguida, vamos efetuar o restart do serviço no Infoblox.
Agora vamos dizer ao slave que realize Zone Transfers utilizando a chave criada. Para isso:
No diretório do Bind, crie um arquivo com o nome zt-tsig.key.
Edite-o com a configuração abaixo. Dica, mantenha a identação para facilitar a interpretação do arquivo.
key "zt-tsig.key" {
algorithm hmac-md5;
secret "jnXdKbIdUi7XcbgN2mmODw==";
};
# IP do Servidor Master
server 10.2.61.100 {
keys { zt-tsig.key; };
};
Para finalizar a configuração, é necessário mencionar esta chave de TSIG no arquivo de configuração do BIND. Ainda no diretório do BIND. Inclua no arquivo a seguinte linha
Include /etc/bind/zt-tsig.key”;
Reinicie o serviço do BIND após concluir as alterações.
Vamos inserir um registro de teste para que o Infoblox envie uma mensagem de Notify ao slave e este, por sua vez tente realizar uma transferência de zona.
Feito isso, vamos analisar os logs do Infoblox para ver a interação entre os dois nameservers.
Para realizar um double check e verificar que a transferência foi realizada, vamos tentar resolver o novo registro transferido ao DNS Slave.
Agora, vamos checar da parte insegura da rede. De um cliente qualquer da rede, vamos tentar realizar a transferência de zona sem a chave TSIG.
Note que realizamos a configuração no nível do Grid. Com isso, todas as zonas de DNS agora estão utilizando chaves de TSIG para realizar transferências de zona. Ainda é possível configurar chaves de TSIG no nível do membro e da zona, para uma configuração mais específica.
A configuração de chaves TSIG aumenta a segurança e o controle do DNS. Como boa prática, utilize chaves diferentes para cada transação (uma pra zone transfer, outra para queries, outra para atualizações dinâmicas, etc.) Fazer isso garante maior proteção para cada chave, evitando que ela se propague pelo ambiente. Note que, apesar do acréscimo considerável de segurança com o uso de chaves de TSIG, os dados do DNS (registros) não são criptografados durante a transferência. Cuide também para que o acesso administrativo aos servidores slave tenha uma policy bem definida e uma estrutura aceitável de logging. Garantir a segurança dos serviços básicos da rede é acrescentar confiabilidade e resistência ao ambiente. Até o próximo artigo.