Passei um tempo pesquisando esse tópico e não consigo encontrar uma resposta exata, por isso estou bastante confiante de que não é uma duplicata e, embora minha pergunta seja baseada em uma necessidade de segurança, acho que ainda é seguro pergunte aqui, mas deixe-me saber se eu preciso movê-lo para a comunidade de segurança.
Essencialmente, as consultas DNS usam TCP (se sim, qual cenário isso pode ocorrer)? Mais uma vez, estou falando apenas de consultas. É possível que eles viajem pelo TCP? Se os domínios tiverem apenas no máximo 253 bytes de comprimento e os pacotes UDP puderem ter até 512 bytes, as consultas sempre serão exibidas como UDP? Não achei que uma consulta resolvível pudesse ser grande o suficiente para exigir o uso do TCP. Se um servidor DNS recebesse uma solicitação para um domínio maior que 253 bytes, o servidor eliminaria / não tentaria resolvê-lo? Estou certo de que fiz algumas suposições falsas aqui.
Para algum contexto, estou trabalhando com o grupo de segurança para integrar consultas DNS em sua ferramenta de monitoramento de segurança e, por vários motivos, decidimos capturar esse tráfego via captura de pacote padrão em servidores DNS e controladores de domínio. O principal requisito é capturar todas as consultas DNS para que eles possam identificar qual cliente tentou resolver qualquer domínio. Com base nesse requisito, não estamos preocupados em capturar respostas DNS ou outro tráfego, como transferências de zona, o que também é motivado pelo fato de que precisamos limitar o volume de log o máximo possível. Assim, planejamos capturar apenas consultas DNS destinadas ao servidor DNS e enviadas por UDP. Para mais contexto (tipo de escopo de pergunta que se arrasta aqui), agora foi levantado que podemos precisar expandir a segurança ' s visibilidade para que eles possam monitorar atividades como canais secretos em execução no DNS (que também apresentariam a necessidade de capturar respostas DNS e, posteriormente, o tráfego TCP). Mas, mesmo nesse tipo de cenário, pensei que qualquer tráfego DNS de saída teria a forma de pesquisas / consultas, e que eles sempre seriam sobre UDP, mesmo que de uma fonte maliciosa (por causa do meu raciocínio no primeiro parágrafo). Portanto, isso traz algumas perguntas adicionais:
No mínimo, não estaríamos capturando metade da conversa com a abordagem que descrevi? Ou um cliente enviaria tráfego DNS que não está na forma de uma consulta? (talvez como algum tipo de resposta à resposta de um servidor DNS e talvez acabe saindo pelo TCP)
As consultas DNS podem ser modificadas para usar o TCP? Um servidor DNS aceitaria e responderia a uma consulta DNS vinda do TCP?
Não tenho certeza se é relevante, mas limitamos as solicitações de DNS a servidores DNS autorizados e bloqueamos todo o tráfego de saída pela porta 53. Sou definitivamente um novato, então, desculpe se minha pergunta não é compatível e avise-me. como eu deveria modificar.
fonte
Respostas:
As consultas DNS normais usam a porta UDP 53, mas as consultas mais longas (> 512 octetos) receberão uma resposta 'truncada', que resulta em uma conversa TCP 53 para facilitar o envio / recebimento de toda a consulta. Além disso, o servidor DNS se liga à porta 53, mas a própria consulta se origina em uma porta de número alto aleatória (49152 ou superior) enviada à porta 53. A resposta será retornada para essa mesma porta da porta 53.
Portas de rede usadas pelo DNS | Docs da Microsoft
Portanto, se você estiver planejando fazer uma espionagem de segurança nas consultas DNS da sua rede, precisará levar isso em consideração.
Quanto ao tráfego sem pesquisa, considere que o DNS também usa transferências de zona (tipo de consulta AXFR) para atualizar outros servidores DNS com novos registros. Um homem no ataque do meio pode começar com essa transferência, executando DDOS em um servidor de nomes Primário, para que fique muito ocupado para responder a um Secundário solicitando registros atualizados. O hacker então falsifica o mesmo Primário para alimentar registros 'envenenados' para o Secundário, que redireciona domínios DNS populares para hosts comprometidos.
Portanto, sua auditoria de segurança deve prestar muita atenção ao tipo de consulta AXFR, e seus sistemas DNS devem aceitar apenas trocas AXFR de endereços IP específicos.
Instituto SANS InfoSec - Sala de Leitura | sans.org
fonte
Isso começou como um comentário à resposta de George, mas demorou muito. O quadro geral é um pouco complicado, pois requer a compreensão de um pouco de história.
O RFC 1035 originalmente exigia um limite de 512 bytes para evitar a fragmentação do UDP. Os datagramas UDP fragmentados e o TCP foram escolhidos como as opções de último recurso, a fim de minimizar a sobrecarga das transações DNS. As transferências de zona sempre usam TCP, devido a transferências de zona que ocupam> 512 bytes por natureza. (seria um desperdício de largura de banda começar com o UDP)
A nova tentativa de TCP no truncamento é amplamente suportada, pois foi especificada na RFC 1123 desde 1989.
O EDNS (0) é definido pela RFC 6891 (2013) e, antes disso, existia como uma Norma proposta desde 1999 . Ele define um mecanismo no qual clientes e servidores podem negociar tamanhos de UDP maiores que 512. Devido à novidade do EDNS (0), muitos dispositivos de hardware fazem suposições sobre a estrutura dos pacotes DNS que fazem com que os pacotes compatíveis sejam descartados. O motivo mais frequente é a suposição de que mensagens DNS com mais de 512 bytes são inválidas, mas essa é uma dentre várias.
Se dividirmos isso nos comportamentos observados:
Você também deve ter em mente que o RFC 7766 permite a reutilização de conexão pelo TCP , e é possível encontrar um pipeline de consulta sobre o TCP em estado selvagem. Algumas ferramentas não detectam consultas DNS além da primeira vista em uma sessão TCP, sendo o dnscap um exemplo disso.
fonte
Não é RFC 7766, Transporte DNS sobre TCP - requisitos de implementação .
fonte
INTERNET STANDARD
RFC é tools.ietf.org/html/rfc1034 . Você está citando aPROPOSED STANDARD
para exigir TCP.Você não deve filtrar o TCP / 53 em nenhuma direção. Por exemplo, as
nsupdate
consultas podem usar o TCP assim que a solicitação for muito grande (o que pode acontecer rapidamente). Portanto, você deve permitir que o UDP e o TCP da porta 53 (no IPv4 e V6!) Fluam em todas as direções.Além disso, há cada vez mais trabalho para o DNS sobre TLS, portanto, o TCP será necessário nas duas direções. Veja RFC7858.
fonte