
Umfeld:
Linux X86-Server mit Debian 9.3
Kernel: Debian 4.9.65-3+deb9u1
smbclient: Version 4.5.12-Debian
cifs-Dienstprogramme: 2:6.7-1
Situation:
Der Backupserver ( backuppc
) soll ein Windows 10 Home Client sichern.
Keine Domäne
Alternative:
Für andere Win7-Clients verwendetes Cygwin/Rsync wurde aufgrund des erforderlichen manuellen Arbeitsaufwands abgelehnt.
Bereits bekannte Voraussetzungen:
DNS-Eintrag für Win10Client: erledigt, getestet und funktioniert
DHCP-Eintrag für Win10Client: erledigt, getestet und funktioniert
SMB1 ist unsicher, gehen Sie also nicht den „einfachen Weg“.
Der smbclient unterstützt das SMB2/3-Protokoll, daher muss ich den smb1-Registrierungs-Hack nicht ausführen, um SMB1 beispielsweise zu aktivieren.
So überprüfen Sie, welche SMB-Version unter Windows Server 2008 R2 aktiviert ist
Symptome:Ich kann weder die administrative noch eine andere Freigabe mounten, noch sehe ich sie mitsmbtree -b -N
Was ich versucht habe:
Ich habe versucht, die nicht-administrative Freigabe zu verwenden (Nein
$
am Ende)Ich habe die administrative Freigabe von
C$
inmC$
oder umbenanntmC
.Eine Testfreigabe in Dokumenten wurde hinzugefügt.
Eine Testfreigabe hinzugefügt in
C:\test
Keines davon ist über sichtbar smbtree
.
Direkte Verbindung zu den Freigaben herstellen (oder eine Liste der Freigaben abrufen):
geprüft:
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
Wie bekomme ich dies mit dem SMB2- oder SMB3-Protokoll zum Laufen?
Antwort1
Die Antwort auf die Frage „Wie geht das?“ besteht aus mehreren Teilen, da die Situation je nach Ihren Anforderungen etwas unterschiedlich sein kann.
Ich habe alles einbezogen, was ich bei den verschiedenen Suchvorgängen gefunden habe (oder zu finden glaubte) und was mir bei der Lösung meines unmittelbaren Problems geholfen hat.
Der standardmäßige Debian 9 Stretch Kernel unterstützt SMB3 nicht
Es stellte sich heraus, dass mein Kernel SMB3 nicht direkt unterstützt
Bezogen aufhttps://lists.debian.org/debian-kernel/2017/04/msg00266.html
Zitat:
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.
Meiner Recherche nach ist es auch nicht in den Stretch-Backports enthalten (CIFS-Utils zur Unterstützung der Kerneländerung von 4.11?)
https://packages.debian.org/stretch-backports/allpackages
Beim Backport-Teil bin ich mir jedoch nicht sicher, da es neuere Kernel gibt, ich in meinem Fall jedoch für diese Funktion nicht auf den Backport-Kernel aktualisieren werde und deshalb hier aufgehört habe.
smbtree benötigt mehr Parameter, um mit SMB3 zu funktionieren
Mir war nicht sofort klar, wie ich smbtree mit SMB3 zum Laufen bekomme, und aufgrund des Problems, das ich oben herausgefunden zu haben glaubte, habe ich die Idee mit SMB3 ganz verworfen.
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
smbclient verwendet standardmäßig weder SMB2 noch SMB3.
Die Standardversion des SMB-Protokolls für smbclient ist
SMB1
Dies wird in Windows 10 standardmäßig nicht unterstützt.
Wenn Sie dies für Ihren Anwendungsfall benötigen, müssen Sie den entsprechenden Registrierungsschlüssel hinzufügen:
HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 (Typ DWORD32, Wert 1 für ein, 0 für aus)
Powershell-Befehl(e):
Erkennen:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Aktivieren:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Deaktivieren:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Dies stammt aushttps://support.microsoft.com/en-us/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and
Möglicherweise müssen Sie die Verschlüsselungsstufe für die Dateifreigabe in Windows 10 ändern, damit auch SMB1 funktioniert:
da ich das nicht direkt getestet habe, weiß ich nicht, ob es wirklich nötig ist:
Hier erfahren Sie beispielsweise, wie das geht:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
Zitat:
So ändern Sie die Verschlüsselungsstufe für die Dateifreigabe im Netzwerk- und Freigabecenter
Öffnen Sie die Systemsteuerung und klicken/tippen Sie auf das Symbol „Netzwerk- und Freigabecenter“.
Klicken/tippen Sie auf den Link „Erweiterte Freigabeeinstellungen ändern“ auf der linken Seite. (siehe Screenshot unten)
Erweitern Sie das Netzwerkprofil „Alle Netzwerke“.
Wählen Sie unter „Dateifreigabeverbindungen“ die Option „Dateifreigabe für Geräte aktivieren, die 40- oder 56-Bit-Verschlüsselung verwenden“ aus.
Arbeitsbefehle
Jetzt müssen wir die Dinge tatsächlich zum Laufen bringen
Nicht-administrative Freigabe:
Ändern des smbclient-Befehls
smbclient -U WIN10Username -L //Client/
Zu
smbclient -m SMB2 -U WIN10Username -L //Client/
ermöglicht Ihnen, die Freigaben dieses Clients anzuzeigen.
Als Mountparam für die Konsole, um tatsächlich darauf zuzugreifen:
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
oder als /etc/fstab-Eintrag (kein Automount beim Booten!)
//CLIENTIP/TESTSHARE /MOUNTPOINT cifs vers=2.0,username=WIN10Username,password=WIN10Password 0 0
Administrative Freigabe
Für die administrative Freigabe müssen Sie eine zusätzliche Registrierungsänderung durchführen (wenn Sie sich nicht in einer Domäne befinden):
Powershell-Befehl:
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1
entnommen von hier:
Windows-Freigabe kann in Ubuntu nicht gemountet werden.
Im Grunde genommen wird damit die Benutzerkontensteuerung für den Remotezugriff auf Freigaben und die Remotewartung deaktiviert. Gehen Sie also vorsichtig damit um.
Dies hilft Ihnen möglicherweise, die Auswirkungen besser zu verstehen. Überlegen Sie sich also gut, ob Sie dies wirklich tun möchten:
#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
Probleme mit Backuppc:
Sie benötigen ein weiteres Konto speziell für BackupPC, das über Leseberechtigungen für die Freigabe verfügen muss.
Die Standardoptionen von backuppcs smbclient umfassen nicht -m SMB2
Der von Backuppc verwendete Befehl lautet:
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
ändern Sie dies, um -m SMB2 einzuschließen
Danach bekam ich immer noch 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
Durch manuelles Ausführen mit einem nach dem -U hinzugefügten Passwort
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -
Werke
durch das Entfernen von -N werde ich nach dem Passwort gefragt, mit dem es auch funktioniert.
Da ich es nicht in einer Konfigurationsdatei von BackupPC speichern wollte, werde ich in der endgültigen Version die Anmeldeinformationsmethode verwenden.
Nachdem ich versucht hatte, den Unterschied zwischen den Befehlen „BackupPC“ und „Smbclient“ manuell herauszufinden, stellte ich fest, dass dies -N
zu unterschiedlichem Verhalten während der Verbindung führt.
funktionierende Lösung ohne -N (mit Benutzername, Passwort oder Credential-Datei, war egal. Nicht-administrative oder administrative Freigabe hat auch nichts geändert)
/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
Domäne=[CLIENTNAME] OS=[] Server=[] ... ausschneiden
Nicht funktionierende Version mit -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
Funktionierende Backuppc Win10-Client-Lösung
Angesichts aller oben genannten Informationen kann ich die Win10-Administratorfreigabe mit den folgenden BackupPC-Optionen sichern:
SmbClientFullCmd:
Fest codiert:
$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.
Anmeldedatei:
$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.