环境:
带有 Debian 9.3 的 Linux X86 服务器
内核:Debian 4.9.65-3+deb9u1
smbclient:版本 4.5.12-Debian
cifs-utils:2:6.7-1
情况:
Backupserver ( backuppc
) 必须备份 Windows 10 Home 客户端。
没有域名
选择:
用于其他 Win7 客户端的 Cygwin/Rsync 由于涉及手动工作而被拒绝。
已知的先决条件:
Win10Client 的 DNS 条目:已完成、已测试且正在运行
Win10Client 的 DHCP 条目:已完成、经过测试并可以正常工作
SMB1 不安全,所以不要走“简单的方法”。
smbclient 支持 SMB2/3 协议,所以我不应该设置 smb1 注册表黑客来启用 SMB1,例如
如何检查 Windows Server 2008 R2 上启用了哪个 SMB 版本
问题:我无法挂载管理或任何其他共享,也看不到它们smbtree -b -N
我试过的:
我尝试使用非管理共享(
$
最后没有)我将管理共享从 重命名
C$
为mC$
或mC
。在文档中添加了测试共享。
在中添加了测试共享
C:\test
这些都不是通过可见的smbtree
。
直接连接到共享(或获取共享列表):
测试:
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
我如何使用 SMB2 或 SMB3 协议来实现它?
howto 的答案包括多个部分,因为根据您的需要,情况可能会有所不同。
我通过各种搜索包括了我发现(或相信已经发现)的所有内容,这些搜索帮助我解决了我的直接问题。
默认的 Debian 9 Stretch Kernel 不支持 SMB3
原来我的内核似乎不直接支持 SMB3
https://unix.stackexchange.com/questions/202961/mounting-smb3-share-with-encryption-fails-mount-error13-permission-denied-s/376166
基于https://lists.debian.org/debian-kernel/2017/04/msg00266.html
报价:
从我的研究来看,它也不在扩展反向端口中(cifs-utils 支持从 4.11 更改内核?)
但是我不确定后端部分,因为有更新的内核,但就我而言,我不会为这个功能升级到后端内核,所以我停在这里。
smbtree 需要更多参数才能使用 SMB3
我并没有立即清楚如何让 smbtree 与 SMB3 一起工作,而且我虽然在上面发现了这个问题,但我完全放弃了使用 SMB3 的想法。
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
smbclient 默认不使用 SMB2 或 SMB3。
smbclient 的 smb 协议的默认版本是
SMB1
Windows 10 默认不支持此功能。
如果您的用例需要此功能,则必须添加相应的注册表项:
HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1(类型 DWORD32,值为 1 表示开启,0 表示关闭)
Powershell 命令:
探测:
使能够:
禁用:
这取自https://support.microsoft.com/en-us/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and
您可能必须更改 Windows 10 中的文件共享加密级别才能使 SMB1 正常工作:
因为我没有直接测试这个我不知道它是否真的需要:
例如,从这里查看如何执行此操作:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
报价:
在网络和共享中心更改文件共享加密级别
打开控制面板,然后单击/点击网络和共享中心图标。
单击/点击左侧的更改高级共享设置链接。(见下面的截图)
展开所有网络网络配置文件。
在文件共享连接下,选择“为使用 40 位或 56 位加密的设备启用文件共享”
工作命令
现在让实际工作
非管理共享:
更改 smbclient 命令
至
让您查看该客户的份额。
作为控制台实际访问它的挂载参数:
或作为 /etc/fstab 条目(启动时没有自动挂载!)
行政份额
对于管理共享,您必须进行一项额外的注册表更改(如果您不在域中):
PowerShell命令:
取自这里:
无法在 ubuntu 中挂载 windows 共享
基本上它所做的就是禁用 UAC 进行远程共享访问和维护,所以要小心。
这可能有助于更好地理解其含义,因此请确定您是否真的想这样做:
https://www.harmj0y.net/blog/redteaming/pass-the-hash-is-dead-long-live-localaccounttokenfilterpolicy/
backuppc 问题:
您将需要另一个特定于 backuppc 的帐户,该帐户必须具有共享的读取权限。
backuppcs smbclient 默认选项不包括 -m SMB2
backuppc 使用的命令是:
将其更改为包括 -m SMB2
之后我仍然得到 NT_STATUS_ACCESS_DENIED:
在 -U 之后添加密码手动执行此操作
作品
删除 -N 会提示我使用它的密码。
由于我不想将它存储在 backuppc 的配置文件中,我将在最终版本中使用凭证方法。
在试图弄清楚 backuppc 命令和手动 smbclient 命令之间的区别之后,我发现
-N
在连接期间会导致不同的行为。没有 -N 的工作解决方案(使用用户名密码或凭据文件,没关系。非管理或管理共享也没有改变任何东西)
域=[CLIENTNAME] OS=[] 服务器=[] ... cut
非工作版本
-N
:Backuppc Win10 客户端工作解决方案
鉴于以上所有信息,我可以使用以下 backuppc 选项备份 Win10 管理共享:
SmbClientFullCmd:
硬编码:
信用档案: