首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用最小SMB2从Linux命令行访问Windows 10 Samba共享

使用最小SMB2从Linux命令行访问Windows 10 Samba共享
EN

Server Fault用户
提问于 2018-08-22 15:59:01
回答 1查看 26.3K关注 0票数 5

环境:

  • 带有Debian9.3的
  • 内核: Debian 4.9.65-3+deb9u1
  • smbclient: 4.5.12-Debian版本
  • cifs-utils: 2:6.7-1

情况:

备份服务器(backuppc)必须备份Windows10Home客户端。

无域

替代:

用于其他Win7客户端的Cygwin/Rsync由于所涉及的手工工作而被拒绝。

已经知道的Prerequisites:

  • Win10Client的DNS条目:已完成、测试和工作
  • Win10Client的DHCP条目:已完成、测试和工作
  • SMB1是不安全的,所以不要走“容易的路”。

smbclient支持smb1 2/3协议,因此我不需要设置SMB1注册表攻击来启用SMB1。

如何检查在Windows 2008 R2上启用了哪个SMB版本

问题:我无法挂载管理共享或任何其他共享,也不能在smbtree -b -N中看到它们

我尝试过的What:

  • 我尝试使用非管理共享(最后没有$ )。
  • 我将管理共享从C$重命名为mC$mC
  • 在文档中添加了测试共享。
  • C:\test中添加了一个测试共享

所有这些都不能通过smbtree看到。

连接到共享的Directly (或获取共享列表):

经测试:

代码语言:javascript
运行
复制
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET

smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET

我如何使它与SMB2或SMB3协议一起工作?

EN

回答 1

Server Fault用户

回答已采纳

发布于 2018-08-22 15:59:01

方法的答案包括多个部分,因为情况可能会有所不同,这取决于您需要什么。

我包括了所有我发现(或相信已经发现)通过各种搜索,帮助我解决我的直接问题。

默认的Debian 9拉伸内核不支持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

古特:

代码语言:javascript
运行
复制
Am 22.04.2017 um 17:21 schrieb Ben Hutchings:

On Sat, 2017-04-22 at 16:19 +0100, Ben Hutchings wrote:

    On Sat, 2017-04-22 at 14:47 +0200, debian@alpenjodel.de wrote:

        Hi!

        It´s not possible to mount a enrypted CIFS Share yet. is it possible
        to add the following Kernel changes to Debian 8?

    No, we don't backport big features like that.

