Gerenciando & Configurando o NETBIOS no Windows usando o PowerShell

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

Obter acesso

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.

FAQs

Sim, desde que você tenha o PowerShell, mas sempre teste primeiro em um computador não crítico.

O script tem verificações incorporadas e emitirá um erro se você tentar isso.

Sim, o script fornece feedback sobre a configuração NETBIOS aplicada.

Próximas etapas

Montar uma equipe de TI eficaz requer uma solução centralizada que seja a principal ferramenta de entrega de serviços. Com NinjaOne, a TI monitora, gerencia, protege e oferece suporte a todos os dispositivos, onde quer que estejam, dispensando infraestrutura complexa no local.

Saiba mais sobre a solução NinjaOne Remote Script Deployment, agende uma demonstração, ou inicie sua avaliação gratuita da plataforma NinjaOne.

Categories:

You might also like

Uso do PowerShell para obter a localização do dispositivo usando a API de geolocalização do Google

Como configurar o Windows Defender SmartScreen usando o PowerShell

Exigir senha após a suspensão em máquinas Windows: Script do PowerShell

Ativar ou desativar o protocolo de área de trabalho remota (RDP) em estações de trabalho usando o PowerShell

Como atualizar as políticas de senha do Windows usando o PowerShell

Gerenciando & Configurando o NETBIOS no Windows usando o PowerShell

NinjaOne Terms & Conditions

By clicking the “I Accept” button below, you indicate your acceptance of the following legal terms as well as our 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 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).