Windows 10 遠程桌面(RDP)防暴力破解BAT腳本

?0x01? ??設置5次失敗后鎖定賬戶30分鐘

secpol.msc
# 導航到: 安全設置 > 賬戶策略 > 賬戶鎖定策略

0x02? ? ?復制保存到? BlockFailedRDP.ps1

<#
.DESCRIPTION
此腳本分析Windows安全日志中的RDP登錄失敗事件(ID 4625),
統計每個IP的失敗次數,對達到閾值的IP自動創建防火墻阻止規則。.VERSION
1.2
#># 設置正確的編碼環境(UTF-8)
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8# 配置參數
$config = @{LogName = "Security"EventID = 4625TimeRangeDays = 1BlockThreshold = 5MaxEvents = 5000Whitelist = @("192.168.1.100", "10.0.0.1", "127.0.0.1") # 信任IP列表RulePrefix = "AutoBlockRDP" # 防火墻規則前綴LogFile = "D:\SecurityScripts\Logs\RDP_Protection.log" # 日志文件路徑
}# 創建日志目錄
if (-not (Test-Path (Split-Path $config.LogFile -Parent))) {New-Item -ItemType Directory -Path (Split-Path $config.LogFile -Parent) -Force | Out-Null
}# 記錄日志函數
function Write-Log {param([string]$Message,[ValidateSet("INFO","WARNING","ERROR")][string]$Level = "INFO")$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"$logEntry = "[$timestamp][$Level] $Message"Add-Content -Path $config.LogFile -Value $logEntry -Encoding UTF8if ($Level -eq "ERROR") { Write-Error $Message }elseif ($Level -eq "WARNING") { Write-Warning $Message }else { Write-Output $Message }
}# 主程序
try {# 1. 收集日志數據$startTime = (Get-Date).AddDays(-$config.TimeRangeDays)$endTime = Get-DateWrite-Log " "Write-Log "開始分析RDP登錄失敗日志 ($startTime 至 $endTime)"$filter = @{LogName   = $config.LogNameID        = $config.EventIDStartTime = $startTimeEndTime   = $endTime}$events = Get-WinEvent -FilterHashtable $filter -MaxEvents $config.MaxEvents -Oldest -ErrorAction Stop# 2. 統計IP失敗次數$ipFailCount = @{}$totalEvents = 0foreach ($event in $events) {$totalEvents++if ($event.Message -match "(?<IP>\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::\d{1,5})?") {$ip = $matches.IPif ($config.Whitelist -notcontains $ip) {$ipFailCount[$ip] = ($ipFailCount[$ip] + 1)}}}Write-Log "共分析 $totalEvents 條日志記錄,發現 $($ipFailCount.Count) 個唯一IP地址"Write-Log "======================================================================"Write-Log " "# 3. 處理惡意IP$blockedIPs = 0$skippedIPs = 0foreach ($ip in $ipFailCount.Keys) {$failCount = $ipFailCount[$ip]if ($failCount -ge $config.BlockThreshold) {$ruleName = "$($config.RulePrefix)_$ip"# 檢查是否已存在規則if (-not (Get-NetFirewallRule -DisplayName $ruleName -ErrorAction SilentlyContinue)) {try {New-NetFirewallRule -DisplayName $ruleName `-Direction Inbound `-Action Block `-RemoteAddress $ip `-Description "自動阻止于 $(Get-Date -Format 'yyyy-MM-dd'), 失敗次數: $failCount" `-ErrorAction StopWrite-Log "已創建防火墻規則阻止IP: $ip (失敗次數: $failCount)"$blockedIPs++}catch {Write-Log "創建防火墻規則失敗 ($ip): $_" -Level "ERROR"}}else {Write-Log "IP $ip 已在阻止列表中 (失敗次數: $failCount)"$skippedIPs++}}else {Write-Log "IP $ip 未達阻止閾值 (失敗次數: $failCount)"}}# 4. 生成報告Write-Log " "$report = @"===== RDP防護報告 =====
分析時間范圍: $($startTime.ToString('yyyy-MM-dd HH:mm')) 至 $($endTime.ToString('yyyy-MM-dd HH:mm'))
分析日志條目: $totalEvents
檢測到的唯一IP: $($ipFailCount.Count)
達到閾值的IP: $($ipFailCount.Values.Where({$_ -ge $config.BlockThreshold}).Count)
新增阻止的IP: $blockedIPs
已有規則的IP: $skippedIPs
"@Write-Log $report# 5. 清理舊規則(可選)# Get-NetFirewallRule | Where { $_.DisplayName -like "$($config.RulePrefix)*" -and $_.CreationTime -lt (Get-Date).AddDays(-30) } | Remove-NetFirewallRule}
catch {Write-Log "腳本執行出錯: $_" -Level "ERROR"exit 1
}exit 0

0x03? ? 使用PowerShell執行腳本:

.\BlockFailedRDP.ps1

0x04? ? 設置定時任務?

# 創建任務觸發器(每15分鐘運行一次)
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) `-RepetitionInterval (New-TimeSpan -Minutes 15) `-RepetitionDuration ([TimeSpan]::MaxValue)# 創建任務動作
$action = New-ScheduledTaskAction `-Execute "powershell.exe" `-Argument "-ExecutionPolicy Bypass -File `"D:\SecurityScripts\BlockFailedRDP.ps1`""# 注冊計劃任務
Register-ScheduledTask `-TaskName "RDP防護" `-Trigger $trigger `-Action $action `-RunLevel Highest `-User "SYSTEM"  # 使用SYSTEM賬戶運行,如果報錯,改成當前使用的賬戶# 查看任務是否添加成功
PS C:\Windows\system32> Get-ScheduledTask -TaskName "RDP防護"TaskPath                                       TaskName                          State
--------                                       --------                          -----
\                                              RDP防護                           Ready

0x05? ??如果提示系統禁止運行腳本:

# 以管理員身份打開PowerShell
Set-ExecutionPolicy RemoteSigned -Scope Process -Force# 測試運行(不會實際修改防火墻)
cd C:\SecurityScripts
.\BlockFailedRDP.ps1 -WhatIf

? ? 如果遇到中文亂碼,使用PowerShell命令轉換編碼,或者用vscode轉碼。

# 將文件轉換為UTF-8 with BOM編碼
$content = Get-Content -Path "D:\SecurityScripts\BlockFailedRDP.ps1" -Raw
Set-Content -Path "D:\SecurityScripts\BlockFailedRDP.ps1" -Value $content -Encoding UTF8

? ? 其他幾種檢查方法:

# 1. 檢查腳本錯誤
$Error[0] | Format-List * -Force# 2. 測試事件日志訪問
Get-WinEvent -LogName Security -MaxEvents 1 -ErrorAction Stop# 3. 檢查防火墻模塊
Get-Module -Name NetSecurity -ListAvailable# 4. 查看最近的4625事件
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4625} -MaxEvents 5 | Select-Object TimeCreated, Message# 備份規則:定期導出防火墻配置
Export-NetFirewallRule -Path "C:\FirewallBackup\firewall-rules.xml"# 查看所有腳本創建的規則
Get-NetFirewallRule | Where-Object {$_.DisplayName -like "Block IP *" 
} | Format-Table DisplayName, Enabled, Direction, Action# 啟用RDP網絡級認證(NLA),設置為1
(Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication").UserAuthenticationSet-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "UserAuthentication" -Value 1# 修改默認RDP端口,修改注冊表
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp" -Name "PortNumber" -Value 3390
# 重啟生效
Restart-Service TermService -Force# 限制RDP訪問IP, 創建防火墻規則只允許特定IP訪問
New-NetFirewallRule -DisplayName "允許特定IP訪問RDP" `-Direction Inbound `-Protocol TCP `-LocalPort 3389,3390 `-RemoteAddress 192.168.1.0/24,123.45.67.89 `-Action Allow

0x99? ? 幾種安全措施,根據實際情況選擇:

安全措施作用實施方法
修改端口減少掃描攻擊注冊表 + 防火墻
NLA防止未授權連接遠程桌面設置
IP 白名單限制訪問來源防火墻/安全組
MFA防止暴力破解微軟 Authenticator
VPN/RD Gateway加密通信企業級部署

通過以上方法,可大幅降低 RDP 被攻擊的風險。對于企業用戶,建議結合?RD Gateway(需要Win服務器) + MFA(需微軟賬戶) + IP 白名單?提供最高級別的保護。

如果還是報錯(允許腳本本地運行):

????????

PS D:\SecurityScripts> Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned -ForcePS D:\SecurityScripts> Get-ExecutionPolicy -ListScope ExecutionPolicy----- ---------------
MachinePolicy       UndefinedUserPolicy       UndefinedProcess       UndefinedCurrentUser    RemoteSignedLocalMachine       Undefined

????????

也可以給腳本進行數字簽名(自簽也可以)

呦,發現github有現成的了?
https://gist.github.com/example/secure-rdp-script?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90803.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Chukonu 閱讀筆記

Chukonu&#xff1a;一個將原生計算引擎集成到 Spark 中的全功能高性能大數據框架 摘要 Apache Spark 是一種廣泛部署的大數據分析框架&#xff0c;它提供了諸如彈性、負載均衡和豐富的生態系統等吸引人的特性。然而&#xff0c;其性能仍有很大的改進空間。盡管用原生編程語言編…

51c視覺~3D~合集4

自己的原文哦~ https://blog.51cto.com/whaosoft/14084543 #VGGT-Long 首次將單目3D重建推向公里級極限&#xff01;南開、南大提出&#xff1a;分塊、循環、對齊&#xff0c;開源 近年來&#xff0c;3D視覺基礎模型&#xff08;Foundation Models&#xff09;在3D感…

實時云渲染將UE像素流嵌入業務系統,實現二維管理系統與數字孿生三維可視化程序的無縫交互

在數字孿生大屏可視化項目中&#xff0c;將實時云渲染技術嵌入業務系統已成為提升用戶體驗和工作效率的關鍵策略之一。將云渲染嵌入業務系統&#xff0c;用戶可以在執行業務操作時實時看到云渲染畫面的響應&#xff0c;同時對云渲染畫面的操作也能立即反饋到業務系統中。這種無…

Apache POI 介紹與使用指南

文章框架一、Apache POI 概述定義&#xff1a;Java API操作Microsoft Office格式文件核心功能&#xff1a;讀寫Excel&#xff08;.xls, .xlsx&#xff09;操作Word、PowerPoint等文檔優勢&#xff1a;開源免費、跨平臺、功能全面二、環境準備Maven依賴配置&#xff1a;<!-- …

Redis--哨兵機制詳解

1. 哨兵機制簡介Redis Sentinel&#xff08;哨兵&#xff09;是Redis的高可用性解決方案&#xff0c;它提供了監控、通知、自動故障轉移和配置提供者等功能。Sentinel系統可以監控多個Redis主服務器及其從服務器&#xff0c;并在主服務器失效時自動進行故障轉移&#xff0c;確保…

無人機機體結構設計要點難點分析

一、 設計要點1.輕量化&#xff1a;核心目標&#xff1a; 最大程度減輕結構重量&#xff0c;提升有效載荷能力、續航時間、飛行速度和機動性。實現手段&#xff1a; 選用高比強度/比剛度材料&#xff08;碳纖維復合材料、航空鋁合金、鈦合金、工程塑料&#xff09;、拓撲優化、…

AI時代的數據庫革命:電科金倉的“融合+AI“戰略解析

在人工智能時代的大變局下&#xff0c;數據庫要走向何方&#xff1f; 7月15日&#xff0c;中國電科旗下金倉數據庫以一場名為“融合進化 智領未來”的發布會&#xff0c;提出了自己的核心主張&#xff1a;真正的未來數據庫&#xff0c;是“融合”為體&#xff0c;“AI”為用。電…

與deepseek的問答:dot net與Borland VCL的關系

Borland VCL與.NET/C#關系分析borland delphi如神一般地存在&#xff01;試分析.net、c#與Borland VCL的關系。Borland Delphi及其VCL&#xff08;Visual Component Library&#xff09;框架在軟件開發史上確實具有傳奇地位&#xff0c;尤其在Windows桌面應用開發領域。而隨著.…

SAP在未啟用負庫存的情況下,庫存卻出現了負數-補充S4 1709 BUG

SAP在未啟用負庫存的情況下&#xff0c;庫存卻出現了負數-補充S4 1709 BUG共用物料合并發料&#xff1a;單行發料數量沒有超過庫存數量&#xff0c;但合計發料數量超過庫存數量了&#xff0c;系統還是可以過賬&#xff0c;沒有任何提示&#xff0c;如下圖所示&#xff1a;庫存數…

SpringBoot項目中常見注解

RequiredArgsConstructor 注解 類上添加該注解&#xff0c;Lombok 會自動生成一個構造函數&#xff0c;用于注入 final 或 NonNull 修飾的字段 ConfigurationProperties注解 用于將配置文件中的屬性注入到某個類的字段上 sky:jwt:admin-secret-key: itcastadmin-ttl: 7200000ad…

一鍵修復ipynb,Jupyter Notebook損壞文件

背景最近在寫一個數據分析項目時&#xff0c;不幸遇到了 斷電導致電腦重啟 的突發情況。當我再次打開 Jupyter Notebook 文件&#xff08;.ipynb&#xff09;時&#xff0c;發現文件已經損壞&#xff0c;Jupyter 無法正常讀取它&#xff0c;甚至有時直接報錯&#xff1a;Unread…

React入門學習——指北指南(第三節)

React 組件 在前面的內容中,我們了解了 React 的基礎知識和入門案例。本節將深入探討 React 中最核心的概念之一 —— 組件。組件是構建 React 應用的基礎,理解組件的工作原理和使用方法,對于掌握 React 開發至關重要。 什么是組件? 在 React 中,組件是具有獨立功能和 …

容器化環境下的服務器性能瓶頸與優化策略

更多云服務器知識&#xff0c;盡在hostol.com在容器化環境中&#xff0c;性能優化并不是一個簡單的“加硬件”或“增加資源”就能解決的問題。隨著技術的進步&#xff0c;越來越多的公司選擇使用容器技術&#xff08;如Docker、Kubernetes&#xff09;來提高應用的靈活性、可移…

GaussDB 數據庫架構師修煉(八) 等待事件(2)-ASP報告分析

1 ASP報告簡介ASP-Active Sesion Profile &#xff08;活躍會話檔案信息&#xff09;&#xff0c;ASP每秒獲取活躍會話事件&#xff0c;放到內存中&#xff0c;內存中的數據達閾值&#xff0c;會落盤gs_asp表中。ASP Report根據輸入的時間段與slot個數&#xff0c;從內存和磁盤…

CentOS7 安裝 Redis

在 CentOS 7 上配置 Redis 服務器需要完成安裝、配置和服務管理。以下是詳細步驟&#xff1a;安裝 Redis安裝依賴&#xff1a;yum install -y gcc tcl下載并解壓 Redis&#xff1a;cd /usr/local/wget https://download.redis.io/releases/redis-6.2.6.tar.gztar -zxvf redis-6…

《C++ list 完全指南:從基礎到高效使用》

《C list 完全指南&#xff1a;從基礎到高效使用》 文章目錄《C list 完全指南&#xff1a;從基礎到高效使用》一、forward_list和list比較二、list的接口介紹1.list的構造2.list iterator的使用3.list的容量操作4.list的訪問操作5.list的其他操作接口三、list的迭代器失效四、…

CIU32L051 DMA+Lwrb環形隊列實現串口無阻塞性數據的收發 + 數據百分百不丟失的實現

1.Lwrb的介紹&#xff08;博主功能的實現是基于RT-thread系統實現&#xff09; Lwrb是由Tilen Majerle編寫的一個線程安全的環形隊列&#xff0c;通常與DMA配合實現數據的無阻塞性收發&#xff0c;同時&#xff0c;配合DMA的傳輸過半中斷&#xff0c;傳輸完成中斷&#xff0c;以…

【C++】C++ 的入門知識2

本篇文章主要講解 C 的入門語法知識引用、inline 關鍵字與 nullptr 關鍵字。 目錄 1 引用 1&#xff09; 引用的概念與定義 &#xff08;1&#xff09; 引用的概念 &#xff08;2&#xff09; 引用的定義 2&#xff09; 引用的特性 3&#xff09; 引用的使用場…

基于Kafka實現動態監聽topic功能

生命無罪&#xff0c;健康萬歲&#xff0c;我是laity。 我曾七次鄙視自己的靈魂&#xff1a; 第一次&#xff0c;當它本可進取時&#xff0c;卻故作謙卑&#xff1b; 第二次&#xff0c;當它在空虛時&#xff0c;用愛欲來填充&#xff1b; 第三次&#xff0c;在困難和容易之間&…

機械學習初識--什么是機械學習--機械學習有什么重要算法

一、什么是機械學習機器學習&#xff08;Machine Learning&#xff09;是人工智能&#xff08;AI&#xff09;的一個重要分支&#xff0c;它使計算機能夠通過數據自動學習規律、改進性能&#xff0c;并在沒有明確編程的情況下完成特定任務。其核心思想是讓機器從數據中 “學習”…