La autenticación moderna es una característica de seguridad de Office 365 que utiliza Azure Active Directory (AAD) para autenticar a los usuarios. Se erige como un faro de seguridad, eclipsando métodos de autenticación tradicionales como la autenticación básica. ¿El motivo? La autenticación moderna emplea un cifrado más potente y la capa añadida de la autenticación de dos factores, lo que la convierte en un mecanismo de defensa formidable en el panorama cibernético actual.
Entender el script para verificar el estado de la autenticación moderna
En esencia, el script está diseñado para proporcionar claridad sobre el estado de la autenticación moderna en todos los perfiles de usuario en un entorno de Office 365. ¿Cómo se consigue esto? Examinando meticulosamente cada perfil de usuario de la máquina e inspeccionando los valores del registro vinculados a la autenticación moderna. Si encuentra un valor de 0, es un claro indicador de que la autenticación moderna está desactivada para ese perfil de usuario específico.
El script
#Requires -Version 5.1 <# .SYNOPSIS Monitors if user profiles have modern auth for Office 365 enabled or disabled. .DESCRIPTION Monitors if user profiles have modern auth for Office 365 enabled or disabled. Check if HKEY_CURRENT_USERSOFTWAREMicrosoftOffice15.0CommonIdentityEnableADAL is set to 1. Check if HKEY_CURRENT_USERSOFTWAREMicrosoftOffice16.0CommonIdentityEnableADAL is set to 0. Returns an exit code of 1 if one user has modern auth disabled. Returns an exit code of 0 if all user have modern auth enabled. .EXAMPLE No parameter needed. .OUTPUTS None .NOTES Minimum OS Architecture Supported: Windows 10, Windows Server 2016 Release Notes: Initial Release By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use. Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA). #> [CmdletBinding()] param () begin { function Test-IsElevated { $id = [System.Security.Principal.WindowsIdentity]::GetCurrent() $p = New-Object System.Security.Principal.WindowsPrincipal($id) $p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator) } } process { if (-not (Test-IsElevated)) { Write-Error -Message "Access Denied. Please run with Administrator privileges." exit 1 } # Loop through each user's profile # Check if HKEY_CURRENT_USERSOFTWAREMicrosoftOffice15.0CommonIdentityEnableADAL is set to 1 # Check if HKEY_CURRENT_USERSOFTWAREMicrosoftOffice16.0CommonIdentityEnableADAL is set to 1 $Path = @("SOFTWAREMicrosoftOffice15.0CommonIdentity", "SOFTWAREMicrosoftOffice16.0CommonIdentity") $Name = "EnableADAL" $Script:FoundModernAuthDisabled = $false # Get each user profile SID and Path to the profile $UserProfiles = Get-ItemProperty -Path "HKLM:SOFTWAREMicrosoftWindows NTCurrentVersionProfileList*" | Where-Object { $_.PSChildName -match "S-1-5-21-(d+-?){4}$" } | Select-Object @{Name = "SID"; Expression = { $_.PSChildName } }, @{Name = "UserHive"; Expression = { "$($_.ProfileImagePath)NTuser.dat" } }, @{Name = "UserName"; Expression = { "$($_.ProfileImagePath | Split-Path -Leaf)" } } # Loop through each profile on the machine Foreach ($UserProfile in $UserProfiles) { # Load User ntuser.dat if it's not already loaded If (($ProfileWasLoaded = Test-Path -Path "Registry::HKEY_USERS$($UserProfile.SID)") -eq $false) { Start-Process -FilePath "cmd.exe" -ArgumentList "/C reg.exe LOAD HKU$($UserProfile.SID) $($UserProfile.UserHive)" -Wait -WindowStyle Hidden } # Read the user's registry $Path | ForEach-Object { $Key = Join-Path -Path "Registry::HKEY_USERS$($UserProfile.SID)" -ChildPath $($_) $Value = Get-ItemProperty -Path $Key -ErrorAction SilentlyContinue | Select-Object $Name -ExpandProperty $Name -ErrorAction SilentlyContinue if ( ( $_ -like "*15.0*" -and $Value -ne 1 -and $(Test-Path -Path $Key -ErrorAction SilentlyContinue) ) -or ( $_ -like "*16.0*" -and $Value -eq 0 ) ) { Write-Host "$($UserProfile.UserName) ModernAuth is not enabled." $Script:FoundModernAuthDisabled = $true } } # Unload NTuser.dat If ($ProfileWasLoaded -eq $false) { [gc]::Collect() Start-Sleep 1 Start-Process -FilePath "cmd.exe" -ArgumentList "/C reg.exe UNLOAD HKU$($UserProfile.SID)" -Wait -WindowStyle Hidden | Out-Null } } if ($FoundModernAuthDisabled) { Write-Output $false exit 1 } else { Write-Output $true exit 0 } } end {}
Accede a más de 300 scripts en el Dojo de NinjaOne
Ventajas para los profesionales de TI
El script no es sólo una herramienta; es una solución a la medida para los profesionales de TI. A continuación algunas formas en las que te puede ayudar:
- Supervisión proactiva: antes de que un posible fallo de seguridad se convierta en un problema real, el script permite a los profesionales de TI identificar y tratar los casos en los que la autenticación moderna está desactivada.
- Máxima eficiencia: el tiempo es un factor crucial en el ámbito de las TI. El script automatiza el tedioso proceso de comprobar individualmente cada perfil de usuario, permitiendo ganar un tiempo muy valioso.
- Claridad y orientación: se acabaron las conjeturas. El script ofrece información clara sobre los perfiles de usuario que requieren atención, allanando el camino para una corrección específica y eficaz.
NinjaOne: tu socio en gestión de TI
Aunque el script ofrece una solución específica, la integración con una plataforma de gestión de TI integral como NinjaOne amplifica sus capacidades. NinjaOne proporciona una plataforma unificada que simplifica las operaciones de TI. Cuando se trata de la autenticación moderna en Office 365, NinjaOne puede ejecutar el script sin interrupciones a intervalos programados. ¿El resultado? Los equipos de TI reciben alertas en tiempo real sobre cualquier anomalía, garantizando que la seguridad no se vea comprometida.
Reflexiones finales
En el mundo en constante evolución de las TI, la autenticación moderna en Office 365 no es una mera característica; es una necesidad. Si usan este script y lo integran con soluciones robustas como NinjaOne, los profesionales de TI pueden reforzar sus defensas y asegurarse de que sus organizaciones están siempre un paso por delante en materia de ciberseguridad.