SMB over QUIC это новая фича, доступная во всех редакциях Windows Server 2025, позволяющая организовать безопасный доступ к файловому серверу через Интернет (ранее была доступна в Windows Server 2022 Azure Edition). Если раньше для удаленного доступа к файловым SMB серверам приходилось поднимать дополнительную обвязку в виде VPN или RDS, то теперь с помощью SMB over QUIC можно безопасно открыть прямой доступ к файловому серверу из незащищенных сетей.
Особенности протокола SMB over QUIC:
- Трафик между SMB сервером и пользователем защищен с помощью шифрования TLS 1.3 на базе сертификатов. Аутентификация пользователя происходит внутри защищенного туннеля.
- Вместо традиционного SMB порта TCP/445 используется UDP/443
- Используется современный транспортный протокол с улучшенной производительности, устойчивостью к плохим каналам и новым алгоритмом сжатия
- Возможно ограничить подключение клиентов с помощью сертификатов (QUIC Client Access Control)
- Внутри туннеля используется SMB 3.1.1
Часто, SMB over QUIC называют SMB VPN, т.к. теперь для организации доступа удаленных пользователей через Интернет к корпоративному файловому серверу не нужно делать дополнительную обертку в виде VPN.
Рассмотрим, как опубликовать сетевую папку на файловом сервере Windows Server 2025 через SMB over QUIC и организовать к ней защищенный доступ от клиентов с аутентификацией по сертификатам. Для настройки SMB over QUIC можно использовать Windows Admin Center (WAC) и PowerShell.
Начнем с подготовки файлового сервера с Windows Server 2025. Рекомендуется наличие домена Active Directory, однако SMB over QUIC можно настроить и для сценария рабочей группы с локальными пользователями.
Нам понадобится SSL сертификат, у которого в Subject Alternative Name (SAN) указан FQDN вашего файлового сервер. Можно использовать сертификат от внешнего CA (в том числе сертификат Let’s Encrypt), сертификат от внутреннего CA или самоподписанный сертификат (допустимо, не рекомендуется). В поле Enhanced Key Usage (EKU) сертификата должно быть разрешено использование для Server Authentication.
В качестве примера я буду использовать сценарий с использованием самоподписанного сертификата на сервере.
Создадим сертификат:
$todaydate = Get-Date
$add3year = $todaydate.AddYears(3)
New-SelfSignedCertificate -dnsname fs01.winitpro.ru -notafter $add3year -CertStoreLocation cert:\LocalMachine\My
Выбираем сертификат по его отпечатку:
$cert=Get-ChildItem -Path "Cert:\LocalMachine\My" | Where-Object Thumbprint -eq D46D519FD502A89818BFB32DD80C37E6B4DF5A7A
И привязываем сертификат к SMB серверу QUIC:
New-SmbServerCertificateMapping -Name fs01.winitpro.ru -Thumbprint $cert.Thumbprint -StoreName My
Включаем поддержку SMB over QUIC для файлового сервера:
Set-SmbServerConfiguration -EnableSMBQUIC $true
Проверяем, что теперь SMB сервер теперь слушает на UDP порту 443:
netstat -a | Select-String 443
Чтобы разрешить доступ к SMB QUIC общей папке, в Windows Defender Firewall должны быть включены соответствующие правила:
Get-NetFirewallRule -DisplayName "File and Printer Sharing (SMB-QUIC-In)"|select name,enabled,profile
По умолчанию доступ разрешен для доменного профиля сети, и запрещен для Private и Public типов сетевых профилей (включите нужные правила в зависимости от вашей конфигурации):
Теперь на клиентском компьютере нужно настроить подключение к SMB папке с помощью QUIC (в качестве клиентов поддерживаются Windows 11, Windows Server 2025 или Linux c Samba версии 4.23 и выше; Windows 10 не поддерживает протокол QUIC).
Проверяем, включена ли поддержка SMB over QUIC на клиенте Windows 11:
Get-SmbClientConfiguration | select EnableSMBQUIC
Теперь можно смонтировать сетевую папку с сервера с помощью PowerShell командлета New-SmbMapping:
New-SmbMapping -LocalPath W: -RemotePath \\fs01.winitpro.ru\Docs -TransportType QUIC
Или с помощью net use:
net use W: \\fs01.winitpro.ru\Docs /TRANSPORT:QUIC
Проверяем на клиенте в журнале событий Event Viewer -> Applications and Services Logs -> Microsoft -> Windows -> SMBClient -> Connectivity, что для подключения сетевой папки использовался транспорт QIUC (Event ID 30832):
The initial connection to the share was established. Share name: \xxxxx Server address: xxxxxxx:443 Session ID: 0x1900014000079 Tree ID: 0xD Transport type: Quic Signing used: true
Если в журнале ошибка Event ID 30803, скорее всего вы не установили сертификат сервера на клиенте (или клиент не доверяет ему):
Failed to establish a network connection. Error: The QUIC connection encountered a bad certificate during TLS.
С помощью правил Client Access Control можно на сервере разрешать доступ к SMB шаре по протоколу QUIC только при наличии определенных сертификатов на клиентах. Включаем обязательную аутентификацию для SMB клиентов:
Set-SmbServerCertificateMapping -Name fs01.winitpro.ru -RequireClientAuthentication $true
Создадим самопдписанный сертификат на клиентском компьютере со сроком 3 месяца:
$clientCert = New-SelfSignedCertificate -DnsName dc01.reslab.local -CertStoreLocation "Cert:\LocalMachine\My" -NotAfter (Get-Date).AddMonths(3) -KeyAlgorithm "RSA" -KeyLength "2048"
На клиенте привязываем этот сертификат для использования при подключении к нашему файловому серверу:
New-SmbClientCertificateMapping -Namespace fs01.winitpro.ru -Thumbprint $clientCert.Thumbprint -Store My
Нужно получить SHA256 хэш сертификата клиента:
$clientCert.GetCertHashString("SHA256")
Теперь на SMB сервере с QUIC разрешаем подключение клиентов с этим сертификатом (по SHA256 хэшу):
Grant-SmbClientAccessToServer -Name fs01.winitpro.ru -IdentifierType SHA256 -Identifier "892667c124ff1b8b9f9099329a8fe7701c7138a0037ed1ef7b65898fc43b6c91"
Чтобы вывести все привязанные правила Client Access Control на сервере:
Get-SmbClientAccessToServer -Name fs01.winitpro.ru
Либо можно разрешить подключение всем клиентам с сертификатом от определенного издателя (задается в формате X.500). Сервер должен доверять корневому и промежуточному сертификату этого CA:
Grant-SmbClientAccessToServer -Name fs01.winitpro.ru -IdentifierType ISSUER -Identifier "<subject name>"
Дополнительно можно включить аудит событий аутентификации по сертификату (Applications and Services Logs\Microsoft\Windows\SMBServer\Audit):
Set-SmbServerConfiguration -AuditClientCertificateAccess $true
В результате, к вашему SMB серверу смогут подключиться только клиенты с одобренными сертификатами.
При использовании SMB over QUIC весь SMB трафик, включая аутентификацию, полностью шифруется. Если клиенту недоступен контроллер домена для проверки подлинности, вместо Kerberos аутентификации будет использоваться NTLMv2. Однако это безопасно, т.к. NTLM-трафик также передается в зашифрованном виде внутри TLS-туннеля QUIC.
Одним из недостатков протокола SMB over QUIC является отсутствие поддержки старых версий SMB клиентов (Windows 10 и ниже, а также Samba до версии 4.23)