Capítulo 6: Tareas administrativas en Windows Server 2012 R2



6.11. El Visor de eventos

El Visor de eventos de Windows Server 2012 R2 es un complemento de Microsoft Management Console (MMC) que permite consultar y administrar de una forma potente y centralizada la información contenida en los múltiples registros de eventos (logs) de las aplicaciones y servicios de Windows.

El Visor de eventos resulta imprescindible para supervisar el funcionamiento del servidor y resolver cualquier incidencia.

Desde el Visor de eventos podremos realizar las siguientes tareas:

  • Consultar los eventos que se hayan producido.
  • Crear filtros para los eventos que más nos interesen y almacenarlos como vistas personalizadas que podemos volver a utilizar en cualquier momento.
  • Programar una tarea para que se ejecute en respuesta a una situación específica.
  • Establecer suscripciones a determinados eventos.

1

Para abrir el Visor de eventos, desde el Administrador del servidor, desplegamos el menú Herramientas y elegimos Visor de eventos.

Como en otras ocasiones, la ventana del Visor de eventos aparecerá dividida en tres paneles.

El panel de la izquierda aparece organizado a modo de árbol, donde nos encontramos diferentes categorías que podemos ir desplegando.

De momento, nos centraremos en la categoría Registros de Windows, que contiene una serie de subcategorías que, en su mayoría, resultarán familiares para los usuarios avanzados de otros sistemas de escritorio de Microsoft. En concreto, encontramos las siguientes:

  • Aplicación: Aquí anotan sus eventos las aplicaciones y los servicios que no forman parte del sistema
  • Seguridad: Incluye la información de los eventos relacionados con la seguridad del sistema.
  • Instalación: Donde se anotan la información de los eventos relativos a la configuración de roles y características.
  • Sistema: Contiene información relativa a los eventos del sistema y de sus componentes.
  • Eventos reenviados: Contiene información reenviada por otros sistemas de la red.

2

Aunque nosotros, de momento nos centraremos en Aplicación, Seguridad y Sistema.

Así, por ejemplo, si queremos ver los eventos del sistema relacionados con la Seguridad, hacemos clic en dicha categoría.

3

… Y podemos comprobar, por ejemplo, cuándo un usuario ha cometido un error al autenticarse.

La información sobre cada evento incluye su origen, un identificador (diferente para cada tipo de evento), la fecha y la hora en la que se produjo, el equipo en el que se ha producido, etc. Además, podremos encontrar un enlace, que nos llevará a una página web de Microsoft con más información sobre el tipo de evento.

Podremos utilizar el identificador para localizar rápidamente todos los eventos del mismo tipo.

Consultar los eventos que se hayan producido

Cuando recurrimos al Visor de eventos, es muy frecuente que estemos buscando un determinado tipo de evento que, a su vez, está relacionado con un problema en concreto.

Una de las principales ventajas del Visor de eventos es que nos permite filtrar eventos específicos, de manera independiente a la categoría concreta a la que pertenezcan. De esta forma, podremos ver todos los eventos relacionados con la situación que estamos investigando. Para conseguirlo, procederemos de la siguiente forma:

1

Para comenzar, hacemos clic sobre el enlace Crear vista personalizada

Aparecerá una ventana donde debemos definir el tipo de evento que estamos buscando.

Lo primero será indicar el periodo de tiempo en el que queremos centrar la búsqueda. Para lograrlo, disponemos de una lista desplegable.

El último elemento de la lista nos permite establecer un Intervalo personalizado. Es decir, podremos fijar la fecha y hora en la que comienza y en la que acaba el intervalo de tiempo en el que queremos centrarnos.

2

En nuestro ejemplo, nos limitaremos a los Últimos 30 días.

Debajo del intervalo, incluiremos el Nivel del evento. Aquí indicaremos si buscamos eventos críticos, de advertencia, etc. Si lo dejamos en blanco, serán tenidos en cuenta todos.

A continuación, indicaremos si buscamos eventos en función del registro en el que se encuentran o según su origen.

Si elegimos Por registro, podremos señalar a qué subcategoría pertenecen los eventos, dentro de las categorías Registros de Windows y Registros de aplicaciones y servicios.

3

Por ejemplo, podríamos todos los eventos relacionados con la subcategoría Seguridad.

Si elegimos Por origen, podemos especificar qué parte del sistema ha ocasionado el evento (por ejemplo, el spooler de impresión).

Al elegir el origen, se asigna de forma automática el valor adecuado en la subcategoría Por registro, sustituyendo a la que pudiéramos haber elegido en el punto anterior.

4

Para este caso, elegiremos Microsoft Windows security auditing.

En el siguiente cuadro de texto, podemos restringir los identificadores que serán tenidos en cuenta para la vista. Para conseguirlo, tenemos varias opciones:

  • Si necesitamos un único identificador, escribimos su número (por ejemplo: 4625).
  • Si queremos incluir varios identificadores, los separamos por comas (por ejemplo: 4624, 4625).
  • Para incluir un rango, escribimos el primero y el último de los repositorios que necesitamos incluir, separados por un guión (por ejemplo: 4650-4655).
  • También podemos incluir todo lo anterior, escribiendo identificadores individuales o rangos separados por comas (por ejemplo: 4698, 4700-4702, 4650-4655).
  • Incluso podemos eliminar un identificador en particular, de un rango dado, precediéndolo de un signo menos (Por ejemplo: 4698-4702, -4699).

5

En nuestro ejemplo, nos limitaremos al identificador 4625.

Debajo del filtro para los identificadores de eventos, podremos filtrar por una o varias categorías de tareas. Para conseguirlo, sólo tendremos que desplegar la lista Categoría de la tarea y seleccionar las que deseemos.

6

Nosotros nos inclinaremos por la categoría Inicio de sesión.

Otro aspecto que podemos utilizar en nuestra vista personalizada es el filtro por Palabras clave. De nuevo, podremos marcar las casillas que hay junto a las palabras de la lista desplegable que queramos utilizar.

7

En este caso, haremos clic sobre la casilla correspondiente a Error de auditoría.

Para terminar, podemos mostrar sólo los eventos que hagan referencia a usuarios o equipos en particular. Si necesitamos indicar varios elementos, deberemos separarlos con comas.

8

Cuando estemos listos, haremos clic sobre el botón Aceptar.

En ese momento, aparecerá la ventana Guardar filtro en vista personalizada. En la parte superior escribiremos un Nombre (en este caso, Errores de inicio) y una Descripción (que podemos dejar en blanco).

Debajo, indicaremos el lugar donde queremos guardar la vista personalizada. Podemos elegir la entrada Vistas personalizadas, del panel izquierdo del Visor de eventos, o cualquiera de sus subcarpetas. Incluso podemos crear una nueva subcarpeta usando el botón Nueva Carpeta.

También podemos indicar si queremos que la vista personalizada que estamos creando esté disponible para Todos los usuarios o sólo para el usuario que estamos utilizando en este momento.

9

Cuando hayamos terminado, hacemos clic sobre el botón Aceptar.

Como cabe esperar, una vez terminada la tarea, encontraremos la vista personalizada en el panel izquierdo del Visor de eventos.

10

Al elegir la vista, obtendremos, en el panel central, todos los eventos relacionados con dicha vista.

Si dejamos en blanco el cuadro de texto de una propiedad, estaremos indicando que se muestren todos los elementos para dicha propiedad.

Reutilizar filtros personalizados

Una vez creada la Vista personalizada, para volver a utilizarla en el mismo equipo sólo tenemos que buscarla en el panel de la izquierda.

1

Haremos clic sobre su nombre.

En el panel central volverán a aparecer los eventos filtrados por la Vista personalizada. Sin embargo, hay que tener en cuenta que la lista de sucesos se mantiene actualizada. Es decir, si se ha producido algún nuevo evento de este tipo desde la última vez que se consultó, este también aparecerá recogido en la lista.

2

Como pude verse en la imagen, hay nuevos eventos en la parte superior de la lista.

Una vez que hemos creado una Vista personalizada, podemos guardarla en un archivo externo para utilizarla en otro sistema (o usarla a modo de copia de seguridad en el sistema actual).

3

Para lograrlo, haremos clic sobre el enlace Exportar vista personalizada en el panel derecho.

Al hacerlo, aparecerá una ventana del tipo Guardar como. De forma predeterminada, el archivo de guarda en formato XML.

4

Sólo tenemos que elegir el destino, el nombre y hacer clic sobre el botón Guardar.

