找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14983|回复: 4

[问题求助] [已解决]PowerShell记录日志内容到文本并修改防火墙IP

[复制链接]
发表于 2022-8-23 22:13:50 | 显示全部楼层 |阅读模式
本帖最后由 522235677 于 2022-8-29 22:00 编辑
  1. $evt=Get-WinEvent -LogName Security -FilterXPath "Event[System[EventID=4625 and TimeCreated[timediff(@SystemTime)<=600000]]]" -MaxEvents 1 -ErrorAction SilentlyContinue
  2. if($null -ne $evt){
  3.     $ip = $evt.Properties[19].Value
  4.     $username = $evt.Properties[5].Value
  5.     $ip = curl "https://www.abc.cn/failed?ip=$($ip)&username=$($username)"
  6.     if ($ip.StatusCode -eq 200){
  7.         if ($ip.Content -ne ''){
  8.             $firewallRuleDisplayName = "远程桌面黑名单"
  9.             $newRemoteIP = $ip.Content
  10.             Get-NetFirewallRule -DisplayName $firewallRuleDisplayName | ForEach-Object {
  11.               $addrfilter = $_ | Get-NetFirewallAddressFilter
  12.               $arrOldRemoteIP = $addrfilter.CimInstanceProperties['RemoteAddress'].Value
  13.               $arrNewRemoteIP = @(
  14.                 if ($null -ne $arrOldRemoteIP) { $arrOldRemoteIP }
  15.                 $newRemoteIP
  16.               ) | Sort-Object -Unique
  17.               $_ | Set-NetFirewallRule -RemoteAddress $arrNewRemoteIP
  18.             }
  19.         }
  20.     }
  21. }
复制代码
@flashercs大佬求助,上面的代码是之前请教后我自己给结合了一下,功能是当有远程桌面登录失败日志产生时将ip和用户名提交到一个url,如果url返回了一个IP地址,就把返回的那个IP地址加入的防火墙中。

现在想改进一下,当有事件EventID=4625发生时,记录IP、用户名、当前时间到一个文本(文本以当天时间命名,比如d:\20200823.txt),当当天记录的这个IP达到5次时就在防火墙加入阻止IP。
发表于 2022-8-24 08:28:33 | 显示全部楼层
本帖最后由 flashercs 于 2022-8-24 19:05 编辑
  1. $evt = Get-WinEvent -LogName Security -FilterXPath "Event[System[EventID=4625 and TimeCreated[timediff(@SystemTime)<=600000]]]" -MaxEvents 1 -ErrorAction SilentlyContinue
  2. $csvfile = "d:\$(Get-Date -Format 'yyyyMMdd').txt"
  3. $maxcount = 5
  4. if ($null -ne $evt) {
  5.   $ip = $evt.Properties[19].Value
  6.   $username = $evt.Properties[5].Value
  7.   $alpso = New-Object System.Collections.ArrayList
  8.   if (Test-Path -LiteralPath $csvfile) {
  9.     $null = Import-Csv -Path $csvfile -Encoding UTF8 -OutVariable alpso
  10.   }
  11.   $pso = 0 | Select-Object -Property @{n = 'IP'; e = { $ip } }, @{n = 'UserName'; e = { $username } }, @{n = 'Time'; e = { Get-Date } }
  12.   $null = $alpso.Add($pso)
  13.   $alpso | Export-Csv -Path $csvfile -Encoding UTF8 -NoTypeInformation
  14.   if (@($alpso | Where-Object { $_.IP -eq $ip }).Count -ge $maxcount) {
  15.     $firewallRuleDisplayName = "远程桌面黑名单"
  16.     $newRemoteIP = $ip
  17.     Get-NetFirewallRule -DisplayName $firewallRuleDisplayName | ForEach-Object {
  18.       $addrfilter = $_ | Get-NetFirewallAddressFilter
  19.       $arrOldRemoteIP = $addrfilter.CimInstanceProperties['RemoteAddress'].Value
  20.       $arrNewRemoteIP = @(
  21.         if ($null -ne $arrOldRemoteIP) { $arrOldRemoteIP }
  22.         $newRemoteIP
  23.       ) | Sort-Object -Unique
  24.       $_ | Set-NetFirewallRule -RemoteAddress $arrNewRemoteIP
  25.     }
  26.   }
  27. }
复制代码

评分

参与人数 1技术 +1 收起 理由
522235677 + 1 技术

查看全部评分

 楼主| 发表于 2022-8-24 14:25:34 | 显示全部楼层
回复 2# flashercs


    灰常感谢大佬,但是又不好意思麻烦大佬再帮忙修改一下,之前url请求的那个不需要了,麻烦剔除
请大佬喝茶
发表于 2022-8-24 19:06:31 | 显示全部楼层
回复 3# 522235677


    改了一下
 楼主| 发表于 2022-8-28 21:40:24 | 显示全部楼层
回复 4# flashercs


    感谢大佬,测试没问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 22:03 , Processed in 0.019248 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表