有没有办法从我的 Windows 2012 Server 中查找客户端是否已建立签署的通讯?
网络会话提供了基本细节,但没有提到签名。
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: 我也尝试了以下内容。获取 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
答案1
截至撰写本文时,真正了解这一点的唯一方法是通过 Wireshark 或网络监视器观察正在协商的网络连接。
目前,还没有任何东西可以通过 API、WMI 类等公开这些数据。
Powershell Get-SMBConnection
cmdlet将要以后再向您提供此信息,但不是今天。
该 cmdlet 只是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 预览版是首次亮相。就是这样。
答案2
为了 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
“Signed” 是返回的属性,显示 True 或 False。
但是在我的 Server 2012 R2 PSVersion 5.1.14409.1018 上目前没有。同事在 Windows 10 1809 PSVersion 5.1.17763.592 上也有。