15 de abril de 2012

ifttt: put the internet to work

ifttt (if this then that) es un interesante servicio que permite automatizar tareas entre canales populares de servicios internet. Por ejemplo, actualizar Twitter cuando publicas algo en Blogger, recibir un aviso cuando haya una predicción de mal tiempo en un determinado sitio, sincronizar perfiles entre Instapaper y Readability…

Funciona a partir de canales, las piezas básicas que exponen operaciones. Algunos deben ser activados dando acceso a ifttt a ellos:

image

Tenemos recetas, plantillas de tareas que exponen otros usuarios, y tareas, las automatizaciones que definimos, y que se ejecutan cada 15 minutos.

Por ejemplo, jugando con el RSS de los 100 libros gratis de Amazon Kindle, podemos crear una tarea a partir del canal RSS (detecta cambios en un feed) para que nos mande un email con los libros actualizados.

 image

Merece la pena echarle un vistazo.

23 de septiembre de 2011

Win7 64 bits y indexación de PDFs

Windows no tiene un visor de PDF predeterminado, ni tampoco un indexador de sus contenidos, que permita que la búsqueda de Windows indexe sus contenidos. Se supone que la instalación de Acrobat Reader lo incluye, incluso en las versiones de 64 bits, pero no se por qué, en dos máquinas me ha pasado lo mismo, que los contenidos de los PDF no se indexan.

El problema se puede ver en las ‘Opciones de indización’, al entrar en propiedades avanzadas, tipos de archivo, veremos que no tenemos un IFilter para PDFs.

image

Si nuestro equipo es de 64 bits, descargarlo de aquí. Para equipos de 32 bits, lo mejor sería descargar Acrobat Reader.

Una vez instalado, comprobaremos que ya tenemos el IFilter necesario, sin embargo, creo que será necesario reconstruir el índice completo, ya que no recorrerá de nuevo los documentos existentes.

image

8 de agosto de 2009

Supervisar arranque, suspensión y parada de Windows Vista/7

Muchas veces nos quejamos (con razón) de la lentitud del arranque del sistema operativo, y echamos la culpa (a veces no con tanta razón) al sistema operativo.

En bastantes situaciones, los causantes la lentitud en el arranque o parada del sistema operativo, y de los fallos en la suspensión, son determinados drivers no actualizados u optimizados para nuestro hardware.

El visor de eventos de Windows Vista y 7 tiene una sección muy útil, controlada por uno de los módulos de diagnóstico de rendimiento, que nos avisa de todos aquellos módulos que tarden en arrancar, drivers, aplicaciones…

Para verlo, vamos al Visor de Eventos, Registros de aplicaciones y servicios, Microsoft, Windows. Una vez allí, buscar la carpeta Diagnosticos-Rendimiento.

image

Veremos un montón de entradas, en la que nos avisa de retrasos y problemas.

image

En los detalles de cada evento, podemos conseguir pistas de qué está pasando.

image

Algunos avisos los generan los drivers genéricos que Windows aplica al hardware, no siempre optimizados para nuestra máquina. La solución sería entonces instalar drivers proporcionados por el fabricante, que en teoría deberían ser mejores, optimizados, etc.

Desgraciadamente, no siempre pasa esto, ya que me temo que en general, los HP, Dell, Acer y demás invierten más tiempo desarrollando nuevo hardware que optimizando los drivers de sus sistemas, que suelen ser ineficientes, obsoletos y cargados de funciones inútiles.

16 de noviembre de 2008

Autentificación con DNIe en IIS7

Esta guía permite configurar un servidor IIS7 para que solicite certificados de autenticación del DNIe (DNI electrónico). Buena parte de lo que aquí cuento forma parte de un piloto desarrollado por Paco del Campo.

Algunas cosas que rodean al DNIe parecen seguir el principio de security through obscurity. Lástima que el portal del DNI Electrónico no tenga información sobre los dos perfiles fundamentales en la difusión de los servicios con autenticación digital, los programadores y los técnicos de sistemas.

Posibles usos de los certificados

Un sitio web puede utilizar certificados del DNIe para identificar de forma completamente segura a un usuario de un servicio electrónico.

Si los usuarios que acceden son totalmente desconocidos para nuestra organización (no tenemos cuenta de usuario o forma de identificación equivalente), el certificado nos permite conocer la identidad del solicitante, su nombre y su NIF. Con estos datos, podemos asociarlos a un posible registro existente en nuestra base de datos o crear un nuevo registro.

Si por contra, el usuario del DNIe tiene una cuenta de usuario en nuestro directorio, podemos decidir asociar la clave pública de este certificado con esa cuenta de usuario. De esta forma, tendremos un método de autenticación de alta seguridad, que podría reemplazar al tradicional usuario/contraseña.

Pasos a seguir

El proceso consta de las siguientes fases:

  • Registrar en el servidor los certificados de la CA raíz y de la CA subordinada del DNIe
  • Instruir a IIS7 para que solicite certificados de cliente,
  • Definir el tipo de equivalencia entre certificados y cuentas de usuario
  • Decidir qué política se va a seguir con la validación de certificados revocados

Antes de empezar, es fundamental asegurarse de que el cliente en el que está el lector de DNIe funciona correctamente, validándolo con alguno de los servicios de dnielectronico.es.

Registro de CAs

El servidor IIS debe tener registradas las CA raíz y subordinadas que permitan validar los certificados que queremos emplear, en nuestro, la CA Raíz y la CA subordinada 001.

Se descargan en el servidor y se da doble clic para instalarlas. Dentro del asistente para importarlas, es importante elegir la opción de selección manual del almacén de certificados, y la opción 'mostrar almacenes físicos'. De esta forma, siendo administradores de la máquina, podemos registrar los certificados en el almacén de sistema, de forma que otros servicios puedan verlos. Si no somos administradores, o UAC está activo, los certificados se registrarán para este usuario.

En de la CA raíz se meterá en el de "Entidades de certificación raíz de confianza" y el de la subordinada en "Entidades de certificación intermedias".

image image

Configuración de IIS7

Tenemos que activar SSL en el servidor web deseado, para lo que se seguirán los pasos de generar o solicitar un certificado y activar el binding del servidor al puerto 443. Es importante comprobar en este punto que somos capaces de establecer una conexión segura al servidor.

El siguiente paso es indicar a IIS7 que queremos utilizar certificados de cliente en el proceso de establecimiento de la conexión SSL. Esto se realiza desde la configuración de SSL de IIS.

image

También debemos revisar la configuración de autenticación, para asegurarnos, con independencia del tratamiento de los certificados, que nuestro sitio tiene permisos correctos de acceso, que se controlarán limitando los permisos de las carpetas IIS correspondientes.

image 

Ahora tenemos que decidir cómo hacer la equivalencia entre certificados y cuentas de usuario de la máquina. Hay dos posibilidades:

  • Uno a uno (oneToOneMappings): el usuario del certificado tiene ya una cuenta en nuestro dominio, por lo hacemos que cada certificado equivalga a una cuenta del dominio o de la máquina. La asociación se hace con la clave pública del certificado.
  • Muchos a uno (manyToOneMappings): hacemos que todos los certificados que cumplan un determinado criterio se asocien a una cuenta del dominio o de la máquina, que es la que finalmente accederá a los contenidos. Este escenario es el más habitual cuando no conocemos a priori los certificados que vamos a manejar, en el que cualquier certificado válido puede ser usado para acceder a nuestro servicio.

La configuración de estas opciones no se puede realizar directamente desde la administración de IIS, sino editando los ficheros XML del directorio \Windows\System32\inetsrv\config, en concreto el fichero applicationHost.config.

Sin embargo, hay una herramienta tremendamente útil que nos ayudará, el Administration Pack para IIS (versión beta, para entornos x32, hay otra descarga para x64), que ofrece "Configuration Editor", una herramienta que se integra con la consola de administración y que permite editar cualquier parámetros de los ficheros .config generales o específicos de una web, explorar las posibles configuraciones (analiza el esquema de los ficheros), buscar... Una vez instalado, aparece en la parte de abajo de las herramientas de administración.

image

Vamos a realizar una configuración manyToOne, por lo que abriremos en Configuration Editor en el servidor deseado, y exploramos la clave system.webServer/security/authentication/iisClientCertificateMappingAuthentication.

En esta página se explica cómo hacer el mapeo oneToOne, similar a lo aquí expuesto, salvo por la necesidad de incorporar la clave pública del certificado que se desea asociar.

image

Activamos la opción manyToOneCertificateMappingsEnabled y entramos en la opción ManyToOneMappings, en la que definiremos cada una de las asociaciones.

image

Creamos una asociación, dándole un nombre descriptivo, e introduciendo los datos de una cuenta de usuario que será la que acceda a los contenidos para los usuarios que se validen con el certificado correspondiente. Es conveniente crear una cuenta sin ningún tipo de privilegio, y añadirla a la seguridad de acceso de la carpeta IIS que tenga los contenidos.

image

Ahora tenemos que crear una o varias reglas, que serán los patrones de certificados que aceptamos  para esta asociación. Podemos hacer reglas muy generales (todos los certificados de una autoridad) u otras más específicas. Para ello, elegimos qué campo/subcampo del certificado queremos usar y cuál debe ser su valor. Se pueden usar wildcards como *.

image

En nuestro caso, el certificateField es el Issuer, y dentro del mismo, elegimos el certificateSubField OU, que en el caso del DNIe es DNIE.

image

Aceptamos todos los cambios realizados.

Validación de certificados revocados

Por defecto IIS tratará de validar el estado de revocación de los certificados empleados, pero por defecto, no existe un servicio OCSP en el que validarlos.

El Ministerio de Industria tiene un servicio OCSP operativo en http://ocsp.ctpa.mityc.es. Para poder usarlo, debemos modificar las propiedades de la CA intermedia AC DNIE 001. Para modificarlo, abrimos una mmc de certificados sobre la cuenta de máquina y editamos las propiedades (con botón derecho sobre la CA) de AC DNIE 001, añadiendo un servicio OCSP adicional a la dirección anterior.

image

La otra posibilidad es desactivar la validación de las listas de revocación, en caso de que no tengamos acceso a la red o queramos que sea así. Tenemos que usar la herramienta netsh para modificar sus propiedades.

Arrancamos netsh y usamos el comando http para entrar en este contexto. Con el comando show sslcert veremos la relación completa de endpoints http definidos, alguno de los cuales tiene ssl activo. Podemos ver uno concreto con la opción ipport.

Es importante copiar toda la configuración que se muestre del que queremos cambiar, porque tendremos que borrarlo y crearlo de nuevo (se puede hacer show, delete y add, pero no set ¿?).

Vemos la configuración completa:

image

Lo borramos con:

delete sslcert ipport=192.168.0.103:443

Y lo creamos de nuevo, cambiando la opción verifyclientcertrevocation.

add sslcert ipport=192.168.0.103:443 certhash=16d044b6c802473cc3c59c204e8f92928b3dd011
    appid={4dc3e181-e14b-4a21-b022-59fc669b0914} certstorename=MY
    verifyclientcertrevocation=disable

Y comprobamos todo...

Creamos una página default.aspx en el servidor, con un código que nos permita recoger y mostrar los datos del certificado, para así asegurarnos que todo funciona.

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>


<body>
<h2>Información en el certificado</h2>
<p>
<%
HttpClientCertificate cs = Request.ClientCertificate;


Response.Write("ClientCertificate Settings:<br>");
Response.Write("Certificate = " + cs.Certificate + "<br>");
Response.Write("Cookie = " + cs.Cookie + "<br>");
Response.Write("Flags = " + cs.Flags + "<br>");
Response.Write("IsPresent = " + cs.IsPresent + "<br>");
Response.Write("Issuer = " + cs.Issuer + "<br>");
Response.Write("IsValid = " + cs.IsValid + "<br>");
Response.Write("KeySize = " + cs.KeySize + "<br>");
Response.Write("SecretKeySize = " + cs.SecretKeySize + "<br>");
Response.Write("SerialNumber = " + cs.SerialNumber + "<br>");
Response.Write("ServerIssuer = " + cs.ServerIssuer + "<br>");
Response.Write("ServerSubject = " + cs.ServerSubject + "<br>");
Response.Write("Subject = " + cs.Subject + "<br>");
Response.Write("ValidFrom = " + cs.ValidFrom + "<br>");
Response.Write("ValidUntil = " + cs.ValidUntil + "<br>");
Response.Write("What's this = " + cs.ToString() + "<br>");


%>        
</p>
</body>
</html>


Si algo falla, recibiremos mensajes de error en el cliente. Lo mejor es comprobar en los ficheros de log del servidor (\inetpub\logs\) para ver el código y subcódigo de error (ej. 403.16) y así analizar qué es lo que está fallando.



Y si todo va bien:



image

6 de noviembre de 2008

Deshabilitar alarmas repetitivas en HTC Diamond

Un problema bastante incómodo de la HTC Diamond es que los avisos del calendario suenan y suenan hasta que los descartamos. Es bastante divertido a las 12 de la noche, cuando tienes un evento de todo el día.

HTC ha tenido a bien deshabilitar la posibilidad de cambiar la repetición de los avisos, que se puede controlar en Configuración, Sonidos y Notificaciones, Notificaciones, Avisos.

La opción "Repetir" aparece activada, y en gris, por lo que no es posible tocarla.

Para cambiar este comportamiento, necesitamos un editor de registro para modificar una clave.

La susodicha clave está debajo de HKEY_CURRENT_USER\ControlPanel\Notifications. Aquí nos encontramos con una estructura de carpetas, una por cada tipo de aviso que tiene la pda. Hay que localizar la que corresponde a "Avisos" (mirando dentro, la clave default) y cambiar el parámetro Options, del valor que tenga a 1073741835 (en decimal) o 4000000B (en hexadecimal).

Cuando volvamos a la configuración, veremos que podemos habilitar o deshabilitar esta opción a voluntad.

23 de septiembre de 2008

Seguridad de la recuperación de contraseñas olvidadas

Cuando las barbas de Sarah Palin veas cortar, pon las tuyas a remojar...

Hace unos días saltaba la noticia de que una cuenta de correo que Sarah Palin (candidata a vicepresidenta de EEUU) tenía en Yahoo había sido hackeada. Los periodistas, amigos de titulares impactantes, hablaban del 'ataque del siglo'.

La realidad era bastante más sencilla. El intruso utilizó el sistema de recuperación de contraseñas olvidadas de Yahoo, que te obliga a responder a una serie de preguntas personales que rellenó en el momento de crear la cuenta. Si todas las preguntas son respondidas correctamente, te permite cambiar la contraseña. En el caso de Sarah, las preguntas eran relativas a su vida personal, y, cómo no, la Wikipedia tenía las respuestas.

Servicios como Yahoo, Google, Hotmail y otros ofrecen dos tipos de sistemas para restaurar una contraseña de acceso olvidad:

  • Preguntas sobre datos personales, o sobre una lista de preguntas fijas, o dándonos la posibilidad de poner nuestra propia pregunta/respuesta
  • Dirección de correo secundaria, a la que nos enviarán un mensaje con un enlace que nos permitirá cambiar la contraseña

Yo personalmente prefiero el segundo sistema, siempre que uses como respaldo una cuenta de correo segura, en la que tengas una contraseña diferente.

En ocasiones, no es posible desactivar el sistema de pregunta/respuesta, y el problema es que la respuesta a esta pregunta debería ser tan secreta o compleja como la propia contraseña a la que protege.

En este caso, mi recomendación sería poner una respuesta imposible de adivinar (un montón de caracteres tecleados 'a loco'). Con esta contraseña imposible, podemos hacer dos cosas, olvidarla completamente o guardarla en una aplicación como Password Safe, que nos permite guardar nuestros secretos de forma segura protegidos por una única contraseña.

 

image

19 de septiembre de 2008

Windows: cambio rápido de configuraciones de red

Una característica que siempre se olvida a los chicos de Microsoft es la posibilidad de gestionar perfiles de red, múltiples configuraciones de una tarjeta para adaptarse a la configuración de diferentes ubicaciones. Mac Os X tiene una interfaz muy sencilla y útil que alguien debería fisgar.

Windows Vista tiene una característica llamada Ubicaciones, pero sólo sirve para activar o desactivar una configuración más restrictiva del cortafuego, la única utilidad que le veo es para cuando nos conectamos en redes públicas, inseguras, eligiendo un perfil público quedamos asegurados.

Hay aplicaciones que nos permiten gestionar esto, pero las que funcionan son de pago.

Hay una forma gratuita y sencilla de cambiar rápidamente nuestras configuraciones, con un fichero .bat de los de toda la vida y la ayuda de netsh, un comando de Windows que permite gestionar las comunicaciones.

Tendremos que crear un fichero .bat para cada configuración que queramos. Antes de crearlo, debemos comprobar el nombre que tiene cada tarjeta de red, en el panel de control de XP o en el centro de redes de Vista. Típicamente, son "Conexión de área local" y "Conexión de red inalámbrica".

En el fichero .bat meteremos los siguientes comandos, ajustando el nombre a lo que se llame la tarjeta de red que queremos configurar.

Importante: cada comando netsh debe ir en una línea completa

Para una conexión con IP fija o estática:

netsh interface ip set address "Conexión de área local" static 192.168.0.22 255.255.255.0 192.168.0.1
netsh interface ip add dns "Conexión de área local" 80.21.33.1 index=1
netsh interface ip add dns "Conexión de área local" 80.21.33.2 index=2

En la primera línea se define la configuración de red, dirección IP, máscara de red y puerta de enlace. En las otras dos, se definen los servidores DNS, podemos tener uno o dos.

Y para una con IP dinámica o DHCP:

netsh interface ip set address "Conexión de área local" dhcp
netsh interface ip set dns "Conexión de área local" source=dhcp

De esta forma, hacemos que tanto la dirección IP como los servidores DNS se configuren dinámicamente.

Una vez guardado, basta ejecutar el .bat. Es necesario tener permisos de administrador para ejecutarlo, por lo que si estamos en Vista, debemos pulsar con el botón derecho del ratón sobre el icono y elegir la opción "Ejecutar como administrador".

image