Форум программистов, компьютерный форум, киберфорум
PowerShell
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
1

Rule does not generate

21.09.2017, 16:48. Показов 2197. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
автор кода не я. уровень знаний абсолютный новичок. корректировал некоторые данные основываясь на логике и подсказках гугла. скрипт не работает до конца как я понял, потому как после запуска выдается лишь "MY BLACKLIST rule does not generate."
в чем косяк?

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$regex2 = [regex] "Сетевой адрес источника:\t(\d+\.\d+\.\d+\.\d+)";
$MyIp = "192.168.1.111";
$deny_count = 5;
$deny_rule_name = "MY BLACKLIST"
###################### Config ######################
$fw=New-object -comObject HNetCfg.FwPolicy2; 
$RuleCHK=$fw.rules | where-object {$_.name –eq $deny_rule_name}
if(!$RuleCHK){ $deny_rule_name + " rule does not generate."; exit; }
$blacklist = @();
$list ="";
$startTime = (get-date);
"-----------------------------"
"log searching Start : " + $startTime;
"-----------------------------"
$ips = get-eventlog Security | Where-Object {$_.EventID -eq 4625 } | foreach {
$m = $regex2.Match($_.Message); $ip = $m.Groups[1].Value; $ip; } | Sort-Object | Tee-Object -Variable list | Get-Unique
if($list.length -gt 0) {
foreach ( $attack_ip in $list)
{
if($attack_ip){
$myrule = $fw.Rules | where {$_.Name -eq $deny_rule_name} | select -First 1; 
if (-not ($blacklist -contains $attack_ip))
{
$attack_count = ($list | Select-String $attack_ip -SimpleMatch | Measure-Object).count;
if ($attack_count -ge $deny_count) {
if (-not ($myrule.RemoteAddresses -match $attack_ip) -and -not ($attack_ip -like $MyIp))
{
"Found RDP attacking IP on 3389: " + $attack_ip + ", with count: " + $attack_count;
$blacklist = $blacklist + $attack_ip;
"Adding this IP into firewall blocklist: " + $attack_ip;
$myrule.RemoteAddresses+=(", "+$attack_ip);
netsh.exe advfirewall firewall add rule name="$deny_rule_name" dir=in action=block localip=any remoteip="$attack_ip" profile="any"
interfacetype="any"
#echo $attack_ip >> C:\BlackListIP.txt
} else {
$attack_ip + " : Already registered IP"
}
}
}
}
}
$answer = read-host "`ndo you want delete security event log, yes or no"
if ($answer -like "*y*" -and -not $Verbose) {
Clear-EventLog -LogName Security
cls
"Security event log has been deleted"
}
else {
# "`nScript terminated.`nPlease use your testing VM instead.`n" ; exit
}
}else{
"Ошибка аутентификации. Журнал событий отсутствует.."
}
$endTime = (get-date);
"-----------------------------"
" Общее время : " + ($endTime$startTime ) ;
"…Done…"
"-----------------------------"
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.09.2017, 16:48
Ответы с готовыми решениями:

rewrite Rule
Здравствуйте, помгите сделать ЧПУ. делаю так, но ничего не получается. RewriteEngine On...

Rewrite Rule
Нужно чтобы при переходе на страницу /topic1#post3555 открывалась страница...

generate ()
нужно создать программу используя generate (). Нужно сгенерировать 4 числа от 0 до 3. Нашел ...

Nginx rewrite rule
Как настроить рулзы чтобы когда я вводил такой урл ...

34
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
21.11.2017, 18:58 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от modice Посмотреть сообщение
2008 r2 enterprise sp1
Такого под рукой нет, поэтому проверить не могу...

На 2012R2 и выше, я бы переписал весь этот скрипт иначе:

