Principais conclusões
- O NETBIOS é um protocolo de rede legado do Windows com possíveis riscos de segurança.
- O script do PowerShell fornecido automatiza a configuração do NETBIOS nos adaptadores de rede.
- O script verifica se há direitos administrativos, garantindo uma execução elevada.
- Ele usa métodos CIM modernos, mas recorre ao WMI para sistemas mais antigos.
- A automação, como esse script, oferece consistência e reduz os erros humanos em comparação com as configurações manuais.
- Sempre teste os scripts em ambientes não críticos antes da implementação completa.
- A configuração adequada do NETBIOS é essencial para a segurança da rede, especialmente com sistemas legados.
- Ferramentas como o NinjaOne podem integrar e otimizar esses scripts para o gerenciamento centralizado de TI.
No cenário em evolução do gerenciamento de redes, é essencial entender como definir as configurações que afetam os protocolos de comunicação. Entre eles, destaca-se o NETBIOS (Network Basic Input/Output System), devido ao seu uso generalizado em redes Windows por motivos de legado. Esta postagem se aprofunda em um script do PowerShell feito sob medida para configurar o NETBIOS no Windows em adaptadores de rede.
Histórico
O NETBIOS tem sido um elemento básico na rede do Windows há anos, desempenhando um papel na resolução de nomes locais. No entanto, ele pode representar um risco potencial à segurança se não for verificado. Os profissionais de TI e os provedores de serviços gerenciados (MSPs) geralmente precisam gerenciar e configurar centralmente as definições do NETBIOS, seja para otimizar o desempenho da rede, garantir a conformidade ou aumentar a segurança. É nesse ponto que os scripts do PowerShell, como o fornecido, entram em ação, oferecendo uma solução robusta e automatizável.
O roteiro
#Requires -Version 2.0
<#
.SYNOPSIS
Disables or Enables NETBIOS on all network adapters
.DESCRIPTION
Disables or Enables NETBIOS on all network adapters
.EXAMPLE
No parameters needed.
Sets the default of "Use NetBIOS setting from the DHCP server" on all network adapters
.EXAMPLE
-Disable
Disables NETBIOS on all network adapters
.EXAMPLE
-Enable
Enables NETBIOS on all network adapters
.OUTPUTS
None
.NOTES
General notes
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).
.COMPONENT
ProtocolSecurity
#>
[CmdletBinding()]
param (
[Parameter()]
[switch]
$Enable,
[Parameter()]
[switch]
$Disable
)
begin {
function Test-IsElevated {
$id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
$p = New-Object System.Security.Principal.WindowsPrincipal($id)
$p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
}
}
process {
if (-not (Test-IsElevated)) {
Write-Error -Message "Access Denied. Please run with Administrator privileges."
exit 1
}
$NetBios = if ($PSBoundParameters.ContainsKey("Enable")) {
# 1 - Enable NetBIOS over TCP/IP
1
}
elseif ($PSBoundParameters.ContainsKey("Disable")) {
# 2 - Disable NetBIOS over TCP/IP
2
}
elseif ($PSBoundParameters.ContainsKey("Enable") -and $PSBoundParameters.ContainsKey("Disable")) {
Write-Error "Can not enable and disable at the same time."
exit 1
}
else {
# 0 - Use NetBIOS setting from the DHCP server
0
}
if ($(Get-Command "Get-CimInstance" -ErrorAction SilentlyContinue).Name -like "Get-CimInstance") {
$Arguments = @{
TcpipNetbiosOptions = [UInt32]($NetBios)
}
$Session = New-CimSession
$Query = 'Select * From Win32_NetworkAdapterConfiguration'
$Response = Invoke-CimMethod -Query $Query -Namespace Root/CIMV2 -MethodName SetTcpipNetbios -Arguments $Arguments -CimSession $Session
if ($Response.ReturnValue -is [int] -and $Response.ReturnValue -gt 1) {
# 0 and 1 are success return values
# https://powershell.one/wmi/root/cimv2/win32_networkadapterconfiguration-SetTcpipNetbios#return-value
Write-Error "SetTcpipNetbios returned error code ($($Response.ReturnValue))"
Remove-CimSession -CimSession $Session
exit 1
}
Write-Host "Netbios set to $NetBios"
Remove-CimSession -CimSession $Session
}
else {
$Adapters = $(Get-WmiObject -Class win32_networkadapterconfiguration)
Foreach ($Adapter in $Adapters) {
try {
$Adapter.SetTcpipNetbios($NetBios)
}
catch {
# Do nothing if error occurs
}
$Adapter | Select-Object Description, TcpipNetbiosOptions
}
}
}
end {}
Acesse mais de 300 scripts no NinjaOne Dojo
Detalhamento
O script apresentado é desenvolvido no PowerShell, uma ferramenta potente nas mãos dos administradores. Aqui está um detalhamento passo a passo:
- Comentários iniciais e metadados: Eles fornecem uma descrição, exemplos de uso e outros metadados sobre a funcionalidade do script.
- Vinculação de Cmdlet: Permite que as funções avançadas atuem de forma semelhante aos cmdlets.
- Parâmetros: Define dois comutadores, “Enable” e “Disable”, para gerenciar o NETBIOS.
- Verificação da elevação: É fundamental executar esses scripts com direitos administrativos. A função “Test-IsElevated” garante isso verificando se o usuário atual possui privilégios administrativos.
- Configuração do NETBIOS: Com base na chave fornecida (Enable/Disable), o script define a opção NETBIOS relevante.
- Implementação: Se o comando “Get-CimInstance” existir (típico nas versões modernas do PowerShell), ele usará o CIM (Common Information Model) para configurar os adaptadores de rede. Caso contrário, ele volta a usar o método WMI (Windows Management Instrumentation) mais antigo.
- Feedback & Cleanup: O script fornece feedback sobre as configurações aplicadas e limpa todas as sessões criadas.
Casos de uso em potencial
Imagine um MSP supervisionando a infraestrutura de TI de uma empresa que está expandindo sua área de atuação por meio de uma fusão com outra entidade. Eles têm uma combinação de sistemas modernos e legados. Esse MSP precisa padronizar as configurações do NETBIOS em centenas de máquinas para garantir uma interconexão perfeita entre redes e reduzir possíveis vulnerabilidades de segurança. Ao implementar esse script, eles podem automatizar o processo, economizando tempo e minimizando o erro humano.
Comparações
Embora existam ferramentas baseadas em GUI e métodos manuais para definir as configurações do NETBIOS em máquinas individuais, a vantagem desse script está na automação. Ele pode ser integrado a scripts de implantação maiores ou a ferramentas de gerenciamento de sistemas. Em comparação com as configurações manuais, esse script reduz a chance de supervisão e fornece um método consistente e reproduzível.
Implicações
A configuração incorreta do NETBIOS pode deixar as máquinas abertas a vários ataques, especialmente em redes abertas. Garantir as configurações corretas é fundamental para a segurança de TI. Embora o NETBIOS seja menos predominante nas redes modernas, os sistemas legados ainda dependem dele, o que torna significativo o gerenciamento de suas configurações.
Recomendações
- Sempre execute scripts em um ambiente de teste antes de implementá-los na produção.
- Certifique-se de entender cada componente do script para solucionar problemas, se necessário.
- Revise e atualize regularmente os scripts à medida que os padrões de rede evoluem.
Considerações finais
Ferramentas de automação, como o NinjaOne, simplificam ainda mais os processos e podem integrar scripts como esse, fornecendo controle centralizado, relatórios e monitoramento. À medida que navegamos no intrincado mundo das configurações de rede, as ferramentas e os scripts que simplificam as tarefas se tornam inestimáveis para os profissionais de TI em todos os lugares.