![允许非管理员权限管理 Windows 防火墙](https://linux22.com/image/1580563/%E5%85%81%E8%AE%B8%E9%9D%9E%E7%AE%A1%E7%90%86%E5%91%98%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86%20Windows%20%E9%98%B2%E7%81%AB%E5%A2%99.png)
我正在尝试为我们的支持团队(非管理员)设置一个流程,以便可以远程启用或禁用一组 Windows 防火墙规则。
我做了以下操作以达到允许远程访问的目的......
Enable-PSRemoting -Force
winrm quickconfig
Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value '$supteam' -Concatenate
New-NetFirewallRule -DisplayName <dispName> -Profile <profile> -Enabled True -Action Allow -RemoteAddress $supteam -Direction Inbound -LocalPort <winRMport> -Protocol TCP -Program System
运行命令时...
Invoke-Command -ComputerName <ipAddress> -ScriptBlock { netsh advfirewall firewall set rule group="<ruleGroupName>" new enable=<yes/no> } -Credential $creds
我得到以下输出...
请求的操作需要提升权限(以管理员身份运行)。
我运行上述命令的 PowerShell 会话以管理员身份打开(即标题栏显示“管理员:Windows PowerShell”)。目标服务器上的用户帐户控制 (UAC) 已关闭。
注意:我也尝试使用等效的 PowerShell 来(启用|禁用)防火墙规则...
Invoke-Command -ComputerName <ipAddress> -ScriptBlock { Get-NetFirewallRule -Group "<ruleGroupName>" | <Enable/Disable>-NetFirewallRule } -Credential $creds
并获得以下输出乘以 3(每个规则一个)...
拒绝访问。
+ CategoryInfo:PermissionDenied:(MSFT_NetFirewal ... ystemName =“”):root / standardcimv2 / MSFT_NetFirewallRule)[Enable-NetFirewallRule],CimException
+ FullyQualifiedErrorId:Windows 系统错误 5,启用 NetFirewallRule
+ PS计算机名称:ip地址
我可以使用以下方法获取规则列表......
Invoke-Command -ComputerName <ipAddress> -ScriptBlock { Get-NetFirewallRule -Group "<ruleGroupName>" } -Credential $creds
因此我认为,只有远程服务器的本地管理员组的成员才能启用|禁用防火墙规则。
如果我的假设正确,是否可以允许非管理员组访问修改防火墙?如果可以,任何说明或链接都将不胜感激!
答案1
这是 Windows 安全边界,而不是 PowerShell 问题。因此,这不是简单的 PowerShell 脚本。这是一个环境和策略配置。
您需要向您控制的使用或帐户授予所需的权限才能进行这些设置。
另一个选择是利用 PowerShell JEA(仅足够的管理)和受限端点。
$nonAdminCred = Get-Credential
Enter-PSSession -ComputerName localhost -ConfigurationName JEAMaintenance -Credential $nonAdminCred
Just Enough Administration (JEA) 通过 Windows PowerShell 提供 RBAC 平台。它允许特定用户在服务器上执行特定的管理任务,而无需授予他们管理员权限。这可让您填补现有 RBAC 解决方案之间的空白
该脚本为 Windows 管理框架 (WMF) 5.0 和 Windows Server 2016 技术预览版 4 (TP4) 的多个 Just Enough Administration (JEA) 功能提供了图形“帮助程序”
利用 PowerShell 为您的帮助台提供足够的管理
使用 JEA,您可以授权用户通过 PowerShell 执行特定任务,而无需向他们提供提升的权限。您可以控制可用的命令和参数,验证指定参数的输入,并通过过肩记录、模块日志记录和深度脚本块日志记录获得完整的审核功能。