У мене є програма C #, яка робить саме це. У мене виникла проблема на Server 2008 R2, де журнал подій не завжди перераховував IP-адреси користувача (якщо вони підключені від нових клієнтів віддаленого робочого столу). Деякі служби впроваджують свого власного постачальника перевірок даних, який не надає всієї інформації, яку ви хотіли б.
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, ви не можете використовувати автентифікацію на рівні мережі".
Я виявив, що 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-адрес.
Я використовую Forefront TMG, тому я використовував API, щоб додати погані IP-адреси до групи IP-адрес таким чином, і я попросив Cisco додати доступ до API до одного з SMB-маршрутизаторів (що вони запевнили, що вони просто можуть це зробити!)
Якщо ви хочете використовувати рідну брандмауер Windows для їх блокування, перегляньте API для цього ("netsh advfirewall").
Я дозволяю x кількість спроб, перш ніж заборонити, і успіх відновить кількість.