연결 클라이언트 또는 공유를 기반으로 기회주의적 CIFS 프로토콜 버전(최소 버전) 선택이 가능합니까?

연결 클라이언트 또는 공유를 기반으로 기회주의적 CIFS 프로토콜 버전(최소 버전) 선택이 가능합니까?

질문)

  • SMB1을 허용하도록 클라이언트별 또는 공유별 예외를 어떻게 구성합니까?
  • SMB1 활성화에 따른 보안 위험을 이해하고 있으며 공격 표면을 최소화하고 싶습니다. 만약 있다면오직이러한 게스트 액세스를 허용하도록 구성된 공유에서 SMB1이 활성화되어 있는지 여부가 중요합니까?

현재 상황

2:4.11.6+dfsg-0ubuntu1.3익명 연결 사용자로부터 특정 공유( 공유 수준 security = user및 ) 로의 연결을 허용하도록 구성된 Samba 4.11.6-Ubuntu()가 설치된 Ubuntu 20.04 시스템이 있습니다.map to guest = bad passwordguest only = yesguest ok = yes

이것은 다른 Ubuntu 시스템에서는 잘 작동합니다. 물론아니요에서 일하다X-plore라는 Android 앱. 다음 오류 메시지와 함께 애플리케이션이 실패합니다.

java.io.IOException: 이 클라이언트는 협상된 방언을 지원하지 않습니다.

2:4.7.6+dfsg~ubuntu-0ubuntu2.17위 서버와 유사하게 구성된 Samba 4.7.6-Ubuntu( )가 있는 네트워크에 유사하게 구성된 Ubuntu 18.04가 있습니다 .

이는 다른 Ubuntu 시스템에서도 잘 작동합니다(최신 Samba를 사용하든 이전 Samba를 사용하든 관계 없음).그리고Android 앱 X-plore에서 작동합니다.

알겠습니다. 이는 4.7.6과 4.11.6의 버전 차이로 인해 문제가 발생하고 있음을 나타냅니다. 차이점은 smb.conf경로 차이와 확장 변수(예: 서버 이름 등)에 따른 차이로 귀결되므로 %h이를 높은 확실성으로 배제할 수 있습니다.

SMB1Samba 4.7.6 서버에 성공적으로 연결한 후 Android 애플리케이션이 보고됩니다. 그래서이것문제의 가능한 원인인 것 같습니다.버전 4.11.6:

SMB1은 기본적으로 비활성화되어 있습니다.

"클라이언트 최소 프로토콜" 및 "서버 최소 프로토콜"의 기본값이 SMB2_02로 변경되었습니다.

즉, SMB2 또는 SMB3를 지원하지 않는 클라이언트는 더 이상 기본적으로 smbd에 연결할 수 없습니다.

/etc/fstab(1. 18.04 2. 20.04)은 원격 Samba 서버에 대해 다음과 같은 두 가지 옵션을 제공합니다.

$ awk '$3 ~ /cifs/ {print $4}' /etc/fstab|sed 's|'$(whoami)'|username|g'
nofail,user,guest,rw,uid=username,gid=username,forceuid,forcegid,file_mode=0664,dir_mode=0775,_netdev,x-gvfs-hide,noauto,x-systemd.automount
nofail,user,guest,rw,uid=username,gid=username,forceuid,forcegid,file_mode=0664,dir_mode=0775,_netdev,x-gvfs-hide,noauto,x-systemd.automount

...결과적으로 설치된 항목은 다음과 같습니다(이전과 순서 동일).

$ awk '$3 ~ /cifs/ {print $4}' /proc/mounts 
rw,nosuid,nodev,noexec,relatime,vers=3.1.1,sec=none,cache=strict,uid=1000,forceuid,gid=1000,forcegid,addr=192.168.188.120,file_mode=0664,dir_mode=0775,soft,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1
rw,nosuid,nodev,noexec,relatime,vers=3.1.1,sec=none,cache=strict,uid=1000,forceuid,gid=1000,forcegid,addr=192.168.188.130,file_mode=0664,dir_mode=0775,soft,nounix,serverino,mapposix,rsize=4194304,wsize=4194304,bsize=1048576,echo_interval=60,actimeo=1

분명히 프로토콜 버전 3.1.1이 선택되었습니다.두 경우 모두mount.cifs최근 Ubuntu 프로토콜 버전을 협상하는 동안 .

X-plore를 지원하려면 SMB1을 활성화해야 하는 것 같습니다. 이는 smb.conf다음을 통해 수행할 수 있습니다.

[global]
min protocol = SMB2

답변1

내가 찾은대답은 AskUbuntu에 있습니다.

주요 요점은 서버 측에 다음 줄을 추가하는 것입니다 /etc/samba/smb.conf.

server min protocol = NT1

... smbd다음 명령 중 하나를 사용하여 재부팅합니다(수퍼유저로).

  • service smbd restart
  • systemctl restart smbd.service

그러면 Android 측에서 이를 수락할 수 있습니다. 명백한 차이점은 18.04와 20.04의 두 Samba 버전 간의 기본 최소 프로토콜 버전입니다.

관련 정보