lunes, 21 de noviembre de 2011

Securing Debian Manual en castellano

Lo que tiene que saber un sysadmin de Debian en cuanto a la seguridad está en este documento.

Y para los vagos con el inglés, he comenzado la traducción al castellano de sus capítulos más relevantes, comenzando con el tercero, que trata sobre los aspectos a tener en cuenta antes y durante la instalación de un Debian:
  • Contraseñas
  • Particionamiento
  • Control de servicios
  • Control de software instalado
PDF disponible en este enlace.


martes, 16 de agosto de 2011

Exchange 2010 | ¿Quién está fuera de la oficina?

Con Outlook puedes averiguar si alguien de tu organización está fuera de la oficina, pero no puedes saber quienes son todos ellos.

Para obtener un fichero de texto "fuera_oficina.txt" con la lista con todos estos usuarios podemos ejecutar el siguiente script de Powershell desde un host que tenga instalada la consola de administración de Exchange o desde un servidor Exchange.

--- comienzo del script ---

# guarda fecha actual
$fecha_actual = Get-Date

# guarda los samaccounts de todos los buzones
$buzones = Get-Mailbox | %{$_.SamAccountName}

# crea una lista para guardar los samaccounts de todos los buzones fuera de oficina
$buzon_fuera_oficina = New-Object System.Collections.ArrayList

# procesa cada buzón (samaccountname)
foreach ($buzon in $buzones)
{
# extrae la configuración de "fuera de la oficina"
$fuera_oficina = Get-MailboxAutoReplyConfiguration $buzon
# si "fuera de la oficina" está activado y la fecha de activación es hasta hoy
if (($fuera_oficina.AutoReplyState -eq "scheduled") -and ($fuera_oficina.StartTime -le $fecha_actual))
{
# agrega a la lista el samaccount actual
$buzon_fuera_oficina.add($buzon)
}
}

# crea un fichero txt con la lista de samaccounts ordenada
$buzon_fuera_oficina | sort | out-file ./fuera_oficina.txt

--- fin del script ---


lunes, 8 de agosto de 2011

Actualizaciones pendientes | Windows Update

Una forma rápida y sencilla de averiguar qué servidores de un Directorio Activo tiene pendientes las actualizaciones de Windows Update es conocer los que tienen corriendo el proceso wuauclt.

Si además puedes enviarte un email semanal con esa información, garantizas que los servidores estén actualizados bajo tu supervisión con una frecuencia razonable.

Esto se puede hacer con un script PowerShell como el siguiente:

---- comienzo del script ---
# Busca el proceso wuauclt.exe para ver si hay actualizaciones pendientes
# en servidores Windows encontrados en Directorio Activo
# y reporta resultados por email
# 2011 - ramiro.encinas

$emailFrom = "from@dominio.es" # origen email
$emailTo = "to@dominio.es" # destino email
$subject = "Servidores con Windows Update activo" # asunto
$smtpServer = "smtp.dominio.es" # servidor SMTP destino

# Búsqueda de servidores Windows en Directorio Activo:

$strOperatingSystem = "Windows*Server*" # patrón a buscar para SO
$objDomain = New-Object System.DirectoryServices.DirectoryEntry # acceso servicio directorio
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher # buscador
$objSearcher.SearchRoot = $objDomain # búsqueda desde el raíz del directorio
$objSearcher.Filter = ("OperatingSystem=$strOperatingSystem") # filtro LDAP
$colProplist = "name" # propiedad name del SO

foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)} # carga de la propiedad name

$colResults = $objSearcher.FindAll() # búsqueda

$r = "`n" # texto del informe
$enviar = "no" # switch de envío

foreach ($objResult in $colResults) # Extracción de procesos por servidor encontrado
{
$objComputer = $objResult.Properties; # propiedades del servidor
$Server = $objComputer.name # nombre del servidor
$ErrorActionPreference = "SilentlyContinue" # no visualiza excepciones (servidores sin conexión)
Write-Host "Procesando $Server..." # mensaje
$encontrado = Get-Process -Name wuauclt -ComputerName $Server # búsqueda del proceso wuauclt
if ($encontrado) # si existe el proceso wuauclt
{
$r = $r + $Server + "`n"
$enviar = "si" # si uno al menos, envía email activando el switch
}
}

#envío email si procede
if ($enviar -eq "si")
{
$body = $r
$smtp = new-object Net.Mail.SmtpClient($smtpServer) # objeto smtp
$smtp.Send($emailFrom, $emailTo, $subject, $body) # envío del mensaje
}
--- fin del script ---

El script también está disponible desde aquí.

Los únicos parámetros que tienes que cambiar son los de las 4 líneas que hay al comienzo:

$emailFrom = "from@dominio.es" # origen email
$emailTo = "to@dominio.es" # destino email
$subject = "Servidores con Windows Update activo" # asunto
$smtpServer = "smtp.dominio.es" # servidor SMTP destino

Después puedes crear una tarea programada en un servidor que siempre esté encendido para ejecutar el script semanalmente y a esperar...

sábado, 16 de abril de 2011

Exchange 2010 | Seguimiento de mensajes

La consola de administración de Exchange 2010 incorpora el seguimiento de mensajes para ver el recorrido de un mensaje por los servidores de Exchange. La interfaz que trae es bastante complicada, así que he implementado una herramienta autónoma:

Seguimiento_mensajes_EX2010.exe

que trae un formulario más sencillo y práctico:



El campo obligatorio es Servidor, pues en su registro de mensajes se realiza la búsqueda teniendo en cuenta el resto de criterios.

Elegido el servidor, clicas en Buscar y aparecerán los resultados debajo (si los hay).

