Si vous êtes un professionnel de l’informatique ou un fournisseur de services gérés (MSP), le concept de comptes locaux inutilisés vous dit quelque chose. En termes simples, les comptes locaux inutilisés sont des comptes qui n’ont pas été utilisés pendant une certaine période, souvent définie par la politique de votre entreprise. Ces comptes apparemment inoffensifs peuvent en fait représenter un risque important pour la sécurité, en servant de porte dérobée aux attaquants pour obtenir un accès non autorisé à un système. Aujourd’hui, nous explorons un script PowerShell conçu pour identifier et gérer ces failles de sécurité potentielles.
Le script : Examen détaillé
Le script Test-UnusedLocalAccounts.ps1 fonctionne sous PowerShell 5.1 et offre une approche simplifiée de la gestion des comptes inactifs. Il commence par vérifier si la commande Get-LocalUser est disponible sur votre système. Cette étape est cruciale, car l’ensemble de la fonctionnalité repose sur cette commande. Une fois la confirmation obtenue, le script passe en revue tous les comptes locaux afin de repérer ceux qui n’ont pas été actifs depuis un certain nombre de jours (30 jours par défaut). La cerise sur le gâteau ? Le script produit une liste bien organisée de ces comptes inactifs directement dans votre console.
Le script : Script de condition pour les comptes locaux inutilisés sous Windows
#Requires -Version 5.1 <# .SYNOPSIS Condition script for unused local account on windows .DESCRIPTION Condition script for unused local account on windows .EXAMPLE -Days 30 Checks for accounts that have not logged in for more than 30 days .EXAMPLE PS C:> Test-UnusedLocalAccounts.ps1 -Days 30 Checks for accounts that have not logged in for more than 30 days .OUTPUTS None .NOTES Minimum supported OS: Windows 10, 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 ( [Parameter()] [int] $Days = 30 ) begin { function Test-StringEmpty { param([string]$Text) # Returns true if string is empty, null, or whitespace process { [string]::IsNullOrEmpty($Text) -or [string]::IsNullOrWhiteSpace($Text) } } if (-not $(Test-StringEmpty -Text $env:Days)) { $Days = $env:Days } } process { # Check if Get-LocalUser is available on this system if (-not $(Get-Command -Name "Get-LocalUser" -ErrorAction SilentlyContinue)) { Write-Error "The command Get-LocalUser is not available on this system." exit 2 } $UnusedAccounts = Get-LocalUser | Where-Object { ($(Test-StringEmpty -Text $_.LastLogon) -or $_.LastLogon -le (Get-Date).AddDays(-$Days)) -and $_.Enabled } | Select-Object Name, LastLogon | ForEach-Object { [PSCustomObject]@{ Name = $_.Name LastLogon = $_.LastLogon } } if ($UnusedAccounts) { Write-Host "Accounts that have not logged in for the past $Days days:" $UnusedAccounts | ForEach-Object { Write-Host "$($_.Name): $($_.LastLogon)" } exit 1 } exit 0 } end { $ScriptVariables = @( [PSCustomObject]@{ name = "Days" calculatedName = "days" required = $false defaultValue = [PSCustomObject]@{ type = "TEXT" value = "30" } valueType = "TEXT" valueList = $null description = "Accounts older than this number in days." } ) }
Accédez à plus de 700 scripts dans le Dojo NinjaOne
Avantages principaux : Au-delà de l’essentiel
Sécurité
Comme nous l’avons déjà mentionné, les comptes locaux inutilisés sont souvent laissés sans surveillance, devenant ainsi des points d’entrée potentiels pour les cybercriminels. Ce script permet d’identifier ces comptes de manière proactive.
Efficacité
Ce qui pourrait prendre des heures de travail manuel ne prend que quelques minutes avec ce script. L’efficacité est essentielle, en particulier pour les MSP qui gèrent plusieurs comptes clients.
Flexibilité
Vous n’êtes pas limité à une période de 30 jours. Vous pouvez personnaliser le délai en fonction des politiques de votre entreprise.
Fonctionnalités avancées
S’il est essentiel d’identifier les comptes inutilisés, il est tout aussi important d’agir sur la base de ces informations. Le script peut également être configuré pour exporter les résultats dans un fichier ou envoyer une notification par e-mail lorsque des comptes inutilisés sont découverts. Cela vous permet de mieux suivre et gérer ces comptes de manière efficace.
Comment l’utiliser
Pour déployer le script, entrez la commande suivante :
Vous pouvez également être intéressé par notre article, Comment désactiver un compte utilisateur local dans Windows à l’aide de PowerShell.
NinjaOne : Agrandissez votre arsenal
Bien que le script PowerShell dont nous avons parlé soit un outil inestimable, il n’est qu’une pièce du puzzle. Des plateformes comme NinjaOne offrent une approche plus complète, vous permettant de gérer non seulement les comptes locaux inutilisés, mais aussi l’ensemble de votre écosystème informatique. NinjaOne peut même exécuter des scripts tels que Test-UnusedLocalAccounts.ps1 sur plusieurs systèmes simultanément.
Remarques finales
Dans le vaste monde de la cybersécurité, chaque petit détail compte. Les comptes locaux inutilisés sur les systèmes Windows peuvent sembler anodins, mais ils peuvent devenir votre talon d’Achille si vous ne vous en occupez pas. Le script Test-UnusedLocalAccounts.ps1 est une solution performante et automatisée à cet aspect souvent négligé de la gestion du système. Associés à des plateformes telles que NinjaOne et à d’autres outils, les professionnels de l’informatique et les MSP disposent d’une boîte à outils complète pour s’assurer que leurs réseaux ne sont pas compromis.
Voilà, tout est dit ! Équipez-vous des bons outils et des bonnes connaissances pour protéger efficacement votre environnement informatique. Continuez à suivre nos publications pour en savoir plus sur les solutions informatiques d’entreprise.