Identifier et gérer les comptes locaux inutilisés sur les systèmes Windows

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

Obtenez l’accès

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.

Pour aller plus loin

Pour créer une équipe informatique efficace et performante, il est essentiel d'avoir une solution centralisée qui joue le rôle de nœud principal pour vos services. NinjaOne permet aux équipes informatiques de surveiller, gérer, sécuriser et prendre en charge tous les appareils, où qu'ils soient, sans avoir besoin d'une infrastructure complexe sur site. Pour en savoir plus sur NinjaOne Endpoint Management, participez à une visite guidée, ou profitez d'un essai gratuit de la plateforme NinjaOne.

Catégories :

Vous pourriez aussi aimer

×

Voir NinjaOne en action !

En soumettant ce formulaire, j'accepte la politique de confidentialité de NinjaOne.

Termes et conditions NinjaOne

En cliquant sur le bouton “J’accepte” ci-dessous, vous indiquez que vous acceptez les termes juridiques suivants ainsi que nos conditions d’utilisation:

  • Droits de propriété: NinjaOne possède et continuera de posséder tous les droits, titres et intérêts relatifs au script (y compris les droits d’auteur). NinjaOne vous accorde une licence limitée pour l’utilisation du script conformément à ces conditions légales.
  • Limitation de l’utilisation: Les scripts ne peuvent être utilisés qu’à des fins personnelles ou professionnelles internes légitimes et ne peuvent être partagés avec d’autres entités.
  • Interdiction de publication: Vous n’êtes en aucun cas autorisé à publier le script dans une bibliothèque de scripts appartenant à, ou sous le contrôle d’un autre fournisseur de logiciels.
  • Clause de non-responsabilité: Le texte est fourni “tel quel” et “tel que disponible”, sans garantie d’aucune sorte. NinjaOne ne promet ni ne garantit que le script sera exempt de défauts ou qu’il répondra à vos besoins ou attentes particulières.
  • Acceptation des risques: L’utilisation du script est sous votre propre responsabilité. Vous reconnaissez qu’il existe certains risques inhérents à l’utilisation du script, et vous comprenez et assumez chacun de ces risques.
  • Renonciation et exonération de responsabilité: Vous ne tiendrez pas NinjaOne pour responsable des conséquences négatives ou involontaires résultant de votre utilisation du script, et vous renoncez à tout droit ou recours légal ou équitable que vous pourriez avoir contre NinjaOne en rapport avec votre utilisation du script.
  • EULA: Si vous êtes un client de NinjaOne, votre utilisation du script est soumise au contrat de licence d’utilisateur final qui vous est applicable (End User License Agreement (EULA)).