Mam program w języku C #, który robi dokładnie to. Miałem problem z serwerem 2008 R2, w którym dziennik zdarzeń nie zawsze zawierał adresy IP użytkownika (jeśli łączył się z nowszymi klientami pulpitu zdalnego). Niektóre usługi wdrażają własnego dostawcę weryfikacji danych, który nie zapewnia wszystkich potrzebnych informacji.
http://cyberarms.net/security-insights/security-lab/remote-desktop-logging-of-ip-address-%28security-event-log-4625%29.aspx
W przypadku Pulpitu zdalnego odkryłem jednak, że przejście do „Konfiguracji hosta sesji pulpitu zdalnego” i zmiana połączenia RDP-TCP na warstwę zabezpieczeń „Warstwa zabezpieczeń RDP” zamiast „Negocjuj” lub „SSL (TLS 1.0)” przywróciły Adresy IP.
To, czy naprawdę chcesz to zrobić, to kolejne pytanie: „Jeśli wybierzesz warstwę zabezpieczeń RDP, nie będziesz mógł używać uwierzytelniania na poziomie sieci”.
Uważam, że http://www.windowsecurity.com/articles/logon-types.html jest pomocny. Użyłem EventLogWatcher i związałem się z „* [System / EventID = 4625 lub System / EventID = 4624]”, więc mogłem zresetować złe liczenie na sukces, jeśli użytkownik naprawdę pomylił swoje hasło. Również dodałem do białej listy: 1, 0.0.0.0, 127.0.0.1 i „-”. Możesz lub nie chcesz umieszczać na białej liście LAN / adresy IP zarządzania.
Korzystam z Forefront TMG, więc użyłem API, aby w ten sposób dodać złe adresy IP do grupy adresów IP i poprosiłem Cisco o dodanie dostępu API do jednego z ich routerów SMB (co zapewniło mnie, że może to zrobić!)
Jeśli chcesz użyć natywnej Zapory systemu Windows do ich zablokowania, zapoznaj się z interfejsem API („netsh advfirewall”).
Dopuszczam x liczby prób przed zbanowaniem, a sukces zresetuje liczenie.