DNS pesquisando com curingas?

8

Algo como nslookupou digoferecer a capacidade de pesquisar com base em algo contido no nome ... como uma pesquisa curinga ou algo assim?

Estou tentando criar um pequeno script com um wrapper de GUI para nossa equipe de helpdesk. Idealmente, gostaria que eles pudessem pesquisar o sobrenome do usuário (algo que está sempre presente no registro DNS) e, em seguida, preencherei um menu suspenso com as opções possíveis para você escolher.

Não consigo encontrar uma maneira de obter efetivamente o equivalente a nslookup *miller*... seria ótimo voltar

Name: sf-jacobmiller.localdomain.com
Address: 10.10.10.121

Name: sf-justinmiller.localdomain.com
Address: 10.10.10.144

..que eu poderia analisar em um menu suspenso para eles escolherem.

Ainda não examinei o que está disponível com o ldapsearchqual posso fazer o que estou procurando. Meu único requisito é que isso seja incorporado ao OSX e não precise instalar mais nada; caso contrário, estou aberto a quaisquer soluções que você possa oferecer. obrigado

TryTryAgain
fonte

Respostas:

11

Você pode obter uma lista completa de entradas em uma zona com uma transferência de zona; você precisaria permitir isso para sistemas autorizados no seu servidor DNS.

Feito isso, você pode executar a transferência e saudar o resultado:

dig axfr localdomain.com | grep -i miller
Shane Madden
fonte
Tão fácil e direto quanto eu poderia ter esperado. Obrigado
TryTryAgain
Gostaria de editar sua resposta para incluir grep -ipara não diferenciar maiúsculas de minúsculas, caso contrário, percebi que maiúsculas e minúsculas causariam muitos problemas. Não posso fazer uma edição tão pequena, no entanto. Mais uma vez obrigado por uma solução tão elegante, exatamente o que eu estava procurando.
TryTryAgain
6

Por padrão, um servidor de nomes não permite pesquisar uma zona ou consultar em que zonas ele é autoritário. Além do motivo óbvio de reduzir os vetores de ataque (você não pode fazer uma solicitação HTTP / 1.1 para um host se não souber o nome), há uma boa razão para isso: uma zona pode conter curingas propriamente ditos. para todo host nessa zona é como dividir por zero.

Se você operar o servidor de nomes cujos registros você deseja pesquisar, poderá fazer uma transferência de zona para um servidor de nomes local e pesquisar diretamente os registros. Você ainda precisará analisar os registros de texto em qualquer formato em que sejam transferidos, pois um servidor de nomes local não responderá de maneira diferente.

dartonw
fonte
6

Você só pode perguntar a um servidor DNS se ele tiver um registro específico. Portanto, não haverá tal ferramenta para o DNS.

Editar

O zonetransfer é obviamente uma possibilidade, se estiver disponível.

Christopher Perrin
fonte
Parece que você provou que estava errado, como eu esperava.
TryTryAgain
3
@TryTryAgain Na verdade, no caso geral, ele é totalmente correcta: Observe as palavras-chave na resposta que você aceite: need to allow this for authorized systems in your DNS server. Por exemplo, se você tentar uma transferência de zona serverfault.com(ou praticamente qualquer zona que você não controla ou para a qual você não fez acordos com os administradores do DNS), não obterá resultados.
voretaq7
4
@TryTryAgain O fraseado também parece um pouco rude. Se a resposta fosse tão óbvia quanto você está fazendo parecer, você não precisaria postar a pergunta. Estamos todos aqui para ajudar um ao outro ... normalmente.
Andrew B
1

Concordando com a resposta verificada, pensei que um loop for poderia ser uma alternativa para alguém que não está autorizado a fazer uma transferência de zona. Se você conhece o intervalo de IPs:

name="mthebeau"
net="123.45.67."
for ip in $( seq 1 255 ); do {
    sleep 1; # be kind to the server, unauthorized user
    text="$( nslookup $net$ip 2>&1 | grep "$name" )";
    if [ -z "$text" ]; then continue; fi;
    echo "$text";
}; do

Procurei esta resposta porque queria abrir minha área de trabalho para um usuário local cujo nome de máquina e IP não sabia.

user456228
fonte