无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 1199|回复: 11
打印 上一主题 下一主题

[讨论] 预防爆破远程桌面、MSSQL数据库和Mysql数据库PowerShell脚本

[复制链接]
跳转到指定楼层
1#
发表于 2025-1-16 15:03:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 1G空间100元 于 2025-1-18 17:15 编辑

服务器上安装了MSSQL数据库
查看事件日志 发现有外网IP不停的爆破远MSSQL数据库 产生大量的记录日志

用PowerShell脚本来提取事件日志中的IP 然后创建防火墙规则进行屏蔽

将以下脚本保存为PS1后 创建计划任务运行
MSSQL数据库被爆破将IP加入黑名单的PowerShell脚本
需要用system用户运行脚本;可以创建计划任务用system执行计划任务
# 使用 Get-WinEvent 检索事件日志,找到日志ID,提取其中的远程IP地址,将这个地址写入到防火墙阻止规则内
# 设置控制台输出编码为 GB2312 或 GBK
$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::GetEncoding("GB2312")
# 定义日志名称和事件ID
$logName = "Application" # 安全日志=Security 应用程序日志=Application 对应<Channel>的值
$eventID = 18456  # 事件ID 对应<EventID>的值
# 定义时间范围
$startTime = (Get-Date).AddDays(-1)  # 从一天前开始
$endTime = Get-Date                  # 到现在
# 检索指定时间范围内的事件日志条目
$filter = @{
    LogName   = $logName
    ID        = $eventID
    StartTime = $startTime
    EndTime   = $endTime
}
# 使用MaxEvents来设置最大日志读取条数,Oldest按事件写入的顺序输出事件,从最早到最新
$events = Get-WinEvent -FilterHashtable $filter -MaxEvents 100 -Oldest
foreach ($event in $events) {
    $message = $event.Message
    # 显示完全日志内容,用于调试
    # Write-Output "完全日志内容:"
    # Write-Output $message
    # Write-Output "----------------------------------------"
    # 使用正则匹配IP地址,这里由于Windows语言版本的不同,这样匹配成功率更高
    if ($message -match "(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::(\d{1,5}))?") {
        $sourceAddress = $matches[1] # 匹配到IP地址
        if ($sourceAddress -eq "127.0.0.1" -or $sourceAddress -eq "0.0.0.0") {
            # 如果是本地回环地址,则跳过后续操作
            # 如果是安全的,你已知的IP也可以加到这个步骤内
            Write-Output "IP Address is localhost (127.0.0.1). 跳过防火墙规则创建."
            Write-Output "----------------------------------------"
            continue
        }
        # 检查防火墙规则是否已存在
        $existingRule = Get-NetFirewallRule -DisplayName "Block IP $sourceAddress" -ErrorAction SilentlyContinue
        if ($existingRule) {
            Write-Output "IP $sourceAddress 防火墙规则已存在,跳过创建."
        } else {
            # 创建防火墙规则禁止连接该IP地址
            New-NetFirewallRule -DisplayName "Block IP $sourceAddress" -Direction Inbound -Action Block -RemoteAddress $sourceAddress
            Write-Output "IP $sourceAddress 防火墙规则已新建"
        }
    } else {
        $sourceAddress = "N/A"
    }
    Write-Output $sourceAddress
}



2#
 楼主| 发表于 2025-1-16 15:05:45 | 只看该作者
本帖最后由 1G空间100元 于 2025-1-18 15:50 编辑

再用自动任务 每隔1小时自动运行脚本 将爆破的IP自动加入到防火墙中屏蔽
其中MSSQL数据库被爆破将IP加入黑名单的PowerShell脚本
需要用system用户运行脚本;可以创建一个计划任务,用户是system执行计划任务
回复

使用道具 举报

3#
发表于 2025-1-16 16:46:19 | 只看该作者
感谢分享
回复

使用道具 举报

4#
发表于 2025-1-16 16:56:28 | 只看该作者
谢谢分享
回复

使用道具 举报

5#
发表于 2025-1-16 17:41:19 | 只看该作者
很想知道第3条规则怎么修改
回复

使用道具 举报

6#
发表于 2025-1-16 18:43:02 | 只看该作者
感谢分享
回复

使用道具 举报

7#
发表于 2025-1-16 19:36:15 | 只看该作者
谢谢分享
回复

使用道具 举报

8#
发表于 2025-1-16 20:24:53 | 只看该作者
谢谢分享
回复

使用道具 举报

9#
发表于 2025-1-16 20:25:35 | 只看该作者
下载试试
回复

使用道具 举报

10#
发表于 2025-1-17 00:17:10 | 只看该作者
感谢分享
回复

使用道具 举报

11#
发表于 2025-1-21 13:28:33 | 只看该作者
感谢分享
回复

使用道具 举报

12#
发表于 2025-1-25 21:15:04 | 只看该作者

谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-2-20 05:05

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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