Merge branch 'rs2' into bl-11257908
@ -23,6 +23,12 @@
|
||||
### [Deploy Device Guard: enable virtualization-based security](deploy-device-guard-enable-virtualization-based-security.md)
|
||||
## [Mitigate threats by using Windows 10 security features](overview-of-threat-mitigations-in-windows-10.md)
|
||||
## [Protect derived domain credentials with Credential Guard](credential-guard.md)
|
||||
### [How Credential Guard works](credential-guard-how-it-works.md)
|
||||
### [Credential Guard Requirements](credential-guard-requirements.md)
|
||||
### [Manage Credential Guard](credential-guard-manage.md)
|
||||
### [Scenarios not protected by Credential Guard](credential-guard-not-protected-scenarios.md)
|
||||
### [Considerations when using Credential Guard](credential-guard-considerations.md)
|
||||
### [Scripts for Certificate Authority Issuance Policies](credential-guard-scripts.md)
|
||||
## [Protect Remote Desktop credentials with Remote Credential Guard](remote-credential-guard.md)
|
||||
## [Protect your enterprise data using Windows Information Protection (WIP)](protect-enterprise-data-using-wip.md)
|
||||
### [Create a Windows Information Protection (WIP) policy](overview-create-wip-policy.md)
|
||||
|
@ -12,7 +12,7 @@ localizationpriority: medium
|
||||
author: iaanw
|
||||
---
|
||||
|
||||
# Configure and validate file and folder exclusions in Windows Defender AV scans
|
||||
# Configure and validate file, folder, and process-opened file exclusions in Windows Defender AV scans
|
||||
|
||||
|
||||
**Applies to:**
|
||||
@ -33,9 +33,9 @@ author: iaanw
|
||||
- Microsoft Intune
|
||||
- Windows Defender Security Center
|
||||
|
||||
You can exclude certain files, folders, processes, and process-modified files from being scanned by Windows Defender Antivirus.
|
||||
You can exclude certain files, folders, processes, and process-opened files from being scanned by Windows Defender Antivirus.
|
||||
|
||||
The exclusions apply to [scheduled scans](scheduled-catch-up-scans-windows-defender-antivirus.md), [on-demand scans](run-scan-windows-defender-antivirus.md), and [always-on real-time protection and monitoring](configure-real-time-protection-windows-defender-antivirus.md).
|
||||
The exclusions apply to [scheduled scans](scheduled-catch-up-scans-windows-defender-antivirus.md), [on-demand scans](run-scan-windows-defender-antivirus.md), and [always-on real-time protection and monitoring](configure-real-time-protection-windows-defender-antivirus.md). Exclusions for process-opened files only aply to real-time protection.
|
||||
|
||||
Exclusions can be useful to avoid incorrect detections on files or software that are unique or customized to your organization.
|
||||
|
||||
@ -48,5 +48,5 @@ Topic | Description
|
||||
---|---
|
||||
[Configure and validate exclusions based on file name, extension, and folder location](configure-extension-file-exclusions-windows-defender-antivirus.md) | Exclude files from Windows Defender AV scans based on their file extension, file name, or location
|
||||
[Configure and validate exclusions for files opened by processes](configure-process-opened-file-exclusions-windows-defender-antivirus.md) | You can exclude files from scans that have been opened by a specific process
|
||||
[Configure exclusions in Windows Defender AV on Windows Servery](configure-server-exclusions-windows-defender-antivirus.md) | Windows Server 2016 includes automatic exclusions, based on the defined Server Role. You can also add custom exclusions
|
||||
[Configure exclusions in Windows Defender AV on Windows Server](configure-server-exclusions-windows-defender-antivirus.md) | Windows Server 2016 includes automatic exclusions, based on the defined Server Role. You can also add custom exclusions
|
||||
|
||||
|
@ -42,7 +42,7 @@ Exclusion | Examples | Exclusion list
|
||||
Any file with a specific extension | All files with the .test extension, anywhere on the machine | Extension exclusions
|
||||
Any file under a specific folder | All files under the c:\test\sample folder | File and folder exclusions
|
||||
A specific file in a specific folder | The file c:\sample\sample.test only | File and folder exclusions
|
||||
A specific process | The executable file c:\test\process.exe | File and folder exclusions list
|
||||
A specific process | The executable file c:\test\process.exe | File and folder exclusions
|
||||
|
||||
This means the exclusion lists have the following characteristics:
|
||||
- Folder exclusions will apply to all files and folders under that folder.
|
||||
@ -91,11 +91,11 @@ You can [configure how locally and globally defined exclusions lists are merged]
|
||||
|
||||
1. Set the option to **Enabled**.
|
||||
2. Under the **Options** section, click **Show...**
|
||||
3. Enter each path or file on its own line under the **Value name** column. If you are entering a file, ensure you enter a fully qualified path to the file, including the drive letter, folder path, filename, and extension. Enter **0** in the **Value** column for all processes.
|
||||
3. Enter each folder on its own line under the **Value name** column. If you are entering a file, ensure you enter a fully qualified path to the file, including the drive letter, folder path, filename, and extension. Enter **0** in the **Value** column for all processes.
|
||||
|
||||
7. Click **OK**.
|
||||
|
||||

|
||||

|
||||
|
||||
8. Double-click the **Extension Exclusions** setting and add the exclusions:
|
||||
|
||||
@ -106,7 +106,7 @@ You can [configure how locally and globally defined exclusions lists are merged]
|
||||
|
||||
9. Click **OK**.
|
||||
|
||||

|
||||

