
Ambiente:
Servidor Linux X86 con Debian 9.3
núcleo: Debian 4.9.65-3+deb9u1
smbclient: Versión 4.5.12-Debian
cifs-utils: 2:6.7-1
Situación:
Backupserver ( backuppc
) tiene que hacer una copia de seguridad de un cliente de Windows 10 Home.
Sin dominio
Alternativa:
Cygwin/Rsync utilizado para otros clientes Win7 rechazados debido al trabajo manual involucrado.
Requisitos previos conocidos ya:
Entrada DNS para Win10Client: lista, probada y funcionando
Entrada DHCP para Win10Client: listo, probado y funcionando
SMB1 no es seguro, así que no siga el "camino fácil".
El cliente smb es compatible con el protocolo SMB2/3, por lo que no debería tener que configurar el truco del registro smb1 para habilitar SMB1 desde, por ejemplo,
Cómo comprobar qué versión SMB está habilitada en Windows Server 2008 R2
Problemas:No puedo montar el share administrativo o cualquier otro, ni los veo consmbtree -b -N
Lo que he probado:
Intenté utilizar el recurso compartido no administrativo (no
$
al final)Cambié el nombre del recurso compartido administrativo de
C$
amC$
omC
.Se agregó un recurso compartido de prueba en los documentos.
Se agregó un recurso compartido de prueba en
C:\test
Ninguno de ellos es visible a través de smbtree
.
Conexión directa a las acciones (u obtener una lista de acciones):
probado:
smbclient -U WIN10Username -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
smbclient -L //CLIENT/
protocol negotiation failed: NT_STATUS_CONNECTION_RESET
¿Cómo hago para que esto funcione con el protocolo SMB2 o SMB3?
Respuesta1
La respuesta al procedimiento incluye varias partes, ya que la situación puede ser un poco diferente según lo que necesite.
Incluí todo lo que encontré (o creo haber encontrado) a través de las diversas búsquedas que me ayudaron a solucionar mi problema directo.
El Debian 9 Stretch Kernel predeterminado no es compatible con SMB3
Resulta que mi kernel parece no soportar SMB3 directamente
Residencia enhttps://lists.debian.org/debian-kernel/2017/04/msg00266.html
cita:
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.
Según mi investigación, tampoco está en los backports extendidos (¿cifs-utils para admitir el cambio de kernel desde 4.11?)
https://packages.debian.org/stretch-backports/allpackages
Sin embargo, no estoy seguro de la parte del backport ya que hay kernels más nuevos, pero en mi caso no actualizaré al kernel del backport para esta función, así que me detuve aquí.
smbtree necesita más parámetros para funcionar con SMB3
No me quedó claro de inmediato cómo hacer que smbtree funcione con SMB3, y con el problema que descubrí anteriormente, abandoné la idea de SMB3 por completo.
https://www.samba.org/samba/docs/current/man-html/smbtree.1.html
smbclient no utiliza SMB2 o SMB3 de forma predeterminada.
La versión predeterminada del protocolo smb para smbclient es
SMB1
Esto no es compatible de forma predeterminada en Windows 10.
Si necesita esto para su caso de uso, debe agregar la clave de registro correspondiente:
HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 (Escriba DWORD32, valor 1 para activado, 0 para desactivado)
Comandos de Powershell:
Detectar:
Get-Item HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters | ForEach-Object {Get-ItemProperty $_.pspath}
Permitir:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 1 –Force
Desactivar:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" SMB1 -Type DWORD -Value 0 –Force
Esto fue tomado dehttps://support.microsoft.com/en-us/help/2696547/how-to-detect-enable-and-disable-smbv1-smbv2-and-smbv3-in-windows-and
Es posible que tengas que cambiar el nivel de cifrado para compartir archivos en Windows 10 para que SMB1 también funcione:
Como no probé esto directamente, no sé si realmente es necesario:
vea, por ejemplo, cómo hacer esto desde aquí:
https://www.tenforums.com/tutorials/51024-change-file-sharing-encryption-level-windows-10-a.html
Cita:
Para cambiar el nivel de cifrado de archivos compartidos en el Centro de redes y recursos compartidos
Abra el Panel de control y haga clic/toque el ícono del Centro de redes y recursos compartidos.
Haga clic/toque el enlace Cambiar configuración avanzada de uso compartido en el lado izquierdo. (ver captura de pantalla a continuación)
Expanda el perfil de red Todas las redes.
En Conexiones para compartir archivos, seleccione "Habilitar el uso compartido de archivos para dispositivos que usan cifrado de 40 o 56 bits".
Comandos de trabajo
Ahora para que las cosas funcionen
Participación no administrativa:
cambiando el comando smbclient
smbclient -U WIN10Username -L //Client/
a
smbclient -m SMB2 -U WIN10Username -L //Client/
le permite ver las acciones de ese cliente.
Como parámetro de montaje para que la consola acceda a él:
mount -t cifs -o vers=2.0,username=WIN10Username,password=WIN10Password //CLIENTIP/TESTSHARE MOUNTPOINT
o como entrada /etc/fstab (¡sin montaje automático al arrancar!)
//CLIENTIP/TESTSHARE /MOUNTPOINT cifs vers=2.0,username=WIN10Username,password=WIN10Password 0 0
Compartir administrativo
Para el recurso compartido administrativo tienes que hacer un cambio de registro adicional (si no estás en un dominio):
Comando de PowerShell:
Set-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\ -Name LocalAccountTokenFilterPolicy -Value 1
tomado de aquí:
No se puede montar el recurso compartido de Windows en Ubuntu
Básicamente lo que hace es deshabilitar el UAC para el acceso y mantenimiento remoto de recursos compartidos, así que tenga cuidado.
Esto podría ayudar a comprender mejor las implicaciones, así que asegúrese de si realmente desea hacer esto:
#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
Problemas con la copia de seguridad:
Querrá otra cuenta específica para backuppc que debe tener permisos de lectura para el recurso compartido.
Las opciones predeterminadas de backuppcs smbclient no incluyen -m SMB2
El comando que utiliza backuppc es:
/usr/bin/smbclient \\\\CLIENT-NAME\\SHARENAME -U Win10Username -E -N -d 1 -c tarmode\ full -Tc -
cambie eso para incluir -m SMB2
Después de eso todavía tengo 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
hacerlo manualmente con la contraseña agregada después de -U
/usr/bin/smbclient -m SMB2 \\\\CLIENT-NAME\\SHARENAME -U Win10Username WIN10Password -E -N -d 1 -c tarmode\ full -Tc -
obras
eliminar -N también me solicita la contraseña con la que funciona.
Como no quería almacenarlo dentro de un archivo de configuración de backuppc, en la versión final usaré el método de credencial.
Después de intentar descubrir cuál era la diferencia entre el comando backuppc y el comando smbclient manualmente, descubrí que el -N
resultado es un comportamiento diferente durante la conexión.
solución de trabajo sin -N (con nombre de usuario, contraseña o archivo de credenciales, no importó. El recurso compartido administrativo o no administrativo tampoco cambió nada)
/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
Dominio=[NOMBRE DEL CLIENTE] SO=[] Servidor=[] ... cortar
Versión que no funciona con -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
Solución de trabajo del cliente Backuppc Win10
Dada toda la información anterior, puedo hacer una copia de seguridad del recurso compartido administrativo de Win10 con las siguientes opciones de copia de seguridad:
SmbClientFullCmd:
Codificado:
$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.
Archivo de crédito:
$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.