AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 927526
Accepted
Dennis Nolte
Dennis Nolte
Asked: 2018-08-23 07:59:01 +0800 CST2018-08-23 07:59:01 +0800 CST 2018-08-23 07:59:01 +0800 CST

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

  • 772

环境:

  • 带有 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 协议来实现它?

debian
  • 1 1 个回答
  • 22900 Views

1 个回答

  • Voted
  1. Best Answer
    Dennis Nolte
    2018-08-23T07:59:01+08:002018-08-23T07:59:01+08:00

    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

    报价:

    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, [email protected] 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 更改内核?)

    https://packages.debian.org/stretch-backports/allpackages 
    

    但是我不确定后端部分,因为有更新的内核,但就我而言,我不会为这个功能升级到后端内核,所以我停在这里。


    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 命令:

    探测:

    Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
    

    使能够:

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
    

    禁用:

    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 命令

    smbclient -U WIN10Username -L //Client/
    

    至

    smbclient -m SMB2 -U WIN10Username -L //Client/
    

    让您查看该客户的份额。

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

    mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
    

    或作为 /etc/fstab 条目(启动时没有自动挂载!)

     //CLIENTIP/TESTSHARE /MOUNTPOINT    cifs    vers=2.0,username=WIN10Username,password=WIN10Password 0 0
    

    行政份额

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

    PowerShell命令:

    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/

    #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 使用的命令是:

    /usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
    

    将其更改为包括 -m SMB2

    之后我仍然得到 NT_STATUS_ACCESS_DENIED:

    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 之后添加密码手动执行此操作

    /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 的工作解决方案(使用用户名密码或凭据文件,没关系。非管理或管理共享也没有改变任何东西)

    /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
    

    域=[CLIENTNAME] OS=[] 服务器=[] ... cut

    非工作版本-N:

    /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:

    硬编码:

    $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.
    

    信用档案:

    $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.
    
    • 8

相关问题

  • 关闭 FTP

  • 如何在同一台电脑上从 putty 连接 debian vmware

  • debian- 文件到包的映射

  • Debian Ubuntu 网络管理器错误 [关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve