Защита удаленного рабочего стола от подбора пароля server 2008

Опубликовал San Simonov (simgo83) в раздел Администрирование - Защита, права, пароли

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

Нам нужно:

1)PowerShell

2)Peerblock

3)Скрипт блокировки.

Итак, думаю о первых двух пунктах Вы найдете много информации не из этой статьи.

Третий пункт, собственно сценарий:

$Events=Get-EventLog security  -after (Get-date).AddMinutes(-15) | ?{$_.eventid -eq 4625 }

if($Events.Count -gt 1){

$IPs = New-Object System.Collections.ArrayList

$Data = New-Object System.Management.Automation.PSObject

$Data | Add-Member NoteProperty Address ($null)

$Events | %{ $message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()}

$Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."})

# здесь укажем маску внутренней сети, чтобы не блокировать наших пользователей

if(($data.address -notlike "192.168.1*") -and $data.address.length -gt 7)

{ $IPs += $Data.address } }

$IPs = $IPs | sort -property Address| get-unique

$IPs = $IPs | sort-object | Get-Unique

foreach ($objItem in $IPs) {"IP"+":"+$objItem + "-" + $objItem | Out-File "C:\Scripts\IPfilter.p2p" -append -encoding oem} }

$P=get-process peerblock* if($P.Name -like "peerblock*") {$P |stop-process}

Start-process "C:\Program Files\PeerBlock\peerblock.exe"

Теперь нужно настроить  Peerblock  на получившийся бан лист C:\Scripts\IPfilter.p2p", т.е запустить и указать путь к нему.

Следующим шагом будет добавление задания в планировщик заданий с интервалом 15 минут.

Описанный выше скрипт можно модифицировать под собственные нужды. Для Windows 2003 необходимо изменять параметры eventid и message.

В комментариях есть полное описание скрипта

 

 

Скачать файлы

Наименование Файл Версия Размер
Скрипт
.ps1 0,90Kb
14.12.11
22
.ps1 0,90Kb 22 Скачать

См. также

Комментарии
1. Артур Аюханов (artbear) 857 15.12.11 09:45 Сейчас в теме
Опиши схему работы скрипта, без этого описания совершенно непонятно, какие действия блокируются :(
2. San Simonov (simgo83) 59 15.12.11 10:27 Сейчас в теме
(1) Описываю:
#получаем журнал Windows "Безопасность" за последние 15 минут с сообщениями где ключ eventid = 4625
#(этот параметр говорит о том что, вход производился удаленно, и пароль либо имя не были введены правильно)
$Events=Get-EventLog security -after (Get-date).AddMinutes(-15) | ?{$_.eventid -eq 4625 }
#ставим условие, если с заданными параметрами имеются записи в журнале
if($Events.Count -gt 1){
#Создаем список значений и присваиваим его переменной "IPs"
$IPs = New-Object System.Collections.ArrayList
#Создаем объект данных и присваиваим его переменной "Data"
$Data = New-Object System.Management.Automation.PSObject
#Добавляем поле "Address" к оъекту данных
$Data | Add-Member NoteProperty Address ($null)
#убираем все лишнее в записях
$Events | %{ $message = $_.message.split("`n") | %{$_.trimstart()} | %{$_.trimend()}
$Data.Address = ($message | ?{$_ -like "Сетевой адрес источника:*"} | %{$_ -replace "^.+:."})
# здесь укажем маску внутренней сети, чтобы не блокировать наших пользователей
if(($data.address -notlike "192.168.1*") -and $data.address.length -gt 7)
#Добавляем записи в список значений
{ $IPs += $Data.address } }
#Сортируем и убираем повторяющиеся записи
$IPs = $IPs | sort -property Address| get-unique
$IPs = $IPs | sort-object | Get-Unique
#Добавляем записи в файл бан листа в нужном формате, заметь что папка "Scripts" уже должна быть на диске за ранее
foreach ($objItem in $IPs) {"IP"+":"+$objItem + "-" + $objItem | Out-File "C:\Scripts\IPfilter.p2p" -append -encoding oem} }
# Перезапускаем программу "peerblock"
$P=get-process peerblock* if($P.Name -like "peerblock*") {$P |stop-process}
Start-process "C:\Program Files\PeerBlock\peerblock.exe"
adaltrade; cashtrade; +2 Ответить 1
3. Модератор раздела Артур Аюханов (artbear) 15.12.11 10:51 Сейчас в теме
(2) Спасибо.
Но все-таки непонятно главное - по какому принципу идет ограничение? сколько раз злоумышленник может сделать попыток подбора? каким образом блокируется злоумышленник?
полного ответа на эти вопросы в коде/комментах не увидел
Да и не все ведь код могут прочитать :)
4. San Simonov (simgo83) 59 15.12.11 12:14 Сейчас в теме
Но все-таки непонятно главное - по какому принципу идет ограничение?

Ограничение идет при хотябы одной неудачной попытке подключиться к машине через интернет с ip адреса который не содержит в себе "192.168.1".
сколько раз злоумышленник может сделать попыток подбора?

Столько, сколько у него получиться в интервале между запуском скрипта (в нашем случае, в интервале 15 минут), после запуска скрипта он заблокируется
каким образом блокируется злоумышленник?

IP злоумышленника блокируется программой PeerBlock, которая бесплатна в распостранении, в описании есть ссылка на сайт разработчика

Все это реально работает, с учетом правильной настройки PowerShell (разрешить исполнять скрипты и запускать в планировщике с наивысшими правами с параметрами скрипта), также обновите framework хотя бы до версии 3.0.

