Administrando usuario remotos de Windows Server, Samba4 o AD Domain Controller desde la terminal de GNU Linux "Centos 8, Debian, RHLE, Otros *NIX"
Con las nuevas versiones de samba 4.6 hasta la ultima a la fecha de este articulo, intente cambiar la contraseña de un usuario del domino utilizando un archivo ldif (LDAP Data Interchange Format) o el comando smbpasswd que tradicionalmente utilizaba y sin alterar los schema, pero me encontré con diferentes errores, navegando en la documentación de samba encontré que algunas versiones de Samba4 e incluso samba3 no permitían modificar remotamente los atributos confidenciales y que desde esa versión en adelante dichos atributos se almacenaban localmente en el AD Domain Controller.
Por ejemplo, si intentamos cambiar desde un file.ldif cualquiera de los atributos restringidos, puede que nos muestre uno de estos errores o simplemente no te funcione, mas abajo dejo una opción como cambiar la clave correctamente.
ldap_add: Server is unwilling to perform (53) additional info: 00002035: setup_io: it's not allowed to set the NT hash password directly'
Enter LDAP Password: modifying entry "CN=user2,CN=Users,dc=domain1,dc=local" ldap_modify: Server is unwilling to perform (53) additional info: 00002035: setup_io: it's not allowed to set the NT hash password directly'
Aprovecho para colocar dos comando como opciones que he utilizado para crear las claves y colocarlas en los atributos por ej. unicodePwd:: base 64:
# echo -n '"SuperP0sswd"' | iconv -f utf8 -t utf16le | base64 -w 0 # printf '"SuperP0sswd"' |iconv -f ascii -t UTF16LE|base64
Una forma de verificar la clave seria con el comando base64, es importante que antes de convertir la clave a base 64 les coloquemos las comillas a la contraseña y el que el tributo unicodePwd tenga los dobles dos puntos unicodePwd::
# echo IgBTAHUAcABlAHIAUAAwAHMAcwB3AGQAIgA=|base64 -d
No importa que intente modificarlo con el comando ldapmodify
# ldapmodify -x -H ldap://1.1.1.1 -D "CN=admin,CN=Users,DC=domain1,DC=local" -W -f ldap2_file.ldif
Muestro el contenido del archivo ldap_file.ldif
# cat ldap_file.ldif dn: CN=user1,CN=Users,dc=doamin1,dc=local changetype: modify replace: unicodePwd unicodePwd:: IgBTAHUAcABlAHIAUAAwAHMAcwB3AGQAIgA=
Sin importar que intente hacerlo directamente al momento de crear el usuario, "el comando ldapmodify o su link ldapadd" y obvio que si creas tus propios schema u objetos podrás hacer lo que quieras, pero por defecto como muestro en el ejemplo no fue posible.
ldapadd -x -H ldap://1.1.1.1 -D "CN=admin,CN=Users,DC=domain1,DC=local" -W -f ldap2_file.ldif
Muestro el contenido del archivo ldap_file.ldif
#cat ldap2_file.ldif dn: CN=user2,Users,DC=domain1,DC=local objectClass: top objectClass: person objectClass: organizationalPerson objectClass: user cn: usermailsrv2 givenName: user2 instanceType: 4 displayName: user2 name: usermailsrv sAMAccountName: user2 userPrincipalName: user2@domain1.com userPassword: SuperP0sswd unicodePwd:: IgBTAHUAcABlAHIAUAAwAHMAcwB3AGQAIgA= …
Sin mas preámbulo, asegúrate de tener instalado samba-common, aunque existen muchos otros métodos (ssh, ansible, etc), uno de los que mas utilizo por ser completamente directo al sistema es el comando de red net rpc.:
Como cambiar la contraseña de un usuario remoto desde la línea de comando, la consola o terminal con Remote procedure call (RPC)
# net rpc password user2 SuperNewP0sswd -U admin%AdminPW -S 1.1.1.1
Como agregar un usuario desde el terminal de Centos 8 a un AD Domain Controller Samba4.
# net rpc user add user3 -S 1.1.1.1 -U admin%AdminPW
Como eliminamos un usuario desde el cli en un AD Controlador de dominio.
net rpc user delete user3 -S 1.1.1.1 -U admin%AdminPW net rpc user delete jacko -Uroot%not24get
Como listar todo los usuarios desde el terminal a un servidor remoto con AD
net rpc rights list accounts -S 1.1.1.1 -U admin%AdminPW
Como apagar el servidor AD Domain Controller o Cualquier Windows de manera remota.
# net rpc shutdown -S 1.1.1.1 -U admin%AdminPW # net rpc shutdown -I 1.1.1.1 -U admin%AdminPW
Como listar los servicios del AD Domain Controller
net rpc service list -S 1.1.1.1 -U admin%AdminPW
Como iniciar un servicio del AD Domain Controller
net rpc service start NETLOGON -S 1.1.1.1 -U admin%AdminPW
Como detener un servicio del AD Domain Controller
net rpc service stop NETLOGON -S 1.1.1.1 -U admin%AdminPW
Como ver el estado de un servicio del AD Domain Controller
net rpc service status NETLOGON -S 1.1.1.1 -U admin%AdminPW
En caso de mas opciones, en la documentación de samba esta toda la que necesitamos.
Thanks for your blog, nice to read. Do not stop.