|
||||
|
||||
|
||||
<a id="ps"></a>
|
||||
@ -117,7 +117,7 @@ Using PowerShell to add or remove exclusions for files based on the extension, l
|
||||
The format for the cmdlets is:
|
||||
|
||||
```PowerShell
|
||||
<cmdlet> -<exclusion list> "<item1>, <item2>, <item3>"
|
||||
<cmdlet> -<exclusion list> "<item>"
|
||||
```
|
||||
|
||||
The following are allowed as the \<cmdlet>:
|
||||
@ -126,24 +126,24 @@ Configuration action | PowerShell cmdlet
|
||||
---|---
|
||||
Create or overwrite the list | `Set-MpPreference`
|
||||
Add to the list | `Add-MpPreference`
|
||||
Remove items from the list | `Remove-MpPreference`
|
||||
Remove item from the list | `Remove-MpPreference`
|
||||
|
||||
The following are allowed as the \<exclusion list>:
|
||||
|
||||
Exclusion type | PowerShell parameter
|
||||
---|---
|
||||
All files with a specified file extension | `-ExclusionExtension`
|
||||
All files under a folder (including files in subdirectories) | `-ExclusionPath`
|
||||
All files under a folder (including files in subdirectories), or a specific file | `-ExclusionPath`
|
||||
|
||||
|
||||
>[!IMPORTANT]
|
||||
>If you have created a list, either with `Set-MpPreference` or `Add-MpPreference`, using the `Set-MpPreference` cmdlet again will overwrite the existing list.
|
||||
|
||||
|
||||
For example, the following code snippet would cause Windows Defender AV scans to exclude any file with the **.test**, **.sample**, or **.ignore** file extension:
|
||||
For example, the following code snippet would cause Windows Defender AV scans to exclude any file with the **.test** file extension:
|
||||
|
||||
```PowerShell
|
||||
Add-MpPreference -ExclusionExtension ".test, .sample, .ignore"
|
||||
Add-MpPreference -ExclusionExtension ".test"
|
||||
```
|
||||
|
||||
See [Use PowerShell cmdlets to configure and run Windows Defender Antivirus](use-powershell-cmdlets-windows-defender-antivirus.md) and [Defender cmdlets](https://technet.microsoft.com/itpro/powershell/windows/defender/index) for more information on how to use PowerShell with Windows Defender Antivirus.
|
||||
@ -184,7 +184,10 @@ See [Add exclusions in the Windows Defender Security Center app](windows-defende
|
||||
<a id="wildcards"></a>
|
||||
## Use wildcards in the file name and folder path or extension exclusion lists
|
||||
|
||||
You can use the asterisk **\***, question mark **?**, or environment variables (such as %APPDATA%) as wildcards when defining items in the file name or folder path exclusion list.
|
||||
You can use the asterisk \*, question mark ?, or environment variables (such as %ALLUSERSPROFILE%) as wildcards when defining items in the file name or folder path exclusion list.
|
||||
|
||||
>[!IMPORTANT]
|
||||
>Environment variable usage is limited to machine variables and those applicable to processes running as an NT AUTHORITY\SYSTEM account.
|
||||
|
||||
You cannot use a wildcard in place of a drive letter.
|
||||
|
||||
@ -193,9 +196,9 @@ The following table describes how the wildcards can be used and provides some ex
|
||||
|
||||
Wildcard | Use | Example use | Example matches
|
||||
---|---|---|---
|
||||
**\*** (asterisk) | Replaces any number of chararacters | <ul><li>C:\MyData\my\*.zip</li><li>C:\somepath\\\*\Data</li></ul> | <ul><li>C:\MyData\my-archived-files-43.zip</li><li>Any file in C:\somepath\folder1\folder2\Data</li></ul>
|
||||
**?** (question mark) | Replaces a single character | <ul><li>C:\MyData\my\?.zip</li><li>C:\somepath\\\?\Data</li></ul> | <ul><li>C:\MyData\my1.zip</li><li>Any file in C:\somepath\P\Data</li></ul>
|
||||
Environment variables | The defined variable will be populated as a path when the exclusion is evaluated | <ul><li>%ALLUSERSPROFILE%\CustomLogFiles</li><li>%APPDATA%\Data\file.png</li></ul> | <ul><li>C:\ProgramData\CustomLogFiles\Folder1\file1.txt</li><li>C:\Users\username\AppData\Roaming\Data\file.png</li></ul>
|
||||
\* (asterisk) | Replaces any number of characters | <ul><li>C:\MyData\my\*.zip</li><li>C:\somepath\\\*\Data</li></ul> | <ul><li>C:\MyData\my-archived-files-43.zip</li><li>Any file in C:\somepath\folder1\folder2\Data</li></ul>
|
||||
? (question mark) | Replaces a single character | <ul><li>C:\MyData\my\?.zip</li><li>C:\somepath\\\?\Data</li></ul> | <ul><li>C:\MyData\my1.zip</li><li>Any file in C:\somepath\P\Data</li></ul>
|
||||
Environment variables | The defined variable will be populated as a path when the exclusion is evaluated | <ul><li>%ALLUSERSPROFILE%\CustomLogFiles</li></ul> | <ul><li>C:\ProgramData\CustomLogFiles\Folder1\file1.txt</li></ul>
|
||||
|
||||
|
||||
|
||||
@ -273,6 +276,6 @@ $client.DownloadFile("http://www.eicar.org/download/eicar.com.txt","c:\test.txt"
|
||||
|
||||
- [Configure and validate exclusions in Windows Defender AV scans](configure-exclusions-windows-defender-antivirus.md)
|
||||
- [Configure and validate exclusions for files opened by processes](configure-process-opened-file-exclusions-windows-defender-antivirus.md)
|
||||
- [Configure exclusions in Windows Defender AV on Windows Servery](configure-server-exclusions-windows-defender-antivirus.md)
|
||||
- [Configure exclusions in Windows Defender AV on Windows Server](configure-server-exclusions-windows-defender-antivirus.md)
|
||||
- [Customize, initiate, and review the results of Windows Defender AV scans and remediation](customize-run-review-remediate-scans-windows-defender-antivirus.md)
|
||||
- [Windows Defender Antivirus in Windows 10](windows-defender-antivirus-in-windows-10.md)
|
||||
|
@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Configure and validate exclusions for files opened by specific processes
|
||||
title: Configure exclusions for files opened by specific processes
|
||||
description: You can exclude files from scans if they have been opened by a specific process.
|
||||
keywords: process, exclusion, files, scans
|
||||
search.product: eADQiWindows 10XVcnh
|
||||
@ -12,7 +12,7 @@ localizationpriority: medium
|
||||
author: iaanw
|
||||
---
|
||||
|
||||
# Configure and validate exclusions for files opened by processes
|
||||
# Configure exclusions for files opened by processes
|
||||
|
||||
**Applies to:**
|
||||
|
||||
@ -34,11 +34,19 @@ author: iaanw
|
||||
|
||||
You can exclude files that have been opened by specific processes from being scanned by Windows Defender AV.
|
||||
|
||||
For example, you may need to exclude any file that is opened by the process *c:\internal\test.exe*.
|
||||
This topic describes how to configure exclusion lists for the following:
|
||||
|
||||
You achieve this by adding the location and name of the process to the process exclusion list. When you add a process to the process exclusion list, Windows Defender AV will not scan files opened by that process, no matter where the files are located. The process itself, however, will be scanned unless it has also been added to the [file exclusion list](configure-extension-file-exclusions-windows-defender-antivirus.md).
|
||||
<a id="examples"></a>
|
||||
|
||||
The exclusions apply to [scheduled scans](scheduled-catch-up-scans-windows-defender-antivirus.md), [on-demand scans](run-scan-windows-defender-antivirus.md), and [always-on real-time protection and monitoring](configure-real-time-protection-windows-defender-antivirus.md).
|
||||
Exclusion | Example
|
||||
---|---
|
||||
Any file on the machine that is opened by any process with a specific file name | Specifying "test.exe" would exclude files opened by: <ul><li>c:\sample\test.exe</li><li>d:\internal\files\test.exe</li></ul>
|
||||
Any file on the machine that is opened by any process under a specific folder | Specifying "c:\test\sample\\*" would exclude files opened by:<ul><li>c:\test\sample\test.exe</li><li>c:\test\sample\test2.exe</li><li>c:\test\sample\utility.exe</li></ul>
|
||||
Any file on the machine that is opened by a specific process in a specific folder | Specifying "c:\test\process.exe" would exclude files only opened by c:\test\process.exe
|
||||
|
||||
When you add a process to the process exclusion list, Windows Defender AV will not scan files opened by that process, no matter where the files are located. The process itself, however, will be scanned unless it has also been added to the [file exclusion list](configure-extension-file-exclusions-windows-defender-antivirus.md).
|
||||
|
||||
The exclusions only apply to [always-on real-time protection and monitoring](configure-real-time-protection-windows-defender-antivirus.md). They do not apply to scheduled or on-demand scans.
|
||||
|
||||
Changes made via Group Policy to the exclusion lists **will show** in the lists in the [Windows Defender Security Center app](windows-defender-security-center-antivirus.md#exclusions). However, changes made in the Windows Defender Security Center app **will not show** in the Group Policy lists.
|
||||
|
||||
@ -47,18 +55,16 @@ You can add, remove, and review the lists for exclusions in [Group Policy](#gp),
|
||||
You can also [use PowerShell cmdlets and WMI to configure the exclusion lists](#ps), including [reviewing](#review) your lists.
|
||||
|
||||
|
||||
By default, local changes made to the lists (by users with administrator privileges) will be merged with the lists as defined (and deployed) by Group Policy, Configuration Manager, Intune, PowerShell, or WMI. The Group Policy lists will take precedence in the case of conflicts. You can [configure how locally and globally defined exclusions lists are merged](configure-local-policy-overrides-windows-defender-antivirus.md#merge-lists) to disable this setting.
|
||||
By default, local changes made to the lists (by users with administrator privileges; this includes changes made with PowerShell and WMI) will be merged with the lists as defined (and deployed) by Group Policy, Configuration Manager, or Intune. The Group Policy lists will take precedence in the case of conflicts.
|
||||
|
||||
You can [configure how locally and globally defined exclusions lists are merged](configure-local-policy-overrides-windows-defender-antivirus.md#merge-lists) to allow local changes to override managed deployment settings.
|
||||
|
||||
|
||||
## Configure the list of exclusions for files opened by specified processes
|
||||
|
||||
|
||||
<a id="gp"></a>
|
||||
**Use Group Policy to exclude files that have been used or modified by specified processes from scans:**
|
||||
|
||||
>[!NOTE]
|
||||
>You can exclude files that are opened by specified processes from being scanned. The specified process won't be excluded - but any files that are opened by that process (regardless of where they are or what they are named) will be excluded. If you need to exclude the process itself, [exclude it as a file](#exclude-paths-files).
|
||||
>You can only exclude files modified by processes if the process is an executable.
|
||||
|
||||
**Use Group Policy to exclude files that have been opened by specified processes from scans:**
|
||||
|
||||
1. On your Group Policy management machine, open the [Group Policy Management Console](https://technet.microsoft.com/library/cc731212.aspx), right-click the Group Policy Object you want to configure and click **Edit**.
|
||||
|
||||
@ -73,7 +79,7 @@ By default, local changes made to the lists (by users with administrator privile
|
||||
|
||||
1. Set the option to **Enabled**.
|
||||
2. Under the **Options** section, click **Show...**
|
||||
3. Enter each process on its own line under the **Value name** column. Ensure you enter a fully qualified path to the process, including the drive letter, folder path, filename, and extension. The process must be an executable. Enter **0** in the **Value** column for all processes.
|
||||
3. Enter each process on its own line under the **Value name** column. See the [example table](#examples) for the different types of process exclusions. Enter **0** in the **Value** column for all processes.
|
||||
|
||||
7. Click **OK**.
|
||||
|
||||
@ -81,14 +87,14 @@ By default, local changes made to the lists (by users with administrator privile
|
||||
|
||||
|
||||
<a id="ps"></a>
|
||||
**Use PowerShell cmdlets to configure file name, folder, or file extension exclusions:**
|
||||
**Use PowerShell cmdlets to exclude files that have been opened by specified processes from scans:**
|
||||
|
||||
Using PowerShell to add or remove exclusions for files based on the extension, location, or file name requires using a combination of three cmdlets with the `-ExclusionProcess' parameter. The cmdlets are all in the [Defender module](https://technet.microsoft.com/en-us/itpro/powershell/windows/defender/defender).
|
||||
Using PowerShell to add or remove exclusions for files that have been opened by processes requires using a combination of three cmdlets with the `-ExclusionProcess' parameter. The cmdlets are all in the [Defender module](https://technet.microsoft.com/en-us/itpro/powershell/windows/defender/defender).
|
||||
|
||||
The format for the cmdlets is:
|
||||
|
||||
```PowerShell
|
||||
<cmdlet> -ExclusionProcess "<item1>, <item2>, <item3>"
|
||||
<cmdlet> -ExclusionProcess "<item>"
|
||||
```
|
||||
|
||||
The following are allowed as the \<cmdlet>:
|
||||
@ -104,18 +110,17 @@ Remove items from the list | `Remove-MpPreference`
|
||||
>If you have created a list, either with `Set-MpPreference` or `Add-MpPreference`, using the `Set-MpPreference` cmdlet again will overwrite the existing list.
|
||||
|
||||
|
||||
For example, the following code snippet would cause Windows Defender AV scans to exclude any file that is opened by the defined processes. This exclusion will apply to any file that is opened by the processes that are in the specified folder:
|
||||
For example, the following code snippet would cause Windows Defender AV scans to exclude any file that is opened by the specified process:
|
||||
|
||||
```PowerShell
|
||||
Add-MpPreference -ExclusionProcess "c:\internal\test.exe, d:\org\ui\compile43-h.exe"
|
||||
Add-MpPreference -ExclusionProcess "c:\internal\test.exe"
|
||||
```
|
||||
|
||||
For example, files opened by the process *c:\outside\test.exe* will not be excluded. This is the because the opening process is located in a different folder ("outside" instead of "internal"), even though the process's file name is the same.
|
||||
|
||||
See [Use PowerShell cmdlets to configure and run Windows Defender Antivirus](use-powershell-cmdlets-windows-defender-antivirus.md) and [Defender cmdlets](https://technet.microsoft.com/itpro/powershell/windows/defender/index) for more information on how to use PowerShell with Windows Defender Antivirus.
|
||||
|
||||
|
||||
**Use Windows Management Instruction (WMI) to configure file name, folder, or file extension exclusions:**
|
||||
**Use Windows Management Instruction (WMI) to exclude files that have been opened by specified processes from scans:**
|
||||
|
||||
Use the [ **Set**, **Add**, and **Remove** methods of the **MSFT_MpPreference**](https://msdn.microsoft.com/en-us/library/dn455323(v=vs.85).aspx) class for the following properties:
|
||||
|
||||
@ -129,37 +134,37 @@ See the following for more information and allowed parameters:
|
||||
- [Windows Defender WMIv2 APIs](https://msdn.microsoft.com/en-us/library/dn439477(v=vs.85).aspx)
|
||||
|
||||
<a id="man-tools"></a>
|
||||
**Use Configuration Manager to configure file name, folder, or file extension exclusions:**
|
||||
**Use Configuration Manager to exclude files that have been opened by specified processes from scans:**
|
||||
|
||||
See [How to create and deploy antimalware policies: Exclusion settings](https://docs.microsoft.com/en-us/sccm/protect/deploy-use/endpoint-antimalware-policies#exclusion-settings) for details on configuring System Center Configuration Manager (current branch).
|
||||
|
||||
|
||||
**Use Microsoft Intune to configure file name, folder, or file extension exclusions:**
|
||||
**Use Microsoft Intune to exclude files that have been opened by specified processes from scans:**
|
||||
|
||||
|
||||
See [Help secure Windows PCs with Endpoint Protection for Microsoft Intune](https://docs.microsoft.com/en-us/intune/deploy-use/help-secure-windows-pcs-with-endpoint-protection-for-microsoft-intune) and [Windows Defender policy settings in Windows 10](https://docs.microsoft.com/en-us/intune/deploy-use/windows-10-policy-settings-in-microsoft-intune#windows-defender-1) for more details.
|
||||
|
||||
|
||||
**Use the Windows Defender Security Center app to configure file name, folder, or file extension exclusions:**
|
||||
**Use the Windows Defender Security Center app to exclude files that have been opened by specified processes from scans:**
|
||||
|
||||
See [Add exclusions in the Windows Defender Security Center app](windows-defender-security-center-antivirus.md#exclusions) for instructions.
|
||||
|
||||
|
||||
|
||||
<a id="wildcards"></a>
|
||||
## Use wildcards in the file name and folder path or extension exclusion lists
|
||||
## Use wildcards in the process exclusion list
|
||||
|
||||
The use of wildcards in the process exclusion list is different from their use in other exclusion lists.
|
||||
|
||||
In particular, you cannot use the question mark **?** wilcard, and the asterisk **\*** wildcard can only be used at the end of a complete path. You can still use environment variables (such as %APPDATA%) as wildcards when defining items in the process exclusion list.
|
||||
In particular, you cannot use the question mark ? wildcard, and the asterisk \* wildcard can only be used at the end of a complete path. You can still use environment variables (such as %ALLUSERSPROFILE%) as wildcards when defining items in the process exclusion list.
|
||||
|
||||
The following table describes how the wildcards can be used in the process exclusion list:
|
||||
|
||||
Wildcard | Use | Example use | Example matches
|
||||
---|---|---|---
|
||||
**\*** (asterisk) | Replaces any number of chararacters | <ul><li>C:\MyData\*</li></ul> | <ul><li>Any file opened by C:\MyData\file.exe</li></ul>
|
||||
**?** (question mark) | Not available | \- | \-
|
||||
Environment variables | The defined variable will be populated as a path when the exclusion is evaluated | <ul><li>%ALLUSERSPROFILE%\CustomLogFiles\file.exe</li><li>%APPDATA%\Data\file.exe</li></ul> | <ul><li>Any file opened by C:\ProgramData\CustomLogFiles\file.exe</li><li>Any file opened by C:\Users\username\AppData\Roaming\Data\file.exe</li></ul>
|
||||
\* (asterisk) | Replaces any number of characters | <ul><li>C:\MyData\\*</li></ul> | <ul><li>Any file opened by C:\MyData\file.exe</li></ul>
|
||||
? (question mark) | Not available | \- | \-
|
||||
Environment variables | The defined variable will be populated as a path when the exclusion is evaluated | <ul><li>%ALLUSERSPROFILE%\CustomLogFiles\file.exe</li></ul> | <ul><li>Any file opened by C:\ProgramData\CustomLogFiles\file.exe</li></ul>
|
||||
|
||||
|
||||
|
||||
@ -207,6 +212,6 @@ See [Use PowerShell cmdlets to configure and run Windows Defender Antivirus](use
|
||||
|
||||
- [Configure and validate exclusions in Windows Defender AV scans](configure-exclusions-windows-defender-antivirus.md)
|
||||
- [Configure and validate exclusions based on file name, extension, and folder location](configure-extension-file-exclusions-windows-defender-antivirus.md)
|
||||
- [Configure exclusions in Windows Defender AV on Windows Servery](configure-server-exclusions-windows-defender-antivirus.md)
|
||||
- [Configure exclusions in Windows Defender AV on Windows Server](configure-server-exclusions-windows-defender-antivirus.md)
|
||||
- [Customize, initiate, and review the results of Windows Defender AV scans and remediation](customize-run-review-remediate-scans-windows-defender-antivirus.md)
|
||||
- [Windows Defender Antivirus in Windows 10](windows-defender-antivirus-in-windows-10.md)
|
55
windows/keep-secure/credential-guard-considerations.md
Normal file
@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Considerations when using Credential Guard (Windows 10)
|
||||
description: Considerations and recommendations for certain scenarios when using Credential Guard in Windows 10.
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: explore
|
||||
ms.sitesec: library
|
||||
ms.pagetype: security
|
||||
localizationpriority: high
|
||||
author: brianlic-msft
|
||||
---
|
||||
|
||||
# Considerations when using Credential Guard
|
||||
|
||||
**Applies to**
|
||||
- Windows 10
|
||||
- Windows Server 2016
|
||||
|
||||
Prefer video? See [Credentials Protected by Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=mD3geLJyC_8304300474)
|
||||
in the Deep Dive into Credential Guard video series.
|
||||
|
||||
- If Credential Guard is enabled on a device after it's joined to a domain, the user and device secrets may already be compromised. We recommend that Credential Guard is enabled before the PC is joined to a domain.
|
||||
- You should perform regular reviews of the PCs that have Credential Guard enabled. This can be done with security audit policies or WMI queries. Here's a list of WinInit event IDs to look for:
|
||||
- **Event ID 13** Credential Guard (LsaIso.exe) was started and will protect LSA credentials.
|
||||
- **Event ID 14** Credential Guard (LsaIso.exe) configuration: 0x1, 0
|
||||
- The first variable: 0x1 means Credential Guard is configured to run. 0x0 means it’s not configured to run.
|
||||
- The second variable: 0 means it’s configured to run in protect mode. 1 means it's configured to run in test mode. This variable should always be 0.
|
||||
- **Event ID 15** Credential Guard (LsaIso.exe) is configured but the secure kernel is not running; continuing without Credential Guard.
|
||||
- **Event ID 16** Credential Guard (LsaIso.exe) failed to launch: \[error code\]
|
||||
- **Event ID 17** Error reading Credential Guard (LsaIso.exe) UEFI configuration: \[error code\]
|
||||
You can also verify that TPM is being used for key protection by checking the following event in the **Microsoft** -> **Windows** -> **Kernel-Boot** event source. If you are running with a TPM, the TPM PCR mask value will be something other than 0.
|
||||
- **Event ID 51** VSM Master Encryption Key Provisioning. Using cached copy status: 0x0. Unsealing cached copy status: 0x1. New key generation status: 0x1. Sealing status: 0x1. TPM PCR mask: 0x0.
|
||||
- Passwords are still weak so we recommend that your organization deploy Credential Guard and move away from passwords and to other authentication methods, such as physical smart cards, virtual smart cards, or Windows Hello for Business.
|
||||
- Some 3rd party Security Support Providers (SSPs and APs) might not be compatible with Credential Guard. Credential Guard does not allow 3rd party SSPs to ask for password hashes from LSA. However, SSPs and APs still get notified of the password when a user logs on and/or changes their password. Any use of undocumented APIs within custom SSPs and APs are not supported. We recommend that custom implementations of SSPs/APs are tested against Credential Guard to ensure that the SSPs and APs do not depend on any undocumented or unsupported behaviors. For example, using the KerbQuerySupplementalCredentialsMessage API is not supported. You should not replace the NTLM or Kerberos SSPs with custom SSPs and APs. For more info, see [Restrictions around Registering and Installing a Security Package](http://msdn.microsoft.com/library/windows/desktop/dn865014.aspx) on MSDN.
|
||||
- As the depth and breadth of protections provided by Credential Guard are increased, subsequent releases of Windows 10 with Credential Guard running may impact scenarios that were working in the past. For example, Credential Guard may block the use of a particular type of credential or a particular component to prevent malware from taking advantage of vulnerabilities. Therefore, we recommend that scenarios required for operations in an organization are tested before upgrading a device that has Credential Guard running.
|
||||
|
||||
- Starting with Windows 10, version 1511, domain credentials that are stored with Credential Manager are protected with Credential Guard. Credential Manager allows you to store credentials, such as user names and passwords that you use to log on to websites or other computers on a network. The following considerations apply to the Credential Guard protections for Credential Manager:
|
||||
- Credentials saved by Remote Desktop Services cannot be used to remotely connect to another machine without supplying the password. Attempts to use saved credentials will fail, displaying the error message "Logon attempt failed".
|
||||
- Applications that extract derived domain credentials from Credential Manager will no longer be able to use those credentials.
|
||||
- You cannot restore credentials using the Credential Manager control panel if the credentials were backed up from a PC that has Credential Guard turned on. If you need to back up your credentials, you must do this before you enable Credential Guard. Otherwise, you won't be able to restore those credentials.
|
||||
- Credential Guard uses hardware security so some features, such as Windows To Go, are not supported.
|
||||
|
||||
|
||||
## NTLM and CHAP Considerations
|
||||
|
||||
When you enable Credential Guard, you can no longer use NTLM v1 authentication. If you are using WiFi and VPN endpoints that are based on MS-CHAPv2, they are subject to similar attacks as NTLMv1. We recommend that organizations use certificated-based authentication for WiFi and VPN connections.
|
||||
|
||||
## Kerberos Considerations
|
||||
|
||||
When you enable Credential Guard, you can no longer use Kerberos unconstrained delegation or DES encryption. Unconstrained delegation could allow attackers to extract Kerberos keys from the isolated LSA process. You must use constrained or resource-based Kerberos delegation instead.
|
||||
|
||||
## See also
|
||||
|
||||
**Deep Dive into Credential Guard: Related videos**
|
||||
|
||||
[Virtualization-based security](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=1CoELLJyC_6704300474)
|
44
windows/keep-secure/credential-guard-how-it-works.md
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
title: How Credential Guard works
|
||||
description: Using virtualization-based security, Credential Guard features a new component called the isolated LSA process, which stores and protects secrets, isolating them from the rest of the operating system, so that only privileged system software can access them.
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: explore
|
||||
ms.sitesec: library
|
||||
ms.pagetype: security
|
||||
localizationpriority: high
|
||||
author: brianlic-msft
|
||||
---
|
||||
|
||||
# How Credential Guard works
|
||||
|
||||
**Applies to**
|
||||
- Windows 10
|
||||
- Windows Server 2016
|
||||
|
||||
|
||||
Prefer video? See [Credential Guard Design](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=mD3geLJyC_8304300474) in the Deep Dive into Credential Guard video series.
|
||||
|
||||
|
||||
Kerberos, NTLM, and Credential manager isolate secrets by using virtualization-based security. Previous versions of Windows stored secrets in the Local Security Authority (LSA). Prior to Windows 10, the LSA stored secrets used by the operating system in its process memory. With Credential Guard enabled, the LSA process in the operating system talks to a new component called the isolated LSA process that stores and protects those secrets. Data stored by the isolated LSA process is protected using virtualization-based security and is not accessible to the rest of the operating system. LSA uses remote procedure calls to communicate with the isolated LSA process.
|
||||
|
||||
For security reasons, the isolated LSA process doesn't host any device drivers. Instead, it only hosts a small subset of operating system binaries that are needed for security and nothing else. All of these binaries are signed with a certificate that is trusted by virtualization-based security and these signatures are validated before launching the file in the protected environment.
|
||||
|
||||
When Credential Guard is enabled, NTLMv1, MS-CHAPv2, Digest, and CredSSP cannot use the signed-in credentials. Thus, single sign-on does not work with these protocols. However, applications can prompt for credentials or use credentials stored in the Windows Vault which are not protected by Credential Guard with any of these protocols. It is strongly recommended that valuable credentials, such as the sign-in credentials, not be used with any of these protocols. If these protocols must be used by domain or Azure AD users, secondary credentials should be provisioned for these use cases.
|
||||
|
||||
When Credential Guard is enabled, Kerberos does not allow unconstrained Kerberos delegation or DES encryption, not only for signed-in credentials, but also prompted or saved credentials.
|
||||
|
||||
Here's a high-level overview on how the LSA is isolated by using virtualization-based security:
|
||||
|
||||

|
||||
|
||||
<br>
|
||||
|
||||
## See also
|
||||
|
||||
**Deep Dive into Credential Guard: Related videos**
|
||||
|
||||
[Credential Theft and Lateral Traversal](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=cfGBPlIyC_9404300474)
|
||||
|
||||
[Virtualization-based security](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=1CoELLJyC_6704300474)
|
||||
|
||||
[Credentials protected by Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=pdc37LJyC_1204300474)
|
192
windows/keep-secure/credential-guard-manage.md
Normal file
@ -0,0 +1,192 @@
|
||||
---
|
||||
title: Manage Credential Guard (Windows 10)
|
||||
description: Deploying and managing Credential Guard using Group Policy, the registry, or the Device Guard and Credential Guard hardware readiness tool.
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: explore
|
||||
ms.sitesec: library
|
||||
ms.pagetype: security
|
||||
localizationpriority: high
|
||||
author: brianlic-msft
|
||||
---
|
||||
|
||||
# Manage Credential Guard
|
||||
|
||||
**Applies to**
|
||||
- Windows 10
|
||||
- Windows Server 2016
|
||||
|
||||
Prefer video? See [Protecting privileged users with Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=JNbjYMJyC_8104300474)
|
||||
in the Deep Dive into Credential Guard video series.
|
||||
|
||||
## Enable Credential Guard
|
||||
Credential Guard can be enabled by using [Group Policy](#turn-on-credential-guard-by-using-group-policy), the [registry](#turn-on-credential-guard-by-using-the-registry), or the Device Guard and Credential Guard [hardware readiness tool](#hardware-readiness-tool).
|
||||
|
||||
### Enable Credential Guard by using Group Policy
|
||||
|
||||
You can use Group Policy to enable Credential Guard. This will add and enable the virtualization-based security features for you if needed.
|
||||
|
||||
1. From the Group Policy Management Console, go to **Computer Configuration** -> **Administrative Templates** -> **System** -> **Device Guard**.
|
||||
2. Double-click **Turn On Virtualization Based Security**, and then click the **Enabled** option.
|
||||
3. **Select Platform Security Level** box, choose **Secure Boot** or **Secure Boot and DMA Protection**.
|
||||
4. In the **Credential Guard Configuration** box, click **Enabled with UEFI lock**, and then click **OK**. If you want to be able to turn off Credential Guard remotely, choose **Enabled without lock**.
|
||||
|
||||

|
||||
|
||||
5. Close the Group Policy Management Console.
|
||||
|
||||
To enforce processing of the group policy, you can run ```gpupdate /force```.
|
||||
|
||||
|
||||
### Enable Credential Guard by using the registry
|
||||
|
||||
If you don't use Group Policy, you can enable Credential Guard by using the registry. Credential Guard uses virtualization-based security features which have to be enabled first on some operating systems.
|
||||
|
||||
### Add the virtualization-based security features
|
||||
|
||||
Starting with Windows 10, version 1607 and Windows Server 2016, enabling Windows features to use virtualization-based security is not necessary and this step can be skipped.
|
||||
|
||||
If you are using Windows 10, version 1507 (RTM) or Windows 10, version 1511, Windows features have to be enabled to use virtualization-based security.
|
||||
You can do this by using either the Control Panel or the Deployment Image Servicing and Management tool (DISM).
|
||||
> [!NOTE]
|
||||
If you enable Credential Guard by using Group Policy, the steps to enable Windows features through Control Panel or DISM are not required. Group Policy will install Windows features for you.
|
||||
|
||||
|
||||
**Add the virtualization-based security features by using Programs and Features**
|
||||
|
||||
1. Open the Programs and Features control panel.
|
||||
2. Click **Turn Windows feature on or off**.
|
||||
3. Go to **Hyper-V** -> **Hyper-V Platform**, and then select the **Hyper-V Hypervisor** check box.
|
||||
4. Select the **Isolated User Mode** check box at the top level of the feature selection.
|
||||
5. Click **OK**.
|
||||
|
||||
**Add the virtualization-based security features to an offline image by using DISM**
|
||||
|
||||
1. Open an elevated command prompt.
|
||||
2. Add the Hyper-V Hypervisor by running the following command:
|
||||
```
|
||||
dism /image:<WIM file name> /Enable-Feature /FeatureName:Microsoft-Hyper-V-Hypervisor /all
|
||||
```
|
||||
3. Add the Isolated User Mode feature by running the following command:
|
||||
```
|
||||
dism /image:<WIM file name> /Enable-Feature /FeatureName:IsolatedUserMode
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> You can also add these features to an online image by using either DISM or Configuration Manager.
|
||||
|
||||
### Enable virtualization-based security and Credential Guard
|
||||
|
||||
1. Open Registry Editor.
|
||||
2. Enable virtualization-based security:
|
||||
- Go to HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Control\\DeviceGuard.
|
||||
- Add a new DWORD value named **EnableVirtualizationBasedSecurity**. Set the value of this registry setting to 1 to enable virtualization-based security and set it to 0 to disable it.
|
||||
- Add a new DWORD value named **RequirePlatformSecurityFeatures**. Set the value of this registry setting to 1 to use **Secure Boot** only or set it to 3 to use **Secure Boot and DMA protection**.
|
||||
3. Enable Credential Guard:
|
||||
- Go to HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Control\\LSA.
|
||||
- Add a new DWORD value named **LsaCfgFlags**. Set the value of this registry setting to 1 to enable Credential Guard with UEFI lock, set it to 2 to enable Credential Guard without lock, and set it to 0 to disable it.
|
||||
4. Close Registry Editor.
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
> You can also enable Credential Guard by setting the registry entries in the [FirstLogonCommands](http://msdn.microsoft.com/library/windows/hardware/dn922797.aspx) unattend setting.
|
||||
|
||||
<span id="hardware-readiness-tool" />
|
||||
### Enable Credential Guard by using the Device Guard and Credential Guard hardware readiness tool
|
||||
|
||||
You can also enable Credential Guard by using the [Device Guard and Credential Guard hardware readiness tool](https://www.microsoft.com/download/details.aspx?id=53337).
|
||||
|
||||
```
|
||||
DG_Readiness_Tool_v3.0.ps1 -Enable -AutoReboot
|
||||
```
|
||||
|
||||
### Credential Guard deployment in virtual machines
|
||||
|
||||
Credential Guard can protect secrets in a Hyper-V virtual machine, just as it would on a physical machine. The enablement steps are the same from within the virtual machine.
|
||||
|
||||
Credential Guard protects secrets from non-privileged access inside the VM. It does not provide additional protection from the host administrator. From the host, you can disable Credential Guard for a virtual machine:
|
||||
|
||||
``` PowerShell
|
||||
Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true
|
||||
```
|
||||
|
||||
Requirements for running Credential Guard in Hyper-V virtual machines
|
||||
- The Hyper-V host must have an IOMMU, and run at least Windows Server 2016 or Windows 10 version 1607.
|
||||
- The Hyper-V virtual machine must be Generation 2, have an enabled virtual TPM, and running at least Windows Server 2016 or Windows 10.
|
||||
|
||||
|
||||
### Check that Credential Guard is running
|
||||
|
||||
You can use System Information to ensure that Credential Guard is running on a PC.
|
||||
|
||||
1. Click **Start**, type **msinfo32.exe**, and then click **System Information**.
|
||||
2. Click **System Summary**.
|
||||
3. Confirm that **Credential Guard** is shown next to **Device Guard Security Services Running**.
|
||||
|
||||
Here's an example:
|
||||
|
||||

|
||||
|
||||
You can also check that Credential Guard is running by using the [Device Guard and Credential Guard hardware readiness tool](https://www.microsoft.com/download/details.aspx?id=53337).
|
||||
|
||||
```
|
||||
DG_Readiness_Tool_v3.0.ps1 -Ready
|
||||
```
|
||||
|
||||
|
||||
### Remove Credential Guard
|
||||
|
||||
If you have to remove Credential Guard on a PC, you can use the following set of procedures, or you can [use the Device Guard and Credential Guard hardware readiness tool](#turn-off-with-hardware-readiness-tool).
|
||||
|
||||
1. If you used Group Policy, disable the Group Policy setting that you used to enable Credential Guard (**Computer Configuration** -> **Administrative Templates** -> **System** -> **Device Guard** -> **Turn on Virtualization Based Security**).
|
||||
2. Delete the following registry settings:
|
||||
- HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Control\\LSA\LsaCfgFlags
|
||||
- HKEY\_LOCAL\_MACHINE\\Software\\Policies\\Microsoft\\Windows\\DeviceGuard\\EnableVirtualizationBasedSecurity
|
||||
- HKEY\_LOCAL\_MACHINE\\Software\\Policies\\Microsoft\\Windows\\DeviceGuard\\RequirePlatformSecurityFeatures
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you manually remove these registry settings, make sure to delete them all. If you don't remove them all, the device might go into BitLocker recovery.
|
||||
|
||||
3. Delete the Credential Guard EFI variables by using bcdedit.
|
||||
|
||||
**Delete the Credential Guard EFI variables**
|
||||
|
||||
1. From an elevated command prompt, type the following commands:
|
||||
``` syntax
|
||||
|
||||
mountvol X: /s
|
||||
|
||||
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
|
||||
|
||||
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
|
||||
|
||||
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
|
||||
|
||||
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
|
||||
|
||||
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO
|
||||
|
||||
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
|
||||
|
||||
mountvol X: /d
|
||||
|
||||
```
|
||||
2. Restart the PC.
|
||||
3. Accept the prompt to disable Credential Guard.
|
||||
4. Alternatively, you can disable the virtualization-based security features to turn off Credential Guard.
|
||||
|
||||
> [!NOTE]
|
||||
> The PC must have one-time access to a domain controller to decrypt content, such as files that were encrypted with EFS. If you want to turn off both Credential Guard and virtualization-based security, run the following bcdedit command after turning off all virtualization-based security Group Policy and registry settings: bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
|
||||
|
||||
For more info on virtualization-based security and Device Guard, see [Device Guard deployment guide](device-guard-deployment-guide.md).
|
||||
|
||||
<span id="turn-off-with-hardware-readiness-tool" />
|
||||
#### Turn off Credential Guard by using the Device Guard and Credential Guard hardware readiness tool
|
||||
|
||||
You can also disable Credential Guard by using the [Device Guard and Credential Guard hardware readiness tool](https://www.microsoft.com/download/details.aspx?id=53337).
|
||||
|
||||
```
|
||||
DG_Readiness_Tool_v3.0.ps1 -Disable -AutoReboot
|
||||
```
|
||||
|
||||
|
||||
|
159
windows/keep-secure/credential-guard-not-protected-scenarios.md
Normal file
@ -0,0 +1,159 @@
|
||||
---
|
||||
title: Scenarios not protected by Credential Guard (Windows 10)
|
||||
description: Scenarios not protected by Credential Guard in Windows 10.
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: explore
|
||||
ms.sitesec: library
|
||||
ms.pagetype: security
|
||||
localizationpriority: high
|
||||
author: brianlic-msft
|
||||
---
|
||||
|
||||
# Scenarios not protected by Credential Guard
|
||||
|
||||
**Applies to**
|
||||
- Windows 10
|
||||
- Windows Server 2016
|
||||
|
||||
Prefer video? See [Credentials protected by Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=pdc37LJyC_1204300474)
|
||||
in the Deep Dive into Credential Guard video series.
|
||||
|
||||
Some ways to store credentials are not protected by Credential Guard, including:
|
||||
|
||||
- Software that manages credentials outside of Windows feature protection
|
||||
- Local accounts and Microsoft Accounts
|
||||
- Credential Guard does not protect the Active Directory database running on Windows Server 2016 domain controllers. It also does not protect credential input pipelines, such as Windows Server 2016 servers running Remote Desktop Gateway. If you're using a Windows Server 2016 server as a client PC, it will get the same protection as it would when running Windows 10 Enterprise.
|
||||
- Key loggers
|
||||
- Physical attacks
|
||||
- Does not prevent an attacker with malware on the PC from using the privileges associated with any credential. We recommend using dedicated PCs for high value accounts, such as IT Pros and users with access to high value assets in your organization.
|
||||
- Third-party security packages
|
||||
- Digest and CredSSP credentials
|
||||
- When Credential Guard is enabled, neither Digest nor CredSSP have access to users' logon credentials. This implies no Single Sign-On use for these protocols.
|
||||
- Supplied credentials for NTLM authentication are not protected. If a user is prompted for and enters credentials for NTLM authentication, these credentials are vulnerable to be read from LSASS memory. Note that these same credentials are vulnerable to key loggers as well.
|
||||
|
||||
For further information, see video: [Credentials Protected by Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=pdc37LJyC_1204300474)
|
||||
|
||||
## Additional mitigations
|
||||
|
||||
Credential Guard can provide mitigations against attacks on derived credentials and prevent the use of stolen credentials elsewhere. However, PCs can still be vulnerable to certain attacks, even if the derived credentials are protected by Credential Guard. These attacks can include abusing privileges and use of derived credentials directly from a compromised device, reusing previously stolen credentials prior to Device Guard, and abuse of management tools and weak application configurations. Because of this, additional mitigations also must be deployed to make the domain environment more robust.
|
||||
|
||||
### Restricting domain users to specific domain-joined devices
|
||||
|
||||
Credential theft attacks allow the attacker to steal secrets from one device and use them from another device. If a user can sign on to multiple devices then any device could be used to steal credentials. How do you ensure that users only sign on using devices that have Credential Guard enabled? By deploying authentication policies that restrict them to specific domain-joined devices that have been configured with Credential Guard. For the domain controller to know what device a user is signing on from, Kerberos armoring must be used.
|
||||
|
||||
### Kerberos armoring
|
||||
|
||||
Kerberos armoring is part of RFC 6113. When a device supports Kerberos armoring, its TGT is used to protect the user's proof of possession which can mitigate offline dictionary attacks. Kerberos armoring also provides the additional benefit of signed KDC errors this mitigates tampering which can result in things such as downgrade attacks.
|
||||
|
||||
**To enable Kerberos armoring for restricting domain users to specific domain-joined devices**
|
||||
|
||||
- Users need to be in domains that are running Windows Server 2012 R2 or higher
|
||||
- All the domain controllers in these domains must be configured to support Kerberos armoring. Set the **KDC support for claims, compound authentication, and Kerberos armoring** Group Policy setting to either **Supported** or **Always provide claims**.
|
||||
- All the devices with Credential Guard that the users will be restricted to must be configured to support Kerberos armoring. Enable the **Kerberos client support for claims, compound authentication and Kerberos armoring** Group Policy settings under **Computer Configuration** -> **Administrative Templates** -> **System** -> **Kerberos**.
|
||||
|
||||
### Protecting domain-joined device secrets
|
||||
|
||||
Since domain-joined devices also use shared secrets for authentication, attackers can steal those secrets as well. By deploying device certificates with Credential Guard, the private key can be protected. Then authentication policies can require that users sign on devices that authenticate using those certificates. This prevents shared secrets stolen from the device to be used with stolen user credentials to sign on as the user.
|
||||
|
||||
Domain-joined device certificate authentication has the following requirements:
|
||||
- Devices' accounts are in Windows Server 2012 domain functional level or higher.
|
||||
- All domain controllers in those domains have KDC certificates which satisfy strict KDC validation certificate requirements:
|
||||
- KDC EKU present
|
||||
- DNS domain name matches the DNSName field of the SubjectAltName (SAN) extension
|
||||
- Windows 10 devices have the CA issuing the domain controller certificates in the enterprise store.
|
||||
- A process is established to ensure the identity and trustworthiness of the device in a similar manner as you would establish the identity and trustworthiness of a user before issuing them a smartcard.
|
||||
|
||||
#### Deploying domain-joined device certificates
|
||||
|
||||
To guarantee that certificates with the required issuance policy are only installed on the devices these users must use, they must be deployed manually on each device. The same security procedures used for issuing smart cards to users should be applied to device certificates.
|
||||
|
||||
For example, let's say you wanted to use the High Assurance policy only on these devices. Using a Windows Server Enterprise certificate authority, you would create a new template.
|
||||
|
||||
**Creating a new certificate template**
|
||||
|
||||
1. From the Certificate Manager console, right-click **Certificate Templates**, and then click **Manage.**
|
||||
2. Right-click **Workstation Authentication**, and then click **Duplicate Template**.
|
||||
3. Right-click the new template, and then click **Properties**.
|
||||
4. On the **Extensions** tab, click **Application Policies**, and then click **Edit**.
|
||||
5. Click **Client Authentication**, and then click **Remove**.
|
||||
6. Add the ID-PKInit-KPClientAuth EKU. Click **Add**, click **New**, and then specify the following values:
|
||||
- Name: Kerberos Client Auth
|
||||
- Object Identifier: 1.3.6.1.5.2.3.4
|
||||
7. On the **Extensions** tab, click **Issuance Policies**, and then click **Edit**.
|
||||
8. Under **Issuance Policies**, click**High Assurance**.
|
||||
9. On the **Subject name** tab, clear the **DNS name** check box, and then select the **User Principal Name (UPN)** check box.
|
||||
|
||||
Then on the devices that are running Credential Guard, enroll the devices using the certificate you just created.
|
||||
|
||||
**Enrolling devices in a certificate**
|
||||
|
||||
Run the following command:
|
||||
``` syntax
|
||||
CertReq -EnrollCredGuardCert MachineAuthentication
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> You must restart the device after enrolling the machine authentication certificate.
|
||||
|
||||
#### How a certificate issuance policy can be used for access control
|
||||
|
||||
Beginning with the Windows Server 2008 R2 domain functional level, domain controllers support for authentication mechanism assurance provides a way to map certificate issuance policy OIDs to universal security groups. Windows Server 2012 domain controllers with claim support can map them to claims. To learn more about authentication mechanism assurance, see [Authentication Mechanism Assurance for AD DS in Windows Server 2008 R2 Step-by-Step Guide](https://technet.microsoft.com/en-us/library/dd378897(v=ws.10).aspx) on TechNet.
|
||||
|
||||
**To see the issuance policies available**
|
||||
|
||||
- The [get-IssuancePolicy.ps1](#bkmk-getscript) shows all of the issuance policies that are available on the certificate authority.
|
||||
From a Windows PowerShell command prompt, run the following command:
|
||||
|
||||
``` syntax
|
||||
.\get-IssuancePolicy.ps1 –LinkedToGroup:All
|
||||
```
|
||||
|
||||
**To link an issuance policy to a universal security group**
|
||||
|
||||
- The [set-IssuancePolicyToGroupLink.ps1](#bkmk-setscript) creates a Universal security group, creates an organizational unit, and links the issuance policy to that Universal security group.
|
||||
From a Windows PowerShell command prompt, run the following command:
|
||||
|
||||
``` syntax
|
||||
.\set-IssuancePolicyToGroupLink.ps1 –IssuancePolicyName:"<name of issuance policy>" –groupOU:"<Name of OU to create>" –groupName:”<name of Universal security group to create>"
|
||||
```
|
||||
|
||||
### Restricting user sign on
|
||||
|
||||
So we now have completed the following:
|
||||
|
||||
- Created a special certificate issuance policy to identify devices that meet the deployment criteria required for the user to be able to sign on
|
||||
- Mapped that policy to a universal security group or claim
|
||||
- Provided a way for domain controllers to get the device authorization data during user sign on using Kerberos armoring. Now what is left to do is to configure the access check on the domain controllers. This is done using authentication policies.
|
||||
|
||||
Authentication policies have the following requirements:
|
||||
- User accounts are in a Windows Server 2012 domain functional level or higher domain.
|
||||
|
||||
**Creating an authentication policy restricting users to the specific universal security group**
|
||||
|
||||
1. Open Active Directory Administrative Center.
|
||||
2. Click **Authentication**, click **New**, and then click **Authentication Policy**.
|
||||
3. In the **Display name** box, enter a name for this authentication policy.
|
||||
4. Under the **Accounts** heading, click **Add**.
|
||||
5. In the **Select Users, Computers, or Service Accounts** dialog box, type the name of the user account you wish to restrict, and then click **OK**.
|
||||
6. Under the **User Sign On** heading, click the **Edit** button.
|
||||
7. Click **Add a condition**.
|
||||
8. In the **Edit Access Control Conditions** box, ensure that it reads **User** > **Group** > **Member of each** > **Value**, and then click **Add items**.
|
||||
9. In the **Select Users, Computers, or Service Accounts** dialog box, type the name of the universal security group that you created with the set-IssuancePolicyToGroupLink script, and then click **OK**.
|
||||
10. Click **OK** to close the **Edit Access Control Conditions** box.
|
||||
11. Click **OK** to create the authentication policy.
|
||||
12. Close Active Directory Administrative Center.
|
||||
|
||||
> [!NOTE]
|
||||
> When the authentication policy enforces policy restrictions, users will not be able to sign on using devices that do not have a certificate with the appropriate issuance policy deployed. This applies to both local and remote sign on scenarios. Therefore, it is strongly recommended to first only audit policy restrictions to ensure you don't have unexpected failures.
|
||||
|
||||
#### Discovering authentication failures due to authentication policies
|
||||
|
||||
To make tracking authentication failures due to authentication policies easier, an operational log exists with just those events. To enable the logs on the domain controllers, in Event Viewer, navigate to **Applications and Services Logs\\Microsoft\\Windows\\Authentication, right-click AuthenticationPolicyFailures-DomainController**, and then click **Enable Log**.
|
||||
|
||||
To learn more about authentication policy events, see [Authentication Policies and Authentication Policy Silos](https://technet.microsoft.com/en-us/library/dn486813(v=ws.11).aspx).
|
||||
|
||||
## See also
|
||||
|
||||
**Deep Dive into Credential Guard: Related videos**
|
||||
|
||||
[Protecting privileged users with Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=JNbjYMJyC_8104300474)
|
120
windows/keep-secure/credential-guard-requirements.md
Normal file
@ -0,0 +1,120 @@
|
||||
---
|
||||
title: Credential Guard Requirements (Windows 10)
|
||||
description: Credential Guard baseline hardware, firmware, and software requirements, and additional protections for improved security associated with available hardware and firmware options.
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: explore
|
||||
ms.sitesec: library
|
||||
ms.pagetype: security
|
||||
localizationpriority: high
|
||||
author: brianlic-msft
|
||||
---
|
||||
|
||||
# Credential Guard: Requirements
|
||||
|
||||
**Applies to**
|
||||
- Windows 10
|
||||
- Windows Server 2016
|
||||
|
||||
Prefer video? See
|
||||
[Credential Guard Deployment](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=sRcyvLJyC_3304300474)
|
||||
in the Deep Dive into Credential Guard video series.
|
||||
|
||||
For Credential Guard to provide protections, the computers you are protecting must meet certain baseline hardware, firmware, and software requirements which we will refer to as [Hardware and software requirements](#hardware-and-software-requirements). Additionally, Credential Guard blocks specific authentication capabilities, so applications that require such capabilities will break. We will refer to this as [Application requirements](#application-requirements). Beyond that, computers can meet additional hardware and firmware qualifications, and receive additional protections. Those computers will be more hardened against certain threats. For detailed information on baseline protections, plus protections for improved security that are associated with hardware and firmware options available in 2015, 2016, and 2017, refer to the tables in [Security Considerations](#security-considerations).
|
||||
|
||||
|
||||
|
||||
## Hardware and software requirements
|
||||
|
||||
To provide basic protection against OS level attempts to read Credential Manager domain credentials, NTLM and Kerberos derived credentials, Credential Manager uses:
|
||||
- Support for Virtualization-based security (required)
|
||||
- Secure boot (required)
|
||||
- TPM 2.0 either discrete or firmware (preferred - provides binding to hardware)
|
||||
- UEFI lock (preferred - prevents attacker from disabling with a simple registry key change)
|
||||
|
||||
The Virtualization-based security requires:
|
||||
- 64-bit CPU
|
||||
- CPU virtualization extensions plus extended page tables
|
||||
- Windows hypervisor
|
||||
|
||||
## Application requirements
|
||||
|
||||
When Credential Guard is enabled, specific authentication capabilities are blocked, so applications that require such capabilities will break. Applications should be tested prior to deployment to ensure compatiblity with the reduced functionality.
|
||||
|
||||
>[!WARNING]
|
||||
> Enabling Credential Guard on domain controllers is not supported. <br>
|
||||
> The domain controller hosts authentication services which integrate with processes isolated when Credential Guard is enabled, causing crashes.
|
||||
|
||||
>[!NOTE]
|
||||
> Credential Guard does not provide protections for the Active Directory database or the Security Accounts Manager (SAM). The credentials protected by Kerberos and NTLM when Credential Guard is enabled are also in the Active Directory database (on domain controllers) and the SAM (for local accounts).
|
||||
|
||||
Applications will break if they require:
|
||||
- Kerberos DES encryption support
|
||||
- Kerberos unconstrained delegation
|
||||
- Extracting the Kerberos TGT
|
||||
- NTLMv1
|
||||
|
||||
Applications will prompt and expose credentials to risk if they require:
|
||||
- Digest authentication
|
||||
- Credential delegation
|
||||
- MS-CHAPv2
|
||||
|
||||
Applications may cause performance issues when they attempt to hook the isolated Credential Guard process.
|
||||
|
||||
See this video: [Credentials Protected by Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=pdc37LJyC_1204300474)
|
||||
|
||||
|
||||
## Security considerations
|
||||
|
||||
All computers that meet baseline protections for hardware, firmware, and software can use Credential Guard.
|
||||
Computers that meet additional qualifications can provide additional protections to further reduce the attack surface.
|
||||
The following tables describe baseline protections, plus protections for improved security that are associated with hardware and firmware options available in 2015, 2016, and 2017.
|
||||
|
||||
> [!NOTE]
|
||||
> Beginning with Windows 10, version 1607, Trusted Platform Module (TPM 2.0) must be enabled by default on new shipping computers. <br>
|
||||
> If you are an OEM, see [PC OEM requirements for Device Guard and Credential Guard](https://msdn.microsoft.com/library/windows/hardware/mt767514.aspx).<br>
|
||||
|
||||
### Baseline protections
|
||||
|
||||
|Baseline Protections | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Hardware: **64-bit CPU** | A 64-bit computer is required for the Windows hypervisor to provide VBS. |
|
||||
| Hardware: **CPU virtualization extensions**,<br>plus **extended page tables** | **Requirements**: These hardware features are required for VBS:<br>One of the following virtualization extensions:<br>• VT-x (Intel) or<br>• AMD-V<br>And:<br>• Extended page tables, also called Second Level Address Translation (SLAT).<br><br>**Security benefits**: VBS provides isolation of secure kernel from normal operating system. Vulnerabilities and Day 0s in normal operating system cannot be exploited because of this isolation. |
|
||||
| Hardware: **Trusted Platform Module (TPM)** | **Requirement**: TPM 1.2 or TPM 2.0, either discrete or firmware.<br>[TPM recommendations](https://technet.microsoft.com/itpro/windows/keep-secure/tpm-recommendations)<br><br>**Security benefits**: A TPM provides protection for VBS encryption keys that are stored in the firmware. This helps protect against attacks involving a physically present user with BIOS access. |
|
||||
| Firmware: **UEFI firmware version 2.3.1.c or higher with UEFI Secure Boot** | **Requirements**: See the following Windows Hardware Compatibility Program requirement: [System.Fundamentals.Firmware.UEFISecureBoot](http://msdn.microsoft.com/library/windows/hardware/dn932805.aspx#system-fundamentals-firmware-uefisecureboot)<br><br>**Security benefits**: UEFI Secure Boot helps ensure that the device boots only authorized code. This can prevent boot kits and root kits from installing and persisting across reboots. |
|
||||
| Firmware: **Secure firmware update process** | **Requirements**: UEFI firmware must support secure firmware update found under the following Windows Hardware Compatibility Program requirement: [System.Fundamentals.Firmware.UEFISecureBoot](http://msdn.microsoft.com/library/windows/hardware/dn932805.aspx#system-fundamentals-firmware-uefisecureboot).<br><br>**Security benefits**: UEFI firmware just like software can have security vulnerabilities that, when found, need to be patched through firmware updates. Patching helps prevent root kits from getting installed. |
|
||||
| Software: Qualified **Windows operating system** | **Requirement**: Windows 10 Enterprise, Windows 10 Education, Windows Server 2016, or Windows 10 IoT Enterprise<br><blockquote><p><strong>Important:</strong><br> Windows Server 2016 running as a domain controller does not support Credential Guard. Only Device Guard is supported in this configuration.</p></blockquote><br>**Security benefits**: Support for VBS and for management features that simplify configuration of Credential Guard. |
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The following tables list additional qualifications for improved security. We strongly recommend meeting the additional qualifications to significantly strengthen the level of security that Credential Guard can provide.
|
||||
|
||||
### 2015 Additional security qualifications starting with Windows 10, version 1507, and Windows Server 2016 Technical Preview 4
|
||||
|
||||
| Protections for Improved Security | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Hardware: **IOMMU** (input/output memory management unit) | **Requirement**: VT-D or AMD Vi IOMMU<br><br>**Security benefits**: An IOMMU can enhance system resiliency against memory attacks. For more information, see [ACPI description tables](https://msdn.microsoft.com/windows/hardware/drivers/bringup/acpi-system-description-tables). |
|
||||
| Firmware: **Securing Boot Configuration and Management** | **Requirements**:<br>• BIOS password or stronger authentication must be supported.<br>• In the BIOS configuration, BIOS authentication must be set.<br>• There must be support for protected BIOS option to configure list of permitted boot devices (for example, “Boot only from internal hard drive”) and boot device order, overriding BOOTORDER modification made by operating system.<br>• In the BIOS configuration, BIOS options related to security and boot options (list of permitted boot devices, boot order) must be secured to prevent other operating systems from starting and to prevent changes to the BIOS settings.<br><br>**Security benefits**:<br>• BIOS password or stronger authentication helps ensure that only authenticated Platform BIOS administrators can change BIOS settings. This helps protect against a physically present user with BIOS access.<br>• Boot order when locked provides protection against the computer being booted into WinRE or another operating system on bootable media. |
|
||||
| Firmware: **Secure MOR, revision 2 implementation** | **Requirement**: Secure MOR, revision 2 implementation<br><br>**Security benefits**: A secure MOR bit prevents advanced memory attacks. For more information, see [Secure MOR implementation](https://msdn.microsoft.com/windows/hardware/drivers/bringup/device-guard-requirements). |
|
||||
|
||||
<br>
|
||||
|
||||
### 2016 Additional security qualifications starting with Windows 10, version 1607, and Windows Server 2016
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The following tables list additional qualifications for improved security. Systems that meet these additional qualifications can provide more protections.
|
||||
|
||||
| Protections for Improved Security | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Firmware: **Hardware Rooted Trust Platform Secure Boot** | **Requirements**:<br>Boot Integrity (Platform Secure Boot) must be supported. See the Windows Hardware Compatibility Program requirements under [System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby](https://msdn.microsoft.com/library/windows/hardware/dn932807(v=vs.85).aspx#system_fundamentals_firmware_cs_uefisecureboot_connectedstandby)<br>• The Hardware Security Test Interface (HSTI) must be implemented. See [Hardware Security Testability Specification](https://msdn.microsoft.com/en-us/library/windows/hardware/mt712332(v=vs.85).aspx).<br><br>**Security benefits**:<br>• Boot Integrity (Platform Secure Boot) from Power-On provides protections against physically present attackers, and defense-in-depth against malware.<br>• HSTI provides additional security assurance for correctly secured silicon and platform. |
|
||||
| Firmware: **Firmware Update through Windows Update** | **Requirements**: Firmware must support field updates through Windows Update and UEFI encapsulation update.<br><br>**Security benefits**: Helps ensure that firmware updates are fast, secure, and reliable. |
|
||||
| Firmware: **Securing Boot Configuration and Management** | **Requirements**:<br>• Required BIOS capabilities: Ability of OEM to add ISV, OEM, or Enterprise Certificate in Secure Boot DB at manufacturing time.<br>• Required configurations: Microsoft UEFI CA must be removed from Secure Boot DB. Support for 3rd-party UEFI modules is permitted but should leverage ISV-provided certificates or OEM certificate for the specific UEFI software.<br><br>**Security benefits**:<br>• Enterprises can choose to allow proprietary EFI drivers/applications to run.<br>• Removing Microsoft UEFI CA from Secure Boot DB provides full control to enterprises over software that runs before the operating system boots. |
|
||||
|
||||
<br>
|
||||
|
||||
### 2017 Additional security qualifications starting with Windows 10, version 1703
|
||||
|
||||
The following table lists qualifications for Windows 10, version 1703, which are in addition to all preceding qualifications.
|
||||
|
||||
| Protection for Improved Security | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Firmware: **VBS enablement of NX protection for UEFI runtime services** | **Requirements**:<br>• VBS will enable No-Execute (NX) protection on UEFI runtime service code and data memory regions. UEFI runtime service code must support read-only page protections, and UEFI runtime service data must not be executable.<br>• UEFI runtime service must meet these requirements: <br> - Implement UEFI 2.6 EFI_MEMORY_ATTRIBUTES_TABLE. All UEFI runtime service memory (code and data) must be described by this table. <br> - PE sections need to be page-aligned in memory (not required for in non-volatile storage).<br> - The Memory Attributes Table needs to correctly mark code and data as RO/NX for configuration by the OS:<br> - All entries must include attributes EFI_MEMORY_RO, EFI_MEMORY_XP, or both <br> - No entries may be left with neither of the above attributes, indicating memory that is both executable and writable. Memory must be either readable and executable or writeable and non-executable. <br><blockquote><p><strong>Notes:</strong><br>• This only applies to UEFI runtime service memory, and not UEFI boot service memory. <br>• This protection is applied by VBS on OS page tables.</p></blockquote><br> Please also note the following: <br>• Do not use sections that are both writeable and executable<br>• Do not attempt to directly modify executable system memory<br>• Do not use dynamic code<br><br>**Security benefits**:<br>• Vulnerabilities in UEFI runtime, if any, will be blocked from compromising VBS (such as in functions like UpdateCapsule and SetVariable)<br>• Reduces the attack surface to VBS from system firmware. |
|
||||
| Firmware: **Firmware support for SMM protection** | **Requirements**: The [Windows SMM Security Mitigations Table (WSMT) specification](http://download.microsoft.com/download/1/8/A/18A21244-EB67-4538-BAA2-1A54E0E490B6/WSMT.docx) contains details of an Advanced Configuration and Power Interface (ACPI) table that was created for use with Windows operating systems that support Windows virtualization-based security (VBS) features.<br><br>**Security benefits**:<br>• Protects against potential vulnerabilities in UEFI runtime services, if any, will be blocked from compromising VBS (such as in functions like UpdateCapsule and SetVariable)<br>• Reduces the attack surface to VBS from system firmware.<br>• Blocks additional security attacks against SMM. |
|
488
windows/keep-secure/credential-guard-scripts.md
Normal file
@ -0,0 +1,488 @@
|
||||
---
|
||||
title: Scripts for Certificate Issuance Policies in Credential Guard (Windows 10)
|
||||
description: Scripts listed in this topic for obtaining the available issuance policies on the certificate authority for Credential Guard on Windows 10.
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: explore
|
||||
ms.sitesec: library
|
||||
ms.pagetype: security
|
||||
localizationpriority: high
|
||||
author: brianlic-msft
|
||||
---
|
||||
|
||||
# Credential Guard: Scripts for Certificate Authority Issuance Policies
|
||||
|
||||
|
||||
Here is a list of scripts mentioned in this topic.
|
||||
|
||||
## <a href="" id="bkmk-getscript"></a>Get the available issuance policies on the certificate authority
|
||||
|
||||
Save this script file as get-IssuancePolicy.ps1.
|
||||
|
||||
``` syntax
|
||||
#######################################
|
||||
## Parameters to be defined ##
|
||||
## by the user ##
|
||||
#######################################
|
||||
Param (
|
||||
$Identity,
|
||||
$LinkedToGroup
|
||||
)
|
||||
#######################################
|
||||
## Strings definitions ##
|
||||
#######################################
|
||||
Data getIP_strings {
|
||||
# culture="en-US"
|
||||
ConvertFrom-StringData -stringdata @'
|
||||
help1 = This command can be used to retrieve all available Issuance Policies in a forest. The forest of the currently logged on user is targeted.
|
||||
help2 = Usage:
|
||||
help3 = The following parameter is mandatory:
|
||||
help4 = -LinkedToGroup:<yes|no|all>
|
||||
help5 = "yes" will return only Issuance Policies that are linked to groups. Checks that the linked Issuance Policies are linked to valid groups.
|
||||
help6 = "no" will return only Issuance Policies that are not currently linked to any group.
|
||||
help7 = "all" will return all Issuance Policies defined in the forest. Checks that the linked Issuance policies are linked to valid groups.
|
||||
help8 = The following parameter is optional:
|
||||
help9 = -Identity:<Name, Distinguished Name or Display Name of the Issuance Policy that you want to retrieve>. If you specify an identity, the option specified in the "-LinkedToGroup" parameter is ignored.
|
||||
help10 = Output: This script returns the Issuance Policy objects meeting the criteria defined by the above parameters.
|
||||
help11 = Examples:
|
||||
errorIPNotFound = Error: no Issuance Policy could be found with Identity "{0}"
|
||||
ErrorNotSecurity = Error: Issuance Policy "{0}" is linked to group "{1}" which is not of type "Security".
|
||||
ErrorNotUniversal = Error: Issuance Policy "{0}" is linked to group "{1}" whose scope is not "Universal".
|
||||
ErrorHasMembers = Error: Issuance Policy "{0}" is linked to group "{1}" which has a non-empty membership. The group has the following members:
|
||||
LinkedIPs = The following Issuance Policies are linked to groups:
|
||||
displayName = displayName : {0}
|
||||
Name = Name : {0}
|
||||
dn = distinguishedName : {0}
|
||||
InfoName = Linked Group Name: {0}
|
||||
InfoDN = Linked Group DN: {0}
|
||||
NonLinkedIPs = The following Issuance Policies are NOT linked to groups:
|
||||
'@
|
||||
}
|
||||
##Import-LocalizedData getIP_strings
|
||||
import-module ActiveDirectory
|
||||
#######################################
|
||||
## Help ##
|
||||
#######################################
|
||||
function Display-Help {
|
||||
""
|
||||
$getIP_strings.help1
|
||||
""
|
||||
$getIP_strings.help2
|
||||
""
|
||||
$getIP_strings.help3
|
||||
" " + $getIP_strings.help4
|
||||
" " + $getIP_strings.help5
|
||||
" " + $getIP_strings.help6
|
||||
" " + $getIP_strings.help7
|
||||
""
|
||||
$getIP_strings.help8
|
||||
" " + $getIP_strings.help9
|
||||
""
|
||||
$getIP_strings.help10
|
||||
""
|
||||
""
|
||||
$getIP_strings.help11
|
||||
" " + '$' + "myIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:All"
|
||||
" " + '$' + "myLinkedIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:yes"
|
||||
" " + '$' + "myIP = .\get-IssuancePolicy.ps1 -Identity:""Medium Assurance"""
|
||||
""
|
||||
}
|
||||
$root = get-adrootdse
|
||||
$domain = get-addomain -current loggedonuser
|
||||
$configNCDN = [String]$root.configurationNamingContext
|
||||
if ( !($Identity) -and !($LinkedToGroup) ) {
|
||||
display-Help
|
||||
break
|
||||
}
|
||||
if ($Identity) {
|
||||
$OIDs = get-adobject -Filter {(objectclass -eq "msPKI-Enterprise-Oid") -and ((name -eq $Identity) -or (displayname -eq $Identity) -or (distinguishedName -like $Identity)) } -searchBase $configNCDN -properties *
|
||||
if ($OIDs -eq $null) {
|
||||
$errormsg = $getIP_strings.ErrorIPNotFound -f $Identity
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
foreach ($OID in $OIDs) {
|
||||
if ($OID."msDS-OIDToGroupLink") {
|
||||
# In case the Issuance Policy is linked to a group, it is good to check whether there is any problem with the mapping.
|
||||
$groupDN = $OID."msDS-OIDToGroupLink"
|
||||
$group = get-adgroup -Identity $groupDN
|
||||
$groupName = $group.Name
|
||||
# Analyze the group
|
||||
if ($group.groupCategory -ne "Security") {
|
||||
$errormsg = $getIP_strings.ErrorNotSecurity -f $Identity, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
if ($group.groupScope -ne "Universal") {
|
||||
$errormsg = $getIP_strings.ErrorNotUniversal -f $Identity, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
$members = Get-ADGroupMember -Identity $group
|
||||
if ($members) {
|
||||
$errormsg = $getIP_strings.ErrorHasMembers -f $Identity, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
foreach ($member in $members) {
|
||||
write-host " " $member -ForeGroundColor Red
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $OIDs
|
||||
break
|
||||
}
|
||||
if (($LinkedToGroup -eq "yes") -or ($LinkedToGroup -eq "all")) {
|
||||
$LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(msDS-OIDToGroupLink=*)(flags=2))"
|
||||
$LinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter -properties *
|
||||
write-host ""
|
||||
write-host "*****************************************************"
|
||||
write-host $getIP_strings.LinkedIPs
|
||||
write-host "*****************************************************"
|
||||
write-host ""
|
||||
if ($LinkedOIDs -ne $null){
|
||||
foreach ($OID in $LinkedOIDs) {
|
||||
# Display basic information about the Issuance Policies
|
||||
""
|
||||
$getIP_strings.displayName -f $OID.displayName
|
||||
$getIP_strings.Name -f $OID.Name
|
||||
$getIP_strings.dn -f $OID.distinguishedName
|
||||
# Get the linked group.
|
||||
$groupDN = $OID."msDS-OIDToGroupLink"
|
||||
$group = get-adgroup -Identity $groupDN
|
||||
$getIP_strings.InfoName -f $group.Name
|
||||
$getIP_strings.InfoDN -f $groupDN
|
||||
# Analyze the group
|
||||
$OIDName = $OID.displayName
|
||||
$groupName = $group.Name
|
||||
if ($group.groupCategory -ne "Security") {
|
||||
$errormsg = $getIP_strings.ErrorNotSecurity -f $OIDName, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
if ($group.groupScope -ne "Universal") {
|
||||
$errormsg = $getIP_strings.ErrorNotUniversal -f $OIDName, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
$members = Get-ADGroupMember -Identity $group
|
||||
if ($members) {
|
||||
$errormsg = $getIP_strings.ErrorHasMembers -f $OIDName, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
foreach ($member in $members) {
|
||||
write-host " " $member -ForeGroundColor Red
|
||||
}
|
||||
}
|
||||
write-host ""
|
||||
}
|
||||
}else{
|
||||
write-host "There are no issuance policies that are mapped to a group"
|
||||
}
|
||||
if ($LinkedToGroup -eq "yes") {
|
||||
return $LinkedOIDs
|
||||
break
|
||||
}
|
||||
}
|
||||
if (($LinkedToGroup -eq "no") -or ($LinkedToGroup -eq "all")) {
|
||||
$LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(!(msDS-OIDToGroupLink=*))(flags=2))"
|
||||
$NonLinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter -properties *
|
||||
write-host ""
|
||||
write-host "*********************************************************"
|
||||
write-host $getIP_strings.NonLinkedIPs
|
||||
write-host "*********************************************************"
|
||||
write-host ""
|
||||
if ($NonLinkedOIDs -ne $null) {
|
||||
foreach ($OID in $NonLinkedOIDs) {
|
||||
# Display basic information about the Issuance Policies
|
||||
write-host ""
|
||||
$getIP_strings.displayName -f $OID.displayName
|
||||
$getIP_strings.Name -f $OID.Name
|
||||
$getIP_strings.dn -f $OID.distinguishedName
|
||||
write-host ""
|
||||
}
|
||||
}else{
|
||||
write-host "There are no issuance policies which are not mapped to groups"
|
||||
}
|
||||
if ($LinkedToGroup -eq "no") {
|
||||
return $NonLinkedOIDs
|
||||
break
|
||||
}
|
||||
}
|
||||
```
|
||||
> [!NOTE]
|
||||
> If you're having trouble running this script, try replacing the single quote after the ConvertFrom-StringData parameter.
|
||||
|
||||
## <a href="" id="bkmk-setscript"></a>Link an issuance policy to a group
|
||||
|
||||
Save the script file as set-IssuancePolicyToGroupLink.ps1.
|
||||
|
||||
``` syntax
|
||||
#######################################
|
||||
## Parameters to be defined ##
|
||||
## by the user ##
|
||||
#######################################
|
||||
Param (
|
||||
$IssuancePolicyName,
|
||||
$groupOU,
|
||||
$groupName
|
||||
)
|
||||
#######################################
|
||||
## Strings definitions ##
|
||||
#######################################
|
||||
Data ErrorMsg {
|
||||
# culture="en-US"
|
||||
ConvertFrom-StringData -stringdata @'
|
||||
help1 = This command can be used to set the link between a certificate issuance policy and a universal security group.
|
||||
help2 = Usage:
|
||||
help3 = The following parameters are required:
|
||||
help4 = -IssuancePolicyName:<name or display name of the issuance policy that you want to link to a group>
|
||||
help5 = -groupName:<name of the group you want to link the issuance policy to>. If no name is specified, any existing link to a group is removed from the Issuance Policy.
|
||||
help6 = The following parameter is optional:
|
||||
help7 = -groupOU:<Name of the Organizational Unit dedicated to the groups which are linked to issuance policies>. If this parameter is not specified, the group is looked for or created in the Users container.
|
||||
help8 = Examples:
|
||||
help9 = This command will link the issuance policy whose display name is "High Assurance" to the group "HighAssuranceGroup" in the Organizational Unit "OU_FOR_IPol_linked_groups". If the group or the Organizational Unit do not exist, you will be prompted to create them.
|
||||
help10 = This command will unlink the issuance policy whose name is "402.164959C40F4A5C12C6302E31D5476062" from any group.
|
||||
MultipleIPs = Error: Multiple Issuance Policies with name or display name "{0}" were found in the subtree of "{1}"
|
||||
NoIP = Error: no issuance policy with name or display name "{0}" could be found in the subtree of "{1}".
|
||||
IPFound = An Issuance Policy with name or display name "{0}" was successfully found: {1}
|
||||
MultipleOUs = Error: more than 1 Organizational Unit with name "{0}" could be found in the subtree of "{1}".
|
||||
confirmOUcreation = Warning: The Organizational Unit that you specified does not exist. Do you want to create it?
|
||||
OUCreationSuccess = Organizational Unit "{0}" successfully created.
|
||||
OUcreationError = Error: Organizational Unit "{0}" could not be created.
|
||||
OUFoundSuccess = Organizational Unit "{0}" was successfully found.
|
||||
multipleGroups = Error: More than one group with name "{0}" was found in Organizational Unit "{1}".
|
||||
confirmGroupCreation = Warning: The group that you specified does not exist. Do you want to create it?
|
||||
groupCreationSuccess = Univeral Security group "{0}" successfully created.
|
||||
groupCreationError = Error: Univeral Security group "{0}" could not be created.
|
||||
GroupFound = Group "{0}" was successfully found.
|
||||
confirmLinkDeletion = Warning: The Issuance Policy "{0}" is currently linked to group "{1}". Do you really want to remove the link?
|
||||
UnlinkSuccess = Certificate issuance policy successfully unlinked from any group.
|
||||
UnlinkError = Removing the link failed.
|
||||
UnlinkExit = Exiting without removing the link from the issuance policy to the group.
|
||||
IPNotLinked = The Certificate issuance policy is not currently linked to any group. If you want to link it to a group, you should specify the -groupName option when starting this script.
|
||||
ErrorNotSecurity = Error: You cannot link issuance Policy "{0}" to group "{1}" because this group is not of type "Security".
|
||||
ErrorNotUniversal = Error: You cannot link issuance Policy "{0}" to group "{1}" because the scope of this group is not "Universal".
|
||||
ErrorHasMembers = Error: You cannot link issuance Policy "{0}" to group "{1}" because it has a non-empty membership. The group has the following members:
|
||||
ConfirmLinkReplacement = Warning: The Issuance Policy "{0}" is currently linked to group "{1}". Do you really want to update the link to point to group "{2}"?
|
||||
LinkSuccess = The certificate issuance policy was successfully linked to the specified group.
|
||||
LinkError = The certificate issuance policy could not be linked to the specified group.
|
||||
ExitNoLinkReplacement = Exiting without setting the new link.
|
||||
'@
|
||||
}
|
||||
# import-localizeddata ErrorMsg
|
||||
function Display-Help {
|
||||
""
|
||||
write-host $ErrorMsg.help1
|
||||
""
|
||||
write-host $ErrorMsg.help2
|
||||
""
|
||||
write-host $ErrorMsg.help3
|
||||
write-host "`t" $ErrorMsg.help4
|
||||
write-host "`t" $ErrorMsg.help5
|
||||
""
|
||||
write-host $ErrorMsg.help6
|
||||
write-host "`t" $ErrorMsg.help7
|
||||
""
|
||||
""
|
||||
write-host $ErrorMsg.help8
|
||||
""
|
||||
write-host $ErrorMsg.help9
|
||||
".\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName ""High Assurance"" -groupOU ""OU_FOR_IPol_linked_groups"" -groupName ""HighAssuranceGroup"" "
|
||||
""
|
||||
write-host $ErrorMsg.help10
|
||||
'.\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName "402.164959C40F4A5C12C6302E31D5476062" -groupName $null '
|
||||
""
|
||||
}
|
||||
# Assumption: The group to which the Issuance Policy is going
|
||||
# to be linked is (or is going to be created) in
|
||||
# the domain the user running this script is a member of.
|
||||
import-module ActiveDirectory
|
||||
$root = get-adrootdse
|
||||
$domain = get-addomain -current loggedonuser
|
||||
if ( !($IssuancePolicyName) ) {
|
||||
display-Help
|
||||
break
|
||||
}
|
||||
#######################################
|
||||
## Find the OID object ##
|
||||
## (aka Issuance Policy) ##
|
||||
#######################################
|
||||
$searchBase = [String]$root.configurationnamingcontext
|
||||
$OID = get-adobject -searchBase $searchBase -Filter { ((displayname -eq $IssuancePolicyName) -or (name -eq $IssuancePolicyName)) -and (objectClass -eq "msPKI-Enterprise-Oid")} -properties *
|
||||
if ($OID -eq $null) {
|
||||
$tmp = $ErrorMsg.NoIP -f $IssuancePolicyName, $searchBase
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
elseif ($OID.GetType().IsArray) {
|
||||
$tmp = $ErrorMsg.MultipleIPs -f $IssuancePolicyName, $searchBase
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.IPFound -f $IssuancePolicyName, $OID.distinguishedName
|
||||
write-host $tmp -ForeGroundColor Green
|
||||
}
|
||||
#######################################
|
||||
## Find the container of the group ##
|
||||
#######################################
|
||||
if ($groupOU -eq $null) {
|
||||
# default to the Users container
|
||||
$groupContainer = $domain.UsersContainer
|
||||
}
|
||||
else {
|
||||
$searchBase = [string]$domain.DistinguishedName
|
||||
$groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq $groupOU) -and (objectClass -eq "organizationalUnit")}
|
||||
if ($groupContainer.count -gt 1) {
|
||||
$tmp = $ErrorMsg.MultipleOUs -f $groupOU, $searchBase
|
||||
write-host $tmp -ForegroundColor Red
|
||||
break;
|
||||
}
|
||||
elseif ($groupContainer -eq $null) {
|
||||
$tmp = $ErrorMsg.confirmOUcreation
|
||||
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
new-adobject -Name $groupOU -displayName $groupOU -Type "organizationalUnit" -ProtectedFromAccidentalDeletion $true -path $domain.distinguishedName
|
||||
if ($?){
|
||||
$tmp = $ErrorMsg.OUCreationSuccess -f $groupOU
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}
|
||||
else{
|
||||
$tmp = $ErrorMsg.OUCreationError -f $groupOU
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
$groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq $groupOU) -and (objectClass -eq "organizationalUnit")}
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.OUFoundSuccess -f $groupContainer.name
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
#######################################
|
||||
## Find the group ##
|
||||
#######################################
|
||||
if (($groupName -ne $null) -and ($groupName -ne "")){
|
||||
##$searchBase = [String]$groupContainer.DistinguishedName
|
||||
$searchBase = $groupContainer
|
||||
$group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq "group") } -searchBase $searchBase
|
||||
if ($group -ne $null -and $group.gettype().isarray) {
|
||||
$tmp = $ErrorMsg.multipleGroups -f $groupName, $searchBase
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
elseif ($group -eq $null) {
|
||||
$tmp = $ErrorMsg.confirmGroupCreation
|
||||
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
new-adgroup -samAccountName $groupName -path $groupContainer.distinguishedName -GroupScope "Universal" -GroupCategory "Security"
|
||||
if ($?){
|
||||
$tmp = $ErrorMsg.GroupCreationSuccess -f $groupName
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.groupCreationError -f $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break
|
||||
}
|
||||
$group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq "group") } -searchBase $searchBase
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.GroupFound -f $group.Name
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
else {
|
||||
#####
|
||||
## If the group is not specified, we should remove the link if any exists
|
||||
#####
|
||||
if ($OID."msDS-OIDToGroupLink" -ne $null) {
|
||||
$tmp = $ErrorMsg.confirmLinkDeletion -f $IssuancePolicyName, $OID."msDS-OIDToGroupLink"
|
||||
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
set-adobject -Identity $OID -Clear "msDS-OIDToGroupLink"
|
||||
if ($?) {
|
||||
$tmp = $ErrorMsg.UnlinkSuccess
|
||||
write-host $tmp -ForeGroundColor Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.UnlinkError
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.UnlinkExit
|
||||
write-host $tmp
|
||||
break
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.IPNotLinked
|
||||
write-host $tmp -ForeGroundColor Yellow
|
||||
}
|
||||
break;
|
||||
}
|
||||
#######################################
|
||||
## Verify that the group is ##
|
||||
## Universal, Security, and ##
|
||||
## has no members ##
|
||||
#######################################
|
||||
if ($group.GroupScope -ne "Universal") {
|
||||
$tmp = $ErrorMsg.ErrorNotUniversal -f $IssuancePolicyName, $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
if ($group.GroupCategory -ne "Security") {
|
||||
$tmp = $ErrorMsg.ErrorNotSecurity -f $IssuancePolicyName, $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
$members = Get-ADGroupMember -Identity $group
|
||||
if ($members -ne $null) {
|
||||
$tmp = $ErrorMsg.ErrorHasMembers -f $IssuancePolicyName, $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
foreach ($member in $members) {write-host " $member.name" -ForeGroundColor Red}
|
||||
break;
|
||||
}
|
||||
#######################################
|
||||
## We have verified everything. We ##
|
||||
## can create the link from the ##
|
||||
## Issuance Policy to the group. ##
|
||||
#######################################
|
||||
if ($OID."msDS-OIDToGroupLink" -ne $null) {
|
||||
$tmp = $ErrorMsg.ConfirmLinkReplacement -f $IssuancePolicyName, $OID."msDS-OIDToGroupLink", $group.distinguishedName
|
||||
write-host $tmp "( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
$tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
|
||||
set-adobject -Identity $OID -Replace $tmp
|
||||
if ($?) {
|
||||
$tmp = $Errormsg.LinkSuccess
|
||||
write-host $tmp -Foreground Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.LinkError
|
||||
write-host $tmp -Foreground Red
|
||||
}
|
||||
} else {
|
||||
$tmp = $Errormsg.ExitNoLinkReplacement
|
||||
write-host $tmp
|
||||
break
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
|
||||
set-adobject -Identity $OID -Add $tmp
|
||||
if ($?) {
|
||||
$tmp = $Errormsg.LinkSuccess
|
||||
write-host $tmp -Foreground Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.LinkError
|
||||
write-host $tmp -Foreground Red
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> If you're having trouble running this script, try replacing the single quote after the ConvertFrom-StringData parameter.
|
@ -16,6 +16,8 @@ author: brianlic-msft
|
||||
- Windows 10
|
||||
- Windows Server 2016
|
||||
|
||||
Prefer video? See [Credential Theft and Lateral Traversal](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=cfGBPlIyC_9404300474) in the Deep Dive into Credential Guard video series.
|
||||
|
||||
Introduced in Windows 10 Enterprise and Windows Server 2016, Credential Guard uses virtualization-based security to isolate secrets so that only privileged system software can access them. Unauthorized access to these secrets can lead to credential theft attacks, such as Pass-the-Hash or Pass-The-Ticket. Credential Guard prevents these attacks by protecting NTLM password hashes, Kerberos Ticket Granting Tickets, and credentials stored by applications as domain credentials.
|
||||
|
||||
By enabling Credential Guard, the following features and solutions are provided:
|
||||
@ -24,928 +26,6 @@ By enabling Credential Guard, the following features and solutions are provided:
|
||||
- **Virtualization-based security** Windows NTLM and Kerberos derived credentials and other secrets run in a protected environment that is isolated from the running operating system.
|
||||
- **Better protection against advanced persistent threats** When Credential Manager domain credentials, NTLM, and Kerberos derived credentials are protected using virtualization-based security, the credential theft attack techniques and tools used in many targeted attacks are blocked. Malware running in the operating system with administrative privileges cannot extract secrets that are protected by virtualization-based security. While Credential Guard is a powerful mitigation, persistent threat attacks will likely shift to new attack techniques and you should also incorporate Device Guard and other security strategies and architectures.
|
||||
|
||||
## How it works
|
||||
|
||||
Kerberos, NTLM, and Credential manager isolate secrets that previous versions of Windows stored in the Local Security Authority (LSA) by using virtualization-based security. Prior to Windows 10, the LSA stored secrets used by the operating system in its process memory. With Credential Guard enabled, the LSA process in the operating system talks to a new component called the isolated LSA process that stores and protects those secrets. Data stored by the isolated LSA process is protected using virtualization-based security and is not accessible to the rest of the operating system. LSA uses remote procedure calls to communicate with the isolated LSA process.
|
||||
|
||||
For security reasons, the isolated LSA process doesn't host any device drivers. Instead, it only hosts a small subset of operating system binaries that are needed for security and nothing else. All of these binaries are signed with a certificate that is trusted by virtualization-based security and these signatures are validated before launching the file in the protected environment.
|
||||
|
||||
When Credential Guard is enabled, NTLMv1, MS-CHAPv2, Digest, and CredSSP cannot use the signed-in credentials. Thus, single sign-on does not work with these protocols. However, applications can prompt for credentials or use credentials stored in the Windows Vault which are not protected by Credential Guard with any of these protocol. It is strongly recommended that valuable credentials, such as the sign-in credentials, not be used with any of these protocols. If these protocols must be used by domain or Azure AD users, secondary credentials should be provisioned for these use cases.
|
||||
|
||||
When Credential Guard is enabled, Kerberos does not allow unconstrained Kerberos delegation or DES encryption, not only for signed-in credentials, but also prompted or saved credentials.
|
||||
|
||||
Here's a high-level overview on how the LSA is isolated by using virtualization-based security:
|
||||
|
||||

|
||||
|
||||
## Requirements
|
||||
|
||||
For Credential Guard to provide protections, the computers you are protecting must meet certain baseline hardware, firmware, and software requirements which we will refer to as [Hardware and software requirements](#hardware-and-software-requirements). Additionally Credential Guard blocks specific authentication capabilities, so applications which require blocked capabilities will break. We will refer to this as [Application requirements](#application-requirements). Beyond that, computers can meet additional hardware and firmware qualifications, and receive additional protection—those computers will be more hardened against certain threats. To keep this section brief, those will be in [Security Considerations](#security-considerations).
|
||||
|
||||
### Hardware and software requirements
|
||||
|
||||
To provide basic protection against OS level attempts to read Credential Manager domain credentials, NTLM and Kerberos derived credentials, Credential Manager uses:
|
||||
- Support for Virtualization-based security (required)
|
||||
- Secure boot (required)
|
||||
- TPM 2.0 either discrete or firmware (preferred - provides binding to hardware)
|
||||
- UEFI lock (preferred - prevents attacker from disabling with a simple registry key change)
|
||||
|
||||
The Virtualization-based security requires:
|
||||
- 64 bit CPU
|
||||
- CPU virtualization extensions plus extended page tables
|
||||
- Windows hypervisor
|
||||
|
||||
### Application requirements
|
||||
|
||||
When Credential Guard is enabled, specific authentication capabilities are blocked, so applications which require blocked capabilities will break. Applications should be tested prior to deployment to ensure compatiblity with the reduced functionality.
|
||||
|
||||
>[!WARNING]
|
||||
> Enabling Credential Guard on domain controllers is not supported. <br>
|
||||
> The domain controller hosts authentication services which integrate with processes isolated when Credential Guard is enabled, causing crashes.
|
||||
|
||||
>[!NOTE]
|
||||
> Credential Guard does not provide protections for the Active Directory database or the Security Accounts Manager (SAM). The credentials protected by Kerberos and NTLM when Credential Guard is enabled are also in the Active Directory database (on domain controllers) and the SAM (for local accounts).
|
||||
|
||||
Applications will break if they require:
|
||||
- Kerberos DES encryption support
|
||||
- Kerberos unconstrained delegation
|
||||
- Extracting the Kerberos TGT
|
||||
- NTLMv1
|
||||
|
||||
Applications will prompt & expose credentials to risk if they require:
|
||||
- Digest authentication
|
||||
- Credential delegation
|
||||
- MS-CHAPv2
|
||||
|
||||
Applications may cause performance issues when they attempt to hook the isolated Credential Guard process.
|
||||
|
||||
### Security considerations
|
||||
|
||||
All computers that meet baseline protections for hardware, firmware, and software can use Credential Guard.
|
||||
Computers that meet additional qualifications can provide additional protections to further reduce the attack surface.
|
||||
The following tables describe baseline protections, plus protections for improved security that are associated with hardware and firmware options available in 2015, 2016, and 2017.
|
||||
|
||||
> [!NOTE]
|
||||
> Beginning with Windows 10, version 1607, Trusted Platform Module (TPM 2.0) must be enabled by default on new shipping computers. <br>
|
||||
> If you are an OEM, see [PC OEM requirements for Device Guard and Credential Guard](https://msdn.microsoft.com/library/windows/hardware/mt767514.aspx).<br>
|
||||
|
||||
#### Baseline protections
|
||||
|
||||
|Baseline Protections | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Hardware: **64-bit CPU** | A 64-bit computer is required for the Windows hypervisor to provide VBS. |
|
||||
| Hardware: **CPU virtualization extensions**,<br>plus **extended page tables** | **Requirements**: These hardware features are required for VBS:<br>One of the following virtualization extensions:<br>• VT-x (Intel) or<br>• AMD-V<br>And:<br>• Extended page tables, also called Second Level Address Translation (SLAT).<br><br>**Security benefits**: VBS provides isolation of secure kernel from normal operating system. Vulnerabilities and Day 0s in normal operating system cannot be exploited because of this isolation. |
|
||||
| Hardware: **Trusted Platform Module (TPM)** | **Requirement**: TPM 1.2 or TPM 2.0, either discrete or firmware.<br>[TPM recommendations](https://technet.microsoft.com/itpro/windows/keep-secure/tpm-recommendations)<br><br>**Security benefits**: A TPM provides protection for VBS encryption keys that are stored in the firmware. This helps protect against attacks involving a physically present user with BIOS access. |
|
||||
| Firmware: **UEFI firmware version 2.3.1.c or higher with UEFI Secure Boot** | **Requirements**: See the following Windows Hardware Compatibility Program requirement: [System.Fundamentals.Firmware.UEFISecureBoot](http://msdn.microsoft.com/library/windows/hardware/dn932805.aspx#system-fundamentals-firmware-uefisecureboot)<br><br>**Security benefits**: UEFI Secure Boot helps ensure that the device boots only authorized code. This can prevent boot kits and root kits from installing and persisting across reboots. |
|
||||
| Firmware: **Secure firmware update process** | **Requirements**: UEFI firmware must support secure firmware update found under the following Windows Hardware Compatibility Program requirement: [System.Fundamentals.Firmware.UEFISecureBoot](http://msdn.microsoft.com/library/windows/hardware/dn932805.aspx#system-fundamentals-firmware-uefisecureboot).<br><br>**Security benefits**: UEFI firmware just like software can have security vulnerabilities that, when found, need to be patched through firmware updates. Patching helps prevent root kits from getting installed. |
|
||||
| Software: Qualified **Windows operating system** | **Requirement**: Windows 10 Enterprise, Windows 10 Education, Windows Server 2016, or Windows 10 IoT Enterprise<br><blockquote><p><strong>Important:</strong><br> Windows Server 2016 running as a domain controller does not support Credential Guard. Only Device Guard is supported in this configuration.</p></blockquote><br>**Security benefits**: Support for VBS and for management features that simplify configuration of Credential Guard. |
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The following tables list additional qualifications for improved security. We strongly recommend meeting the additional qualifications to significantly strengthen the level of security that Credential Guard can provide.
|
||||
|
||||
#### 2015 Additional security qualifications starting with Windows 10, version 1507, and Windows Server 2016 Technical Preview 4
|
||||
|
||||
| Protections for Improved Security | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Hardware: **IOMMU** (input/output memory management unit) | **Requirement**: VT-D or AMD Vi IOMMU<br><br>**Security benefits**: An IOMMU can enhance system resiliency against memory attacks. For more information, see [ACPI description tables](https://msdn.microsoft.com/windows/hardware/drivers/bringup/acpi-system-description-tables). |
|
||||
| Firmware: **Securing Boot Configuration and Management** | **Requirements**:<br>• BIOS password or stronger authentication must be supported.<br>• In the BIOS configuration, BIOS authentication must be set.<br>• There must be support for protected BIOS option to configure list of permitted boot devices (for example, “Boot only from internal hard drive”) and boot device order, overriding BOOTORDER modification made by operating system.<br>• In the BIOS configuration, BIOS options related to security and boot options (list of permitted boot devices, boot order) must be secured to prevent other operating systems from starting and to prevent changes to the BIOS settings.<br><br>**Security benefits**:<br>• BIOS password or stronger authentication helps ensure that only authenticated Platform BIOS administrators can change BIOS settings. This helps protect against a physically present user with BIOS access.<br>• Boot order when locked provides protection against the computer being booted into WinRE or another operating system on bootable media. |
|
||||
| Firmware: **Secure MOR, revision 2 implementation** | **Requirement**: Secure MOR, revision 2 implementation<br><br>**Security benefits**: A secure MOR bit prevents advanced memory attacks. For more information, see [Secure MOR implementation](https://msdn.microsoft.com/windows/hardware/drivers/bringup/device-guard-requirements). |
|
||||
|
||||
<br>
|
||||
|
||||
#### 2016 Additional security qualifications starting with Windows 10, version 1607, and Windows Server 2016
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The following tables list additional qualifications for improved security. Systems that meet these additional qualifications can provide more protections.
|
||||
|
||||
| Protections for Improved Security | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Firmware: **Hardware Rooted Trust Platform Secure Boot** | **Requirements**:<br>Boot Integrity (Platform Secure Boot) must be supported. See the Windows Hardware Compatibility Program requirements under [System.Fundamentals.Firmware.CS.UEFISecureBoot.ConnectedStandby](https://msdn.microsoft.com/library/windows/hardware/dn932807(v=vs.85).aspx#system_fundamentals_firmware_cs_uefisecureboot_connectedstandby)<br>• The Hardware Security Test Interface (HSTI) must be implemented. See [Hardware Security Testability Specification](https://msdn.microsoft.com/en-us/library/windows/hardware/mt712332(v=vs.85).aspx).<br><br>**Security benefits**:<br>• Boot Integrity (Platform Secure Boot) from Power-On provides protections against physically present attackers, and defense-in-depth against malware.<br>• HSTI provides additional security assurance for correctly secured silicon and platform. |
|
||||
| Firmware: **Firmware Update through Windows Update** | **Requirements**: Firmware must support field updates through Windows Update and UEFI encapsulation update.<br><br>**Security benefits**: Helps ensure that firmware updates are fast, secure, and reliable. |
|
||||
| Firmware: **Securing Boot Configuration and Management** | **Requirements**:<br>• Required BIOS capabilities: Ability of OEM to add ISV, OEM, or Enterprise Certificate in Secure Boot DB at manufacturing time.<br>• Required configurations: Microsoft UEFI CA must be removed from Secure Boot DB. Support for 3rd-party UEFI modules is permitted but should leverage ISV-provided certificates or OEM certificate for the specific UEFI software.<br><br>**Security benefits**:<br>• Enterprises can choose to allow proprietary EFI drivers/applications to run.<br>• Removing Microsoft UEFI CA from Secure Boot DB provides full control to enterprises over software that runs before the operating system boots. |
|
||||
|
||||
<br>
|
||||
|
||||
#### 2017 Additional security qualifications starting in 2017
|
||||
|
||||
The following table lists qualifications for 2017, which are in addition to all preceding qualifications.
|
||||
|
||||
| Protection for Improved Security | Description |
|
||||
|---------------------------------------------|----------------------------------------------------|
|
||||
| Firmware: **VBS enablement of NX protection for UEFI runtime services** | **Requirements**:<br>• VBS will enable No-Execute (NX) protection on UEFI runtime service code and data memory regions. UEFI runtime service code must support read-only page protections, and UEFI runtime service data must not be exceutable.<br>• UEFI runtime service must meet these requirements: <br> - Implement UEFI 2.6 EFI_MEMORY_ATTRIBUTES_TABLE. All UEFI runtime service memory (code and data) must be described by this table. <br> - PE sections need to be page-aligned in memory (not required for in non-volitile storage).<br> - The Memory Attributes Table needs to correctly mark code and data as RO/NX for configuration by the OS:<br> - All entries must include attributes EFI_MEMORY_RO, EFI_MEMORY_XP, or both <br> - No entries may be left with neither of the above attributes, indicating memory that is both exceutable and writable. Memory must be either readable and executable or writeable and non-executable. <br><blockquote><p><strong>Notes:</strong><br>• This only applies to UEFI runtime service memory, and not UEFI boot service memory. <br>• This protection is applied by VBS on OS page tables.</p></blockquote><br> Please also note the following: <br>• Do not use sections that are both writeable and exceutable<br>• Do not attempt to directly modify executable system memory<br>• Do not use dynamic code<br><br>**Security benefits**:<br>• Vulnerabilities in UEFI runtime, if any, will be blocked from compromising VBS (such as in functions like UpdateCapsule and SetVariable)<br>• Reduces the attack surface to VBS from system firmware. |
|
||||
| Firmware: **Firmware support for SMM protection** | **Requirements**: The [Windows SMM Security Mitigations Table (WSMT) specification](http://download.microsoft.com/download/1/8/A/18A21244-EB67-4538-BAA2-1A54E0E490B6/WSMT.docx) contains details of an Advanced Configuration and Power Interface (ACPI) table that was created for use with Windows operating systems that support Windows virtualization-based security (VBS) features.<br><br>**Security benefits**:<br>• Protects against potential vulnerabilities in UEFI runtime services, if any, will be blocked from compromising VBS (such as in functions like UpdateCapsule and SetVariable)<br>• Reduces the attack surface to VBS from system firmware.<br>• Blocks additional security attacks against SMM. |
|
||||
|
||||
## Manage Credential Guard
|
||||
|
||||
### Enable Credential Guard
|
||||
Credential Guard can be enabled by using [Group Policy](#turn-on-credential-guard-by-using-group-policy), the [registry](#turn-on-credential-guard-by-using-the-registry), or the Device Guard and Credential Guard [hardware readiness tool](#hardware-readiness-tool).
|
||||
|
||||
#### Turn on Credential Guard by using Group Policy
|
||||
|
||||
You can use Group Policy to enable Credential Guard. This will add and enable the virtualization-based security features for you if needed.
|
||||
|
||||
1. From the Group Policy Management Console, go to **Computer Configuration** -> **Administrative Templates** -> **System** -> **Device Guard**.
|
||||
2. Double-click **Turn On Virtualization Based Security**, and then click the **Enabled** option.
|
||||
3. **Select Platform Security Level** box, choose **Secure Boot** or **Secure Boot and DMA Protection**.
|
||||
4. In the **Credential Guard Configuration** box, click **Enabled with UEFI lock**, and then click **OK**. If you want to be able to turn off Credential Guard remotely, choose **Enabled without lock**.
|
||||
|
||||

|
||||
|
||||
5. Close the Group Policy Management Console.
|
||||
|
||||
To enforce processing of the group policy, you can run ```gpupdate /force```.
|
||||
|
||||
#### Turn on Credential Guard by using the registry
|
||||
|
||||
If you don't use Group Policy, you can enable Credential Guard by using the registry. Credential Guard uses virtualization-based security features which have to be enabled first on some operating systems.
|
||||
|
||||
#### Add the virtualization-based security features
|
||||
|
||||
Starting with Windows 10, version 1607 and Windows Server 2016, enabling Windows features to use virtualization-based security is not necessary and this step can be skipped.
|
||||
|
||||
If you are using Windows 10, version 1507 (RTM) or Windows 10, version 1511, Windows features have to be enabled to use virtualization-based security.
|
||||
You can do this by using either the Control Panel or the Deployment Image Servicing and Management tool (DISM).
|
||||
> [!NOTE]
|
||||
> If you enable Credential Guard by using Group Policy, these steps are not required. Group Policy will install the features for you.
|
||||
|
||||
|
||||
**Add the virtualization-based security features by using Programs and Features**
|
||||
|
||||
1. Open the Programs and Features control panel.
|
||||
2. Click **Turn Windows feature on or off**.
|
||||
3. Go to **Hyper-V** -> **Hyper-V Platform**, and then select the **Hyper-V Hypervisor** check box.
|
||||
4. Select the **Isolated User Mode** check box at the top level of the feature selection.
|
||||
5. Click **OK**.
|
||||
|
||||
**Add the virtualization-based security features to an offline image by using DISM**
|
||||
|
||||
1. Open an elevated command prompt.
|
||||
2. Add the Hyper-V Hypervisor by running the following command:
|
||||
```
|
||||
dism /image:<WIM file name> /Enable-Feature /FeatureName:Microsoft-Hyper-V-Hypervisor /all
|
||||
```
|
||||
3. Add the Isolated User Mode feature by running the following command:
|
||||
```
|
||||
dism /image:<WIM file name> /Enable-Feature /FeatureName:IsolatedUserMode
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> You can also add these features to an online image by using either DISM or Configuration Manager.
|
||||
|
||||
#### Enable virtualization-based security and Credential Guard
|
||||
|
||||
1. Open Registry Editor.
|
||||
2. Enable virtualization-based security:
|
||||
- Go to HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Control\\DeviceGuard.
|
||||
- Add a new DWORD value named **EnableVirtualizationBasedSecurity**. Set the value of this registry setting to 1 to enable virtualization-based security and set it to 0 to disable it.
|
||||
- Add a new DWORD value named **RequirePlatformSecurityFeatures**. Set the value of this registry setting to 1 to use **Secure Boot** only or set it to 3 to use **Secure Boot and DMA protection**.
|
||||
3. Enable Credential Guard:
|
||||
- Go to HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Control\\LSA.
|
||||
- Add a new DWORD value named **LsaCfgFlags**. Set the value of this registry setting to 1 to enable Credential Guard with UEFI lock, set it to 2 to enable Credential Guard without lock, and set it to 0 to disable it.
|
||||
4. Close Registry Editor.
|
||||
|
||||
|
||||
> [!NOTE]
|
||||
> You can also turn on Credential Guard by setting the registry entries in the [FirstLogonCommands](http://msdn.microsoft.com/library/windows/hardware/dn922797.aspx) unattend setting.
|
||||
|
||||
<span id="hardware-readiness-tool" />
|
||||
#### Turn on Credential Guard by using the Device Guard and Credential Guard hardware readiness tool
|
||||
|
||||
You can also enable Credential Guard by using the [Device Guard and Credential Guard hardware readiness tool](https://www.microsoft.com/download/details.aspx?id=53337).
|
||||
|
||||
```
|
||||
DG_Readiness_Tool_v3.0.ps1 -Enable -AutoReboot
|
||||
```
|
||||
|
||||
#### Credential Guard deployment in virtual machines
|
||||
|
||||
Credential Guard can protect secrets in a Hyper-V virtual machine, just as it would on a physical machine. The enablement steps are the same from within the virtual machine.
|
||||
|
||||
Credential Guard protects secrets from non-priviledged access inside the VM. It does not provide additional protection from the host administrator. From the host, you can disable Credential Guard for a virtual machine:
|
||||
|
||||
``` PowerShell
|
||||
Set-VMSecurity -VMName <VMName> -VirtualizationBasedSecurityOptOut $true
|
||||
```
|
||||
|
||||
Requirements for running Credential Guard in Hyper-V virtual machines
|
||||
- The Hyper-V host must have an IOMMU, and run at least Windows Server 2016 or Windows 10 version 1607.
|
||||
- The Hyper-V virtual machine must be Generation 2, have an enabled virtual TPM, and running at least Windows Server 2016 or Windows 10.
|
||||
|
||||
### Remove Credential Guard
|
||||
|
||||
If you have to remove Credential Guard on a PC, you can use the following set of procedures, or you can [use the Device Guard and Credential Guard hardware readiness tool](#turn-off-with-hardware-readiness-tool).
|
||||
|
||||
1. If you used Group Policy, disable the Group Policy setting that you used to enable Credential Guard (**Computer Configuration** -> **Administrative Templates** -> **System** -> **Device Guard** -> **Turn on Virtualization Based Security**).
|
||||
2. Delete the following registry settings:
|
||||
- HKEY\_LOCAL\_MACHINE\\System\\CurrentControlSet\\Control\\LSA\LsaCfgFlags
|
||||
- HKEY\_LOCAL\_MACHINE\\Software\\Policies\\Microsoft\\Windows\\DeviceGuard\\EnableVirtualizationBasedSecurity
|
||||
- HKEY\_LOCAL\_MACHINE\\Software\\Policies\\Microsoft\\Windows\\DeviceGuard\\RequirePlatformSecurityFeatures
|
||||
|
||||
> [!IMPORTANT]
|
||||
> If you manually remove these registry settings, make sure to delete them all. If you don't remove them all, the device might go into BitLocker recovery.
|
||||
|
||||
3. Delete the Credential Guard EFI variables by using bcdedit.
|
||||
|
||||
**Delete the Credential Guard EFI variables**
|
||||
|
||||
1. From an elevated command prompt, type the following commands:
|
||||
``` syntax
|
||||
|
||||
mountvol X: /s
|
||||
|
||||
copy %WINDIR%\System32\SecConfig.efi X:\EFI\Microsoft\Boot\SecConfig.efi /Y
|
||||
|
||||
bcdedit /create {0cb3b571-2f2e-4343-a879-d86a476d7215} /d "DebugTool" /application osloader
|
||||
|
||||
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} path "\EFI\Microsoft\Boot\SecConfig.efi"
|
||||
|
||||
bcdedit /set {bootmgr} bootsequence {0cb3b571-2f2e-4343-a879-d86a476d7215}
|
||||
|
||||
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO
|
||||
|
||||
bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} device partition=X:
|
||||
|
||||
mountvol X: /d
|
||||
|
||||
```
|
||||
2. Restart the PC.
|
||||
3. Accept the prompt to disable Credential Guard.
|
||||
4. Alternatively, you can disable the virtualization-based security features to turn off Credential Guard.
|
||||
|
||||
> [!NOTE]
|
||||
> The PC must have one-time access to a domain controller to decrypt content, such as files that were encrypted with EFS. If you want to turn off both Credential Guard and virtualization-based security, run the following bcdedit command after turning off all virtualization-based security Group Policy and registry settings: bcdedit /set {0cb3b571-2f2e-4343-a879-d86a476d7215} loadoptions DISABLE-LSA-ISO,DISABLE-VBS
|
||||
|
||||
For more info on virtualization-based security and Device Guard, see [Device Guard deployment guide](device-guard-deployment-guide.md).
|
||||
|
||||
<span id="turn-off-with-hardware-readiness-tool" />
|
||||
#### Turn off Credential Guard by using the Device Guard and Credential Guard hardware readiness tool
|
||||
|
||||
You can also disable Credential Guard by using the [Device Guard and Credential Guard hardware readiness tool](https://www.microsoft.com/download/details.aspx?id=53337).
|
||||
|
||||
```
|
||||
DG_Readiness_Tool_v3.0.ps1 -Disable -AutoReboot
|
||||
```
|
||||
|
||||
### Check that Credential Guard is running
|
||||
|
||||
You can use System Information to ensure that Credential Guard is running on a PC.
|
||||
|
||||
1. Click **Start**, type **msinfo32.exe**, and then click **System Information**.
|
||||
2. Click **System Summary**.
|
||||
3. Confirm that **Credential Guard** is shown next to **Device Guard Security Services Running**.
|
||||
|
||||
Here's an example:
|
||||
|
||||

|
||||
|
||||
You can also check that Credential Guard is running by using the [Device Guard and Credential Guard hardware readiness tool](https://www.microsoft.com/download/details.aspx?id=53337).
|
||||
|
||||
```
|
||||
DG_Readiness_Tool_v3.0.ps1 -Ready
|
||||
```
|
||||
|
||||
## Considerations when using Credential Guard
|
||||
|
||||
- If Credential Guard is enabled on a device after it's joined to a domain, the user and device secrets may already be compromised. We recommend that Credential Guard is enabled before the PC is joined to a domain.
|
||||
- You should perform regular reviews of the PCs that have Credential Guard enabled. This can be done with security audit policies or WMI queries. Here's a list of WinInit event IDs to look for:
|
||||
- **Event ID 13** Credential Guard (LsaIso.exe) was started and will protect LSA credentials.
|
||||
- **Event ID 14** Credential Guard (LsaIso.exe) configuration: 0x1, 0
|
||||
- The first variable: 0x1 means Credential Guard is configured to run. 0x0 means it’s not configured to run.
|
||||
- The second variable: 0 means it’s configured to run in protect mode. 1 means it's configured to run in test mode. This variable should always be 0.
|
||||
- **Event ID 15** Credential Guard (LsaIso.exe) is configured but the secure kernel is not running; continuing without Credential Guard.
|
||||
- **Event ID 16** Credential Guard (LsaIso.exe) failed to launch: \[error code\]
|
||||
- **Event ID 17** Error reading Credential Guard (LsaIso.exe) UEFI configuration: \[error code\]
|
||||
You can also verify that TPM is being used for key protection by checking the following event in the **Microsoft** -> **Windows** -> **Kernel-Boot** event source. If you are running with a TPM, the TPM PCR mask value will be something other than 0.
|
||||
- **Event ID 51** VSM Master Encryption Key Provisioning. Using cached copy status: 0x0. Unsealing cached copy status: 0x1. New key generation status: 0x1. Sealing status: 0x1. TPM PCR mask: 0x0.
|
||||
- Passwords are still weak so we recommend that your organization deploy Credential Guard and move away from passwords and to other authentication methods, such as physical smart cards, virtual smart cards, or Windows Hello for Business.
|
||||
- Some 3rd party Security Support Providers (SSPs and APs) might not be compatible with Credential Guard. Credential Guard does not allow 3rd party SSPs to ask for password hashes from LSA. However, SSPs and APs still get notified of the password when a user logs on and/or changes their password. Any use of undocumented APIs within custom SSPs and APs are not supported. We recommend that custom implementations of SSPs/APs are tested against Credential Guard to ensure that the SSPs and APs do not depend on any undocumented or unsupported behaviors. For example, using the KerbQuerySupplementalCredentialsMessage API is not supported. You should not replace the NTLM or Kerberos SSPs with custom SSPs and APs. For more info, see [Restrictions around Registering and Installing a Security Package](http://msdn.microsoft.com/library/windows/desktop/dn865014.aspx) on MSDN.
|
||||
- As the depth and breadth of protections provided by Credential Guard are increased, subsequent releases of Windows 10 with Credential Guard running may impact scenarios that were working in the past. For example, Credential Guard may block the use of a particular type of credential or a particular component to prevent malwar efrom taking advantage of vulnerabilities. Therefore, we recommend that scenarios required for operations in an organization are tested before upgrading a device that has Credential Guard running.
|
||||
|
||||
- Starting with Windows 10, version 1511, domain credentials that are stored with Credential Manager are protected with Credential Guard. Credential Manager allows you to store credentials, such as user names and passwords that you use to log on to websites or other computers on a network. The following considerations apply to the Credential Guard protections for Credential Manager:
|
||||
- Credentials saved by Remote Desktop Services cannot be used to remotely connect to another machine without supplying the password. Attempts to use saved credentials will fail, displaying the error message "Logon attempt failed".
|
||||
- Applications that extract derived domain credentials from Credential Manager will no longer be able to use those credentials.
|
||||
- You cannot restore credentials using the Credential Manager control panel if the credentials were backed up from a PC that has Credential Guard turned on. If you need to back up your credentials, you must do this before you enable Credential Guard. Otherwise, you won't be able to restore those credentials.
|
||||
- Credential Guard uses hardware security so some features, such as Windows To Go, are not supported.
|
||||
|
||||
### NTLM & CHAP Considerations
|
||||
|
||||
When you enable Credential Guard, you can no longer use NTLM v1 authentication. If you are using WiFi and VPN endpoints that are based on MS-CHAPv2, they are subject to similar attacks as NTLMv1. We recommend that organizations use certificated-based authentication for WiFi and VPN connections.
|
||||
|
||||
### Kerberos Considerations
|
||||
|
||||
When you enable Credential Guard, you can no longer use Kerberos unconstrained delegation or DES encryption. Unconstrained delegation could allow attackers to extract Kerberos keys from the isolated LSA process. You must use constrained or resource-based Kerberos delegation instead.
|
||||
|
||||
## Scenarios not protected by Credential Guard
|
||||
|
||||
Some ways to store credentials are not protected by Credential Guard, including:
|
||||
|
||||
- Software that manages credentials outside of Windows feature protection
|
||||
- Local accounts and Microsoft Accounts
|
||||
- Credential Guard does not protect the Active Directory database running on Windows Server 2016 domain controllers. It also does not protect credential input pipelines, such as Windows Server 2016 servers running Remote Desktop Gateway. If you're using a Windows Server 2016 server as a client PC, it will get the same protection as it would be running Windows 10 Enterprise.
|
||||
- Key loggers
|
||||
- Physical attacks
|
||||
- Does not prevent an attacker with malware on the PC from using the privileges associated with any credential. We recommend using dedicated PCs for high value accounts, such as IT Pros and users with access high value assets in your organization.
|
||||
- Third-party security packages
|
||||
- Digest and CredSSP credentials
|
||||
- When Credential Guard is enabled, neither Digest nor CredSSP have access to users' logon credentials. This implies no Single Sign-On use for these protocols.
|
||||
- Supplied credentials for NTLM authentication are not protected. If a user is prompted for and enters credentials for NTLM authentication, these credentials are vulnerable to be read from LSASS memory. Note that these same credentials are vulnerable to key loggers as well.
|
||||
|
||||
## Additional mitigations
|
||||
|
||||
Credential Guard can provide mitigations against attacks on derived credentials and prevent the use of stolen credentials elsewhere. However, PCs can still be vulnerable to certain attacks, even if the derived credentials are protected by Credential Guard. These attacks can include abusing privileges and use of derived credentials directly from a compromised device, reusing previously stolen credentials prior to Device Guard, and abuse of management tools and weak application configurations. Because of this, additional mitigations also need to be deployed to make the domain environment more robust.
|
||||
|
||||
### Restricting domain users to specific domain-joined devices
|
||||
|
||||
Credential theft attacks allow the attacker to steal secrets from one device and use them from another device. If a user can sign on multiple devices then any device could be used to steal credentials. How do you ensure that users only sign on with devices with Credential Guard? By deploying authentication policies which restrict them to specific domain-joined device that have been configured with Credential Guard. For the domain controller to know what device a user is signing on from, Kerberos armoring must be used.
|
||||
|
||||
#### Kerberos armoring
|
||||
|
||||
Kerberos armoring is part of RFC 6113. When a device supports Kerberos armoring, its TGT is used to protect the user's proof of possession which can mitigate offline dictionary attacks. Kerberos armoring also provides the additional benefit of signed KDC errors this mitigates tampering which can result in things such as downgrade attacks.
|
||||
|
||||
**To enable Kerberos armoring for restricting domain users to specific domain-joined devices**
|
||||
|
||||
- Users need to be in domains which are running Windows Server 2012 R2 or higher
|
||||
- All the domain controllers in these domains must be configured to support Kerberos armoring. Set the **KDC support for claims, compound authentication, and Kerberos armoring** Group Policy setting to either **Supported** or **Always provide claims**.
|
||||
- All the devices with Credential Guard which the users will be restricted to must be configured to support Kerberos armoring. Enable the **Kerberos client support for claims, compound authentication and Kerberos armoring** Group Policy settings under **Computer Configuration** -> **Administrative Templates** -> **System** -> **Kerberos**.
|
||||
|
||||
#### Protecting domain-joined device secrets
|
||||
|
||||
Since domain-joined devices also use shared secrets for authentication, attackers can steal those secrets as well. By deploying device certificates with Credential Guard, the private key can be protected. Then authentication policies can require that users sign on devices which authenticate using those certificates. This prevents shared secrets on stolen from the device to be used with stolen user credentials to sign on as the user.
|
||||
|
||||
Domain-joined device certificate authentication has the following requirements:
|
||||
- Devices' accounts are in Windows Server 2012 domain funcational level or higher domains.
|
||||
- All domain controllers in those domains have KDC certificates which satisfy strict KDC validation certificate requirements:
|
||||
- KDC EKU present
|
||||
- DNS domain name matches the DNSName field of the SubjectAltName (SAN) extension
|
||||
- Windows 10 devices have the CA issuing the domain controller certificates in the enterprise store.
|
||||
- A process is established to ensure the identity and trustworthiness of the device in a similar manner as you would establish the identity and trustworthiness of a user before issuing them a smartcard.
|
||||
|
||||
##### Deploying domain-joined device certificates
|
||||
|
||||
To guarantee that certificates with the issuance policy required are only on the devices these users must use, they must be deployed manually on each device. The same security procedures used for issuing smart cards to users should be applied to device certificates.
|
||||
|
||||
For example, let's say you wanted to use the High Assurance policy only on these devices. Using a Windows Server Enterprise certificate authority, you would create a new template.
|
||||
|
||||
**Creating a new certificate template**
|
||||
|
||||
1. From the Certificate Manager console, right-click **Certificate Templates**, and then click **Manage.**
|
||||
2. Right-click **Workstation Authentication**, and then click **Duplicate Template**.
|
||||
3. Right-click the new template, and then click **Properties**.
|
||||
4. On the **Extensions** tab, click **Application Policies**, and then click **Edit**.
|
||||
5. Click **Client Authentication**, and then click **Remove**.
|
||||
6. Add the ID-PKInit-KPClientAuth EKU. Click **Add**, click **New**, and then specify the following values:
|
||||
- Name: Kerberos Client Auth
|
||||
- Object Identifier: 1.3.6.1.5.2.3.4
|
||||
7. On the **Extensions** tab, click **Issuance Policies**, and then click **Edit**.
|
||||
8. Under **Issuance Policies**, click**High Assurance**.
|
||||
9. On the **Subject name** tab, clear the **DNS name** check box, and then select the **User Principal Name (UPN)** check box.
|
||||
|
||||
Then on the devices that are running Credential Guard, enroll the devices using the certificate you just created.
|
||||
|
||||
**Enrolling devices in a certificate**
|
||||
|
||||
Run the following command:
|
||||
``` syntax
|
||||
CertReq -EnrollCredGuardCert MachineAuthentication
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> You must restart the device after enrolling the machine authentication certificate.
|
||||
|
||||
#### How a certificate issuance policy can be used for access control
|
||||
|
||||
Beginning with the Windows Server 2008 R2 domain functional level, domain controllers support for authentication mechanism assurance provides a way to map certificate issuance policy OIDs to universal security groups. Windows Server 2012 domain controllers with claim support can map them to claims. To learn more about authentication mechanism assurance, see [Authentication Mechanism Assurance for AD DS in Windows Server 2008 R2 Step-by-Step Guide](https://technet.microsoft.com/en-us/library/dd378897(v=ws.10).aspx) on TechNet.
|
||||
|
||||
**To see the issuance policies available**
|
||||
|
||||
- The [get-IssuancePolicy.ps1](#bkmk-getscript) shows all of the issuance policies that are available on the certificate authority.
|
||||
From a Windows PowerShell command prompt, run the following command:
|
||||
|
||||
``` syntax
|
||||
.\get-IssuancePolicy.ps1 –LinkedToGroup:All
|
||||
```
|
||||
|
||||
**To link a issuance policy to a universal security group**
|
||||
|
||||
- The [set-IssuancePolicyToGroupLink.ps1](#bkmk-setscript) creates a Universal security group, creates an organizational unit, and links the issuance policy to that Universal security group.
|
||||
From a Windows PowerShell command prompt, run the following command:
|
||||
|
||||
``` syntax
|
||||
.\set-IssuancePolicyToGroupLink.ps1 –IssuancePolicyName:"<name of issuance policy>" –groupOU:"<Name of OU to create>" –groupName:”<name of Universal security group to create>"
|
||||
```
|
||||
|
||||
#### Restricting user sign on
|
||||
|
||||
So we now have the following:
|
||||
|
||||
- Created a special certificate issuance policy to identify devices which meet the deployment criteria required for the user to be able to sign on
|
||||
- Mapped that policy to a universal security group or claim
|
||||
- Provided a way for domain controllers to get the device authorization data during user sign on using Kerberos armoring-
|
||||
so what is left to do is configuring the access check on the domain controllers. This is done with authentication policies.
|
||||
|
||||
Authentication policies have the following requirements:
|
||||
- User accounts are in a Windows Server 2012 domain functional level or higher domain.
|
||||
|
||||
**Creating an authentication policy restricting to the specific universal security group**
|
||||
|
||||
1. Open Active Directory Administrative Center.
|
||||
2. Click **Authentication**, click **New**, and then click **Authentication Policy**.
|
||||
3. In the **Display name** box, enter a name for this authentication policy.
|
||||
4. Under the **Accounts** heading, click **Add**.
|
||||
5. In the **Select Users, Computers, or Service Accounts** dialog box, type the name of the user account you with to restrict, and then click **OK**.
|
||||
6. Under the **User Sign On** heading, click the **Edit** button.
|
||||
7. Click **Add a condition**.
|
||||
8. In the **Edit Access Control Conditions** box, ensure that it reads **User** > **Group** > **Member of each** > **Value**, and then click **Add items**.
|
||||
9. In the **Select Users, Computers, or Service Accounts** dialog box, type the name of the universal security group that you created with the set-IssuancePolicyToGroupLink script, and then click **OK**.
|
||||
10. Click **OK** to close the **Edit Access Control Conditions** box.
|
||||
11. Click **OK** to create the authentication policy.
|
||||
12. Close Active Directory Administrative Center.
|
||||
|
||||
> [!NOTE]
|
||||
> When the authentication policy enforces policy restrictions, users will not be able to sign on using devices that do not have a certificate with the appropriate issuance policy deployed. This applies to both local and remote sign on scenarios. Therefore, it is strongly recommended to first only audit policy restrictions to ensure you don't have unexpected failures.
|
||||
|
||||
#### Discovering authentication failures due to authentication policies
|
||||
|
||||
To make tracking authentication failures due to authentication policies easier, an operational log exists with just those events. To enable the logs on the domain controllers, in Event Viewer, navigate to **Applications and Services Logs\\Microsoft\\Windows\\Authentication, right-click AuthenticationPolicyFailures-DomainController**, and then click **Enable Log**.
|
||||
|
||||
To learn more about authentication policy events, see [Authentication Policies and Authentication Policy Silos](https://technet.microsoft.com/en-us/library/dn486813(v=ws.11).aspx).
|
||||
|
||||
## Appendix: Scripts
|
||||
|
||||
Here is a list of scripts that are mentioned in this topic.
|
||||
|
||||
### <a href="" id="bkmk-getscript"></a>Get the available issuance policies on the certificate authority
|
||||
|
||||
Save this script file as get-IssuancePolicy.ps1.
|
||||
|
||||
``` syntax
|
||||
#######################################
|
||||
## Parameters to be defined ##
|
||||
## by the user ##
|
||||
#######################################
|
||||
Param (
|
||||
$Identity,
|
||||
$LinkedToGroup
|
||||
)
|
||||
#######################################
|
||||
## Strings definitions ##
|
||||
#######################################
|
||||
Data getIP_strings {
|
||||
# culture="en-US"
|
||||
ConvertFrom-StringData -stringdata @'
|
||||
help1 = This command can be used to retrieve all available Issuance Policies in a forest. The forest of the currently logged on user is targetted.
|
||||
help2 = Usage:
|
||||
help3 = The following parameter is mandatory:
|
||||
help4 = -LinkedToGroup:<yes|no|all>
|
||||
help5 = "yes" will return only Issuance Policies that are linked to groups. Checks that the linked Issuance Policies are linked to valid groups.
|
||||
help6 = "no" will return only Issuance Policies that are not currently linked to any group.
|
||||
help7 = "all" will return all Issuance Policies defined in the forest. Checks that the linked Issuance policies are linked to valid groups.
|
||||
help8 = The following parameter is optional:
|
||||
help9 = -Identity:<Name, Distinguished Name or Display Name of the Issuance Policy that you want to retrieve>. If you specify an identity, the option specified in the "-LinkedToGroup" parameter is ignored.
|
||||
help10 = Output: This script returns the Issuance Policy objects meeting the criteria defined by the above parameters.
|
||||
help11 = Examples:
|
||||
errorIPNotFound = Error: no Issuance Policy could be found with Identity "{0}"
|
||||
ErrorNotSecurity = Error: Issuance Policy "{0}" is linked to group "{1}" which is not of type "Security".
|
||||
ErrorNotUniversal = Error: Issuance Policy "{0}" is linked to group "{1}" whose scope is not "Universal".
|
||||
ErrorHasMembers = Error: Issuance Policy "{0}" is linked to group "{1}" which has a non-empty membership. The group has the following members:
|
||||
LinkedIPs = The following Issuance Policies are linked to groups:
|
||||
displayName = displayName : {0}
|
||||
Name = Name : {0}
|
||||
dn = distinguishedName : {0}
|
||||
InfoName = Linked Group Name: {0}
|
||||
InfoDN = Linked Group DN: {0}
|
||||
NonLinkedIPs = The following Issuance Policies are NOT linked to groups:
|
||||
'@
|
||||
}
|
||||
##Import-LocalizedData getIP_strings
|
||||
import-module ActiveDirectory
|
||||
#######################################
|
||||
## Help ##
|
||||
#######################################
|
||||
function Display-Help {
|
||||
""
|
||||
$getIP_strings.help1
|
||||
""
|
||||
$getIP_strings.help2
|
||||
""
|
||||
$getIP_strings.help3
|
||||
" " + $getIP_strings.help4
|
||||
" " + $getIP_strings.help5
|
||||
" " + $getIP_strings.help6
|
||||
" " + $getIP_strings.help7
|
||||
""
|
||||
$getIP_strings.help8
|
||||
" " + $getIP_strings.help9
|
||||
""
|
||||
$getIP_strings.help10
|
||||
""
|
||||
""
|
||||
$getIP_strings.help11
|
||||
" " + '$' + "myIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:All"
|
||||
" " + '$' + "myLinkedIPs = .\get-IssuancePolicy.ps1 -LinkedToGroup:yes"
|
||||
" " + '$' + "myIP = .\get-IssuancePolicy.ps1 -Identity:""Medium Assurance"""
|
||||
""
|
||||
}
|
||||
$root = get-adrootdse
|
||||
$domain = get-addomain -current loggedonuser
|
||||
$configNCDN = [String]$root.configurationNamingContext
|
||||
if ( !($Identity) -and !($LinkedToGroup) ) {
|
||||
display-Help
|
||||
break
|
||||
}
|
||||
if ($Identity) {
|
||||
$OIDs = get-adobject -Filter {(objectclass -eq "msPKI-Enterprise-Oid") -and ((name -eq $Identity) -or (displayname -eq $Identity) -or (distinguishedName -like $Identity)) } -searchBase $configNCDN -properties *
|
||||
if ($OIDs -eq $null) {
|
||||
$errormsg = $getIP_strings.ErrorIPNotFound -f $Identity
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
foreach ($OID in $OIDs) {
|
||||
if ($OID."msDS-OIDToGroupLink") {
|
||||
# In case the Issuance Policy is linked to a group, it is good to check whether there is any problem with the mapping.
|
||||
$groupDN = $OID."msDS-OIDToGroupLink"
|
||||
$group = get-adgroup -Identity $groupDN
|
||||
$groupName = $group.Name
|
||||
# Analyze the group
|
||||
if ($group.groupCategory -ne "Security") {
|
||||
$errormsg = $getIP_strings.ErrorNotSecurity -f $Identity, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
if ($group.groupScope -ne "Universal") {
|
||||
$errormsg = $getIP_strings.ErrorNotUniversal -f $Identity, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
$members = Get-ADGroupMember -Identity $group
|
||||
if ($members) {
|
||||
$errormsg = $getIP_strings.ErrorHasMembers -f $Identity, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
foreach ($member in $members) {
|
||||
write-host " " $member -ForeGroundColor Red
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return $OIDs
|
||||
break
|
||||
}
|
||||
if (($LinkedToGroup -eq "yes") -or ($LinkedToGroup -eq "all")) {
|
||||
$LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(msDS-OIDToGroupLink=*)(flags=2))"
|
||||
$LinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter -properties *
|
||||
write-host ""
|
||||
write-host "*****************************************************"
|
||||
write-host $getIP_strings.LinkedIPs
|
||||
write-host "*****************************************************"
|
||||
write-host ""
|
||||
if ($LinkedOIDs -ne $null){
|
||||
foreach ($OID in $LinkedOIDs) {
|
||||
# Display basic information about the Issuance Policies
|
||||
""
|
||||
$getIP_strings.displayName -f $OID.displayName
|
||||
$getIP_strings.Name -f $OID.Name
|
||||
$getIP_strings.dn -f $OID.distinguishedName
|
||||
# Get the linked group.
|
||||
$groupDN = $OID."msDS-OIDToGroupLink"
|
||||
$group = get-adgroup -Identity $groupDN
|
||||
$getIP_strings.InfoName -f $group.Name
|
||||
$getIP_strings.InfoDN -f $groupDN
|
||||
# Analyze the group
|
||||
$OIDName = $OID.displayName
|
||||
$groupName = $group.Name
|
||||
if ($group.groupCategory -ne "Security") {
|
||||
$errormsg = $getIP_strings.ErrorNotSecurity -f $OIDName, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
if ($group.groupScope -ne "Universal") {
|
||||
$errormsg = $getIP_strings.ErrorNotUniversal -f $OIDName, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
}
|
||||
$members = Get-ADGroupMember -Identity $group
|
||||
if ($members) {
|
||||
$errormsg = $getIP_strings.ErrorHasMembers -f $OIDName, $groupName
|
||||
write-host $errormsg -ForegroundColor Red
|
||||
foreach ($member in $members) {
|
||||
write-host " " $member -ForeGroundColor Red
|
||||
}
|
||||
}
|
||||
write-host ""
|
||||
}
|
||||
}else{
|
||||
write-host "There are no issuance policies that are mapped to a group"
|
||||
}
|
||||
if ($LinkedToGroup -eq "yes") {
|
||||
return $LinkedOIDs
|
||||
break
|
||||
}
|
||||
}
|
||||
if (($LinkedToGroup -eq "no") -or ($LinkedToGroup -eq "all")) {
|
||||
$LDAPFilter = "(&(objectClass=msPKI-Enterprise-Oid)(!(msDS-OIDToGroupLink=*))(flags=2))"
|
||||
$NonLinkedOIDs = get-adobject -searchBase $configNCDN -LDAPFilter $LDAPFilter -properties *
|
||||
write-host ""
|
||||
write-host "*********************************************************"
|
||||
write-host $getIP_strings.NonLinkedIPs
|
||||
write-host "*********************************************************"
|
||||
write-host ""
|
||||
if ($NonLinkedOIDs -ne $null) {
|
||||
foreach ($OID in $NonLinkedOIDs) {
|
||||
# Display basic information about the Issuance Policies
|
||||
write-host ""
|
||||
$getIP_strings.displayName -f $OID.displayName
|
||||
$getIP_strings.Name -f $OID.Name
|
||||
$getIP_strings.dn -f $OID.distinguishedName
|
||||
write-host ""
|
||||
}
|
||||
}else{
|
||||
write-host "There are no issuance policies which are not mapped to groups"
|
||||
}
|
||||
if ($LinkedToGroup -eq "no") {
|
||||
return $NonLinkedOIDs
|
||||
break
|
||||
}
|
||||
}
|
||||
```
|
||||
> [!NOTE]
|
||||
> If you're having trouble running this script, try replacing the single quote after the ConvertFrom-StringData parameter.
|
||||
|
||||
### <a href="" id="bkmk-setscript"></a>Link an issuance policy to a group
|
||||
|
||||
Save the script file as set-IssuancePolicyToGroupLink.ps1.
|
||||
|
||||
``` syntax
|
||||
#######################################
|
||||
## Parameters to be defined ##
|
||||
## by the user ##
|
||||
#######################################
|
||||
Param (
|
||||
$IssuancePolicyName,
|
||||
$groupOU,
|
||||
$groupName
|
||||
)
|
||||
#######################################
|
||||
## Strings definitions ##
|
||||
#######################################
|
||||
Data ErrorMsg {
|
||||
# culture="en-US"
|
||||
ConvertFrom-StringData -stringdata @'
|
||||
help1 = This command can be used to set the link between a certificate issuance policy and a universal security group.
|
||||
help2 = Usage:
|
||||
help3 = The following parameters are required:
|
||||
help4 = -IssuancePolicyName:<name or display name of the issuance policy that you want to link to a group>
|
||||
help5 = -groupName:<name of the group you want to link the issuance policy to>. If no name is specified, any existing link to a group is removed from the Issuance Policy.
|
||||
help6 = The following parameter is optional:
|
||||
help7 = -groupOU:<Name of the Organizational Unit dedicated to the groups which are linked to issuance policies>. If this parameter is not specified, the group is looked for or created in the Users container.
|
||||
help8 = Examples:
|
||||
help9 = This command will link the issuance policy whose display name is "High Assurance" to the group "HighAssuranceGroup" in the Organizational Unit "OU_FOR_IPol_linked_groups". If the group or the Organizational Unit do not exist, you will be prompted to create them.
|
||||
help10 = This command will unlink the issuance policy whose name is "402.164959C40F4A5C12C6302E31D5476062" from any group.
|
||||
MultipleIPs = Error: Multiple Issuance Policies with name or display name "{0}" were found in the subtree of "{1}"
|
||||
NoIP = Error: no issuance policy with name or display name "{0}" could be found in the subtree of "{1}".
|
||||
IPFound = An Issuance Policy with name or display name "{0}" was successfully found: {1}
|
||||
MultipleOUs = Error: more than 1 Organizational Unit with name "{0}" could be found in the subtree of "{1}".
|
||||
confirmOUcreation = Warning: The Organizational Unit that you specified does not exist. Do you want to create it?
|
||||
OUCreationSuccess = Organizational Unit "{0}" successfully created.
|
||||
OUcreationError = Error: Organizational Unit "{0}" could not be created.
|
||||
OUFoundSuccess = Organizational Unit "{0}" was successfully found.
|
||||
multipleGroups = Error: More than one group with name "{0}" was found in Organizational Unit "{1}".
|
||||
confirmGroupCreation = Warning: The group that you specified does not exist. Do you want to create it?
|
||||
groupCreationSuccess = Univeral Security group "{0}" successfully created.
|
||||
groupCreationError = Error: Univeral Security group "{0}" could not be created.
|
||||
GroupFound = Group "{0}" was successfully found.
|
||||
confirmLinkDeletion = Warning: The Issuance Policy "{0}" is currently linked to group "{1}". Do you really want to remove the link?
|
||||
UnlinkSuccess = Certificate issuance policy successfully unlinked from any group.
|
||||
UnlinkError = Removing the link failed.
|
||||
UnlinkExit = Exiting without removing the link from the issuance policy to the group.
|
||||
IPNotLinked = The Certificate issuance policy is not currently linked to any group. If you want to link it to a group, you should specify the -groupName option when starting this script.
|
||||
ErrorNotSecurity = Error: You cannot link issuance Policy "{0}" to group "{1}" because this group is not of type "Security".
|
||||
ErrorNotUniversal = Error: You cannot link issuance Policy "{0}" to group "{1}" because the scope of this group is not "Universal".
|
||||
ErrorHasMembers = Error: You cannot link issuance Policy "{0}" to group "{1}" because it has a non-empty membership. The group has the following members:
|
||||
ConfirmLinkReplacement = Warning: The Issuance Policy "{0}" is currently linked to group "{1}". Do you really want to update the link to point to group "{2}"?
|
||||
LinkSuccess = The certificate issuance policy was successfully linked to the specified group.
|
||||
LinkError = The certificate issuance policy could not be linked to the specified group.
|
||||
ExitNoLinkReplacement = Exiting without setting the new link.
|
||||
'@
|
||||
}
|
||||
# import-localizeddata ErrorMsg
|
||||
function Display-Help {
|
||||
""
|
||||
write-host $ErrorMsg.help1
|
||||
""
|
||||
write-host $ErrorMsg.help2
|
||||
""
|
||||
write-host $ErrorMsg.help3
|
||||
write-host "`t" $ErrorMsg.help4
|
||||
write-host "`t" $ErrorMsg.help5
|
||||
""
|
||||
write-host $ErrorMsg.help6
|
||||
write-host "`t" $ErrorMsg.help7
|
||||
""
|
||||
""
|
||||
write-host $ErrorMsg.help8
|
||||
""
|
||||
write-host $ErrorMsg.help9
|
||||
".\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName ""High Assurance"" -groupOU ""OU_FOR_IPol_linked_groups"" -groupName ""HighAssuranceGroup"" "
|
||||
""
|
||||
write-host $ErrorMsg.help10
|
||||
'.\Set-IssuancePolicyToGroupMapping.ps1 -IssuancePolicyName "402.164959C40F4A5C12C6302E31D5476062" -groupName $null '
|
||||
""
|
||||
}
|
||||
# Assumption: The group to which the Issuance Policy is going
|
||||
# to be linked is (or is going to be created) in
|
||||
# the domain the user running this script is a member of.
|
||||
import-module ActiveDirectory
|
||||
$root = get-adrootdse
|
||||
$domain = get-addomain -current loggedonuser
|
||||
if ( !($IssuancePolicyName) ) {
|
||||
display-Help
|
||||
break
|
||||
}
|
||||
#######################################
|
||||
## Find the OID object ##
|
||||
## (aka Issuance Policy) ##
|
||||
#######################################
|
||||
$searchBase = [String]$root.configurationnamingcontext
|
||||
$OID = get-adobject -searchBase $searchBase -Filter { ((displayname -eq $IssuancePolicyName) -or (name -eq $IssuancePolicyName)) -and (objectClass -eq "msPKI-Enterprise-Oid")} -properties *
|
||||
if ($OID -eq $null) {
|
||||
$tmp = $ErrorMsg.NoIP -f $IssuancePolicyName, $searchBase
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
elseif ($OID.GetType().IsArray) {
|
||||
$tmp = $ErrorMsg.MultipleIPs -f $IssuancePolicyName, $searchBase
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.IPFound -f $IssuancePolicyName, $OID.distinguishedName
|
||||
write-host $tmp -ForeGroundColor Green
|
||||
}
|
||||
#######################################
|
||||
## Find the container of the group ##
|
||||
#######################################
|
||||
if ($groupOU -eq $null) {
|
||||
# default to the Users container
|
||||
$groupContainer = $domain.UsersContainer
|
||||
}
|
||||
else {
|
||||
$searchBase = [string]$domain.DistinguishedName
|
||||
$groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq $groupOU) -and (objectClass -eq "organizationalUnit")}
|
||||
if ($groupContainer.count -gt 1) {
|
||||
$tmp = $ErrorMsg.MultipleOUs -f $groupOU, $searchBase
|
||||
write-host $tmp -ForegroundColor Red
|
||||
break;
|
||||
}
|
||||
elseif ($groupContainer -eq $null) {
|
||||
$tmp = $ErrorMsg.confirmOUcreation
|
||||
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
new-adobject -Name $groupOU -displayName $groupOU -Type "organizationalUnit" -ProtectedFromAccidentalDeletion $true -path $domain.distinguishedName
|
||||
if ($?){
|
||||
$tmp = $ErrorMsg.OUCreationSuccess -f $groupOU
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}
|
||||
else{
|
||||
$tmp = $ErrorMsg.OUCreationError -f $groupOU
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
$groupContainer = get-adobject -searchBase $searchBase -Filter { (Name -eq $groupOU) -and (objectClass -eq "organizationalUnit")}
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.OUFoundSuccess -f $groupContainer.name
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
#######################################
|
||||
## Find the group ##
|
||||
#######################################
|
||||
if (($groupName -ne $null) -and ($groupName -ne "")){
|
||||
##$searchBase = [String]$groupContainer.DistinguishedName
|
||||
$searchBase = $groupContainer
|
||||
$group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq "group") } -searchBase $searchBase
|
||||
if ($group -ne $null -and $group.gettype().isarray) {
|
||||
$tmp = $ErrorMsg.multipleGroups -f $groupName, $searchBase
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
elseif ($group -eq $null) {
|
||||
$tmp = $ErrorMsg.confirmGroupCreation
|
||||
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
new-adgroup -samAccountName $groupName -path $groupContainer.distinguishedName -GroupScope "Universal" -GroupCategory "Security"
|
||||
if ($?){
|
||||
$tmp = $ErrorMsg.GroupCreationSuccess -f $groupName
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.groupCreationError -f $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break
|
||||
}
|
||||
$group = get-adgroup -Filter { (Name -eq $groupName) -and (objectClass -eq "group") } -searchBase $searchBase
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.GroupFound -f $group.Name
|
||||
write-host $tmp -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
else {
|
||||
#####
|
||||
## If the group is not specified, we should remove the link if any exists
|
||||
#####
|
||||
if ($OID."msDS-OIDToGroupLink" -ne $null) {
|
||||
$tmp = $ErrorMsg.confirmLinkDeletion -f $IssuancePolicyName, $OID."msDS-OIDToGroupLink"
|
||||
write-host $tmp " ( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
set-adobject -Identity $OID -Clear "msDS-OIDToGroupLink"
|
||||
if ($?) {
|
||||
$tmp = $ErrorMsg.UnlinkSuccess
|
||||
write-host $tmp -ForeGroundColor Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.UnlinkError
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.UnlinkExit
|
||||
write-host $tmp
|
||||
break
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = $ErrorMsg.IPNotLinked
|
||||
write-host $tmp -ForeGroundColor Yellow
|
||||
}
|
||||
break;
|
||||
}
|
||||
#######################################
|
||||
## Verify that the group is ##
|
||||
## Universal, Security, and ##
|
||||
## has no members ##
|
||||
#######################################
|
||||
if ($group.GroupScope -ne "Universal") {
|
||||
$tmp = $ErrorMsg.ErrorNotUniversal -f $IssuancePolicyName, $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
if ($group.GroupCategory -ne "Security") {
|
||||
$tmp = $ErrorMsg.ErrorNotSecurity -f $IssuancePolicyName, $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
break;
|
||||
}
|
||||
$members = Get-ADGroupMember -Identity $group
|
||||
if ($members -ne $null) {
|
||||
$tmp = $ErrorMsg.ErrorHasMembers -f $IssuancePolicyName, $groupName
|
||||
write-host $tmp -ForeGroundColor Red
|
||||
foreach ($member in $members) {write-host " $member.name" -ForeGroundColor Red}
|
||||
break;
|
||||
}
|
||||
#######################################
|
||||
## We have verified everything. We ##
|
||||
## can create the link from the ##
|
||||
## Issuance Policy to the group. ##
|
||||
#######################################
|
||||
if ($OID."msDS-OIDToGroupLink" -ne $null) {
|
||||
$tmp = $ErrorMsg.ConfirmLinkReplacement -f $IssuancePolicyName, $OID."msDS-OIDToGroupLink", $group.distinguishedName
|
||||
write-host $tmp "( (y)es / (n)o )" -ForegroundColor Yellow -nonewline
|
||||
$userChoice = read-host
|
||||
if ( ($userChoice -eq "y") -or ($userChoice -eq "yes") ) {
|
||||
$tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
|
||||
set-adobject -Identity $OID -Replace $tmp
|
||||
if ($?) {
|
||||
$tmp = $Errormsg.LinkSuccess
|
||||
write-host $tmp -Foreground Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.LinkError
|
||||
write-host $tmp -Foreground Red
|
||||
}
|
||||
} else {
|
||||
$tmp = $Errormsg.ExitNoLinkReplacement
|
||||
write-host $tmp
|
||||
break
|
||||
}
|
||||
}
|
||||
else {
|
||||
$tmp = @{'msDS-OIDToGroupLink'= $group.DistinguishedName}
|
||||
set-adobject -Identity $OID -Add $tmp
|
||||
if ($?) {
|
||||
$tmp = $Errormsg.LinkSuccess
|
||||
write-host $tmp -Foreground Green
|
||||
}else{
|
||||
$tmp = $ErrorMsg.LinkError
|
||||
write-host $tmp -Foreground Red
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> If you're having trouble running this script, try replacing the single quote after the ConvertFrom-StringData parameter.
|
||||
|
||||
## Related topics
|
||||
|
||||
@ -959,4 +39,9 @@ write-host $tmp -Foreground Red
|
||||
- [Authentication Mechanism Assurance for AD DS in Windows Server 2008 R2 Step-by-Step Guide](http://technet.microsoft.com/library/dd378897.aspx)
|
||||
- [Trusted Platform Module](trusted-platform-module-overview.md)
|
||||
|
||||
|
||||
|
||||
## See also
|
||||
|
||||
**Deep Dive into Credential Guard: Related videos**
|
||||
|
||||
[Credentials protected by Credential Guard](https://mva.microsoft.com/en-us/training-courses/deep-dive-into-credential-guard-16651?l=pdc37LJyC_1204300474)
|
@ -86,9 +86,7 @@ After creating the image, you should ensure it is fully updated. See [Configure
|
||||
### Seal the base image
|
||||
When the base image is fully updated, you should run a quick scan on the image. This “sealing” or “locking” of the image helps Windows Defender AV build a cache of known-good files and avoid scanning them again on your VMs. In turn, this can help ensure performance on the VM is not impacted.
|
||||
|
||||
<!--
|
||||
You can run a quick scan [from the command line](command-line-arguments-windows-defender-antivirus.md) or via [System Center Configuration Manager](run-scan-windows-defender-antivirus.md).
|
||||
-->
|
||||
|
||||
>[!NOTE]
|
||||
><b>Quick scan versus full scan</b>
|
||||
@ -115,7 +113,7 @@ The following references provide ways you can create and deploy the base image a
|
||||
## Manage your VMs and base image
|
||||
How you manage your VDI will affect the performance impact of Windows Defender AV on your VMs and infrastructure.
|
||||
|
||||
Because Windows Defender AV downloads protection updates every day, or based on your protection update settings,<!-- (manage-protection-updates-windows-defender-antivirus.md) --> network bandwidth can be a problem if multiple VMs attempt to download updates at the same time.
|
||||
Because Windows Defender AV downloads protection updates every day, or [based on your protection update settings](manage-protection-updates-windows-defender-antivirus.md), network bandwidth can be a problem if multiple VMs attempt to download updates at the same time.
|
||||
|
||||
Following the guidelines in this means the VMs will only need to download “delta” updates, which are the differences between an existing definition set and the next one. Delta updates are typically much smaller (a few kilobytes) than a full definition download (which can average around 150 mb).
|
||||
|
||||
@ -125,9 +123,9 @@ Following the guidelines in this means the VMs will only need to download “del
|
||||
If you are using a persistent VDI, you should update the base image monthly, and set up protection updates to be delivered daily via a file share, as follows:
|
||||
1. Create a dedicated file share location on your network that can be accessed by your VMs and your VM host (or other, persistent machine, such as a dedicated admin console that you use to manage your VMs).
|
||||
2. Set up a scheduled task on your VM host to automatically download updates from the MMPC website or Microsoft Update and save them to the file share (the [SignatureDownloadCustomTask PowerShell script](https://www.powershellgallery.com/packages/SignatureDownloadCustomTask/1.4/DisplayScript) can help with this).
|
||||
3. Configure the VMs to pull protection updates from the file share<!-- (manage-protection-updates-windows-defender-antivirus.md) -->.
|
||||
3. [Configure the VMs to pull protection updates from the file share](manage-protection-updates-windows-defender-antivirus.md).
|
||||
4. Disable or delay automatic Microsoft updates on your VMs. See [Update Windows 10 in the enterprise](https://technet.microsoft.com/en-us/itpro/windows/manage/waas-update-windows-10) for information on managing operating system updates with WSUS, SCCM, and others.
|
||||
5. On or just after each Patch Tuesday (the second Tuesday of each month), update your base image with the latest protection updates from the MMPC website, WSUS, or Microsoft Update<!-- (manage-protection-updates-windows-defender-antivirus.md)-->. Also apply all other Windows patches and fixes that were delivered on the Patch Tuesday. You can automate this by following the instructions in [Orchestrated offline VM Patching using Service Management Automation](https://blogs.technet.microsoft.com/privatecloud/2013/12/06/orchestrated-offline-vm-patching-using-service-management-automation/).
|
||||
5. On or just after each Patch Tuesday (the second Tuesday of each month), [update your base image with the latest protection updates from the MMPC website, WSUS, or Microsoft Update](manage-protection-updates-windows-defender-antivirus.md) Also apply all other Windows patches and fixes that were delivered on the Patch Tuesday. You can automate this by following the instructions in [Orchestrated offline VM Patching using Service Management Automation](https://blogs.technet.microsoft.com/privatecloud/2013/12/06/orchestrated-offline-vm-patching-using-service-management-automation/).
|
||||
5. [Run a quick scan](run-scan-windows-defender-antivirus.md) on your base image before deploying it to your VMs.
|
||||
|
||||
A benefit to aligning your image update to the monthly Microsoft Update is that you ensure your VMs will have the latest Windows security patches and other important Microsoft updates without each VM needing to individually download them.
|
||||
@ -138,8 +136,8 @@ A benefit to aligning your image update to the monthly Microsoft Update is that
|
||||
If you are using a non-persistent VDI, you can update the base image daily (or nightly) and directly apply the latest updates to the image.
|
||||
|
||||
An example:
|
||||
1. Every night or other time when you can safely take your VMs offline, update your base image with the latest protection updates from the MMPC website, WSUS, or Microsoft Update<!--(manage-protection-updates-windows-defender-antivirus.md)-->.
|
||||
2. Run a quick scan<!--(run-scan-windows-defender-antivirus.md)--> on your base image before deploying it to your VMs.
|
||||
1. Every night or other time when you can safely take your VMs offline, update your base image with the latest [protection updates from the MMPC website, WSUS, or Microsoft Update](manage-protection-updates-windows-defender-antivirus.md).
|
||||
2. [Run a quick scan](run-scan-windows-defender-antivirus.md) on your base image before deploying it to your VMs.
|
||||
|
||||
|
||||
|
||||
@ -161,7 +159,7 @@ These settings can be configured as part of creating your base image, or as a da
|
||||
|
||||
Windows Defender AV supports the randomization of scheduled scans and signature updates. This can be extremely helpful in reducing boot storms (especially when used in conjuction with [Disable scans from occuring after every update](#disable-scans-after-an-update) and [Scan out-of-date machines or machines that have been offline for a while](#scan-vms-that-have-been-offline).
|
||||
|
||||
Scheduled scans run in addition to real-time protection and scanning<!--(configure-real-time-protection-windows-defender-antivirus.md)-->.
|
||||
Scheduled scans run in addition to [real-time protection and scanning](configure-real-time-protection-windows-defender-antivirus.md).
|
||||
|
||||
The start time of the scan itself is still based on the scheduled scan policy – ScheduleDay, ScheduleTime, ScheduleQuickScanTime.
|
||||
|
||||
@ -183,7 +181,7 @@ The start time of the scan itself is still based on the scheduled scan policy
|
||||
|
||||
See [How to create and deploy antimalware policies: Advanced settings]( https://docs.microsoft.com/en-us/sccm/protect/deploy-use/endpoint-antimalware-policies#advanced-settings) for details on configuring System Center Configuration Manager (current branch).
|
||||
|
||||
<!--See [Schedule scans](scheduled-catch-up-scans-windows-defender-antivirus.md) for other configuration options available for scheduled scans.-->
|
||||
See [Schedule scans](scheduled-catch-up-scans-windows-defender-antivirus.md) for other configuration options available for scheduled scans.
|
||||
|
||||
### Use quick scans
|
||||
|
||||
@ -205,9 +203,7 @@ Quick scans are the preferred approach as they are designed to look in all place
|
||||
|
||||
See [How to create and deploy antimalware policies: Scheduled scans settings]( https://docs.microsoft.com/en-us/sccm/protect/deploy-use/endpoint-antimalware-policies#scheduled-scans-settings) for details on configuring System Center Configuration Manager (current branch).
|
||||
|
||||
<!--
|
||||
See [Schedule scans](schedule-scans-windows-defender-antivirus.md) for other configuration options available for scheduled scans.
|
||||
-->
|
||||
See [Schedule scans](scheduled-catch-up-scans-windows-defender-antivirus.md) for other configuration options available for scheduled scans.
|
||||
|
||||
### Prevent notifications
|
||||
|
||||
|
@ -54,17 +54,44 @@ You can provide additional protection for laptops that don't have TPM by enablng
|
||||
**Configure BitLocker without TPM**
|
||||
1. Use the Local Group Policy Editor (gpedit.msc) to enable the following policy:
|
||||
|
||||
**Computer Configuration** > **Administrative Templates** > **Windows Components** > **BitLocker Drive Encryption** > **Operating System Drives** > **Require additional authentication at startup**
|
||||
**Computer Configuration > Administrative Templates > Windows Components > BitLocker Drive Encryption > Operating System Drives > Require additional authentication at startup**
|
||||
|
||||
2. In the policy option, select **Allow BitLocker without a compatible TPM**, and then click **OK.**
|
||||
3. Go to Control Panel > **System and Security** > **BitLocker Drive Encryption** and select the operating system drive to protect.
|
||||
3. Go to Control Panel > **System and Security > BitLocker Drive Encryption** and select the operating system drive to protect.
|
||||
**Set account lockout threshold**
|
||||
1. Use the Local Group Policy Editor (gpedit.msc) to enable the following policy:
|
||||
|
||||
**Computer Configuration** >**Windows Settings** ?**Security Settings** >**Account Policies** > **Account Lockout Policy** > **Account lockout threshold**
|
||||
**Computer Configuration > Windows Settings > Security Settings > Account Policies > Account Lockout Policy > Account lockout threshold**
|
||||
|
||||
2. Set the number of invalid logon attempts to allow, and then click OK.
|
||||
|
||||
<span id="what-if-i-forget-my-pin"/>
|
||||
## What if I forget my PIN?
|
||||
|
||||
Starting with Windows 10, version 1703, devices managed by [Microsoft Intune](https://www.microsoft.com/cloud-platform/microsoft-intune), are be able to reset a forgotten PIN without deleting company managed data or apps.
|
||||
|
||||
### Reset forgotten PIN on Windows Phone
|
||||
|
||||
To reset a forgotten pin on a Windows Phone, you will need to locate the device in the Intune portal. Once you've selected the device, click on **More > New passcode** to generate a new PIN.
|
||||
|
||||

|
||||
|
||||
Once you've done that, the device will receive a notification to unlock the device and you will have to provide them with the generated PIN in order to unlock the device. With the device unlocked, they user can now reset the PIN.
|
||||
|
||||

|
||||
|
||||
### Reset forgotten PIN on desktop
|
||||
|
||||
Users can reset a forgotten PIN from any Intune managed desktop device. They will need to unlock the device by other means (Password \ Smart Card \ Biometric).
|
||||
|
||||
Once the device is unlocked, go to **Settings > Accounts > Sign-in options** and under **PIN** select **I forgot my PIN**.
|
||||
|
||||

|
||||
|
||||
After signing-in, you will be prompted to change your PIN.
|
||||
|
||||

|
||||
|
||||
## Why do you need a PIN to use biometrics?
|
||||
Windows Hello enables biometric sign-in for Windows 10: fingerprint, iris, or facial recognition. When you set up Windows Hello, you're asked to create a PIN first. This PIN enables you to sign in using the PIN when you can’t use your preferred biometric because of an injury or because the sensor is unavailable or not working properly.
|
||||
|
||||
|
Before Width: | Height: | Size: 9.5 KiB After Width: | Height: | Size: 9.1 KiB |
BIN
windows/keep-secure/images/mva_videos.png
Normal file
After Width: | Height: | Size: 136 KiB |
BIN
windows/keep-secure/images/whfb-intune-reset-pin.jpg
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
windows/keep-secure/images/whfb-pin-reset-phone-notification.png
Normal file
After Width: | Height: | Size: 128 KiB |
BIN
windows/keep-secure/images/whfb-reset-pin-prompt.jpg
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
windows/keep-secure/images/whfb-reset-pin-settings.jpg
Normal file
After Width: | Height: | Size: 81 KiB |
@ -2,7 +2,8 @@
|
||||
title: Windows Defender AV event IDs and error codes
|
||||
description: Look up the causes and solutions for Windows Defender Antivirus event IDs and errors
|
||||
keywords: event, error code, siem, logging, troubleshooting, wef, windows event forwarding
|
||||
ms.assetid: EE488CC1-E340-4D47-B50B-35BD23CB4D70
|
||||
search.product: eADQiWindows 10XVcnh
|
||||
ms.pagetype: security
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: manage
|
||||
ms.sitesec: library
|
||||
|
@ -2,7 +2,8 @@
|
||||
title: Windows Defender Antivirus
|
||||
description: Learn how to manage, configure, and use Windows Defender AV, the built-in antimalware and antivirus product available in Windows 10.
|
||||
keywords: windows defender antivirus, windows defender, antimalware, scep, system center endpoint protection, system center configuration manager, virus, malware, threat, detection, protection, security
|
||||
ms.assetid: 6A9EB85E-1F3A-40AC-9A47-F44C4A2B55E2
|
||||
search.product: eADQiWindows 10XVcnh
|
||||
ms.pagetype: security
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: manage
|
||||
ms.sitesec: library
|
||||
|
@ -49,7 +49,7 @@ Many existing Win32 and Win64 applications already run reliably on Windows 10 wi
|
||||
|
||||
### Is there an easy way to assess if my organization’s devices are ready to upgrade to Windows 10?
|
||||
|
||||
[Windows Upgrade Readiness](https://technet.microsoft.com/itpro/windows/deploy/manage-windows-upgrades-with-upgrade-analytics) (formerly known as Upgrade Analytics) provides powerful insights and recommendations about the computers, applications, and drivers in your organization, at no extra cost and without additional infrastructure requirements. This new service guides you through your upgrade and feature update projects using a workflow based on Microsoft recommended practices. Up-to-date inventory data allows you to balance cost and risk in your upgrade projects.
|
||||
[Windows Analytics Upgrade Readiness](https://technet.microsoft.com/itpro/windows/deploy/manage-windows-upgrades-with-upgrade-analytics) (formerly known as Upgrade Analytics) provides powerful insights and recommendations about the computers, applications, and drivers in your organization, at no extra cost and without additional infrastructure requirements. This new service guides you through your upgrade and feature update projects using a workflow based on Microsoft recommended practices. Up-to-date inventory data allows you to balance cost and risk in your upgrade projects. You can find additional product information at [Windows Analytics](https://www.microsoft.com/en-us/WindowsForBusiness/Windows-Analytics).
|
||||
|
||||
## Administration and deployment
|
||||
|
||||
@ -64,15 +64,9 @@ Updated versions of Microsoft deployment tools, including MDT, Configuration Man
|
||||
|
||||
Computers running Windows 7 or Windows 8.1 can be upgraded directly to Windows 10 through the in-place upgrade process without a need to reimage the device using MDT and/or Configuration Manager. For more information, see [Upgrade to Windows 10 with System Center Configuration Manager](https://technet.microsoft.com/itpro/windows/deploy/upgrade-to-windows-10-with-system-center-configuraton-manager) or [Upgrade to Windows 10 with the Microsoft Deployment Toolkit](https://technet.microsoft.com/itpro/windows/deploy/upgrade-to-windows-10-with-the-microsoft-deployment-toolkit).
|
||||
|
||||
### Are there any deployment tools available to support Windows 10?
|
||||
|
||||
Updated versions of Microsoft deployment tools, including Configuration Manager, MDT, and the Windows Assessment and Deployment Kit (Windows ADK) have been released adding support for Windows 10. For most organizations currently using MDT or Configuration Manager to deploy Windows, deployment of Windows 10 will change very little.
|
||||
|
||||
For more information on deployment methods for Windows 10, see [Windows 10 deployment tools](https://technet.microsoft.com/library/mt297512.aspx) and [Windows 10 deployment scenarios](https://technet.microsoft.com/library/mt282208.aspx).
|
||||
|
||||
### Can I upgrade from Windows 7 Enterprise or Windows 8.1 Enterprise to Windows 10 Enterprise for free?
|
||||
|
||||
If you have Windows 7 Enterprise or Windows 8.1 Enterprise and current Software Assurance, you are entitled to the upgrade to Windows 10 Enterprise through the rights of Software Assurance. You can find your product keys and installation media at the [Volume Licensing Service Center](https://www.microsoft.com/Licensing/servicecenter/default.aspx).
|
||||
If you have Windows 7 Enterprise or Windows 8.1 Enterprise and current Windows 10 Enterprise E3 or E5 subscription, you are entitled to the upgrade to Windows 10 Enterprise through the rights of Software Assurance. You can find your product keys and installation media at the [Volume Licensing Service Center](https://www.microsoft.com/Licensing/servicecenter/default.aspx).
|
||||
|
||||
For devices that are licensed under a volume license agreement for Windows that does not include Software Assurance, new licenses will be required to upgrade these devices to Windows 10.
|
||||
|
||||
@ -104,12 +98,7 @@ For more information on pros and cons for these tools, see [Servicing Tools](htt
|
||||
|
||||
### Where can I find information about new features and changes in Windows 10 Enterprise?
|
||||
|
||||
For an overview of the new enterprise features in Windows 10 Enterprise, see [What's new in Windows 10](https://technet.microsoft.com/itpro/windows/whats-new/index) and [What's new in Windows 10, version 1703](https://tnstage.redmond.corp.microsoft.com/itpro/windows/whats-new/whats-new-windows-10-version-1703?branch=rs2) in the TechNet library. You can find information You'll find info on features like these:
|
||||
- Modern deployment - Zero-touch deployment, bulk AD enrollment with provisioning, UEFI conversion tooland
|
||||
- Windows Analytics - Upgrade Readiness, and Update Compliance
|
||||
- Windows as a service enhancements - Differential feature update support, express update support for System Center Configuration Manager and third-party management software
|
||||
- Mobile application management (MAM) and enhanced MDM
|
||||
- Advanced security with Windows Defender - App Guard, Credential Guard, App Control, ATP) and Windows Hello
|
||||
For an overview of the new enterprise features in Windows 10 Enterprise, see [What's new in Windows 10](https://technet.microsoft.com/itpro/windows/whats-new/index) and [What's new in Windows 10, version 1703](https://tnstage.redmond.corp.microsoft.com/itpro/windows/whats-new/whats-new-windows-10-version-1703?branch=rs2) in the TechNet library.
|
||||
|
||||
Another place to track the latest information about new features of interest to IT professionals is the [Windows for IT Pros blog](https://blogs.technet.microsoft.com/windowsitpro/). Here you’ll find announcements of new features, information on updates to the Windows servicing model, and details about the latest resources to help you more easily deploy and manage Windows 10.
|
||||
|
||||
|
@ -19,5 +19,8 @@
|
||||
## [Manage Windows 10 updates using Windows Server Update Services](waas-manage-updates-wsus.md)
|
||||
## [Manage Windows 10 updates using System Center Configuration Manager](waas-manage-updates-configuration-manager.md)
|
||||
## [Manage device restarts after updates](waas-restart.md)
|
||||
## [Windows Insider Program for Business](waas-windows-insider-for-business.md)
|
||||
### [Windows Insider Program for Business using Azure Active Directory](waas-windows-insider-for-business-aad.md)
|
||||
### [Windows Insider Program for Business Frequently Asked Questions](waas-windows-insider-for-business-faq.md)
|
||||
## [Change history for Update Windows 10](change-history-for-update-windows-10.md)
|
||||
|
||||
|
BIN
windows/update/images/waas-wipfb-accounts.png
Normal file
After Width: | Height: | Size: 74 KiB |
BIN
windows/update/images/waas-wipfb-change-user.png
Normal file
After Width: | Height: | Size: 72 KiB |
BIN
windows/update/images/waas-wipfb-work-account.jpg
Normal file
After Width: | Height: | Size: 56 KiB |
@ -90,7 +90,7 @@ Starting with version 1703, when configuring pause through policy, a start date
|
||||
|
||||
In cases where the pause policy is first applied after the configured start date has passed, administrators will be able to extend the pause period up to a total of 60 days by configuring a later start date.
|
||||
|
||||
With version 1703, pause will provide a more consistent experience:
|
||||
With version 1703, pausing through the settings app will provide a more consistent experience:
|
||||
- Any active restart notification are cleared or closed
|
||||
- Any pending restarts are canceled
|
||||
- Any pending update installations are canceled
|
||||
@ -235,11 +235,11 @@ In the Windows Update for Business policies in version 1511, all the deferral ru
|
||||
|
||||
<table><caption>Group Policy keys</caption><thead><th>Version 1511 GPO keys</th><th>Version 1607 GPO keys</th></thead>
|
||||
<tbody><tr><td valign="top">**DeferUpgrade**: *enable/disable*</br>
|
||||
Enabling allows user to set deferral periods for upgrades and updates. It also puts the device on CBB (no ability to defer updates while on the CB branch).</br></br>**DeferUpgradePeriod**: *0 - 8 months*</br></br>**DeferUpdatePeriod**: *1 – 4 weeks*</br></br>**Pause**: *enable/disable*</br> Enabling will pause both upgrades and updates for a max of 35 days</td><td>**DeferFeatureUpdates**: *enable/disable*</br></br>**BranchReadinessLevel**</br> Set device on CB or CBB</br></br>**DeferFeatureUpdatesPeriodinDays**: *1 - 180 days*</br></br>**PauseFeatureUpdates**: *enable/disable*</br> Enabling will pause Feature updates for a max of 60 days</br></br>**DeferQualityUpdates**: *Enable/disable*</br></br>**DeferQualityUpdatesPeriodinDays**: *0 - 30 days*</br></br>**PauseQualityUpdates**: *enable/disable*</br> Enabling will pause Quality updates for a max of 35 days</br></br>**ExcludeWUDrivers**: *enable/disable*</td></tr>
|
||||
Enabling allows user to set deferral periods for upgrades and updates. It also puts the device on CBB (no ability to defer updates while on the CB branch).</br></br>**DeferUpgradePeriod**: *0 - 8 months*</br></br>**DeferUpdatePeriod**: *1 – 4 weeks*</br></br>**Pause**: *enable/disable*</br> Enabling will pause both upgrades and updates for a max of 35 days</td><td>**DeferFeatureUpdates**: *enable/disable*</br></br>**BranchReadinessLevel**</br> Set device on CB or CBB</br></br>**DeferFeatureUpdatesPeriodinDays**: *1 - 180 days*</br></br>**PauseFeatureUpdates**: *enable/disable*</br> Enabling will pause Feature updates for a max of 60 days</br></br>**DeferQualityUpdates**: *Enable/disable*</br></br>**DeferQualityUpdatesPeriodinDays**: *0 - 35 days*</br></br>**PauseQualityUpdates**: *enable/disable*</br> Enabling will pause Quality updates for a max of 35 days</br></br>**ExcludeWUDrivers**: *enable/disable*</td></tr>
|
||||
</table>
|
||||
|
||||
<table><caption>MDM keys</caption><thead><th>Version 1511 MDM keys</th><th>Version 1607 MDM keys</th></thead>
|
||||
<tbody><tr><td valign="top">**RequireDeferUpgade**: *bool*</br> Puts the device on CBB (no ability to defer updates while on the CB branch).</br></br>**DeferUpgradePeriod**: *0 - 8 months*</br></br>**DeferUpdatePeriod**: *1 – 4 weeks*</br></br>**PauseDeferrals**: *bool*</br> Enabling will pause both upgrades and updates for a max of 35 days</td><td>**BranchReadinessLevel**</br> Set system on CB or CBB</br></br>**DeferFeatureUpdatesPeriodinDays**: *1 - 180 days*</br></br>**PauseFeatureUpdates**: *enable/disable*</br> Enabling will pause Feature updates for a max of 60 days</br></br>**DeferQualityUpdatesPeriodinDays**: *0 - 30 days*</br></br>**PauseQualityUpdates**: *enable/disable*</br> Enabling will pause Quality updates for a max of 35 days</br></br>**ExcludeWUDriversInQualityUpdate**: *enable/disable<*/td></tr>
|
||||
<tbody><tr><td valign="top">**RequireDeferUpgade**: *bool*</br> Puts the device on CBB (no ability to defer updates while on the CB branch).</br></br>**DeferUpgradePeriod**: *0 - 8 months*</br></br>**DeferUpdatePeriod**: *1 – 4 weeks*</br></br>**PauseDeferrals**: *bool*</br> Enabling will pause both upgrades and updates for a max of 35 days</td><td>**BranchReadinessLevel**</br> Set system on CB or CBB</br></br>**DeferFeatureUpdatesPeriodinDays**: *1 - 180 days*</br></br>**PauseFeatureUpdates**: *enable/disable*</br> Enabling will pause Feature updates for a max of 60 days</br></br>**DeferQualityUpdatesPeriodinDays**: *0 - 35 days*</br></br>**PauseQualityUpdates**: *enable/disable*</br> Enabling will pause Quality updates for a max of 35 days</br></br>**ExcludeWUDriversInQualityUpdate**: *enable/disable<*/td></tr>
|
||||
</tbody></table>
|
||||
|
||||
### Comparing the version 1607 keys to the version 1703 keys
|
||||
|
72
windows/update/waas-windows-insider-for-business-aad.md
Normal file
@ -0,0 +1,72 @@
|
||||
---
|
||||
title: Windows Insider Program for Business using Azure Active Directory
|
||||
description: Benefits and configuration of corporate accounts in the Windows Insider Program
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: manage
|
||||
ms.sitesec: library
|
||||
author: DaniHalfin
|
||||
localizationpriority: high
|
||||
---
|
||||
|
||||
# Windows Insider Program for Business using Azure Active Directory
|
||||
|
||||
|
||||
**Applies to**
|
||||
|
||||
- Windows 10
|
||||
|
||||
> **Looking for consumer information?** See [Windows Update: FAQ](https://support.microsoft.com/help/12373/windows-update-faq)
|
||||
|
||||
We recently added features and benefits to better support the IT Professionals and business users in our Insider community. This includes the option to download Windows 10 Insider Preview builds using your corporate credentials in Azure Active Directory (AAD). By enrolling devices in AAD, you increase the visibility of feedback submitted by users in your organization – especially on features that support your specific business needs.
|
||||
|
||||
>[!NOTE]
|
||||
>At this point, the Windows Insider Program for Business only supports Azure Active Directory (and not Active Directory on premises) as a corporate authentication method.
|
||||
|
||||
>[!TIP]
|
||||
>New to Azure Active Directory? Go here for [an introduction to AAD](https://docs.microsoft.com/azure/active-directory/connect/active-directory-aadconnect), including guidance for [adding users](https://docs.microsoft.com/azure/active-directory/active-directory-users-create-azure-portal), [device registration](https://docs.microsoft.com/azure/active-directory/active-directory-device-registration-overview) and [integrating your on-premises directories with Azure AD](https://docs.microsoft.com/azure/active-directory/connect/active-directory-aadconnect).
|
||||
>
|
||||
>If your company is currently not using AAD – but has a paid subscription to Office 365, Microsoft Dynamics CRM Online, Enterprise Mobility Suite, or other Microsoft services – you have a free subscription to Microsoft Azure Active Directory. This subscription can be used to create users for enrollment in the Windows Insider Program for Business.
|
||||
|
||||
In order to get the most benefit out of the Windows Insider Program for Business, organizations should not use a test tenant of AAD. There will be no modifications to the AAD tenant to support the Windows Insider Program as it will only be used as an authentication method.
|
||||
|
||||
## Check if a device is connected to your company’s Azure Active Directory subscription
|
||||
Simply go to **Settings > Accounts > Access work or school**. If a corporate account is on Azure Active Directory and it is connected to the device, you will see the account listed as highlighted in the image below.
|
||||
|
||||

|
||||
|
||||
## Enroll a device with an Azure Active Directory account
|
||||
1. Visit [insider.windows.com](https://insider.windows.com). Sign-in with your corporate account in AAD and follow the on-screen registration directions.
|
||||
2. On your Windows 10 device, go to **Settings > Updates & Security > Windows Insider Program**.
|
||||
|
||||
>[!NOTE]
|
||||
>Make sure that you have administrator rights to the machine and that it has latest Windows updates.
|
||||
|
||||
3. Enter the AAD account that you used to register and follow the on-screen directions.
|
||||
|
||||
## Switch device enrollment from your Microsoft account to your AAD account
|
||||
1. Visit [insider.windows.com](https://insider.windows.com) to register your AAD account. If you are signed in with your Microsoft account, sign out, then sign back in with your corporate AAD account.
|
||||
2. Click **Get started**, read and accept the privacy statement and program terms and click **Submit**.
|
||||
3. On your Windows 10 PC, go to **Settings > Updates & Security > Windows Insider Program**.
|
||||
4. Under Windows Insider account, click your Microsoft account, then **Change** to open a Sign In box.
|
||||
5. Select your corporate account and click Continue to change your account.
|
||||
|
||||

|
||||
|
||||
>[!NOTE]
|
||||
>Your device must be connected to your corporate account in AAD for the account to appear in the account list.
|
||||
|
||||
## Frequently Asked Questions
|
||||
|
||||
### Will my test machines be affected by automatic registration?
|
||||
All devices enrolled in the Windows Insider Program (physical or virtual) will receive Windows 10 Insider Preview builds (regardless of registration with MSA or AAD).
|
||||
|
||||
### Once I register with my corporate account in AAD, do I need to keep my Microsoft account for the Windows Insider Program?
|
||||
No, once you set up your device using AAD credentials – all feedback and flighting on that machine will be under your AAD account. You may need MSA for other machines that aren’t being used on your corporate network or to get Windows store app updates.
|
||||
|
||||
### How do I stop receiving updates?
|
||||
You can simply “unlink” your account by going to **Settings > Updates & Security > Windows Insider Program**, select Windows Insider Account and click **Unlink**.
|
||||
|
||||
|
||||
## Related Topics
|
||||
- [Windows Insider Program for Business](waas-windows-insider-for-business.md)
|
||||
- [Windows Insider Program for Business Frequently Asked Questions](waas-windows-insider-for-business-faq.md)
|
90
windows/update/waas-windows-insider-for-business-faq.md
Normal file
@ -0,0 +1,90 @@
|
||||
---
|
||||
title: Windows Insider Program for Business Frequently Asked Questions
|
||||
description: Frequently Asked Questions and answers about the Windows Insider Program
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: manage
|
||||
ms.sitesec: library
|
||||
author: DaniHalfin
|
||||
localizationpriority: high
|
||||
---
|
||||
|
||||
# Windows Insider Program for Business Frequently Asked Questions
|
||||
|
||||
|
||||
**Applies to**
|
||||
|
||||
- Windows 10
|
||||
|
||||
> **Looking for consumer information?** See [Windows Update: FAQ](https://support.microsoft.com/help/12373/windows-update-faq)
|
||||
|
||||
### Are the Windows Insider Program and Windows Insider Program for Business separate programs?
|
||||
No, in fact just the opposite. The Windows Insider Program was created in 2014 to help Microsoft engage with Windows Fans worldwide. Windows Insiders are the first to be able to try new Windows features that we introduce through Windows 10 Insider Preview Builds. At the same time, they can provide feedback through the Feedback Hub App which helps create even better versions of Windows for all users. The Windows Insider Program for Business enables you to incorporate Insider Preview builds into your deployment plans using your corporate credentials, deepen connections with the IT Pro community, collect feedback within your organization, and increase the visibility of your organization’s feedback – especially on features that support productivity and business needs. Together we can resolve blocking or critical issues to better support your organization’s needs sooner. Incorporating the Windows Insider Program for Business into your deployment plans enables you to prepare your organization for the next update of Windows 10, to deploy new services and tools more quickly, to help secure your applications, and to increase productivity and confidence in the stability of your environment. Windows Insider Program for Business participants collaborate with the Windows team to build and document features, infuse innovation, and plan for what’s around the bend. We’ve architected some great features together, received amazing feedback, and we’re not done.
|
||||
|
||||
### What Languages are available?
|
||||
Insider Preview builds are available in the following languages: English (United States), English (United Kingdom), Chinese (Simplified), Chinese (Traditional), Portuguese (Brazilian), Japanese,Russian, German, French, French (Canada), Korean, Italian, Spanish, Spanish (Latin America), Swedish, Finnish, Turkish, Arabic, Dutch, Czech, Polish, Thai, Catalan, Hindi, and Vietnamese.
|
||||
|
||||
If your Windows build is not in one of the available base languages, you will not receive Insider Preview builds.
|
||||
|
||||
Hindi, Catalan, and Vietnamese can only be installed as a language pack over [supported base languages](https://support.microsoft.com/help/14236/language-packs).
|
||||
|
||||
>[!NOTE]
|
||||
> To learn how to install a language pack, see [How to add an input language to your PC Additional](https://support.microsoft.com/instantanswers/60f32ff8-8697-4452-af7d-647439c38433/how-to-add-and-switch-input-languages-on-your-pc).
|
||||
|
||||
### How do I register for the Windows Insider Program for Business?
|
||||
To register for the Windows Insider Program for Business, follow the steps below using your corporate account in Azure Active Directory (AAD). This account is the same account \that you use for Office 365 and other Microsoft services.
|
||||
|
||||
1. Visit https://insider.windows.com and click **Get Started**.
|
||||
2. Sign-in with your corporate account in AAD (username/password) and follow the on-screen registration directions.
|
||||
3. Enroll your Windows 10 PC to get the latest Windows 10 Insider Preview builds. Go to **Settings > Updates & Security > Windows Insider Program**. Click **Get Started**, enter your corporate credentials that you used to register, then follow the on-screen directions.
|
||||
>[!NOTE]
|
||||
>Make sure that you have administrator rights to your machine and that it has latest Windows updates.
|
||||
|
||||
### How can I find out if my corporate account is on Azure Active Directory?
|
||||
On your PC, go to **Settings > Accounts > Access work or school**. If your organization has set up your corporate account in Azure Active Directory and it is connected to your PC, you will see the account listed.
|
||||
|
||||
### I have more than one Azure Active Directory account. Which should I use?
|
||||
Register for Windows Insider Program for Business with the same active account that you use to access your corporate email in Office 365 and other Microsoft services. To ensure you get the most benefit out of the Windows Insider Program for Business and that your company is fully represented, do not set up a separate tenant for testing activities. There will be no modifications to the AAD tenant to support Windows Insider Program for Business, and it will only be used as an authentication method.
|
||||
|
||||
### My account is listed in Active Directory but not Azure Active Directory. Can I still register using my Active Directory credentials?
|
||||
No. At this point, we are only supporting Azure Active Directory as a corporate authentication method. If you’d like to suggest or upvote another authentication method, please visit this [forum](https://answers.microsoft.com/en-us/insider/forum/insider_wintp).
|
||||
|
||||
### I just want to participate as a Windows Insider. Do I still need to register with my corporate account in Azure Active Directory?
|
||||
No. You can join using your Microsoft account (MSA) by following the steps below. However, please note that if you want to access the benefits of the Windows Insider Program for Business, you will need to sign-up using your corporate account in Azure Active Directory.
|
||||
|
||||
1. Visit https://insider.windows.com and click Get Started.
|
||||
2. Register with your Microsoft account and follow the on-screen registration directions.
|
||||
3. Enroll your Windows 10 PC to get the latest Windows 10 Insider Preview builds by going to **Settings > Updates & Security > Windows Insider Program** and entering your Microsoft account that you used to register. Now follow the on-screen directions.
|
||||
|
||||
>[!NOTE]
|
||||
>Make sure that you have administrator rights to your machine and that it has latest Windows updates.
|
||||
|
||||
### I am already a Windows Insider. I want to switch my account from my Microsoft account to my corporate account in Azure Active Directory. How do I do this?
|
||||
In just a few steps, you can switch your existing program registration from your Microsoft account to your corporate account in Azure Active Directory.
|
||||
|
||||
1. Visit https://insider.windows.com. If you are signed in with your Microsoft account, sign out then sign back in to register with your corporate account in AAD.
|
||||
2. On your Windows 10 PC, go to **Settings > Updates & Security > Windows Insider Program**.
|
||||
3. In your account Under Windows Insider account, click **Change** to open a pop-up box.
|
||||
4. Select your corporate account and click Continue to change your account.
|
||||
|
||||
>[!NOTE]
|
||||
>Your corporate account must be connected to the device for it to appear in the account list.
|
||||
|
||||
### How do I sign into the Feedback Hub with my corporate credentials?
|
||||
Sign in to the Feedback Hub using the same AAD account you are using to flight builds.
|
||||
|
||||
### Am I going to lose all the feedback I submitted and badges I earned with my MSA?
|
||||
No. However, your feedback will not be transferred from your MSA to your AAD account. You can switch back to your MSA account in the Feedback Hub to access feedback you’ve submitted and badge you’ve earned.
|
||||
|
||||
### How is licensing handled for Windows 10 Insider builds?
|
||||
All PCs need to have a valid Windows 10 license. This requirement applies whether the device is joined to the Windows Insider Program using a Microsoft account or an Azure Active Directory account.
|
||||
|
||||
### Can I use the Software in a live operating environment?
|
||||
The software is a pre-release version, and we do not recommend that organizations run Windows Insider Preview builds outside of their test environments. This software may not work the way a final version of the software will. We may change it for the final, commercial version. We also may not release a commercial version.
|
||||
|
||||
### Can a single MSA or AAD account be used to register more than one PC in the program?
|
||||
Yes. If each PC has a valid Windows 10 or Windows 10 Mobile license you can use your MSA on as many devices as you’d like. However, the main concern would be that within the feedback it all looks like it comes from a single user. If multiple devices are experiencing problems with a build, you’d want the ability to submit the same feedback from multiple people (or upvote the same piece of feedback).
|
||||
|
||||
|
||||
## Related Topics
|
||||
- [Windows Insider Program for Business](waas-windows-insider-for-business.md)
|
||||
- [Windows Insider Program for Business using Azure Active Directory](waas-windows-insider-for-business-aad.md)
|
166
windows/update/waas-windows-insider-for-business.md
Normal file
@ -0,0 +1,166 @@
|
||||
---
|
||||
title: Windows Insider Program for Business
|
||||
description: Overview of the Windows Insider Program for Business
|
||||
ms.prod: w10
|
||||
ms.mktglfcycl: manage
|
||||
ms.sitesec: library
|
||||
author: DaniHalfin
|
||||
localizationpriority: high
|
||||
---
|
||||
|
||||
# Windows Insider Program for Business
|
||||
|
||||
|
||||
**Applies to**
|
||||
|
||||
- Windows 10
|
||||
|
||||
> **Looking for consumer information?** See [Windows Update: FAQ](https://support.microsoft.com/help/12373/windows-update-faq)
|
||||
|
||||
For many IT pros, gaining visibility into feature updates early—before they’re available to the CB servicing branch—can be both intriguing and valuable for future end user communications as well as provide additional prestaging for CB machines. With Windows 10, feature flighting enables Windows Insiders to consume and deploy preproduction code to their test machines, gaining early visibility into the next build. Testing the early builds of Windows 10 helps both Microsoft and its customers because they have the opportunity to discover possible issues before the update is ever publicly available and can report it to Microsoft. Also, as flighted builds get closer to their release to CB, organizations can test their deployment on test devices for compatibility validation.
|
||||
|
||||
The Windows Insider Program for Business gives you the opportunity to:
|
||||
* Get early access to Windows Insider Preview Builds
|
||||
* Provide feedback to Microsoft in real-time via the Feedback Hub app.
|
||||
* Sign-in with coproate credentials (Azure Active Directory) and increase the visibility of your organization's feedback with Microsoft – especially on features that support your productivity and business needs.
|
||||
|
||||
|
||||
Microsoft recommends that all organizations have at least a few PCs enrolled in the Windows Insider Program, to include the Windows Insider Program in their deployment plans and to provide feedback on any issues they encounter to Microsoft via our Feedback Hub app.
|
||||
|
||||
The Windows Insider Program isn’t intended to replace CB deployments in an organization. Rather, it provides IT pros and other interested parties with pre-release Windows builds that they can test and ultimately provide feedback on to Microsoft.
|
||||
|
||||
## Getting started with Windows Insider Program for Business
|
||||
|
||||
To get started with the Windows Insider Program for Business, you will need to follow a few simple steps:
|
||||
|
||||
1. Navigate to [insider.windows.com](https://insider.windows.com) and go to **Get Started**.
|
||||
2. Sign-in with you desired account. It can be either a Microsoft Account or your organizational Azure Active Directory Account.
|
||||
|
||||

|
||||
|
||||
3. Enroll your device by going to **Start > Settings > Update & security > Windows Insider Program** and selecting **Get Started**. Sign-in using the account you used to register for the Windows Insider Program.
|
||||
4. After reading the privacy statement and clicking **Next**, **Confirm** and schedule a restart.
|
||||
|
||||
## Install your first preview build from the Windows Insider Program
|
||||
|
||||
After enrolling your devices, you are ready to install your first preview build. To do so, go to **Start** > **Settings** > **Update & security** > **Windows Insider Program** to select your Insider level. The device receives the most recent Windows Insider build for the Insider level you select.
|
||||
|
||||
>[!TIP]
|
||||
>Flighting rings are used to evaluate the quality of our software as it is released to progressively larger audiences. We will flight a Feature Update, application, etc. to the first ring if it passes all required automated testing in the lab. The flight will continue to be evaluated against a set of criteria to ensure it is ready to progress to the next ring.
|
||||
|
||||
The options for Insider level are:
|
||||
|
||||
### Release Preview
|
||||
|
||||
Best for Insiders who enjoy getting early access to updates for the Current Branch, Microsoft applications, and drivers, with minimal risk to their devices, and still want to provide feedback to make Windows devices great.
|
||||
|
||||
Insiders on this level receive builds of Windows just before Microsoft releases them for CB. Although these builds aren’t final, they are the most complete and stable builds available to Windows Insider Program participants. This level provides the best testing platform for organizations that conduct early application compatibility testing on Windows Insider PCs.
|
||||
|
||||
* The Release Preview Ring will only be visible when your Windows build version is the same as the Current Branch
|
||||
* The easiest way to go between the Development Branch to the Current Branch is to use the [Media Creation Tool](http://go.microsoft.com/fwlink/?LinkId=691209) (for PC) or [Windows Device Recovery Tool](http://go.microsoft.com/fwlink/p/?LinkId=522381) (for Mobile) to reinstall Windows
|
||||
Ring
|
||||
|
||||
### Slow
|
||||
|
||||
The Slow Windows Insider level is for users who enjoy seeing new builds of Windows with minimal risk to their devices but still want to provide feedback to Microsoft about their experience with the new build.
|
||||
|
||||
* Builds are sent to the Slow Ring after feedback has been received from Insiders within the Fast Ring and analyzed by our Engineering teams.
|
||||
* These builds will include updates to fix key issues that would prevent many Windows Insiders from being able to use the build on a daily basis.
|
||||
* These builds are still may have issues that would be addressed in a future flight.
|
||||
|
||||
### Fast
|
||||
|
||||
Best for Insiders who enjoy being the first to get access to builds and feature upgrades, with some risk to their devices in order to identify issues, and provide suggestions and ideas to make Windows software and devices great
|
||||
|
||||
* Windows Insiders with devices in the Fast Ring should be prepared for more issues that may block key activities that are important to you or may require significant workarounds.
|
||||
* Because we are also validating a build on a smaller set of devices before going to Fast, there is also a chance that some features may work on some devices but may fail in other device configurations.
|
||||
* Windows Insiders should be ready to reinstall Windows using the [Media Creation Tool](http://go.microsoft.com/fwlink/?LinkId=691209) or [Windows Device Recovery Tool](http://go.microsoft.com/fwlink/p/?LinkId=522381) when you are significantly blocked. • Please remember to report any issue to us through the Windows Insider Feedback Hub or the Windows Insider community Forum
|
||||
|
||||
>[!NOTE]
|
||||
>Once your machine is updated to Windows 10 and you select your desired flight ring, the process known as "Compatibility check" will need to run in the background. There is no manual way to force this process to run. This process allows for the discovery of your OS type (32-bit, 64-bit), build edition (Home, Pro, Enterprise), country and language settings, and other required information. Once this process is complete, your machine will be auto-targeted for the next available flight for your selected ring. For the first build on any given machine, this may take up to 24 hours to complete.
|
||||
|
||||
## How to switch between flight rings
|
||||
|
||||
During your time in the Windows Insider Program, you may want to change between flight rings for any number of reasons. Changing rings is a simple process that requires only a few clicks:
|
||||
|
||||
1. Go to **Settings > Updates & Security > Windows Insider Program**
|
||||
2. Under **Choose your level**, select between the following rings -
|
||||
* [Windows Insider Fast](#fast)
|
||||
* [Windows Insider Slow](#slow)
|
||||
* [Release Preview](#release-preview)
|
||||
|
||||
## How to switch between you MSA and your Corporate AAD account
|
||||
|
||||
The Windows Insider Program for Business now gives users the option to register and enroll devices using a corporate account in [Azure Active Directory](https://azure.microsoft.com/services/active-directory/) (AAD) as well as their Microsoft Account (MSA).
|
||||
|
||||
To switch between accounts, go to **Settings > Updates & Security > Windows Insider Program**, and under **Windows Insider account** select **Change**.
|
||||

|
||||
|
||||
>[!NOTE]
|
||||
>If you would like to use your corporate account, your device must be connected to your corporate account in AAD for the account to appear in the account list.
|
||||
|
||||
## Sharing Feedback Via the Feedback Hub
|
||||
As you know a key benefit to being a Windows Insider is Feedback. It’s definitely a benefit to us, and we hope it’s a benefit to you. Feedback is vital for making changes and improvements in Windows 10. Receiving quality and actionable feedback is key in achieving these goals.
|
||||
|
||||
When providing feedback, please consider the following:
|
||||
1. Please use the **Feedback Hub** app to submit your feedback to Microsoft.
|
||||
2. Check for existing feedback on the topic you are preparing to log. Another user may have already shared the same feedback. If they have, please “upvote” the existing feedback to help prevent duplicate submissions. Adding additional comments to existing feedback can help others by providing clarity to existing information or additional scenarios to review.
|
||||
3. Provide as much information to us as possible: include reproduction steps, screenshots, any detail you think would help us experience the issue as you have, so that we can work on a fix and get it into a new build as soon as possible.
|
||||
|
||||
### How to use your corporate AAD account for additional Feedback Hub benefits
|
||||
Get even more out of the Feedback Hub by signing in to the Feedback Hub using the same corporate account in AAD that are using to flight builds. One of the benefits of submitting feedback using your AAD account is the addition of a page to the Feedback Hub for your organization. Simply click the **My Company** page in the feedback hub to see and upvote all feedback submitted by other Insiders in your organization.
|
||||
|
||||
>[!NOTE]
|
||||
>If you signed into the Feedback Hub previously with your MSA, your feedback and badges will not be transferred to your AAD sing-in. However, you can switch back to your MSA account in the Feedback Hub to access feedback you’ve submitted and badges you’ve earned.
|
||||
|
||||
## Not receiving Windows 10 Insider Preview build updates?
|
||||
|
||||
In some cases, your PC may not update to the latest Insider Preview build as expected. Here are items that you can review to troubleshoot this issue:
|
||||
|
||||
### Perform a manual check for updates
|
||||
Go to **Settings > Updates & Security**. Review available updates or select **Check for updates**.
|
||||
|
||||
>[!NOTE]
|
||||
>If you have set Active Hours, ensure your device is left turned on and signed in during the off-hours so the install process can complete.
|
||||
|
||||
### Make sure Windows is activated
|
||||
Go to **Settings > Updates & Security > Activation** to verify Windows is activated.
|
||||
|
||||
### Make sure your coporate account in AAD is connected to your device
|
||||
Open **Settings \ Accounts \ Access work or school**. If your PC is not listed as connected to your account in AAD, click Connect and enter your AAD account.
|
||||
|
||||
### Make sure you have selected a flight ring
|
||||
Open **Settings > Update & Security > Windows Insider Program** and select your flight ring.
|
||||
|
||||
### Have you recently done a roll-back?
|
||||
If so, please double-check your flight settings under **Settings > Update & Security > Windows Insider Program**.
|
||||
|
||||
### Did you do a clean install?
|
||||
After a clean-install and initial setup of a Microsoft or coporate account (even one that has been used previously for flighting) the appropriate targeting needs to take place for your PC. This background process is known as Compatibility Checker and will run during idle time on your PC. This process may take up to 24 hours. Please leave your PC turned on to ensure this occurs in timely manner.
|
||||
|
||||
### Are there known issues for your current build?
|
||||
On rare occasion, there may be an issue with a build that could lead to issues with updates being received. Please check the most recent Blog Post or reach out to the Windows Insider team on Twitter for verification (*@WindowsInsider*). You can also check the **Feedback Hub** for announcments and known issues.
|
||||
|
||||
## Exiting flighting
|
||||
|
||||
After you’ve tried the latest Insider Preview builds, you may want to opt out. In order to do that, go to **Settings > Update & Security > Windows Insider Program** and select **Stop Insider Preview Builds**. Follow the on-screen instructions to stop flighting to your device.
|
||||
|
||||
## Additional help resources
|
||||
|
||||
* [**Windows Blog**](https://blogs.windows.com/blog/tag/windows-insider-program/) - With each new build release we publish a Windows Blog post that outlines key feature changes as well as known issues that Insiders may encounter while using the build.
|
||||
* [**Windows Insider Preview community forum**](https://answers.microsoft.com/en-us/insider/forum/insider_wintp) - Answers is Microsoft’s forum platform and there is an entire area dedicated to the Windows Insider Program. Insiders can filter between PC, Office, Edge, and many others.
|
||||
|
||||
## Learn More
|
||||
- [Windows Insider Program for Business using Azure Active Directory](waas-windows-insider-for-business-aad.md)
|
||||
- [Windows Insider Program for Business Frequently Asked Questions](waas-windows-insider-for-business-faq.md)
|
||||
|
||||
|
||||
## Related Topics
|
||||
- [Overview of Windows as a service](waas-overview.md)
|
||||
- [Prepare servicing strategy for Windows 10 updates](waas-servicing-strategy-windows-10-updates.md)
|
||||
- [Build deployment rings for Windows 10 updates](waas-deployment-rings-windows-10-updates.md)
|
||||
- [Assign devices to servicing branches for Windows 10 updates](waas-servicing-branches-windows-10-updates.md)
|
||||
- [Optimize update delivery for Windows 10 updates](waas-optimize-windows-10-updates.md)
|
||||
- [Manage updates using Windows Update for Business](waas-manage-updates-wufb.md)
|
||||
- [Manage Windows 10 updates using Windows Server Update Services (WSUS)](waas-manage-updates-wsus.md)
|
||||
- [Manage Windows 10 updates using System Center Configuration Manager](waas-manage-updates-configuration-manager.md)
|
@ -156,6 +156,16 @@ The security setting [**Interactive logon: Display user information when the ses
|
||||
A new security policy setting
|
||||
[**Interactive logon: Don't display username at sign-in**](../keep-secure/interactive-logon-dont-display-username-at-sign-in.md) has been introduced in Windows 10 version 1703. This security policy setting determines whether the username is displayed during sign in. It works in conjunction with the **Privacy** setting in **Settings** > **Accounts** > **Sign-in options**. The setting only affects the **Other user** tile.
|
||||
|
||||
### Windows Hello for Business
|
||||
|
||||
You can now reset a forgotten PIN without deleting company managed data or apps on devices managed by [Microsoft Intune](https://www.microsoft.com/cloud-platform/microsoft-intune).
|
||||
|
||||
For Windows Phone devices, an adminisrator is able to initiate a remote PIN reset through the Intune portal.
|
||||
|
||||
For Windows desktops, users are able to reset a forgotten PIN through **Settings > Accounts > Sign-in options**.
|
||||
|
||||
For more details, check out [What if I forget my PIN?](../keep-secure/hello-why-pin-is-better-than-password.md#what-if-i-forget-my-pin).
|
||||
|
||||
## Update
|
||||
|
||||
### Windows Update for Business
|
||||
@ -164,6 +174,10 @@ The pause feature has been changed, and now requires a start date to set up. Use
|
||||
|
||||
Windows Update for Business managed devices are now able to defer feature update installation by up to 365 days (it used to be 180 days). In settings, users are able to select their branch readiness level and update deferal periods. See [Configure devices for Current Branch (CB) or Current Branch for Business (CBB)](../update/waas-configure-wufb.md#configure-devices-for-current-branch-or-current-branch-for-business), [Configure when devices receive Feature Updates](../update/waas-configure-wufb.md#configure-when-devices-receive-feature-updates) and [Configure when devices receive Quality Updates](../update/waas-configure-wufb.md#configure-when-devices-receive-quality-updates) for details.
|
||||
|
||||
### Windows Insider for Business
|
||||
|
||||
We recently added the option to download Windows 10 Insider Preview builds using your corporate credentials in Azure Active Directory (AAD). By enrolling devices in AAD, you increase the visibility of feedback submitted by users in your organization – especially on features that support your specific business needs. For details, see [Windows Insider Program for Business](../update/waas-windows-insider-for-business.md).
|
||||
|
||||
### Optimize update delivery
|
||||
|
||||
[Express updates](../update/waas-optimize-windows-10-updates.md#express-update-delivery) are now supported on System Center Configuration Manager, starting with version 1702 of Configuration Manager, in addition to current Express support on Windows Update, Windows Update for Business and WSUS.
|
||||
@ -187,7 +201,9 @@ When upgrading to Windows 10, version 1703, in-box apps that were uninstalled by
|
||||
|
||||
### New MDM capabilities
|
||||
|
||||
Windows 10, version 1703 adds several new [configuration service providers (CSPs)](../configure/how-it-pros-can-use-configuration-service-providers.md) that provide new capabilities for managing Windows 10 devices using MDM or provisioning packages. Some of the new CSPs are:
|
||||
Windows 10, version 1703 adds many new [configuration service providers (CSPs)](../configure/how-it-pros-can-use-configuration-service-providers.md) that provide new capabilities for managing Windows 10 devices using MDM or provisioning packages. Among other things, these CSPs enable you to configure a few hundred of the most useful Group Policy settings via MDM - see [Policy CSP - ADMX-backed policies](https://msdn.microsoft.com/windows/hardware/commercialize/customize/mdm/policy-admx-backed).
|
||||
|
||||
Some of the other new CSPs are:
|
||||
|
||||
- The [DynamicManagement CSP](https://msdn.microsoft.com/windows/hardware/commercialize/customize/mdm/dynamicmanagement-csp) allows you to manage devices differently depending on location, network, or time. For example, managed devices can have cameras disabled when at a work location, the cellular service can be disabled when outside the country to avoid roaming charges, or the wireless network can be disabled when the device is not within the corporate building or campus. Once configured, these settings will be enforced even if the device can’t reach the management server when the location or network changes. The Dynamic Management CSP enables configuration of policies that change how the device is managed in addition to setting the conditions on which the change occurs.
|
||||
|
||||
@ -201,6 +217,7 @@ Windows 10, version 1703 adds several new [configuration service providers (CSPs
|
||||
|
||||
- The [EnterpriseAppVManagement CSP](https://msdn.microsoft.com/windows/hardware/commercialize/customize/mdm/enterpriseappvmanagement-csp) is used to manage virtual applications in Windows 10 PCs (Enterprise and Education editions) and enables App-V sequenced apps to be streamed to PCs even when managed by MDM.
|
||||
|
||||
|
||||
[Learn more about new MDM capabilities.](https://msdn.microsoft.com/windows/hardware/commercialize/customize/mdm/new-in-windows-mdm-enrollment-management#whatsnew10)
|
||||
|
||||
### Mobile application management support for Windows 10
|
||||
|