PI Services

Le blog des collaborateurs de PI Services

Azure AD : Convertir un GUID Azure AD en SID en utilisant PowerShell

Besoin :

On souhaite identifier le SID d'un groupe Azure AD mais l'attribut n'existe pas.

 

Solution :

J'ai utilisé ce script PowerShell pour convertir le GUID en SID :

function Convert-AzureAdObjectIdToSid {
<#
.SYNOPSIS
Convert an Azure AD Object ID to SID
 
.DESCRIPTION
Converts an Azure AD Object ID to a SID.
Author: Oliver Kieselbach (oliverkieselbach.com)
The script is provided "AS IS" with no warranties.
 
.PARAMETER ObjectID
The Object ID to convert
#>

    param([String] $ObjectId)

    $bytes = [Guid]::Parse($ObjectId).ToByteArray()
    $array = New-Object 'UInt32[]' 4

    [Buffer]::BlockCopy($bytes, 0, $array, 0, 16)
    $sid = "S-1-12-1-$array".Replace(' ', '-')

    return $sid
}

$objectId = "73d664e4-0886-4a73-b745-c694da45ddb4"
$sid = Convert-AzureAdObjectIdToSid -ObjectId $objectId
Write-Output $sid

# Output:

# S-1-12-1-1943430372-1249052806-2496021943-3034400218

N.B : il faut renseigner le GUID dans la variable $objectId pour que le script retourne son SID

Active Directory : Lister tous les comptes dont le mot ne passe n'expire jamais

Dans toute annuaire Active Directory il existe une mauvaise pratique, celle dont je voudrais vous parler aujourd'hui est la non expiration des mots de passe pour un / des comptes du domaine. 

Pourquoi ?

Il existe plusieurs arguments au fait qu'un mot de passe qui n'expire jamais est une mauvaise pratique, je mettrais en avant ici les deux qui me posent le plus problème:

  • Tout d'abord un mot de passe qui n'expire jamais a plus de chance d'être "découvert" dans des attaques de type brute force; si on se concentre sur ces comptes en particulier, le fait qu'il n'y ai pas de rotation de mot de passe, laisse une plus grande période de temps à l'attaquant pour le découvrir.
  • Si le compte est compromis, l'attaquant a par définition un accès "constant" au SI, puisque tant que la rotation du mot de passe n'aura pas lieu, ce dernier conservera son accès.

Que faire ?

Bien qu'il ne soit pas une bonne pratique d'autoriser la non expiration des mots de passe, je les croise tous le jours dans tout Active Directory, avec toujours "une bonne raison" de l'avoir fait.

