CENÁRIO
Para simplificar isso, é o exemplo mais fácil:
Eu tenho um controlador de domínio padrão do Windows 2008 R2 com a função de servidor DHCP. Ele distribui IPs através de vários escopos IPv4, não há problema.
O QUE EU GOSTARIA
Eu gostaria de uma maneira de criar uma entrada de notificação / log de eventos / semelhante sempre que um dispositivo recebe uma concessão de endereço DHCP e esse dispositivo NÃO é um computador ingressado no domínio no Active Directory. Não importa se é Powershell personalizado, etc.
Conclusão = gostaria de saber quando dispositivos que não são de domínio estão na rede sem usar o 802.1X no momento. Eu sei que isso não será responsável por dispositivos IP estáticos. Eu tenho um software de monitoramento que irá verificar a rede e encontrar dispositivos, mas não é tão granular em detalhes.
PESQUISA REALIZADA / OPÇÕES CONSIDERADAS
Não vejo tais possibilidades com o registro incorporado.
Sim, eu conheço o 802.1X e tenho a capacidade de implementá-lo a longo prazo neste local, mas ainda estamos longe de um projeto como esse e, embora isso resolvesse problemas de autenticação de rede, isso ainda é útil para mim fora de objetivos 802.1X.
Procurei alguns bits de script etc. que podem ser úteis, mas as coisas que estou encontrando me levam a acreditar que meu google-fu está falhando comigo no momento.
Acredito que a lógica abaixo seja sólida ( supondo que não exista uma solução existente ):
- O dispositivo recebe um endereço DHCP
- A entrada do log de eventos é registrada (a identificação do evento 10 no log de auditoria do DHCP deve funcionar (uma vez que uma nova concessão é a que mais me interessaria, não as renovações): http://technet.microsoft.com/en-us/library /dd759178.aspx )
- Nesse ponto, um script de algum tipo provavelmente teria que assumir os demais "PASSOS" abaixo.
- De alguma forma, consulte esse log do DHCP para esses IDs de evento 10 (eu adoraria enviar, mas acho que o pull é o único recurso aqui)
- Analise a consulta para o nome do dispositivo ao qual está sendo atribuída a nova concessão
- Consulta AD para o nome do dispositivo
- Se não for encontrado no AD, envie um email de notificação
Se alguém tiver alguma idéia de como fazer isso corretamente, eu realmente aprecio isso. Não estou procurando um "me dê o codez", mas gostaria de saber se existem alternativas para a lista acima ou se não estou pensando claramente e existe outro método para coletar essas informações. Se você tiver comandos de snippets de código / PS que gostaria de compartilhar para ajudar a fazer isso, tanto melhor.
Respostas:
Com muito obrigado a ErikE e aos outros aqui, segui um caminho ... Não direi que é o caminho certo, mas o script do Powershell que inventei faz o truque.
O código está abaixo se alguém quiser. Basta executá-lo apontando manualmente para cada servidor DHCP ou agendá-lo (novamente apontando para cada servidor DHCP no script).
O que o script faz:
O que você precisará:
O script usa o módulo AD (
import-module activedirectory
), portanto, é melhor executá-lo em um AD DC executando DHCP. Se esse não for o seu caso, você pode instalar o módulo AD powershell: http://blogs.msdn.com/b/rkramesh/archive/2012/01/17/how-to-add-active-directory- module-in-powershell-in-windows-7.aspxVocê também precisará dos cmdlets do AD Powershell da Quest encontrados aqui: http://www.quest.com/powershell/activeroles-server.aspx . Instale ESTES ANTES de executar o script ou ele falhará.
O script em si (higienizado, você precisará configurar algumas das variáveis para atender às suas necessidades, como os nomes dos arquivos de entrada, o domínio ao qual se conectar, o servidor dhcp ao qual se conectar, as configurações de e-mail no final etc.):
Espero que ajude alguém!
fonte
OK, não tenho certeza se estou seguindo a etiqueta aqui, mas estou postando uma segunda resposta em vez de editar a anterior, pois ela contém algumas informações que podem ser úteis para alguém, mesmo que isso seja irrelevante para este caso. Se isso me torna um idiota neste fórum, sinta-se à vontade para me informar sobre meus caminhos errados.
O problema está dividido em várias partes, aqui estão sugestões para as que eu acho mais interessantes. Sem exemplos do log, é o melhor que posso fazer, portanto, são apenas sugestões, não soluções.
Para analisar o log, use
get-content
com o-wait
parâmetro Para o meu caso de uso, basta encontrar um erro em um log de erros.Isto é o que funcionou para meu próprio caso de uso, perdoe a formatação:
Em vez do,
$_ -match "ERROR"
você precisaria separar o campo de ID do log e o nome do computador de alguma forma. Eu não tenho certeza de como fazer isso da melhor maneira no momento, mas desde quewhere-object -match
dá suporte a regex, acho que poderia ser uma opção. Você também pode começar armazenando a variável $ _ em outra nova variável, para buscá-la conforme sua conveniência mais tarde no pipeline, dentro de loops foreach aninhados etc.Supondo que você possa obter o nome do computador, acho que o
get-adcomputer
cmdlet seria a maneira mais simples de consultar seu AD (import-module activedirectory
) e, por erro, envie um email?Usar o
import-csv
obviamente seria muito mais elegante no seu caso, mas não conheço nenhuma maneira de segui-lo (se alguém ler isso e souber um truque naquele beco, por favor, compartilhe).fonte
Supondo que você tenha certeza da identificação do evento e que nenhum outro evento faça logon nessa identificação no log do DHCP, exceto nos de seu interesse, o push é realmente uma opção.
1) Abra o Gerenciador do Servidor, vá para o log do DHCP no Visualizador de Eventos.
2) Encontre uma entrada representativa à qual você deseja anexar sua ação. Selecione e clique com o botão direito.
3) Escolha "Anexar tarefa a este evento".
4) O Assistente para criação de tarefas é aberto, retire-o de lá ...
Na verdade, existe uma opção de email explícita, mas se você precisar de mais lógica do que isso, é claro que está livre para usar a opção de iniciar um programa para iniciar o powershell.exe e anexar um script a ele. Há muitos excelentes tutoriais googleable sobre como deixar o Gerenciador de Tarefas executar scripts do PowerShell, se você precisar de orientação.
A alternativa imediata que vejo é usar pull analisando o log de eventos usando o PowerShell em intervalos agendados. "The Microsoft Scripting Guy", também conhecido como Ed Wilson, escreveu algumas postagens impressionantes sobre como analisar o log de eventos usando os cmdlets disponíveis nas diferentes versões do PowerShell. Portanto, usar o blog como ponto de partida seria minha sugestão.
Quanto aos cmdlets reais, não tenho tempo agora para retirar meu estoque de trechos úteis, mas analisarei novamente em um dia ou dois e poderá contribuir se ninguém mais aparecer com alguns bem escolhidos ou se você não tiver Resolveu tudo sozinho :-)
fonte
Applications and Services Logs
(até agora com base em minha pesquisa / teste)Embora isso não atenda à solução desejada, uma opção que pode atingir seu objetivo é utilizar
arpwatch
( link ) para notificá-lo quando um novo host (anteriormente não visto) for visto na rede.Uma alternativa para o Windows
arpwatch
parece ser descafeinatídeo, mas eu nunca o usei, portanto não posso falar por isso bom ou ruim.fonte