Si deseamos utilizar el archivo en otro equipo, sólo tendremos que elegir alguna ubicación de un volumen extraible (por ejemplo, una memoria USB).

5

Podemos comprobar que se ha guardado correctamente abriendo el Explorador de archivos y desplazándonos hasta la carpeta de destino.

Más tarde, cuando necesitemos restaurar el archivo anterior, sólo tenemos que hacer clic sobre el enlace Importar vista personalizada que hay en el panel derecho.

6

Como hemos dicho antes, esta operación la podemos hacer en un equipo diferente, para reutilizar la Vista personalizada.

Cuando aparezca la ventana Importar vista personalizada, la utilizaremos para localizar la ubicación del archivo exportado.

7

Cuando lo localicemos, haremos clic sobre él y a continuación sobre el botón Abrir.

En ese momento, se abrirá la ventana Importar archivo de vista personalizada (que es idéntica a la ventana Guardar filtro en vista personalizada, que vimos en el apartado anterior). Como antes, en la parte superior escribiremos un Nombre y una Descripción.

Y de nuevo, en la parte inferior, indicaremos el lugar donde queremos guardar la vista personalizada e indicaremos si queremos que la Vista personalizada esté disponible para Todos los usuarios o sólo para el usuario que estamos utilizando en este momento.

8

Cuando estemos listos, haremos clic sobre el botón Aceptar.

De esta forma, volveremos a tener la Vista personalizada lista para usar.

Programar una tarea para que se ejecute con un evento específico

En Windows Server 2012 R2, el Visor de eventos se integra perfectamente con el Programador de tareas. De esta forma, podemos asociar una tarea programada a un evento que cumpla unos criterios en particular. Así, cada vez que se produzca dicho evento, se ejecutará la tarea correspondiente.

No todos los eventos admiten este tipo de tratamiento, pero sí la mayoría.

A modo ilustrativo, aquí vamos a ver cómo crear un script que envíe un correo electrónico al administrador con información sobre un evento del sistema. A continuación, veremos cómo programar una tarea para que ejecute el script cada vez que se produzca un evento.

Programar un script en PowerShell que envíe un e-mail

El primer inconveniente que encontraremos cuando tratemos de ejecutar scripts de PowerShell en Windows Server 2012 R2 es que esta posibilidad está restringida por cuestiones de seguridad. No obstante, para levantar la restricción sólo tenemos que hacer lo siguiente:

Comenzamos por abrir una ventana de PowerShell.

1

Hacemos clic sobre el botón Inicio con el botón derecho del ratón y, en el menú de contexto que aparece, elegimos Ejecutar.

Esto hará que se abra la ventana Ejecutar. En ella, escribimos la orden powershell.

2

Cuando hayamos acabado, hacemos clic sobre el botón Aceptar.

Cuando se abra la ventana de Windows PowerShell, escribiremos la siguiente orden:

Set-ExecutionPolicy RemoteSigned

3

Escribimos la orden y pulsamos la tecla Intro.

Durante la ejecución, PowerShell nos avisa de que lo que estamos haciendo es cambiar el lugar desde el que podemos ejecutar scripts en el servidor y nos remite a una dirección de Internet donde Microsoft nos explica en detalle en qué consisten dichos riesgos.

4

Si, a pesar de todo, estamos de acuerdo con ejecutar el cmdlet, pulsamos la tecla S y después Intro o simplemente la tecla Intro, ya que es el valor predeterminado.

El cmdlet Set-ExecutionPolicy RemoteSigned sólo debe ejecutarse la primera vez que necesitemos ejecutar script de PowerShell en el sistema y, por supuesto, siempre con privilegios de Administrador.

Ya que tenemos la consola abierta, podemos aprovechar para crear la carpeta donde guardar nuestros scripts. Por ejemplo, escribiendo lo siguiente:

mkdir c:\scripts

Donde c:\scripts es el nombre del directorio que hemos elegido. Tú puedes llamarlo de cualquier otra forma.

5

Una vez escrita la orden, pulsamos la tecla Intro.

Puedes encontrar más información sobre el cmdlet Set-ExecutionPolicy en la dirección http://technet.microsoft.com/en-us/library/ee176961.aspx

Una vez completado el trámite anterior, ya podemos comenzar con el contenido del script propiamente dicho. Podríamos hacerlo usando simplemente el Bloc de notas de Windows, pero PowerShell dispone de un entorno integrado para escribir scripts, que es mucho más fácil de utilizar, llamado PowerShell ISE (Integrated Scripting Engine).

