[PowerShell] Habilitar MFA para usuarios de Office 365

Si no tiene una licencia de Azure AD Premium, solo tiene dos opciones para habilitar MFA para sus usuarios de Office 365, activarlo para todos los usuarios con los valores predeterminados de seguridad o manualmente para cada usuario en el Centro de administración > Usuarios activos > Autenticación multifactor.

Habilitar MFA Office 365

Habilitar MFA para cada usuario manualmente puede ser una tarea horrible y es algo que tendrá que hacer cada vez que cree un nuevo usuario.

Con PowerShell, podemos seleccionar fácilmente un grupo de usuarios y habilitar MFA para ellos.

Si incluso lo combina con el script para encontrar usuarios sin MFA habilitado, puede automatizar todo el proceso.

Habilite la autenticación multifactor para usuarios de Office 365 con PowerShell

Antes de comenzar a habilitar MFA en Office 365 con PowerShell, debemos conectarnos al servicio en línea de Microsoft:

Connect-MsolService

Para habilitar MFA con PowerShell, primero debemos crear un Requisito de autenticación fuerte objeto con los parámetros requeridos.

A continuación, podemos configurar este objeto en cada usuario para el que queremos habilitar MFA.

# Create the StrongAuthenticationRequirement Object
$sa = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
$sa.RelyingParty = "*"
$sa.State = "Enabled"
$sar = @($sa)

# Enable MFA for the user
Set-MsolUser -UserPrincipalName $user -StrongAuthenticationRequirements $sar

He envuelto esto en una función para que podamos canalizarlo fácilmente detrás de otro cmdlet (para seleccionar los usuarios o según un archivo CSV).

La función intentará habilitar MFA para cada usuario y generará un objeto con los usuarios y el estado de MFA.

Function Set-MFAforUser {
<#
  .Synopsis
    Enables MFA for an Office 365 User

  .DESCRIPTION
    Enable MFA for a user, you can turn it on for a single user or input a list of users

  .NOTES
    Name: Set-MFAforUser
    Author: R. Mens - LazyAdmin.nl
    Version: 1.0
    DateCreated: jan 2021
    Purpose/Change: Initial script development

  .LINK
    https://lazyadmin.nl

  .EXAMPLE
    Set-MFAforUser -UserPrincipalName [email protected]

    Enable MFA for the user John Doe

  .EXAMPLE
	  Import-Csv -Delimiter ";" -Path ("path\to\file\users-to-enable.csv") | Foreach-Object { Set-MFAforUser $_.UserPrincipalName }

    Enable MFA for all users in a CSV file
#>
 [CmdletBinding(DefaultParameterSetName="Default")]
  param(
    [Parameter(
      Mandatory = $true,
      ValueFromPipeline = $true,
      ValueFromPipelineByPropertyName = $true,
      ParameterSetName  = "UserPrincipalName",
      Position = 0
      )]
    # Enter a single UserPrincipalName or a comma separted list of UserPrincipalNames
    [string[]]$UserPrincipalName
	)

Begin {}

Process {
	if ($PSBoundParameters.ContainsKey('UserPrincipalName')) {
		foreach ($user in $UserPrincipalName) {
			try {
		    # Src: https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-userstates
		    $sa = New-Object -TypeName Microsoft.Online.Administration.StrongAuthenticationRequirement
		    $sa.RelyingParty = "*"
		    $sa.State = "Enabled"
		    $sar = @($sa)

		    # Change the following UserPrincipalName to the user you wish to change state
		    Set-MsolUser -UserPrincipalName $user -StrongAuthenticationRequirements $sar -ErrorAction Stop

		    [PSCustomObject]@{
			    UserPrincipalName = $user
			    MFAEnabled        = $true
		    }
	    }
	    catch {
		    [PSCustomObject]@{
			    UserPrincipalName = $user
			    MFAEnabled        = $false
		    }
	    }
	 }
	}else{
		Write-Verbose "No UserPrincipalName given"
	}
  }
}

También puede encontrar el guión completo. aquí en mi GitHub.

Excluyendo usuarios

Si necesita excluir usuarios o cuentas del script, puede agregarle la siguiente parte:

# Create a list of excluded accounts
$exclusions = @("[email protected]",
                "[email protected]")

# Replace the following line (160 in the complete script above)
$MsolUsers = Get-MsolUser -EnabledFilter EnabledOnly -MaxResults $MaxResults | Where-Object {$_.IsLicensed -eq $isLicensed} | Sort-Object UserPrincipalName

# With this
$MsolUsers = Get-MsolUser -EnabledFilter EnabledOnly -MaxResults $MaxResults | 
            Where-Object {$_.IsLicensed -eq $true -and $_.UserPrincipalName -notin $exclusions -and !$_.StrongAuthenticationMethods -and !$_.StrongAuthenticationRequirements} | 
            Sort-Object UserPrincipalName

Terminando

Activar MFA es realmente importante cuando se trata de proteger su entorno.

Los valores predeterminados de seguridad son una excelente solución para los inquilinos más pequeños, pero no funcionan cuando tiene cuentas del sistema, por ejemplo.

Al usar PowerShell y una tarea programada, aún puede automatizar el MFA en Office 365, manteniendo sus cuentas seguras.

Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

Cómo borrar la memoria caché de los equipos

Cómo borrar la memoria caché de los equipos

¿Su Microsoft Teams funciona lento o no se inicia en absoluto? Luego, borrar el caché de Microsoft Teams probablemente resolverá ...
Leer Más
Cómo convertir un buzón compartido en un buzón de usuario

Cómo convertir un buzón compartido en un buzón de usuario

Los buzones de correo compartidos en Microsoft 365 se pueden convertir (volver) a un buzón de correo de usuario. Esto ...
Leer Más
Exchange Online Protection - Lo que necesita saber

Exchange Online Protection – Lo que necesita saber

#patrocinado Más del 40% de todos los correos electrónicos enviados son spam o potencialmente dañinos, como phishing o malware. Por ...
Leer Más
Plantillas de correo electrónico de Outlook: cómo crearlas, usarlas y compartirlas fácilmente

Plantillas de correo electrónico de Outlook: cómo crearlas, usarlas y compartirlas fácilmente

¿Está enviando muchas respuestas estándar en Outlook? ¿O quieres estandarizar las respuestas enviadas por tus empleados? Entonces, las plantillas de ...
Leer Más
Informe de tamaño de buzón de Office 365 con PowerShell

Informe de tamaño de buzón de Office 365 con PowerShell

Es importante realizar un seguimiento de los tamaños de los buzones de correo de Office 365. No desea que los ...
Leer Más
Cómo protegerse contra ransomware en Microsoft Office 365

Cómo protegerse contra ransomware en Microsoft Office 365

Ransomware es actualmente la mayor amenaza de ciberseguridad para las organizaciones. Según una nueva investigación realizada por CyberEdge, entre 1200 ...
Leer Más

Deja un comentario