У меня есть программа на C #, которая делает именно это. У меня была проблема на Server 2008 R2, когда в журнале событий не всегда перечислялись IP-адреса пользователя (если они подключались с более новых клиентов Remote Desktop). Некоторые службы реализуют своего собственного провайдера проверки учетных данных, который не предоставляет всю необходимую информацию.
http://cyberarms.net/security-insights/security-lab/remote-desktop-logging-of-ip-address-%28security-event-log-4625%29.aspx
Однако для удаленного рабочего стола я обнаружил, что при переходе в «Конфигурация узла сеанса удаленного рабочего стола» и изменении соединения RDP-TCP, чтобы уровень безопасности «Уровень безопасности RDP» вместо «Согласовать» или «SSL (TLS 1.0)» возвращал IP-адреса.
Если вы действительно хотите это сделать, это другой вопрос для вас: «Если вы выберете RDP Security Layer, вы не сможете использовать аутентификацию на уровне сети».
Я нашел http://www.windowsecurity.com/articles/logon-types.html полезным. Я использовал EventLogWatcher и привязал его к «* [System / EventID = 4625 или System / EventID = 4624]», чтобы можно было сбросить неверный счет при успехе, если пользователь действительно только что неправильно ввел свой пароль. Также я в белом списке :: 1, 0.0.0.0, 127.0.0.1 и "-". Вы можете или не хотите вносить белый список IP-адресов LAN / управления.
Я использую Forefront TMG, поэтому я использовал API для добавления плохих IP-адресов в группу IP-адресов таким образом, и я попросил Cisco добавить API-доступ к одному из своих SMB-маршрутизаторов (что, как они уверяли, они могут сделать!)
Если вы хотите использовать собственный брандмауэр Windows для их блокировки, взгляните на API для этого («netsh advfirewall»).
Я разрешаю x количество попыток, прежде чем забанить, и в случае успеха счет сбрасывается.