locked
Cambio Administrador local en estaciones de trabajo de un dominio RRS feed

  • Pregunta

  • Buenas Noches

    Tengo el siguiente escenario:

    Un dominio Windows 2003 R2 con 25000 estaciones de trabajo con Windows XP SP3.

    Las estaciones de trabajo cuando se instalan y antes de ingresarlas al dominio se les renombra el usuario administrador local de "Administrador" a XXXXXX. En el dominio tengo habilitada una política habilitada que renombra el usuario administrador local a XXXXXX. Este usuario lleva mucho tiempo en uso y se decidió cambiar el usuario administrador local de las estaciones y cambiarle la contraseña, el nuevo usuario administrador local de las estaciones será YYYZZZ. Para cumplir este con este requerimiento del cliente se cambio la política que renombra el usuario administrador de las estaciones para que sea YYYZZZ y monte un script que se ejecuta en el startup de las estaciones que realiza el cambio de contraseña del administrador local. Hasta aquí todo sin problemas, todo funciona muy bien. El problema que tengo es el siguiente:

    Mientras la estación esta en el dominio el usuario administrador local es YYYZZZ y funciona súper bien, pero en el momento de sacar la maquina del dominio el usuario administrador local de la estaciones cambia XXXXXX y queda con la contraseña del usuario YYYZZZ. Según algunas pruebas que he realizo veo que este comportamiento es normal, cuando una estación es sacada de un dominio el administrador local cambia al que tenía antes de ser ingresada al dominio. Existe alguna forma de impedir que cuando la estación se saque del dominio se cambie el usuario administrador local cambie al que tenía antes??, no se modificando el registro de Windows o algo.

    Agradezco cualquier ayuda que me puedan dar con este tema ya que para el cliente es muy importante realizar esto.

    Gracias

     


    Juan David Puerta
    viernes, 9 de julio de 2010 2:25

Respuestas

  • Eso puede pasar porque al procesar las políticas las de dominio prevalecen sobre las de equipo. Como en los equipos debes tener todavía la política que renombra a XXXXXX, al sacar la máquina de dominio el administrador toma ese nombe. Cuando el equipo está en dominio se procesan primero las políticas de equipo y el administrador es nombrado como XXXXXX, luego se procesan las de dominio y pasa a ser YYYZZZ, al sacar el equipo del dominio solo se procesa la local y queda como XXXXXX. Como en realidad se trata del mismo usuario, aunque el nombre cambie (no cambia su SID, que es lo que realmente le identifica), y no tienes el script que establece la contraseña en las políticas locales, XXXXXX sigue teniendo la contraseña que tenía cuando se llamaba YYYZZZ.

    Tienes que cambiar las políticas de los equipos locales. Por desgracia esta no es una política que se guarde en el registro, por lo que no se puede crear un script que modifique en el registro el valor de esta política. Podrías hacerlo por GPO, como script de inicio de equipo, con un script como éste (para establecer el nombre basta con que cambies la asignación que se hace al principio a str_NuevoAdministrador):

     

    Dim str_Equipo
    Dim obj_Usuario
    Dim obj_NuevoAdministrador
    Dim obj_Equipo
    Dim str_Administrador
    Dim str_NuevoAdministrador
    
    str_NuevoAdministrador = "OfeliaAdmin"
    
    'Obtenemos el nombre actual del administrador local
    str_Administrador = f_NombreAdministrador
    
    'Obtenemos los objetos ADSI del equipo local y el usuario
    'administrador 
    Set obj_Equipo = GetObject("WinNT://" & str_Equipo)
    Set obj_Administrador = GetObject("WinNT://" & str_Equipo & _
                  "/" & str_Administrador & ",user")
    
    'Renombramos la cuenta del administrador
    Set obj_NuevoAdministrador = obj_Equipo.MoveHere( _
                      obj_Administrador.ADsPath, _
                      str_NuevoAdministrador)
    
    Function f_NombreAdministrador()
    
      Dim f_ServicioWMI
      Dim str_Consulta
      Dim col_Usuarios
      Dim obj_Usuario
      Dim obj_NW
      
      'Creamos un objeto wshNetwork
      Set obj_NW = CreateObject("WScript.Network")
      
      'Obtenemos el nombre del equipo
      str_Equipo = obj_NW.ComputerName 
      
      'Conectamos con WMI
      Set f_ServicioWMI = GetObject( _
                "winmgmts:{impersonationLevel=impersonate}!//" & _
                     str_Equipo)
    
      'Establecemos una consulta que busque los usuarios locales exclusivamente
      str_Consulta = "SELECT * FROM Win32_Account WHERE Domain = '" & _
              str_Equipo & "'"
      
      'Obtenemos la colección de usuarios locales
      Set col_Usuarios = f_ServicioWMI.ExecQuery(str_Consulta)
      
      'Recorremos la colección de usuarios locales
      For Each obj_Usuario In col_Usuarios
      
        'El SID del administrador local siempre comienza por
        'S-1-5- y termina con -500; esto es lo que nos permite
        'localizarle
        If (Left(obj_Usuario.SID, 6) = "S-1-5-" _
        And Right(obj_Usuario.sid,4) = "-500") Then
        
          f_NombreAdministrador = obj_Usuario.Name
          
        End If
      Next
    
    End Function
    

     


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    viernes, 9 de julio de 2010 8:57
    Moderador
  • El script sólo se ejecutará en los equipos que pertenecen al dominio, no en los que están fuera, pues para que se ejecute en los que están fuera es necesario que asignes a su política local el nuevo valor para el nombre del usuario administrador, lo que enlaza con el párrafo que viene a continuación.

    Puedes probar a tener un equipo configurado y copiar su carpeta %WindDir%\system32\GroupPolicy a los que quieras aplicar las mismas politicas sustituyendo esa misma carpeta. Este procedimiento sólo lo efectuaría en los equipos que ya están fuera del dominio y a los que están en el dominio lo haría vía GPO, porque cambiar por este medio 25000 estaciones es como limpiar la Vía Apia con un cepillo de dientes, y ademas provocaría mucho tráfico de red.



    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    martes, 13 de julio de 2010 6:46
    Moderador

