gifts2017

Защита удаленного рабочего стола от подбора пароля 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.

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

 

 

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

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

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Артур Аюханов (artbear) 15.12.11 09:45
Опиши схему работы скрипта, без этого описания совершенно непонятно, какие действия блокируются :(
2. San Simonov (simgo83) 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) 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) 15.12.11 13:24
(5)
скрипт нужно поправить обязательно

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

Либо с другого ip адреса под правильным именем и паролем, либо локально)
7. Сергей Лактионов (lavrov) 21.12.11 10:38
Не совсем понял , зачем все таки нужен этот механизм? Есть же штатный встроенный в Windows . В локальных политиках безопасности можно выставить после скольких не успешных попыток блокировать учетную запись, и на какой период .
8. Роман Ершов (MRAK) 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) 21.12.11 17:28
lavrov пишет:

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

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

Но самый действенный способ оказался следующий:
В настройках маршрутизатора я сделал перенаправление портов, к примеру, 3378 -> 3389
И с инета захожу по rdp добавляя к имени сервера :3378.
Порт 3389 стандартный и его все знают, потому и лупятся все кому не лень.
А в этом случае мой журнал безопасности вообще чистый уже целый год )
Прикрепленные файлы:
14. Сергей Сытько (8SiriuS8) 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) 26.11.14 10:00
Дополнил скрипт White List и добавил отправку почты при срабатывании скрипта
17. Spike Guyer (Guyer) 26.11.14 10:02
Скрипт и сами базы SQL
Прикрепленные файлы:
ADDBLOCK.vbs
BLOCK_LIST.mdf
BLOCK_LIST_log.ldf
iov; simgo83; +2 Ответить
18. Дмитрий Матерс (maters) 06.03.16 10:01
Вот мое решение с белыми листами и настройками различными.
http://infostart.ru/public/462816/