Of course, if this feature is in Linux 4.9 (I don't know) then you have
the option to install the new kernel version from jessie-backports
(https://backports.debian.org/).

Ben.

从我的研究来看,它也不是在扩展的后端(cifs-utils来支持内核从4.11?)

代码语言:javascript
运行
复制
https://packages.debian.org/stretch-backports/allpackages 

但是,我对backport部分不太确定,因为这里有较新的内核,但就我的情况而言,我不会为这个特性升级到backport内核,所以我就在这里停止了。

smbtree需要更多的参数来使用SMB3

我还不清楚如何让smbtree与SMB3一起工作,而且对于我想在上面发现的问题,我完全放弃了SMB3的想法。

https://www.samba.org/samba/docs/current/man-html/smbtree.1.html

默认情况下,

smbclient不使用SMB2或SMB3。

smbclient的smb协议的默认版本是

SMB1 1

在Windows 10中,默认情况下不支持这一点。

如果用例需要这样做,则必须添加相应的注册表项:

HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 ( DWORD32类型,on值1,off值0)

Powershell司令部(S):

侦查:

代码语言:javascript
运行
复制
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}

使:

代码语言:javascript
运行
复制
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force

禁用:

代码语言:javascript
运行
复制
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force

这是取自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

古特:

改变网络与共享中心的文件共享加密级别

  1. 打开“控制面板”,单击/点击“网络和共享中心”图标。
  2. 单击/点击左侧的“更改高级共享设置”链接。(见下面的截图)
  3. 展开“全网络”网络配置文件。
  4. 在“文件共享连接”下,选择“为使用40位或56位加密的设备启用文件共享”。

工作命令

现在要让事情真正开始运作

非行政份额:

更改smbclient命令

代码语言:javascript
运行
复制
smbclient -U WIN10Username -L //Client/

代码语言:javascript
运行
复制
smbclient -m SMB2 -U WIN10Username -L //Client/

允许您查看该客户端的共享。

作为控制台实际访问它的挂载:

代码语言:javascript
运行
复制
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT

或as /etc/fstab条目(在引导时没有自动操作!)

代码语言:javascript
运行
复制
 //CLIENTIP/TESTSHARE /MOUNTPOINT    cifs    vers=2.0,username=WIN10Username,password=WIN10Password 0 0

管理共享

对于管理共享,您必须进行一次额外的注册表更改(如果您不在域中):

Powershell命令:

代码语言:javascript
运行
复制
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1 

从这里取走:

无法在ubuntu中挂载windows共享

基本上,它所做的是禁用UAC的远程共享访问和维护,所以要小心。

这可能有助于更好地理解其含义,因此,请确定您是否真的想这样做:

https://www.harmj0y.net/blog/redteaming/pass-the-hash-is-dead-long-live-localaccounttokenfilterpolicy/

代码语言:javascript
运行
复制
#note the \$ is actually needed!, i did read about Qouting the whole String "//CLIENTIP/C$" but i did not test that
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/C\$ MOUNTPOINT

backuppc问题:

您将需要另一个专用于backuppc的帐户,该帐户必须具有共享的读取权限。

backuppcs smbclient默认选项不包括-m SMB2

backuppc使用的命令是:

代码语言:javascript
运行
复制
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -

将其更改为包含-m SMB2

在那之后,我还得到了NT_STATUS_ACCESS_DENIED:

代码语言:javascript
运行
复制
session setup failed: NT_STATUS_ACCESS_DENIED
session setup failed: NT_STATUS_ACCESS_DENIED
tarExtract: Done: 0 errors, 0 filesExist, 0 sizeExist, 0 sizeExistComp, 0 filesTotal, 0 sizeTotal

使用-U后添加的密码手动执行此操作

代码语言:javascript
运行
复制
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -

作品

删除-N也会让我知道它的密码。

由于我不想将它存储在backuppc的配置文件中,所以我将在最终版本中使用凭证方法。

在尝试手动找出backuppc命令和smbclient命令之间的区别之后,我发现-N在连接过程中导致了不同的行为。

没有-N的工作解决方案(使用用户名密码或凭据文件)并不重要。非行政性的或行政的份额也没有改变任何东西)

代码语言:javascript
运行
复制
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -E -d 5 -c tarmode\ full -Tc -


cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH

Domain= OS=[] Server=[] .切

使用-N的非工作版本:

代码语言:javascript
运行
复制
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -U WIN10Username WIN10Password -N -E -d 5 -c tarmode\ full -Tc -
/usr/bin/smbclient -m SMB2 \\\\CLIENTNAME\\test3 -A /etc/samba/smb.cred -N -E -d 5 -c tarmode\ full -Tc -


cut
...
NTLMSSP Sign/Seal - Initialising with flags:
Got NTLMSSP neg_flags=0x62088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_EXTENDED_SESSIONSECURITY
NTLMSSP_NEGOTIATE_VERSION
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SPNEGO login failed: Logon failure
...
cut
...
SPNEGO login failed: Access denied
session setup failed: NT_STATUS_ACCESS_DENIED

Backuppc Win10客户端工作解决方案

鉴于上述所有信息,我能够使用以下backuppc选项备份Win10管理共享:

SmbClientFullCmd:

硬编码:

代码语言:javascript
运行
复制
$smbClientPath -m SMB2 \\$host\$shareName $I_option -U $userName WIN10Password -E -d 5 -c tarmode\ full -Tc$X_option - $fileList

I was unable to use the Password in SmbSharePasswd, but as this wasn't the desired output i did not dig deeper if i made an possible error here.

信用档案:

代码语言:javascript
运行
复制
$smbClientPath -m SMB2 \\$host\$shareName $I_option -A /PATH/samb_creditfile -E -d 5 -c tarmode\ full -Tc$X_option - $fileList


Remember you need permissions for the backuppc user on that file.
票数 9
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/927526

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档