Todas las respuestas

  • Eso puede pasar porque al procesar las políticas las de dominio prevalecen sobre las de equipo. Como en los equipos debes tener todavía la política que renombra a XXXXXX, al sacar la máquina de dominio el administrador toma ese nombe. Cuando el equipo está en dominio se procesan primero las políticas de equipo y el administrador es nombrado como XXXXXX, luego se procesan las de dominio y pasa a ser YYYZZZ, al sacar el equipo del dominio solo se procesa la local y queda como XXXXXX. Como en realidad se trata del mismo usuario, aunque el nombre cambie (no cambia su SID, que es lo que realmente le identifica), y no tienes el script que establece la contraseña en las políticas locales, XXXXXX sigue teniendo la contraseña que tenía cuando se llamaba YYYZZZ.

    Tienes que cambiar las políticas de los equipos locales. Por desgracia esta no es una política que se guarde en el registro, por lo que no se puede crear un script que modifique en el registro el valor de esta política. Podrías hacerlo por GPO, como script de inicio de equipo, con un script como éste (para establecer el nombre basta con que cambies la asignación que se hace al principio a str_NuevoAdministrador):

     

    Dim str_Equipo
    Dim obj_Usuario
    Dim obj_NuevoAdministrador
    Dim obj_Equipo
    Dim str_Administrador
    Dim str_NuevoAdministrador
    
    str_NuevoAdministrador = "OfeliaAdmin"
    
    'Obtenemos el nombre actual del administrador local
    str_Administrador = f_NombreAdministrador
    
    'Obtenemos los objetos ADSI del equipo local y el usuario
    'administrador 
    Set obj_Equipo = GetObject("WinNT://" & str_Equipo)
    Set obj_Administrador = GetObject("WinNT://" & str_Equipo & _
                  "/" & str_Administrador & ",user")
    
    'Renombramos la cuenta del administrador
    Set obj_NuevoAdministrador = obj_Equipo.MoveHere( _
                      obj_Administrador.ADsPath, _
                      str_NuevoAdministrador)
    
    Function f_NombreAdministrador()
    
      Dim f_ServicioWMI
      Dim str_Consulta
      Dim col_Usuarios
      Dim obj_Usuario
      Dim obj_NW
      
      'Creamos un objeto wshNetwork
      Set obj_NW = CreateObject("WScript.Network")
      
      'Obtenemos el nombre del equipo
      str_Equipo = obj_NW.ComputerName 
      
      'Conectamos con WMI
      Set f_ServicioWMI = GetObject( _
                "winmgmts:{impersonationLevel=impersonate}!//" & _
                     str_Equipo)
    
      'Establecemos una consulta que busque los usuarios locales exclusivamente
      str_Consulta = "SELECT * FROM Win32_Account WHERE Domain = '" & _
              str_Equipo & "'"
      
      'Obtenemos la colección de usuarios locales
      Set col_Usuarios = f_ServicioWMI.ExecQuery(str_Consulta)
      
      'Recorremos la colección de usuarios locales
      For Each obj_Usuario In col_Usuarios
      
        'El SID del administrador local siempre comienza por
        'S-1-5- y termina con -500; esto es lo que nos permite
        'localizarle
        If (Left(obj_Usuario.SID, 6) = "S-1-5-" _
        And Right(obj_Usuario.sid,4) = "-500") Then
        
          f_NombreAdministrador = obj_Usuario.Name
          
        End If
      Next
    
    End Function
    

     


    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    viernes, 9 de julio de 2010 8:57
    Moderador
  • Buenas Noches

    Estuve revisando y efectivamnete las maquinas tienen una politica que renonbra el usuario administrador local a XXXXXX y es por esto que cuando las maquinas estan en el dominio el usuario administrador local es YYYZZZ pero cuando sacan alguna maquina del dominio el usuario es renombrado a XXXXXX.

    Al colocar este script en una GPO de dominio que se ejecute en el startup de las estaciones funcionaria incluso cuando la maquina esta fuera del domnio?

    Existe alguna forma de modificar la politica local de las estaciones en forma masiva? nose creando alguna plantilla y copiando esta plantilla en alguna ruta? que deberia de hacer para modificar esta politica local de forma masiva en las 25000 estaciones que tengo en el dominio??

    Gracias


    Juan David Puerta
    martes, 13 de julio de 2010 2:57
  • El script sólo se ejecutará en los equipos que pertenecen al dominio, no en los que están fuera, pues para que se ejecute en los que están fuera es necesario que asignes a su política local el nuevo valor para el nombre del usuario administrador, lo que enlaza con el párrafo que viene a continuación.

    Puedes probar a tener un equipo configurado y copiar su carpeta %WindDir%\system32\GroupPolicy a los que quieras aplicar las mismas politicas sustituyendo esa misma carpeta. Este procedimiento sólo lo efectuaría en los equipos que ya están fuera del dominio y a los que están en el dominio lo haría vía GPO, porque cambiar por este medio 25000 estaciones es como limpiar la Vía Apia con un cepillo de dientes, y ademas provocaría mucho tráfico de red.



    Un saludo

    Fernando Reyes [MS MVP]
    MCSA 2000/2003
    MCSE 2000/2003
    MCITP EnterpriseAdministrator
    Web: http://freyes.svetlian.com
    Blog: http://urpiano.wordpress.com
    RSS: http://urpiano.wordpress.com/feed/
    freyes.champú@champú.mvps.org
    (Aclárate la cabeza si quieres escribirme)
    martes, 13 de julio de 2010 6:46
    Moderador
  • Buenos Dias

    Realizare algunas pruebas de copiar la carpeta que me indicas y te cuento.

    Gracias


    Juan David Puerta
    martes, 13 de julio de 2010 11:46
  • Hola Juan,

    Qué tal? Espero que todo vaya bien :)

    Has tenido alguna novedad sobre el incoveniente?

    Un saludo,


    Átilla Arruda - Microsoft Corporation
    Blog: http://www.atillaarruda.com.br/
    viernes, 16 de julio de 2010 19:07
    Moderador