So deaktivieren Sie SMBv1 (Server Message Block Protocol) mit PowerShell

Das Server Message Block Protocol (SMB) gibt es schon seit geraumer Zeit und dient als Rückgrat für die gemeinsame Nutzung von Dateien und verschiedene andere Netzwerkoperationen. Die früheste Version, SMBv1, wird jedoch aufgrund einer Vielzahl von Sicherheitslücken als Belastung angesehen. Wenn Sie ein IT-Experte oder ein Managed Service Provider (MSP) sind, sollte die Gewährleistung der Netzwerksicherheit Ihr größtes Anliegen sein. Wie kann man also SMBv1 effektiv deaktivieren?

Was macht das Skript?

Das vorliegende PowerShell-Skript wurde zu einem ganz bestimmten Zweck entwickelt: zum Deaktivieren von SMBv1 in Windows-Umgebungen. Es verwendet eine Reihe von integrierten PowerShell-Cmdlets und Registrierungsmanipulationen, um sicherzustellen, dass SMBv1 vollständig deaktiviert ist. Das Skript kann in einer Windows 10- oder Windows Server 2016-Umgebung oder später ausgeführt werden, was es sehr vielseitig und wertvoll für jedes moderne Windows-System macht.

Das Skript: SMBv1 deaktivieren

#Requires -Version 5.1

<#
.SYNOPSIS
    Disables SMB v1
.DESCRIPTION
    Disables SMB v1 via Get-WindowsOptionalFeature, Set-SmbServerConfiguration, or Registry
.EXAMPLE
    No parameters needed.
.EXAMPLE
    PS C:> Disable-SMBv1.ps1
    No parameters needed.
.OUTPUTS
    None
.NOTES
    Minimum OS Architecture Supported: Windows 10, Windows 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 ()

begin {
    function Test-IsElevated {
        $id = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $p = New-Object System.Security.Principal.WindowsPrincipal($id)
        if ($p.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator))
        { Write-Output $true }
        else
        { Write-Output $false }
    }
    function Set-ItemProp {
        param (
            $Path,
            $Name,
            $Value,
            [ValidateSet("DWord", "QWord", "String", "ExpandedString", "Binary", "MultiString", "Unknown")]
            $PropertyType = "DWord"
        )
        # Do not output errors and continue
        $ErrorActionPreference = [System.Management.Automation.ActionPreference]::SilentlyContinue
        if (-not $(Test-Path -Path $Path)) {
            # Check if path does not exist and create the path
            New-Item -Path $Path -Force | Out-Null
        }
        if ((Get-ItemProperty -Path $Path -Name $Name)) {
            # Update property and print out what it was changed from and changed to
            $CurrentValue = Get-ItemProperty -Path $Path -Name $Name
            try {
                Set-ItemProperty -Path $Path -Name $Name -Value $Value -Force -Confirm:$false -ErrorAction Continue | Out-Null
            }
            catch {
                Write-Error $_
            }
            Write-Host "$Path$Name changed from $CurrentValue to $(Get-ItemProperty -Path $Path -Name $Name)"
        }
        else {
            # Create property with value
            try {
                New-ItemProperty -Path $Path -Name $Name -Value $Value -PropertyType $PropertyType -Force -Confirm:$false -ErrorAction Continue | Out-Null
            }
            catch {
                Write-Error $_
            }
            Write-Host "Set $Path$Name to $(Get-ItemProperty -Path $Path -Name $Name)"
        }
        $ErrorActionPreference = [System.Management.Automation.ActionPreference]::Continue
    }
    $Disable = 0
    # $Enable = 1 # Not Used
}
process {
    if (-not (Test-IsElevated)) {
        Write-Error -Message "Access Denied. Please run with Administrator privileges."
        exit 1
    }
    
    # Try using Get-WindowsOptionalFeature first
    if (-not $(Get-Command -Name "Get-WindowsOptionalFeature").Name -like "Get-WindowsOptionalFeature") {
        Write-Host "Get-WindowsOptionalFeature command not found. Continuing."
    }
    else {
        if ((Get-WindowsOptionalFeature -Online -FeatureName smb1protocol -ErrorAction SilentlyContinue).State -notlike "Disabled") {
            # Disables smb1protocol feature
            try {
                Disable-WindowsOptionalFeature -Online -FeatureName smb1protocol
                # Disabled SMB1, exit
                exit 0
            }
            catch {
                Write-Host "smb1protocol feature not found. Continuing."
            }
        }
    }

    if (-not $(Get-Command -Name "Get-SmbServerConfiguration").Name -like "Get-SmbServerConfiguration") {
        Write-Host "Get-SmbServerConfiguration command not found. Continuing."
        $Path = "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters"
        $Name = "SMB1"
        # https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/detect-enable-and-disable-smbv1-v2-v3#registry-editor
        # Sets SMB1 to 0
        Set-ItemProp -Path $Path -Name $Name -Value $Disable
    }
    if ((Get-SmbServerConfiguration).EnableSMB1Protocol) {
        try {
            Set-SmbServerConfiguration -EnableSMB1Protocol $false            
        }
        catch {
            Write-Host "Failed to disable SMBv1."
            exit 1
        }
    }
}
end {}

 