El informe resultante puedes imprimirlo, y también puedes guardarlo en html. Para esto último, introduce un nombre para el archivo del informe y clica en Guardar informe. El archivo html correspondiente lo encontrarás en la carpeta Seguimiento_Mensajes ubicada en el escritorio.


Con esta herramienta serás mucho más rápido y además podrás presentar informes por escrito del movimiento de cualquier mensaje.

Requisitos:

jueves, 27 de enero de 2011

Las colas de Exchange 2010

Supervisar las colas de un Exchange 2010 es una tarea clave para detectar cuellos de botella producidos por mensajes acumulados en algún servidor de Transporte. Exchange 2010 ofrece dos formas de ver el contenido de las colas:
  • Mediante la consola de administración de Exchange 2010.
  • Mediante los cmd-lets de Exchange 2010 de PowerShell.
Para simplificar el acceso a las colas también puedes utilizar colas_exchange_2010.exe. Esta utilidad puede correr en cualquier equipo conectado al mismo dominio que el servidor Exchange 2010 y como requisitos necesita .NET 3.5 o superior y PowerShell 2.0:


Esta utilidad conecta con cualquier servidor Exchange 2010 y después tienes que elegir el servidor de Transporte que quieres consultar. Cambiando "Intervalo" modificas la frecuencia de la consulta. Los campos que muestra son los mismos que ofrece por defecto el visor de colas de la consola de administración de Exchange 2010. Recuerda que esta utilidad tiene que ser ejecutada con un usuario que pueda realizar estas consultas.

miércoles, 19 de enero de 2011

Perl: mitos y ventajas

Hace poco di con un interesante artículo escrito por Simons Cozens que trata sobre los diez mitos de Perl. Ese artículo data del año 2000 y tristemente todavía veo que esos mitos persisten.

Al margen de los mitos, yo veo a Perl como un C de buen rollo y a lo bestia: con pocas líneas y algunas expresiones regulares estás leyendo sólo lo que necesitas y a la vez de una base de datos, de un router, de una impresora, de un fichero de texto plano y de una web, lo pones todo en un informe y lo guardas donde quieras y en el formato que quieras (por ej. en HTML).

Luego el sistema operativo te da igual: el único sistema operativo que no soporta Perl yo creo que es el de las lavadoras (y no se yo). Allí donde haya una línea de comandos hay Perl, casi seguro. En concreto, para Windows recomiendo la distribución Strawberry Perl (también recomendada por Larry Wall que es el creador de Perl).

Y bueno, en el terreno de sistemas hay dos cosas: Perl para llegar a todo sistema que funcione (routers, switches, servidores, clientes, linux, microsoft, mac, solaris, etc) y donde no llega Perl llega PowerShell.

Qué decir de Perl y el mundo Web, si fue Perl junto con Apache y CGI el que construyó la web antes de que PHP llegara. Aún así, Perl persiste en webs serias y tiene muchas de las comunidades más serias que he visto en la red, como PerlMonks, entre otras.

He visto dos cosas que realmente me han impactado de Perl: una es la facilidad de aprenderlo (yo aprendí casi todo con este estupendo manual en castellano de Jose Miguel Prellezo) y la otra es la cantidad de módulos disponibles para hacer cualquier cosa o para llegar a cualquier cosa: CPAN.

Otra cosa que me gusta de Perl es que va al grano: es corto, rápido y conciso. Este ejemplo lo ví en el artículo de los diez mitos y es impresionante:

s/(.*):(.*)/$2:$1/

La línea de código anterior puede hacer lo siguiente: toma una línea de texto que contenga cualquier cosa, luego el símbolo de dos puntos y después cualquier otra cosa. Lo que hace es intercambiar las dos cosas que están a los lados de los dos puntos (puedes leer el artículo ya traducido para ver la explicación).

Sin dudarlo, de todos los lenguajes que he utilizado: Basic, Logo, Pascal, Ensamblador, Cobol, Batch, Bash, Python, Ruby, C, C++, C#, Visual Basic, Java, PowerShell y Perl, me quedo con este último.

domingo, 9 de enero de 2011

KB2490606, nueva vulnerabilidad

El pasado día 4 de enero, Microsoft anunció una vulnerabilidad importante en el archivo de Windows shimgvw.dll, que permitiría ejecución remota de código malicioso en Windows XP SP3, Windows Server 2003 SP2, Windows Vista y las primeras versiones de Windows Server 2008, entre otras de 64-bit.

Este archivo es el Visor de imágenes y fax de Windows, aplicación que Windows utiliza por defecto para abrir imágenes y también para mostrar las Vistas en miniatura de una carpeta que pueda contener alguna imagen.

Si el Visor de imágenes y fax de Windows abre o muestra la vista en miniatura de una imagen especialmente creada para aprovecharse de esta vulnerabilidad, ésta se produciría permitiendo la ejecución remota de código malicioso.

De momento no hay parche para shimgvw.dll, pero Microsoft aconseja quitarle privilegios para minimizar el riesgo, hasta que publiquen el parche. Para ello Microsoft recomienda utilizar la siguiente línea de comando (versiones de 32-bit de Windows XP y Server 2003):

cacls %WINDIR%\SYSTEM32\shimgvw.dll /E /P Todos:N

Y para deshacer lo anterior:

cacls %WINDIR%\SYSTEM32\shimgvw.dll /E /R Todos

Más líneas de comandos para otras versiones de Windows en la publicación de esta vulnerabilidad.

De momento no ha habido mucha repercusión con esta vulnerabilidad, pero es igual de peligrosa que la de agosto del año pasado relacionada con la visualización de iconos.