В ней содержиться описание доступного механизма блокировки таких попыток подбора паролей без вложения денег.
Нам нужно:
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.
В комментариях есть полное описание скрипта
Опиши схему работы скрипта, без этого описания совершенно непонятно, какие действия блокируются 🙁
(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»
Ограничение идет при хотябы одной неудачной попытке подключиться к машине через интернет с ip адреса который не содержит в себе «192.168.1».
Столько, сколько у него получиться в интервале между запуском скрипта (в нашем случае, в интервале 15 минут), после запуска скрипта он заблокируется
IP злоумышленника блокируется программой PeerBlock, которая бесплатна в распостранении, в описании есть ссылка на сайт разработчика
Все это реально работает, с учетом правильной настройки PowerShell (разрешить исполнять скрипты и запускать в планировщике с наивысшими правами с параметрами скрипта), также обновите framework хотя бы до версии 3.0.
Единственный минус этого скрипта это то, что если вы сами сидя например дома будете подключатся к своему серверу на работе через инет и ошибетесь в наборе пароля, то тогда вы попадете в бан и не сможете подключиться. Это проверенео на своем опыте))). потом необходимо будет убрать ip из бан листа и снова можно будет подключаться.
Так вот, чтобы это не произошло необходимо в скрипт добавить условие при котором сортировка по уникальности производилась только тогда когда один и тот же ip пытался подключиться к вам более например 5 раз.
(5)
да, этим безусловно нужно заняться (сейчас пока у меня нет свободного времени на доработку и тестирование), у кого какие пожелания и доработки пишите в комменты.
Либо с другого ip адреса под правильным именем и паролем, либо локально)
Не совсем понял , зачем все таки нужен этот механизм? Есть же штатный встроенный в Windows . В локальных политиках безопасности можно выставить после скольких не успешных попыток блокировать учетную запись, и на какой период .
(7) а здесь учетка не блокируется, можно с другого IP под ней зайти
не произошло необходимо в скрипт добавить условие при котором сортировка по уникальности производилась только тогда когда один и тот же ip пытался подключиться к вам более например 5 раз.
Присоединяюсь к вышенаписанному. Зачем изобретать велосипед напильником, когда уже всё есть готовое?
да лан вам нормальная тема человек захотел сам сделать от меня +
Не совсем понял , зачем все таки нужен этот механизм? Есть же штатный встроенный в Windows . В локальных политиках безопасности можно выставить после скольких не успешных попыток блокировать учетную запись, и на какой период .
(7) lavrov,
Так вот пример: подбирают пароль под конкретно мою учетку «admin», и согласно предлагаему Вами правилу она блокируется, и я остаюсь заблокированным. Наиболее частые имена для атаки, как показала история журнала, это admin, administrator, alex, user, test, sql.
(11) Теперь понял , плюсую .
Я сделал проще, подручными средствами:
запускаем gpedit.msc далее
Конфигурация компьютера -> Параметры безопасности -> Политика учетных записей -> Политика блокировки:
Здесь выставляем к-во неправильных паролей, через которое учетная запись будет заблокирована на хх минут.
Если Вы сами ошиблись, то через хх минут можете повторить попытку и войти снова.
Таким образом перебор может занять не один год )
Но самый действенный способ оказался следующий:
В настройках маршрутизатора я сделал перенаправление портов, к примеру, 3378 -> 3389
И с инета захожу по rdp добавляя к имени сервера :3378.
Порт 3389 стандартный и его все знают, потому и лупятся все кому не лень.
А в этом случае мой журнал безопасности вообще чистый уже целый год )
(13) Шас попадаются такие прошаренные перцы что просто смена порта мало их останавливает.
Я например делаю так
1. политиками блок аккаунта на 15 минут при 3 неудачных попытках авторизации
2. блокировка IP на 2 часа при 2 неудачных авторизациях
3. После авторизации по логину паролю авторизация по картинке (мыщой надо собрать простейший пазл из mhfpys[ элементов картинки).
Практика показала. что до 3 уровня проверки горе хакеры даже и не доходили.
8SiriuS8
а можно все таки подробнее……..
Дополнил скрипт White List и добавил отправку почты при срабатывании скрипта
Скрипт и сами базы SQL
Вот мое решение с белыми листами и настройками различными.
http://infostart.ru/public/462816/