Единственный минус этого скрипта это то, что если вы сами сидя например дома будете подключатся к своему серверу на работе через инет и ошибетесь в наборе пароля, то тогда вы попадете в бан и не сможете подключиться. Это проверенео на своем опыте))). потом необходимо будет убрать ip из бан листа и снова можно будет подключаться.
Так вот, чтобы это не произошло необходимо в скрипт добавить условие при котором сортировка по уникальности производилась только тогда когда один и тот же ip пытался подключиться к вам более например 5 раз.
5. Модератор раздела Артур Аюханов (artbear) 15.12.11 13:00 Сейчас в теме
(4) Всеми своими вопросами я и подводил к последнему минусу :)
Это очень важный минус/баг. скрипт нужно поправить обязательно.
Иначе как попадешь на нужный сервер, если ты забанен :) и если доступ на него только через РДП :) ?
6. San Simonov (simgo83) 59 15.12.11 13:24 Сейчас в теме
(5)
скрипт нужно поправить обязательно

да, этим безусловно нужно заняться (сейчас пока у меня нет свободного времени на доработку и тестирование), у кого какие пожелания и доработки пишите в комменты.
Иначе как попадешь на нужный сервер, если ты забанен :) и если доступ на него только через РДП :) ?

Либо с другого ip адреса под правильным именем и паролем, либо локально)
7. Сергей Лактионов (lavrov) 136 21.12.11 10:38 Сейчас в теме
Не совсем понял , зачем все таки нужен этот механизм? Есть же штатный встроенный в Windows . В локальных политиках безопасности можно выставить после скольких не успешных попыток блокировать учетную запись, и на какой период .
8. Роман Ершов (MRAK) 696 21.12.11 10:53 Сейчас в теме
(7) а здесь учетка не блокируется, можно с другого IP под ней зайти
9. Greg House (runnerrus) 21.12.11 13:16 Сейчас в теме
lavrov пишет:
не произошло необходимо в скрипт добавить условие при котором сортировка по уникальности производилась только тогда когда один и тот же ip пытался подключиться к вам более например 5 раз.

Присоединяюсь к вышенаписанному. Зачем изобретать велосипед напильником, когда уже всё есть готовое?
10. Тигран Лалаян (hackerk700) 21.12.11 15:50 Сейчас в теме
да лан вам нормальная тема человек захотел сам сделать от меня +
11. San Simonov (simgo83) 59 21.12.11 17:28 Сейчас в теме
lavrov пишет:

Не совсем понял , зачем все таки нужен этот механизм? Есть же штатный встроенный в Windows . В локальных политиках безопасности можно выставить после скольких не успешных попыток блокировать учетную запись, и на какой период .
(7) lavrov,

Так вот пример: подбирают пароль под конкретно мою учетку "admin", и согласно предлагаему Вами правилу она блокируется, и я остаюсь заблокированным. Наиболее частые имена для атаки, как показала история журнала, это admin, administrator, alex, user, test, sql.
cashtrade; lavrov; +2 Ответить 1
12. Сергей Лактионов (lavrov) 136 21.12.11 17:59 Сейчас в теме
(11) simgo83, Теперь понял , плюсую .
13. Roman (zangpo) 09.01.12 12:52 Сейчас в теме
Я сделал проще, подручными средствами:
запускаем gpedit.msc далее
Конфигурация компьютера -> Параметры безопасности -> Политика учетных записей -> Политика блокировки:
Здесь выставляем к-во неправильных паролей, через которое учетная запись будет заблокирована на хх минут.
Если Вы сами ошиблись, то через хх минут можете повторить попытку и войти снова.
Таким образом перебор может занять не один год )

Но самый действенный способ оказался следующий:
В настройках маршрутизатора я сделал перенаправление портов, к примеру, 3378 -> 3389
И с инета захожу по rdp добавляя к имени сервера :3378.
Порт 3389 стандартный и его все знают, потому и лупятся все кому не лень.
А в этом случае мой журнал безопасности вообще чистый уже целый год )
Прикрепленные файлы:
14. Сергей Сытько (8SiriuS8) 114 22.04.12 02:39 Сейчас в теме
(13) Шас попадаются такие прошаренные перцы что просто смена порта мало их останавливает.
Я например делаю так
1. политиками блок аккаунта на 15 минут при 3 неудачных попытках авторизации
2. блокировка IP на 2 часа при 2 неудачных авторизациях
3. После авторизации по логину паролю авторизация по картинке (мыщой надо собрать простейший пазл из mhfpys[ элементов картинки).

Практика показала. что до 3 уровня проверки горе хакеры даже и не доходили.
15. stanislav Istyagin (clevergod) 27.06.13 11:00 Сейчас в теме
8SiriuS8

а можно все таки подробнее........
16. Spike Guyer (Guyer) 2 26.11.14 10:00 Сейчас в теме
Дополнил скрипт White List и добавил отправку почты при срабатывании скрипта
17. Spike Guyer (Guyer) 2 26.11.14 10:02 Сейчас в теме
Скрипт и сами базы SQL
Прикрепленные файлы:
ADDBLOCK.vbs
BLOCK_LIST.mdf
BLOCK_LIST_log.ldf
iov; simgo83; +2 Ответить
18. Дмитрий Матерс (maters) 10 06.03.16 10:01 Сейчас в теме
Вот мое решение с белыми листами и настройками различными.
http://infostart.ru/public/462816/