Как остановить атаки методом перебора на сервере терминалов (Win2008R2)?


23

Я более знаком с инструментами Linux для предотвращения атак методом перебора, поэтому у меня возникают проблемы с поиском подходящих инструментов для Windows. Я использую Windows Server 2008 R2 с терминальным сервером, и я хотел бы заблокировать IP-адрес после повторных попыток входа через RDP. Есть намеки?


3
Вы действительно должны справиться с этим на вашем сервере Windows? Рассматривали ли вы ограничение скорости на своем пограничном устройстве (брандмауэр / маршрутизатор)?
Zoredache

2
Windows box - это VPS, управляемый хостинговой компанией, поэтому у меня нет доступа к сетевым устройствам.
onik

Вы можете настроить событие «Расписание задач» при неудачных входах в систему для запуска сценария PS; PS Svript должен будет подсчитать количество попыток IP, а затем заблокировать его с помощью правила брандмауэра. У меня нет такого сценария, но его можно было бы создать.
Крис С

@Chris S: Это более или менее то, что делает мой скрипт ts_block, за исключением того, что он работает как «сток» журнала событий и получает обратный вызов каждый раз, когда регистрируются новые события. Как таковой, он работает более или менее в режиме реального времени.
Эван Андерсон

Используйте VPN - установите, например. OpenVPN на роутере. Никогда не помещайте коробку окон непосредственно в интернет - это опасно.
integratorIT

Ответы:


5

чтобы остановить попытки входа в rdp, как уже говорилось, вам нужен контроль над вашим брандмауэром, чтобы изолировать определенный ip. Вы можете сделать некоторые настройки в Администрирование -> Диспетчер служб терминалов, но ничего не можете сделать, чтобы остановить один ip таким образом. Возможно, вам стоит рассмотреть пакетный сценарий для прослушивания порта rdp и контроля сбоев входа в систему, поэтому, если были попытки попытки (вы выбираете число ...) с тем же ip, то никакая другая попытка за известный промежуток времени не могла бы быть. Я не уверен, если это возможно, но может быть способ ...


1
Хорошо, так как я и думал. Я должен изучить Event Viewer, чтобы увидеть, могу ли я экспортировать IP-адреса в файл для пакетной обработки. В настоящее время приходится извлекать их из вручную созданных дампов .csv
onik

5
Изменить порт RDP отвечает на.
JohnThePro

Самое смешное, что я хочу ограничить IP-адреса, но ошибка входа не сообщает об IP-адресе
Csaba Toth

Смена порта только затеняет. Они найдут новый порт с интеллектуальной программой сканирования портов.
TheLegendaryCopyCoder

@CsabaToth Журнал событий не записывает полезную информацию по умолчанию. Вы можете включить подробное ведение журнала в сервисе netlogon с контроллера домена или компьютера, получающего запросы RDP для получения дополнительной информации. Вы можете включить ведение журнала брандмауэра Windows, чтобы определить IP-адрес.
Майкл Стил

25

Вы действительно должны блокировать эти попытки на своем пограничном межсетевом экране, хотя бы с ограничением скорости. Если у вас нет возможности сделать это, читайте дальше.

Если вы не можете заблокировать на пограничном брандмауэре и хотите, чтобы RDP открывался только подмножеству Интернета, используйте встроенные функции брандмауэра Windows для блокировки входящих соединений.

Наконец, если вы действительно хотите, чтобы RDP был открыт для всей сети Intenet, вы можете взглянуть на модифицированную версию моей программы SSH для Windows, которая есть в репозитории github . Этот сценарий ts_block блокирует попытки входа в систему служб терминалов путем перебора в Windows Server 2003, 2008 и 2008 R2. К сожалению, из-за изменений в событиях, регистрируемых Windows при использовании уровня безопасности TLS / SSL для RDP, этот сценарий становится все менее эффективным . (Почему Microsoft решила не указывать IP-адрес хоста, пытающегося пройти аутентификацию, мне не под силу. Похоже, это было бы довольно важным занести в журнал, а?)


1
Я использую страницу ts_block, и это удивительно! Мой сервер Windows (2008 R2) раньше замедлялся под многочисленными атаками грубой силы, но не больше! TS_BLOCK написан на vbscript - и может / должен быть установлен как служба Windows - но не используйте версию MSI, просто отредактируйте код .vbs и установите себя с помощью утилиты nssm. Вам не нужны записи реестра, потому что код .vbs имеет жестко заданные значения по умолчанию. <P> Я отредактировал код, и он немедленно блокирует КАЖДЫЙ неудачный вход в систему - поскольку я являюсь моим собственным веб-сервером, НЕТ неудачных попыток входа в систему. Итак, сценарий

Это очень мило, Эван. У меня есть полумрака, чтобы заново реализовать его в C #, чтобы вы могли запускать его как нативный сервис Windows, а не взламывать srvany и тому подобное. Если я когда-нибудь это сделаю, я выкину это на Github или что-то еще.
Райан Болджер

1
@RyanBolger: У меня есть слабость к VBScript и интерпретируемым языкам в целом. Я считаю, что использование «Non-Sucking Service Manager» делает довольно безболезненным запуск программ VBScript в качестве сервисов.
Эван Андерсон

ts_block удивительно, это именно то, что я искал. «Спасибо, Эван Андерсон». Когда я в течение одного дня разместил свой первый виртуальный виртуальный сервер Terminal в Интернете, у меня было более 10 000 неудачных входов. Когда у меня есть время, я могу изменить его и добавить постоянную блокировку на основе количества предыдущих блоков. Например: IP забанен 4 раза в день. (Если только он не был создан)

Основанное на ts_blockсценарии здесь решение, которое использует fail2banшлюз для блокировки злоумышленников: wqweto.wordpress.com/2013/12/10/…
wqw

3

У меня есть программа на 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 количество попыток, прежде чем забанить, и в случае успеха счет сбрасывается.


2

Вы пытаетесь предотвратить взломы или загроможденные журналы? Если вы пытаетесь предотвратить взломы, в Windows есть встроенный способ блокировать попытки входа в систему. Существует параметр групповой политики «Пороговое значение блокировки учетной записи» в разделе «Конфигурация компьютера» -> «Политики» -> «Параметры Windows» -> «Параметры безопасности» -> Политика учетной записи -> Политика блокировки учетной записи.

Злоумышленники будут использовать общие имена пользователей, такие как Администратор, и они наверняка заблокируют их. Вам потребуется отдельная учетная запись для фактического администрирования, что, вероятно, в любом случае целесообразно.

Автоматическая блокировка на уровне брандмауэра потребует некоторого чтения журнала в сценарии с автоматическим обновлением правил брандмауэра. Вы должны иметь возможность добавлять правила на основе IP-адреса таким образом. Это в основном то, что iptables делает в системе Linux.

Это может быть немного очевидно, но рассматривали ли вы также запуск служб удаленных рабочих столов на нестандартном порту ? Это было очень эффективно для меня, чтобы помешать взломам.


Хорошей практикой является блокирование повторных попыток соединения на брандмауэре, но предположение, что атаки методом "грубой силы" не будут происходить "за брандмауэром", не является очень хорошим предположением. На мой взгляд, грубая попытка блока - достаточно хорошая идея. Использование блокировки учетной записи, безусловно, хорошая идея, но мне также нравится идея подавления попыток грубой силы, чтобы сохранить журналы более чистыми.
Эван Андерсон

1
Я уже использую не стандартный порт, и моя большая проблема в том, чтобы фактически перевести мой сервер в автономный режим из-за большого количества попыток входа в систему.
Boomhauer

Один из вариантов - полностью отключить доступ к удаленному рабочему столу через брандмауэр, но на сервере должна быть запущена служба, которая переконфигурирует брандмауэр для пропуска трафика RDP, эта служба защищена паролем и, возможно, разрешает доступ только из «доверенного» источника IP ( например, диапазон IP-адресов мобильного телефона или ваш офис). Это вносит хлопоты, но работает.
Дай

1

Существует также несколько других решений, если вы хотите использовать решение на основе графического интерфейса и создавать разные наборы правил для разных событий. Самым простым из них будет RDPGuard (hxxp: //www.rdpguard.com), но в корпоративной среде вам, вероятно, понадобится больше отчетов, например, о том, откуда пришла атака (страна, происхождение) и какое имя пользователя использовалось, чтобы вы могли быстро решить, будет ли это один из ваших собственных пользователей, случайно заблокировавший себя или пытающийся войти в систему, откуда вы знаете, что это не так.

Лично мне нравится Syspeace (hxxp: //www.syspeace.com), который делает все это за нас, но я бы все равно упомянул их обоих



Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.