Zugriff auf über 300 Skripte im NinjaOne Dojo

Zugang erhalten

Sicherheitsprobleme im Zusammenhang mit SMBv1

SMBv1 ist für seine Sicherheitsmängel berüchtigt. Es war ein häufiges Ziel für verschiedene Arten von Angriffen, Ransomware und Datenschutzverletzungen. Wenn Sie SMBv1 aktivieren, ist das so, als würden Sie Ihre Haustür offen lassen; Sie laden damit nur Ärger ein. Dieses PowerShell-Skript behebt dieses Problem effektiv, indem es SMBv1 deaktiviert.

Zeit und Effizienz

Die manuelle Deaktivierung von SMBv1 kann eine zeitraubende Aufgabe sein, insbesondere in großen Netzwerkumgebungen. Dieses Skript automatisiert den Prozess und spart wertvolle Zeit und Mühe. Für MSPs, die mehrere Kundennetzwerke verwalten, ist dieses Tool ein Geschenk des Himmels.

Umfassender Ansatz

Das Skript versucht, SMBv1 über mehrere Wege zu deaktivieren, darunter das Cmdlet „Get-WindowsOptionalFeature“, das Cmdlet „Set-SmbServerConfiguration“ und direkte Änderungen in der Registrierung. Dadurch wird sichergestellt, dass das Protokoll auch dann deaktiviert wird, wenn eine der Methoden ausfällt oder auf dem betreffenden System nicht verfügbar ist.

So verwenden Sie das Skript „SMBv1 deaktivieren

Die Ausführung des Skripts ist einfach. Hier ist eine kurze Anleitung:

  1. Speichern Sie das Skript in einer Datei namens Disable-SMBv1.ps1.
  2. Öffnen Sie PowerShell als Administrator.
  3. Navigieren Sie zu dem Ordner, in dem Sie das Skript gespeichert haben.
  4. Führen Sie das Skript aus, indem Sie PS C:>.Disable-SMBv1.ps1 eingeben und die Eingabetaste drücken.

Vergewissern Sie sich, dass Sie über Administratorrechte verfügen, sonst wird das Skript abgebrochen, damit Sie nicht versehentlich Änderungen vornehmen, die Sie nicht vornehmen sollten.