En PowerShell ISE podemos, sin abandonar su entorno, escribir comandos y cmdlets, escribir scripts, probarlos y depurarlos. Además, incluye coloreado de sintaxis, auto-completado de cmdlets, edición multilínea, y un largo etcétera.

Para ejecutarlo, hacemos clic sobre el botón Inicio con el botón derecho del ratón.

1

En el menú de contexto que aparece, elegimos Ejecutar.

Esto hará que se abra la ventana Ejecutar. En ella, podríamos escribir la siguiente orden, para abrir la aplicación:

PowerShell_ISE

Esto haría que se abriera la interfaz con el área de trabajo en blanco, lista para comenzar a trabajar.

Sin embargo, nosotros optaremos por abrir el programa, indicando el nombre del script con el que vamos a trabajar. Como aún no existe, también estará en blanco el área de trabajo, pero ya hemos creado el archivo (aunque aún esté vacío). Sólo quedará comenzar a escribir órdenes. Para conseguirlo, escribimos la siguiente orden:

PowerShell_ISE c:\scripts\Enviar-Eventos.ps1

2

A continuación, hacemos clic sobre el botón Aceptar.

Cuando se abra el entorno del programa, sólo tendremos que comenzar a escribir el siguiente script en su área de trabajo:

$from       = "notificar@somebooks.es"
$smtpServer = "smtp.somebooks.es"

$to         = "admin@somebooks.es"
$subject    = "Notificación de $($env:computername)"

$evento = Get-EventLog -LogName "Security" -Newest 1

$body = @"
Evento a revisar en $($evento.MachineName)
Identificador: $($evento.EventId)
Fuente: $($evento.Source)
Tipo:  $($evento.EntryType)
Fecha / Hora:  $($evento.TimeGenerated)
Texto:  $($evento.Message)
"@

$smtpClient = New-Object System.Net.Mail.SmtpClient($smtpServer, 587)
$smtpClient.EnableSsl = $true
$smtpClient.Credentials = New-Object System.Net.NetworkCredential("notificar", "12345")
$smtpClient.Send($from, $to, $subject, $body)

Estamos suponiendo que usamos una cuenta de correo para enviar las notificaciones (notificar@somebooks.es), con un determinado servidor SMTP (smtp.somebooks.es), un usuario (notificar) y una contraseña (12345). Lógicamente, son datos de ejemplo, pero, en cualquier caso, es muy recomendable utilizar una cuenta diferenciada para este objetivo y no utilizar, por ejemplo, la cuenta administrador para enviar y para recibir los correos. El motivo es evidente: estamos incluyendo la contraseña en el script y, aunque es poco probable, si se viese comprometida, estaríamos poniendo en riesgo todo el correo del administrador.

Algo que debes tener en cuenta es que el valor 587 hace referencia al puerto que utiliza el protocolo SMTP para enviar correos mediante SSL (Secure Sockets Layer). Si el servidor SMTP que usamos no utiliza SSL, habría que sustituir este valor por 25 y cambiar la línea $smtpClient.EnableSsl = $true por $smtpClient.EnableSsl = $false.

La explicación detallada del funcionamiento del script no se encuentra entre los objetivos de este libro. En cualquier caso, puedes encontrar más información sobre la clase SmtpClient en la siguiente dirección: http://msdn.microsoft.com/es-es/library/system.net.mail.smtpclient%28v=vs.110%29.aspx

En cuanto al cmdlet Get-EventLog, puedes encontrar más información en: http://technet.microsoft.com/en-us/library/hh849834.aspx

Cuando termines de escribir (o copiar) el código del script, sólo tienes que grabarlo

3

Hacemos clic sobre el botón Grabar.

Si quieres, puedes probar a ejecutarlo desde la propia interfaz gráfica. Si todo es correcto, debes recibir un e-mail en la cuenta de destino con el último evento que se haya producido en la categoría Security.

Programar una tarea para que ejecute el script

Una vez que hemos creado el script, sólo queda vincularlo con una tarea programada que se ejecute cuando se produzca un evento. Para conseguirlo, comenzaremos por abrir el Visor de eventos (como sabes, lo encontramos dentro del menú Herramientas del Administrador del servidor) y localizar un evento del tipo al que queramos asociarle la tarea programada. En nuestro caso utilizaremos los eventos filtrados por la Vista personalizada.

