Pesquisas reversas de DNS

13

Manhã,

Recebi um domínio com registros DNS c.150k em um total de 100k máquinas. Os registros DNS estão todos em uma única zona de pesquisa direta no mesmo domínio e, para ajudar, não há zona de pesquisa inversa.

Como Eliminar e Envelhecer não é uma opção (apenas a minha sorte!), Preciso encontrar uma maneira fácil de eliminar uma carga de registros antigos.

O ponto de partida mais simples para mim foi procurar excluir todos os registros com registro de data e hora mais antigos que um ano (aproximadamente 2700 registros) - mas alguns deles ainda estão respondendo ao ping.

As probabilidades são de que isso ocorre porque usamos DHCP e os IPs foram dados a novos hosts.

Normalmente, um zoen de pesquisa inversa seria muito útil agora para que eu pudesse procurar vários registros de um IP, mas como eu disse antes - não há um.

Alguém sabe de antemão uma maneira simples de procurar duplicatas? Eu considerei uma exportação completa para DNS do CSV e comecei a classificar e filtrar, mas por mais de 2k registros, eu esperava algo um pouco mais fácil.

Além disso, devido à natureza de baixa qualidade de alguns dos kits que executamos, apenas excluir os registros e permitir que um novo registro ocorra não é uma opção!

Pensamentos ?

EDIT: nem todas as máquinas estão associadas ao AD, portanto, uma comparação AD / DNS está fora de questão.

EDIT 2: Upvotes durante todo o jogo, algumas sugestões muito boas aqui! Já iniciei o trabalho de exportação e comapres no Excel, fiz um ping para cada IP / host em andamento registrando em um arquivo de teste para ver o que é e o que não é real e estou aguardando a aprovação da alteração para uma captura de pacote para iniciar o monitoramento em tempo real. Esses scripts também são úteis e, embora eu não os utilize no formato atual, eles me deram uma boa base para criar minhas próprias coisas. Obrigado a todos!

Fazer87
fonte

Respostas:

8

Se você pode exportar como um CSV e importar para o Excel, pode usar a formatação condicional para gerar uma lista de duplicatas?

http://www.tech-recipes.com/rx/35290/excel-2013-find-duplicate-data-using-conditional-formatting/

Rhys Evans
fonte
4
Por favor, não use links para soluções. Fornecer a solução na resposta mantém a resposta melhor porque os links podem ficar ruins.
Paul
3
Para esclarecer o que o @Paul diz, é claro que os links são desejados, mas não apenas os links. Portanto, mantenha o link na resposta, mas adicione o que está escrito em seu destino.
glglgl
Justo! Fará no futuro.
Rhys Evans
6

Eu usaria o nmap para verificar todos os seus hosts ativos, o que deve limpar o restante dos registros mortos para você. Eu recomendaria fortemente a limpeza deste ponto em diante. Parece divertido embora :)

Optichip
fonte
Isso funcionaria se os hosts estivessem sempre ativos. Se as máquinas também são laptops, alguns (ou muito, depende da atividade) podem se perder.
woj
4

Aqui estão dois scripts (que são quase idênticos) - um para encontrar IP duplicado e outro para encontrar nomes duplicados.

#region Find duplicate name in dns records
$DupNames = Get-WmiObject -ComputerName 'dc2008' `
   -Namespace 'root\MicrosoftDNS' `
   -Class MicrosoftDNS_AType `
   -Filter "ContainerName='yadsarah.org.il'" | Select-Object RecordData, TimeStamp, OwnerName | `
Group-Object OwnerName | Where-Object {$_.Count -gt 1}

$DupNamesArr = @()
foreach ($RecordGroup in $DupNames) {
    foreach ($Record in $RecordGroup.Group) {
        $RecordObj = New-Object System.Object
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $Record.OwnerName
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'IPAddress' -Value $Record.RecordData
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'TimeStamp' -Value $Record.TimeStamp
        $DupNamesArr += $RecordObj
    }
}
#endregion

#region Find duplicate IP in dns records
$DupIPs = Get-WmiObject -ComputerName 'dc2008' `
   -Namespace 'root\MicrosoftDNS' `
   -Class MicrosoftDNS_AType `
   -Filter "ContainerName='yadsarah.org.il'" | Select-Object RecordData, TimeStamp, OwnerName | `
Group-Object RecordData | ?{$_.Count -gt 1}

$DupIPArr = @()
foreach ($RecordGroup in $DupIPs) {
    foreach ($Record in $RecordGroup.Group) {

        $RecordObj = New-Object System.Object
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'Name' -Value $Record.OwnerName
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'IPAddress' -Value $Record.RecordData
        $RecordObj | Add-Member -MemberType NoteProperty -Name 'TimeStamp' -Value $Record.TimeStamp
        $DupIPArr += $RecordObj
    }
}
#endregion

Notas:

  1. Alguns sistemas (como o balanceamento de carga) exigem alguns registros duplicados para funcionar corretamente.

  2. Você pode adicionar o nome e o IP do computador usando o WMI, verificando o registro.

  3. Os registros com registro de data e hora 0 são estáticos, o que significa que foram adicionados manualmente (e é mais provável que sejam importantes).

EliadTech
fonte
2

Talvez você possa registrar todas as solicitações de DNS da vida real por um período de tempo suficientemente longo (isso pode levar vários meses, se você quiser capturar o script de estatísticas uma vez por quarto-consulta-todas-impressoras-páginas-páginas). Em seguida, exclua todos os registros nunca solicitados.

Hagen von Eitzen
fonte