Wer braucht dieses Skript?

  • IT-Fachleute: Wenn Sie für die Wartung eines Unternehmensnetzwerks oder auch nur eines kleineren Netzwerks verantwortlich sind, sollte dieses Skript zu Ihren Tools gehören. Damit können Sie den Prozess der Deaktivierung von SMBv1 auf mehreren Systemen in einem Schritt automatisieren.
  • Anbieter von verwalteten Diensten (MSPs): Für diejenigen, die mehrere Kundennetzwerke verwalten, kann die Möglichkeit, anfällige Protokolle wie SMBv1 schnell zu deaktivieren, eine zusätzliche Sicherheitsebene schaffen, die Ihren Service für Ihre Kunden noch wertvoller macht.

Einbindung des Skripts in NinjaOne

IT-Profis und Managed Service Provider (MSPs), die sich auf NinjaOne als Fernüberwachungs- und -verwaltungslösung verlassen, können dieses Skript in ihre regulären Wartungs- oder Sicherheitsprotokolle integrieren, um ihren Betrieb noch robuster zu gestalten.

Geplante Ausführung

Sie können die Ausführung des PowerShell-Skripts über die Scripting Engine von NinjaOne planen. Auf diese Weise stellen Sie sicher, dass SMBv1 automatisch auf allen neuen Systemen, die dem Netzwerk hinzugefügt werden, oder auf allen Systemen, die neu initialisiert werden, deaktiviert wird, wodurch eine einheitliche Sicherheitslage aufrechterhalten wird.

Überwachung und Warnungen

Mit den Warnfunktionen von NinjaOne können Sie benutzerdefinierte Warnungen erstellen, die Sie benachrichtigen, wenn das Skript erfolgreich gelaufen ist oder wenn es Probleme gibt. So erhalten Sie Echtzeit-Feedback und können bei Bedarf eingreifen.

Remote-Bereitstellung

Das Disable SMBv1 Script kann über NinjaOne auf mehreren Systemen eingesetzt werden. Dies ist besonders nützlich für MSPs, die eine Vielzahl von Netzen verwalten. Mit nur wenigen Klicks können Sie eine wichtige Sicherheitsrichtlinie für alle verwalteten Endpunkte durchsetzen.

Compliance-Berichterstattung

Für Compliance-Anforderungen wie GDPR oder HIPAA, bei denen die Deaktivierung veralteter und anfälliger Protokolle vorgeschrieben sein kann, können Sie mit diesem Skript über NinjaOne nahtlos nachweisen, dass angemessene Sicherheitsmaßnahmen vorhanden sind. Mit den Berichtsfunktionen von NinjaOne können Sie umfassende Berichte für Prüfpfade erstellen.

Abschließende Überlegungen

Die Deaktivierung von SMBv1 sollte für jedes Unternehmen, das die Netzwerksicherheit ernst nimmt, eine Selbstverständlichkeit sein. Dieses PowerShell-Skript bietet eine zuverlässige, effiziente und umfassende Methode für genau diese Aufgabe. In Anbetracht der dringenden Notwendigkeit, die Sicherheitsprotokolle in der heutigen IT-Landschaft von Unternehmen zu erhöhen, sollte die Einführung dieses Skripts oberste Priorität haben.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool für die Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, all ihre Geräte zu überwachen, verwalten, sichern und zu unterstützen, unabhängig von ihrem Ort und komplexer Infrastruktur vor Ort.

Erfahren Sie mehr über NinjaOne Endpoint Management schauen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion der NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

Automatisierung von Hyper-V-Prüfpunkt-Warnmeldungen mit PowerShell

Umfassender Guide zur Überwachung vom gemeinsam genutzten Hyper V-Speicherplatz mit PowerShell

IT-Sicherheits-Guide: Die Überprüfung von Datei-Hash-Werten mit PowerShell

Umfassender Guide für die Proxmox-Cluster-Statusüberwachung unter Linux

Umfassender Guide zum Auflisten von Browsererweiterungen unter macOS

Schritt-für-Schritt-Guide zur Automatisierung der ConnectWise ScreenConnect-Installation unter Linux

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche „Ich akzeptiere“ klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird „wie gesehen“ und „wie verfügbar“ bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).