Ataques de DRDoS explorando servidores DNS recursivos abertos

Ataque

No caso do DNS, o risco de ataque está em servidores DNS recursivos, quando é permitido que qualquer máquina na Internet realize consultas a estes servidores. Quando há servidores DNS recursivos abertos a consultas para toda a Internet, atacantes podem realizar consultas forjadas, geralmente a domínios falsos publicados pelo próprio atacante, tendo como endereço IP de origem o endereço IP da vítima. Desta forma, os atacantes podem fazer com que as respostas das consultas, que geram um grande volume de dados, sejam todas redirecionadas à máquina vítima do ataque.

Solução

Para prevenir que os servidores DNS em sua rede estejam vulneráveis a ataques de DRDoS, é necessário restringir a realização de consultas recursivas apenas à maquinas dentro da sua rede. Em servidores Linux rodando Bind9, isto pode ser feito de duas maneiras:

Executando os servidores DNS autoritativo e recursivo em uma mesma máquina, utilizando views – um exemplo de configuração para este caso é mostrado abaixo( arquivo named.conf):

// lista de redes ou maquinas que podem fazer consultas recursivas
acl clientes {
        localhost;
        192.0.2.64/26;
        192.0.2.192/28;
};

// definicao da view interna -- deve vir antes da view externa
// esta view permite recursao para as redes da acl clientes
view "interna" {
        match-clients { clientes; };
        recursion yes;

        // dentro desta view sao colocadas as zonas padrao:
        // ".", localhost, etc, e qualquer outra zona que
        // seja somente interna para a rede em questao
};

// definicao da view externa -- deve ser a ultima view definida
// esta view permite consultas de qualquer rede, mas nao permite
// consultas recursivas
view "externa" {
        match-clients { any; };
        recursion no;
        additional-from-auth no;
        additional-from-cache no;

        // aqui sao colocadas as zonas master
        //
        // zone "exemplo.com.br" {
        //       type master;
        //       file "master/exemplo.com.br";
        // };

        // aqui sao colocadas as zonas slave
        //
        // zone "exemplo.net.br" {
        //       type slave;
        //       file "slave/exemplo.net.br";
        //       masters { 192.0.2.1; [...;] };
        // };
};

Executando os servidores DNS autoritativo e recursivo em máquinas distintas – um exemplo de configuração para este caso é mostrado abaixo (arquivo named.conf):

		// adicionar as diretivas abaixo dentro da clausula options
		// para desabilitar recursao no servidor autoritativo
		options {
		        recursion no;
		        additional-from-auth no;
		        additional-from-cache no;
		};
		
		// colocar a seguinte diretiva na clausula options
		// permitindo recursao
		// IMPORTANTE: Esta opcao deve ser usada em conjunto com
		// regras de firewall ou ACL no serviço conforme mostrado na VIEW (Interna)
		options {
		        recursion yes;
		};