SPEAKING @ “REMOTE Cloud Workplace Meetup #6”

The “REMOTE Cloud Workplace Meetup” Number 6 will be held on June 9th. As COVID-19 still blocks us to meet in person, this event will be a virtual event with two sessions. I’m very happy to serve the first session.

WHAT IS THE CONTENT

We will talk about Identity and Access Management. As this is only a 35 minutes slot, incl. Q&A, I will only cover thre topics:
– Zero Trust (very short)
– Azure Multifactor Authentication based on Conditional Access
– Access Reviews for Teams or Microsoft 365 groups (Former Office 365 groups)
Feel free to register here: Remote Cloud Workplace Meetup #6

SESSION OUTLINE

A valid and secured Identity is gold!

Azure Active Directory (Azure AD) brings you several options to achieve this goal.

First of all you should enable Azure MFA for all users. But hey: What about all the Admin Accounts and what in case of Azure MFA fails. We will show how to enable Azure MFA in a right way and make sure you have a protected identity.

What else: Using Identity Governance and Access reviews you have a tool on board which helps you to review access to your Office platform such as Microsoft Teams.

Hope to see you there!

REMOVE ADFS FARM AFTER MOVING TO AZURE AD AS IDP

Currently and in the past I have done a number of ADFS to Azure AD authentication projects, where authentication is moved to Password Hash Sync (PHS) & Seamless SSO or Pass Through Authentication (PTA) including sSSO.

First of all you should know your environment when starting removing services. I assume, that you’re aware of the server that are joined to your ADFS farm. If not, STOP here and start over :-). No, you can use PowerShell to get a list of your servers and specially the primary server of your farm. Run that on one of your ADFS hosts:

Get-ADFSSyncProperties

Make sure you have migrated all authentications to Azure and you have disbled the relying party trusts for a while now. This gives you the certainty that no authentication flow still passed your ADFS environment.

You should also consider the “Application” logs on each of your ADFS server. Filter them by using “AD FS, AD FS Auditing, AD FS Tracing and ADHealth-Adfs” to confirm no auth-flow runs over ADFS.

If you still see failing authentications going over your farm, make sure they get migrated to Azure before you remove your ADFS servers. Also have a look into the Application and Services Log/ADFS/Admin. If all is clear, you can start decommissioning your farm.

On your primary ADFS server check the certificate sharing containers as you will need that later to remove it within ADSI. Do that before you removing the ADFS farm.

(Get-ADFSProperties).CertificateSharingContainer

Remove the WAP Servers

Login to each WAP server, open the Remote Access Management Console and look for published web applications. Remove any to ADFS related that are not being used any more. Make a note of the URL that you are removing – its very likely that this means you can remove the same name from public and private DNS as well once the service is no longer needed. You can accomplish this by using PowerShell:

Remove-WindowsFeature Web-Application-Proxy,RSAT-RemoteAccess

If you need an alternate solution for Remote Access Management and WAP, have a look into Azure Application Proxy

Remove ADFS Server

On your second host start PowerShell and remove the ADFS Trust incl. the Windows Internal Database Feature (If not needed for other stuff). Run the command and reboot the server:

Remove-WindowsFeature ADFS-Federation,Windows-Internal-Database

Also remove the ADFS database on the local system by running the command bellow. This will clear the folder with the ADFS database and logs.

del C:\Windows\WID\data\adfs*

Clean-up some more ADFS Stuff

Do not forget to remove:
– Internal and external ADFS specific DNS records
– Load Balancer configurations for ADFS Farm
– Firewall rules between Internet, Load Balancer, DMZ and ADFS Servers
– Revoke certificates if no longer needed
– Service accounts, Group Managed Service Accounts
– Remove IIS on the ADFS Server and/or decommissioning the Windows Server itself

If you have removed all ADFS Servers from your forest, you are now save to remove the ADSI entries under for the Certificate Sharing Container within ADSI edit: CN=Microsoft,CN=Program Data,DC=domain,DC=local

All done. Hope this helps!

MIGRATE AZURE AD CONNECT TO ANOTHER SERVER – CONSIDER “SOURCE ANCHOR”

Sometimes it’s required to migrate your Azure AD Connect to a new OS or another server. This is actually a straight forward thing and you can find severeal blogs to do that – just google it. But one thing you should keep in mind is the SourceAnchor immutable attribute. Immutable means “not changeable”.

Since this attribute’s value cannot be changed after it has been set, it is important to pick a design that supports your scenario. Consider this, check the docs site for more information.

The change to another server requires Azure AD connect to be installed in staging mode. Staging mode enables you a “Hot standby” Azure AD Connect server and allows you to migrate from the original server to the new one or in case of a server failure to switch over.

During the installtion of the staging server, Azure AD Connect wizard checks the SourceAnchor attribute. Since version 1.1.524.0 of AADC, the attribute ms-DS-ConsistencyGuid is used as the primary source anchor instead of the objectGUID attribute. AADC checks the ms-DS-ConsistencyGuid within the forest and in case the attribute is not used by any service, an automatic migration will take place.

Now when you move to a new server, Azure AD Connect will drop an error, that the attribute ms-DS-ConsistencyGuid has already values and instead objectGUID will be used as the source anchor. If you ignore this, you will run in trouble for sure! So be careful.