1

A continuación, hacemos clic sobre cualquiera de ellos con el botón derecho del ratón y, en el menú de contexto, elegimos Adjuntar tareas a este evento

Se abrirá el Asistente para crear una tarea básica. Como puedes apreciar, la ventana del asistente es prácticamente idéntica a la que aparecía en el Programador de tareas.

En este caso, el Nombre de la tarea aparece predefinido, con la información del evento del que hemos partido. Sin embargo, si queremos, podemos cambiarlo. También disponemos de un cuadro de texto para la Descripción, que podemos rellenar, o no, según nuestro criterio.

2

Si no queremos hacer modificaciones, podemos limitarnos a hacer clic sobre el botón Siguiente.

En la programación de una tarea normal, el siguiente paso correspondería al Desencadenador. Sin embargo, en este caso, al tratarse de un evento, ya se encuentra definido y lo único que podemos hacer es comprobar que todo es correcto.

3

Si estamos de acuerdo, hacemos clic sobre el botón Siguiente.

El siguiente paso corresponde a la Acción y también es prácticamente idéntico al del Programador de tareas. Ya dijimos en su momento que tanto Enviar un correo electrónico como Mostrar un mensaje se encuentran en desuso y no podremos establecer acciones de estas categorías.

4

Por lo tanto, elegimos Iniciar un programa y hacemos clic sobre el botón Siguiente.

A continuación, deberemos indicar el Programa o script que queremos ejecutar. En este caso, escribiremos el nombre del intérprete que debe ejecutar el script. Es decir:

powershell

En el cuadro Agregar argumentos (opcional), usaremos el atributo -File, seguido de la ruta completa hasta el script. En este caso:

-File c:\scripts\Enviar-Eventos.ps1

5

Cuando hayamos terminado, hacemos clic sobre el botón Siguiente.

Después de esto, habremos llegado al final del Asistente para crear tareas básicas, por lo que el sistema nos ofrece un resumen de los valores que hemos introducido en los puntos anteriores. Si observamos algún error, podremos subsanarlo haciendo clic sobre el botón Atrás, hasta llegar al aspecto que necesitemos cambiar.

Antes de terminar, deberemos asegurarnos de marcar la casilla Abrir el diálogo Propiedades para esta tarea al hacer clic en Finalizar, porque hay un par de valores que debemos cambiar antes de dar la tarea por concluida.

6

Si todo es correcto, haremos clic sobre el botón Finalizar.

Al hacerlo, se abrirá la ventana Propiedades de, seguido del nombre de la tarea. Aquí, dentro de la solapa General, deberemos asegurarnos de marcar dos opciones:

  • Ejecutar tanto si el usuario inició sesión como si no.
  • Ejecutar con los privilegios más altos.

7

Después, sólo quedará hacer clic sobre el botón Aceptar.

Probablemente, cuando hagamos clic cobre el botón Aceptar para guardar los cambios que hayamos realizado, el sistema nos pida que nos identifiquemos como administradores.

8

Escribimos la contraseña correcta y hacemos clic sobre el botón Aceptar.

Si todo ha ido bien, el Visor de eventos muestra un aviso indicando que ha creado una nueva tarea programada y que, si queremos modificara, deberemos acudir al Programador de tareas.

9

Hacemos clic, de nuevo, sobre el botón Aceptar.

Si todo es correcto, cada vez que se produzca un evento 4625 (es decir, alguno de los usuarios ha cometido un error en su autenticación), el administrador recibirá un correo electrónico informándolo. Obviamente, no será importante que alguien se confunda de forma esporádica al escribir su contraseña, pero si alguien está intentando acceder de forma no autorizada, probablemente probará con multitud de combinaciones y recibiremos un número elevado de correos de aviso.

10

Contenido del correo producido por el evento.

Relación de eventos de seguridad en Windows Server 2008

Puedes encontrar una relación completa de los eventos de seguridad en Windows Vista y Windows Server 2008 (que también son válidos para otras versiones, como Windows 7, 8, 8.1 y Windows Server 2012) en la siguiente dirección:
http://support.microsoft.com/default.aspx?scid=kb;EN-US;947226