PowerShell 语言 监控用户登录尝试 记录失败次数超过 5 次的 IP

PowerShell阿木 发布于 2025-06-08 10 次阅读


PowerShell 监控用户登录尝试:记录失败次数超过 5 次的 IP

在网络安全领域,监控用户登录尝试是一项至关重要的任务。通过分析登录尝试,我们可以及时发现异常行为,如暴力破解等,从而采取措施保护系统安全。本文将围绕 PowerShell 语言,展示如何实现一个简单的登录尝试监控脚本,记录失败次数超过 5 次的 IP 地址。

1.

PowerShell 是一种强大的命令行脚本语言,它提供了丰富的命令和模块,可以轻松地与 Windows 系统进行交互。在本篇文章中,我们将使用 PowerShell 来监控用户登录尝试,并记录失败次数超过 5 次的 IP 地址。

2. 监控登录尝试的原理

要监控登录尝试,我们需要关注以下几个方面:

- 获取登录尝试的日志信息
- 分析日志信息,提取登录尝试的 IP 地址
- 统计每个 IP 地址的登录失败次数
- 当某个 IP 地址的失败次数超过 5 次时,记录该 IP 地址

3. 实现监控脚本

以下是一个简单的 PowerShell 脚本,用于监控登录尝试并记录失败次数超过 5 次的 IP 地址。

powershell
定义一个函数,用于获取登录尝试的日志信息
function Get-LoginAttempts {
param (
[string]$logPath
)

使用 Get-EventLog 命令获取登录尝试的日志信息
$loginAttempts = Get-EventLog -LogName Security -Source "Logon" -After (Get-Date).AddDays(-1)

返回日志信息
return $loginAttempts
}

定义一个函数,用于统计每个 IP 地址的登录失败次数
function Count-FailedLoginAttempts {
param (
[System.Object[]]$loginAttempts
)

创建一个字典,用于存储 IP 地址和失败次数
$ipFailures = @{}

遍历登录尝试信息
foreach ($attempt in $loginAttempts) {
获取登录尝试的 IP 地址
$ipAddress = $attempt.ReplacementValue -split " " | Select-Object -Last 1

如果 IP 地址已存在于字典中,则增加失败次数
if ($ipFailures.ContainsKey($ipAddress)) {
$ipFailures[$ipAddress]++
} else {
否则,将 IP 地址添加到字典中,并设置失败次数为 1
$ipFailures.Add($ipAddress, 1)
}
}

返回字典
return $ipFailures
}

定义一个函数,用于记录失败次数超过 5 次的 IP 地址
function Record-FailedIPs {
param (
[System.Collections.Generic.Dictionary[string, int]]$ipFailures
)

遍历字典,找出失败次数超过 5 次的 IP 地址
foreach ($ip in $ipFailures.Keys) {
if ($ipFailures[$ip] -gt 5) {
记录该 IP 地址
Write-Host "IP Address: $ip - Failed Attempts: $($ipFailures[$ip])"
}
}
}

主程序
try {
获取登录尝试的日志信息
$loginAttempts = Get-LoginAttempts -logPath "C:WindowsSystem32winevtLogsSecurity.evtx"

统计每个 IP 地址的登录失败次数
$ipFailures = Count-FailedLoginAttempts -loginAttempts $loginAttempts

记录失败次数超过 5 次的 IP 地址
Record-FailedIPs -ipFailures $ipFailures
} catch {
Write-Host "An error occurred: $_"
}

4. 脚本说明

- `Get-LoginAttempts` 函数用于获取登录尝试的日志信息。这里我们使用了 `Get-EventLog` 命令,它可以从 Windows 事件日志中检索信息。
- `Count-FailedLoginAttempts` 函数用于统计每个 IP 地址的登录失败次数。它通过遍历登录尝试信息,并使用字典来存储 IP 地址和失败次数。
- `Record-FailedIPs` 函数用于记录失败次数超过 5 次的 IP 地址。它遍历字典,并输出那些失败次数超过 5 次的 IP 地址。

5. 总结

本文介绍了如何使用 PowerShell 语言监控用户登录尝试,并记录失败次数超过 5 次的 IP 地址。通过编写简单的脚本,我们可以实现对登录尝试的实时监控,从而提高系统的安全性。在实际应用中,可以根据需要扩展脚本功能,如发送警报、记录日志等。