SOLUTION
If you are certain that the attribute isn’t used by other existing applications, you can suppress the error by restarting the Azure AD Connect wizard with the /SkipLdapSearch switch specified. 

"c:\Program Files\Microsoft Azure Active Directory Connect\AzureADConnect.exe" /SkipLdapSearch

SkipLdapSearch allows you to change the staging mode server to the sourceAnchor attribute ms-DS-ConsistencyGuid.

Make sure all your settings are identically configured on the staging server compared to the source server before you switch to the new installed box.

Happy sourceAnchor-ing!

AUTOENROLLMENT FAILS WITH UNKNOWN ERROR 0x80180001 & 0x8018002a

Recently a customer called, that the Automatic Enrollment for MDM is not working as excepted and the clients are getting some errors during MDM Autoenrollment. Easy I thought, let’s have a look…

Within the Eventlog under Microsoft-Windows-DeviceManagement-Enterprise-Diagnostics-Provider the error Unknown Win32 Error code: 0x80180001 was triggerd.

Usually you configure MDM Automatic enrollment using a GPO after your devices are Hybrid Joined (to do so, check that post here).

Since Windows 10 1903 this GPO policy got a change. You can now select Device or User Authentication. If you select Device Authentication, a device token will be used to enroll the device, but this is not supported for Intune, based on this Docs article.

Also, another error caused in the Eventlog which indicates, that the GPO setting must be misconfigured:

MDM Enroll: Server Returned Fault/Code/Subcode/Value=(MessageFormat) Fault/Reason/Text=(Device based token is not supported for enrollment type OnPremiseGroupPolicyCoManaged 

As soon this GPO policy is applied to a device, a scheduled task is created and triggers the enrollment process every 5 minutes.

You can find this task under \Microsoft\Windows\EnterpriseMgmt. If you check the arguments for this specific task, you probably realize that the argument uses the string:

/c /AutoEnrollMDMUsingAADDeviceCredential

So, still device authentication is used. This causes our error. Let’s change that to User authentication.

To test the enrollment with user auth, you can ether changing the GPO to user authentication (this did not change the scheduled task arguments in my case, even after reboots, gpupdate, etc.) or just manually changing the string to:

/c /AutoEnrollMDMUsingAADUserCredential

After that, the devices started to auto enroll into Intune. Be aware, that auto enrollment, enrollment restriction and Azure AD device registration needs to be enabled and configured for that.

Your users will receive a toast message that some account settings has been changed.

If you use Azure MFA maybe another error will popup in the event log but not displayed to the enduser:

Auto MDM Enroll: Failed (Unknown Win32 Error code: 0x8018002a)

This will also block the enrollment process. You can avoid that, by configuring an exclusion in Conditional Access for the “Microsoft Intune Enrollment” cloud app.

Hope this helps!

DISABLE EXTERNAL SHARING FOR A SPECIFIC TEAMS

If you use Microsoft Teams, then is external sharing one of the option you probably love. You can share a whole Team with your Co-workers like customers or partners.

But in some cases you would like to disallow external sharing for a specific Teams. Maybe to protect accidental sharing of sensitive information located in a specific channel – Data under NDA, Management, HR and so on. Of course you would use AIP/Senitivity labels to protect your data, but here we will block the Teams external sharing option.

The easiest way to achieve this, is using PowerShell. First of all you need to install the Microsoft Exchange Online PowerShell Modules. To do so, login to your Exchange Online Portal by browsing to https://outlook.office365.com/ecp/ Hybrid – and click configure to download the Application.

Install the application and launch Microsoft Exchange Online PowerShell Module from your Windows Start Menu. Follow the next view steps to block external sharing in your Teams:

STEP 1: CONNECT EXCHANGE ONLINE

Use Exchange Online Modules
Set a Groups/Teams to 'AllowToAddGuests' == $False
Connect-EXOPSSession -UserPrincipalName 

STEP 2: GET TEAMS GUID

Get-UnifiedGroup
#If you have many Teams, you can select the Teams by name
Get-UnifiedGroup | select "<name of your Teams>"

STEP 3: WRITE TO VARIABLE
Write the ExternalDirectoryObjectId property to an variable.

$group = Get-UnifiedGroup -Identity "<GUID of your Teams>" | select "external" -ExpandProperty ExternalDirectoryObjectId

STEP 4: ADD THE AZURE AD TEMPLATE TO VARIABLE
The Get-AzureADDirectorySettingTemplate cmdlet gets a directory setting template from Azure Active Directory (AD). We need the group.unified.guest for our goal and adding the settings also to variables.

$template = Get-AzureADDirectorySettingTemplate | ? {$_.displayname -eq "group.unified.guest"}
$settingsCopy = $template.CreateDirectorySetting()
$settingsCopy["AllowToAddGuests"]=$False 

STEP 5: FIRE THE COMMAND
Now we need to fire the command against our Teams.

New-AzureADObjectSetting -TargetType Groups -TargetObjectId $group -DirectorySetting $settingsCopy

RESULT: NO EXTERNAL SHARING POSSIBLE
Within the specific Teams, you wont be able anymore to add guest accounts (even if they are already enrolled in your AzureAD) or share with people outside of your organization. In the picture bellow, I tried to add an external account to the Teams:

Maybe this helps. Let me know if you have any suggestions on this!