Se você é um profissional de TI ou um provedor de serviços gerenciados (MSP), o conceito de contas locais não utilizadas deve lhe chamar a atenção. Em termos simples, as contas locais não utilizadas são contas que não foram usadas por um período de tempo, geralmente definido pela política da sua organização. Essas contas aparentemente inócuas podem, na verdade, representar um risco significativo à segurança, servindo como uma porta dos fundos para que os invasores obtenham acesso não autorizado a um sistema. Hoje, estamos explorando um script do PowerShell desenvolvido para identificar e gerenciar essas possíveis brechas de segurança.
O roteiro: Um exame detalhado
O script Test-UnusedLocalAccounts.ps1 opera no PowerShell 5.1 e oferece uma abordagem simplificada para o gerenciamento de contas inativas. Ele inicia sua operação verificando se o comando Get-LocalUser está disponível em seu sistema. Isso é fundamental porque toda a funcionalidade é construída com base nesse comando. Uma vez confirmado, o script percorre todas as contas locais para identificar aquelas que não tiveram nenhuma atividade por um número especificado de dias (30 dias por padrão). A cereja do bolo? O script gera uma lista bem organizada dessas contas inativas diretamente no seu console.
O roteiro: Script de condição para contas locais não utilizadas no 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."
}
)
}
Acesse mais de 300 scripts no NinjaOne Dojo
Principais benefícios: Além do básico
Segurança
Conforme mencionado anteriormente, as contas locais não utilizadas geralmente não são monitoradas, tornando-se pontos de entrada em potencial para os criminosos cibernéticos. Esse script ajuda a identificar proativamente essas contas.
Eficiência
O que poderia levar horas de trabalho manual leva minutos com esse script. Especialmente para os MSPs que supervisionam várias contas de clientes, a eficiência é fundamental.
Flexibilidade
Você não está preso a um período de 30 dias. Você pode personalizar o período de tempo de acordo com suas políticas organizacionais.
Recursos estendidos
Embora seja fundamental identificar as contas não utilizadas, é igualmente importante agir com base nessas informações. O script também pode ser configurado para exportar os resultados para um arquivo ou enviar uma notificação por e-mail quando forem descobertas contas não utilizadas. Isso aumenta sua capacidade de rastrear e gerenciar essas contas com eficiência.
Como usá-lo
Para implantar o script, digite o seguinte comando:
Talvez você também se interesse pela nossa postagem no blog, Como desativar uma conta local no Windows usando o PowerShell.
NinjaOne: Expandindo seu arsenal
Embora nosso script do PowerShell discutido seja uma ferramenta inestimável, ele é apenas uma peça do quebra-cabeça. Plataformas como o NinjaOne oferecem uma abordagem mais abrangente, permitindo que você gerencie não apenas contas locais não utilizadas, mas todo o seu ecossistema de TI. O NinjaOne pode até mesmo executar scripts como Test-UnusedLocalAccounts.ps1 em vários sistemas simultaneamente.
Observações finais
No grande esquema da segurança cibernética, cada pequeno detalhe conta. Contas locais não utilizadas em sistemas Windows podem parecer triviais, mas podem se tornar seu calcanhar de Aquiles se não forem resolvidas. O script Test-UnusedLocalAccounts.ps1 é uma solução robusta e automatizada para esse aspecto do gerenciamento do sistema que muitas vezes é negligenciado. E, quando combinados com plataformas como o NinjaOne e outras ferramentas, os profissionais de TI e os MSPs têm um amplo conjunto de ferramentas para garantir que suas redes permaneçam sem comprometimento.
Então, aí está. Equipe-se com as ferramentas e o conhecimento certos para proteger seu ambiente de TI de forma eficaz. Continue acompanhando este espaço para obter mais soluções de TI empresarial.