Як зупинити жорстокі атаки на термінальний сервер (Win2008R2)?


23

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


3
Вам справді потрібно впоратися з цим на сервері Windows? Чи розглядали ви обмеження швидкості на крайовому пристрої (брандмауері / маршрутизаторі)?
Зоредаче

2
Вікно Windows - це VPS, яким керує хостинг-компанія, тому у мене немає доступу до мережевих пристроїв.
onik

Ви можете встановити подію "Розклад завдань" на невдалі входи, щоб запустити сценарій PS; PS Svript повинен був би порахувати кількість спроб IP-адреси, а потім заблокувати його за допомогою правила брандмауера. У мене немає такого сценарію, але його можна було б створити.
Кріс С

@Chris S: Це більш-менш те, що робить мій скрипт ts_block, за винятком того, що він працює як журнал подій "просідає" і отримує зворотний виклик кожного разу, коли реєструються нові події. Таким чином, він працює більш-менш в режимі реального часу.
Еван Андерсон

Використовувати VPN - встановити, наприклад. OpenVPN на маршрутизаторі. Ніколи не ставте вікно прямо в Інтернет - це небезпечно.
інтеграторIT

Відповіді:


5

щоб зупинити спроби входу в rdp, як уже було сказано, вам потрібно контролювати брандмауер для ізоляції певного ip. Ви можете виконати деякі налаштування в Адміністративних інструментах -> Менеджер служб терміналів, але нічого не може зробити, щоб зупинити один ip таким чином. Можливо, вам слід розглянути пакетний скрипт для прослуховування збоїв входу rdp та керування входом, тому якщо були ті ж спроби (ви вибираєте номер ...) тим же ip, то жодна інша спроба за відомий проміжок часу не могла б бути. Я не впевнений, чи можливо, але це може бути спосіб ...


1
Гаразд, так, як я думав. Мені потрібно вивчити переглядач подій, щоб побачити, чи можу я експортувати ip-адреси у файл для пакетної обробки.
Наразі доведеться зірвати

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 та інтерпретованих мов загалом. Я вважаю, що використання "Диспетчера послуг, що не всмоктується" робить досить безболісним досвід роботи програм VBScript як служб.
Еван Андерсон

ts_block дивує саме тому, що я шукав "Дякую, Еван Андерсон" Коли я розмістив свій перший віртуальний сервер терміналу прямо в Інтернеті протягом одного дня, у мене було понад 10 000 невдалих входів. Коли я встигну, я можу його змінити і додати постійне блокування на основі кількості попередніх блоків. наприклад: IP забороняється 4 рази за один день. (Якщо це вже не створено)

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

3

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


2

Ви намагаєтеся запобігти вторгненням або захаращеним журналам? Якщо ви намагаєтеся запобігти злому, у Windows є вбудований спосіб блокувати спроби входу в систему. Налаштування групової політики порогу блокування облікового запису в налаштуваннях комп'ютера -> Політика -> Налаштування Windows -> Налаштування безпеки -> Політика облікового запису -> Політика блокування облікових записів.

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

Автоматичне блокування на рівні брандмауера зажадає певного сценарію читання журналу з автоматичним оновленням правил брандмауера. Ви повинні мати змогу додавати правила на основі IP-адреси таким чином. Це в основному те, що iptables робить в системі Linux.

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


Блокування повторних спроб підключення до брандмауера є хорошою практикою, але припускати, що нападки грубої сили не відбудуться "за брандмауером", не є дуже хорошим припущенням. На мій погляд, хост-грунт для блоку є досить хорошою ідеєю. Використання блокування облікових записів, безумовно, є хорошою ідеєю, але мені також подобається ідея прокручувати грубі спроби зберегти журнали чистішими.
Еван Андерсон

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

Один з варіантів - повністю відключити доступ до віддаленого робочого столу через брандмауер, але мати сервіс, що працює на сервері, який перенастроює брандмауер для дозволу трафіку RDP, ця послуга захищена паролем і, можливо, дозволяє лише доступ з "довіреного" джерела IP ( наприклад IP-діапазон мобільного телефону або ваш офіс). Це вводить клопоту, але працює.
Дай

1

Є також кілька інших рішень, якщо ви хочете замість цього мати рішення на основі GUI та створювати різні набори правил для різних подій насправді. Найпростішим з них був би RDPGuard (hxxp: //www.rdpguard.com), але у корпоративному середовищі ви, мабуть, хочете отримати більше звітів, наприклад, звідки прийшла атака (країна, походження) та яке саме ім’я користувача, щоб ви могли швидко вирішіть, чи випадково хтось із ваших користувачів заблокував себе або намагався увійти звідки ви знаєте, що їх немає.

Особисто мені подобається Syspeace (hxxp: //www.syspeace.com), який робить для нас все це, але я б подумав, що все одно їх згадаю.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.