当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

作者:精品下载站 日期:2024-12-14 23:27:00 浏览:15 分类:玩电脑

如何使用组策略在 Windows 中禁用或启用 USB 驱动器


当您将新的 USB 设备连接到计算机时,Windows 会自动检测该设备并安装适当的驱动程序。因此,用户几乎可以立即使用连接的 USB 驱动器或设备。如果您组织的安全策略禁止使用便携式 USB 存储设备(闪存驱动器、USB 硬盘、SD 卡等),您可以阻止此行为。在本文中,我们将向您展示如何阻止在 Windows 中使用外部 USB 驱动器、阻止将数据写入可移动闪存驱动器或阻止使用组策略 (GPO) 运行可执行文件。

使用组策略在 Windows 中禁用 USB 可移动驱动器

在 Windows 中,您可以使用 Active Directory 组策略灵活管理对外部驱动器(USB、CD/DVD 等)的访问(我们不考虑通过 BIOS 设置禁用 USB 端口的激进方法)。您只能阻止 USB 驱动器,而用户可以使用未被识别为可移动磁盘的其他类型的 USB 设备(鼠标、键盘、打印机、USB 转 COM 端口适配器)。

我们将阻止名为工作站的域 OU 中所有计算机上的 USB 驱动器。您可以将 USB 限制策略应用于整个域,但这会影响服务器和其他技术设备。

  1. 打开 GPO 管理控制台(

    gpmc.msc

    ),在“组织单位”结构中找到“工作站”容器,右键单击它,然后创建一个新策略(在此域中创建 GPO 并将其链接到此处);

    [玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

    提示。您可以使用本地组策略编辑器 (gpedit.msc) 配置策略以限制独立计算机(家庭计算机或工作组计算机)上 USB 端口的使用。

  2. 设置GPO名称“禁用USB访问”

    [玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

  3. 切换到 GPO 编辑模式(编辑)。

    [玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

GPO 编辑器的“用户”和“计算机配置”部分中都有用于阻止外部存储设备的设置:

  • 用户配置 -> 策略 -> 管理模板 -> 系统 -> 可移动存储访问。

  • 计算机配置 -> 策略 -> 管理模板 -> 系统 -> 可移动存储访问。

如果要阻止所有计算机用户的 USB 存储设备,则需要在“计算机配置”GPO 部分中配置设置。

可移动存储访问部分中,有多个策略允许您禁用不同类型的存储类别的使用:CD/DVD、FDD、USB 设备、磁带等。

  • CD 和 DVD:拒绝执行访问。

  • CD 和 DVD:拒绝读取访问。

  • CD 和 DVD:拒绝写入访问。

  • 自定义类:拒绝读取访问。

  • 自定义类:拒绝写访问。

  • 软盘驱动器:拒绝执行访问。

  • 软盘驱动器:拒绝读取访问。

  • 软盘驱动器:拒绝写入访问。

  • 可移动磁盘:拒绝执行访问。

  • 可移动磁盘:拒绝读取访问。

  • 可移动磁盘:拒绝写入访问。

  • 所有可移动存储类别:拒绝所有访问。

  • 所有可移动存储:允许在远程会话中直接访问。

  • 磁带驱动器:拒绝执行访问。

  • 磁带机:拒绝读取访问。

  • 磁带驱动器:拒绝写入访问。

  • Windows 便携式设备 - 此类包括智能手机、平板电脑、播放器等。

  • WPD 设备:拒绝写入访问。

如您所见,对于每个设备类别,您可以拒绝启动可执行文件(保护计算机免受病毒侵害)、禁止读取数据以及在外部存储上写入/编辑文件。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

您可以实施“最强”限制策略所有可移动存储类:拒绝所有访问,完全禁止对所有类型的外部存储设备的访问。要启用此策略,请打开其属性并将“未配置”更改为已启用

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

在客户端计算机上启用并更新 GPO 设置(gpupdate /force)后,Windows 将检测连接的外部设备(不仅是 USB 设备,还包括任何外部驱动器),但在尝试打开它们时,会出现错误:

Location is not available
Drive is not accessible. Access is denied.

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

提示。可以使用注册表设置相同的限制,方法是在注册表项 HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\RemovableStorageDevices 下创建值为 00000001 的 DWORD 参数 Deny_All

在同一策略部分中,您可以对外部 USB 驱动器的使用配置更灵活的限制。

例如,要防止将数据写入 USB 闪存驱动器和其他类型的 USB 可移动存储,您应该启用可移动磁盘:拒绝写入访问策略。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

在这种情况下,用户将能够从 USB 闪存驱动器读取数据,但当他们尝试向其中写入信息时,他们将收到访问被拒绝错误:

Destination Folder Access Denied
You need permission to perform this action

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

您可以使用可移动磁盘:拒绝执行访问策略来阻止可执行文件和脚本文件从 USB 驱动器运行。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

通过 GPO 阻止某些用户使用 USB 驱动器

通常需要阻止域中除管理员之外的所有用户的 USB 驱动器。

您可以使用 GPO安全过滤在策略中设置例外。例如,您想要阻止 USB 阻止策略应用于 Domain Admins 组

  1. 在组策略管理控制台中选择禁用 USB 访问策略;

  2. 安全过滤部分添加Domain Admins组;

    [玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

  3. 转到委派选项卡并单击高级。在安全设置编辑器中,指定不允许域管理员组应用此 GPO(应用组策略 - 拒绝)。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

可能还有另一项任务 - 您需要允许除特定用户组之外的所有人使用外部 USB 驱动器。创建一个安全组“拒绝 USB”并将该组添加到 GPO 的安全设置中。对于该组,设置读取和应用 GPO 的权限,并只为经过身份验证的用户域计算机组保留读取权限(通过取消选中应用组策略复选框)。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

将需要阻止访问闪存驱动器和可移动 USB 磁盘的用户添加到此 AD 组。

通过注册表和组策略首选项禁用对 USB 驱动器的访问

您可以通过组策略首选项 (GPP) 配置由上述策略设置的注册表设置,从而更灵活地控制对外部设备的访问。上述所有策略都对应于 HKLM(或 HKCU\SOFTWARE\Policies\Microsoft\Windows\RemovableStorageDevices 项中的某些注册表项(默认情况下此注册表项缺失)。

  1. 要启用这些策略之一,您必须在指定项中使用要阻止访问的设备类的 GUID 创建一个新子项(第 2 列);

  2. 在新的注册表项中,您需要创建一个 REG_DWORD 参数,其中包含要实施的限制的名称:
    Deny_Read - 禁用从媒体类读取数据;
    Deny_Write - 禁用数据写入;
    Deny_Execute - 拒绝从外部媒体类运行可执行文件。

  3. 设置参数值:
    1 — 阻止指定类型的此类设备的访问;
    0 — 允许使用此类设备。

Group Policy OptionDevice Class GUIDRegistry parameter nameFloppy Drives:
Deny read access{53f56311-b6bf-11d0-94f2-00a0c91efb8b}Deny_ReadFloppy Drives:
Deny write access{53f56311-b6bf-11d0-94f2-00a0c91efb8b}Deny_WriteCD and DVD:
Deny read access{53f56308-b6bf-11d0-94f2-00a0c91efb8b}Deny_ReadCD and DVD:
Deny write access{53f56308-b6bf-11d0-94f2-00a0c91efb8b}Deny_WriteRemovable Disks:
Deny read access{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}Deny_ReadRemovable Disks:
Deny write access{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}Deny_WriteTape Drives:
Deny read access{53f5630b-b6bf-11d0-94f2-00a0c91efb8b}Deny_ReadTape Drives:
Deny write access{53f5630b-b6bf-11d0-94f2-00a0c91efb8b}Deny_WriteWPD Devices:
Deny read access{6AC27878-A6FA-4155-BA85-F98F491D4F33}
{F33FDC04-D1AC-4E8E-9A30-19BBD4B108AE}Deny_ReadWPD Devices:
Deny write access{6AC27878-A6FA-4155-BA85-F98F491D4F33}
{F33FDC04-D1AC-4E8E-9A30-19BBD4B108AE}Deny_Write

您可以手动创建指定的注册表项和参数。在下面的屏幕截图中,我创建了一个 RemovableStorageDevices 项和一个名为 {53f5630d-b6bf-11d0-94f2-00a0c91efb8b} 的子项。 使用 REG_DWORD 参数,我阻止从 USB 驱动器写入和运行可执行文件。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

禁用 USB 存储设置将在应用策略后立即生效(无需重新启动计算机)。如果 USB 闪存驱动器已连接到计算机,则在重新连接之前它将可用。

要在 Windows 中快速阻止对 USB 驱动器的数据读写,可以运行以下 PowerShell 脚本:

$regkey='HKLM:\Software\Policies\Microsoft\Windows\RemovableStorageDevices\{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}'
$exists = Test-Path $regkey
if (!$exists) {
New-Item -Path 'HKLM:\Software\Policies\Microsoft\Windows\RemovableStorageDevices' -Name '{53f5630d-b6bf-11d0-94f2-00a0c91efb8b}' -Force | Out-Null
}
New-ItemProperty -Path $regkey -Name 'Deny_Read -Value 1 -PropertyType 'DWord' -Force | Out-Null
New-ItemProperty -Path $regkey -Name 'Deny_Write' -Value 1 -PropertyType 'DWord' -Force | Out-Null

在域环境中,您可以使用组策略首选项将这些注册表参数部署到用户计算机。

您可以使用这些注册表项和 GPP 的项目级定位来灵活应用限制使用外部 USB 存储设备的设置。您可以将策略应用于特定的 AD 安全组、站点、操作系统版本、OU(甚至可以使用 WMI 过滤器)。

例如,您可以创建 Storage-Devices-Restrict 域组并添加要限制使用 USB 驱动器的计算机帐户。该组必须在 GPP 策略的项目级定位 -> 安全组部分中通过计算机位于组选项中指定。这会将 USB 阻止策略应用到添加到此 AD 组的计算机。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

注意。同样,您可以为此处未列出的设备类别创建自己的策略。您可以在驱动程序属性中的设备类 GUID 属性值中找到设备类 ID

如何在Windows中完全禁用USB存储设备?

您可以完全禁用 USBSTOR(USB 大容量存储) 驱动程序,该驱动程序是正确检测和安装 USB 存储设备所必需的。

在独立计算机上,您可以通过将 Start 注册表参数的值从 3 更改为 4 来禁用此驱动程序。您可以通过 PowerShell 执行此操作:

Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\services\USBSTOR" -name Start -Value 4

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

重新启动计算机并尝试连接 USB 存储设备。现在它不应出现在文件资源管理器或磁盘管理控制台中,并且您将在设备管理器中看到设备驱动程序安装错误。

您可以使用组策略首选项禁用 USBSTOR 驱动程序在域计算机上运行。为此,您需要通过 GPO 更改注册表。

这些设置可以部署到所有域计算机。创建一个新的组策略,将其链接到包含计算机的 OU,然后在计算机配置 -> 首选项 -> Windows 设置 -> 注册表部分中,使用以下值创建一个新参数:

  • Action: Update
  • Hive: HKEY_LOCAK_MACHINE
  • Key path: SYSTEM\CurrentControlSet\Services\USBSTOR
  • Value name: Start
  • Value type: REG_DWORD
  • Value data: 00000004

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

Windows 中连接 USB 驱动器的历史

在对 USB 媒体阻止策略进行故障排除时,您需要获取有关将 USB 驱动器连接到计算机的历史记录的信息。

要列出当前连接到计算机的 USB 驱动器,请使用以下 PowerShell 命令:

Get-PnpDevice -PresentOnly | Where-Object { $_.deviceId -match '^USBSTOR' }

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

状态正常表示该 USB 驱动器已连接且工作正常。

Windows 事件日志允许您跟踪连接/弹出 USB 驱动器的事件。

  1. 您可以在事件查看器 -> 应用程序和服务日志 -> Windows -> Microsoft-Windows-DriverFrameworks-UserMode -> 操作中找到这些事件;

  2. 默认情况下,Windows 不保存 USB 存储连接的历史记录。因此,您必须手动启用它(启用日志)或通过 GPO 启用它;

    [玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

  3. 现在您可以使用 EventID 2003 (

    Pnp or Power Management operation to a particular device

    )以获取有关 USB 驱动器连接时间和事件 ID 2102 的信息(

    Pnp or Power Management operation to a particular device

    )关于闪存驱动器的弹出:

    [玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

    Forwarded a finished Pnp or Power operation (27, 2) to the lower driver for device SWD\WPDBUSENUM\_??_USBSTOR#DISK&VEN_UFD_2.0&PROD_SILICON-POWER16G&REV_PMAP#89283229E6C10D23CE7200A2&2#{12234567-B6BF-11D0-2233-00A0AFBB3321F} with status 0x0.

您还可以使用 Nirsoft 的免费 USBDriveLog 工具,该工具允许您显示将 USB 驱动器连接到用户计算机的完整历史记录(显示有关设备、序列号、制造商、连接/断开时间和设备 ID 的信息)。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

在 Windows 中仅允许特定 USB 存储设备

在 Windows 上,您只能允许某些(批准的)USB 驱动器连接到您的计算机。

当您将任何 USB 存储设备连接到计算机时,USBSTOR 驱动程序会安装该设备,并在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR 下创建一个单独的注册表项。此注册表项包含有关 USB 驱动器的信息(例如,Disk & Ven_Kingstom & Prod_DT_1010_G2 & Rev_12.00)。

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

您可以使用以下 PowerShell 命令列出曾经连接到计算机的 USB 驱动器:

Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Enum\USBSTOR\*\*| select FriendlyName

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

删除之前连接的 USB 闪存驱动器的所有条目(您需要的条目除外)。然后,您需要更改 USBSTOR 注册表项的权限,以便所有用户(包括 SYSTEM 和管理员)仅具有读取权限。因此,如果您连接允许的 USB 驱动器以外的任何 USB 驱动器,Windows 将无法安装该设备。

当事件查看器中出现 USB 连接事件 ID 时,您还可以运行特定的命令/脚本(这里是有关如何在发生特定事件时运行进程的详细示例)。例如,您可以制作一个简单的 PowerShell 脚本,如果序列号与脚本中给出的序列号不匹配,该脚本会自动弹出所有 USB 驱动器:

$usbdev = get-wmiobject win32_volume | where{$_.DriveType -eq '2'}
If ($usbdev.SerialNumber -notlike “31DF1233BKAD”)
{
$usbdev.DriveLetter = $null
$usbdev.Put()
$usbdev.Dismount($false,$false) | Out-Null

[玩转系统] 如何使用组策略在 Windows 中禁用或启用 USB 驱动器

因此,您可以对连接到计算机的 USB 闪存驱动器执行最简单的检查。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