최소한의 SMB2로 Linux 명령줄에서 Windows 10 Samba Share에 액세스하세요.

최소한의 SMB2로 Linux 명령줄에서 Windows 10 Samba Share에 액세스하세요.

환경:

  • Debian 9.3이 설치된 Linux X86 서버

  • 커널: 데비안 4.9.65-3+deb9u1

  • smbclient: 버전 4.5.12-데비안

  • cifs-utils: 2:6.7-1

상황:

백업 서버( 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 프로토콜을 사용하여 이 작업을 수행하려면 어떻게 해야 합니까?

답변1

Howto에 대한 답변에는 필요한 내용에 따라 상황이 약간 다를 수 있으므로 여러 부분이 포함되어 있습니다.

나는 직접적인 문제를 해결하는 데 도움이 된 다양한 검색을 통해 내가 찾은(또는 찾았다고 생각하는) 모든 것을 포함했습니다.

기본 Debian 9 Stretch 커널은 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.

내 연구에 따르면 확장 백포트에도 없습니다(4.11의 커널 변경을 지원하는 cifs-utils?).

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

SMB1도 작동하려면 Windows 10에서 파일 공유 암호화 수준을 변경해야 할 수도 있습니다.

나는 이것을 직접 테스트하지 않았기 때문에 실제로 필요한지 모르겠습니다.

예를 들어 여기에서 이를 수행하는 방법을 참조하십시오.

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/

해당 클라이언트의 공유를 볼 수 있습니다.

콘솔이 실제로 액세스하기 위한 mountparam으로:

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

관리 공유

관리 공유의 경우 레지스트리를 한 번 더 변경해야 합니다(도메인에 속하지 않은 경우).

파워셸 명령:

Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1 

여기에서 가져온 것 :

우분투에서 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

백업PC 문제:

공유에 대한 읽기 권한이 있어야 하는 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=[] 서버=[] ... 잘라내기

비작동 버전 -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.

관련 정보