Wykrywanie, włączanie i wyłączanie protokołu SMBv1, SMBv2 i SMBv3 w systemie Windows
W tym artykule opisano sposób włączania i wyłączania bloku komunikatów serwera (SMB) w wersji 1 (SMBv1), protokołu SMB w wersji 2 (SMBv2) i protokołu SMB w wersji 3 (SMBv3) w składnikach klienta i serwera SMB.
Jeśli wyłączysz lub usuniesz protokół SMBv1, mogą wystąpić problemy ze zgodnością ze starymi komputerami lub oprogramowaniem. Protokół SMBv1 ma znaczące luki w zabezpieczeniach, a zdecydowanie zalecamy, aby go nie używać. SMBv1 nie jest instalowany domyślnie w żadnej wersji systemu Windows 11 lub Windows Server 2019 i nowszych wersji. Protokół SMBv1 również nie jest instalowany domyślnie w systemie Windows 10, z wyjątkiem wersji Home i Pro. Zalecamy, aby zamiast ponownie zainstalować serwer SMBv1, należy zaktualizować serwer SMB, który nadal go wymaga. Aby uzyskać listę partnerów, którzy wymagają programu SMBv1 i ich aktualizacji, które usuwają wymaganie, zobacz SMB1 Product Clearinghouse.
Wyłącz protokół SMBv2 lub SMBv3 na potrzeby rozwiązywania problemów
Zalecamy włączenie protokołu SMBv2 i SMBv3, ale może być przydatne tymczasowe wyłączenie jednego z nich w celu rozwiązywania problemów. Aby uzyskać więcej informacji, zobacz Używanie wiersza polecenia lub Edytora rejestru do zarządzania protokołami SMB.
Wyłączenie funkcji SMBv3 powoduje dezaktywację następujących funkcji:
- Przezroczysty mechanizm failover: umożliwia klientom ponowne połączenie z węzłami klastra bez przerw podczas konserwacji lub awarii.
- Skalowanie w poziomie: zapewnia współbieżny dostęp do danych udostępnionych na wszystkich węzłach klastra plików.
- SMB Multichannel: ułatwia agregację przepustowości sieci i odporności na uszkodzenia, jeśli wiele ścieżek jest dostępnych między klientem a serwerem
- SMB Direct: dodaje obsługę sieci zdalnego bezpośredniego dostępu do pamięci (RDMA) w celu zapewnienia wysokiej wydajności, z małymi opóźnieniami i niskim użyciem procesora CPU
- Szyfrowanie: zapewnia kompleksowe szyfrowanie i zapewnia ochronę przed podsłuchiwaniem w niezaufanych sieciach
- Dzierżawa katalogów: poprawia czas odpowiedzi aplikacji w oddziałach za pomocą buforowania
- Optymalizacja wydajności: optymalizuje małe losowe operacje we/wy odczytu/zapisu
Wyłączenie funkcji SMBv2 powoduje dezaktywację następujących funkcji:
- Łączenie żądań: umożliwia wysyłanie wielu żądań SMBv2 jako pojedynczego żądania sieciowego
- Większe operacje odczytu i zapisu: poprawia wykorzystanie szybszych sieci
- Buforowanie właściwości folderu i pliku: umożliwia klientom przechowywanie lokalnych kopii folderów i plików
- Trwałe uchwyty: Umożliwiają ponowne nawiązanie połączenia z serwerem w sposób transparentny po tymczasowym rozłączeniu.
- Ulepszone podpisywanie komunikatów: używa 256-bitowego kodu uwierzytelniania komunikatów opartego na algorytmie skrótu (HMAC SHA-256) zamiast algorytmu Message-Digest 5 (MD5) jako algorytmu skrótu.
- Ulepszona skalowalność udostępniania plików: znacznie zwiększa liczbę użytkowników, udostępnień i otwartych plików na serwer.
- Obsługa łączy symbolicznych
- Model leasingu oplock klienta: ogranicza transfer danych między klientem a serwerem, co poprawia wydajność w sieciach o wysokiej latencji oraz zwiększa skalowalność serwera SMB.
- Obsługa dużej maksymalnej jednostki transmisji (MTU): Obsługuje pełne wykorzystanie technologii 10 Gigabit Ethernet (GbE)
- Większa wydajność energetyczna: umożliwia klientom, którzy mają otwarte pliki na serwerze, przejście w stan uśpienia
Protokół SMBv2 został wprowadzony w systemach Windows Vista i Windows Server 2008. Protokół SMBv3 został wprowadzony w systemach Windows 8 i Windows Server 2012. Aby uzyskać więcej informacji na temat funkcji SMBv2 i SMBv3, zobacz następujące artykuły:
Usuwanie protokołu SMBv1 przy użyciu programu PowerShell
Można użyć Get-WindowsOptionalFeature, Disable-WindowsOptionalFeaturei Enable-WindowsOptionalFeature polecenia programu PowerShell do wykrywania, wyłączania i włączania klienta lub serwera SMBv1. Uruchom polecenia w wierszu polecenia z podwyższonym poziomem uprawnień.
Notatka
Komputer zostanie uruchomiony ponownie po uruchomieniu poleceń programu PowerShell, aby wyłączyć lub włączyć protokół SMBv1.
Wykryć:
Get-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Wyłącz
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Umożliwiać:
Enable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol
Napiwek
Stan SMBv1 można wykryć bez podniesienia uprawnień, uruchamiając polecenie Get-SmbServerConfiguration: Get-SmbServerConfiguration | Format-List EnableSMB1Protocol
.
Usuń protokół SMBv1
Protokół SMBv1 nie jest instalowany domyślnie w systemie Windows Server 2019 i nowszych wersjach. We wcześniejszych wersjach systemu Windows Server można usunąć protokół SMBv1 za pomocą Menedżera serwera:
Na serwerze, z którego chcesz usunąć protokół SMBv1, otwórz Menedżera serwera.
Na pulpicie nawigacyjnym Menedżera serwera w obszarze Skonfiguruj ten serwer lokalnywybierz pozycję Dodaj role i funkcje.
Na stronie Przed rozpoczęciem wybierz pozycję Uruchom Kreatora usuwania ról i funkcji, a następnie na następnej stronie wybierz pozycję Dalej.
Na stronie Wybierz serwer docelowy w sekcji Pula serweraupewnij się, że wybrano serwer, z którego chcesz usunąć funkcję, a następnie kliknij Dalej.
Na stronie Usuń role serwera wybierz Dalej.
Na stronie Usuń funkcje wyczyść pole wyboru dla SMB 1.0/CIFS File Sharing Support, a następnie wybierz pozycję Next.
Na stronie Potwierdź usunięcie wybranych opcji upewnij się, że wybrana opcja jest wyświetlana, a następnie wybierz Usuń.
Zarządzanie protokołami SMB przy użyciu wiersza polecenia lub Edytora rejestru
Począwszy od aktualizacji Windows 10 Fall Creators Update i Windows Server 2019, SMBv1 nie jest już instalowany domyślnie. Aby uzyskać więcej informacji, zobacz: . SMBv1 nie jest instalowany domyślnie w systemie Windows 10 w wersji 1709, Windows Server w wersji 1709 i nowszych wersjach.
Po włączeniu lub wyłączeniu protokołu SMBv2 w systemie Windows 8 lub Windows Server 2012 protokół SMBv3 jest również włączony lub wyłączony. Takie zachowanie występuje, ponieważ te protokoły dzielą ten sam stos.
Możesz użyć polecenia cmdlet Set-SMBServerConfiguration, aby włączyć lub wyłączyć protokoły SMBv1, SMBv2 i SMBv3 w składniku serwera. Aby pobrać konfigurację serwera SMB, możesz użyć polecenia cmdlet Get-SmbServerConfiguration.
Nie musisz ponownie uruchamiać komputera po uruchomieniu polecenia cmdlet Set-SMBServerConfiguration.
SMBv1
Wykryć:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
Wyłącz
Set-SmbServerConfiguration -EnableSMB1Protocol $false
Umożliwiać:
Set-SmbServerConfiguration -EnableSMB1Protocol $true
Aby uzyskać więcej informacji, zobacz Przestań używać SMB1.
SMBv2 i SMBv3
Wykryć:
Get-SmbServerConfiguration | Select EnableSMB2Protocol
Wyłącz
Set-SmbServerConfiguration -EnableSMB2Protocol $false
Umożliwiać:
Set-SmbServerConfiguration -EnableSMB2Protocol $true
Włączanie lub wyłączanie protokołu SMB w systemach Windows 7, Windows Server 2008 R2, Windows Vista i Windows Server 2008
Aby włączyć lub wyłączyć protokoły SMB na serwerze SMB z systemem Windows 7, Windows Server 2008 R2, Windows Vista lub Windows Server 2008, użyj programu Windows PowerShell lub Edytora rejestru, jak wyjaśniono w poniższych sekcjach.
Korzystanie z programu Windows PowerShell
Polecenia cmdlet Get-Item, Get-ItemPropertyi Set-ItemProperty służą do wykrywania, włączania i wyłączania protokołów SMB.
Notatka
Polecenia w poniższych sekcjach wymagają programu PowerShell 2.0 lub nowszego.
SmBv1 na serwerze SMB
Wykryć:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Domyślna konfiguracja to
Enabled
. W związku z tym nie jest tworzona żadna nazwana wartość rejestru, więc polecenie nie zwraca wartościSMB1
.Wyłącz
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 -Force
Umożliwiać:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 -Force
Notatka
Po wprowadzeniu tych zmian należy ponownie uruchomić komputer.
Aby uzyskać więcej informacji, zobacz Przestań używać SMB1.
SmBv2 i SMBv3 na serwerze SMB
Wykryć:
Get-ItemProperty HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Wyłącz
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 0 -Force
Umożliwiać:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB2 -Type DWORD -Value 1 -Force
Notatka
Po wprowadzeniu tych zmian należy ponownie uruchomić komputer.
Korzystanie z edytora rejestru
Ważny
Dokładnie wykonaj kroki opisane w tej sekcji. Poważne problemy mogą wystąpić, jeśli nieprawidłowo zmodyfikujesz rejestr. Przed zmodyfikowaniem go utwórz kopię zapasową rejestru w celu przywrócenia w przypadku wystąpienia problemów.
Aby włączyć lub wyłączyć protokół SMBv1 na serwerze SMB, otwórz Edytor rejestru i przejdź do następującej ścieżki klucza rejestru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Skonfiguruj wpis, który ma następujące właściwości:
- Jako nazwę użyj SMB1.
- Dla typu użyj REG_DWORD.
- W przypadku danych użyj 0 dla Wyłączone i 1 dla Włączone. Wartość domyślna to 1lub Włączone. W takim przypadku nie jest tworzony żaden klucz rejestru.
Aby włączyć lub wyłączyć protokół SMBv2 na serwerze SMB, otwórz Edytor rejestru i przejdź do następującej ścieżki klucza rejestru:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
Skonfiguruj wpis, który ma następujące właściwości:
- Jako nazwę użyj SMB2.
- Dla typu użyj REG_DWORD.
- W przypadku danych użyj 0 dla Wyłączone i 1 dla Włączone. Wartość domyślna to 1lub Włączone. W takim przypadku nie jest tworzony żaden klucz rejestru.
Notatka
Po wprowadzeniu tych zmian należy ponownie uruchomić komputer.
Użyj zasad grupy, aby wyłączyć SMBv1
W tej sekcji pokazano, jak wyłączyć protokół SMBv1 przy użyciu zasad grupy. Tej metody można użyć w różnych wersjach systemu Windows.
SMBv1
Można wyłączyć protokół SMBv1 na serwerze SMB, konfigurując następujący nowy element w rejestrze:
- Ścieżka klucza: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- Wpis rejestru: SMB1
- Typ wpisu: REG_DWORD
- Dane wprowadzania: 0 dla wyłączone
Aby skonfigurować ten element za pomocą zasad grupy, wykonaj następujące czynności:
Otwórz konsolę zarządzania zasadami grupy. Kliknij prawym przyciskiem myszy obiekt zasad grupy (GPO), który powinien zawierać nowy element preferencji, a następnie wybierz Edytuj.
W drzewie konsoli w obszarze Konfiguracja komputerarozwiń folder Preferencje, a następnie rozwiń folder Ustawienia systemu Windows.
Kliknij prawym przyciskiem myszy węzeł rejestru , wskaż polecenie Nowy, a następnie wybierz pozycję Element rejestru.
W oknie dialogowym Właściwości nowego rejestru wybierz lub wprowadź następujące wartości:
- Akcja: Utwórz
- Hive: HKEY_LOCAL_MACHINE
- ścieżka klucza: SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters
- nazwa wartości: SMB1
- typ wartości: REG_DWORD
- wartość danych: 0
Ta procedura wyłącza składniki serwera SMBv1. Te zasady należy zastosować do wszystkich niezbędnych stacji roboczych, serwerów i kontrolerów domeny w domenie.
Notatka
Można ustawić filtry instrumentacji zarządzania Windows (WMI), aby wykluczyć określone systemy operacyjne lub wykluczyć systemy operacyjne klienta lub serwera. Aby uzyskać więcej informacji, zobacz filtrowanie zasad grupy i tworzenie filtrów WMI dla GPO.
Ważny
Niektóre systemy wymagają dostępu do folderu SYSVOL lub innych udziałów plików, ale nie obsługują protokołu SMBv2 ani SMBv3. Przykłady takich systemów to starsze systemy Windows i starsze systemy Linux i systemy partnerskie. Należy zachować ostrożność podczas wyłączania protokołu SMBv1 na kontrolerach domeny w tych systemach.
Inspekcja użycia protokołu SMBv1
Aby określić, którzy klienci próbują nawiązać połączenie z serwerem SMB przy użyciu protokołu SMBv1, możesz włączyć inspekcję na klientach systemu Windows Server i Windows. Aby włączyć lub wyłączyć inspekcję, użyj polecenia cmdlet Set-SmbServerConfiguration. Aby sprawdzić stan inspekcji, użyj polecenia cmdlet Get-SmbServerConfiguration.
Umożliwiać:
Set-SmbServerConfiguration -AuditSmb1Access $true
Wyłącz
Set-SmbServerConfiguration -AuditSmb1Access $false
Wykryć:
Get-SmbServerConfiguration | Select AuditSmb1Access
Po włączeniu inspekcji SMBv1 można sprawdzić dziennik zdarzeń Microsoft-Windows-SMBServer\Audit
pod kątem zdarzeń dostępu. Za każdym razem, gdy klient próbuje nawiązać połączenie z serwerem przy użyciu protokołu SMBv1, w dzienniku pojawia się wpis o identyfikatorze zdarzenia 3000.
Sprawdzanie ustawień zasad grupy
Jeśli wszystkie ustawienia znajdują się w tym samym GPO, Zarządzanie Zasadami Grupy wyświetla następujące ustawienia:
Testowanie i weryfikowanie zasad
Po wykonaniu kroków konfiguracji w Konsoli Zarządzania Zasadami Grup, daj Zasadom Grupy czas na zastosowanie aktualizacji w ich ustawieniach. W razie potrzeby testowania uruchom gpupdate /force
w wierszu polecenia, a następnie przejrzyj komputery docelowe, aby upewnić się, że ustawienia rejestru są prawidłowo stosowane. Upewnij się, że systemy SMBv2 i SMBv3 działają dla wszystkich innych systemów w środowisku.
Notatka
Po przetestowaniu zasad uruchom ponownie systemy docelowe.