Назад | Перейти на главную страницу

Как определить, установил ли клиент SMB подписанное соединение SMB с моей Windows Server 2012?

Есть ли способ узнать на моем сервере Windows 2012, если клиент установил подписанное сообщение ?

Чистая сессия дает основные детали, но ничего не говорит о подписании.

C:\>net session \\a.b.c.d
User name       Administrator
Computer        a.b.c.d
Guest logon     No
Client type
Sess time       00:08:02
Idle time       00:07:50

Share name     Type     # Opens

--------------------------------------
test           Disk     0
The command completed successfully.

Есть ли Командлет Powershell или какой-либо административный инструмент или команду, которая предоставит такую ​​информацию? Заранее спасибо.

Изменить 1: я также пробовал следующее. Get-SmbConnection должен выполняться на клиенте, чтобы найти Серверы, с которыми клиент установил соединения.

PS C:\Users\Administrator> Get-SmbConnection | Select-Object -Property *
ContinuouslyAvailable : False
Credential            : domain\administrator
Dialect               : 3.00
Encrypted             : False
NumOpens              : 3
ServerName            : server1
ShareName             : test
UserName              : SERVER1\Administrator
PSComputerName        :
CimClass              : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection
CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

На момент написания этой статьи единственный способ действительно узнать это наверняка - это наблюдать за сетевым подключением, которое согласовывается с помощью Wireshark или Network Monitor.

В настоящий момент ничто не предоставляет эти данные через API, класс WMI и т. Д.

В Get-SMBConnection Командлет Powershell воля получить эту информацию в будущем, но не сегодня.

Командлет - это просто оболочка вокруг MSFT_SmbConnection WMI класс.

Get-WmiObject -Namespace 'Root\Microsoft\Windows\SMB' MSFT_SmbConnection

Возвращает точно такую ​​же информацию. Если ты пойдешь читать документация MSDN для этого класса WMI вы увидите, что в документации указан Signed недвижимость в дополнение к Encrypted недвижимость, которую вы видите сегодня.

class MSFT_SmbConnection
{
  string  ServerName;
  string  ShareName;
  string  UserName;
  uint32  SmbInstance;
  string  Credential;
  uint64  NumOpens;
  string  Dialect;
  boolean ContinuouslyAvailable;
  boolean Encrypted;
  boolean EnableLoadBalanceScaleOut;
  boolean Signed;  // ^_^ *trollface*
};

Далее в документации говорится:

Подписано

Тип данных: логический

Тип доступа: только чтение

TBD. (Быть определенным)

Windows Server 2012 R2, Windows 8.1, Windows Server 2012, Windows 8: это свойство не поддерживается до Windows Server Technical Preview и Windows 10 Technical Preview.

Предварительный просмотр Windows 10 - это когда он появляется впервые. Вот и все.

В интересах Google я также изо всех сил пытался выяснить, действительно ли моя подпись SMB работает или нет. Клянусь, Get-SmbConnection не возвращал свойство Signed вчера, но сегодня, когда я запускаю (на моем компьютере с Windows 10 1903 x64 PSVersion 5.1.18362.145):

PS C:\WINDOWS\system32> Get-SmbConnection | fl *
SmbInstance           : Default
ContinuouslyAvailable : False
Credential            : DOMAIN\user
Dialect               : 3.0.2
Encrypted             : False
NumOpens              : 1
Redirected            : False
ServerName            : server.domain
ShareName             : share
Signed                : False
UserName              : DOMAIN\user
PSComputerName        :
CimClass              : ROOT/Microsoft/Windows/SMB:MSFT_SmbConnection
CimInstanceProperties : {ContinuouslyAvailable, Credential, Dialect, Encrypted...}
CimSystemProperties   : Microsoft.Management.Infrastructure.CimSystemProperties

«Подписано» - это возвращаемое свойство, которое показывает True или False.

Однако на моем сервере 2012 R2 PSVersion 5.1.14409.1018 в настоящее время нет. У коллеги по Windows 10 1809 PS версия 5.1.17763.592 тоже есть.