Eu tenho um programa em C # que faz exatamente isso. Eu tive um problema no Server 2008 R2 em que o log de eventos nem sempre listava os endereços IP do usuário (se eles estivessem conectados a partir dos clientes mais recentes da Área de Trabalho Remota). Alguns serviços implementam seu próprio provedor de verificação de credenciais que não fornece todas as informações que você deseja.
link
Para a Área de Trabalho Remota, descobri que entrar em "Configuração do Host de Sessão da Área de Trabalho Remota" e alterar a conexão RDP-TCP para ter a camada de segurança "RDP Security Layer" em vez de "Negociar" ou "SSL (TLS 1.0)" trouxe de volta os endereços IP.
Se você realmente quer fazer isso é outra pergunta para você: "Se você selecionar RDP Security Layer, não poderá usar a Autenticação no Nível da Rede."
Encontrei o link para ser útil. Eu usei EventLogWatcher e vinculado a "* [System / EventID = 4625 ou System / EventID = 4624]" para que eu pudesse redefinir uma contagem incorreta no sucesso se o usuário realmente tivesse a senha errada. Também coloquei na lista de permissões :: 1, 0.0.0.0, 127.0.0.1 e "-". Você pode ou não desejar colocar na lista de permissões LAN / IPs de gerenciamento.
Eu uso o Forefront TMG, então usei a API para adicionar endereços IP inválidos a um grupo de IPs dessa maneira e pedi à Cisco para adicionar acesso API a um dos roteadores SMB (o que eles me garantiram que talvez fizessem !)
Se você quiser usar o Firewall do Windows nativo para bloqueá-los, dê uma olhada na API para isso ("netsh advfirewall").
Eu permito x número de tentativas antes de banir e um sucesso irá redefinir a contagem.