5 votes

Accéder au partage Samba de Windows 10 à partir de la ligne de commande Linux avec un minimum de SMB2

Environnement :

  • Serveur Linux X86 avec Debian 9.3

  • noyau : Debian 4.9.65-3+deb9u1

  • smbclient : Version 4.5.12-Debian

  • cifs-utils : 2:6.7-1

Situation :

Serveur de sauvegarde ( backuppc ) doit sauvegarder un client Windows 10 Home.

Aucun domaine

Alternatif :

Cygwin/Rsync utilisé pour les autres clients Win7 a été rejeté en raison du travail manuel nécessaire.

Conditions préalables déjà connues :

  • Entrée DNS pour Win10Client : fait, testé et fonctionne

  • Entrée DHCP pour Win10Client : fait, testé et fonctionne

  • SMB1 n'est pas sécurisé, ne choisissez pas la "solution de facilité".

Le smbclient prend en charge le protocole SMB2/3. Je ne devrais donc pas avoir à définir le hack de registre smb1 pour activer le protocole SMB1 à partir, par exemple, de la page d'accueil.

Comment vérifier quelle version de SMB est activée sur Windows Server 2008 R2 ?

Problèmes : Je ne peux pas monter la part administrative ou toute autre part, et je ne les vois pas avec smbtree -b -N

Ce que j'ai essayé :

  • J'ai essayé d'utiliser le partage non-administratif (pas d'accès à l'Internet). $ à la fin)

  • J'ai renommé le partage administratif de C$ a mC$ o mC .

  • Ajout d'un test de partage dans les documents.

  • Ajout d'une action de test dans C:\test

Aucun d'entre eux n'est visible via smbtree .

Se connecter directement aux actions (ou obtenir une liste d'actions) :

testé :

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

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

Comment faire pour que cela fonctionne avec le protocole SMB2 ou SMB3 ?

9voto

Dennis Nolte Points 2833

La réponse au howto comprend plusieurs parties car la situation peut être un peu différente selon ce dont vous avez besoin.

J'ai inclus tout ce que j'ai trouvé (ou que je crois avoir trouvé) via les différentes recherches qui m'ont aidé à résoudre mon problème direct.

Le noyau par défaut de Debian 9 Stretch ne gère pas SMB3.

Il s'avère que mon noyau ne supporte pas directement SMB3.

https://unix.stackexchange.com/questions/202961/mounting-smb3-share-with-encryption-fails-mount-error13-permission-denied-s/376166

Sur la base de https://lists.debian.org/debian-kernel/2017/04/msg00266.html

qoute :

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.

D'après mes recherches, il n'est pas non plus dans les backports stretch (cifs-utils pour supporter le changement de noyau à partir de la 4.11 ?)

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

Cependant, je ne suis pas sûr de la partie backport car il y a des noyaux plus récents, mais dans mon cas, je ne mettrai pas à niveau vers le noyau backport pour cette fonctionnalité, donc je me suis arrêté ici.


smbtree a besoin de plus de paramètres pour fonctionner avec SMB3

Il n'était pas immédiatement clair pour moi comment faire fonctionner smbtree avec SMB3, et avec le problème que j'ai trouvé ci-dessus j'ai abandonné l'idée de SMB3 complètement.

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


smbclient n'utilise pas SMB2 ou SMB3 par défaut.

La version par défaut du protocole smb pour smbclient est la suivante

SMB1

Cette fonction n'est pas prise en charge par défaut dans Windows 10.

Si vous en avez besoin pour votre cas d'utilisation, vous devez ajouter la clé de registre correspondante :

HKL M:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 (Type DWORD32, valeur 1 pour on, 0 pour off)

Commande(s) Powershell :

Détecter :

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

Activer :

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

Désactiver :

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

Ceci est tiré de https://support.microsoft.com/en-us/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-Windows-and

Vous devrez peut-être modifier le niveau de cryptage du partage de fichiers dans Windows 10 pour que SMB1 fonctionne également :

Comme je ne l'ai pas testé directement, je ne sais pas si c'est vraiment nécessaire :

voir par exemple comment faire ici :

https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-Windows-10-a.html

Qoute :

Pour modifier le niveau de cryptage du partage de fichiers dans le Centre Réseau et Partage.

  1. Ouvrez le Panneau de configuration et cliquez ou tapez sur l'icône Centre de réseau et de partage.

  2. Cliquez/touchez sur le lien Modifier les paramètres de partage avancés sur le côté gauche. (voir la capture d'écran ci-dessous)

  3. Développez le profil réseau Tous les réseaux.

  4. Sous Connexions de partage de fichiers, sélectionnez "Activer le partage de fichiers pour les appareils qui utilisent un cryptage de 40 ou 56 bits".

Commandes de travail

Maintenant, pour que les choses fonctionnent réellement

Part non-administrative :

modification de la commande smbclient

smbclient -U WIN10Username -L //Client/

まで

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

vous permet de visualiser les actions de ce client.

Comme mountparam pour que la console y accède réellement :

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

ou comme entrée /etc/fstab (pas d'automount au démarrage !)

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

Part administrative

Pour le partage administratif, vous devez effectuer une modification supplémentaire du registre (si vous n'êtes pas dans un domaine) :

Commande Powershell :

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

extrait d'ici :

Impossible de monter un partage Windows dans ubuntu

En fait, il désactive l'UAC pour l'accès et la maintenance des partages à distance, alors soyez prudent.

Cela peut aider à mieux comprendre les implications, donc soyez certain que vous voulez vraiment le faire :

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

les problèmes de backuppc :

Vous aurez besoin d'un autre compte spécifique pour backuppc qui doit avoir les droits de lecture pour le partage.

les options par défaut de backuppcs smbclient n'incluent pas -m SMB2

La commande utilisée par backuppc est :

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

changez cela pour inclure -m SMB2

Après cela, je reçois toujours 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

en le faisant manuellement avec le mot de passe ajouté après le -U

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

travaux

En supprimant le -N, j'obtiens également le mot de passe avec lequel il fonctionne.

Comme je ne voulais pas le stocker dans un fichier de configuration de backuppc, j'utiliserai dans la version finale la méthode du credential.

Après avoir essayé de comprendre quelle était la différence entre la commande backuppc et la commande smbclient manuellement, je me suis rendu compte que la commande -N entraîne un comportement différent lors de la connexion.

solution fonctionnelle sans -N (avec le nom d'utilisateur, le mot de passe ou le fichier d'identification, peu importe. Le partage non administratif ou administratif ne change rien non plus).

/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

Domaine=[CLIENTNAME] OS=[] Serveur=[] ... couper

Version non fonctionnelle avec -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

Solution de travail pour le client Backuppc Win10

Compte tenu de toutes les informations ci-dessus, je suis en mesure de sauvegarder le partage administratif Win10 avec les options de backuppc suivantes :

SmbClientFullCmd :

Hardcoded :

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

Credfile :

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

0 votes

Je mettrai à jour la réponse une fois que le nouveau problème sera résolu, puis je réécrirai la question/réponse pour montrer le progrès d'une manière plus conviviale pour le lecteur.

0 votes

Le partage admin C$ est assez spécial, pourriez-vous essayer d'utiliser un autre partage "normal" pour le test ?

0 votes

Un test avec le répertoire des utilisateurs ou avec C:\admin les deux ont montré "ne peut pas lire le superbloc"

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X