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

Эта статья возникла благодоря успешному удаленному подбору имени и пароля к учетной записи  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 «#k8SjZc9Dxk.+:.»})

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

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:ScriptsIPfilter.p2p» -append -encoding oem} }

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

Start-process «C:Program FilesPeerBlockpeerblock.exe»

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

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

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

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

 

 

16 Comments

  1. artbear

    Опиши схему работы скрипта, без этого описания совершенно непонятно, какие действия блокируются 🙁

    Reply
  2. simgo83

    (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 «#k8SjZc9Dxk.+:.»})

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

    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:ScriptsIPfilter.p2p» -append -encoding oem} }

    # Перезапускаем программу «peerblock»

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

    Start-process «C:Program FilesPeerBlockpeerblock.exe»

    Reply
  3. simgo83
    Но все-таки непонятно главное — по какому принципу идет ограничение?

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

    сколько раз злоумышленник может сделать попыток подбора?

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

    каким образом блокируется злоумышленник?

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

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

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

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

    Reply
  4. simgo83

    (5)

    скрипт нужно поправить обязательно

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

    Иначе как попадешь на нужный сервер, если ты забанен 🙂 и если доступ на него только через РДП 🙂 ?

    Либо с другого ip адреса под правильным именем и паролем, либо локально)

    Reply
  5. lavrov

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

    Reply
  6. MRAK

    (7) а здесь учетка не блокируется, можно с другого IP под ней зайти

    Reply
  7. runnerrus
    lavrov пишет:

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

    Присоединяюсь к вышенаписанному. Зачем изобретать велосипед напильником, когда уже всё есть готовое?

    Reply
  8. hackerk700

    да лан вам нормальная тема человек захотел сам сделать от меня +

    Reply
  9. simgo83
    lavrov пишет:

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

    (7) lavrov,

    Так вот пример: подбирают пароль под конкретно мою учетку «admin», и согласно предлагаему Вами правилу она блокируется, и я остаюсь заблокированным. Наиболее частые имена для атаки, как показала история журнала, это admin, administrator, alex, user, test, sql.

    Reply
  10. lavrov

    (11) Теперь понял , плюсую .

    Reply
  11. zangpo

    Я сделал проще, подручными средствами:

    запускаем gpedit.msc далее

    Конфигурация компьютера -> Параметры безопасности -> Политика учетных записей -> Политика блокировки:

    Здесь выставляем к-во неправильных паролей, через которое учетная запись будет заблокирована на хх минут.

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

    Таким образом перебор может занять не один год )

    Но самый действенный способ оказался следующий:

    В настройках маршрутизатора я сделал перенаправление портов, к примеру, 3378 -> 3389

    И с инета захожу по rdp добавляя к имени сервера :3378.

    Порт 3389 стандартный и его все знают, потому и лупятся все кому не лень.

    А в этом случае мой журнал безопасности вообще чистый уже целый год )

    Reply
  12. sytkosa

    (13) Шас попадаются такие прошаренные перцы что просто смена порта мало их останавливает.

    Я например делаю так

    1. политиками блок аккаунта на 15 минут при 3 неудачных попытках авторизации

    2. блокировка IP на 2 часа при 2 неудачных авторизациях

    3. После авторизации по логину паролю авторизация по картинке (мыщой надо собрать простейший пазл из mhfpys[ элементов картинки).

    Практика показала. что до 3 уровня проверки горе хакеры даже и не доходили.

    Reply
  13. clevergod

    8SiriuS8

    а можно все таки подробнее……..

    Reply
  14. Guyer

    Дополнил скрипт White List и добавил отправку почты при срабатывании скрипта

    Reply
  15. Guyer

    Скрипт и сами базы SQL

    Reply
  16. maters

    Вот мое решение с белыми листами и настройками различными.

    http://infostart.ru/public/462816/

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *