Archives for febrero 2009

Security Art Work

Como sabrán si visitan blogs de manera asidua, cualquier blog que se precie está obligado a dedicar una parte de sus entradas a mirarse el ombligo, o si quieren llamarlo así, a publicar “metaentradas”, cuya única finalidad es hablar del propio blog. Puesto que en los casi 2 años que llevamos de vida apenas nos hemos dado palmaditas en la espalda, y aprovechando la actualización e instalación del WordPress y diversos plugins, he creído conveniente aprovechar esta entrada para que Security Art Work hable de sí mismo.

En cifras, desde el pasado 25 de abril de 2007 llevamos publicadas un total de 220 entradas, sin contar la presente, que han recibido un total de 284 comentarios, es decir una media de 1.29 comentarios por entrada, valor que, todo sea dicho, es francamente mejorable. Si nos vamos a las estadísticas, aunque durante su comienzo los números fueron bastante modestos, lo cierto es que durante los últimos meses Security Art Work ha experimentado un apreciado incremento de suscriptores y visitantes, especialmente a raíz de la aparición en portada de menéame de la entrada sobre la rotura de WPA/WPA2 anunciada por Elcomsoft; tampoco crean que estamos hablando de un aumento impresionante, tal y como verán en las gráficas de debajo.

A partir de los datos de Feedburner (i.e. Google), la gráfica de suscriptores es la siguiente (la caída a mediados de enero fue provocada por un error de Google en la migración de feeds a sus sistemas):

Suscriptores

Mientras que esta es la gráfica de visitas, sacada de Google Analytics:

analytics

Esos son los números de Security Art Work. Como editor y principal colaborador del blog, mi opinión es que el margen de mejora tanto de visitantes/lectores, incluso manteniendo las cifras en una escala “modesta”, es todavía inmenso, y lo mismo puede decirse de la frecuencia de publicación del blog; cada tres días aproximadamente ha habido una nueva entrada, y aunque puede verse como el vaso medio lleno, me permitirán que me quede con el vaso medio vacío. Al fin y al cabo, ya saben que como dijo Antonio Mingote, un pesimista no es otra cosa que un optimista bien informado.

Para acabar, les dejo con una encuesta, que actualizaré cada jueves y a la que podrán acceder a través de la entrada en cuestión y a través de la columna de la derecha. Naturalmente, tras esta breve pausa retomamos nuestra programación habitual, más y mejor si cabe.


[poll id=”3″]

Sistemas Windows: Caídas e inicios de servidor

Los administradores de sistemas necesitamos tener constancia en todo momento de: los períodos de tiempo entre caídas de servidor, así como determinar cuando se ha producido una caída o un apagado ordenado de un sistema. En los sistemas Windows, toda esta información se almacena en el Visor de Sucesos, lo cual supone de gran ayuda para entornos no monitorizados. El problema que surge es la escasa “manejabilidad” de este registros de eventos y su extracción de información, por lo que con objeto de facilitar su tratamiento voy a dar información muy básica sobre este sistema, y cómo extraer información de una manera sencilla.

Cada tipo determinado de información viene marcada por un número de Identificador de evento, que indica un tipo distinto de acción en el servidor. Por ejemplo, respecto a las caídas e inicios de servidor podemos observar tres eventos tipo:

Evento 6006, que refleja que se detiene el Registro de sucesos. Esto indica por regla general un cierre ordenado del sistema, aunque evidentemente podría detenerse únicamente el servicio de registro de sucesos:

c:\> net stop eventlog

Tipo de suceso: Información
Origen del suceso: EventLog
Categoría del suceso: Ninguno
Id. suceso: 6006
Fecha: dd/mm/aaaa
Hora: hh:mm:ss
Usuario: No disponible
Equipo: MISERVIDOR
Descripción:
Se ha detenido el servicio de Registro de sucesos.

Evento 6009, que refleja que el servidor ha sido iniciado.

Tipo de suceso: Información
Origen del suceso: EventLog
Categoría del suceso: Ninguno
Id. suceso: 6009
Fecha: dd/mm/aaaa
Hora: hh:mm:ss
Usuario: No disponible
Equipo: MISERVIDOR
Descripción:
Microsoft (R) Windows (R) 5.02. 3790 Service Pack 2 Multiprocessor Free.

Evento 6008. Este evento nos avisa de cuando se produjo una caída inesperada de sistema, lo cual nos proporciona información para poder determinar que otros sucesos ocurrieron entorno a ese hora/día y determinar las causas de la caída del sistema.

Tipo de suceso: Error
Origen del suceso: EventLog
Categoría del suceso: Ninguno
Id. suceso: 6008
Fecha: dd/mm/aaaa
Hora: hh:mm:ss
Usuario: No disponible
Equipo: MISERVIDOR
Descripción:
El cierre anterior del sistema a las hh:mm:ss del dd/mm/aaaa resultó inesperado.

Una vez sabemos dónde tenemos que buscar la información, queda la cuestión de cómo estructurarla. Aunque se pueden aplicar filtros en el Visor de sucesos para la búsqueda de información, a continuación planteo una forma más automatizada para la obtención de dicha información, y a través de la que podremos exportar la información. Para ello utilizaremos lenguaje VBS.

El siguiente script (que obviamente, y como disclaimer previo, deberán utilizar bajo su propia responsabilidad y de cuyos posibles efectos perjudiciales no asumimos responsabilidad alguna) se encarga de realizar un volcado de la información a un fichero .txt. Si bien es cierto que la información volcada al fichero es pequeña, en esta entrada simplemente trato de abrir la puerta a las posibilidades que nos ofrece el hecho de automatizar procesos de obtención de información. El resto se deja como ejercicio para el lector interesado (o necesitado).

REM Definimos la máquina (en este caso local)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

REM Creamos fichero para añadir texto
Const ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile ("c:\informe.txt", ForAppending, True)

REM Recolectamos los eventos de Sistema con EventID: 6009)
Set colLoggedEvents = objWMIService.ExecQuery _
  ("Select * from Win32_NTLogEvent Where Logfile = 'System' and " _
    & "EventCode = '6009'")

REM Introducimos en el fichero cada una de las lineas obtenidas
For Each objEvent in colLoggedEvents
  objTextFile.WriteLine(objEvent.EventCode & vbTab _
    & objEvent.TimeWritten & vbTab & _
      objEvent.Message)
Next

Al ejecutar el anterior script, en el fichero “informe.txt” tendremos los eventos registrados en el Visor de Sucesos para el evento 6009, Inicio de servidor. Modificando los valores del EventID, dependiendo del tipo de evento que deseemos buscar, o el nombre de la máquina (ya que con un usuario privilegiado en el dominio podriamos acceder a máquinas remotas) obtendremos informes completos sobre las caídas y reinicios de los sistemas de nuestra red, que podremos exportar y tratar de manera más automatizada que visualizando el visor de sucesos.

El resto de aplicaciones y posibilidades se dejan como ejercicio.