Я больше знаком с инструментами Linux для предотвращения атак методом перебора, поэтому у меня проблемы с поиском подходящих инструментов для Windows. Я использую Windows Server 2008 R2 с сервером терминалов, и я хотел бы заблокировать IP-адрес после неоднократных попыток входа в систему через RDP. Есть подсказки?
Вам действительно следует заблокировать эти попытки на своем пограничном брандмауэре, хотя бы с ограничением скорости. Если у вас нет возможности сделать это, читайте дальше.
Если вы не можете заблокировать на пограничном брандмауэре и хотите, чтобы RDP был открыт только для части Интернета, используйте встроенные функции брандмауэра Windows для блокировки входящих подключений.
Наконец, если вы действительно должен если RDP открыт для всего Интернета, вы можете взглянуть на модифицированную версию моя программа блокировки перебора SSH для Windows что у меня есть в репозиторий github. Этот сценарий, ts_block, блокирует попытки грубой силы входа в службы терминалов в Windows Server 2003, 2008 и 2008 R2. К сожалению, из-за изменений в событиях, регистрируемых Windows при использовании уровня безопасности TLS / SSL для RDP этот сценарий становится все более неэффективным. (Почему Microsoft решила опустить IP-адрес хоста, пытающегося аутентифицироваться, мне не по силам. Похоже, это будет довольно важная вещь для регистрации, а?)
Как уже говорилось, чтобы остановить попытки входа в систему с помощью rdp, вам потребуется контроль над вашим брандмауэром, чтобы изолировать определенный IP. Вы можете сделать некоторые настройки в Администрировании -> Диспетчер служб терминалов, но ничего не можете сделать, чтобы остановить один IP таким образом. Возможно, вам стоит рассмотреть пакетный сценарий для прослушивания порта rdp и управления сбоями входа в систему, поэтому, если было несколько попыток (вы выбираете номер ...) с тем же IP-адресом, то никакая другая попытка в течение известного промежутка времени не могла быть. Не уверен, возможно ли это, но может быть выход ...
У меня есть программа на C #, которая делает именно это. У меня была проблема на Server 2008 R2, когда в журнале событий не всегда указывались IP-адреса пользователя (если они подключались из новых клиентов удаленного рабочего стола). Некоторые службы реализуют своего собственного поставщика проверки учетных данных, который не предоставляет всю необходимую вам информацию.
Однако для удаленного рабочего стола я обнаружил, что переход в «Конфигурация узла сеанса удаленного рабочего стола» и изменение соединения 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-адреса LAN / управления.
Я использую Forefront TMG, поэтому я использовал API для добавления плохих IP-адресов к группе IP-адресов таким образом, и я попросил Cisco добавить API-доступ к одному из своих SMB-маршрутизаторов (что они заверили меня, что они могут это сделать!)
Если вы хотите использовать собственный брандмауэр Windows, чтобы заблокировать их, обратите внимание на API для этого («netsh advfirewall»).
Я разрешаю x попыток, прежде чем забанить, и в случае успеха счетчик сбрасывается.
Вы пытаетесь предотвратить взлом или загроможденные журналы? Если вы пытаетесь предотвратить взлом, в Windows есть встроенный способ блокировать попытки входа в систему. В Конфигурации компьютера -> Политики -> Настройки Windows -> Настройки безопасности -> есть параметр групповой политики порога блокировки учетной записи. Политика учетной записи -> Политика блокировки учетной записи.
Злоумышленники будут использовать общие имена пользователей, такие как «Администратор», и, безусловно, заблокируют их. Вам понадобится отдельная учетная запись для фактического администрирования, что, вероятно, в любом случае рекомендуется.
Автоматическая блокировка на уровне брандмауэра потребует чтения журнала с помощью сценария с автоматическим обновлением правил брандмауэра. Таким образом вы сможете добавлять правила на основе IP-адреса. Это в основном то, что iptables делает в системе Linux.
Это может быть немного очевидно, но рассматривали ли вы также возможность запуска служб удаленных рабочих столов на нестандартный порт? Это было очень эффективно для меня в предотвращении взломов.
Есть и несколько других решений, если вы хотите вместо этого иметь решение на основе графического интерфейса и действительно создавать разные наборы правил для разных событий. Самым простым будет RDPGuard (hxxp: //www.rdpguard.com), но в корпоративной среде вам, вероятно, понадобится больше отчетов, например, откуда произошла атака (страна, происхождение) и какое имя пользователя было использовано, чтобы вы могли быстро решите, случайно ли это один из ваших пользователей блокирует себя или пытается войти в систему, откуда вы знаете, что это не так.
Лично мне нравится Syspeace (hxxp: //www.syspeace.com), который делает все это за нас, но я подумал, что все равно упомяну их обоих.
Решение простое: настройте брандмауэр Windows так, чтобы только IP-адреса из белого списка могли использовать RDP в нужных полях. См. Следующий ресурс: Как я могу разрешить RDP-доступ к серверу Windows 2008R2 с одного IP-адреса?
мы улучшили сценарий PowerShell, так как fail2ban и другие решения не помогли. это также работает для серверов 2012, 2016, 2019.
см. мой пост, если вы хотите использовать скрипт: Terminalserver Remote Desktop Failed Logon Firewall Сценарий блокировки BruteForce