- IP для блокировки находить в журнале: Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational
- Правило фаервола менять с помощью стандартного Set-NetFirewallRule
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
21.11.2017, 19:01  [ТС] 22
на 2012R2 этот код работать не будет?
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
21.11.2017, 20:17 23
Цитата Сообщение от modice Посмотреть сообщение
на 2012R2 этот код работать не будет?
Если вы про ваш скрипт, то с виду должен работать и на 2012R2. Просто я имел в виду, что на 2012R2 для решения этой задачи, можно обойтись без всяких regex и New-object:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
$TimeInterval = 10 #minutes
$MaxCount = 5
$FirewallRuleName = "MY BLACKLIST"
$rule = "Windows Inbound Firewall Rule: `"$FirewallRuleName`""
 
function Write-Log ($str) { "$((Get-Date).ToString()) $str" | ac 'C:\Temp\BLACKLIST.txt' -Encoding Unicode}
 
$Events = Get-WinEvent -EA SilentlyContinue -FilterHashtable @{`
    LogName = “Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational”;`
    StartTime = (Get-Date).AddMinutes(-$TimeInterval);`
    Level = 3;`
    ID = 140}
 
$FirewallRule = Get-NetFirewallRule -Direction Inbound -Enabled True -Action Block | ? DisplayName -eq $FirewallRuleName
 
foreach ($item in $Events | select @{N='IPString';E={([xml]$_.ToXml()).Event.EventData.Data.InnerText}} | group IPString | ? Count -ge $MaxCount)
{
       
    $IP = $item.Name
    
    Write-Log "Обнаружено $($item.Count) попыток RDP-входа (с неправильным логином или паролем) на сервере: $env:COMPUTERNAME с IP: $IP"
            
    if ($FirewallRule)
    {
        $RemoteAddress = @(($FirewallRule | Get-NetFirewallAddressFilter).RemoteAddress)
        
        if ($RemoteAddress -contains $IP)
        {
            "IP: $IP уже есть в $rule" | ac $LogFile -Encoding Unicode
        }
        else
        {
            $RemoteAddress += $IP
            $FirewallRule | Set-NetFirewallRule -RemoteAddress $RemoteAddress
            Write-Log "IP: $IP добавлен в $rule"
        }
    }
    else
    {
        Write-Log "IP: $IP не заблокирован, т.к. $rule - не найдено!"
    }    
       
}
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
22.11.2017, 10:14  [ТС] 24
в чем может быть затык со скриптом, почему в PowerShell ISE все работает а через PowerShell нет(((((((( скрипт точно рабочий, что ему еще надо?

Добавлено через 10 минут
или может есть способ как то досконально посмотреть что и как делает скрипт во время выполнения, на чем затыкается?
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 10:31 25
Цитата Сообщение от modice Посмотреть сообщение
или может есть способ как то досконально посмотреть что и как делает скрипт во время выполнения, на чем затыкается?
Start-Transcript

+ для проверки, просто запустите в cmd

Код
powershell -file "c:\scripts\script01.ps1"
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
22.11.2017, 11:02  [ТС] 26
-----------------------------
log searching Start : 11/22/2017 07:58:34
-----------------------------
-----------------------------
Total time taken: 00:00:12.7968750
Done
-----------------------------
это из cmd, иными словами он ничего не делает.
Start-Transcript ничего не пишет в логи кроме того что указано в самом скрипте.

Добавлено через 2 минуты
у меня чувство что есть какой то кэш, или что то вроде того. ise же работает..... это не дает покоя
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 11:29 27
Цитата Сообщение от modice Посмотреть сообщение
это из cmd, иными словами он ничего не делает.
А вы уверены, что за последние 10 минут у вас есть нужные события?

PowerShell
1
get-eventlog Security -after (Get-Date).AddMinutes(-10)| Where-Object {$_.EventID -eq 4625}
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
22.11.2017, 11:45  [ТС] 28
я увеличивал интервал до нескольких часов чтоб наверняка захватить все что есть

Добавлено через 2 минуты
могу в реальном времени продемонстрировать, путем скайпа например.

Добавлено через 9 минут
есть один момент, время четко указано, он сразу выводит события попадающие в этот интервал. но, после как вывел результаты он как будто что то делает еще, может быть продолжает смотреть дальше логи.
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 11:46 29
...
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
22.11.2017, 12:13  [ТС] 30
что то не то сказал?

Добавлено через 23 минуты
повторю что разница в действиях на двух идентичных машинах была в моей ошибке внесения правильного ip на первой машине. на второй все работает идеально. скрипты идентичны за исключением MyIp.
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
22.11.2017, 13:22 31
Цитата Сообщение от modice Посмотреть сообщение
повторю что разница в действиях на двух идентичных машинах была в моей ошибке внесения правильного ip на первой машине. на второй все работает идеально. скрипты идентичны за исключением MyIp.
Проверьте, что у вас на обоих серверах есть нужные события:

PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
$TimeInterval = 10 # min
'server1','server2' | % {Get-WinEvent -Comp $_ -EA SilentlyContinue -FilterHashtable @{`
    LogName = “Security”;`
    StartTime = (Get-Date).AddMinutes(-$TimeInterval);`
    ID = 4625}
} | select TimeCreated,
           MachineName,
           Id,
           TaskDisplayName,
           KeywordsDisplayNames,
           @{N='IP';E={(([xml]$_.ToXml()).event.EventData.Data | ? Name -eq 'IpAddress').'#text'}},
           @{N='TargetUserName';E={(([xml]$_.ToXml()).event.EventData.Data | ? Name -eq 'TargetUserName').'#text'}},
           @{N='WorkstationName';E={(([xml]$_.ToXml()).event.EventData.Data | ? Name -eq 'WorkstationName').'#text'}} | ft -a
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
23.11.2017, 09:41  [ТС] 32
все встало на свои места после изменений
PowerShell
1
2
 $ips = Get-WinEvent -FilterHashtable @{LogName = "Security";ID = 4625;StartTime = (Get-Date).AddMinutes(-800)} | foreach {
$_.Properties[19].Value } | Where {$_ -as [IPAddress] } | Sort-Object | Tee-Object -Variable list | Get-Unique
Добавлено через 19 часов 34 минуты
утром проверил. были неудачные аудиты, ip был в списке брандмауэра. но, атаки продолжались в реальном времени. добавил руками интереса ради ip в список заново, не помогло. может ли быть такое, что из-за частого запуска(каждые 10 мин.) и попыток добавления адреса в список, брандмауэр начинает неадекватно себя вести и пропускать адрес из списка? или попался хацкер чуть умнее остальных?
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
23.11.2017, 10:40 33
Цитата Сообщение от modice Посмотреть сообщение
ip был в списке брандмауэра. но, атаки продолжались в реальном времени. добавил руками интереса ради ip в список заново, не помогло.
Проверьте настройки правила\брандмауэра. Включите логи брандмауэра и посмотрите что происходит с этим IP. И разве сложно протестировать работу правила самостоятельно? Берёте тестовую машину, добавляете её IP в это правило и пытаетесь подключится к открытому порту, например: telnet server1 3389
0
0 / 0 / 0
Регистрация: 21.09.2017
Сообщений: 51
23.11.2017, 10:59  [ТС] 34
разумеется тестировал, все запросы остаются без ответа. журнал к сожалению был выключен.
0
1885 / 1107 / 428
Регистрация: 22.01.2016
Сообщений: 3,050
23.11.2017, 11:27 35
Цитата Сообщение от modice Посмотреть сообщение
журнал к сожалению был выключен
Первым делом включайте журнал брандмауэра (их два - заблокировано и разрешено) и смотрите всё что связано с IP, от которого как вы считаете проходят соединения.
0
23.11.2017, 11:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2017, 11:27
Помогаю со студенческими работами здесь

Rewrite rule 2 условия
Коллеги, приветствую! С mod_rewrite редко стыкаюсь, появилась задача сделать редирект при...

apache и rewrite rule
подскажите как rewrite rule в апаче работает и что с ним можно делать? зарание благодарени

Ошибка generate
OBRABOTKA STORAGE 1 REGULIROVKA STORAGE 2 SBORKA STORAGE 2 GENERATE 10 SPLIT 3, MET1...

Блок GENERATE
Добрый день! Не могу разобраться с блоком GENERATE. По заданию в одноканальную СМО с накопителем...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru