@echo off title Windows 3389端口(RDP) IP白名单配置脚本 color 0A :: ========================================== :: 请在此处修改你要放行的 IP 地址! :: 多个 IP 之间用英文逗号 (,) 隔开,不能有空格。 :: 支持单个IP (如 192.168.1.100) 或 IP段 (如 192.168.1.0/24) :: ========================================== set ALLOWED_IPS=207.56.13.29 echo ========================================== echo 正在检查管理员权限... :: 检查是否以管理员身份运行 >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' ( echo [!] 请右键点击该脚本,选择“以管理员身份运行”。 echo 正在尝试自动获取管理员权限... goto UACPrompt ) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" echo [OK] 已获取管理员权限。 echo ========================================== echo 准备配置 3389 端口白名单... echo 允许连接的 IP 列表: %ALLOWED_IPS% echo ========================================== echo 按任意键开始配置 (请再次确认你的IP在列表中!)... pause >nul :: 1. 删除旧的自定义规则(防止重复添加) echo [1/3] 清理旧的自定义白名单规则... netsh advfirewall firewall delete rule name="3389远程桌面" >nul 2>&1 :: 2. 禁用系统默认的 RDP 规则 :: (Windows 防火墙的规则是“允许”优先,如果默认的“允许所有IP”规则处于启用状态,白名单将无效) echo [2/3] 禁用系统默认的远程桌面全放通规则... :: 中文系统规则名 netsh advfirewall firewall set rule name="远程桌面 - 用户模式(TCP-In)" new enable=no >nul 2>&1 :: 英文系统规则名 netsh advfirewall firewall set rule name="Remote Desktop - User Mode (TCP-In)" new enable=no >nul 2>&1 :: 3. 添加新的精准白名单规则 echo [3/3] 应用新的 IP 白名单规则... netsh advfirewall firewall add rule name="3389远程桌面" dir=in action=allow protocol=TCP localport=3389 remoteip=%ALLOWED_IPS% description="自定义的3389端口IP白名单" >nul 2>&1 if '%errorlevel%' EQU '0' ( echo ========================================== echo [成功] 防火墙配置完成! echo 只有以下 IP 可以访问本机的 3389 端口: echo %ALLOWED_IPS% echo ========================================== ) else ( echo [失败] 规则添加失败,请检查防火墙服务是否开启。 ) pause