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
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:
- Speichern Sie das Skript in einer Datei namens Disable-SMBv1.ps1.
- Öffnen Sie PowerShell als Administrator.
- Navigieren Sie zu dem Ordner, in dem Sie das Skript gespeichert haben.
- 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.