sábado, 11 de julio de 2009

Mitos y leyendas: El Directorio Activo (III) (Última configuración buena conocida)

Cuando un controlador de dominio (o Windows en general) falla, existen algunos pasos que el administrador puede seguir para solucionar el problema, sin necesidad de recurrir a métodos drásticos como la reinstalación (algo poco viable en Directorios Activos en producción). Conocer a fondo para qué sirven los métodos de recuperación y cuáles son los que tenemos en nuestra mano, es esencial. Hoy hablaremos de la "Última configuración buena conocida", sobre la que no se suele saber mucho, o se usa de forma incorrecta.

Cuestión de drivers

Hay que entender que la "Última configuración buena conocida" está limitada prácticamente al entorno de los controladores, servicios y perfiles hardware. Windows almacena en el registro información de los controladores instalados, y mantiene copias de diferentes estados para volver a ellos en caso de error. Esto es esencial porque los controladores son la mayor parte de las veces, los culpables de los "pantallazos azules" o BSOD (Blue screen of death). Los drivers se mueven en una zona de memoria distinta a la de los usuarios (en un anillo diferente). El kernel y los drivers de sistema, están en el Ring0, el modo de ejecución de mayor privilegio para poder trabajar a bajo nivel con el hardware. Trabajar a tan bajo nivel implica que se tiene total control sobre la máquina y por tanto, una mayor responsabilidad (un fallo da al traste con todo el sistema operativo). El Ring3 un espacio en el que un fallo no resultaría tan crítico, porque no pueden acceder al hardware directamente, deben hacerlo a través de llamadas a sistema. MS-DOS, por ejemplo, carecía de este concepto. Todo corría bajo privilegios de Ring0, de ahí la inestabilidad general del sistema operativo ante cualquier fallo de cualquier programa.

¡No inicies sesión!

Para Windows, una configuración buena conocida es la última en el que el usuario ha conseguido abrir una sesión en ella, independientemente de los errores producidos durante el arranque. Está diseñada para permitir la recuperación ante un problema de controladores en el registro desde la última vez que se arranca Windows. Hay que tener en cuenta (al contrario de lo que muchos piensan) que con este método el sistema no se podrá recuperar de un fallo en la lectura por ejemplo de archivos esenciales del sistema operativo. "Última configuración buena conocida" no es una copia del sistema anterior, sino un recordatorio del conjunto de controladores que han funcionado correctamente en la última autenticación del usuario.

De hecho, el mensaje "error durante el inicio del sistema en al menos un servicio o controlador" que aparece en ocasiones antes de abrir una sesión o justo después de reiniciar tras la instalación de un controlador o algún cambio importante, sirve para alertar al usuario de que no debe iniciar sesión. Si el usuario es precavido y no inicia sesión, podrá reiniciar entonces en modo "Última configuración buena conocida" y los cambios volverán a cuando se presentó en el sistema la última vez (antes de instalar ese controlador que ha dado problemas). Si aparece pues este error antes de presentarnos en el sistema, es importante reiniciar sin llegar a abrir sesión para poder volver realmente a la "Última configuración buena conocida". Se aconseja por tanto, usar la "Última configuración buena conocida" antes que cualquier otra opción que pueda hacer que se sobrescriba esta configuración. No es necesario preocuparse por presentarse en el modo seguro del sistema, pues arrancar de esta forma no actualiza la configuración de la "Última configuración buena conocida". Por tanto, si no se ha podido resolver el problema a través del modo seguro, todavía sería posible usar esta opción.

Windows XP permite también seleccionar la "Última configuración buena conocida" cuando detecta que el último arranque del sistema no ha sido correcto. En este caso muestra un menú de forma automática (distinto al que se consigue presionando F8 durante el arranque) que incluye la posibilidad de utilizar la última configuración buena conocida.

Cómo funciona

Internamente, Windows administra varios juegos de configuraciones del sistema (habitualmente dos). Normalmente inicia con la configuración predeterminada que aloja la rama del registro HKLM\System\CurrentControlSet, que es un puntero al control que ha sido usado para arrancar (ControtSet001, ControlSet002, ControlSet003...). O sea, la información real es solo la que está en ControtSet00X, el resto son punteros.

Windows no actualiza esta información en el registro hasta que el sistema se inicia correctamente y alguien se autentica (se presenta) en él, asegurándose de esta forma que la información almacenada como "buena conocida" permite al menos que un usuario se presente. Esto lo hace ayudándose de una rama del registro oculta llamada "Clone". El registro juega con una serie de punteros (explicados más abajo) que van cambiando su valor, apuntando siempre a estos distintos ControlSet. La rama "Clone", representa una especie de variable temporal entre la configuración actual y la última buena conocida, para que no se sobrescriban entre ellas.

Punteros a configuraciones

La clave HKEY_LOCAL_MACHINE\SYSTEM\Select mantiene a su vez cuatro valores en su rama y almacena la información necesaria para que Windows organice los perfiles y sepa qué configuración es la última buena conocida. Son punteros que pueden establecerse a valores como 0, 1 ó 2 para indicar a qué ControlSet se refieren

* HKEY_LOCAL_MACHINE\SYSTEM\Select\Current: Indica qué ControlSet, ControlSet001 o ControlSet002 ha sido con el que se ha iniciado el sistema en esta sesión en concreto.

* HKEY_LOCAL_MACHINE\SYSTEM\Select\Default indica qué ControlSet es el perfil por defecto usado para arrancar la máquina. (Suele ser el ControlSet001)

* HKEY_LOCAL_MACHINE\SYSTEM\Select\Failed indica qué perfil de control ha fallado por última vez al intentar arrancar.

* HKEY_LOCAL_MACHINE\SYSTEM\Select\LaskKnownGood indica qué ControlSet será el conjunto tomado para arrancar si se elige "Última configuración buena conocida" durante el arranque.


Sergio de los Santos
ssantos@hispasec.com



No hay comentarios:

Publicar un comentario en la entrada