En revanche, même s'il n'est pas possible de s'en séparer, il est tout de même bon de mettre en oeuvre quelques bonne pratiques lorsque l'on est dans cette situation :

  • Lister les comptes dont le mot de passe n'expire jamais.
  • Documenter la cause de cette configuration.
  • Documenter leur emploi (raison d'utilisation, application dans lesquelles ils sont utilisés, machines sur lesquelles ils sont utilisés).
  • Documenter la date du dernier changement de mot de passe (même si elle peut être retrouvée dans l'AD).
  • Documenter une procédure de changement de mot de passe (documentation applicative, processus de dépendance...).
  • Indiquer une personne / équipe en mesure de pouvoir réaliser le changement de mot de passe (il se peut qu'il y ai des développeurs, prestataires externes, éditeurs qui se servent de ce mot de passe). 
  • Réaliser une rotation du mot de passe manuellement.

Lister les comptes avec Powershell.

# Variables
$RootFolder = "C:\Temp"
$Workefolder = "$RootFolder\NeverExpires"
$LogFolder = "$RootFolder\Logs"
$LogFile = "$LogFolder\NeverExpires.txt"
$AllFolders = $RootFolder, $Workefolder, $LogFolder

# Check and create if needed
foreach ($Folder in $AllFolders) {
    If (!(Test-Path $Folder)) {
        Try {
            New-Item $Folder -ItemType Directory -ErrorAction Stop
            }
        Catch {
            Write-Warning $($_)
            }
        }
    }

# Import module
Try {
    Import-Module ActiveDirectory -ErrorAction Stop
    }
Catch {
    Write-Output "Failed to import module ActiveDirectory" | Add-Content $LogFile
    Exit
    }

# Get Active Directory users that have a password that never expires
Try {
    $AllEnabledUsers = Get-ADUser -Filter {Enabled -eq $true} -Properties PasswordNeverExpires -ErrorAction Stop
    $PasswordNeverExpires = $AllEnabledUsers.Where({$_.PasswordNeverExpires -ne $false})
    }
Catch {
    Write-Output "Failed to collect users" | Add-Content $LogFile
    }

# Export result
$PasswordNeverExpires | Export-Csv "$Workefolder\PasswordNeverExpires.csv" -Delimiter ";" -Encoding UTF8

 

Powershell : Change the owner of my GPO

Pour faire suite au précédent articles Powershell : Who's the owner of my AD objects et Powershell : Change the owner of my AD objects voici comment trouver les GPO dont le propriétaire n'est pas "Domain Admins" et les modifier.

# Get Domain
$Domain = Get-ADDomain | select -ExpandProperty NetBIOSName

# Get all GPO
$AllGPO = Get-GPO -All
$AllADGPO = Get-ADObject -Filter {(ObjectClass -eq "groupPolicyContainer")} -Properties displayName

# Filter GPO that are not owned by Domain Admins
$NoGood = $AllGPO.Where({$_.owner -ne "$Domain\Domain Admins"})

# Change owner of all invalid GPO
$NoGood | select -First 1 | foreach {
    $DisplayName = $_.DisplayName
    $Id = $_.ID
    $Guid = $Id.Guid

    $CurrentGpo = $AllADGPO.Where({$_.DisplayName -eq $DisplayName})
    Write-Host $CurrentGpo
    Write-Host $DisplayName -ForegroundColor Magenta
    
    $adsiTarget = [adsi]"LDAP://$($CurrentGpo.DistinguishedName)"
    $idRef = New-Object System.Security.Principal.NTAccount("$Domain", "Domain Admins")
    $adsiTarget.PSBase.ObjectSecurity.SetOwner($idRef)
    $adsiTarget.PSBase.CommitChanges()
    
    
    $DisplayName = $null
    $Id = $null
    }

 

 

[Exchange Active Sync] Les mobiles ActiveSync continuent à se synchroniser après la désactivation/ changement du mot de passe

Symptômes

Les mobiles Exchange Active Sync continuent de se synchroniser après la désactivation du compte utilisateur ou encore le changement de son mot de passe.

Cause

Quand le Direct Push est configuré au niveau des appareils mobiles, ces derniers maintiennent une session ouverte auprès des serveurs. Ainsi, les modifications apportées au compte AD de l’utilisateur ne prennent pas effet immédiatement, elles peuvent nécessiter de 8 à 24 heures pour qu'elles soient appliquées sur les mobiles.

Méthodes de résolution

1 - Redémarrer les services IIS 

  1. Utiliser le composant logiciel enfichable Services.msc pour redémarrer manuellement les services Administration IIS
  2. Sur le ou les serveurs d’accès client auxquels l’appareil se connecte, au niveau d'une invite de commande CMD, taper iisreset et appuyer sur Entrée

2 - Recycler le pool d’applications ActiveSync

  1. Cliquer Démarrer, outils d’administration, gestionnaire IIS (Internet Information Services).
  2. Développer le nom du serveur, sélectionner Pools d’applications puis cliquer droit sur MSExchangeSyncAppPool et sélectionner Recycler

3 : Configurer l’appareil pour utiliser un mode de synchronisation manuel

il est aussi possible, selon l'appareil, de modifier les paramètres de synchronisation en manuelle pour que la connexion soit réinitialisée. Ainsi, une nouvelle connexion sera initiée la prochaine tentative de synchronisation manuelle. 

 4 - Redémarrer l’appareil mobile

Eteindre l’appareil et attendre quelques instants, puis démarrer le.

 

Activer son Windows Server Eval Version avec une clé de licence

Introduction

La clé d’installation de Windows server se trouve sur le portal admin office rubrique facturation > vos produits. Elle est destinée à l’installation de Windows DTC 16 Cores. J'utilise un ISO en version d’évaluation.

Eval Version

Lorsque l’installation se fait en version d’évaluation il est possible d’upgrader de Standard Edition vers DataCenter Editiion, pas l’inverse. 
Pour connaitre la version actuelle de l’édition : 

> dism /online /get-currentedition 

PS C:\Windows\system32> dism /online /get-currentedition
Outil Gestion et maintenance des images de déploiement
Version : 10.0.17763.3406 
Version de l’image : 10.0.17763.4377 
Édition actuelle : 
Édition actuelle : ServerStandardEval 
L’opération a réussi.

Pour connaitre les versions disponibles à l’upgrade  : DISM /online /Get-TargetEditions 

C:\Windows\system32> dism /online /get-targeteditions:serverStandard 

Outil Gestion et maintenance des images de déploiement
Version : 10.0.17763.3406 
Version de l’image : 10.0.17763.4377 
Éditions vers lesquelles une mise à niveau peut être effectuée : 
Édition cible : ServerStandard
Édition cible : ServerDatacenter 
L’opération a réussi.

Licenced version

Pour upgrader de la Version Eval à Full Version, il faut utiliser une public KMS (GVLK) key for Windows Server (2016 2019 2022)

dism /online /set-edition:ServerStandard /productkey:N69G4-B89J2-4G8F4-WWYCC-J464C /accepteula 

 

 

Pour convertir l’édition Standard Edition Eval à Datacenter Full 

dism /online /set-edition:ServerDatacenter /productkey:WMDGN-G9PQG-XVVXX-R3X43-63DFG /accepteula 

Deployment Image Servicing and Management tool
Version: 10.0.17763.3406 
Image Version: 10.0.17763.4377 
Starting to update components...
Starting to install product key...
Finished installing product key.
Removing package Microsoft-Windows-ServerDatacenterEvalEdition~31bf3856ad364e35~amd64~~10.0.17763.1
[==========================100.0%==========================]
Finished updating components.
Starting to apply edition-specific settings...
Finished applying edition-specific settings.
The operation completed successfully.
Restart Windows to complete this operation.
Do you want to restart the computer now? (Y/N)

PUne fois en Full Version, on peut alors l’activer avec la licence définitive
slmgr.vbs /upk
slmgr.vbs /cpky
slmgr.vbs /ipk 
xxxxx-xxxxx-xxxxx-xxxxx-xxxxx 

Ou en mode GUI, Settings >system>Activation

 

Remonter son interface SD RED Sophos.

  1. Contexte:

    Lors d’une mise à jour Firmware, Les FW XGS4300 redémarrent et deviennent tour à tour master, secondaire. Certaines ressources basculées ne rebasculent pas sur le master et restent en UP sur le secondaire. Les ressources touchées sont APs et boitier SD-RED. Il faut alors supprimer puis ajouter l'interface pour le remonter.

  2. Suppression de l'interface

    Pour faire rebasculer la ressource sur le master il est nécessaire de la supprimer et la remonter. Les reboots ou hard reset ne suffisent pas. La particularité est que le boitier Red fourni un PIN à conserver lors de sa suppression et le demande au moment de l’ajout par la suite. Il faut penser à récupérer la plage DHCP créée pour qu’elle fournisse une IP du scope. Lors de la suppression la plage DHCP disparait. Network > Dhcp

    Mémoriser les paramètres sur le maître et le fameux pin. Network > Interface > RED.
    Le pin viable est le dernier fonctionnel donc RED actif sur le secondaire. Le pin sera donc aussi celui du secondaire. 

  3. Ajout de l'interface

    Cliquer sur Add, renseigner les paramètres mémorisés branch name, Type, Red ID, Tunnel ID, Unlock code, Firewall IP, 2nd FW IP, sans oublier la particularité du pin de verrouillage. Sans bascule c’est celui du primaire. Si bascule et up sur le secondaire utiliser le pin du secondaire; Sauvegarder. 

    Au redémarrage ou reset du boitier Red à confirmer, il s’enregistre sur le Cloud Sophos récupère sa config et apparait en up. 
    Allez dans Network > Dhcp pour ajouter une plage DHCP pour ce Red.

    Les ressources connectées à ce RED seront dans la plage paramétrée.

[AD] Impossible de supprimer un objet Ordinateur dans AD

Lorsque vous essayez de supprimer un objet obsolète de type ordinateur depuis Active Directory, vous recevez le message suivant :

L’objet %COMPUTERNAME% est un conteneur et contient d’autres objets. Voulez-vous vraiment supprimer l’objet %COMPUTERNAME% et les objets qu’il contient ? Cette opération peut prendre longtemps si %COMPUTERNAME% contient un grand nombre d’objets.

Pour déterminer quels sous-objets ce message faisait référence, accédez à la console Utilisateurs et ordinateurs Active Directory,  sélectionnez Affichage --> Utilisateur, groupes et ordinateurs en tant que conteneurs

Trouvez par la suite l'objet en question et développez le nom de l'objet à gauche afin de trouvez le sous-objet.

Identifiez le sous-objet trouvé (s'il est encore utilisé / en production ou pas) puis vous pouvez confirmer la suppression en toute sécurité l'objet ordinateur, ainsi que son sous-objet