Comment configurer les alertes par e-mail pour les connexions administrateur sous Windows 10/11 et Windows Server
J’ai enfin trouvé comment configurer Windows pour qu’il envoie des alertes par e-mail à chaque connexion d’un administrateur. C’est un peu bizarre, mais cette configuration permet de détecter rapidement les activités suspectes, surtout si vous gérez plusieurs serveurs ou postes de travail. Le processus consiste à créer un script PowerShell qui envoie un e-mail à chaque connexion, puis à intégrer ce script au processus de connexion du système via la stratégie de groupe. En clair, cela permet de recevoir des notifications en temps réel, ce qui peut vous éviter bien des tracas en cas de suspicion d’accès non autorisé ou si vous souhaitez simplement surveiller vos comptes d’administrateur.
Comment configurer Windows pour qu’il vous envoie un e-mail lorsqu’une personne se connecte en tant qu’administrateur ou même en tant qu’utilisateur lambda ?
-
Exigence : Un serveur SMTP pour l’envoi de courriels.
Création du script PowerShell qui s’exécute à la connexion
Cette partie est essentielle. Vous écrirez un script qui vérifie si l’utilisateur connecté fait partie du groupe Administrateurs local, et lui envoie un e-mail le cas échéant. Sur certaines configurations, ce script peut également s’appliquer à n’importe quel utilisateur si vous le modifiez, mais pour l’instant, concentrez-vous sur les connexions administrateur. Le script est écrit en PowerShell et doit être placé dans un dossier dédié (par exemple, `/usr/local/bin` C:\Windows\System32\Scripts) pour pouvoir y accéder facilement par la suite. Attention : Windows complique souvent les choses, vous devrez donc ajuster certains paramètres de stratégie d’exécution pour que les scripts fonctionnent correctement.
# Info : Envoie un e-mail lors de la connexion de l’administrateur
# Identifiants SMTP
$Username = » [email protected] » # adresse e-mail de l’expéditeur
$PlainPassword = « senderpassword » # sender password
$SecurePassword = ConvertTo-SecureString $PlainPassword -AsPlainText -Force
$Cred = New-Object System. Management. Automation. PSCredential ($Username, $SecurePassword)
# Informations utilisateur et serveur
$UtilisateurConnecté = $env:USERNAME
$Ordinateur = $env:NOM_ORDINATEUR
$LocalTime = Get-Date -Format « yyyy-MM-dd HH:mm:ss »
# Vérifier l’appartenance au groupe d’administrateurs (SID des administrateurs : S-1-5-32-544)
$adminSid = New-Object System. Security. Principal. SecurityIdentifier(« S-1-5-32-544 »)
$identité = [System. Security. Principal. WindowsIdentity]::GetCurrent()
$principal = New-Object System. Security. Principal. WindowsPrincipal($identity)
$isAdmin = $principal. IsInRole($adminSid)
si ($isAdmin) {
# Rédiger le contenu de l’e-mail
$To = » [email protected] » # adresse e-mail du destinataire
$Subject = » SERVERNAME Alerte de connexion : $LoggedInUser »
$Body = @ » L’utilisateur $LoggedInUser s’est connecté à $Computer à $LocalTime. »@
# Envoyer un e-mail
Envoyer-MailMessage -De $Username -À $To -Subject $Subject -Body $Body -SmtpServer » mail.domain.com » -Port 587 -UseSsl -Credential $Cred
# Journalisation locale (facultatif)
Ajouter-Contenu -Chemin » C:\Windows\System32\Scripts\UserLoginLog.txt » -Valeur « $LocalTime – $LoggedInUser connecté sur $Computer »
}
Après avoir rédigé votre script, enregistrez-le EmailAlertForAdminLogins.ps1dans le dossier Scripts. Ce script vérifie si l’utilisateur actuel est Administrateur et, le cas échéant, vous envoie les détails par e-mail. Sur certaines machines, il peut être nécessaire de modifier légèrement la stratégie d’exécution (par exemple, l’exécuter Set-ExecutionPolicy RemoteSigneddans PowerShell en tant qu’administrateur).
Je teste si ça fonctionne.
Avant de l’intégrer à la connexion automatique, essayez de l’exécuter manuellement. Faites un clic droit sur le fichier de script et sélectionnez « Exécuter avec PowerShell ». Un e-mail devrait vous être envoyé si vous êtes connecté en tant qu’administrateur. Si cela ne fonctionne pas, vérifiez vos paramètres SMTP et assurez-vous que votre serveur de messagerie autorise le relais depuis son adresse IP ou ses identifiants. Certains fournisseurs de messagerie bloquent les applications inconnues ; vous devrez peut-être configurer un mot de passe d’application ou activer le relais SMTP.
Intégration du script à l’ouverture de session Windows via la stratégie de groupe
C’est là que les choses se compliquent un peu. Vous devez indiquer à Windows d’exécuter ce script à chaque ouverture de session, via la stratégie de groupe locale. Sur un système local, appuyez sur Windows + R, saisissez gpedit.msc, puis appuyez sur Entrée. Accédez ensuite à :
- Configuration utilisateur > Paramètres Windows > Scripts (Ouverture/Fermeture de session) > Ouverture de session
Dans les propriétés de l’ouverture de session, cliquez sur l’onglet Scripts PowerShell, puis sur Ajouter. Accédez à l’emplacement où vous avez enregistré votre EmailAlertForAdminLogins.ps1script. Astuce : pour les paramètres du script, ajoutez -WindowStyle Hidden -ExecutionPolicy Bypassles options nécessaires pour que votre script s’exécute discrètement, sans afficher de fenêtres contextuelles ni être bloqué par les stratégies d’exécution.
Ensuite, appliquez vos paramètres, fermez l’éditeur, puis redémarrez l’ordinateur ou exécutez le script gpupdate /forcedans l’invite de commandes.À la prochaine connexion, le script devrait s’exécuter. Si l’utilisateur est administrateur, il recevra un e-mail et une entrée sera enregistrée localement dans le journal. Sur certaines configurations, il peut être nécessaire d’ajuster les règles d’exécution ou les autorisations du script, notamment si celui-ci refuse de s’exécuter. La sécurité de Windows est très stricte concernant l’exécution de scripts à l’ouverture de session ; tenez-en compte.
Et si vous souhaitez étendre cette fonctionnalité à tous les utilisateurs, et pas seulement aux administrateurs (par exemple, pour être notifié à chaque connexion), vous pouvez remplacer la vérification administrateur par un script de connexion utilisateur plus général, comme dans le deuxième extrait de script fourni. Il est plus volumineux, mais utile pour une surveillance plus fine.
Bien sûr, ce n’est pas parfait, et parfois, sur certaines configurations, ces scripts peuvent ne pas s’exécuter immédiatement, ou des courriels peuvent être signalés comme indésirables. Mais bon, c’est un début — mieux que de deviner à l’aveuglette ce qui se passe avec les connexions des utilisateurs.
J’espère que ça aidera — ça a fonctionné sur ma machine, alors peut-être que ça épargnera aussi des maux de tête à quelqu’un d’autre.
Résumé
- J’ai créé un script PowerShell pour envoyer un e-mail lors de la connexion administrateur.
- J’ai testé le script manuellement avant de l’automatiser.
- Intégré à l’ouverture de session Windows via la stratégie de groupe
- Notifications attendues, plus journaux locaux
Conclure
Recevoir des alertes par e-mail lors de la connexion n’est pas toujours simple, surtout avec les politiques de sécurité qui bloquent les scripts. Cependant, avec un peu de patience, la mise en place d’un script dédié et son intégration via la stratégie de groupe peuvent s’avérer très efficaces. Il est important de tenir compte des limitations, telles que les restrictions SMTP ou les politiques d’exécution de scripts, et de réaliser des tests approfondis. Sur une machine, le script peut fonctionner du premier coup, tandis que sur une autre, il faudra peut-être attendre un redémarrage ou une actualisation de la stratégie. Néanmoins, c’est une méthode plutôt astucieuse pour surveiller les connexions, notamment pour les serveurs dépourvus d’outils SIEM ou de surveillance dédiés. Bonne chance ! J’espère que cela vous évitera de longues heures de recherche !