Septiembre 2008 Septiembre 2008
ISA Server: Guía para proteger ISA Server 2006
Muchas organizaciones dependen de ISA Server 2006 para proteger su entorno, pero pocas dan el paso importante de proteger el propio servidor ISA. Ésta es una guía para usar el Asistente para configuración de seguridad y las funciones administrativas para limitar la exposición a ataques y proteger la implementación de ISA Server 2006. Alan Maddison
ISA Server: Mejorar la seguridad de la puerta de enlace de TS con ISA Server 2006
Mediante la nueva característica de puerta de enlace de TS, Windows Server 2008 permite a los usuarios tener acceso a sus escritorios desde cualquier lugar, sin usar VPN. Descubra cómo puede publicar la puerta de enlace de TS a través de ISA Server 2006 y ampliar el escenario de publicación de ISA Server 2006 para incluir el cumplimiento del mantenimiento de clientes. Dr. Thomas W. Shinder y Yuri Diogenes
IIS 7.0: Las diez principales mejoras de rendimiento en IIS 7.0
La última versión de IIS presenta una plataforma modular y extensible con compatibilidad mejorada para escenarios de implementación y administración comunes, lo que permite mejoras de rendimiento considerables. Le ofrecemos una introducción a las 10 áreas clave de IIS 7.0 que proporcionan estas mejoras. Mike Volodarsky
Movilidad: Convierta en móvil su línea de aplicaciones de negocio
Hoy en día, muchos profesionales móviles necesitan acceder a la línea de aplicaciones de negocio que usan en la oficina (CRM, ERP y similares) desde un dispositivo móvil cuando necesitan trasladarse. Consulte cómo Windows Mobile y Mobile Device Manager permiten implementar completas funcionalidades móviles en la línea de aplicaciones de negocio. Matt Fontaine
Seguridad: Descripción de la administración de contraseñas de cuentas compartidas
Las contraseñas de cuentas compartidas y con privilegios es algo habitual, pero demasiadas organizaciones no las administran de manera adecuada. Esto genera un grave problema para la seguridad. Explore los riesgos que implican las cuentas compartidas y con privilegios, y descubra los mejores métodos para administrar contraseñas más seguras. Chris Stoneff
Columns
Nota del editor: De vuelta al colegio: | Cartas: Comentarios de los lectores: | Cuadro de herramientas: Nuevos productos para profesionales de TI:
Preguntas y respuestas sobre Exchange: Alineación de particiones de disco y planeamiento para SCR, entre otros temas: En el número de septiembre de 2008 de Preguntas y respuestas sobre Exchange respondemos preguntas acerca del cálculo del número de servidores de catálogo global que necesita, el cambio de pertenencia a sitio de un servidor y mucho más.Henrik Walther | Utility Spotlight: Diagnóstico de la memoria de Windows: Vea cómo esta utilidad gratuita puede ayudarle a determinar si los problemas que está experimentando al ejecutar Windows se deben a errores de memoria.Lance Whitney | Dentro de SharePoint: Integración de directorios de SharePoint: Pav Cherny habla de las limitaciones del servicio de administración de directorio integrado de SharePoint y explica cómo reemplazar este componente con una solución personalizada que le permita sincronizar la información de destinatarios de SharePoint con otras soluciones de directorio.Pav Cherny
Windows PowerShell: Teoría de cadenas: A pesar de su orientación hacia los objetos, Windows PowerShell también puede analizar cadenas complicadas. Don Jones le muestra cómo puede hacerlo en Windows PowerShell con Select-String.Don Jones | Hey, Scripting Guy!: Permanezca atento a su tostador: Descubra cómo puede usar conjuntos de registros desconectados (tablas de base de datos virtuales) para resolver las limitaciones de VBScript relacionadas con la ordenación de datos y el trabajo con grandes conjuntos de datos.Los Scripting Guys de Microsoft | Archivos del escritorio: Funcionalidad avanzada en WDS: En su tercera entrega sobre los Servicios de Implementación de Windows, Wes Miller explora las características que permiten mejorar el rendimiento y la escalabilidad, el registro y la automatización por línea de comandos.Wes Miller
Vigilancia de seguridad: Contraseñas y tarjetas de crédito, 3ª parte: En la última parte de esta serie de tres entregas, Jesper Johansson describe cómo los proveedores de software, los paquetes de seguridad y las estrategias de marketing dificultan los verdaderos esfuerzos de seguridad y nos advierte acerca de cómo estas prácticas pueden llevar a la destrucción del ecosistema de la seguridad tecnológica.Jesper M. Johansson | Notas de campo: Innovación desde dentro: Romi Mahajan explica su teoría de "Innovación desde dentro", que acentúa la creatividad humana y el capital como claves para la obtención de una ventaja comparativa sostenible.Romi Mahajan | Confidencial de Windows: Windows 95 desconectado: Raymond Chen explica cómo un fragmento de código de diagnóstico ralentizó inesperadamente la compilación de Windows 95.Raymond Chen


Guía para proteger ISA Server 2006
Alan Maddison
De un vistazo:
  • Prácticas recomendadas para proteger servidores
  • Configuración del Asistente para configuración de seguridad
  • Tutorial del Asistente para configuración de seguridad
  • Asignación de funciones administrativas

Contenido
Protección de los servidores
Configuración del Asistente para configuración de seguridad
Ejecución del SCW
Funciones administrativas
Mientras muchos profesionales de TI confían en ISA Server 2006 (Internet Security and Acceleration Server 2006) para proteger sus activos tecnológicos, pocos van más allá y se preocupan de proteger el propio servidor ISA. Si usted
ha instalado recientemente ISA Server 2006, seguramente recordará que aparece un recordatorio para hacer esto inmediatamente después de que la instalación finaliza. Por desgracia, muchos de los profesionales de TI como nosotros raramente se toman (o tienen) el tiempo de realizar este paso importante y esta tarea suele acabar en esa lista de cosas para hacer pero que nunca se hacen.
En el panorama actual de la seguridad en constante cambio, no proteger el servidor ISA ya no es algo aceptable. Por suerte, las herramientas usadas para proteger el servidor ISA han avanzado mucho. Ya no hace falta enfrentarse a muchos de los retos que presentaban los asistentes para reforzar la seguridad de versiones anteriores a ISA Server 2004. Puede seguir los pasos y las herramientas tranquilamente, como los del Asistente para configuración de seguridad (SCW) que se incluye con Windows Server® 2003.
En este artículo proporcionaré un resumen breve de las prácticas recomendadas generales para proteger servidores. A continuación echaremos un vistazo detallado a las estrategias para reforzar la seguridad en el propio servidor ISA, usando el Asistente para configuración de seguridad para reducir el área expuesta a ataques del servidor ISA y las funciones administrativas para restringir el acceso al servidor ISA.

Protección de los servidores
Hay muchos elementos y prácticas recomendadas implicados en la protección de servidores, tanto si están situados en un centro de datos, como si están en el cuarto de servidores junto a su oficina. Como administrador, es su responsabilidad conocer estas prácticas recomendadas y hacer lo que pueda para implementar estos requisitos de una forma práctica para su organización. Como la importancia de la seguridad ha ido creciendo en los últimos años, muchos de nosotros nos hemos familiarizado bastante con las tareas que forman el núcleo de estos requisitos, así que no detallaré todos los puntos, sino que sólo haré una introducción breve.
El primer paso que se debe tomar para proteger el entorno es garantizar que los servidores están seguros físicamente. Lo que esto significa en términos prácticos es que debe restringir el acceso físico a los servidores. En entornos más pequeños esto significa asegurarse de que la puerta del cuarto de servidores permanece bloqueada y que la lista de personas con acceso al cuarto es muy reducida. En entornos más grandes este requisito básico es prácticamente el mismo, pero se puede implementar de una forma más sofisticada. Muchas organizaciones usan supervisión electrónica, por ejemplo. Esto les permite auditar la entrada a las ubicaciones de los servidores e incluso restringir el acceso a estantes o jaulas individuales, según cómo estén estructuradas las responsabilidades de trabajo.
Hay algunos factores especiales a considerar cuando se trata con el robo o el riesgo físico de un servidor ISA o un servidor de Almacenamiento de configuración ISA. La naturaleza de la información que puede obtener del servidor robado puede potencialmente poner en peligro a todos los servidores ISA y al tráfico (incluido el tráfico cifrado) de su entorno.
Si sospecha que se ha puesto en peligro o se ha sustraído un servidor, retire el servidor afectado inmediatamente (si todavía está en la ubicación) y siga los procedimientos estándar para proteger las pruebas. Después de haber realizado los pasos necesarios, deberá empezar a cambiar toda la información confidencial (se deben revocar todos los certificados instalados en el servidor y se deben modificar todas las claves precompartidas y los secretos compartidos). Además, si mantiene un servidor de Almacenamiento de configuración de réplica, asegúrese de eliminar cualquier dato relacionado con el servidor comprometido.
Una vez que los servidores estén seguros físicamente, el siguiente paso consiste en asegurarse de que hay una metodología estructurada para aplicar revisiones a todo el software, incluidos la capa de virtualización, el sistema operativo y las aplicaciones. Las actualizaciones y revisiones deben revisarse y aplicarse regularmente. Pero no olvide probar estas actualizaciones antes de aplicarlas a sistemas de producción. Una revisión no hará ningún bien si termina causando un problema que pueda poner en peligro la aplicación o la integridad de los datos.
Si se compromete la integridad de los datos, necesitará recurrir a las copias de seguridad. Esto me recuerda a otro elemento clave para proteger la infraestructura. Si no puede restaurar completa y rápidamente los datos cuando tenga necesidad de ello, el tiempo de inactividad puede tener una repercusión considerable en sus operaciones y, como resultado, aumentar el costo de una intrusión.
Otros dos elementos que considerar son la supervisión y la auditoría. Supervisar las aplicaciones y los sistemas es una pieza fundamental del cualquier buen plan de seguridad. Si no se toma el tiempo de revisar los registros, en especial los relacionados con la seguridad, es poco probable que pueda detectar los intentos de intrusión antes de que el daño esté hecho.
De igual forma, las auditorías son fundamentales. En muchas organizaciones, en especial en entornos grandes, esta actividad a menudo está regulada e incluso es necesario realizarla por ley. Aunque no fuera así, es importante en cualquier entorno revisar periódicamente los controles y la metodología usados para proteger los activos y que sus esfuerzos resulten eficaces.
Por último, como se está ejecutando ISA Server 2006 en Windows Server® 2003, es importante que revise la Guía de seguridad de Windows Server 2003 e implemente las recomendaciones necesarias. Puede encontrar la Guía de seguridad de Windows Server 2003 en microsoft.com/technet/security/prodtech/windowsserver2003/w2003hg/sgch00.mspx.
Microsoft recomienda actualmente implementar la plantilla de la directiva de seguridad de línea de base, pero no debe implementar ningún filtro del protocolo de seguridad de Internet (IPsec).

Configuración del Asistente para configuración de seguridad
¿Cómo puede hacer que el servidor ISA sea más seguro? La herramienta principal para proteger ISA es el SCW. Es una herramienta para reducir la exposición a los ataques. Crea directivas de seguridad dirigidas a servicios de un servidor, seguridad de red, registro y directivas de auditoría, configurando el sistema sólo para los servicios que requiere. Es importante tener en cuenta que sólo debe configurar los servicios del servidor ISA que tenga pensado usar. Por ejemplo, el servicio web proxy está habilitado de forma predeterminada, pero si no se tiene pensado usarlo debería inhabilitarse. Así, es necesario prestar mucha atención a las opciones de configuración que SCW presenta.
SCW no está instalado de forma predeterminada en Windows Server 2003, así que el primer paso es instalarlo con el applet Agregar o quitar componentes de Windows® del panel de control de Agregar o quitar programas. (Tenga en cuenta que SCW está instalado de forma predeterminada en Windows Server 2008.) Cuando se haya cargado la pantalla Componentes de Windows, desplácese hacia abajo y marque la casilla de SCW.
Cuando se haya finalizado la instalación, la aplicación se puede encontrar en Herramientas administrativas. Antes de empezar a usar el asistente debe actualizar SCW descargando una actualización para ISA Server 2006 (disponible en go.microsoft.com/fwlink/?LinkId=122532). Esta actualización añade las funciones para ISA Server 2006 Standard Edition, ISA Server 2006 Enterprise Edition e ISA Server Configuration Storage Server.
Después de descargar la actualización, necesitará ejecutar el paquete y extraer los archivos del mismo. Después de extraer estos archivos, copie los dos archivos .xml (isa.xml e isaloc.xml) en la carpeta kbs de SCW (en una instalación predeterminada de Windows Server, ésta será c:\windows\security\msscw\kbs).
Cuando copie los archivos, se le pedirá que sobrescriba dos archivos existentes con el mismo nombre. Estos dos archivos son para ISA Server 2004, así que debería copiarlos antes de sobrescribirlos. El paso final consiste en copiar el archivo isascwhlp.dll en la carpeta bin, que normalmente se encuentra en c:\windows\security\msscw\bin. Cuando haya completado la incorporación de las funciones de ISA en SCW, estará listo para empezar la instalación.
Microsoft normalmente recomienda que sólo se ejecute el SCW cuando se haya completado la configuración del servidor ISA. Si está ejecutando la versión Enterprise Edition, se incluye la configuración de todas las matrices y todos sus miembros.

Ejecución del SCW
El primer paso es iniciar SCW desde Herramientas administrativas (recuerde que necesitará permisos de administrador para completar correctamente el proceso de SCW).
La figura 1 muestra la primera pantalla del asistente. Si lee el texto de esta pantalla, en especial la advertencia que dice "este asistente detecta los puertos de entrada a los que está atento este servidor", puede comprender por qué es importantes tener el servidor ISA y las matrices completamente configurados antes de empezar este proceso.
Figura 1 Inicio del Asistente para configuración de seguridad (haga clic en la imagen para ampliarla)
Si no se ha configurado completamente el entorno, hay muchas posibilidades de que sea necesario revisar la configuración de SCW después de completar la configuración de ISA. La pantalla siguiente, que se muestra en la figura 2, pregunta qué acción realizar. Debe seleccionarse la opción Crear una nueva directiva de seguridad.
Figura 2 Crear una directiva de seguridad nueva (haga clic en la imagen para ampliarla)
A continuación se le indica que seleccione el servidor que se usará como línea de base para la directiva. Como está creando una directiva nueva, la selección predeterminada consiste en usar el equipo en el que se ejecuta SCW. Sin embargo, este comportamiento cambia en función de la acción que elija realizar en la pantalla anterior. A pesar de todo, una práctica recomendada sería tener SCW instalado en el servidor que se desea usar como línea de base. Si SCW no está instalado en el servidor de destino, faltará la información usada para completar la directiva. Así que, para facilitar el trabajo, instale y ejecute SCW desde el servidor que quiere usar como línea de base.
Cuando se pulse Siguiente, SCW empezará el análisis del servidor ISA. Este análisis incluye la determinación de las funciones instaladas en el servidor, funciones que probablemente están instaladas en el servidor, servicios instalados e información de red básica. Cuando el procesamiento finaliza, se puede ver la base de datos seleccionando la opción Ver la base de datos de configuración. La base de datos de configuración contiene mucha información, incluidas todas las funciones de servidor compatibles, las características de cliente y los puertos.
A continuación, SCW le guía a través de la Configuración de servicio basado en funciones. Al pulsar Siguiente se abrirá la pantalla siguiente, donde se le pedirá que seleccione las funciones de servidor, tal como se muestra en la figura 3. La exploración inicial que realiza SCW suele ser confiable. Podrá comprobar que ya se han identificado las funciones del servidor correctas. Sin embargo, es muy importante que lo compruebe dos veces y que elimine cualquier función innecesaria. Y si el servidor cumple varias funciones, asegúrese de que se han marcado todas las funciones apropiadas.
Figura 3 Especificación de funciones de servidor (haga clic en la imagen para ampliarla)
Un punto importante que recordar si se ejecuta ISA Server 2006 Enterprise Edition es que se tiene que considerar el servidor de Almacenamiento de configuración. Si el servidor de Almacenamiento de configuración está instalado en un servidor que también actúa como servidor ISA (lo cual, por cierto, no seguiría las prácticas recomendadas, aunque muchas veces sea el caso), necesitará asegurarse de que también se selecciona la función del servidor de Almacenamiento de configuración. No debería usar una exploración de línea de base de un servidor que hospede ambas funciones para servidores que realmente sólo tengan la función de ISA Server 2006.
A continuación se le pedirá que seleccione las características de cliente del servidor. Es decir, necesitará especificar los servicios que necesita el servidor. Por ejemplo, casi todos los servidores necesitarán el cliente DNS, y si un servidor es un miembro de un dominio, entonces requerirá la característica Miembro del dominio.
Después de hacer esto, se mostrará la pantalla Opciones de administración y otras. Aquí es donde usted indica las opciones de aplicación, administración y sistema operativo que usan servicios o dependen de la conectividad de red. Se inhabilitarán todos los servicios que no se seleccionen aquí. Sin embargo, después de hacer sus selecciones y de pulsar Siguiente, se le ofrecerá la opción de seleccionar servicios adicionales que desee permitir.
A continuación pasará a configurar cómo deben tratarse los servicios no especificados. Esto le permite definir lo que debe suceder cuando, al aplicar la directiva, se encuentran servicios no incluidos en la base de datos principal ni instalados en el servidor de línea base. Como práctica recomendada general, debe elegir inhabilitar los servicios no especificados porque esto limitará los frentes de ataque imprevistos. Desafortunadamente, esta opción puede tener consecuencias negativas si sus servidores se apartan de lo normal en algunas cuestiones; también necesita recordar esta configuración si agrega cualquier aplicación o servicio de red en el futuro.
La sección siguiente del asistente, que se muestra en la figura 4, permite revisar los servicios que SCW está modificando. Esta pantalla de confirmación le ofrece una vista comparada del estado actual y del estado modificado de los servicios después de que se aplique la directiva.
Figura 4 Revisión y confirmación de los cambios de servicios (haga clic en la imagen para ampliarla)
Después de confirmar los servicios que se van a cambiar, se pasará a la sección Seguridad de red. Aquí es donde SCW normalmente permite modificar la configuración del firewall y de IPSec de Windows. Pero como está configurando ISA Server 2006, no tendrá más remedio que saltarse esta sección, tal y como se muestra en la figura 5.
Figura 5 Saltarse la configuración de Seguridad de red (haga clic en la imagen para ampliarla)
A continuación, el asistente pasa a la configuración de valores de registro relacionados con los métodos de autenticación y seguridad de red. La primera pantalla de esta sección trata sobre las firmas de bloques de mensajes de servidor (SMB). El protocolo SMB es un protocolo de red central de Microsoft y estos valores de configuración permiten las comunicaciones firmadas para reducir la probabilidad de ataques de intermediario.
La configuración predeterminada, como se muestra en la figura 6, ofrece un buen nivel de seguridad para las comunicaciones SMB del servidor ISA. Pero debe tener en cuenta las repercusiones que tendrá si se firman todas las comunicaciones. Si no le sobran ciclos de CPU, debería desmarcar la segunda opción. Y no olvide pensar en todos los servidores a los que se aplicará esta directiva; si tiene servidores con distintas cargas de trabajo, deberá usar el servidor con la utilización de unidad de procesamiento central más alta como guía para saber si debe seleccionar o no esta opción.
Figura 6 Especificando si se deben requerir comunicaciones firmadas (haga clic en la imagen para ampliarla)
El siguiente conjunto de pantallas trata sobre el nivel de LMCompatibility que debe usar el servidor ISA. La primera de estas pantallas presenta tres opciones. A menos que tenga clientes heredados de Windows (como Windows 95 o Windows 98) o si usa cuentas locales para el control de acceso, debería dejar seleccionada la opción predeterminada Cuentas de dominio.
En la segunda pantalla sobre el nivel de LMCompatibility deberá proporcionar información acerca de sus controladores de dominio. Si no tiene ningún dominio de Windows NT® 4.0, puede dejar seleccionada la opción predeterminada (Sistemas operativos Windows NT 4.0 Service Pack 6a o posteriores). En este cuadro de diálogo también debe seleccionar la opción para que los relojes se sincronicen con el del servidor seleccionado. Al seleccionar Siguiente se mostrarán opciones de configuración adicionales para la comunicación entrante de LAN Manager (LM), como se muestra en la figura 7.
Figura 7 Indicación de métodos de autenticación entrantes (haga clic en la imagen para ampliarla)
Esta tercera pantalla que pertenece al nivel de compatibilidad de LM determinará si se necesita la versión 2 de LAN Manager de Windows NT (NTLM) y si se almacenan algoritmos hash de LM. Debe asegurarse de que ninguna de estas opciones está seleccionada si su entorno es compatible con esta configuración, ya que al anular la selección de estas dos opciones se mejorará la seguridad significativamente. Ahora se le presentará el Resumen de configuración del Registro. Revise todas las entradas y confirme que la configuración de la directiva es correcta.
A continuación, el asistente le llevará a la sección final: Auditoría. Un punto importante a tener en cuenta acerca de cualquiera de las opciones de configuración de esta sección es que no se pueden revertir. Pero como la auditoría no afecta a la funcionalidad del sistema, no debe saltarse esta sección.
Si mantiene seleccionada la opción predeterminada "Auditar actividades correctas", no se incluirán entradas en el registro de eventos cuando se produzca un error del inicio de sesión. Sin embargo, la información relativa a errores de inicio de sesión puede ofrecer información valiosa sobre intentos de intrusión. Además, como práctica general recomendada, se debe seleccionar "Auditar actividades correctas e incorrectas".
Después, revise la configuración de auditoría y haga clic en Siguiente dos veces para guardar la directiva de seguridad. La información que se debe introducir en esta pantalla, que se muestra en la figura 8, es sólo el nombre del archivo; aunque también se puede incluir una descripción breve. Esta descripción puede resultar útil en entornos grandes donde diferentes administradores comparten las responsabilidades de seguridad.
Figura 8 Introducción de un nombre y una descripción para la directiva de seguridad (haga clic en la imagen para ampliarla)
Cuando el archivo se ha guardado, se le ofrece la opción de aplicar la directiva inmediatamente o más tarde. Si elige aplicar la directiva más tarde, el proceso ha terminado. Si descubre que ha cometido algún error en la configuración de la directiva, puede revertir la directiva, a excepción de la configuración de la auditoría.

Funciones administrativas
La reducción de la superficie expuesta a ataques del servidor ISA es un paso fundamental para disminuir la probabilidad de que se produzcan infracciones de origen externo. Sin embargo, también es importante revisar la asignación de funciones administrativas dentro del servidor ISA para limitar las posibles amenazas de origen interno. En las figuras 9 y 10 se muestran las funciones administrativas y una lista parcial de tareas comunes asociadas.
Figura 9 Funciones y tareas asociadas a la versión Standard Edition
Tarea | Auditor de supervisión | Auditor | Administrador total
Ver panel, alertas, conectividad, sesiones y servicios | Permitido | Permitido | Permitido
Reconocer alertas | Permitido | Permitido | Permitido
Ver información de registro | – | Permitido | Permitido
Crear definiciones de alerta | – | – | Permitido
Crear informes | – | Permitido | Permitido
Detener e iniciar sesiones y servicio | – | Permitido | Permitido
Ver directiva de firewall | – | Permitido | Permitido
Configurar directiva de firewall | – | – | Permitido
Configurar memoria caché | – | – | Permitido
Configurar una red privada virtual (VPN) | – | – | Permitido
Figura 10 Funciones y tareas asociadas a la versión Enterprise Edition
Actividad | Auditor de supervisión de matriz | Auditor de matriz | Administrador de matriz
Ver panel, alertas, conectividad y sesiones | Permitido | Permitido | Permitido
Reconocer y restablecer alertas | Permitido | Permitido | Permitido
Ver información de registro | – | Permitido | Permitido
Crear definiciones de alerta | – | - | Permitido
Crear informes | – | Permitido | Permitido
Detener e iniciar sesiones y servicio | – | Permitido | Permitido
Ver directiva de firewall | – | Permitido | Permitido
Configurar directiva de firewall | – | – | Permitido
Configurar memoria caché | – | – | Permitido
Configurar una red privada virtual (VPN) | – | – | Permitido
Purgar/Detener NLB | – | Permitido | Permitido
Ver configuración local (en el registro de un miembro de la matriz) | – | Permitido | Permitido
Cambiar configuración local (en el registro de un miembro de la matriz) | – | – | –
Como puede ver, existe un grado alto de segmentación en las tareas administrativas asociadas con el servidor ISA. Esto, a su vez, debería facilitarle la asignación de funciones correctas a usuarios de su organización.
Más allá de esto, lo que necesita recordar es que el mejor enfoque para asignar funciones es emplear el concepto del privilegio menor. Cualquier usuario dado debe tener sólo los privilegios imprescindibles para que pueda hacer su trabajo.
También es importante recordar que los miembros del grupo de administradores locales en ISA Server 2006 Standard Edition tienen los mismos derechos que un administrador total del servidor ISA. En la versión Enterprise Edition, los miembros del grupo de administradores locales del servidor con la función de servidor de Almacenamiento de configuración tienen el control completo sobre la configuración de la versión Enterprise. Esto significa que resulta necesario revisar con cuidado la pertenencia al grupo de administradores del dominio, siempre que el servidor ISA sea miembro de un dominio, así como a cualquier otro grupo que sea miembro del grupo de administradores locales del servidor ISA.

Alan Maddison trabaja como consultor senior especializando en tecnologías de Microsoft para Strategic Business Systems, una división de Brocade.


Servidor ISA
Mejorar la seguridad de la puerta de enlace de TS con ISA Server 2006
Dr. Thomas W. Shinder y Yuri Diogenes
De un vistazo:
  • Dos escenarios que usan la puerta de enlace de TS con el servidor ISA
  • Configuración de ISA Server 2006
  • Pruebas y supervisión

Contenido
Más allá del perímetro
El primer escenario
Configuración de ISA Server 2006
Pruebas y supervisión de acceso de clientes
Supervisión desde el servidor ISA
El segundo escenario
¿Qué ocurre con el cliente?
Conclusión
Tras el éxito de Outlook en cualquier lugar de Exchange Server 2007, Windows Server 2008 proporciona a su vez la capacidad de obtener acceso al escritorio desde cualquier lugar de una manera segura y controlada.
El nuevo servicio de puerta de enlace de Terminal Server (puerta de enlace de TS) de Windows Server® 2008 ofrece la flexibilidad de Servicios de Terminal Server de Windows® además de la capacidad de conectarse a Terminal Server desde cualquier lugar con una conexión HTTP. Este servicio usa el Protocolo de escritorio remoto (RDP) sobre HTTPS (SSL) para aumentar la seguridad y, al mismo tiempo, ofrece una única interfaz de cliente para obtener acceso a los recursos de Terminal Services.
Este nuevo servicio de puerta de enlace de TS ofrece ventajas significativas para los usuarios que necesiten tener acceso a sus equipos de forma remota:
  • No es necesario establecer una sesión de red privada virtual (VPN) antes de conectarse a los recursos internos mediante RDP.
  • Seguridad mejorada mediante protección de acceso a redes (NAP) y comprobaciones de mantenimiento de la seguridad de Windows para controlar las conexiones RDP.
  • No es necesario abrir el puerto entrante TCP 3389 para permitir una publicación de web más segura a través de firewalls.
Microsoft® Internet Security and Acceleration (ISA) Server 2006 se puede usar para mejorar la seguridad del servicio de puerta de enlace de TS y, al mismo tiempo, permitir el acceso externo a los recursos internos. Se puede establecer un escenario de protocolo de puente SSL a SSL en el que ISA Server 2006 reciba las solicitudes y las pase al servicio de puerta de enlace de TS interno, también por medio de HTTPS. Mientras actúa como un puente para la solicitud, el firewall de ISA descifra las comunicaciones SSL y realiza la inspección a nivel de aplicación.
Si la secuencia del protocolo HTTP aprueba la inspección, entonces la comunicación se vuelve a cifrar y se reenvía al proxy de Terminal Services. Si la secuencia del protocolo no aprueba la inspección, se anula la conexión.

Más allá del perímetro
Microsoft ha invertido bastantes esfuerzos en seguridad, y Windows Server 2008 es la versión más segura y estable de Windows que existe. Pero a la compañía también le preocupa el modo en que los usuarios implementan sus productos y que sigan las prácticas recomendadas para que sus entornos permanezcan protegidos. Las prácticas recomendadas requieren un enfoque de defensa exhaustiva que ofrezca protección en múltiples puntos de acceso o niveles. Los niveles relevantes en este artículo son las directivas, los procedimientos y el reconocimiento, el perímetro, la red interna y el host.
Cuando se permite que los usuarios externos tengan acceso a un recurso interno a través del servidor ISA, se deben comprender los límites de cada producto implicado. ISA Server 2006 y la puerta de enlace de TS ofrecerán la seguridad a nivel de perímetro, pero para los recursos internos se deberá contar con directivas adecuadas para permitir o denegar el acceso, según sea necesario. Esto se puede lograr con los servicios de acceso y las directivas de red (NPAS), que funcionan a nivel de directivas, procedimientos y reconocimiento. El acceso a los recursos internos (unidad de disco, portapapeles, impresoras, etc.) está definido por las Directivas de autorización de recursos de Terminal Service, orientadas al nivel de la red interna.
En este artículo examinaremos en primer lugar cómo publicar la puerta de enlace de Terminal Services a través de ISA Server 2006. Más adelante ampliaremos nuestro escenario de publicación de ISA Server 2006 para incluir el cumplimiento del mantenimiento de clientes mediante NAP. Por medio de NAP, podemos crear directivas de mantenimiento de cliente que ayudan a controlar el acceso a nivel de host.

El primer escenario
Nuestro objetivo es mostrar cómo publicar la puerta de enlace de TS a través de ISA Server 2006. La figura 1 resume los equipos y el flujo de datos durante la conexión. En este escenario implementamos la función del Servidor de directivas de redes (NPS) en la puerta de enlace de TS misma; sin embargo, en el segundo escenario vamos a hacer modificaciones para usar un servidor NPS central. Siga la secuencia que se muestra debajo para comprender cómo funcionan las comunicaciones entre los componentes de la solución de publicación de la puerta de enlace de TS:
Figura 1 Publicación de la puerta de enlace de TS a través de ISA Server 2006 (haga clic en la imagen para ampliarla)
  1. El usuario RDP externo inicia la conexión. Lo primero que el cliente debe hacer es resolver el nombre externo de la puerta de enlace de TS (tsg.contoso.com, en este caso). El DNS externo resuelve este nombre, que señala a la dirección IP externa del servidor ISA.
  2. Se establece un túnel SSL entre el cliente RDP y la interfaz externa del servidor ISA. El servidor ISA tiene una regla de publicación de web en el puerto TCP 443 que usa un certificado emitido para tsg.contoso.com.
  3. Después de evaluar la regla y comprobar que el tráfico se permite, el servidor ISA enviará una consulta DNS al servidor DNS interno (situado en el controlador de dominio) para resolver el nombre del servidor especificado en la regla de publicación de web.
  4. A continuación, el servidor ISA abre un túnel SSL a la puerta de enlace de TS y le pasa la solicitud de autenticación.
  5. El servidor Puerta de enlace de TS valida las credenciales del usuario y comprueba si el usuario está autorizado para establecer la conexión.
  6. Después de determinar que el usuario está autorizado para establecer la conexión, el servicio de puerta de enlace de TS recibe las solicitudes en el puerto TCP 443 y reenvía los paquetes RDP a través del puerto TCP 3389 (de forma predeterminada) al Terminal Server interno en el que reside la aplicación (por ejemplo, una aplicación de CRM).
A partir de este momento, todos los paquetes que el cliente RDP envía al servicio de puerta de enlace de TS a través del servidor ISA se reenvían al Terminal Server interno y viceversa.
Es importante mencionar que el túnel RDP sobre HTTPS que actúa en segundo plano es simplemente RDP/RPC/HTTPS. El cliente RDP encapsula las comunicaciones de RDP en un encabezado RPC, que a su vez se encapsula con un encabezado HTTP que se protege con SSL (o con TLS, seguridad de nivel de transporte). Deben estar presentes todos los componentes necesarios para una solución RPC sobre HTTPS. Por eso, cuando se instala el servicio de la función de puerta de enlace de TS, automáticamente se instala RPC sobre el proxy HTTP. Para conocer el funcionamiento de este protocolo en mayor profundidad, recomendamos leer "Pruebas de RPC sobre HTTP a través de ISA Server 2006 parte 1: protocolos, autenticación y procesamiento", que se puede encontrar en el blog del equipo del servidor ISA (disponible en blogs.technet.com/isablog).
En esta implementación es necesario instalar Windows Server 2008 con la puerta de enlace de Terminal Services, y esta característica depende de RPC sobre el proxy HTTP. Para que RDP a través de la característica de RPC sobre el proxy HTTP funcione adecuadamente, es necesario instalar y ejecutar Internet Information Services (IIS) 7.0. También se necesitan los servicios de acceso y directivas de red, pero, si se prefiere, se puede configurar la puerta de enlace de TS para usar el servidor NPS, anteriormente denominado servicios de autenticación de Internet (IAS), para centralizar el almacenamiento, la administración y la validación de las directivas de autorización de conexiones a Terminal Services (CAP de TS). Por último, es necesario obtener un certificado SSL para el servidor Puerta de enlace de TS si todavía no se cuenta con uno. Es importante acentuar que ISA Server 2006 debe confiar en la entidad de certificación (CA) que emite el certificado. Por lo tanto, asegúrese de importar el certificado al almacén de entidades emisoras de certificados raíz de confianza.
Los servicios de dominio de Active Directory® sólo se necesitan si se configura una directiva de autorización de la puerta de enlace de TS que requiera que los usuarios sean miembros de un grupo de seguridad de Active Directory para conectarse al servidor Puerta de enlace de TS. Para esta configuración específica, usaremos Active Directory en un equipo que ejecuta Windows Server 2003 SP2.
Al finalizar la instalación del servicio de puerta de enlace de Terminal Services, aparece la pantalla de la figura 2, que muestra los componentes que han sido instalados. Para conectarse a la puerta de enlace de TS, los clientes deben ejecutar alguno de los sistemas operativos siguientes: Windows Vista®, Windows XP con SP2 y RDP 6.0 o posterior; Windows Server 2008; Windows Server 2003 con SP1 o posterior y RDP 6.0 o posterior. Para obtener más información sobre la configuración de la puerta de enlace de TS, consulte la guía paso a paso de instalación del servidor Puerta de enlace de TS de Windows Server 2008 disponible en go.microsoft.com/fwlink/?LinkId=122251. Ahora veamos cómo configurar ISA Server 2006.
Figura 2 Resumen de instalación de la puerta de enlace de TS (haga clic en la imagen para ampliarla)

Configuración de ISA Server 2006
El primer paso es crear una escucha de web que controlará las solicitudes del cliente RDP externo. Nuestra escucha de web tiene los siguientes parámetros:
  • Autenticación: Básica
  • Validación de autenticaciones: Windows (Active Directory)
  • Conexiones: Habilitar conexiones SSL (HTTPS) en el puerto 443
  • Certificados: Certificado emitido para tsg.contoso.com
  • Redes: Externa
A continuación se debe crear la regla de publicación de web. Desde la perspectiva de ISA Server 2006, el cliente RDP usará el mismo protocolo que Outlook® en cualquier lugar, de modo que se puede elegir el asistente de Exchange Server 2007. Siga estos pasos:
  1. Haga clic con el botón secundario en Directiva de firewall, seleccione Nueva y, a continuación, haga clic en Regla de publicación de acceso de cliente web de Exchange.
  2. En la página de bienvenida del asistente para crear una nueva regla de publicación de web, escriba el nombre de la regla y haga clic en Siguiente.
  3. En la página Seleccionar acción de regla, seleccione la opción Permitir y haga clic en Siguiente.
  4. En la página de nueva regla de publicación de Exchange, seleccione la versión de Exchange, en nuestro caso Exchange Server 2007. Seleccione Outlook Anywhere (RPC/HTTP) y haga clic en Siguiente. (Nota: no seleccione Publicar carpetas adicionales en el servidor Exchange Server para clientes de Outlook 2007.)
  5. En la página de Tipo de publicación, seleccione la opción Publicar un único sitio web o un equilibrador de carga y haga clic en Siguiente.
  6. En la página Seguridad de conexión de servidor, seleccione Usar SSL para conectar al servidor web o conjunto de servidores publicado y haga clic en Siguiente.
  7. En la página Detalles internos de publicación, en el cuadro Nombre interno del sitio, escriba el nombre del servidor Puerta de enlace de TS. Seleccione la casilla Usar un nombre de equipo o dirección IP para conectar al servidor publicado y, a continuación, en el cuadro Dirección IP o nombre del equipo, escriba el nombre del servidor. Si no conoce el nombre del servidor Puerta de enlace de TS, haga clic en Examinar para ir hasta su ubicación. Tenga en cuenta que el nombre que usa en esta página debe coincidir con el nombre común o nombre del sujeto que aparece en el certificado de sitio web con enlace al sitio web de la puerta de enlace de TS.
  8. En la página Detalles de nombre público, en la lista desplegable Aceptar peticiones para, seleccione Este nombre de dominio (escriba a continuación) y, a continuación, en el cuadro Nombre público, escriba el nombre público que coincide con el nombre del certificado emitido para esta dirección URL. En nuestro caso, el nombre era tsg.contoso.com. A continuación, haga clic en Siguiente.
  9. En la página Seleccionar escucha de web, haga clic en la lista desplegable, seleccione la escucha de web creada anteriormente y, a continuación, haga clic en Siguiente.
En la página Delegación de la autenticación, seleccione la opción Sin delegación, pero el cliente se puede autenticar directamente y haga clic en Siguiente.
En la página Conjunto de usuarios, compruebe que esté seleccionada la opción predeterminada (Todos los usuarios), haga clic en Siguiente y, a continuación, haga clic en Finalizar y aplique la regla.
Si hace doble clic en la regla y va a la ficha Ruta de acceso, verá que la única ruta de acceso es /rpc/*. Esto se debe a que usamos el asistente para habilitar Outlook en cualquier lugar de Exchange Server 2007.

Pruebas y supervisión de acceso de clientes
Como se ha indicado anteriormente, se necesita un cliente RDP 6.0 o posterior para conectarse a la puerta de enlace de TS. Para configurar la aplicación cliente RDP, inicie la aplicación y en el campo Equipo escriba el nombre del Terminal Server al que se desea conectar. Haga clic en el botón Opciones, en la ficha Opciones avanzadas y, en Configuración, escriba el nombre externo del servidor Puerta de enlace de TS, como se muestra en la figura 3. En nuestro ejemplo, es el nombre que se encuentra en el certificado con enlace a la escucha de web usada por la regla de publicación de web para aceptar las solicitudes entrantes. Tenga en cuenta que en este ejemplo se usa la autenticación de Windows NT® LAN Manager. Cuando termine, haga clic en Aceptar y, a continuación, en Conectar. Recibirá un mensaje de autenticación. Escriba las credenciales de un usuario con acceso a Terminal Server y haga clic en Aceptar.
Figura 3 Configuración del cliente RDP (haga clic en la imagen para ampliarla)
Tenga en cuenta que el cliente RDP 6.0 (para Windows XP y Windows Server 2003) mostrará la pantalla de la figura 3. La autenticación se solicitará dos veces: la primera autenticación pertenece al equipo de puerta de enlace de TS y la segunda al Terminal Server al que se desea tener acceso. Este punto es importante porque aunque quizás piense que se debe a la configuración del servidor ISA, de hecho el servidor ISA no controla en absoluto la autenticación, ya que la regla de publicación de web se aplica a "Todos los usuarios", lo cual permite las conexiones anónimas a través del firewall de ISA.
El cliente RDP provisto con Windows Server 2008 tiene una opción Usar mis credenciales de puerta de enlace de TS para el equipo remoto, tal como se muestra en la figura 4. Con esta opción seleccionada, no se necesita escribir dos veces las credenciales, lo que mejora la experiencia del usuario. Esta opción de inicio de sesión único también se encuentra disponible en Windows Vista después de aplicar SP1.
Figura 4 El cliente RDP de Windows Server 2008 (haga clic en la imagen para ampliarla)
La conexión a través del Administrador de Puerta de enlace de TS se puede supervisar mediante la opción Supervisión. El servicio de puerta de enlace de TS también proporciona detalles cuando un usuario no autorizado intenta conectarse al servidor. En la figura 5, el Visor de eventos muestra un intento de conexión de un usuario que no tiene permiso para conectarse a través de la puerta de enlace de TS.
Figura 5 Evento registrado en el servicio puerta de enlace de TS (haga clic en la imagen para ampliarla)
Para este evento, la dirección IP interna del servidor ISA Server 2006 se registra porque en la regla de publicación de web se habilita la opción Las peticiones parecen provenir del equipo servidor ISA. Si desea registrar la dirección IP del cliente original, necesitará cambiar la regla de publicación de web de ISA Server 2006 y en la ficha A, elegir la opción Las peticiones parecen provenir del cliente original.

Supervisión desde el servidor ISA
Con las nuevas características de ISA Server 2006 Supportability Pack, es posible observar detenidamente y entender cada conexión a la red interna. La figura 6 muestra una conexión resaltada y, en la línea de solicitud el verbo RPC_IN_DATA indica la dirección URL para RPC sobre el proxy HTTP.
Figura 6 Registro de ISA Server 2006 con la actualización de compatibilidad (haga clic en la imagen para ampliarla)
Si continúa analizando el registro, debería ver RPC_OUT_DATA, el otro verbo de RPC sobre HTTP. Es importante ser consciente de qué métodos HTTP se usan, RPC_IN_DATA y RPC_OUT_DATA para RDP/HTTP, porque si el filtrado HTTP está configurado para bloquear estos métodos, el tráfico se bloqueará en el servidor ISA. Si desea bloquear el entorno, puede configurar la regla de publicación de web RDP/HTTP para permitir sólo estos dos métodos. Para obtener más información sobre los métodos HTTP que normalmente se usan para publicar, debería leer el artículo "Filtrado HTTP en ISA Server 2004" en technet.microsoft.com/library/cc302627.

El segundo escenario
Para este escenario, la puerta de enlace de TS usará una directiva NPS central situada en otro servidor. Aplicaremos una directiva de NAP para los clientes que se conectan de forma remota a través de la puerta de enlace de TS. Se volverán a usar los mismos componentes del escenario 1, sólo que se agregará el servidor NPS. Sin embargo, debido al cumplimiento NAP, se deben usar componentes adicionales en el cliente, como se muestra en la figura 7.
Figura 7 Componentes principales de la topología del escenario 2 (haga clic en la imagen para ampliarla)
A continuación se ofrece una explicación de los componentes individuales. En el cliente Windows Vista, un agente de mantenimiento del sistema (SHA) incluye los componentes del cliente responsables de supervisar y notificar el estado de mantenimiento del cliente. Windows Vista incluye Windows SHA, pero hay otros proveedores que trabajan para crear sus propios SHA.
Cuando el cliente intenta obtener acceso a la red, el agente NAP del cliente es responsable de establecer las comunicaciones con el servidor de cumplimiento NAP. El agente NAP envía a ese servidor el informe de mantenimiento (SoH) del cliente.
En la puerta de enlace de TS, la directiva de autorización de recursos de TS (RAP de TS) es el componente que permite determinar qué equipos estarán disponibles para recibir las solicitudes RDP entrantes. La RAP de TS determina también qué usuarios pueden establecer conexiones RDP a servidores específicos.
El NPS central es responsable de controlar las condiciones, las restricciones y la configuración que regulan el acceso a los equipos internos. Los validadores de mantenimiento del sistema (SHV) en el NPS central son responsables de evaluar si el SoH enviado por el cliente cumple con la directiva que establece el administrador.
Ahora cambiaremos la puerta de enlace de TS para dirigirla a un servidor NPS central. Abra la consola del Administrador de puerta de enlace de TS, haga clic con el botón secundario en el nombre del servidor y elija la opción Propiedades. En la ventana de las propiedades del servidor, haga clic en la ficha Almacén de CAP de TS y seleccione Servidor NPS central. A continuación, escriba el nombre o la dirección IP del servidor NPS y haga clic en el botón Agregar. Verá que aparece la ventana Secreto compartido. Escriba el secreto, haga clic en Aceptar y haga clic una vez más en Aceptar para cerrar la ventana. Debe recordar este secreto porque se usará en el servidor NPS.
Si suponemos que NPS ya está instalado en otro servidor, estos son los pasos que deberá seguir:
  1. Abra la consola del servidor de directivas de redes y, en el panel izquierdo, haga clic en NPS (Local).
  2. En el panel derecho, haga clic en Configurar NAP. Aparece la página Seleccionar método de conexión de red para su uso con NAP.
  3. En Método de conexión de red, seleccione Puerta de enlace de Terminal Services (Puerta de enlace de TS) en el cuadro desplegable y haga clic en Siguiente.
  4. En la página Especificar Servidores de cumplimiento NAP que ejecuten Puerta de enlace de TS, haga clic en el botón Agregar.
  5. En la ventana Nuevo servidor Puerta de enlace de TS, escriba el nombre descriptivo y la dirección IP del servidor Puerta de enlace de TS. Y a continuación, en la parte inferior de la ventana, escriba el secreto compartido usando el mismo secreto que en la configuración del servidor Puerta de enlace de TS. A continuación, haga clic en Aceptar.
  6. En la página Configurar la redirección de dispositivos de cliente y los métodos de autenticación puede especificar qué dispositivos serán redireccionados y el método de autenticación permitido (contraseña o tarjeta inteligente). A efectos de este ejemplo, deje las opciones predeterminadas y haga clic en Siguiente.
  7. En la página Configurar grupos de usuarios y de equipos, agregue el grupo de usuarios al que se permite establecer la conexión. En este ejemplo, haga clic en el botón Agregar usuarios en Grupos de usuarios: (Requerido) y elija Adminis. del dominio. Haga clic en Aceptar y, a continuación, en Siguiente.
  8. En la página Definir directivas de mantenimiento de NAP, verá que ya está seleccionado el SHV predeterminado. Observe también que en la parte inferior de esta página se deniega el acceso a los equipos con incumplimiento. Deje los valores predeterminados seleccionados y haga clic en Siguiente.
  9. En la página Finalización de la configuración del cliente RADIUS y la directiva de aplicación NAP, revise las opciones previamente seleccionadas. También puede hacer clic en el hipervínculo Detalles de configuración y se abrirá una página HTML con un resumen de las selecciones. Cuando termine, haga clic en Finalizar.
Este asistente se encarga de establecer la configuración de varias directivas importantes (directivas de solicitud de conexión, directivas de red y directivas de mantenimiento) y reduce apreciablemente el trabajo necesario para configurar NAP en este escenario.

¿Qué ocurre con el cliente?
Ahora que el servidor está totalmente instalado y configurado, ¿qué se debe hacer en el cliente?
Para aprovechar la directiva de cumplimiento NAP, el cliente debe ser Windows Server 2008 o Windows Vista. En Windows XP deberá instalar SP3, que incluye el cliente NAP.
Además del requisito del sistema operativo, existen ciertas configuraciones y servicios relevantes que se deben habilitar en el cliente. Entre ellas se incluyen las siguientes:
  • Agregar el nombre de servidor Puerta de enlace de TS a la lista de servidores de confianza en el cliente.
  • Iniciar el servicio de agente NAP y establecer el tipo de inicio de servicio en Automático.
  • Habilitar el cliente de cumplimiento de cuarentena de puerta de enlace de TS.
Para simplificar la implementación de esta solución, Microsoft ha creado el comando de configuración del cliente NAP de Terminal Services (Tsgqecclientconfig.cmd), que se puede descargar de go.microsoft.com/fwlink/?LinkId=122267. Después de ejecutar el comando, el cliente estará configurado como un cliente de cumplimiento NAP para puerta de enlace de TS. Tenga en cuenta que el comando se debe ejecutar con privilegios elevados.
Nuestro objetivo principal en este artículo no sólo ha sido describir y explicar la nueva característica de la puerta de enlace de TS que se encuentra disponible en Windows Server 2008 y mostrar cómo publicarla de modo seguro a través de ISA Server 2006, sino ofrecer además una perspectiva general de las ventajas para la seguridad que la combinación de ambos productos puede proporcionar a su compañía.
En el mundo actual, estar conectado desde cualquier lugar es un requisito clave para casi cualquier negocio de éxito. Sin embargo, también es necesario incluir esta conectividad sin dejar de ofrecer una experiencia mejorada para el usuario. Y, lo que todavía es más importante, es obligatorio que todo se lleve a cabo de un modo que garantice la seguridad.

El Dr. Thomas W. Shinder es MCSE y MVP en ISA Server. Ha trabajado como instructor, escritor y consultor sobre tecnología desde el año 1996. El Dr. Shinder es autor de seis libros sobre el firewall ISA. También es un líder creador y autor principal de ISAserver.org, la comunidad más grande de administradores y partidarios del firewall ISA en Internet.

Yuri Diogenes, MCSE+S, MCTS, MCITP, Security+, Network+ y CCNP, es el ingeniero de soporte técnico de seguridad del equipo ISA Server/IAG de Microsoft. Yuri escribe artículos para la biblioteca TechNet Library de Microsoft y el blog del Equipo de ISA Server. Yuri ha trabajado con la tecnología de Microsoft desde el año 1993. Antes de unirse a Microsoft, trabajó como instructor de Microsoft, analista de soporte técnico y consultor.


IIS 7.0
Las diez principales mejoras de rendimiento en IIS 7.0
Mike Volodarsky
De un vistazo:
  • Minimizar el tamaño de la aplicación
  • Reducir los costos de ancho de banda
  • Usar las capacidades de caché mejoradas

Contenido
Servidores web más eficaces
Basarse en un sistema operativo eficaz
Topologías de aplicación especializadas
Compatibilidad con aplicaciones mejorada
Aumento de la densidad de aplicaciones
Reducción de ancho de banda mediante compresión
Limitación de velocidad de bits de medios
Almacenamiento en caché de los resultados
Conversión del código ISAPI en módulos de IIS 7.0
Extensibilidad de servidor
Conclusión
Cuando me reúno con las compañías que planean adoptar IIS 7.0, una cuestión que surge inevitablemente es si al cambiar a IIS 7.0 se mejorará el rendimiento de los servidores o las aplicaciones. La
respuesta por lo general es que sí, pero no hay que sorprenderse si no se ven mejoras de rendimiento al migrar por primera vez las aplicaciones a IIS 7.0.
Para comprender esto, es necesario entender la naturaleza de la última versión. IIS 6.0 fue una versión de ingeniería concebida para conseguir tres cosas: mayor seguridad, mayor confiabilidad y mejor rendimiento. Por el contrario, IIS 7.0 es una versión de plataforma. Su finalidad es convertir el núcleo de servidor web base de alta calidad de su antecesor en una plataforma modular y ampliable con compatibilidad para los escenarios actuales de implementación y administración.
Muchos de los cambios de arquitectura y las nuevas características pueden tener una repercusión negativa en el rendimiento del servidor web. Por ejemplo, uno de los cambios clave divide las rutas de acceso de código de servidor web plenamente integradas en módulos independientes que no obtienen un tratamiento especial del servidor web. No obstante, gracias a la gran cantidad de trabajo que ha realizado el equipo de IIS, IIS 7.0 tiene el mismo rendimiento que su antecesor y lo supera en determinadas áreas. Como puedo afirmar personalmente a partir de mi trabajo en el núcleo de servidor web y la canalización integrada, la consecución de esto requirió mucha inventiva en el diseño y trabajo duro en la implementación del producto.
A pesar de todo, IIS 7.0 tiene un potencial mucho mayor para ofrecer mejoras de rendimiento importantes y reducir los costos relacionados con el rendimiento para la granja de servidores que cualquier otra versión de IIS en el pasado.
Estas ventajas no se van a apreciar necesariamente con sólo migrar a IIS 7.0, pero sí en algunos entornos. Por ejemplo, Microsoft.com apreció una mejora del 10% en la eficacia de CPU (se puede encontrar el análisis completo en el blog del equipo de Microsoft.com en go.microsoft.com/fwlink/?LinkId=122497). También pueden observarse mejoras destacadas en áreas específicas, incluido SSL (capa de sockets seguros) y autenticación de Windows® (ambos se llevan a cabo en el kernel), y una mejor escalabilidad vertical en equipos con varios núcleos y múltiples procesadores.
No obstante, la eficacia real de IIS 7.0 no procede de las mejoras de rendimiento incrementales en las características existentes. En vez de eso, las mejoras proceden de las nuevas capacidades de las que se debe hacer un uso activo. Con frecuencia estas capacidades están arraigadas en la flexibilidad y la naturaleza extensible de la plataforma y en las nuevas características de rendimiento. En este artículo, mostraré 10 de los orígenes más importantes de las mejoras de rendimiento que se pueden liberar con el cambio a IIS 7.0.

Servidores web más eficaces
La capacidad de implementar servidores IIS 7.0 eficaces se deriva de la estructura modular del servidor. Prácticamente todas sus características de servidor web están implementadas como componentes modulares que se pueden agregar o quitar individualmente. De este modo, puede quitar cualquier característica de servidor que no sea necesaria para el funcionamiento de una aplicación, con lo que se aprecian ventajas importantes, incluida un área de superficie de ataque considerablemente reducida, un menor espacio operativo y un rendimiento mejorado.
El conjunto de características de servidor de IIS 7.0 completo contiene 44 módulos, incluidos módulos IIS nativos y módulos ASP.NET que proporcionan servicios para la canalización integrada. Estos módulos ofrecen servicios tales como la autenticación (módulos Autenticación de Windows y Autenticación de texto implícita), compatibilidad de marco de aplicaciones (módulo FastCGI), servicios de aplicación (módulo Estado de sesión), seguridad (módulo Filtro de solicitudes) y rendimiento (módulo Caché de resultados). Por lo que un servidor web mínimo que tiene que servir contenido estático puede ser funcional con sólo dos módulos.
La sobrecarga de los módulos innecesarios puede ser bastante importante (por ejemplo, en el caso de los módulos de registro de solicitudes y seguimiento de solicitudes con error). Al quitar estos módulos de los entornos en los que no se necesitan se puede producir un mayor rendimiento total y respuestas más rápidas que reduzcan las métricas de tiempo al primer byte (TTFB) y tiempo al último byte (TTLB) para la carga de trabajo del servidor.
En la figura 1 se muestran los resultados de una simple prueba de rendimiento de un archivo HTML (carga de trabajo estática) y una página ASP.NET del tipo "hola a todos" (carga de trabajo ASP.NET) cuando se configuran con el conjunto completo de características, el conjunto predeterminado de características para dicha carga de trabajo y el conjunto imprescindible de características necesarias para la carga de trabajo. Incluso si la mayoría de las características no esenciales ya están deshabilitadas en la configuración completa, al quitarlas totalmente de la configuración mínima se obtiene un incremento considerable del rendimiento tanto para la carga de trabajo estática como para la carga de trabajo ASP.NET.
Figura 1 Tasas de rendimiento de la carga de trabajo estática y la carga de trabajo ASP.NET en tres configuraciones distintas con 100 clientes simultáneos (haga clic en la imagen para ampliarla)
Además, puede ver mejoras en el espacio de memoria y la mayor densidad de sitio, especialmente en entornos de hospedaje compartido o en los casos donde se usa una gran cantidad de procesos de trabajo. Normalmente se logra con la carga de menos DLL en cada proceso y con la eliminación de las asignaciones de memoria que se producen durante la inicialización de módulos y el procesamiento de solicitudes. En la figura 2 se muestra el uso de la memoria (bytes privados del proceso de trabajo de IIS) en la misma prueba de rendimiento. Aunque las mejoras no son muy destacadas en este ejemplo, el incremento está en consonancia con las expectativas, ya que la sobrecarga de dominio de aplicaciones de ASP.NET es relativamente más alta que el ahorro de línea de base que proporcionan los módulos que se han quitado.
Figura 2 Uso de memoria (bytes privados) de las cargas de trabajo estática y ASP.NET en tres configuraciones distintas con 100 clientes simultáneos (haga clic en la imagen para ampliarla)
IIS 7.0 proporciona control adicional de los módulos que están habilitados en el nivel de aplicación, así como control del uso de módulos según la carga de trabajo mediante condiciones previas de módulo. Aunque esto requiere una configuración avanzada, puede proporcionar ventajas adicionales en entornos de varios sitios o para aplicaciones que admitan múltiples cargas de trabajo diferenciadas.
Pero cuidado, la determinación de la funcionalidad necesaria puede resultar complicada. Debe tener en cuenta no sólo la funcionalidad mínima necesaria para admitir el marco de aplicación, sino también cualquiera de las características adicionales en las que se pueda basar la aplicación indirectamente. Por ejemplo, la aplicación puede depender de métodos de autenticación específicos o estar basada en semánticas de autorización proporcionadas por diferentes características de IIS; en tal caso, al quitarlas se puede ver afectada negativamente la seguridad de la aplicación. Del mismo modo, la aplicación se puede basar en algunos de los módulos a efectos funcionales o de rendimiento; en tal caso, al quitarlos se puede producir un comportamiento incorrecto o una pérdida de rendimiento.

Basarse en un sistema operativo eficaz
Windows Server® 2008 también proporciona división por componentes en el nivel de sistema operativo que puede usar para reducir aún más el área de superficie del servidor web. Server Core es una opción de instalación mínima para el sistema operativo Windows Server 2008 y contiene un conjunto mínimo de subsistemas principales del sistema operativo. Server Core es un entorno ideal para servidores web IIS 7.0 eficaces.
Pero, al evaluar Server Core, tenga en cuenta que algunas limitaciones pueden afectar a su aplicación. Server Core no ofrece compatibilidad con Microsoft® .NET Framework, lo que significa que no hay ASP.NET, extensibilidad .NET para IIS ni Administrador de IIS. Además, las tareas de administración local requerirán herramientas de la línea de comandos ya que no hay Microsoft Management Console (MMC). Desde el punto de vista del rendimiento, si ya ha aprovechado correctamente la división en componentes de IIS, puede que no aprecie diferencias en el espacio de memoria o el rendimiento de la carga de trabajo de la aplicación en Server Core con respecto a una implementación completa de Windows Server. Esto se debe a que el trabajo que realiza IIS y la aplicación es el mismo en ambas plataformas. No obstante, hay un lugar donde se notarán diferencias: el tamaño general del servidor, tanto en términos de espacio en disco como en uso de memoria.
Como ejemplo, en la figura 3 se muestra la diferencia en tamaño después de realizar la prueba de carga de trabajo estática en una configuración de Windows Server 2008 completa y en Server Core. Aunque el tamaño de IIS es prácticamente idéntico en ambos casos, el menor espacio de sistema operativo general de Server Core permite que la carga de trabajo se admita con considerablemente menos memoria. De hecho, el menor tamaño puede permitir la implementación de la carga de trabajo de aplicación en hardware menos eficaz, centrándose en las demandas de procesamiento de la aplicación y no en el entorno operativo. Evidentemente, esto convierte a Server Core en una opción excelente para entornos virtualizados.
Figura 3 Espacio de memoria de Windows Server 2008 completo con respecto a Server Core después de realizar la prueba de carga de trabajo estática (haga clic en la imagen para ampliarla)

Topologías de aplicación especializadas
Al efectuar la optimización para cargas de trabajo de aplicación, se puede separar la carga de trabajo en partes diferenciadas. Por ejemplo, en vez de ejecutar la aplicación en una granja de 30 servidores web idénticos, puede ejecutarla en 10 servidores web, 5 servidores de aplicaciones y 3 servidores proxy que realicen el almacenamiento en caché y la compresión.
Hay varios motivos por los que funciona esta especialización. En primer lugar, el rendimiento de numerosas cargas de trabajo de aplicación depende en gran medida de una serie de recursos compartidos, como la memoria, que se pueden disputar varias partes de la aplicación. La disputa de estos recursos puede crear cuellos de botella que impidan que cada servidor se pueda usar por completo en los demás recursos. Al separar las partes de la aplicación se les ofrece acceso inmediato a los recursos que de otra manera se disputarían, lo que redunda en una mayor eficacia en el mismo conjunto de recursos de hardware.
En segundo lugar, la especialización puede habilitar que la aplicación logre una mayor localidad de caché, por lo que se mejora el rendimiento. Esto incluye el almacenamiento en caché de bajo nivel, como el búfer de traducción de direcciones (TLB) en memoria virtual, la caché del sistema de archivos y otras cachés de sistema operativo y de aplicaciones. Otro origen de ganancia de localidad se encuentra en la CPU. Mediante la reducción del número de actividades paralelas que tienen lugar al centrarse únicamente en una parte específica de la aplicación, ésta puede reducir el número de cambios de contextos y maximizar el trabajo desempeñado por la CPU.
En tercer lugar, la especialización habilita la optimización específica de carga de trabajo, con lo que cada parte de la aplicación funciona de un modo más eficaz. Muchas de estas optimizaciones no son posibles cuando toda la aplicación se encuentra en el mismo servidor debido a las necesidades en conflicto de las diferentes partes de la aplicación.
Un lugar habitual donde se produce esto es en la configuración de subprocesos de IIS y ASP.NET, que afecta considerablemente a la simultaneidad y afecta de forma indirecta al uso de memoria, latencia y rendimiento para numerosas aplicaciones. La carga de trabajo de archivos estática de IIS es muy asincrónica y requiere un elevado límite de solicitudes simultáneas, pero prospera en un número muy bajo de subprocesos disponibles. Por otro lado, muchas de las características de ASP.NET son sincrónicas, con un bloqueo largo y requieren un elevado número de subprocesos, mientras que otras requieren un límite de simultaneidad menor para reducir la repercusión en la memoria. Al separar la carga de trabajo estática y desglosar las partes de la canalización de procesamiento de solicitudes en un proceso o servidor independiente, se puede optimizar la simultaneidad de cada carga de trabajo individual.
Por último, la especialización puede habilitar una mayor escalabilidad general al permitir que la aplicación escale cargas de trabajo discretas o partes de aplicación independientes entre sí. Esto puede habilitar que la topología de aplicación ofrezca mayor capacidad y redundancia donde más se necesite, en vez de requerir que se aplique la misma plantilla a toda la aplicación. En este modelo, los recursos especializados pueden ser servidores físicos, servidores virtuales o incluso grupos de aplicaciones en el mismo equipo.
Al evaluar las ventajas posibles de la especialización en su topología de aplicación, empiece por buscar los cuellos de botella de procesamiento o de uso intensivo de los recursos en su aplicación. Estas áreas deben ser los primeros candidatos para la especialización ya que pueden proporcionar un potencial importante para la optimización cuando están aisladas y porque exigirán el máximo escalado en horizontal. A continuación, evalúe si el aislamiento habilita al resto de la aplicación para usar los recursos de un modo más eficaz. Finalmente, deberá evaluar la sobrecarga del mecanismo de conectividad necesario para combinar los componentes de la aplicación.

Compatibilidad con aplicaciones mejorada
IIS 7.0 incluye compatibilidad ampliada para los marcos de aplicaciones mediante FastCGI, un protocolo abierto que admiten muchos marcos de aplicaciones de código abierto que, de lo contrario, no podrían admitir la integración nativa estable y de alto rendimiento con IIS. A diferencia del protocolo de interfaz CGI, que ha admitido IIS durante mucho tiempo, FastCGI proporciona un rendimiento mucho mayor en la plataforma Windows. Esto se debe principalmente a la arquitectura de proceso reutilizable de FastCGI, que elimina la sobrecarga de la creación intensiva de procesos por solicitud, lo que permite a los clientes aprovechar las conexiones persistentes.
Si admite marcos de aplicaciones en IIS con CGI u otro mecanismo, puede lograr un rendimiento mejorado (y, en algunos casos, estabilidad) si cambia al protocolo FastCGI.
El primer marco de aplicaciones que aprovecha esta compatibilidad es PHP. De hecho, el equipo de IIS ha trabajado directamente con Zend Technologies para asegurarse de que la implementación FastCGI de IIS funciona bien con PHP y permite mejoras de rendimiento en el marco PHP en Windows. (Para obtener más información acerca del proyecto, consulte la publicación en mi blog en go.microsoft.com/fwlink/?LinkId=122509.) Si tiene una combinación de tecnologías de servidor web que incluya aplicaciones ASP o ASP.NET ejecutándose en IIS y PHP u otros marcos de aplicaciones compatibles con FastCGI que usen otras tecnologías, podrá consolidar estas aplicaciones en la plataforma IIS 7.0.
El cambio de PHP y otros marcos de aplicaciones a IIS 7.0 y FastCGI le permitirá aprovechar las características de IIS 7.0, incluida la canalización integrada de ASP.NET. Esto ofrece una opción muy cómoda para mejorar los marcos de aplicaciones con servicios ASP.NET sin convertirlos a ASP.NET. Y también permite que colaboren las aplicaciones que usan distintos marcos. Para ver un ejemplo de cómo se puede usar para mejorar las aplicaciones existentes con funcionalidad y mejorar el rendimiento sin cambiar el código, consulte mi artículo de MSDN® Magazine "Mejora de las aplicaciones con la canalización integrada de ASP.NET" (disponible en msdn.microsoft.com/magazine/cc135973.aspx).

Aumento de la densidad de aplicaciones
IIS 7.0 incluye muchas mejoras diseñadas para aumentar la densidad de las aplicaciones que se pueden hospedar en un solo servidor. Estas mejoras forman parte de numerosas características que proporciona IIS 7.0 para mejorar la calidad del hospedaje compartido, lo que incluye un aprovisionamiento de sitio mejorado y un mejor aislamiento de aplicaciones.
Desde el punto de vista del rendimiento, las mejoras se centran principalmente en dos aspectos del aumento de la densidad de aplicaciones: aumentar el número de aplicaciones que se pueden aprovisionar en un servidor IIS 7.0 y aumentar el número de aplicaciones que pueden estar activas en un momento determinado.
Tenga en cuenta que IIS 7.0 permite aprovisionar un número mayor de aplicaciones en cada servidor de lo que antes era posible; en algunas pruebas internas, fue posible hospedar hasta 100.000 sitios en un solo servidor. Esto se basa en la capacidad de crear y configurar un gran número de sitios y aplicaciones.
Pero cuidado, para conseguir el aprovisionamiento a alta velocidad, se debe cambiar a las nuevas API de configuración, ya que con las anteriores no se puede lograr. Además, no todas las API de configuración de IIS proporcionan las mismas características de rendimiento, por lo que se debe realizar una selección cuidadosa para garantizar un alto rendimiento. Si tiene dudas, busque las opciones de configuración que aprovechen los nuevos objetos de configuración de IIS directamente, incluido el espacio de nombres Microsoft.Web.Administration, la herramienta de la línea de comandos AppCmd.exe y los objetos de configuración COM de IIS, a los que se obtiene acceso desde script, .NET o código C++.
La diferencia entre cuántos sitios se pueden aprovisionar y cuántos pueden estar activos es una distinción muy importante en la arquitectura de IIS, que usa aplicaciones persistentes y procesos de trabajo para efectuar el procesamiento de solicitudes. En este modelo, las aplicaciones activas consumen más recursos en el servidor, pero también proporcionan mejor rendimiento sostenido debido al almacenamiento en caché y los costos de inicialización eliminados.
Debido a que cada aplicación activa requiere una determinada cantidad de memoria y un proceso de trabajo independiente (si se usa el modelo de aislamiento de aplicaciones recomendado), el número de aplicaciones activas depende del tamaño de memoria de aplicación. Por lo tanto, aunque una única aplicación que sólo sirve contenido estático puede requerir no más de 3 MB para su proceso de trabajo (e incluso puede compartirlo con otras aplicaciones de contenido estático), algunas aplicaciones dinámicas pueden requerir 100 MB o más de RAM incluso cuando se hace un uso bajo. Esto convierte la sobrecarga de memoria del proceso de trabajo de IIS en insignificante cuando se compara con el tamaño de la aplicación al definir la máxima densidad posible.
En el escenario típico de hospedaje compartido es habitual ver lo que se denomina la distribución 80/20, donde el 80% de las solicitudes va al 20% de los sitios. Esto tiene como resultado un porcentaje pequeño de los sitios que están activos en un momento determinado. Para permitir un mayor número de sitios activos, IIS 7.0 proporciona administración del ciclo de vida activa. Esto puede ayudarle a recuperar memoria de las aplicaciones inactivas con el fin de permitir el hospedaje de más aplicaciones activas.
IIS 7.0 presenta un nuevo algoritmo, denominado tiempo de espera dinámico, que ajusta de forma proactiva los tiempos de espera de inactividad de los procesos de trabajo según la memoria disponible en el servidor. A medida que se reduce la memoria, las aplicaciones inactivas se quitan más rápidamente, lo que permite que se hospeden más aplicaciones activas. No obstante, si hay memoria disponible, los tiempos de espera pueden ser grandes para proporcionar mejor rendimiento y mantener el estado de la aplicación. Además de permitir que más aplicaciones estén activas, el tiempo de espera dinámico también contribuye a evitar las situaciones de memoria que provoquen un deterioro grave del rendimiento debido a la hiperpaginación.
Para poder hospedar muchas aplicaciones activas, también se debe sacar provecho de un sistema operativo de 64 bits, ya que se permitirá que el sistema operativo direccione más de 4 GB de memoria. A partir de esto se pueden configurar los procesos de trabajo de IIS para que se ejecuten en modo de 32 bits (SysWoW64), donde consumen menos memoria, a la vez que permiten que el sistema operativo direccione más memoria de la que sería posible en un entorno de 32 bits.

Reducción de ancho de banda mediante compresión
No es de sorprender que los costos de ancho de banda constituyan los principales en un centro de datos orientado a Internet. Además, el ancho de banda necesario para proporcionar el contenido solicitado es un factor clave en la capacidad de respuesta percibida de la aplicación.
Una de las formas más efectivas de reducir el ancho de banda necesario para proporcionar las respuestas de aplicación es el uso de la compresión HTTP. Esto puede reducir de forma considerable el tamaño de la respuesta, normalmente hasta una décima parte cuando se aplica a contenido de texto de fácil compresión, como HTML. Lo mejor de todo es que prácticamente todos los exploradores de escritorio lo admiten y los costos de descompresión en el hardware de escritorio son menores si se comparan con el ahorro de latencia derivado del envío de menos datos. Y como la compresión se basa en la negociación de codificación de contenido definida en el protocolo HTTP 1.1, su habilitación es segura para los clientes que no admiten compresión, ya que estos clientes simplemente reciben una versión sin comprimir del contenido.
IIS 7.0 ofrece las dos características de compresión presentadas por su antecesor: compresión estática y compresión dinámica. Con la compresión estática se comprime previamente el contenido estático y se guarda en disco, lo que permite servir contenido comprimido directamente a las solicitudes futuras sin la sobrecarga de la compresión. Con la compresión dinámica se comprime la respuesta en tiempo real y, por lo tanto, se habilita la compresión de las respuestas generadas por las aplicaciones. Cualquier marco de aplicaciones en IIS 7.0 puede aprovechar la compresión dinámica, incluido ASP, ASP.NET o PHP.
A pesar de la creencia común, la compresión dinámica normalmente no tiene una sobrecarga de CPU prohibitiva. De hecho, la compresión dinámica suele suponer menos del 5% del uso de CPU total en un servidor ocupado. La compresión dinámica se puede implementar de un modo libre para permitir un ahorro de ancho de banda máximo para cualquier carga de trabajo de aplicación.
Se puede optimizar la sobrecarga de compresión si se configura el nivel de compresión de modo que se logre la compresión deseada según la relación de sobrecarga de CPU. Pero eso no es todo, también se puede configurar la aplicación para habilitar el almacenamiento en caché del contenido comprimido, lo que elimina la sobrecarga de compresión en aciertos de caché al servir contenido ya comprimido. Tenga en cuenta que las cachés de ASP.NET y de resultados de IIS se han actualizado con la capacidad opcional de almacenar en caché el contenido comprimido para los clientes que lo admitan, así como el tratamiento de las solicitudes de clientes que requieran contenido sin comprimir.

Limitación de velocidad de bits de medios
Con el aumento de sitios que ofrecen contenido multimedia, los costos de ancho de banda para muchas compañías están subiendo vertiginosamente. Y lo que es peor, un gran porcentaje del ancho de banda de medios se desperdicia porque el contenido multimedia enviado al cliente nunca se usa realmente. ¿Por qué sucede esto?
Piense en la última vez que vio un vídeo en línea o vio un anuncio de vídeo mientras exploraba. ¿Vio el vídeo hasta el final? Es habitual que los usuarios que exploran sitios de vídeos vean únicamente una parte de un vídeo antes de pasar al siguiente o salir de la página. No obstante, un servidor web que use descarga progresiva para entregar el vídeo normalmente enviará muchos más datos de los necesarios para esos pocos segundos de reproducción. La mayor parte de los datos nunca se usa.
Si los vídeos, de media, sólo se ven durante 5 segundos pero se suministran (en búfer) 30 segundos de datos de vídeo en esos 5 segundos, se está perdiendo potencialmente más del 80% del ancho de banda.
Hace uno año, para resolver este problema para un cliente que estaba adoptando una versión beta de IIS 7.0, escribí un módulo de limitación de ancho de banda que detectaba automáticamente la velocidad de bits de vídeo y garantizaba que el servidor entregaba el vídeo al cliente prácticamente a la misma velocidad. El equipo de medios de IIS seleccionó este módulo, que se denomina módulo de limitación de velocidad de bits (consulte la figura 4) y está disponible en el centro de descarga de iis.net (iis.net/downloads/?tabid=34&g=6&i=1640). Puede obtener más información acerca de él en el blog de Scott Guthrie (disponible en go.microsoft.com/fwlink/?LinkId=122514).
Figura 4 La limitación de la limitación de velocidad de bits minimiza el uso de ancho de banda (haga clic en la imagen para ampliarla)
El módulo de limitación de velocidad de bits detecta automáticamente la velocidad de codificación de los tipos de vídeo más conocidos. Se puede controlar la cantidad de datos que se desea enviar previamente al cliente con el fin de eliminar los retrasos de búfer iniciales (inicio rápido) y el porcentaje de la velocidad codificada a la que se desea entregar el contenido. También puede configurar otras numerosas opciones, como el ancho de banda máximo y las conexiones simultáneas, así como controlar el módulo mediante programa.

Almacenamiento en caché de los resultados
Por lo general, el almacenamiento en caché es la principal manera de mejorar el rendimiento de las aplicaciones que ejecutan trabajo repetido. A diferencia de las mejoras de rendimiento específicas de la aplicación, que normalmente requieren muchos esfuerzos y quitar la sobrecarga de procesamiento de una aplicación, el almacenamiento en caché elimina la sobrecarga de las solicitudes repetidas para el mismo contenido.
Antes de IIS 7.0, tanto IIS como ASP.NET habían ofrecido capacidades de almacenamiento en caché en forma de caché de kernel de IIS y la caché de resultados de ASP.NET. La caché de kernel de IIS proporcionaba el máximo rendimiento, pero estaba restringida principalmente al contenido estático. La caché de resultados de ASP.NET era con diferencia la solución más completa para almacenar en caché el contenido dinámico, aunque con un rendimiento más lento y una administración de memoria menos eficaz. La nueva caché de resultados de IIS 7.0 llena el vacío entre la caché de kernel de IIS y la caché de resultados de ASP.NET.
La caché de resultados de IIS 7.0 permite el almacenamiento en caché de contenido dinámico de cualquier aplicación, incluido ASP, ASP.NET, PHP y cualquier marco de aplicaciones compatible con IIS 7.0. Al proporcionar compatibilidad básica para la variabilidad y caducidad de contenido, esta nueva característica permite implementar el almacenamiento en caché para el contenido que la caché del kernel de IIS no puede almacenar. Sin embargo, permite el uso de la caché del kernel para contenido que cumple las restricciones.
Además, la caché de resultados de IIS 7.0 también proporciona una alternativa de mayor rendimiento a la caché de resultados de ASP.NET para el contenido ASP.NET que no requiere las características avanzadas de almacenamiento en caché (como las dependencias de caché o la invalidación) que sólo están disponibles en la caché de resultados de ASP.NET.
En lo que se refiere al almacenamiento en caché de los resultados, los desafíos normalmente se encuentran en la definición de las directivas de caducidad, invalidación y variabilidad de contenido adecuadas que permitan el almacenamiento en caché de respuestas eficaz a la vez que se mantienen la corrección y actualización de la caché necesarias. La mayoría de las veces, esta operación se puede realizar simplemente con la configuración de las reglas de almacenamiento en caché correctas, aunque algunas situaciones requieren directivas más complejas que dependen de la información en tiempo de ejecución. Para ocuparse de esto, la caché de resultados de IIS 7.0 proporciona unas API de programación que se pueden usar para garantizar el comportamiento de almacenamiento en caché adecuado. De este modo se libera el potencial de rendimiento de almacenamiento en caché para el contenido que, de otro modo, no se beneficiaría de dicho almacenamiento. Además, la canalización integrada de ASP.NET permite el uso de la caché de resultados de ASP.NET para contenido que no es de ASP.NET.
La implementación de la caché de resultados para el contenido dinámico puede resultar compleja y requerir una estrategia multinivel para capitalizar las eficacias y la flexibilidad de las diferentes características de almacenamiento en caché de la plataforma IIS 7.0. Esto suele incluir la descripción de múltiples parámetros que afectan a la respuesta y la definición de las estrategias de caducidad e invalidación para mantener la actualización de la caché y, a continuación, determinar la caché que admitirá la semántica necesaria.
Pero casi siempre esta complejidad merece la pena. Al implementar la caché de resultados de IIS 7.0, se pueden obtener mejoras de varios órdenes de magnitud en el rendimiento global de la aplicación y la reducción correspondiente de la carga en los componentes de nivel de base de datos y empresarial.

Conversión del código ISAPI en módulos de IIS 7.0
IIS 7.0 presenta una nueva API de servidor en la que se basan todos los módulos de IIS 7.0. Reemplaza las API de filtro y extensión de ISAPI que se usaban en las versiones anteriores de IIS. Para los nuevos módulos que no necesitan admitir versiones anteriores, las nuevas API son más fáciles de usar, ayudan a producir código de servidor más confiable y son mucho más eficaces.
No obstante, IIS 7.0 proporciona una opción para admitir los filtros y extensiones de ISAPI existentes mediante una capa de compatibilidad implementada a través de módulos de IIS 7.0 opcionales. Esto permite que los componentes de ISAPI existentes funcionen en IIS 7.0 sin que se deban reescribir.
Aunque el uso de las inversiones en ISAPI existentes baja el listón para la migración a IIS 7.0, debe considerar seriamente la posibilidad de migrar el código ISAPI anterior a las nuevas API de IIS 7.0. Si se hace así, se elimina la sobrecarga de la capa de compatibilidad con ISAPI y se liberan las ventajas de rendimiento que no están disponibles para los componentes de ISAPI. En función del trabajo que desarrolle el componente de ISAPI, estas ventajas de rendimiento pueden ser bastante considerables. Por ejemplo, la API de módulos de IIS 7.0 proporciona compatibilidad integrada para almacenar en caché metadatos de configuración y otros datos arbitrarios asociados a sitios, aplicaciones y direcciones URL que pueden acelerar considerablemente las operaciones internas del componente.
Además, la API de módulos de IIS permite que los módulos realicen operaciones de larga ejecución asincrónicamente, como la recepción de datos de entidad de solicitud o el envío de respuesta. La realización de estas tareas asincrónicamente permite que el servidor se escale a una gran cantidad de clientes simultáneos (decenas de miles), en vez de ampliarse a decenas o, como mucho, centenares de clientes simultáneos debido a las limitaciones en el número de subprocesos de solicitud. El procesamiento asincrónico también puede eliminar el efecto de procesamiento en otras solicitudes y actividades de la aplicación, reducir el uso de la memoria y habilitar una utilización de CPU mucho mejor.
A partir de los patrones específicos que afectan al rendimiento, la API nativa ofrece a los desarrolladores mayor flexibilidad para las tareas de procesamiento de solicitudes. Esto le permitirá mejorar el diseño del componente de servidor y, a su vez, obtener mayor eficacia. Por ejemplo, determinadas tareas de filtrado que anteriormente requerían extensiones de ISAPI de comodín y ejecución de solicitudes secundarias ahora se pueden llevar a cabo en un módulo durante la solicitud original y también pueden permitir el almacenamiento en caché del kernel de IIS para la respuesta.
Esto puede requerir el desarrollo de prototipos y experimentación para determinar el diseño óptimo que maximice las ventajas de la migración. Debido a las diferencias de arquitectura fundamentales entre ISAPI y la API de módulos de IIS 7.0, la vía de migración directa no es necesariamente la adecuada. La buena noticia es que la API de módulos de IIS 7.0 también es más sencilla de usar que ISAPI, por lo que la migración resulta menos difícil.

Extensibilidad de servidor
IIS 7.0 ofrece extensibilidad de un extremo a otro. Se requiere un buen conocimiento previo del funcionamiento del servidor, pero también se libera un potencial enorme para ganancias de rendimiento específico de la aplicación. Con el conocimiento de la arquitectura de servidor y el procesamiento de solicitudes, puede aprovechar esta extensibilidad para diseñar soluciones de rendimiento personalizadas y adaptadas a sus requisitos de aplicación, carga de trabajo y hardware.
Se puede presentar como el reemplazo de cualquiera de las características de IIS 7.0 integradas con implementaciones personalizadas. Aunque se han realizado numerosas pruebas de optimización y rendimiento de las características de IIS 7.0, evidentemente no se han optimizado para todos los usos posibles. Por lo tanto, puede poder mejorar el rendimiento de módulos específicos si crea optimizaciones para su carga de trabajo específica. Por ejemplo, puede decidir volver a implementar el módulo de listado de directorio para almacenar en memoria los listados de directorio en vez de usar las API del sistema de archivos para enumerar archivos.
La extensibilidad también se puede usar para crear nuevas características de rendimiento. Los ejemplos integrados de estas características son la caché de resultados, los módulos de compresión y otras cachés internas.
Para determinar la necesidad de una característica de rendimiento personalizada debe comprender las características de rendimiento de su aplicación y su carga de trabajo, así como conocer el cuello de botella que debe solucionar. IIS 7.0 proporciona compatibilidad de diagnóstico amplia para el análisis del rendimiento, lo que facilita la comprensión de los requisitos y el diseño posible de las características que necesita.

Conclusión
Aunque la versión IIS 7.0 es principalmente una versión funcional, ofrece mejoras de rendimiento considerables derivadas de su arquitectura modular, capacidad de configuración y nuevas características de rendimiento. Estas mejoras pueden preparar el terreno para un ahorro empresarial importante mediante la consolidación de servidores y la reducción de costos de ancho de banda, así como proporcionar una mejor experiencia del usuario.
Para aprovechar correctamente muchas de estas mejoras, normalmente es necesario realizar un análisis exhaustivo de la plataforma de aplicaciones actual y conocer a fondo la arquitectura de IIS 7.0. Para obtener más información acerca de la arquitectura de IIS 7.0 y las características mencionadas en este artículo, visite iis.net. En el blog de mvolo.com ofreceré más información acerca de técnicas que aprovechan de forma proactiva IIS 7.0 para mejorar el rendimiento de las aplicaciones y reducir los costos operativos.
Mike Volodarsky es un antiguo director de programas del equipo IIS de Microsoft. Durante los últimos cinco años ha impulsado el diseño y desarrollo del conjunto de características básicas de ASP.NET 2.0 e IIS 7.0. Ahora crea tecnologías de servidor web avanzadas para granjas de servidores web de alto rendimiento que usan IIS 7.0 y Windows Server 2008. Mike es el autor principal del libro IIS 7.0 Resource Kit y escribe para MSDN Magazine y su blog de IIS 7.0, mvolo.com.


Movilidad
Convierta en móvil su línea de aplicaciones de negocio
Matt Fontaine
De un vistazo:
  • Necesidad empresarial de aplicaciones LOB móviles
  • Plataforma robusta para desarrollo e implementación mLOB
  • Seguridad, administración y aprovisionamiento inalámbricos

Contenido
Habilitación y administración de trabajadores remotos
Seguridad y administración de dispositivos
Interoperabilidad
TI y productividad de usuario
Desarrollo y distribución
Conclusiones
Más allá de las funciones tradicionales de voz, mensajería y productividad, hoy en día muchas empresas desean que los profesionales móviles tengan acceso a la misma línea de sistemas de negocio (LOB) que usan en
la oficina a través de aplicaciones móviles (mLOB). Entre los sistemas potenciales se encuentran las aplicaciones de administración de relaciones de cliente (CRM), planeación de recursos de empresa (ERP), inteligencia empresarial (BI), finanzas y contabilidad. Obviamente, disponer de funcionalidad mLOB permite a los usuarios móviles tener acceso y usar aplicaciones de negocio ricas, e interactuar con datos sobre la marcha en tiempo real, lo que reduce el tiempo de comercialización, mejora la satisfacción del cliente y aumenta la productividad del negocio. Algunas situaciones empresariales típicas podrían ser:
  • Los equipos de ventas pueden usar Microsoft Dynamics™ CRM Mobile para ver y actualizar datos del cliente desde cualquier parte. Otra aplicación mLOB podría darles acceso a datos de precios e inventario en tiempo real. Además, los vendedores podrían usar dispositivos especializados para reunir documentación de ventas in situ; por ejemplo, les permitirían rellenar pedidos o reunir firmas digitales. De hecho, incluso hay aplicaciones de punto de venta para dispositivos Windows Mobile® que pueden explorar códigos de barras, leer tarjetas de crédito y, después, conectar al back-end de los sistemas de datos LOB para realizar el procesamiento.
  • Se puede programar el trabajo del personal de campo con soluciones de ERP que trazan las rutas del personal según sus citas y su ubicación, y se pueden seguir automáticamente con dispositivos Windows Mobile equipados con GPS. El personal de trabajo de campo sólo tiene que tomar el primer trabajo del día; a medida que se completen los trabajos se les enviará automáticamente al próximo (consulte la figura 1).
  • En organizaciones industriales, se pueden usar los dispositivos Windows Mobile con capacidades de exploración de RFID (identificación de frecuencia de radio) para administrar el inventario en un almacén habilitado para RFID, ofreciendo de forma instantánea e inalámbrica información a una base de datos. Además, hay dispositivos Windows Mobile protegidos o diseñados para ser "intrínsecamente seguros" y funcionar en entornos peligrosos para proporcionar datos donde se necesite, cumpliendo al mismo tiempo requisitos importantes de seguridad.
  • Los ejecutivos móviles que van de reuniones con clientes a reuniones de administración y tienen que encajar varios eventos en un mismo día (quizás lejos de la oficina doméstica) pueden obtener informes financieros y de gastos o información sobre clientes desde cualquier lugar.
Estas y muchas otras situaciones de negocio están haciendo que compañías de vanguardia adopten las aplicaciones mLOB. Este artículo le mostrará cómo trabajan conjuntamente Windows Mobile y Mobile Device Manager, lo que permite a los profesionales de TI implementar las funcionalidades móviles más completas que cada vez demandan más negocios actuales.
Figura 1 Aplicación mLOB que muestra un trabajo de servicio de campo completado

Habilitación y administración de trabajadores remotos
Windows Mobile ha resultado ser una plataforma eficaz para habilitar a trabajadores remotos en sectores diversos porque funciona bien con los activos de TI basados en Windows®. A su vez, Exchange Server y Office Communications Server permiten la comunicación de mensajería móvil y la comunicación unificada (UC), y tanto usuarios como profesionales de TI disfrutan de una experiencia familiar de Windows que requiere menos conocimientos para usarla y entenderla.
Con el lanzamiento de Mobile Device Manager, Windows Mobile se ha convertido en una opción aún más práctica para la implementación de dispositivos móviles en configuraciones empresariales. Mobile Device Manager permite aprovisionar, administrar y proteger dispositivos móviles de forma inalámbrica con Active Directory® y directivas de grupo, como si los dispositivos fueran equipos conectados en red o recursos compartidos de archivos. Se pueden enviar directivas y software a teléfonos automáticamente y las directivas de seguridad, software y hardware se pueden administrar de forma muy granular mediante completas capacidades de generación de informes de inventario.
El impulso que hay detrás de estas innovaciones es la noción de que los dispositivos móviles deben ser las extensiones naturales de los sistemas de TI, en lugar de existir en su propia burbuja de middleware. Para las compañías que desean ir mucho más allá de la mensajería, las comunicaciones y la productividad básica en dispositivos Windows Mobile, resulta fundamental convertir los dispositivos móviles en ciudadanos de primera clase en la red.
¿Qué pasa entonces si su organización es una de las que quiere ir más allá de los conceptos básicos? Echemos un vistazo a las características de Windows Mobile y Mobile Device Manager que hacen que esto sea posible al ofrecer una excelente plataforma para aplicaciones mLOB.

Seguridad y administración de dispositivos
Las mismas capacidades que hacen que las aplicaciones mLOB resulten atractivas (que permitan acceder desde cualquier parte y momento a información empresarial crítica sobre clientes, finanzas, inventarios, etc.) también hacen que la seguridad sea mucho más importante. Los usuarios escriben y tienen acceso a esa información desde pequeños dispositivos a través de redes públicas desde distintas ubicaciones.
Muchas compañías ya permiten el acceso móvil a aplicaciones LOB así como a otros recursos y herramientas compartidos en la intranet a través de equipos portátiles con conexiones VPN (red privada virtual). Mobile Device Manager amplía esta funcionalidad a los dispositivos Windows Mobile con VPN móvil (consulte la figura 2). Mobile Device Manager Gateway Server habilita un túnel IPsec cifrado entre el cliente de Windows Mobile y la red, lo que ofrece un acceso protegido a la información que se encuentra tras el firewall corporativo desde conexiones públicas como Internet o redes inalámbricas de paquetes de datos. Windows Mobile es compatible con varios tipos de cifrado en esta configuración.
Figura 2 Administración de dispositivos avanzada, seguridad y VPN móvil con Mobile Device Manager (haga clic en la imagen para ampliarla)

Interoperabilidad
Las directivas de cifrado se pueden establecer y aplicar para datos de dispositivos y tarjetas de memoria. Los trabajadores que usan aplicaciones mLOB podrían descargar información confidencial a sus dispositivos móviles, que son mucho más fáciles de perder que otros dispositivos de red. Por suerte, los dispositivos habilitados con VPN móvil con una conexión de datos se pueden borrar remotamente (consulte la figura 3). Por ejemplo, si un vendedor farmacéutico descarga archivos de clientes desde el sistema CRM de su compañía en su dispositivo móvil y después se olvida el dispositivo en un taxi, podrían producirse consecuencias graves.
Figura 3 Si se pierde o se roba un dispositivo móvil, la información que contiene se puede eliminar de forma remota. (haga clic en la imagen para ampliarla)
Mobile Device Manager está diseñado para tratar con problemas de este tipo. De hecho, Mobile Device Manager permite administrar casi cualquier aspecto de la funcionalidad y de la directiva de usuarios de los dispositivos Windows Mobile. Por ejemplo, permite deshabilitar funciones de hardware específicas, controlar qué aplicaciones se pueden instalar, limitar el acceso a ciertos recursos de red, etc. Todo esto se puede hacer desde una misma solución, y todo ello se puede hacer de forma inalámbrica. Cuando los usuarios tienen capacidades mLOB, estas características pasan a ser aún más importantes. Por ejemplo, es posible que desee evitar que los usuarios usen redes Bluetooth, lo cual les permitiría descargar datos en dispositivos no controlados. Es posible que desee que sólo algunos usuarios puedan instalar el cliente del software de contabilidad móvil, así que podría establecerlo para que se cargue e instale sólo en aquellos usuarios que lo necesitan.
Recursos adicionales
  • Microsoft System Center Mobile Device Manager 2008
  • Presentación de Microsoft System Center Mobile Device Manager 2008
  • Microsoft System Center Mobile Device Manager 2008: Artículo técnico del producto
  • Microsoft System Center Mobile Device Manager 2008 Introducción para el sector empresarial
  • Acelerador de soluciones para la línea de negocios Windows Mobile 2008
Además, Mobile Device Manager no requiere que los datos corporativos pasen a través de un NOC (centro de operación de red) de terceros, cosa que podría representar otro punto débil en cuanto a disponibilidad o seguridad. En esencia, Mobile Device Manager ofrece un control completo sobre las implementaciones en dispositivos móviles a casi cualquier escala (control que hace fácil implementar, administrar y proteger la funcionalidad mLOB).
La integración de red ofrece otra ventaja: este el control sumamente granular se obtiene a través de Active Directory y la directiva de grupo, sin necesidad de administrar los dispositivos móviles por separado de los demás clientes de red. Esto ahorra tiempo y dinero. Y lo que es más importante, permite emplear directivas de seguridad y acceso uniformes. La directiva de grupo es una manera muy eficaz de controlar el acceso móvil a datos LOB. A los que necesitan el acceso se les otorga fácilmente; a los que no, se les puede impedir en grupo o de forma individual.
Otra consideración principal al administrar implementaciones de mLOB (y de dispositivos móviles en general) es la interoperabilidad con la infraestructura existente. A diferencia de Windows Mobile, algunos sistemas operativos de dispositivos móviles están desconectados de otras formas de TI, por lo que requieren sus propios lenguajes, servidores y herramientas. Estos factores pasan a ser cada vez más importantes cuando se ofrecen aplicaciones complejas y acceso a datos críticos en dispositivos móviles.
Windows Mobile y Mobile Device Manager ofrecen esa interoperabilidad. Como sistema operativo Windows, Windows Mobile funciona bien con otros activos de TI basados en Windows, como Microsoft® Exchange Server, Microsoft Forefront™, SQL Server® y Microsoft Office Communications Server. Esta interoperabilidad entre familia facilita el diseño y la creación de funcionalidades mLOB avanzadas.
Por ejemplo, Windows Communication Foundation (WCF), la tecnología de Microsoft .NET Framework para habilitar la comunicación entre aplicaciones, puede habilitar Exchange Server para usarse como utilidad de transferencia de mensajes en implementaciones de mLOB que usen una arquitectura orientada a servicios (SOA). En algunos casos, los trabajadores conectados se pueden mantener actualizados mediante un nuevo marco de sincronización que facilita la sincronización de datos entre dispositivos Windows Mobile con SQL Server Compact 3.5 y los datos corporativos en SQL Server 2008. Estas situaciones serían mucho más difíciles de implementar sin una infraestructura móvil que funcione con tantos recursos de red originales.

TI y productividad de usuario
Uno de los objetivos más importantes de las implementaciones de mLOB es el aumento de la productividad. Pero si las capacidades son difíciles de usar para los trabajadores y de administrar para los profesionales de TI, los costos pueden pesar más que las prestaciones o, al menos, reducir el rendimiento de la inversión (ROI). Un objetivo del desarrollo de Windows Mobile es hacerlo tan parecido como sea posible a los equipos de escritorio de Windows; la familiaridad resultante puede aumentar el valor de la solución.
En cuanto a TI, Windows Mobile (usando Mobile Device Manager) está diseñado para normalizar la incorporación a la red de los dispositivos Windows Mobile. Esto lo consigue usando tecnología familiar, en especial Active Directory y Windows Server®. Mobile Device Manager forma parte de la familia System Center de soluciones de administración de TI, que ya usan gran cantidad de profesionales de TI en todo el mundo. En lugar de tener que aprender todo un conjunto de herramientas y prácticas nuevas, los profesionales de TI familiarizados con un entorno basado en Windows pueden usar los complementos de Microsoft Management Console que ya conocen.
Lo mismo puede aplicarse a los usuarios. La experiencia parecida a la del escritorio que ofrece Windows Mobile los ayuda a aprender a usarlo rápidamente. Pueden usar el conjunto Office Mobile, que incluye Office Mobile Outlook®, para poder trabajar sin tener que aprender aplicaciones nuevas. No tienen que preocuparse por la administración de los dispositivos, porque de eso se encargan centralmente. Las aplicaciones mLOB se pueden diseñar para que funcionen de manera similar a las versiones de escritorio de los mismos programas; se pueden crear nuevas herramientas para que tengan el aspecto y funcionen como software normal de Windows. Esta familiaridad del usuario puede tener como resultado que se realicen menos llamadas al soporte técnico y reducir la gravedad de los incidentes, toda una bendición para los profesionales de TI.
Otros aspectos de la plataforma Windows Mobile y Mobile Device Manager también mejoran la productividad. VPN móvil ofrece conectividad continua y persistente incluso entre redes, además de la funcionalidad de reconexión rápida, lo que ayuda a los usuarios a conectarse cuando lo necesitan y reduce otro origen común de llamadas al servicio de soporte técnico. Los distintos diseños de dispositivo compatibles con Windows Mobile permiten a las compañías estandarizar un número reducido de dispositivos, aunque los empleados pueden elegir entre distintos dispositivos el que más se adapte a sus necesidades. La diversidad de dispositivos también permite mejorar la productividad mediante mLOB, como en situaciones de administración de inventarios mediante códigos de barras o de trazado de rutas con dispositivos habilitados con GPS.

Desarrollo y distribución
Los atributos que definen las aplicaciones LOB (riqueza de datos, potencia y funcionalidad especializada) tienden a funcionar mejor en una plataforma móvil diseñada para la productividad basada en aplicaciones. Windows Mobile ofrece una experiencia parecida a la del escritorio para trabajadores móviles, haciendo que sea más fácil desarrollar, distribuir y administrar las aplicaciones mLOB.
Para empezar, Windows Mobile es compatible con una versión de .NET llamada .NET Compact Framework. Como .NET Framework es un conjunto de herramientas de programación que usan millones de desarrolladores en todo el mundo, muchas operaciones de TI ya disponen de las habilidades necesarias para personalizar y crear aplicaciones mLOB para Windows Mobile. Y si no es así, esas habilidades están fácilmente disponibles en el mercado.
Windows Mobile también es compatible con muchas aplicaciones mLOB disponibles comercialmente. Microsoft ofrece soluciones mLOB como parte de su familia de productos Microsoft Dynamics, incluidos Microsoft Dynamics CRM Mobile y Microsoft Dynamics AX Mobile Sales. Además, Microsoft Dynamics Mobile Development Tools ofrece a los desarrolladores las tecnologías para ampliar el software al entorno móvil. Microsoft se ha comprometido a convertir en móviles otras soluciones Microsoft Dynamics y se anuncia una próxima compatibilidad con Microsoft Dynamics NAV. Y la mayoría de soluciones LOB, como SAP, Siebel, PeopleSoft y SalesForce.com ofrecen versiones compatibles con Windows Mobile de sus conjuntos de aplicaciones.
Una vez adquiridas y desarrolladas, las aplicaciones mLOB se pueden implementar y administrar de forma inalámbrica con Mobile Device Manager y Windows Server Update Services 3.0. La directiva de grupo se puede usar para establecer qué dispositivos reciben la aplicación y a qué funciones pueden tener acceso. Tenga en cuenta que esas actualizaciones de la aplicación se pueden realizar sencillamente de la misma manera.

Conclusiones
Cada vez más empresas ofrecen aplicaciones mLOB a empleados y ejecutivos, agregando consideraciones nuevas a los responsables de implementar y mantener los sistemas de TI. La función de Windows Mobile y Mobile Device Manager consiste en participar en el desarrollo de dispositivos móviles preparados para la red y ofrecer una plataforma fácil de administrar para el desarrollo y la implementación de mLOB. Es una plataforma que maximiza la seguridad y la productividad del usuario, minimizando los problemas del departamento de TI y la inversión en infraestructura. Y como Mobile Device Manager le permite escalar las implementaciones de mLOB a un mayor número de usuarios, se reduce el costo del desarrollo e implementación de mLOB por usuario, mientras que el rendimiento de la inversión por usuario aumenta. Así, la comodidad de administrar Windows Mobile con Mobile Device Manager le deja tiempo para pensar creativamente sobre cómo usar las aplicaciones mLOB de forma más eficaz, en lugar de pasar el tiempo pensando en cómo hacer que funcionen.

Matt Fontaine es escritor y consultor, y vive en Seattle, Washington. Abarca un amplio abanico de sectores, como la informática de alto rendimiento, el software de empresa, los actuarios, los bienes inmobiliarios comerciales, la ingeniería, la construcción y los bienes de consumo. Matt es un antiguo y orgulloso alumno de la universidad The Evergreen State College.


Seguridad
Descripción de la administración de contraseñas de cuentas compartidas
Chris Stoneff
De un vistazo:
  • Riesgos en contraseñas de cuentas compartidas y con privilegios
  • Cómo se almacenan las contraseñas
  • Administración y protección de las contraseñas compartidas
  • Cumplimiento

Contenido
Descripción del problema
Cuanto más larga, mejor
Violencia del dominio
Excusas, excusas y más excusas
Lo que quieren los entes reguladores
Un método automatizado
Piénselo
Uno de los problemas más comunes que deben enfrentar los administradores con una frecuencia cada vez mayor es el cambio periódico de la contraseña de cuentas compartidas y con privilegios, por ejemplo las cuentas predefinidas
Administrador o root, una cuenta firecall, o incluso una cuenta de proceso. Por definición, la cuenta predefinida Administrador o root es la cuenta provista en cada versión de Windows®, Linux y Unix, y siempre tiene el mismo identificador de seguridad (SID) o identificador de usuario (UID). Las cuentas firecall son aquellas otras cuentas que se crean para facilitar el acceso de emergencia a un sistema seguro. Algunas veces, los usuarios sin privilegios usan estas cuentas firecall o del administrador para obtener acceso a sistemas clave cuando surgen problemas. Por último, las cuentas de procesos son cuentas que se usan para ejecutar servicios, tareas, aplicaciones COM+ y elementos incrustados, tales como scripts y otros archivos binarios que deben iniciar sesión.
Ahora, quizás implementa los sistemas mediante scripts o imágenes de instalación. Además, probablemente todas las estaciones de trabajo o los servidores tienen el mismo nombre de cuenta de administrador y la misma contraseña de ocho caracteres, y lo más probable es que no se haya cambiado desde que los sistemas se implementaron originalmente. Por este motivo, uso el término en singular "contraseña" en contraposición con "contraseñas".
Tal vez un administrador se vea obligado a cambiar estas contraseñas para seguir recomendaciones o para cumplir disposiciones legales tales como las que exigen Sarbanes-Oxley (SOX), el Payment Card Industry (PCI) o la Ley de transferencia y responsabilidad de seguros de salud (HIPAA). A veces un administrador se siente motivado cuando un antiguo administrador o técnico con conocimiento de estas contraseñas abandona la compañía, por el temor a que se publique alguna infracción de seguridad o se pierda la capacidad de procesar tarjetas de crédito. A pesar de estos factores, en realidad todo se reduce a que el administrador tiene que cambiar esas contraseñas sencillamente por la propia seguridad de la compañía y de los datos que la compañía necesita proteger.

Descripción del problema
Hay una serie de factores que deben entenderse cuando se trabaja con estas cuentas y sus contraseñas.
  1. Las contraseñas, cuanto más antiguas, menos seguras.
  2. Como regla general, las contraseñas más largas son más difíciles de descifrar.
  3. El modo en que se autentican los equipos no cambia simplemente porque pertenezcan a un dominio. En cada dominio reside el centro de un grupo de trabajo.
"Las contraseñas, cuanto más antiguas, menos seguras" es una afirmación engañosa. Lo que en realidad significa es que dada la voluntad de forzar un equipo, todo lo que se necesita es tiempo. Si alguien me pregunta, "¿cuánto tiempo lleva descifrar una contraseña?" Generalmente digo que no hay una respuesta definitiva y, en su lugar, pido que se me ofrezcan algunas pistas que ayuden a determinar la respuesta para un sistema dado:
  • ¿Cuántas personas conocen la contraseña?
  • ¿Todas esas personas todavía trabajan para la compañía?
  • Si algunas de las personas que conocen la contraseña de la cuenta ya no trabajan para la compañía, ¿dejaron el trabajo en buenos términos?
  • ¿Se deniega el acceso para iniciarse desde disquete, unidades de CD, unidades de DVD o desde la red?
  • ¿Los usuarios de los equipos son también administradores locales?
  • ¿Todos los sistemas usan exactamente la misma contraseña para sus cuentas con privilegios?
Comenzando por el principio de esta lista, se puede decir que cuantas más personas conozcan un secreto, mayor probabilidades habrá de que el secreto se vuelva de dominio público. Recuerdo que en algunas compañías donde trabajé los administradores creían que era más práctico establecer un mismo valor para la contraseña compartida y revelar las contraseñas al personal de TI y a los internos que escribir las contraseñas para ellos cuando fuera necesario. Por supuesto, con el transcurso del tiempo, la compañía comenzó a encontrar equipos con diversas configuraciones no autorizadas y usuarios de red habituales que podían iniciar sesión con estas cuentas.
Si todas esas personas que conocen las contraseñas siguen trabajando para la compañía o bien son empleados felices y cumplidos, este riesgo de acceso se atenúa un poco. Pero nunca se sabe cuándo habrá que enfrentarse a un usuario malintencionado. Si alguno de esos usuarios dejó la compañía en malos términos, tendrá un elemento libre y hostil que conoce cómo forzar su red mediante una cuenta imposible de rastrear.
Si no deniega el acceso para iniciar el sistema desde ningún otro dispositivo que no sea el disco duro, también permitirá que los usuarios arranquen el sistema mediante imágenes no autorizadas, tales como Windows PE o diversos sistemas Linux que pueden leer directamente del sistema de archivos del equipo y obtener acceso al almacenamiento protegido del equipo. (Cabe resaltar que muchas de las infracciones no ocurren a causa de factores internos. Incluso si todos los empleados e internos todavía trabajan para la compañía, de ninguna manera esto es una garantía de que las contraseñas y los sistemas sean seguros.)
Conozco muchas personas que han seguido iniciando sesión en la red de un empleador anterior, por la sencilla razón de que podían hacerlo. No es gracioso que simplemente pongan de manifiesto la mala costumbre de no cambiar las contraseñas del sistema, sino que además es aterrador considerar el daño que podrían hacer si tuvieran malas intenciones.
Si habilita la opción de iniciar desde un DVD o la red, entonces no podrá auditar qué personas lo hacen. Es decir, un disco de inicio de Linux o una imagen de red a menudo pueden obtener acceso directo al sistema de archivos. Si los sistemas usan el mismo nombre de usuario y la misma contraseña para las cuentas con privilegios, entonces habrá configurado sus sistemas para una desastre de mayor alcance. No obstante, más adelante se ofrece más información sobre estos elementos.
La vigencia y longitud de la contraseña son relevantes según el método que se use para descodificar una contraseña. Si trabaja con un método de fuerza bruta para determinar las contraseñas, contra lo que en realidad tiene que luchar es contra el tiempo. Cuanto menor sea la frecuencia con la que se cambia una contraseña, más tiempo necesitará el cracker para obtenerla.
Del mismo modo, las contraseñas más largas tienen más variaciones de caracteres de modo exponencial y, por lo tanto, se necesita más tiempo para descifrarlas. Así que es importante considerar si la longitud de las contraseñas es menor de 7 caracteres, de 8 a 14 caracteres o de 15 o más caracteres. Y si la longitud de las contraseñas es menor de 15 caracteres y usa Windows, ¿los hash de LAN Manager (LM) están deshabilitados como parte de la configuración del sistema o por la directiva de grupo?
¿De qué modo afecta la longitud de la contraseña? En el caso de Windows, la respuesta es sencilla. Si omitimos el historial de los procesos hash de Microsoft, Microsoft implementa dos tipos de hash para contraseñas, los hash de LM y los hash de MD4 (Message Digest 4). De forma predeterminada, Microsoft usa los hash de LM y se almacenan los valores de todas las contraseñas de hasta 14 caracteres, a menos que el almacenamiento de los hash se desactive explícitamente. Estas contraseñas se dividen en dos valores de 7 caracteres, el primer valor se destina a los primeros 7 caracteres y el segundo a los últimos 7 caracteres, tal como se muestra en la figura 1.
Figura 1 Tabla hash de ejemplo
Nombre de cuenta: | RID | Hash de LM | Hash de NT | Contraseña | Notas
Administrador | 500 | aad3b435b51404ee: aad3b435b51404ee | 31d6cfe0d16ae931: b73c59d7e0c089c0 | Contraseña en blanco | El hash de LM es idéntico al hash de LM de la contraseña de 20 caracteres.
Administrador | 500 | 0182bd0bd4444bf8: aad3b435b51404ee | 328727b81ca05805: a68ef26acb252039 | Contraseña de 7 caracteres = 1234567 | La primera parte, que representa los primeros 7 caracteres, es idéntica a la contraseña de 8 caracteres.
Administrador | 500 | 0182bd0bd4444bf8: 36077a718ccdf409 | 0182bd0bd4444bf8: 36077a718ccdf409 | Contraseña de 8 caracteres = 12345678 | La primera parte, que representa los primeros 7 caracteres, es idéntica a la contraseña de 8 caracteres, pero el segundo conjunto es diferente.
Administrador | 500 | aad3b435b51404ee: aad3b435b51404ee | b79d07c2ecb3d565: 033ece663f5a0b2e | Contraseña de 20 caracteres = 9876543210 9876543210 | El hash de LM es idéntico a la contraseña en blanco porque no se puede crear un hash de LM con contraseñas superiores a 14 caracteres.
Fred | 1221 | e52cac67419a9a: 224a3b108f3fa6cb6d | 8846f7eaee8fb117: ad06bdd830b7586c | Idénticos | En estos tres ejemplos, ¿ve como los hash de LM y NT son idénticos? Esto significa que todas las contraseñas para todas estas cuentas son idénticas. Microsoft ni siquiera varía el algoritmo de hash.
Lunes | 1385 | e52cac67419a9a: 224a3b108f3fa6cb6d | 8846f7eaee8fb117: ad06bdd830b7586c | Idénticos
SvcAcctX | 1314 | e52cac67419a9a: 224a3b108f3fa6cb6d | 8846f7eaee8fb117: ad06bdd830b7586c | Idénticos
De esta manera, si la longitud de la contraseña fuera de sólo 7 caracteres, estaría contenida en un solo hash de LM. Desde hace años Microsoft recomienda usar por lo menos 8 caracteres en las contraseñas. El motivo para esto era que el octavo carácter exigiría que la contraseña se divida en dos valores hash de LM.
Sin embargo, es importante tener en cuenta que los hash de LM son ampliamente comprendidos y muy fáciles de esquivar. En las soluciones actuales, su único propósito es mantener la compatibilidad con versiones anteriores con sistemas de nivel inferior, tales como Windows NT® 4.0.
En la actualidad, debería usar contraseñas (en realidad, frases de contraseña) de una longitud de 15 caracteres como mínimo o preferentemente más largas porque, por definición, no generarán un hash de LM. Si exigir el uso de contraseñas de 15 caracteres no es una opción viable en el entorno, deberá deshabilitar el almacenamiento de los hash de LM en el proceso de creación de imagen (mediante directiva local) y en la directiva de grupo de Active Directory®.
Esta directiva se puede encontrar en Configuración del equipo\Configuración de Windows\Configuración de seguridad\Directivas locales\Opciones de seguridad. Simplemente establezca la directiva "Seguridad de red: no almacenar valor de hash de LAN Manager en el próximo cambio de contraseña" en HABILITADO.
Es importante recordar que aunque una buena directiva impondrá el uso de letras mayúsculas y minúsculas, así como de caracteres numéricos o especiales, una directiva mejor también impondrá una longitud de 15 caracteres como mínimo.

Cuanto más larga, mejor
Un método actual empleado para forzar los equipos se denomina tablas de cadenas arco iris usa los hash de LM como vulnerabilidad. Pero las contraseñas más largas pueden anular la eficacia de las tablas de cadenas arco iris.
Me sorprende ver cuántos administradores a cargo de la seguridad hay que parecen saber muy poco (o nada) de las tablas de cadenas arco iris. Hay varias maneras de crear tablas de cadenas arco iris para tratar distintos algoritmos. Pero éstos son sólo una lista de todos los hash de LM de 0 a 14 caracteres previamente calculados.
La salvedad de las tablas de cadenas arco iris es que el atacante debe obtener los hash de LM desde el principio. Esto conduce a las preguntas anteriores acerca de cómo se puede arrancar el sistema (mediante CD o DVD) o si los usuarios son administradores locales. Por último, estos hash de LM se pueden extraer en pocos segundos mediante herramientas gratuitas, tales como pwdump. Mediante el uso de tablas de cadenas arco iris, a continuación se busca en los hash para determinar la contraseña.
Para saciar mi propia curiosidad, establecí una contraseña en una cuenta predefinida Administrador del sistema. Tenía 14 caracteres y contenía varias mayúsculas y minúsculas así como caracteres y números especiales. Después, usé tablas de cadenas arco iris que descargué de forma gratuita de Internet y pude extraer los hash de las contraseñas de todas las cuentas de mi sistema y determinar la contraseña del administrador en menos de dos minutos.
He de admitir que es estupendo observar cómo el primer hash de LM es derrotado, seguido por el segundo hash y cómo luego, al juntarlos, se obtiene la contraseña. Insisto en que si hubiera deshabilitado los hash de LM mediante la directiva que mencioné anteriormente, este vector de ataque concreto estaría gravemente limitado o totalmente bloqueado.

Violencia del dominio
Estar dentro de un dominio no soluciona el problema. Los equipos de un dominio se autentican de la misma manera. Y, como apunté antes, en cada dominio reside el centro de un grupo de trabajo. Esta sencilla afirmación no siempre es tan evidente. He tenido muchas conversaciones acerca de este asunto y con frecuencia me veo recordando a los administradores lo que se necesita para tener acceso a un equipo: un nombre de usuario y una contraseña. Y después tengo que sumergirme en un debate sobre cómo funciona Windows en un grupo de trabajo.
Si intenta tener acceso a un sistema, tendrá que proporcionar un nombre de usuario y una contraseña para el sistema remoto. Windows tratará de hacerlo automáticamente mediante un sistema de autenticación integrada. Esto significa que si obtiene acceso a otro sistema de Windows, Windows usará el nombre de usuario y la contraseña con los que se ha iniciado la sesión. De este modo, cuando intente tener acceso a otro sistema de Windows, nunca se le solicitarán el nombre de usuario y la contraseña si el sistema remoto tiene el mismo nombre de usuario y la misma contraseña.
Ese proceso también se conoce como autenticación de paso a través. El proceso funciona tanto en grupos de trabajo como entre dominios. En el peor de los casos, el sistema solicitará un nombre de usuario y una contraseña, lo que significa que simplemente habrá que volver a escribir la información de inicio de sesión.
Ahora, aunque se conecte una estación de trabajo o un servidor a un dominio, y Active Directory pase a ser el repositorio central de cuentas, todos los Administradores de cuentas de seguridad (SAM) locales o almacenes de cuentas locales de esos sistemas no desaparecerán por arte de magia. Lo único que parece suceder en esos SAM locales es que ya no están administrados ni protegidos, he ahí la raíz del problema. ¿Cuándo fue la última vez que cambió la cuenta predefinida Administrador o la cuenta root de sus sistemas? Mejor aún, descargue cualquier utilidad de generación de informes que le muestre la vigencia de contraseña de todas las cuentas y compruebe si los resultados pasarían una auditoría.
Si aún no sabe lo que quiero decir, tome cualquiera de las estaciones de trabajo del dominio e inicie sesión con una cuenta de dominio con privilegios de administrador. Abra en su sistema la Administración de equipos y cree un usuario local denominado SeLoDije. Establezca una contraseña para la cuenta y agréguela al grupo de administradores locales del sistema. Repita este proceso en un segundo sistema del dominio.
Ahora, desde cualquiera de esos sistemas, inicie sesión con la cuenta SeLoDije e intente obtener acceso al segundo equipo; para hacerlo, vaya a \\systemName\c$. ¡Podrá tener acceso al recurso compartido administrativo, y ni siquiera se le solicitó una contraseña! Espero que este ejemplo no sea algo nuevo para usted. Pero si lo es, aprenda de él y permítame insistir: el simple hecho de que un sistema pertenezca a un dominio no significa que todos estos sistemas funcionen igual que si pertenecieran a un grupo de trabajo.
Lo que intento decir es que si se usan contraseñas para cuentas compartidas y con privilegios que rara vez o quizás nunca se cambien, dichas cuentas compartidas y con privilegios estarán expuestas a un peligro. Todo lo que hará falta para poner en peligro la red entera es tiempo.

Excusas, excusas y más excusas
A menudo, cuando hablo con administradores e incluso con directores de tecnologías de información, escucho los mismos motivos por los que no se cambian las contraseñas de estas cuentas:
  • Tenemos miles de sistemas y no disponemos de tiempo suficiente ni mano de obra para cambiar esas cuentas.
  • No tenemos el presupuesto necesario.
  • Hemos deshabilitado completamente nuestras cuentas de administrador.
  • Nuestros sistemas aún no están en peligro, así que no creemos que sea un problema.
  • Los auditores se dieron cuenta.
Aunque me identifico con los dos primeros motivos, éstos no son excusas válidas. Me dan escalofríos de tan solo pensar que puede haber compañías que tengan información mía almacenada y que no aborden este problema por la razón que sea.
Si bien es cierto que no todos los sistemas de red almacenan información confidencial, los usuarios de estos equipos podrían tener acceso a información confidencial, como el número de la seguridad social, historiales médicos o datos financieros. Como administrador del sistema, un usuario puede instalar registradores de pulsaciones de teclas y utilidades de captura de pantalla, detener la aplicación de directivas de grupo, introducir correcciones de compatibilidad (shim) en distintos subsistemas para capturar y transmitir datos, etc. Y cuando el usuario hace esto a nivel del equipo individual, se hace mucho más difícil identificar a ese usuario malintencionado porque se llama Administrador.
¿Sabía que después de deshabilitar la cuenta predefinida Administrador en Windows se puede seguir iniciando sesión con esa cuenta? Pruebe a hacer lo siguiente: reinicie su sistema en modo seguro e inicie sesión con la cuenta predefinida Administrador. Es posible que le permita usar la contraseña emitida para la cuenta desde la imagen original e iniciar sesión correctamente. Para obtener más información sobre este comportamiento, consulte el artículo de Microsoft® Knowledge Base "Cómo obtener acceso al equipo después de deshabilitar la cuenta de administrador" (support.microsoft.com/kb/814777).

Lo que desean los entes reguladores
Trabajar con SOX, PCI, HIPAA y otras disposiciones legales puede llegar a marear la cabeza. Comprender los requisitos puede ser una tarea complicada, ya que son extensos y no están claramente definidos. Generalmente, el objetivo que persiguen todas estas reglamentaciones se puede resumir del modo en que se hace a continuación.
En primer lugar, hay que garantizar en todo momento quién tiene acceso a todas las cuentas con privilegios y a la información, además de facilitar un método que lo pruebe. Esta es una buena práctica en todos los casos, ya que una cuenta con privilegios es una cuenta con derechos para realizar cualquier acción en cualquier sistema. Esta es la cuenta predefinida Administrador. Esta es la cuenta firecall. Estas son cuentas que quizás son conocidas por todo el personal de servicios de soporte técnico y por cada administrador con los que trabaja.
Cuando decide implementar una solución para administrar las contraseñas de cuentas compartidas, se crea una pista de auditoría que hasta ese momento no existía para la cuenta predefinida Administrador. Obtendrá una contraseña que es variable. Y como la solución es automatizada, no se perderán semanas de tiempo de productividad cambiando las contraseñas. Por último, como la solución ofrece capacidades para auditoría, la compañía estará más cerca de pasar la auditoría.

Un método automatizado
La manera más eficaz de trabajar con estas cuentas es modificarlas regularmente para que dos cuentas jamás compartan la misma contraseña. Con las contraseñas compartidas, el acceso no autorizado a un sistema podría significar un acceso no autorizado a otro. Es decir, no debe haber cuentas de dominio ni cuentas locales comunes.
Al trabajar con soluciones automatizadas que pueden administrar y generar estas contraseñas de manera aleatoria evite hacer solamente lo mínimo indispensable que requieren los auditores. Por ejemplo, ¿por qué usar sólo 8 caracteres para las contraseñas cuando puede usar 15, 20 o 127 sin ningún esfuerzo adicional (consulte la figura 2)?
Figura 2 Uso de la automatización para crear contraseñas muy largas (haga clic en la imagen para ampliarla)
Además, considere la posibilidad de generar todos los días contraseñas aleatorias para las cuentas con privilegios, como se muestra en la figura 3. No hay motivos para hacerlo solamente cada 90 días cuando puede hacerlo de manera mensual, bimestral o incluso diaria. Después de todo, si el procedimiento es automatizado, no debería suponer ningún trabajo adicional para el usuario. Además, si se ejecuta con regularidad, obligará a los usuarios a recuperar las contraseñas de la interfaz de recuperación auditada de la herramienta, lo que proporciona otra pista de auditoría que hasta ese momento no existía. (Si actualmente guarda contraseñas escritas dentro de un sobre que conserva en un lugar seguro en algún rincón perdido de una oficina, no tendrá una pista de auditoría para esas contraseñas como la que tendría si usara una solución de administración de contraseñas.)
Figura 3 Generación aleatoria diaria de cuentas con privilegios (haga clic en la imagen para ampliarla)
Por último, asegúrese de que, una vez recuperadas, las contraseñas se puedan volver a generar (y que efectivamente lo hagan) de manera aleatoria después de un tiempo fijo posterior a la recuperación. No me refiero a los trabajos de generación aleatoria programados que se hayan creado, hablo de crear contraseñas de un solo uso, que pierdan validez en cuestión de horas, no de algunos meses. Una vez más, este método obligará a los usuarios a recuperar las contraseñas de la interfaz de recuperación auditada de la herramienta, proporcionando así una pista de auditoria.

Piénselo
Es necesario abordar el problema de la administración de contraseñas de cuentas compartidas. Esto significa que debe establecer un método para cambiar las contraseñas de forma segura y periódica. La solución tiene que ser escalable y flexible. También debe ofrecer acceso protegido a las contraseñas, y necesita auditar cada acción que toma la herramienta así como cada acción que toma cada usuario de la herramienta. Además, las contraseñas generadas deben ser únicas en cada sistema para evitar accesos no autorizados a causa de información de cuentas compartida.
Son muchos los proveedores que llevan años tratando de solucionar este problema, y a estos se les han unido otros recientemente. Asegúrese de investigar bien y probar las herramientas nuevas antes de decidirse por una solución, para así garantizar que el producto por el que opta sea el más adecuado para su entorno.

Chris Stoneff es administrador de producto en Lieberman Software (liebsoft.com), un desarrollador de software de seguridad y administración de sistemas. Su mayor virtud no es sólo saber cómo funciona algo de una cierta manera, sino también saber por qué.


En estas últimas semanas he sido lo suficientemente afortunado como para recibir un curso de actualización sobre lo que sería ser un profesional de TI en activo. A medida que el verano llega a su fin y no podemos evitar pensar en la vuelta al colegio, resulta muy conveniente. Pero debo admitir que ha sido todo un shock.
El equipo de la revista en Microsoft (el grupo responsable de publicar MSDN Magazine y TechNet Magazine) está en proceso de revisión y mejora de nuestro... ejem... proceso. Finalmente, decidimos que, siendo 2008 y todo eso, era necesario abandonar el diseño en papel y las marcas con lápiz de color, y pasar a ser completamente digitales. (Lo sé, lo sé, somos muy innovadores.) Ahora en serio, ha llegado el momento de que hagamos uso de esa eficacia adicional que las grandes compañías nos venden cada día.
Al ajustarnos al nuevo flujo de trabajo digital, rápidamente quedó claro que la herramienta que realizaba el seguimiento del estado de los artículos ralentizaba el proceso. Ya era "digital", pero estaba basada en algún tipo de tecnología anticuada (que esperemos que salga de nuestro mundo para siempre) y se complementaba con pequeños cuadros de color impresos en la parte superior de cada diseño. Alta tecnología, ¿a que sí? Así que empecé a crear un modelo para sustituirlo y supuse que SharePoint sería perfecto.
Permítame que dé un salto hacia adelante y diga que siento un gran respeto recién descubierto por todos los que sean administradores de SharePoint. No se trata de un ataque contra SharePoint, sino todo lo contrario, se trata de un halago a la eficacia y flexibilidad de la plataforma. Lo que ocurre es que crear una solución de flujo de trabajo personalizado en SharePoint es realmente difícil. (Afortunadamente, tenemos nuestra nueva columna Dentro de SharePoint que nos es de gran ayuda.) Embarcarme en este desafío después de tantos años alejado del frente ha supuesto todo un trance para mí, y ya era hora de que volviera al colegio.
Existen numerosos recursos que son de gran ayuda a la hora de profundizar en los aspectos básicos de un tema o enfrentarse a algo nuevo: todo desde la nueva serie de vídeos "Cómo" en TechNet (technet.microsoft.com/cc138021), hasta los screencasts de la revista (.com/video), pasando por TechNet Edge (edge.technet.com) y mucho más. Pero considero que realmente ha llegado el momento de ampliar nuestra cobertura de "aspectos básicos" en TechNet Magazine. Sin ánimo de ser presuntuoso, creo que lo hemos hecho bastante bien hasta ahora al proporcionar el material técnico exhaustivo que conoce tan bien y (con suerte) ha llegado a apreciar. No obstante, no creo que nos perjudique volver a examinar de vez en cuando las cuestiones fundamentales. Por lo tanto, disfrute de lo que queda del verano porque, muy pronto, todos volveremos al colegio. —Joshua Hoffman

Mi agradecimiento a los siguientes expertos de Microsoft: Nathan Bigman, Nino Bilic, Mai-lan Tomsen Bukovec, Eric Charran, Trina Gorman, Gershon Levitz, Thomas Marquardt, Mandy Maxwell, Michael Murgolo, Sanjeev Nair, Michelle Rutzer, Jez Sadler, Jim Truher y Shimon Yannay.


Cartas Comentarios de los lectores

Herramienta Planeación de la capacidad de SharePoint
Mi compañía tiene menos de 600 empleados y una gran cantidad de ellos no usan activamente sus PC ni la intranet. Sin embargo, hay una necesidad común de comunicación y colaboración corporativa. Pienso que Windows® SharePoint® Services (WSS) 3.0 sería perfecto en nuestro entorno laboral, pero el director sólo ha presupuestado un servidor.
He intentado usar la herramienta Planeación de la capacidad de SharePoint, pero no permite simular un modelo de servidor único. ¿Conoce alguna opción de simulación para servidor único?
—Allen M.
No creo que exista una opción para servidor único. Pero es difícil de determinar sin tener en cuenta todos los comportamientos de usuario. Personalmente usaría una CPU de cuatro núcleos y comenzaría con 8 GB de RAM. Básicamente, un servidor mediano debería funcionar bien.
Joel Oleson ha recopilado múltiples referencias de tamaño que se puede ver en su blog en blogs.msdn.com/joelo/archive/2007/07/09/capacity-planning-key-links-and-info.aspx. Pueden ayudarle a tomar la mejor decisión para atender a las necesidades de la compañía.
—Pav Cherny, columnista,
Dentro de SharePoint

Microsoft Bob
Sé que la intención de la columna Confidencial de Windows "La historia ocupa su espacio" (julio de 2008, technet.microsoft.com/magazine/cc565089) era revelar que el programa Microsoft® Bob estaba oculto en el disco de Windows XP, pero se trata de una crítica más a un programa que mis hijos adoraban y usaban para aprender a usar el procesamiento de texto básico informático. Bob venía instalado en nuestro primer equipo doméstico, preparado para NEC y con Windows 95. Durante su infancia, cada uno de mis hijos jugó con Bob, y lo usó, durante horas.
En la columna, Bob fue ridiculizado como un producto de tecnología inadecuada, pero en realidad era un software genial que simplemente se introdujo en el mercado equivocado: . . los adultos. Estaba dirigido a los niños, y si se hubiera presentado así, habría sido considerado con una perspectiva distinta y quizás hubiera tenido incluso un destino diferente. Quién sabe, si se hubiera presentado como un programa para niños desde un principio, quizás todavía existiría para que lo disfrutaran mis nietos.
—Jim S.

La impresión ha muerto
Me resultó muy interesante leer la Nota del editor de julio de 2008, "La impresión ha muerto" (en technet.microsoft.com/magazine/cc595615). En mi opinión, los libros especializados en formato impreso acerca de tecnología de la información pronto estarán muertos y serán sustituidos por medios digitales. Pero según usted, el 90 por ciento de sus lectores encuestados prefiere los medios impresos. ¿Esta encuesta fue representativa? ¿O sólo respondieron a la encuesta aquellas personas a quienes se llega con medios impresos? Este grupo no incluiría la generación más joven, que ya no se suscribe a periódicos ni revistas como la suya, sino que obtiene toda su información en línea y, por tanto, nunca pudo enterarse de la encuesta.
Un lector de texto impreso no puede reproducir un vídeo ni un webcast desde texto flotante. No puede hacer clic con el mouse en un vínculo impreso de Internet para abrir una página principal, un grupo de noticias ni un blog. No puede hacer clic con el mouse para descargar un complemento ni una herramienta mencionada en el texto impreso.
En definitiva: los libros impresos ofrecen pocas ventajas. El lector pronto se da cuenta de que leer un libro impreso sólo ofrece una fracción de las ventajas del DVD y que puede copiar el contenido completo del DVD en su equipo portátil y tener acceso más tarde a este contenido en cualquier momento y en cualquier lugar.
—Ulrich S.
¡Gracias por su nota y sus comentarios! En respuesta a sus preguntas acerca del 90 por ciento de nuestros lectores que dicen que prefieren la versión impresa, la encuesta fue realizada entre nuestros suscriptores de la versión impresa y nuestros lectores a través de Internet (con una combinación aproximadamente igual de ambos) como parte de nuestra investigación editorial anual, presentada en la versión electrónica, no en la impresa. La pregunta fue planteada a los que dijeron que habían leído ambas versiones (impresa y en línea) y el 90 por ciento de ellos dijo que preferían la versión impresa.
Aunque estoy totalmente de acuerdo con usted acerca de las ventajas de la publicación del contenido en línea (medios enriquecidos, alcance global, vínculos seleccionables, etc.), creo que leer un artículo en una página impresa ofrece una experiencia más atractiva. Me siento más cómodo con el contenido y más conectado a él, y muchos otros han compartido con nosotros impresiones similares. Como se ha dicho, el hecho de que cada medio ofrezca sus propias ventajas explica por qué seguimos publicando TechNet Magazine a través de ambos. ¡Gracias otra vez!
—Joshua Hoffman, Jefe de redacción


Cuadro de herramientas Nuevos productos para profesionales de TI
Greg Steen

Supervisar los servidores
Dominio del diseño de infraestructura en SQL Server 2005 Reporting Services
sybex.com
Cuanto más compleja se vuelve nuestra infraestructura, más inundados de información estamos los administradores, y la mayor parte de esa información queda registrada en archivos o bases de datos. Pero para que toda esta información tenga sentido, se necesita un motor analítico y una herramienta para presentar los datos analizados de forma inteligible. Una herramienta muy útil para hacerlo es Microsoft® SQL Server® 2005 Reporting Services. Esta herramienta puede ayudarle a reunir todos estos datos de forma unificada y después presentarlos de manera comprensible. Y puede facilitar información a ubicaciones remotas automáticamente o a petición, proporcionando prácticamente en tiempo real los datos que necesitan los usuarios profesionales para tomar decisiones empresariales acertadas.
La planeación, implementación y administración de una infraestructura eficaz de Reporting Services (y, en general, de cualquier infraestructura nueva de servidores) que tanto atiende las necesidades de su compañía como crece a medida que lo hace su empresa, requerirá preparación, conocimientos y un poco de valor. Si piensa implementar una instancia de Reporting Services, la publicación Mastering SQL Server 2005 Reporting Services Infrastructure Design, de Joseph L. Jorden (Sybex, 2007), puede servirle de ayuda y guiarle por las claves del éxito en la materia.
El manual hace un buen trabajo al tratar temas a menudo olvidados de la implementación de sistemas antes de profundizar en los detalles técnicos de una implementación de Reporting Services. Estos aspectos rudimentarios implican determinar el motivo de la implementación del sistema y los requisitos de ese uso empresarial, y definir cómo administrar las expectativas de los usuarios finales. Hay un capítulo dedicado a estrategias para la administración de cambios en su sistema de generación de informes. Esta sección trata de enfoques diferentes para la administración del cambio y ofrece una plantilla y directrices para formularios de solicitud de administración de cambio. Yo no soy de los que van pregonando las ventajas de la burocracia, pero un poco de estructura aquí garantizará un entorno mucho más estable.
Después de tratar el lado empresarial de Reporting Services, el libro se adentra en la implementación, donde aborda conceptos básicos de instalación, escalado, automatización y configuración. También ofrece sugerencias sobre cómo se integra con Microsoft Windows® SharePoint® Services (WSS). Ofrece un buen punto de partida para crear una lista de comprobación que le ayudará a evitar tropiezos.
Una de las mejores características nuevas de SQL Server 2005 Reporting Services son sus capacidades de generación de informes ad hoc. Esta característica permite a los usuarios crear informes sobre la marcha. El libro explica cómo habilitar esta característica y configurar la herramienta Report Builder. A continuación, el libro pasa a tratar la creación de suscripciones para informes, lo que permite generar y distribuir informes de forma programada a través de correo electrónico, recursos compartidos de archivos o con la entrega integrada de SharePoint.
Con el tiempo, todos los sistemas acaban necesitando mantenimiento. El capítulo siguiente describe tareas esenciales como la realización de copias de seguridad de la instancia, la administración del contenido de informes y la solución de problemas con los registros disponibles. También hay un buen capítulo dedicado a la seguridad, que expone las opciones de autenticación y autorización para la implementación.
Los programadores apreciarán el capítulo dedicado a ampliar Reporting Services, además del capítulo sobre el acceso y la manipulación de informes a través de aplicaciones basadas en Microsoft .NET Framework. El lenguaje de definición de informes (RDL) es uno de los aspectos fundamentales de Reporting Services, y el libro le dedica un capítulo a algunos de los elementos clave disponibles, la estructura de un archivo RDL y los conceptos básicos para crear e implementar esos archivos.
El libro termina con unos cuantos consejos y trucos para afinar el rendimiento de la implementación de Reporting Services. Ahí encontrará información sobre la medición del rendimiento, la introducción de modificaciones en archivos de configuración y el uso de la consola de rendimiento. También hay un apéndice muy útil sobre cómo integrar Reporting Services con SharePoint. Si está interesado en implantar SQL Server 2005 Reporting Services en su entorno, debería echarle un vistazo a este libro. Realmente puede ayudarle a empezar con buen pie.

Precio: 49,99 dólares (venta directa).

Audite su entorno
Alloy Discovery Professional Edition
alloy-software.com
Poder recuperar información rápidamente para un sistema particular en su área de cobertura resulta crítico para realizar su trabajo, resolver problemas y comprobar que los sistemas están actualizados y que cumplen las directivas de seguridad y de software. Y tener esa información en un formato fácil de entender para el profesional, y que permita realizar evaluaciones rápidas de la infraestructura, puede ser una gran ventaja (por no mencionar que puede hacer que su reputación aumente ante la dirección). Por si eso fuera poco, este acceso rápido a la información también puede ayudarle a aislar quién usa qué software para garantizar que todos los usuarios dispongan de la licencia apropiada. Una de estas herramientas de inventario y auditoría a tener en cuenta es Alloy Discovery Professional Edition de Alloy Software.
Esta aplicación es muy fácil de configurar y permite iniciar la auditoría en un grupo o una serie de equipos de la LAN muy rápidamente. La IU agrupa las máquinas en una vista organizada de forma parecida a como lo hace Internet Explorer® y, una vez que se tiene configurado un grupo o grupos de equipos auditables, realizar una auditoría en un grupo es tan fácil como hacer clic. La información recopilada es bastante extensa e incluye hardware, software, dispositivos, impresoras, recursos compartidos e incluso eventos. También se pueden ver etiquetas de inventario, números de serie, estadísticas de tiempo de actividad, variables de entorno, configuración de red y cuentas de usuario locales. Básicamente todo lo que necesita saber sobre el entorno lo puede reunir sin dejar de abandonar el escritorio (aunque, por su propia salud, le recomiendo dar un paseo de vez en cuando).
Además de auditar equipos a petición, también se pueden programar auditorías. Para equipos que están fuera de la LAN directa y para aquellos con los que no se puede conectar remotamente con suficientes privilegios como para realizar tareas de auditoría, Alloy Discovery ofrece un método basado en agentes para auditar equipos de destino. Este tipo de auditoría se puede crear mediante una secuencia de comandos y programar su ejecución de forma periódica o ejecutarse a través del agente, y después que el agente mande el resultado por correo electrónico al repositorio principal de Alloy Discovery. Otra opción es poner el agente en una unidad flash e iniciar la auditoría desde los propios equipos. Después de la auditoría, se puede sincronizar la información de modo automático o manual, dependiendo del método usado con el repositorio principal.
Alloy Discovery también tiene filtros que se pueden aplicar a los resultados de la auditoría para analizar el inventario general. Por ejemplo, puede ver cuántos equipos necesitarían actualizar la memoria para ser compatibles con una aplicación o qué equipos del entorno ejecutan Windows® XP Professional frente a Windows Vista® Business Edition.
Cuando tenga los datos, querrá crear informes. La aplicación puede publicar informes en páginas HTML, que pueden usarse para ver detalles. También es posible establecer tareas programadas para generar estos informes de forma constante, una excelente opción del centro de operaciones de red. Además, se puede exportar toda la información de auditoría a XML, CSV o a Microsoft Excel® para, por ejemplo, ofrecerla como prueba a los auditores.

Precio: 795 dólares (venta directa) por el producto base, más 3 dólares por cada nodo. ﻿
Mantenga su entorno bajo control con Alloy Discovery (haga clic en la imagen para ampliarla)

Administre sus contraseñas
Password Corral
cygnusproductions.com
Las contraseñas son inevitables en el mundo interconectado de hoy en día. (Por lo menos hasta que todo esté basado en la biometría o hasta que creemos algún tipo de utopía de confianza plena, pero ninguna de esas situaciones parece que vaya a suceder en un futuro próximo.) Si usted es como yo, probablemente tendrá tipos diferentes de contraseñas para tipos diferentes de entornos, y varía esas contraseñas en medios distintos.
Más allá de los usos principales normales, también tenemos todas esas contraseñas de sistema para cuentas de administrador, para las cuentas de servicio y para varias cuentas de dominio. Y, cómo no, cada una de esas contraseñas tiene asociado un nombre de usuario distinto. La lista no acaba ahí. Así que ¿cuál es la mejor manera de conservar todas esas contraseñas de forma segura y sencilla?
Una opción es usar un repositorio de contraseñas que bloquee todos los datos en un archivo de cifrado de alta seguridad. Una buena solución para ello es Password Corral. Esta aplicación fácil de usar y de cifrado de alta seguridad, que usa el cifrado Diamond2 o Blowfish en todas las contraseñas de un archivo, lleva en el mercado desde 2001. Se ha probado y mejorado desde entonces y sigue bajo soporte y desarrollo activos para las versiones actual y futuras.
Una vez instalado el programa, se genera el nuevo archivo de contraseñas al crear un usuario nuevo y seleccionar en qué parte del sistema (o de la unidad de disco de red) se desea ubicar el archivo de contraseñas. Resulta evidente que si conserva la información sobre contraseñas de todas sus cuentas en un solo archivo de Password Corral, éste debe ser increíblemente fuerte y cambiarlo a menudo. Esta será la contraseña que realmente necesitará recordar y proteger, así que hágalo bien.
Cuando se haya autenticado, Password Corral ofrece una interfaz de usuario muy parecida a la de Internet Explorer, con una estructura de carpetas jerárquica a la izquierda y un panel de detalles a la derecha. Puede organizar sus contraseñas en una estructura de árbol parecida a la de carpetas. Cada contraseña puede tener una descripción, nombre de usuario, contraseña, dirección URL de referencia, dirección de correo electrónico de referencia y comentarios acerca de la cuenta. Además, puede indicar a la aplicación cuál es la directiva de contraseñas para cada cuenta, especificando el número de días en el ciclo de expiración y el número de días que quedan hasta que expire una contraseña determinada.
Una de las opciones de vista incluye el filtrado por contraseñas expiradas, así sabrá cuáles de sus cuentas requerirán restablecimiento cuando vuelvan a usarse. Otra característica interesante es que se puede hacer que el programa genere una contraseña para usted, evitándole tener que inventar sus propias contraseñas seguras para cada cuenta. Ese generador de contraseñas también es personalizable y permite establecer la longitud, complejidad y composición de caracteres que desee.
Otra característica ventajosa es que una vez que se han especificado todas las contraseñas se pueden buscar fácilmente por cualquiera de los campos en los que se han especificado datos, lo cual resulta perfecto para encontrar esas cuentas que se han usado pocas veces en una estructura de carpetas profunda. También se puede establecer un tiempo de espera en la aplicación para que, si se olvida de cerrar Password Corral, ésta se bloquee automáticamente, protegiendo la información confidencial. De forma predeterminada, la aplicación también limpia automáticamente el Portapapeles al salir en caso de que haya dejado la contraseña copiada en el búfer después de usarla.
Si necesita obtener acceso permanente a sus contraseñas, puede usar la opción de icono de bandeja de sistema de la aplicación, que le permite iniciar la aplicación desde allí con tan sólo hacer doble clic. Si se desea usar Password Corral y almacenar las cuentas en otra parte, la aplicación también le permite importarlas de un archivo, lo que le ahorra tener que volver a escribir todos los datos. Y si lo prefiere, incluso puede exportar e imprimir sus contraseñas, pero ¡asegúrese de romper el papel cuando haya terminado! En definitiva, se trata de una herramienta gratuita muy útil.

Precio: Producto gratuito.
Conserve todas las contraseñas con Password Corral (haga clic en la imagen para ampliarla)

Auditar el uso de los archivos
File System Auditor
scriptlogic.com
Mantener una pista de auditoría sobre sistemas de archivos compartidos le puede ahorrar muchos dolores de cabeza. Y lo más importante es que se trata de una necesidad para cumplir ciertos estándares de directiva de retención de información. Para ayudarlo a averiguar quién hizo qué y cuándo, le recomiendo que eche un vistazo a File System Auditor de ScriptLogic. Esta aplicación es un sistema centralizado de administración que audita el uso de archivos en sistemas de destino prácticamente en tiempo real y almacena la información en una base de datos de SQL Server para generar informes de uso.
File System Auditor es compatible con Microsoft SQL Server Desktop Engine (MSDE), SQL Server 2000 y con todas las versiones de SQL Server 2005 (incluyendo la versión gratuita SQL Server 2005 Express). Todos los sistemas supervisados requerirán la instalación de un agente, que se usa para supervisar el uso de los archivos y para informar de ello a SQL Server. Después de la instalación, se usará el asistente de la base de datos para crear el repositorio de la base de datos donde se registrará toda la información de auditoría.
Como administrador de sistemas, ahora probablemente pensará que el ancho de banda y el volumen de información generada en un sistema de gran uso serán inmensos, pero para ello la aplicación usa un sistema de auditoría inteligente que combina acciones distintas en una misma entrada de auditoría. En lo que respecta al ancho de banda, File System Auditor sólo usa 100 bytes de datos para el primer acceso a un archivo y entre 10 y 20 bytes para cada acceso posterior.
Seguramente se preguntará por qué no usar el sistema de auditoría nativo de Windows para hacer esto, pero la administración centralizada, la sincronización de eventos y las funciones de generación de informes de una aplicación de supervisión dedicada son un poco más flexibles y usables. Además, tener toda esa información en una base de datos SQL facilita mucho hacer referencias desde otros sistemas.
Tras configurar la base de datos, instale los agentes en los servidores de destino a través de la consola de configuración del agente. Se puede escribir el nombre de un servidor o examinar hasta encontrarlo con Active Directory®. File System Auditor también es compatible con servidores de archivos en clúster, así que puede escribirse el nombre de la instancia de clúster. A continuación se instala el servicio de agente (con tan sólo hacer clic en un botón si la cuenta tiene acceso remoto) y se elige qué cuenta de Windows o de SQL Server debe usar el agente para conectar a la base de datos de File System Auditor.
Para cada servidor individual se pueden establecer tres tipos diferentes de exclusiones de supervisión: filtros de ruta de acceso, filtros de exclusión de procesos y filtros de exclusión de usuarios. Los filtros de ruta de acceso permiten elegir una ruta de acceso y incluir o excluir ciertas carpetas o eventos de archivo (como los cambios de permisos, creación o supresión) para todos los archivos o para archivos de ciertos tipos. Las exclusiones de procesos y de usuarios permiten hacer lo mismo para eventos de archivo y de carpeta que pertenezcan a un proceso determinado del servidor de destino, pero no admiten los filtros de tipo de archivo.
Después de configurar y empezar a recopilar eventos de auditoría, se inicia la consola de configuración de informes para aplicar esos datos de auditoría. Para configurar un informe, se pueden establecer varios filtros en los datos, incluidos usuarios, ciertos eventos de archivos o carpetas, rutas de acceso, servidores, procesos e intervalos de fechas. También se pueden programar los informes y que la aplicación envíe por correo electrónico el informe publicado a través del servidor SMTP. Por último, para ver lo que sucede en los archivos de un sistema en tiempo real, puede iniciar el visor en tiempo real de File System Auditor para ver cómo los eventos sin procesar se van añadiendo al archivo de registro.

Precio: A partir de 800 dólares (venta directa) por el programa y una licencia de servidor.
Auditoría del uso de los archivos con File System Auditor (haga clic en la imagen para ampliarla)

Greg Steen es un entusiasta empresario dedicado a las tecnologías. Siempre está buscando nuevas herramientas para ayudar a simplificar las operaciones, el control de calidad y el desarrollo para los profesionales de TI.


Utility Spotlight Diagnóstico de la memoria de Windows
Lance Whitney

Descarga de código disponible en: Utility2008_09.exe (640 KB)

Contenido
Obtención de un diagnóstico de la memoria de Windows
Comprobación de la memoria
Uno de los PC con los que trabaja no funciona correctamente, se bloquea o la pantalla se pone azul. ¿Falla alguna pieza de hardware? ¿Puede que alguna aplicación instalada recientemente esté causando problemas? ¿O quizás es un problema de memoria? Una manera de averiguar con toda seguridad lo que ocurre es usando la utilidad gratuita de diagnóstico de memoria de Microsoft® Windows®. Esta herramienta ejecutará distintas pruebas en la RAM de su PC para determinar si existen problemas en alguno de los módulos.

Obtención de un diagnóstico de la memoria de Windows
Para usar el diagnóstico de memoria de Windows, sólo debe descargar el archivo de programa mtinst.exe de oca.microsoft.com/en/windiag.asp y ejecutarlo. Tenga en cuenta que no es necesario instalar la utilidad de diagnóstico de memoria de Windows. La herramienta presenta dos opciones, tal como se muestra en la captura de pantalla:
Figura 1 Opciones del diagnóstico de memoria de Windows para crear medios de arranque (haga clic en la imagen para ampliarla)
  • Crear un disco de inicio, a partir del cual puede crear un disquete de inicio con el programa.
  • Guardar la imagen de CD en disco, a partir de la cual puede guardar una imagen ISO del programa en su disco duro. A continuación podrá grabar dicha imagen en un CD y convertirla en una imagen de arranque mediante el software de creación de CD. Una vez creado el medio de arranque, vuelva a iniciar el PC e inicie el diagnóstico desde el disquete o el CD.
Comprobación de la memoria
En cuanto el programa se carga, inmediatamente éste empieza a analizar la RAM. La herramienta de diagnóstico de memoria de Windows se inicia en modo Estándar, que incluye seis pruebas distintas y sucesivas de memoria, cada una de las cuales usa un algoritmo único para analizar los diferentes tipos de errores. En una pantalla se muestra cada prueba individual a medida que se va ejecutando, con el progreso y el intervalo de direcciones de memoria que se están analizando. Una vez completadas estas seis pruebas, la herramienta vuelve a ejecutar las mismas pruebas y continuará haciéndolo una y otra vez hasta que el usuario cierre el software. De todas formas, normalmente, con que las pruebas se ejecuten una sola vez es suficiente para determinar si la memoria presenta problemas o no.
Si desean realizar pruebas más exhaustivas, puede cambiar al modo Ampliado, que ejecuta 11 pruebas de memoria distintas. También existe un modo Básico que sólo ejecuta dos pruebas, pero si desea ser más minucioso, se recomienda usar los modos Estándar o Ampliado. Si ejecuta la serie de pruebas ampliadas, le aconsejamos que deje la utilidad de diagnóstico de memoria de Windows ejecutándose por la noche.
Una vez completada cada prueba, la herramienta muestra un mensaje que indica que se ha realizado correctamente o que ha fallado. Los mensajes en los que se indica que ha fallado contienen detalles acerca del error y suelen indicar un error con uno de los módulos de la memoria RAM. Dependiendo del entorno de su PC, es posible que el diagnóstico restrinja un problema de memoria a un módulo específico.
En tal caso, en el menú, aparecerá una opción para ver los errores por módulo de memoria. Esta opción le puede ayudar a determinar los módulos específicos que contienen errores y que deben reemplazarse.
En la pantalla de opciones avanzadas, puede cambiar entre el modo Básico, Estándar y Ampliado. Aquí también puede desactivar la memoria caché del procesador durante el análisis, lo que fuerza a la herramienta a obtener acceso a los datos directamente desde la RAM, con lo que se garantiza una prueba más exhaustiva. El comando System Information indica la capacidad y el tipo de RAM instalada en cada ranura.
La herramienta de diagnóstico de memoria de Windows admite plataformas basadas en x86, incluidos los procesadores Intel Pentium y Celeron, así como las CPU AMD K6, Athlon y Duron. Sin embargo, la herramienta sólo puede analizar un máximo de 4 GB de RAM.
También puede encontrar una versión de esta herramienta de diagnóstico instalada en Windows Vista® en Herramientas administrativas y en los medios de instalación de Windows Vista en la opción de reparación. Pero la versión Windows Vista no ofrece tanta información visual ni tantas opciones. Por este motivo se recomienda que conserve la edición independiente a mano para la próxima vez que uno de sus PC empiece a experimentar problemas.
Lance Whitney es escritor técnico, profesor y consultor de TI. Ha pasado cientos y cientos de horas trabajando con estaciones de trabajo y servidores de Windows. Periodista en sus inicios, dio un giro hacia el mundo de TI hace unos 15 años.


Dentro de SharePoint Integración de directorios de SharePoint
Pav Cherny

Descarga de código disponible en: SharePoint2008_09.exe (2.775 KB)

Contenido
Servicio de administración de directorios de SharePoint
Servicio de administración de directorios personalizado
SharePoint e ILM
Conclusión
Microsoft Windows SharePoint Services (WSS) 3.0 y Microsoft Office SharePoint Server (MOSS) 2007 incluyen capacidades de sincronización de directorios a través de un servicio de administración de directorios capaz de proporcionar objetos de grupo y contactos habilitados para correo para recursos de SharePoint en Active Directory. El aprovisionamiento de estos tipos de
objetos de destinatario para recursos de SharePoint® permite a los usuarios seleccionar bibliotecas, listas y grupos de SharePoint directamente de la libreta de direcciones de Microsoft® Outlook® al enviar documentos o información de otro tipo.
Los objetos de destinatario de SharePoint también ofrecen una manera de controlar la transferencia de mensajes y la conversión de formatos en una organización con Exchange Server. Entre otras funciones, puede evitar que remitentes no autenticados, como remitentes de correo no deseado, envíen mensajes a bibliotecas de SharePoint mediante el establecimiento de restricciones de entrega de mensajes en Active Directory®.
Las capacidades de administración de directorios de SharePoint son limitadas, si bien en el momento de redactar este artículo se entiende que Exchange Server 2003 es el sistema de mensajería subyacente. Por el momento, si usa Exchange Server 2007 o un sistema de mensajería de terceros, necesitará ampliar o reemplazar las características integradas de administración de directorios con una solución personalizada para lograr el nivel deseado de interoperabilidad.
En este artículo revisaremos brevemente las características de administración de directorios de SharePoint y, a continuación, describiremos un método para superar las limitaciones existentes. Nuestra premisa es que el servicio de administración de directorios integrado cumple sólo los requisitos de usuario más básicos. Los entornos con diversos sistemas de mensajería y plataformas de directorios necesitan una mayor flexibilidad y funcionalidad. Al reemplazar el componente integrado con una solución personalizada, podrá sincronizar información de destinatarios de SharePoint con cualquier solución de directorio que ofrezca capacidades de API o importación.
Para demostrar este punto, enseñaremos cómo sincronizar la información de destinatarios de SharePoint de un modo compatible con Exchange Server 2007. También es posible usar una solución personalizada para sincronizar la información de destinatarios con IBM Lotus Notes u otros sistemas.
Obtiene, además, la capacidad de centralizar los procesos de aprovisionamiento de directorios a partir de un servicio de metadirectorio, como Identity Information Server, que se incluye en Microsoft Identity Lifecycle Manager (ILM) 2007 Feature Pack 1 (FP1). En especial, demostraremos cómo integrar SharePoint con ILM 2007 para coordinar el aprovisionamiento de objetos de directorio para bibliotecas de documentos de SharePoint. En el material complementario de este artículo, disponible en la sección Descargas de código de .com, encontrará las herramientas, el código fuente, así como instrucciones detalladas para crear esta solución.

Servicio de administración de directorios de SharePoint
A diferencia de Exchange Server, que usa Active Directory para casi toda la información de configuración y destinatarios, SharePoint se basa en bases de datos de configuración y contenido. SharePoint debe por tanto propagar la información de destinatarios correspondiente a las bibliotecas, listas y grupos habilitados para correo de sus bases de datos a un directorio. Después de todo, los clientes de mensajería esperan encontrar información de destinatarios en una libreta de direcciones, que se genera por lo general a partir de objetos de directorio.
SharePoint incluye de fábrica un servicio de administración de directorios para este fin que forma parte del servicio web de integración de correo electrónico (SharepointEmailWS.asmx) que podrá configurar en Administración central de SharePoint 3.0, en la página Operaciones, en Configuración del correo electrónico entrante. En la figura 1 se ilustra el funcionamiento del servicio de administración de directorios integrado.
Figura 1 Arquitectura del servicio de administración de directorios de SharePoint (haga clic en la imagen para ampliarla)
Cuando habilita una granja de servidores web para la administración de directorios y, a continuación, asigna una dirección de correo electrónico a una biblioteca, lista o grupo para que reciban mensajes, como cuando usa EmailSettings.aspx, está llamando implícitamente al servicio web de integración de correo electrónico para que proporcione los objetos de destinatario correspondientes en Active Directory. Primero, SharePoint almacena la información de dirección de correo electrónico en la base de datos de contenido. A continuación, SharePoint envía la solicitud de aprovisionamiento en su nombre al servicio web de integración de correo electrónico usando para ello la identidad de la cuenta del grupo de aplicaciones web. Si la solicitud de aprovisionamiento falla, obtendrá la información de las direcciones de correo electrónico en la base de datos de contenido pero sin los objetos de destinatario correspondientes en Active Directory.
Recursos adicionales
  • Sitio web de productos y tecnologías de SharePoint
  • Centro tecnológico de Windows SharePoint Services
  • Centro de desarrollo de Windows SharePoint Services
  • Blog del equipo de productos y tecnologías de Microsoft SharePoint
Las solicitudes de aprovisionamiento pueden fallar por diversos motivos. El motivo más común es perder los permisos de acceso a la metabase IIS. Puesto que SharepointEmailWS.asmx está diseñado para ser un servicio web para cuentas de grupos de aplicaciones, consulta la metabase IIS para comprobar si el autor de la llamada es una cuenta de grupo de aplicaciones y deniega el acceso en caso contrario, independientemente de los niveles de permiso para el sitio de SharePoint y Active Directory de que disponga.
Sin embargo, SharepointEmailWS.asmx realiza esta comprobación de acceso con la identidad del autor de la llamada, por lo que la cuenta del grupo de aplicaciones autor de la llamada necesita tener acceso a la metabase para comprobar sus propios permisos de acceso. Esto le obliga a conceder a las cuentas de grupos de aplicaciones permisos elevados para poder realizar correctamente la operación.
Es evidente que la concesión de permisos elevados en un servidor web puede ser origen de problemas de seguridad. Hay mejores maneras de controlar el acceso a un servicio web ASP.NET. Además, SharePoint espera encontrar el servicio de administración de directorios en el sitio de Administración central; sin embargo, este sitio no está permanentemente disponible en una granja de servidores web bloqueada para reducir la superficie de ataque. Así pues, si desea usar el servicio de administración de directorios integrado en su entorno de producción de SharePoint, deberá aceptar la presencia de una configuración de seguridad debilitada.
Otras limitaciones existentes se deben al hecho de que el servicio de administración de directorios integrado se basa en una arquitectura cliente-servidor fuertemente emparejada. Microsoft.SharePoint.dll usa directamente System.DirectoryServices.dll, por lo que no es posible implementar una lógica propia para personalizar el proceso de aprovisionamiento. La implementación del servicio de administración de directorios integrado, por ejemplo, no escribe todos los atributos de destinatario de forma compatible con Exchange Server 2007 y, además, no se pueden personalizar las reglas de generación de atributos.
La imposibilidad de implementar una lógica propia también implica que no es posible personalizar el proceso de aprovisionamiento para implementar, por ejemplo, aprobaciones personalizadas. SharePoint es compatible con los procesos de aprobación para grupos; sin embargo, esta característica se basa en el sitio de Administración central. Aunque sólo los administradores de granjas de servidores de SharePoint pueden aprobar solicitudes pendientes, éstos no se encargan necesariamente de aprobar los procesos de aprovisionamiento de Active Directory.
Y lo que quizás sea más importante, no existen procesos de aprobación para bibliotecas de documentos y listas habilitadas para correo. Al habilitar la administración de directorios, concede a todos los administradores del sitio de la granja de servidores web el derecho de crear contactos y grupos habilitados para correo en Active Directory. Tampoco se puede estructurar la administración de destinatarios a partir de unidades organizativas, ya que todos los objetos de destinatario de cada granja de servidores web se colocan en una misma unidad organizativa.
No podrá mover los objetos de destinatario a otra unidad organizativa porque el servicio de administración de directorios espera encontrar los objetos de destinatario en la unidad organizativa de SharePoint, por lo que deberá conceder en Active Directory permisos administrativos a la cuenta del grupo de aplicaciones de Administración central. Tampoco hay manera de implementar la sincronización bidireccional entre SharePoint y Active Directory. Al cambiar los atributos de objetos en Active Directory, no se propagan los cambios de nuevo en el entorno de SharePoint.

Servicio de administración de directorios personalizado
Ahora que hemos determinado que el servicio de administración de directorios integrado ofrece espacio para aumentar la flexibilidad, hablemos de las diferentes alternativas. La buena noticia es que SharePoint permite implementar un servicio propio de administración de directorios. Lo único que hay que hacer es registrar el servicio web como servicio de administración de directorios remoto en Administración central de SharePoint 3.0, en la página Operaciones, en Configuración del correo electrónico entrante.
Para obtener instrucciones detalladas sobre cómo implementar y registrar un servicio web personalizado, consulte la hoja de cálculo "Directory Integration Based on a Custom Directory Management Service.xps" (Integración de directorios a partir de un servicio de administración de directorios personalizado) del material complementario. Asimismo, este servicio web personalizado muestra cómo proporcionar objetos de destinatario compatibles con Exchange Server 2007 en Active Directory sin cmdlet ni herramientas de administración de Exchange. El correspondiente código fuente se encuentra en la carpeta EmailIntegrationService. En la figura 2 se muestra la arquitectura de esta solución.
Figura 2 Arquitectura del servicio de administración de directorios personalizado (haga clic en la imagen para ampliarla)
La interfaz del servicio web personalizado debe respetar la interfaz del servicio de administración de directorios, tal como se documenta en el SDK de SharePoint. Si busca "SharepointEmailWS" en el sitio web de MSDN® (msdn.microsoft.com), encontrará toda la información necesaria. Compruebe asimismo el archivo Service.cs de la carpeta EmailIntegrationService\App_Code del material complementario. Este archivo implementa la interfaz necesaria del servicio web, mientras que el código real de aprovisionamiento de objetos de Active Directory reside en SPRecipient.cs. La función UpdateRecipientAttributes de SPRecipient.cs, por ejemplo, genera los atributos necesarios de Exchange Server 2007. SPRecipient.cs es el archivo de código que debe reemplazar si desea desarrollar un servicio propio de administración de directorios personalizado.
Un servicio de administración de directorios personalizado es una herramienta útil para solventar los requisitos de permisos elevados e integrar SharePoint con sistemas de directorios o mensajería de terceros. No es necesario comprobar la metabase IIS para limitar el acceso al servicio web a cuentas de grupos de aplicaciones. En su lugar, puede agregar una sección <authorization> al archivo web.config del servicio web (vea el material complementario para obtener un ejemplo).
Sin embargo, quedan pendientes varios problemas, ya que no es posible controlar si SharePoint llama al servicio de administración de directorios y cuándo lo hace. Entre otros casos, SharePoint no llama al Servicio de administración de directorios cuando elimina una lista o biblioteca de documentos habilitada para correo, por lo que permanece un objeto no válido de destinatario en Active Directory. Tanto si usa el servicio de administración de directorios integrado como una solución personalizada, no puede garantizar que la información de destinatario en Active Directory sea coherente con los recursos de SharePoint.

SharePoint e ILM
Para lograr una integración de directorios confiable, considere la posibilidad de implementar un paquete de administración de directorios profesional, como ILM. Este sistema se basa en un modelo de sincronización de directorios de extracción. Los agentes de administración extraen la información de sus orígenes conectados, la importan en un metadirectorio común y exportan la información del metadirectorio a sus sistemas conectados. Los sistemas de origen no insertan por lo general su información en el metadirectorio. Al extraer la información, puede garantizar la coherencia con cada ciclo de sincronización.
Otra ventaja es que ILM incluye de fábrica varios agentes de administración para la compatibilidad con Active Directory, Lotus Notes y otros sistemas diversos. Lo único que necesita hacer es implementar un agente de administración personalizado para SharePoint con el objetivo de sincronizar la información de SharePoint con otra plataforma de directorios compatible en el entorno.
Debe implementar la lógica para recuperar la información deseada de SharePoint, guardar la información en un archivo de importación y transferir la información importada al metadirectorio. Sin embargo, no necesita implementar la lógica para exportar esa información del metadirectorio a Active Directory ni a otra plataforma de directorio. En la figura 3 se muestra cómo implementar la sincronización de SharePoint a Active Directory mediante ILM. También es posible ejecutar la sincronización en el sentido contrario para proporcionar recursos de SharePoint a objetos de directorio, aunque esta función pueda considerarse innecesaria u opcional.
Figura 3 Integración de directorios basada en Identity Lifecycle Manager (haga clic en la imagen para ampliarla)
Un punto de partida interesante para desarrollar un agente de administración de SharePoint es el artículo de Alex Tcherniakhovski "Conexión de ILM 2007 con listas de servicios de SharePoint" que encontrará en blogs.msdn.com/alextch/archive/2007/09/02/wsslistsandilm.aspx. Alex muestra cómo crear una solución de administración de directorios a partir de ILM que se basa en las solicitudes de aprovisionamiento de InfoPath® enviadas a una biblioteca de documentos. El agente de administración de Alex recupera todas las solicitudes aprobadas de la biblioteca de documentos y crea los objetos de metadirectorio correspondientes, que pueden exportarse a continuación a los directorios conectados.
No obstante, de forma predeterminada, SharePoint no genera solicitudes de aprovisionamiento basadas en InfoPath cuando se habilita para correo una lista o un grupo. Para llevar esto a cabo, puede usar un servicio de administración de directorios personalizado, aunque al hacerlo deberá hacer frente a los problemas de coherencia mencionados anteriormente, ya que SharePoint no llama al servicio de administración de directorios en cualquier circunstancia. Por este motivo, se recomienda que el agente de administración recupere la información de destinatario deseada de SharePoint directamente de las listas y grupos de su colección de sitios. Si necesita procesos de aprobación, puede generar solicitudes de aprovisionamiento basadas en InfoPath para recursos nuevos en el agente de administración y procesar posteriormente todas las solicitudes aprobadas.
Dispone de varias opciones para recuperar información de SharePoint. Puede leer la información directamente de las bases de datos de contenido, usar el modelo de objetos de SharePoint o hacer uso de los servicios web de SharePoint.
No se recomienda obtener acceso directo a las bases de datos de contenido, ya que las estructuras de bases de datos podrían cambiar en versiones futuras, con lo que dejaría de funcionar su solución de administración de directorios.
También puede resultar engañoso usar el modelo de objetos de SharePoint directamente en el agente de administración, puesto que el modelo de objetos requiere que ejecute el código de forma local, mientras que si instala ILM en un servidor web en cada granja de servidores de SharePoint de su entorno, puede complicar la infraestructura de administración de directorios.
Puede que se haya planteado usar los servicios web de SharePoint, pero eso crea otra dificultad porque no se puede acceder fácilmente a la información deseada a través de los servicios web de SharePoint, como, por ejemplo, la información de dirección de correo electrónico de grupos de SharePoint o la dirección de servidor de correo electrónico entrante para mostrar.
A la postre, parece que lo mejor es implementar un servicio web personalizado de SharePoint que use el modelo de objetos de SharePoint para recuperar la información deseada y devolverla al autor de la llamada en forma de documento XML. Ahora es posible centralizar la implementación de ILM e integrar cualquier número de granjas de servidores y colecciones de sitios a través de instancias individuales del servicio web personalizado de SharePoint, como se muestra en la figura 3.
Hay un último aspecto que vale la pena mencionar, y es el hecho de que la integración de directorios basada en ILM no evita tener que contar con un servicio de administración de directorios personalizado. Si bien este servicio personalizado no necesita realizar ninguna tarea porque ILM proporciona los objetos de directorio, debe proporcionar un servicio personalizado para poder habilitar la administración de directorios en Administración central de SharePoint 3.0. De lo contrario, no podrá asignar direcciones de correo electrónico a grupos, por poner sólo un ejemplo. En la figura 4 se muestra la arquitectura de la solución resultante.
Figura 4 Integración de directorios de SharePoint basada en servicios web (haga clic en la imagen para ampliarla)
Es posible convertir el servicio de administración de directorios personalizado incluido en el material complementario en un servicio ficticio mediante la configuración del parámetro OpMode en el archivo web.config (<add key="OpMode" value="dummy"/>). Con esta configuración, el servicio personalizado siempre devuelve SUCCESS como respuesta a las llamadas de aprovisionamiento sin realizar tarea alguna.
Asimismo, el servicio personalizado expone un método ResolveUsers que podrá llamar el agente de administración de SharePoint para resolver los nombres de cuenta de usuario basados en NetBIOS en nombres distintivos, paso necesario para el aprovisionamiento de grupos. SharePoint devuelve la información de pertenencia a grupos en forma de lista de nombres de cuenta de usuario basados en NetBIOS; sin embargo, Active Directory espera nombres distintivos. Y eso es todo. Para obtener información sobre cómo implementar la solución resultante, consulte "Configuring Directory Integration based on ILM 2007.xps" (Configuración de la integración de directorios basada en ILM 2007) en el material complementario.
WSS 3.0 y MOSS 2007 incluyen un servicio de administración de directorios con el objetivo de integrar SharePoint con Exchange Server 2003 para la colaboración para múltiples plataformas basada en mensajería.
No obstante, hay algunas limitaciones. Los usuarios deben reemplazar el servicio de administración de directorios integrado con una solución personalizada. También es posible usar una solución de administración de directorios profesional como ILM para integrar SharePoint en una infraestructura de administración de directorios. Esto ofrece un nivel máximo de flexibilidad y ayuda a garantizar la coherencia de la información a través de un modelo de sincronización de extracción.

Pav Cherny es experto en TI y autor especializado en tecnologías de Microsoft para la colaboración y las comunicaciones unificadas. Sus publicaciones incluyen notas del producto, manuales de productos y libros centrados en operaciones de TI y administración de sistemas. Pav es presidente de Biblioso Corporation, una empresa especializada en servicios de documentación y localización administrados.


Windows PowerShell Teoría de cadenas
Don Jones

Contenido
Un caso real
Coincidencias complejas
El mundo está lleno de cadenas
Cuando hablo en las conferencias, como en Tech•Ed o TechMentor, tengo tendencia a hacer proclamas, anuncios de reglas generales que ayudan a los usuarios a recordar puntos clave acerca de cosas como Windows PowerShell. Mi última proclama es ésta: "Si tiene que analizar una cadena en Windows PowerShell, es que está haciendo algo mal".
Esto proviene de mi filosofía respecto a que Windows PowerShell™ es un shell orientado a objetos. Si está haciendo cosas como volcar listas de servicios en un archivo de texto y después analizar ese archivo de texto para consultar los servicios que se han iniciado, se está esforzando demasiado. Se trata de un enfoque válido en un sistema operativo basado en texto como Unix, pero Windows PowerShell (así como el propio Windows®) permite usar objetos de forma mucho más eficaz.
Vídeo
Vea a Don Jones demostrando cómo puede usar Windows PowerShell para analizar cadenas complejas.

Incluso en sus propios scripts deberían producir objetos y no texto con formato, para que los distintos comandos de formato, filtrado, exportación, etc. de shell se puedan usar para manipular la salida de sus scripts. (En mi artículo de Windows PowerShell de julio de 2008 puede leer más acerca del concepto de objetos personalizados como salida de scripts).
En un TechMentor reciente en Orlando, Florida, uno de mis estudiantes me recordó que casi todas las reglas, especialmente las generales, tienen excepciones. "¿Y cuando se tienen que encontrar cosas en un archivo de registro de IIS? ¿En ese caso no hace falta analizar el texto necesariamente?"
Bien, en ese caso... sí. Y, afortunadamente, a pesar de lo bien que maneja los objetos Windows PowerShell, tampoco se queda atrás cuando se trata de analizar sintácticamente cadenas de texto. Y ahora que lo menciona, los archivos de registro de IIS, los archivos de registro del firewall y otros registros basados en texto son ejemplos perfectos.

Un caso real
Tuve que analizar un conjunto de archivos de registro de firewall para una compañía para la que estaba trabajando. Se había sorprendido a un empleado viendo algunos sitios web poco adecuados y como parte de la investigación posterior, el departamento de recursos humanos necesitaba una lista completa de los sitios web que había estado visitando. A pesar de que ya es un poco complicado extraer estos datos del registro de un único día, los de recursos humanos querían que retrocediera algunas semanas, cosa que no estaba dispuesto a hacer manualmente.
El servidor DHCP (protocolo de configuración dinámica de host) de la compañía indicaba que el equipo del empleado había estado usando la misma dirección IP (en este ejemplo consideraremos que es 192.168.17.54) durante varios meses. Eso, por supuesto, no es excepcional, ya que se trababa de un equipo de escritorio que raramente estaba apagado. Y como el registro del firewall mantuvo un registro de las direcciones IP de origen, sabía que Windows PowerShell podría servirme de ayuda.
El secreto reside en el a menudo olvidado comando Select-String. Y también necesita saber cómo trabajar con las expresiones regulares (cosa que expliqué en el número de noviembre de 2007 de Windows PowerShell).
El comando Select-String aceptará una ruta de acceso de archivos llena de archivos de texto, una expresión regular o una simple cadena que buscar. A continuación, emite cada línea de cada archivo de registro que coincide con la expresión regular o con la cadena sencilla. Para empezar mi tarea, sólo quería conseguir todas las líneas que contuvieran la dirección IP de equipo de escritorio del empleado. Cada línea del archivo de registro contenía una marca de fecha y hora, que era lo que querían los del departamento de recursos humanos.
El comando es el siguiente:
select-string -path c:\logs\*.txt -pattern "192.168.17.54"
-allmatches –simplematch
El parámetro –simpleMatch especifica que el patrón proporcionado sólo es una cadena sencilla, no una expresión regular. La figura 1 muestra parte de los resultados, que también podrían conducirse a un archivo. Es importante tener en cuenta que los resultados incluyen el nombre de archivo y el número de la línea en los que se encontró la coincidencia, lo cual puede ser muy útil cuando se quiere volver atrás en algún punto para obtener más información.
Cmdlet del mes: Start-Sleep
Este es un cmdlet que puede ofrecer justo lo que se necesita a mitad de un largo día de trabajo, una pequeña siesta. Start-Sleep ofrece una pausa rápida, me refiero a los scripts de Windows PowerShell, por supuesto.
No es raro necesitar una pausa rápida en un script. Por ejemplo, supongamos que necesita iniciar un servicio, esperar unos cuantos segundos para que se inicie y, después, realizar algunas otras tareas que dependen de ese servicio. Start-Sleep es justo lo que necesita para este comportamiento. Al ejecutar Start-Sleep 10, por ejemplo, se hará que el shell se detenga durante 10 segundos. Si usted necesita un control más preciso, puede ejecutar Start-Sleep -mili 100, por ejemplo, para detener durante 100 milisegundos. Start-Sleep suspende completamente el shell, incluyendo los scripts, las canalizaciones y todo lo demás durante el tiempo especificado. Ahora sólo falta que alguien escriba ese cmdlet llamado Start-Nap que tanto llevo esperando.
Figura 1 Resultados del comando Select-String (haga clic en la imagen para ampliarla)

Coincidencias complejas
Después de proporcionar a los de recursos humanos exactamente lo que pedían, se dieron cuenta de que no era exactamente lo que querían después de todo. Mi informe incluía visitas a diversas direcciones IP, como 207.68.172.246 (el sitio web de MSN®). La siguiente solicitud del investigador consistía en reducir mi informe para que sólo incluyera las visitas a direcciones IP específicas, que ellos habían identificado como pertenecientes a uno de los sitios web en cuestión. En este artículo no revelaré la dirección IP verdadera de la que se hablaba en la investigación. En vez de eso, usaré 207.68.172.246 para este ejemplo (aunque el sitio web de MSN normalmente no sea considerado como inadecuado).
Esta solicitud podría ser un poco más difícil. En el archivo de registro con el que trabajaba, las direcciones IP del origen y el destino estaban una junto a otra y separadas por una coma. Así que sólo tenía que cambiar mi cadena de búsqueda por "192.168.17.54,207.68.172.246" y repetir la búsqueda.
En un archivo de registro más complejo, sin embargo, es posible que hubiera datos de variables almacenados entre las dos direcciones IP, por lo que una coincidencia simple de cadenas no funcionaría. En esa situación, tendría que recurrir a una expresión regular, que también funciona bien en formatos más sencillos de registro, que es lo que demostraré aquí.
Dentro de una expresión regular, el carácter del punto es un comodín para cualquier carácter simple. Y puedo usar la sub-expresión (.)* para buscar cualquier número de caracteres en medio de mis dos direcciones IP. Sin embargo, se debe usar una barra diagonal inversa para obviar los punto literales que aparecen en las propias direcciones IP.
El comando resultante es:
select-string -path c:\logs\*.txt -pattern
"192\.168\.17\.54(.)*207\.68\.172\.246" –allmatches
He eliminado el parámetro –simpleMatch, ya que esta vez estoy usando una expresión regular. Los resultados mostraron sólo las visitas desde el equipo específico del empleado al sitio web identificado como inadecuado. Los resultados también incluían la marca de fecha y hora que quería el investigador. La figura 2 muestra una parte de los resultados que se obtienen al ejecutar un comando como este.
Figura 2 Resultados de búsqueda acotados que sólo muestran visitas a un sitio específico (haga clic en la imagen para ampliarla)
Puedo optimizar el proceso aún más y dirigir los resultados a Format-Table para usar su habilidad para mostrar columnas calculadas. Puedo hacer que la tabla incluya el nombre del archivo de registro y el número de la línea en la que se encontró la coincidencia, e incluso mostrar la propia línea que coincide. Sin embargo, puedo hacer que el shell reemplace la coincidencia de la expresión regular con una cadena vacía, de manera que sólo se muestre el resto de la línea (en mi ejemplo, la marca de fecha y hora). Esto es un truco avanzado, pero demuestra la forma en que Windows PowerShell puede manipular los datos de cadenas y producir resultados altamente personalizados, todo en una sola línea de comandos:
select-string -path c:\logs\*.txt -pattern
"192\.168\.17\.54(.)*207\.68\.172\.246" -allmatches |
ft  filename,linenumber,@{"Label"="Time";
"Expression"={$_.line.replace
($_.matches[0],"")}} –auto
La figura 3 muestra un ejemplo de cómo serían mis resultados finales.
Figura 3 Resultados con formato del comando Select-String (haga clic en la imagen para ampliarla)

El mundo está lleno de cadenas
Proclamo sin ninguna duda que la orientación hacia los objetos de Windows PowerShell es una de sus mayores bazas. Pero a veces, los objetos no son una opción.
Es posible que Windows PowerShell viva en un mundo orientado hacia los objetos. Afortunadamente, el equipo de Windows PowerShell se dio cuenta de que, con frecuencia, el mundo contiene datos externos en forma de cadenas con formato, por lo que crearon el comando Select-String. Armado con Select-String y si conoce las expresiones regulares, puede usar Windows PowerShell para escribir líneas de código que analicen hasta las cadenas más complicadas.

Don Jones es coautor de Windows PowerShell: TFM y autor de decenas de otros libros de TI. Puede ponerse en contacto con él a través de su blog en www.concentratedtech.com.


Hey, Scripting Guy! Permanezca atento a su tostador
Los Scripting Guys de Microsoft

Descarga de código disponible en: HeyScriptingGuy2008_09.exe (150 KB)

Si hay algo que resume nuestro mundo moderno son estas palabras: permanezca conectado a Internet. Gracias a los teléfonos móviles, ya no necesita estar en casa para que la gente lo llame; lo pueden encontrar esté donde esté, en cualquier momento del día o la noche. (Ah, qué... bien.) Gracias a la informática inalámbrica, no tiene que estar en la oficina para realizar su trabajo; ahora puede trabajar desde casa, desde la playa o prácticamente desde cualquier parte que pueda imaginar.
Una historia real: recientemente, los padres del editor de scripting se fueron de camping, pero se vieron forzados a vivir sin comodidades, como los grandes exploradores Lewis y Clark, cuando tuvieron problemas para conectarse a la red inalámbrica del camping. Menos mal que la televisión vía satélite todavía funcionaba.
Y eso sólo es el principio. Los dispositivos GPS permiten saber exactamente la posición en que uno se encuentra, en cuestión de centímetros; en función del dispositivo, también pueden hacer que otras personas conozcan exactamente la posición de uno mismo. (El viejo dicho de "puedes correr pero no ocultarte" nunca antes había sido tan cierto.) Si lo deseara, el Scripting Guy que escribe esta columna podría hacer que su cuenta corriente le llamara por teléfono cada vez que se liquide un cheque; igualmente, podría hacer que su automóvil le envíe informes de estado mensuales por correo electrónico. Por si esto fuera poco, el tostador se ha ofrecido a sacar el perro a pasear y regar las plantas cuando él se vaya de vacaciones.
Bueno, de acuerdo, quizás lo último no ha sucedido, todavía. Pero si quisiera, el Scripting Guy podría comprar un tostador con conexión a Internet. Así podría llamar al tostador de camino a casa y tener tostadas bien calientes esperándolo a su llegada. Para ser honestos, no sabemos por qué querría tener tostadas bien calientes esperándolo en casa. Pero si así fuera…
Por supuesto, si el objetivo de todos es permanecer conectados, no debe sorprender que los Scripting Guys, que nunca han sido esclavos de lo moderno, sean partidarios de llegar a estar más desconectados. ¿Esto significa que los Scripting Guys recomiendan que tire el teléfono móvil o el equipo portátil? No, hasta los Scripting Guys son más inteligentes que eso. Sin embargo, lo que recomiendan es que agregue un conjunto de registros desconectado al arsenal de scripts. Pero si desea tirar su teléfono móvil o equipo portátil, está bien, no le detendremos.
Nota Según un estudio realizado por Harris Interactive, el 43 por ciento de los norteamericanos ha usado un equipo portátil mientras estaba de vacaciones para comprobar y enviar correo electrónico relacionado con el trabajo. Y más del 50 por ciento de los norteamericanos usa sus teléfonos móviles mientras están de vacaciones para comprobar su correo electrónico y/o correo de voz. Y eso no incluye el 40 por ciento de los norteamericanos que no toman vacaciones a lo largo del año.
No hace falta decir que a muchos les gustaría agregar conjuntos de registros desconectados a su arsenal de scripts, excepto por una sola cosa: que no tienen la menor idea de lo que es un conjunto de registros desconectado. Bueno, en caso de que no esté familiarizado con el concepto, un conjunto de registros desconectado es (más o menos) una tabla de la base de datos que no está vinculada a una base de datos real; en lugar de eso, ha sido creada por un script, sólo existe en memoria y desaparece en el momento en que finaliza el script. Es decir, un conjunto de registros desconectado es una estructura de datos ficticia que existe durante algunos minutos y luego desaparece, llevándose los datos. Caramba, eso suena realmente útil, Scripting Guys. ¡Gracias por la ayuda!
De acuerdo, lo admitimos, los conjuntos de registros desconectados no suenan muy interesantes. Y la verdad es que no lo son. Pero pueden resultar muy útiles. Como los escritores veteranos de VBScript bien saben, VBScript no tiene precisamente las mejores capacidades de ordenación de datos del mundo. (Bueno, salvo que piense que ninguna de las capacidades de ordenación de datos es la mejor del mundo.) Asimismo, la capacidad de VBScript para trabajar con grandes conjuntos de datos es, en el mejor de los casos, limitada. Fuera del objeto Dictionary (que lo limita a trabajar con elementos que tienen a lo sumo dos propiedades) o el objeto array (que está en gran parte limitado a listas de datos de propiedad única), bueno... eso es todo.
El conjunto de registros desconectado le permite ocuparse de esos problemas (y hacer muchas otras cosas). ¿Necesita ordenar sus datos, especialmente datos con propiedades múltiples? Ningún problema; como dijimos, un conjunto de registros desconectado es el equivalente virtual de una tabla de la base de datos, y no hay nada más fácil en este mundo que ordenar una tabla. (Vale, si quiere ponerse quisquilloso, suponemos que no ordenar una tabla de la base de datos es más fácil que ordenar una.) ¿O quizás ha obtenido un gran conjunto de elementos, con propiedades múltiples, y desea realizar un seguimiento? Ningún problema, ¿no dijimos que un conjunto de registros desconectado es el equivalente virtual de una tabla de la base de datos? ¿Necesita filtrar esa información de alguna manera o quizás buscar un valor específico en los datos? Ah, si sólo hubiera alguna manera de usar el equivalente virtual de una tabla de la base de datos...
Buena observación: puede que ya sea hora de mostrarle de qué hablamos (presuponiendo que al menos sabemos de qué estamos hablando). Para comenzar, digamos que tenemos las estadísticas de béisbol que se muestran en la figura 1 que hemos bajado del sitio web MLB.com y almacenado en un archivo de valores separados por comas o tabulaciones, C:\Scripts\Test.txt.
Figura 1 Estadísticas almacenadas en un archivo de valores separados por tabulaciones
Jugador | Cuadrangulares | Carreras impulsadas | Promedio
D Pedroia | 4 | 28 | .276
K Kouzmanoff | 8 | 25 | .269
J Francouer | 7 | 35 | .254
C Guzmán | 5 | 20 | .299
F Sánchez | 2 | 25 | .238
I Suzuki | 3 | 15 | .287
J Hamilton | 17 | 67 | .329
I Kinsler | 7 | 35 | .309
M Ramírez | 12 | 39 | .295
A González | 17 | 55 | .299
Todo eso está bien y es bueno, pero supongamos que lo que en realidad deseamos hacer es mostrar esta lista de jugadores ordenada por la cantidad de cuadrangulares que lograron. ¿Un conjunto de registros desconectado nos puede ayudar con algo así? Estamos a punto de averiguarlo, consulte la figura 2. Sí, hay mucho código aquí, ¿verdad? Pero no se preocupe; como pronto verá, es más sencillo de lo que parece.
Figura 2 Un conjunto de registros desconectado
Const ForReading = 1
Const adVarChar = 200
Const MaxCharacters = 255
Const adDouble = 5

Set DataList = CreateObject("ADOR.Recordset")
DataList.Fields.Append "Player", _
  adVarChar, MaxCharacters
DataList.Fields.Append "HomeRuns", adDouble
DataList.Open

Set objFSO = _
  CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile _
  ("C:\Scripts\Test.txt", ForReading)

objFile.SkipLine

Do Until objFile.AtEndOfStream
    strStats = objFile.ReadLine
    arrStats = Split(strStats, vbTab)

    DataList.AddNew
    DataList("Player") = arrStats(0)
    DataList("HomeRuns") = arrStats(1)
    DataList.Update
Loop

objFile.Close

DataList.MoveFirst

Do Until DataList.EOF
    Wscript.Echo _
        DataList.Fields.Item("Player") & _
        vbTab & _
        DataList.Fields.Item("HomeRuns")
    DataList.MoveNext
Loop
Para comenzar, definimos cuatro constantes:
  • ForReading: usaremos esta constante al abrir y leer el archivo de texto.
  • adVarChar: esta es una constante ADO estándar para crear un campo que usa un tipo de datos Variant.
  • MaxCharacters: es una constante ADO estándar que se usa para indicar el número máximo de caracteres (en este caso, 255) que puede almacenar un campo Variant.
  • adDouble: una última constante ADO, para crear un campo que usa un tipo de datos doble (numérico).
Después de definir las constantes, nos encontraremos con este bloque de código:
Set DataList = CreateObject _
    ("ADOR.Recordset")
DataList.Fields.Append "Player", _
    adVarChar, MaxCharacters
DataList.Fields.Append "HomeRuns", _
    adDouble
DataList.Open
Esta es la parte del script donde realmente establecemos y configuramos el conjunto de registros desconectado. Para llevar a cabo esta tarea, lo primero que hacemos es crear una instancia del objeto ADOR.Recordset; no hace falta decir que ese objeto crea la tabla virtual de la base de datos (es decir, el conjunto de registros desconectado).
A continuación usamos la siguiente línea de código (y el método Append) para agregar un nuevo campo al conjunto de registros:
DataList.Fields.Append "Player", adVarChar, MaxCharacters
Como se puede observar, hasta aquí no hay nada extraño: simplemente llamamos al método Append, seguido de tres parámetros:
  • El nombre del campo (Players).
  • El tipo de datos del campo (adVarChar).
  • El número máximo de caracteres que se pueden almacenar en el campo (MaxCharacters).
Después de agregar el campo Players, podemos agregar un segundo campo: HomeRuns, que tiene un tipo de datos numérico (adDouble). Al terminar esa tarea, llamamos al método Open para declarar que el conjunto de registros está abierto y listo para empezar.
A continuación, creamos una instancia de Scripting.FileSystemObject y abrimos el archivo C: \Scripts\Test.txt. En realidad, esta parte del script no tiene nada que ver con el conjunto de registros desconectado; sólo aparece allí porque necesitamos recuperar los datos de un archivo de texto. La primera línea del archivo de texto contiene la información de encabezado:
Player     Home Runs     RBI        Average
No necesitamos esta información para el conjunto de registros, así que lo primero que hacemos después de abrir el archivo es llamar al método SkipLine para saltar esta primera línea:
objFile.SkipLine
Ahora que nos situamos en la primera línea que contiene los verdaderos datos, establecemos un bucle Do Until, diseñado para que nos permita leer el resto del archivo, línea por línea. Cada vez que leemos una línea del archivo, almacenamos ese valor en una variable denominada strLine y usamos la función Split para convertir esa línea en una matriz de valores (al dividir la línea cada vez que encontramos una tabulación):
arrStats = Split(strStats, vbTab)
Es cierto, es una especie de introducción rápida, pero a estas alturas esperamos que la mayoría tenga experiencia en recuperar información de archivos de texto. Resumiendo, la primera vez que pase por el bucle, la matriz arrStats contendrá los elementos mostrados en la figura 3.
Figura 3 Contenido de la matriz
Número de elemento | Nombre del elemento
0 | D Pedroia
1 | 4
2 | 28
3 | .276
Ahora estamos listos para divertirnos un poco:
DataList.AddNew
DataList("Player") = arrStats(0)
DataList("HomeRuns") = arrStats(1)
DataList.Update
Aquí agregamos al conjunto de registros desconectado la información del jugador 1 (D Pedroia). Para agregar un registro al conjunto de registros, comenzamos llamando al método AddNew; así creamos un nuevo registro en blanco, con el que podemos trabajar. Usamos las dos líneas de código siguientes para asignar valores a dos campos del conjunto de registros (Player y HomeRuns), a continuación llamamos al método Update para escribir oficialmente ese registro en el conjunto de registros. Y a continuación regresamos al comienzo del bucle, donde repetimos el proceso con la línea siguiente, el siguiente jugador, del archivo de texto. ¿Lo ve? Quizás haya demasiado código aquí, pero todo es bastante sencillo y fácil.
Entonces, ¿qué sucede después de agregar todos los jugadores al conjunto de registros? Bueno, después de cerrar el archivo de texto, ejecutamos el bloque de código siguiente:
DataList.MoveFirst

Do Until DataList.EOF
  Wscript.Echo _
    DataList.Fields.Item("Player") & _
    vbTab & _
    DataList.Fields.Item("HomeRuns")
  DataList.MoveNext
Loop
En la línea 1 usamos el método MoveFirst para posicionar el cursor al comienzo del conjunto de registros; de no hacerlo, corremos el riesgo de mostrar sólo algunos de los datos del conjunto de registros. A continuación establecemos un bucle Do Until que continuará hasta que no haya más datos (es decir, hasta que la propiedad EOF, fin de archivo, del conjunto de registros sea True).
En el interior del bucle, todo lo que hacemos es devolver los valores de los campos Player y HomeRuns (tenga en cuenta la sintaxis algo extraña que se usa para indicar un campo concreto: DataList.Fields.Item("Player"). Y a continuación, simplemente llamamos al método MoveNext para pasar al registro siguiente del conjunto de registros.
Ni falta hace decir que fue realmente fácil. Cuando todo haya concluido, deberíamos obtener lo siguiente:
D Pedroia       4
K Kouzmanoff    8
J Francouer     7
C Guzman        5
F Sanchez       2
I Suzuki        3
J Hamilton      17
I Kinsler       7
M Ramirez       12
A Gonzalez      17
Como verá, si lo pensamos un poco, en realidad no está del todo bien, ¿no cree? De acuerdo, obtuvimos los nombres de los jugadores y los totales de cuadrangulares, pero no obtuvimos esos totales en un orden determinado. ¡Vaya! ¿Por qué el conjunto de registros desconectado no se encargó de ordenar los datos?
En realidad hay un buen motivo: no le hemos indicado al conjunto de registros según qué campo deseamos ordenar. Pero esto es muy fácil de corregir: sólo tiene que modificar el script para agregar la información de orden justo antes de la llamar al método MoveFirst. Es decir, haga que esa parte del script sea parecida a esta:
DataList.Sort = "HomeRuns"
DataList.MoveFirst
Obviamente aquí no hay truco; simplemente asignamos el campo HomeRuns a la propiedad Sort. Ahora observe la salida que obtenemos al ejecutar el script.
F Sanchez       2
I Suzuki        3
D Pedroia       4
C Guzman        5
J Francouer     7
I Kinsler       7
K Kouzmanoff    8
M Ramirez       12
J Hamilton      17
A Gonzalez      17
Mucho mejor. Bueno, salvo por una cosa: normalmente los totales de los cuadrangulares se enumeran en orden descendente, con el jugador que posee el mayor número de cuadrangulares en primer lugar. ¿Hay alguna manera de ordenar un conjunto de registros desconectado en orden descendente?
Por supuesto que la hay; todo lo que debemos hacer es añadir el útil parámetro DESC, de este modo:
DataList.Sort = "HomeRuns DESC"
¿Y qué hace el parámetro DESC por nosotros? Exacto:
A Gonzalez      17
J Hamilton      17
M Ramirez       12
K Kouzmanoff    8
I Kinsler       7
J Francouer     7
C Guzman        5
D Pedroia       4
I Suzuki        3
F Sanchez       2
A propósito, está permitido ordenar por múltiples propiedades; todo lo hay que hacer es asignar cada una de esas propiedades al criterio de ordenación. Por ejemplo, supongamos que desea ordenar primero por cuadrangulares y luego por carreras impulsadas. Ningún problema, este comando cumplirá con su objetivo:
DataList.Sort = "HomeRuns DESC, RBI DESC"
Inténtelo y compruébelo por sí mismo. No es tan divertido como comprobar el correo electrónico durante las vacaciones, pero se aproxima.
Nota Tenga en cuenta que no se puede ordenar por un campo que no haya sido agregado al conjunto de registros. ¿Qué significa eso? Significa que antes de agregar una propiedad como RBI a la instrucción Sort, debe agregar las siguientes líneas al script en las ubicaciones apropiadas:
DataList.Fields.Append "RBI", adDouble

DataList("RBI") = arrStats(2)
Y si desea consultar la salida, también debe modificar la instrucción Wscript.Echo:
Wscript.Echo _
  DataList.Fields.Item("Player") & _
  vbTab & _
  DataList.Fields.Item("HomeRuns") & _
  vbTab & DataList.Fields.Item("RBI")
Veamos, ¿qué más se puede hacer con los conjuntos de registros desconectados? Ah, por aquí hay algo. Supongamos que recuperamos toda la información de los jugadores y después ordenamos los datos por el promedio de bateo. (Entre otras cosas, eso significa que necesitamos modificar el script original para crear campos denominados RBI y BattingAverage). La salida tiene el siguiente aspecto:
J Hamilton      17      67      0.329
I Kinsler       7       35      0.309
A Gonzalez      17      55      0.304
C Guzman        5       20      0.299
M Ramirez       12      39      0.295
I Suzuki        3       15      0.287
D Pedroia       4       28      0.276
K Kouzmanoff    8       25      0.269
J Francouer     7       35      0.254
F Sanchez       2       25      0.238
Está bien, pero qué sucede si sólo deseamos una lista de los jugadores que golpean con .300 como mínimo? ¿Cómo podemos limitar los datos mostrados a los jugadores que coinciden con algún criterio especificado? Bueno, una solución es asignar un filtro al conjunto de registros:
DataList.Filter = "BattingAverage >= .300"
La finalidad general del filtro de un conjunto de registros es la misma que la de una consulta de base de datos: Ofrece un mecanismo para limitar los datos devueltos a un subconjunto de todos los registros del conjunto de registros. En este caso simplemente solicitamos que el Filtro elimine todos los registros menos aquellos en que el campo BattingAverage tenga un valor mayor o igual que .300. Y ¿sabe qué? El filtro hará exactamente lo que le solicitamos:
J Hamilton      17      67      0.329
I Kinsler       7       35      0.309
A Gonzalez      17      55      0.304
¿Qué le parecería que nuestros niños respondieran así?
A propósito, se puede usar múltiples criterios en un solo filtro. Por ejemplo, este comando limita los datos devueltos a los registros en los que el campo BattingAverage es mayor o igual que .300 y el campo HomeRuns es mayor que 10:
DataList.Filter = _
  "BattingAverage >= .300 AND HomeRuns > 10"
Por el contrario, este filtro limita los datos devueltos a los registros en los que el campo BattingAverage es mayor o igual que .300 o el campo HomeRuns es mayor que 10:
DataList.Filter = "BattingAverage >= .300 OR HomeRuns > 10"
Pruebe los dos y así verá la diferencia. Pero, ¡qué demonios!: sólo por diversión, aquí hay otro filtro que puede probar:
DataList.Filter = "Player LIKE 'I*'"
Según parece, también puede usar caracteres comodines en los filtros. Para ello, use el operador LIKE (en contraposición con el signo igual) y después use el asterisco del mismo modo que lo hace al ejecutar un comando de MS-DOS® como dir C:\Scripts\*.txt. En el ejemplo anterior, deberíamos obtener una lista de jugadores cuyos nombres comienzan con la letra I; esto se debe a que la sintaxis que empleamos dice, "muestre una lista de todos los registros donde el valor del campo del jugador comience con una I y luego vaya seguida por, bueno, por cualquier cosa". Pruébela, aunque, vale, a estas alturas ya conoce la rutina.
Por cierto, tampoco está atascado con promedios de bateo como 0.309. (Normalmente los promedios de bateo se expresan sin el 0 inicial, por ejemplo .309). Pero está bien; simplemente puede usar la función FormatNumber para dar formato al promedio de bateo de cualquier forma antigua que desee:
FormatNumber (DataList.Fields.Item("BattingAverage"), 3, 0)
Sólo tiene que incluir esta función en la instrucción Wscript.Echo al mostrar el número (u opcionalmente, podría asignar la salida a una variable y poner esa variable en la instrucción Echo):
Wscript.Echo _
  DataList.Fields.Item("Player") & _
  vbTab & _
  DataList.Fields.Item("HomeRuns") & _
  vbTab & DataList.Fields.Item("RBI") & _
  vbTab & _
  FormatNumber _
  (DataList.Fields.Item("BattingAverage"), _
   3, 0)
El tema es divertido, ¿eh?
Aunque, desafortunadamente, parece que se ha sido todo por este mes. Recapitulando, sólo nos gustaría decir que..., perdón, está sonando el teléfono.
De todos modos, queríamos comentar que... Genial, ahora está sonando el teléfono móvil. Y acabamos de recibir un correo electrónico del tostador. Importante: nuestras tostadas bien calientes están listas, ¿queremos mantequilla o mermelada? Tenemos que irnos, pero lo veremos el mes que viene.
Dr. Scripto's Scripting Perplexer
El desafío mensual que pone a prueba no sólo sus habilidades para resolver rompecabezas, también sus habilidades para el scripting.

Septiembre de 2008: Búsqueda de Scripting
He aquí una simple (o quizás no tan simple) búsqueda de palabras. Encuentre todas las funciones e instrucciones de VBScript de la lista. Pero incluye una novedad: con las letras restantes se obtendrá una palabra oculta, que resulta ser, exactamente, un cmdlet de Windows PowerShell™.
Lista de palabras: Abs, Array, Atn, CCur, CLng, CInt, DateValue, Day, Dim, Else, Exp, Fix, InStr, IsEmpty, IsObject, Join, Len, Log, Loop, LTrim, Mid, Month, MsgBox, Now, Oct, Replace, Set, Sin, Space, Split, Sqr, StrComp, String, Timer, TimeValue, WeekdayName.

RESPUESTA:
Dr. Scripto's Scripting Perplexer
Respuesta: Septiembre de 2008: Búsqueda de scripting

Los chicos de la sección Scripting Guys trabajan para Microsoft, mejor dicho, están contratados por Microsoft. Cuando no juegan al béisbol, ni entrenan ni lo ven (u otras actividades varias), dirigen el TechNet Script Center. Visite la página web www.scriptingguys.com.


Archivos del escritorio Funcionalidad avanzada en WDS
Wes Miller

Contenido
Administración de línea de comandos
Almacén de imágenes
Multidifusión
Registro en WDS
Otros aspectos
Conclusión
En las dos últimas entregas de esta columna nos hemos dedicado a explorar los Servicios de Implementación de Windows (WDS). Empezamos revisando la historia de las herramientas de implementación basadas en PXE (entorno de ejecución previo al arranque) de Microsoft, y continuamos con una descripción general de WDS. Este mes profundizaremos en algunos temas avanzados:
WDSUtil (una útil herramienta de línea de comandos para WDS), el almacén de imágenes de WDS, el registro en WDS y el uso de la funcionalidad de multidifusión en WDS para Windows Server® 2008.
Cuando se lanzó Servicios de instalación remota (RIS) en Windows® 2000 y Windows Server 2003, esta aplicación no era lo completa que muchos habrían deseado. Destacan en particular tres aspectos:
  • El rendimiento (implementación más escalable)
  • El registro y la auditoría
  • La automatización por línea de comandos
A medida que avancemos en el artículo de este mes, comprobará cómo con el lanzamiento inicial de WDS, y más en concreto con el de WDS en Windows Server 2008, se realizaron grandes avances en cada uno de estos aspectos.

Administración de línea de comandos
Comentábamos el pasado mes que WDS incluía una consola de administración notablemente mejorada. Pero lo que es aún más importante para la mayoría de las empresas, WDS suministraba una nueva utilidad de línea de comandos para la administración, WDSUtil.exe (vea la figura 1). WDSUtil se instala con el componente opcional de WDS en Windows Server 2003 (SP1+WDS o SP2) y con la función de WDS en Windows Server 2008.
Figura 1 Establecimiento de la opción de detección de arquitectura en sí mediante WDSUtil (haga clic en la imagen para ampliarla)
WDSUtil es una utilidad increíblemente eficaz, aunque compleja. En efecto, todo lo que se puede hacer a través de Microsoft® Management Console (MMC), y más, también puede hacerse a través de WDSUtil. De hecho, como buen ejemplo de ello y de que representa una de las mejores maneras de realizar diagnósticos, pruebe a ejecutar lo siguiente:
wdsutil /get-server /show:config
Los resultados reflejan casi todo lo que vería en la MMC completa de WDS, si bien WDSUtil puede mostrar el resultado en un formato detallado de fácil consulta que podrá trasladar a continuación a un archivo de texto.
¿Echa en falta información? Pruebe a ejecutar el siguiente comando en su lugar, este devuelve aún más información:
wdsutil /get-server /show:all /detailed
Asimismo, puede detener y reiniciar el servidor de WDS ejecutando lo siguiente:
wdsutil /stop-server
wdsutil /start-server
Encontrará una referencia de comandos para WDSUtil en go.microsoft.com/fwlink/?LinkId=112194. Si lo prefiere, puede descargar una versión en formato .chm (junto con toda la documentación sobre WDS 2008) en go.microsoft.com/fwlink/?LinkId=89381.
A menos que fuera un experto en las interfaces de servicio de Active Directory®, RIS no ofrecía una manera fácil de averiguar a través de la línea de comandos si una dirección MAC o un GUID específicos estaban asociados a un objeto de cuenta de equipo (MAO) en Active Directory. Con WDSUtil, puede realizar este tipo de consultas a partir de cualquier elemento.
Los GUID pueden resultar confusos, ya que se pueden especificar como cadenas binarias o como cadena de GUID, siendo la única diferencia el orden de los bytes y la ausencia de guiones. Las direcciones MAC pueden especificarse con o sin guiones mediante una de las siguientes líneas de código:
wdsutil /get-device /id:01-23-45-67-89-AB
wdsutil /get-device /id:0123456789AB
Es posible obtener información del dispositivo por cadena binaria mediante el siguiente comando:
wdsutil /get device /id:ACEFA3E81F20694E953EB2DAA1E8B1B6
O bien obtener información del dispositivo por cadena de GUID mediante el siguiente comando:
wdsutil /get device /id:E8A3EFAC-201F-4E69-953-B2DAA1E8B1B6
Aunque es posible que muchos de los equipos sean capaces de ejecutar la versión de 64 bits de Windows, algunos, lamentablemente, no informan correctamente de su arquitectura. Puede hacer que WDS intente determinar si un sistema es compatible con x64 ejecutando un pequeño programa con capacidad de arranque a través de la red que se ofrece como parte de WDS. Para ello ejecute lo siguiente, tal como se muestra en la figura 1:
wdsutil /set-server /architecturediscovery:yes
De hecho, el comando set-server de WDSUtil le permite configurar un gran número de configuraciones de servidor. Para comprobar las opciones disponibles, ejecute el siguiente comando:
wdsutil /set-server /?
Si ha actualizado un servidor de Windows Server 2003 WDS a Windows Server 2008, podrá convertir cualquier imagen de RIPrep a formato de imágenes de Windows (WIM) si ejecuta el siguiente comando:
WDSUtil /convert-RIPrepImage
Aunque WDSUtil puede convertir imágenes de RIPrep, no puede convertir cualquier imagen restante de RISetup (instalaciones tradicionales de RIS o heredadas de WDS por script).
La eficacia de WDSUtil radica en su capacidad para automatizar tareas repetitivas. Los comandos de la figura 2 le ofrecen una orientación sobre las capacidades de WDSUtil. Si aplica nuevos servidores de WDS, agrega o modifica imágenes a través de varios servidores, administra su infraestructura de multidifusión o especifica qué programa con capacidad de arranque a través de la red se usará para un cliente específico de arranque, WDSUtil ofrece unas características eficaces que antes no estaban disponibles en RIS.
Figura 2 Comandos de WDSUtil
Comando | Descripción
/add | Agrega dispositivos, imágenes o grupos de imágenes.
/approve-AutoAddDevices | Aprueba los dispositivos pendientes de agregación automática y permite establecer información de configuración para dichos dispositivos.
/convert-RiprepImage | Convierte una imagen heredada de RIPrep en una imagen de WIM.
/copy-Image | Duplica una imagen dentro de un almacén de imágenes.
/delete-AutoAddDevices | Elimina todos los dispositivos pendientes de agregación automática o sólo los especificados.
/disable | Deshabilita un servidor de WDS o servidor de transporte.
/disconnect-Client | Desconecta un cliente de una transmisión por multidifusión o espacio de nombres.
/enable | Habilita un servidor de WDS o servidor de transporte.
/export-Image | Al igual que sucede con /export en ImageX, exporta una imagen existente del almacén de imágenes a una imagen de WIM.
/get | Obtiene las propiedades y los atributos para un dispositivo, imagen, grupo de imágenes, servidor de WDS o servidor de transporte.
/initialize-Server | Configura un servidor de WDS para su uso tras la primera instalación.
/new | Crea imágenes de captura o detección, transmisiones de multidifusión y espacios de nombres.
/progress | Muestra el progreso mientras se ejecuta un comando determinado.
/reject-AutoAddDevices | Rechaza todos los dispositivos pendientes de agregación automática o sólo los especificados.
/remove | Quita imágenes, grupos de imágenes, transmisiones de multidifusión y espacios de nombres.
/replace-Image | Reemplaza (sobrescribe) una imagen con una imagen nueva.
/set | Establece las propiedades y los atributos para un dispositivo, imagen, grupo de imágenes, servidor de WDS o servidor de transporte.
/start | Inicia un servidor de WDS o servidor de transporte.
/stop | Detiene un servidor de WDS o servidor de transporte.
/uninitialize-Server | Revierte los cambios realizados en el servidor durante la inicialización de éste (lo revierte a un estado sin configurar).
/update-ServerFiles | Actualiza los archivos en el recurso compartido REMINST del servidor con las últimas versiones del directorio System32\RemInst del servidor.
/verbose | Muestra el resultado detallado mientras se ejecuta un comando determinado.

Almacén de imágenes
El pasado mes comentamos cómo SIS (almacenamiento de instancia única), empleado por RIS para almacenar archivos en disco más eficazmente, ha dejado de emplearse en WDS. Ahora, todas las imágenes de modo nativo (WIM), independientemente del sistema operativo, se guardan en el almacén de imágenes de WDS. Tal como indicamos en artículos pasados, esta funcionalidad de instancia única le permitía ahorrar espacio en los archivos .wim cuando las imágenes de volúmenes tenían archivos relacionados. El almacén de imágenes de WDS funciona de la misma manera. De hecho, hace uso de la funcionalidad de WIM para almacenar las imágenes.
Para trabajar con el almacén de imágenes, necesita disponer por lo menos de un grupo de imágenes; por lo general, se le pedirá que cree uno al inicializar WDS. También puede crear un grupo de imágenes nuevo al agregar una imagen de instalación, con lo que la imagen se agregará a dicho grupo (vea la figura 3).
Figura 3 Creación de un grupo de imágenes nuevo (haga clic en la imagen para ampliarla)
Así que, ¿qué es el almacén de imágenes? Si busca en el directorio RemoteInstall, directorio Images, encontrará los directorios para cada grupo de imágenes que haya creado. Tal como se muestra en la figura 4, habrá un archivo .wim para cada imagen de instalación que haya importado en el grupo de imágenes y un solo archivo .rwm (recurso WIM).
Figura 4 Contenido de un grupo de imágenes (haga clic en la imagen para ampliarla)
Observe detenidamente los archivos de la figura 4. Este grupo de imágenes está formado por los siguientes elementos:
  • install.wim (Windows Server 2008, Standard Edition)
  • install-(2).wim (Windows Server 2008, Enterprise Edition)
  • install-(3).wim (Windows Server 2008, Datacenter Edition)
  • install-(4).wim (Windows Server 2008, Standard Edition (Server Core)
  • install-(5).wim (Windows Server 2008, Enterprise Edition (Server Core)
  • install-(6).wim (Windows Server 2008, Datacenter Edition (Server Core)
Ahora compare los tamaños de esos archivos con los de la MMC (que se muestran en la figura 5). El tamaño de cada archivo .wim en la figura 4 es una fracción del tamaño del archivo Res.rwm. ¿Por qué? Con el objetivo de ahorrar espacio, los archivos .wim que se muestran son simplemente fragmentos de los archivos reales. Contienen los metadatos para restaurar el archivo .wim, pero no contienen realmente los recursos de los archivos. Todos los recursos de archivos de un grupo de imágenes se guardan en el archivo .rwm de dicho grupo de imágenes.
Figura 5 Imágenes que se muestran en el administrador de servidores (haga clic en la imagen para ampliarla)
Para editar una imagen de instalación en un almacén de imágenes, puede exportar la imagen, realizar las modificaciones necesarias y, a continuación, reemplazar la imagen o importarla de nuevo; si lo desea, también puede interactuar con ella deshabilitando la imagen de instalación correspondiente de la MMC y realizando las ediciones necesarias mediante el montaje y la modificación del archivo .wim.
Un problema que RIS siempre ha tenido son las réplicas de imágenes. Cuando copia archivos de SIS a través de la red, el almacenamiento de instancia única se pierde ya que se trata de un atributo de NTFS. Esto significa que si tenía 40 GB de imágenes de RISetup y RIPrep y las replicaba en otro servidor, aunque SIS Groveler las hubiera reducido hasta un tamaño de tan sólo 5 GB, igualmente estaría replicando 40 GB a través de la red. Esto no se da con el almacén de imágenes de WDS. De hecho, gracias a la arquitectura de dicho almacén, puede guardarlo en un servidor de Sistema de archivos distribuido (DFS) y usar la réplica de DFS (DFS-R) para replicarlo de un sitio al otro.
Las características específicas variarán en función de la versión de WDS. Para Windows Server 2003, consulte el capítulo 7 "Trabajo con imágenes", de la documentación que podrá descargar en go.microsoft.com/fwlink/?LinkId=81031. Para Windows Server 2008, consulte "Almacenamiento y réplica de imágenes mediante DFS" en go.microsoft.com/fwlink/?LinkId=121960. Dado que todos los recursos se almacenan en el archivo .rwm, aunque copie un grupo de imágenes de un servidor a otro, la cantidad de datos que se transmitirán corresponderá a una fracción de lo que sería si se transmitiera cada archivo .wim (o en la antigua arquitectura SIS de RIS).
Por lo tanto, ¿cuándo se debe crear un grupo de imágenes nuevo y cuándo usar el grupo antiguo? Por lo general se aplican las mismas reglas que para un archivo .wim. Aunque es posible colocar una imagen de Windows XP Professional SP3 en un grupo de imágenes formado principalmente por imágenes de Windows Server 2008, no es muy recomendable, ya que no se ahorrará mucho espacio. Al igual que sucede con los archivos .wim, normalmente querrá disponer de un grupo de imágenes para al menos:
  • Cada versión específica de Windows, donde una versión puede ser un SKU (Windows XP Professional) y una revisión Service Pack (SP3).
  • Windows Server 2003 y versiones anteriores: cada versión localizada de idioma (no la interfaz de usuario multilingüe). Antes de Windows Vista®, las versiones localizadas eran archivos binarios completamente diferentes, por lo que no se almacenaban correctamente en un archivo .wim en relación con la creación de instancias únicas.
  • El Service Pack de cada versión. Si bien es posible almacenar conjuntamente imágenes de Windows Server 2008 y Windows Vista SP1, deberá sopesar si vale la pena desde el punto de vista funcional llevarlo a cabo en su organización.
El almacén de imágenes permite conservar el espacio de un modo muy mejorado respecto a SIS tanto en disco como a través de la red y, por lo general, requiere muy poco trabajo para mantenerlo en óptimo funcionamiento.

Uno de los principales puntos débiles de RIS era su falta de escalabilidad. La implementación de multidifusión se ocupa principalmente de corregir este problema. Las personas suelen considerar la multidifusión como un método de implementación más rápido, pero en realidad no se trata de la velocidad, sino más bien de la cantidad. RIS permitía la implementación de varios sistemas. De hecho, RIS podía asumir la implementación simultánea de unos 75 sistemas.
Pero mucho antes de llegar a ese punto, el rendimiento ya se veía afectado, por lo que cada instalación tardaba cada vez más tiempo. Y lo que era peor, a medida que aumentaba el número de instalaciones, también lo hacía el riesgo de que se produjeran fallos. Al mismo tiempo, varias instalaciones saturaban la red con tráfico de bloque de mensajes de servidor (SMB), de tal modo que era posible que, durante la implementación, los empleados no pudieran obtener acceso a recursos de red fundamentales como Microsoft Exchange Server.
La multidifusión se ocupa de ampliar los números de las implementaciones. Si implementa cuatro servidores o un centro de congresos con 100 sistemas, la multidifusión permite llevar a cabo esta implementación sin que tarde una eternidad y sin saturar la red. Si bien es posible usar la multidifusión para realizar la implementación en un solo sistema, es necesario que haya varios sistemas a la escucha de la transmisión para reparar en las ventajas de este método.
Para poder usar la multidifusión, necesita disponer de enrutadores compatibles con este sistema. Por lo general, esto significa que debe estar habilitada la búsqueda del Protocolo de administración de grupos de Internet (IGMP). Deberá tener también Windows PE 2.1 (Windows Server 2008 RTM o Windows Vista SP1), ya que la versión (2.0) incorporada en Windows Vista RTM no puede recibir transmisiones de multidifusión.
Asimismo, debe asegurarse de que si tiene varios servidores de WDS (u otro tipo de multidifusión) en una misma red, debe especificar un intervalo de direcciones IP personalizado. Esto puede cambiarse fácilmente a través de la MMC de WDS: para ello, haga clic con el botón secundario en el servidor, haga clic en Propiedades y, a continuación, haga clic en la ficha Configuración de red.
Al realizar una difusión de multidifusión, el servidor de multidifusión puede ajustarse a la velocidad a la que podrá recibir la transmisión el cliente más lento o bien regular la velocidad en un nivel más alto y rechazar los clientes que no puedan mantener el ritmo. Por cuestiones de confiabilidad, WDS se ejecutará a la velocidad del cliente más lento que reciba la transmisión.
Si detecta que el rendimiento de la transmisión es más lento de lo esperado, ejecute wdsutil /Get-MulticastTransmission/Show-clients. Al hacerlo se mostrará el cliente maestro que está ralentizando la transmisión. A continuación, puede desconectar ese cliente, que volverá a usar SMB en lugar de multidifusión. Para consultar un script de ejemplo que desconecta automáticamente los clientes lentos, vaya a go.microsoft.com/fwlink/?LinkId=121961.
Para crear una transmisión por multidifusión, haga clic con el botón secundario en Imagen de instalación y seleccione Crear transmisión por multidifusión, o bien haga clic con el botón secundario en Transmisiones por multidifusión en la consola de WDS y seleccione Crear transmisión por multidifusión. Cuando cree la transmisión por multidifusión, puede crear una difusión automática o programada. La difusión automática resulta útil cuando tiene varios clientes que se conectan con regularidad y todos necesitan exactamente la misma imagen; los clientes nuevos se agregarán así pues automáticamente a la transmisión en curso que se inició para el primer cliente que solicitó una imagen de instalación. La difusión programada permite establecer un tamaño de grupo que, si se alcanza, provocará el inicio de una transmisión.
También puede establecer la transmisión para que se inicie a una hora específica. Una vez que los clientes se beneficien de la transmisión de multidifusión, podrá visualizarlos haciendo clic en el nombre de la imagen. En el panel derecho se muestran detalles específicos acerca de los clientes que se encuentran conectados a la transmisión.
Por lo general, los usuarios finales usarán la multidifusión desde el cliente de configuración de WDS. Existe, sin embargo, una utilidad de línea de comandos llamada WDSMCast que se incluye con el Kit de instalación automatizada (WAIK) de Windows Server 2008 y que permite solicitar un archivo .wim a través de una transmisión por multidifusión desde WDS. El archivo .wim debe transferirse en su totalidad y aplicarse al cliente, de modo que es recomendable que se asegure de que existe suficiente espacio en disco para almacenar y aplicar la imagen. El mes próximo hablaremos sobre cómo integrar WDSMCast en un proceso propio de implementación personalizado.

Registro en WDS
WDS es capaz de realizar tareas considerables de registro y seguimiento, si bien la mayoría de estas funciones aparecen deshabilitadas de forma predeterminada para ahorrar espacio. Hay dos tipos de registro de eventos: cuando un cliente escribe en el registro de eventos de Windows y escribir en registros de seguimiento para otros aspectos de WDS.
En Windows Server 2008, sin embargo, WDS sí presenta una considerable actividad de registro de forma predeterminada. Estos registros están disponibles en Herramientas administrativas | Visor de sucesos. Los registros de WDS aparecen en el Visor de sucesos en Registros de aplicaciones y servicios | Microsoft | Windows | Deployment-Services-Diagnostics. Lo práctico es que éstos son los mismos registros que aparecen al visualizar la función de WDS en la MMC (vea la figura 6).
Figura 6 Visualización de sucesos de WDS en el administrador de servidores (haga clic en la imagen para ampliarla)
El registro del cliente de WDS (que aparece en los registros de sucesos de la figura 6) puede iniciarse ejecutando WDSUtil con los siguientes argumentos:
wdsutil /wdsclientlogging /enabled:yes /logginglevel:info
También puede habilitar el registro de seguimiento en varios subcomponentes de WDS. Para configurar el seguimiento, establezca un valor del registro de DWORD en correspondencia en la clave o claves del registro que se muestran en la figura 7. Todos los registros de seguimiento se almacenan en \Windows\tracing. A continuación, deberá reiniciar el componente apropiado para que se inicie el registro.
Figura 7 Configuración del registro de seguimiento
Componente de WDS | Clave del registro | Valor del registro | Nombre del registro
Servidor | HKLM\SOFTWARE\Microsoft\Tracing\WDSServer\EnableFileTracing | 1 | wdsserver.log
Multidifusión | HKLM\System\CurrentControlSet\Services\WDSServer\Providers\WDSMC\TraceDisabled | 0 | wdsserver.log
Componentes de administración | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\WDSMGMT\EnableFileTracing | 1 | wdsmgmt.log
MMC | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\WDSMMC\EnableFileTracing | 1 | wdsmmc.log
WDS también dispone de contadores de rendimiento (descritos en go.microsoft.com/fwlink/?LinkId=121962) que podrá supervisar en caso de problema de rendimiento del sistema (o bien para llevar a cabo análisis de rendimiento del sistema con antelación). Como mencionamos anteriormente, obtendrá información más detallada cuando se encuentre con problemas mediante los modificadores /detailed, /verbose o /progress de WDSUtil.
Si tiene problemas con clientes de WDS que se conectan o interactúan con un servidor de WDS, el Monitor de red de Microsoft (Netmon) es una excelente herramienta para solventar este tipo de problemas. El Monitor de red puede descargarse en go.microsoft.com/fwlink/?LinkId=121491.

Otros aspectos
Hemos observado algunos aspectos que merece la pena comentar. El primero es la memoria: recuerde que el núcleo de WDS se basa en Windows PE 2.x. Esto significa que los clientes de WDS necesitan al menos 384 MB de RAM, lo que en la práctica se traduce en 512 MB para garantizar un rendimiento óptimo. Recuerde también que Windows PE 2.x no se puede arrancar en sistemas que no sean de Interfaz avanzada de configuración y energía (ACPI), lo cual no siempre quiere decir hardware antiguo. Existen informes de sistemas relativamente recientes que no son compatibles con ACPI.
Tenga en cuenta que estos sistemas tampoco serán compatibles con Windows Vista ni Windows Server 2008. Para los sistemas que no son compatibles con ACPI, deberá mantener un servidor de WDS o RIS Windows Server 2003 o anterior disponible con esos clientes de ensayo previo, o bien instalar Windows a través de un mecanismo no PXE.
Por último, tenga en cuenta que si quiere arrancar Windows PE 1.x desde su servidor, deberá usar también un servidor WDS o RIS Windows Server 2003 o anterior, ya que WDS en Windows Server 2008 no puede arrancar una imagen de Windows PE 1.x (RAMDisk o PXE).

Hasta ahora hemos profundizado en la historia de WDS, sus conceptos básicos, así como aspectos avanzados. El mes próximo repasaremos algunos escenarios personalizados de WDS, en concreto cómo interactuar con WDS y ajustarlo para realizar las tareas que desea que haga, a menudo sin aprovechar la configuración de WDS existente.

Wes Miller es jefe de productos técnicos senior en CoreTrace (www.CoreTrace.com), con sede en Austin, Texas. Anteriormente, trabajó en Winternals Software y como administrador de programas en Microsoft. Si lo desea, puede ponerse en contacto con Wes en la dirección technet@getwired.com.


Vigilancia de seguridad Contraseñas y tarjetas de crédito, 3ª parte
Jesper M. Johansson

Contenido
Sobrecarga de tecnologías de actualización
Mensajes incoherentes sobre seguridad
La clave está en las casillas de verificación
Una llamada a las armas
En los dos últimos números de TechNet Magazine he hablado sobre la forma en que los profesionales de la seguridad y el sector de la informática en general confunden a los consumidores y, en realidad, entorpecen el esfuerzo realizado para conseguir una seguridad eficaz. En las dos primeras partes de esta serie me centré en problemas como las soluciones que ofrecen información incorrecta a los consumidores, sobrecargan el
flujo de trabajo del inicio de sesión y enseñan comportamientos incorrectos. Hasta ahora he mostrado muchos ejemplos diferentes sobre cómo el sector, en su afán por parecer preocupado por la seguridad del consumidor, lo que ha hecho es empeorar la situación mucho más de lo necesario. En esta tercera y última parte voy a explicar cómo algunas de las tecnologías más importantes a disposición de los consumidores no están cumpliendo las expectativas que los consumidores debieran tener respecto a esas soluciones. Todo ello culmina en mi llamada a las armas.

Sobrecarga de tecnologías de actualización
Uno de los principios básicos (requisito imprescindible, de hecho) para permanecer seguro electrónicamente es mantener actualizado todo el software. Casi cada proveedor principal de software ahora tiene algún tipo de mecanismo semiautomático para mantener por lo menos parte de su software actualizado. Sin embargo, no es así de sencillo.
Primero, cuanto más software se tiene, más software se tiene que actualizar. Y cuantos más proveedores sean de los que obtiene software, más serán los mecanismos de actualización con los que tendrá que trabajar. Esto es un factor de confusión.
Por ejemplo, si deja los valores predeterminados, Internet Explorer® se actualizará solo. Pero Internet Explorer en realidad es un contenedor para otras tecnologías. La repercusión posible de eso se demostró en la conferencia CanSecWest en 2008, cuando Shane Macaulay usó una combinación de vulnerabilidades en Java y Adobe Flash para piratear un Mac. (En el momento de escribir este artículo no se conocían muchos detalles, ya que el defecto no se había divulgado.) En todo caso, mi argumento es que ninguna de estas tecnologías es un componente integrado y, sin embargo, las dos están disponibles en la mayoría de equipos porque se usan ampliamente en Internet. Ambas son un poco complicadas de mantener actualizadas; cada una tiene un mecanismo de actualización automático, pero ninguno de los dos se activa muy a menudo.
Además, la mayoría de usuarios finales no se dan cuenta de que las tecnologías están ahí y que necesitan actualizarse. En muchos casos, estas tecnologías se incluyeron en la imagen OEM del equipo que, a ojos del consumidor, no se distingue del sistema operativo. Por lo que respecta al usuario final, cuando Windows® Update dice que no hay actualizaciones, es que no hay actualizaciones.
El segundo problema es que los mecanismos de actualización suelen ser más complicados de lo necesario. Cualquier mecanismo de actualización que no tenga un modo completamente automático es probable que no se use mucho, porque los usuarios normalmente ignoran que deben ejecutar la herramienta de actualización. Además, en la mayoría de casos, el usuario debe ser administrador para instalar las actualizaciones. Y en una situación aún peor, el usuario debe ser administrador sólo para que se le notifique que hay una actualización disponible.
Por último, es cada vez más común que los proveedores usen tecnologías de actualización de software que implementan software que no tiene nada que ver con el instalado por el usuario, como barras de herramientas, etc. Las tecnologías de actualización de software han pasado de estar pensadas de forma muy específica para implementar actualizaciones de software a ser una manera de distribuir software adicional.
Dos casos muy visibles de esto son el servicio Microsoft® Windows Update (que se muestra en la figura 1) y Apple Software Update (que se muestra en la figura 2). Tanto Apple como Microsoft han elegido usar sus mecanismos de actualización no sólo actualizar software sino también para implementar software nuevo que el usuario no instaló originalmente.
Figura 1 Uso de Windows Update para implementar Silverlight (haga clic en la imagen para ampliarla)
Figura 2 Uso de Apple Software Update para distribuir Safari (haga clic en la imagen para ampliarla)
En el caso de Apple, se ofrece tanto iTunes como Safari aunque sólo se tenga instalado QuickTime. Es interesante destacar que están todos seleccionados de forma predeterminada.
En el caso de Windows Update, el último software nuevo implementado con el servicio de actualización es Silverlight™. Microsoft ha usado esta técnica en el pasado para distribuir software nuevo. Microsoft al menos no selecciona de forma predeterminada la instalación del software nuevo.
Este enfoque, distribuir software nuevo a través de un mecanismo de actualización, causa dos problemas a los usuarios. En primer lugar, muchos terminarán teniendo más software en su equipo que al principio. Como sabe, todo software de cualquier tipo tiene errores y algunos de esos errores pueden terminar siendo posibles vulnerabilidades de seguridad. En definitiva, algunas de esas vulnerabilidades se usarán en algún tipo de ataque. Como resultado, algunos usuarios serán atacados a través de software que no necesitan ni usan, pero que se implementó en el equipo a través de un mecanismo de actualización de software.
Otro efecto es que los usuarios pueden hacerse una idea equivocada acerca del valor de los mecanismos de actualización de software. Si los usuarios descubren que los mecanismos de actualización de software se usan para implementar software nuevo, en lugar de para actualizar, pueden llegar a verlos como un fastidio y dejar de usarlos. Imagínese cómo debe sentirse un usuario al ser atacado a través de una vulnerabilidad que proviene de un programa que nunca usa, pero que recibió a través de un mecanismo de actualización de software.
Hay pocas cosas más peligrosas para el mantenimiento y la seguridad del ecosistema tecnológico que los usuarios que pierden la confianza en las tecnologías que deben mantenerlos protegidos. Una vez que los usuarios pierden esa confianza, esas tecnologías empezarán a rechazarse y probablemente dejarán de usarse completamente. Si tecnologías críticas para la protección, como es el caso de las tecnologías de actualización, dejan de verse con buenos ojos, todo el ecosistema tecnológico estará en peligro. Proteger este ecosistema es el motivo por el que Microsoft distribuye actualizaciones de seguridad incluso en equipos que se sabe que ejecutan software pirateado.
En comparación, respeto sinceramente la interfaz de actualizaciones clara y directa de Mozilla Firefox, que se muestra en la figura 3. Espero sinceramente que Mozilla continúe evitando la tentación de distribuir software adicional a través de su herramienta de actualización de software.
Figura 3 Interfaz de actualización de software para Firefox, una de las más claras del sector (haga clic en la imagen para ampliarla)

Mensajes incoherentes sobre seguridad
Sería bueno que el sector se decidiera a transmitir un mensaje común a los consumidores. Aunque la competencia en el sector es esencial, los consumidores necesitan saber lo que la seguridad debería significar para ellos. Por desgracia, no pueden hacerlo si el sector sigue enviando mensajes contradictorios. Francamente, me conformaría con que las empresas fueran coherentes en sus propios mensajes.
Aunque el sector probablemente nunca se decidirá por un mensaje común, por lo menos es necesaria la coherencia y la honradez en las comunicaciones. Dada la importancia crítica de asegurarse de que los clientes continúen confiando en las tecnologías de seguridad, es necesario que el sector en su totalidad mejore su modo de actuar.
De forma similar, también nosotros necesitamos preguntarnos qué es lo que ofrece un valor real hoy día. Por ejemplo, no creo que el software antivirus sea hoy en día tan eficaz ni vital como el sector puede querer hacernos creer. Pongamos por ejemplo el equipo que mi hijo de siete años usa y el equipo de mi cocina. Ambos tienen instalado software antivirus y en los tres años desde que se instalaron, ninguno ha mostrado alarma de ningún tipo. No estoy diciendo que se deba abandonar el software antivirus (en este momento, es un componente que forma parte del núcleo del ecosistema tecnológico). Está claro que si elimináramos de repente todo el software antivirus, los atacantes se aprovecharían rápidamente de ello y empezaríamos a ver más infecciones.
La clave está en que el sector necesita pensar en las funciones que los usuarios necesitan realmente en sus productos de seguridad, la eficacia de estas características y la forma en que las compañías pueden comunicar estas necesidades y valores a los consumidores. La situación actual es que los usuarios reciben demasiados mensajes contradictorios, exagerados y, a menudo, falsos acerca de la seguridad.

La clave está en las casillas de verificación
Un ejemplo, el sector del software de seguridad está centrado en sus conjuntos de programas. Hoy en día, el software de seguridad se distribuye casi exclusivamente en forma de agrupaciones de características aparentemente no relacionadas. Y prácticamente no hay información sobre cuáles de esas características necesitan realmente los usuarios.
Esto parece tener como resultado una carrera para ver quién marca más casillas de verificación. Aunque las listas de comprobación son una manera conveniente de comparar productos, también pueden ocasionar la inclusión de características que no son necesarias, deseables y que no tienen ningún sentido. Las figuras 4 a 7 muestran cuatro listas diferentes de marcas de verificación de cuatro proveedores de software de seguridad diferentes. ¿Es seguro asumir que el producto con 17 marcas de verificación es superior a uno con sólo 10 marcas?
Realmente estas cifras me parecen bastante divertidas. En la figura 4, el producto recibió una marca por ser una versión nueva. Y el producto de la figura 5 recibe una marca porque, según lo que dice la compañía, "detiene ataques de sitios web infames". El producto de la figura 6 obtiene puntos extra porque "protege a los niños conectados". Obviamente, nadie desea un producto que no puede proteger a los niños. El ganador, sin embargo, obtiene el premio a la creatividad por incluir características como la limpieza del registro y la desfragmentación del disco duro en un conjunto de seguridad. Lo primero no se suele necesitar y lo último ya está integrado en el sistema operativo. De hecho, el sistema operativo Windows ya incluye soluciones para 15 de las 17 marcas que se muestran en la figura 7.
Figura 4 Este producto de gama alta sólo tiene 10 marcas de verificación (haga clic en la imagen para ampliarla)
Figura 5 Este producto con 11 marcas debe ser mejor (haga clic en la imagen para ampliarla)
Figura 6 Espere, este tiene 12 marcas (haga clic en la imagen para ampliarla)
Figura 7 Pero este producto con 17 marcas debe ser la mejor solución, ¿no? (haga clic en la imagen para ampliarla)
Aquí podemos apreciar algunas tendencias poco tranquilizadoras. Estos productos no sólo duplican la funcionalidad que ya está incluida en el sistema operativo (omitiendo ese hecho en su publicidad), sino que también hacen afirmaciones completamente falsas. Por ejemplo, ningún software de seguridad del mundo puede detener realmente los ataques de ninguna parte, sólo pueden ayudar a evitarlos. Tampoco hay ningún producto que pueda ocultar realmente su presencia de los atacantes.
El problema es que el negocio de la seguridad del software se ha basado en gran parte en proteger a los usuarios de vulnerabilidades provocadas por productos creados por otros proveedores. Pero esos proveedores mejoran constantemente para proteger a sus propios clientes y, como resultado, el sector del software de seguridad ve amenazado su modelo de negocio. El sector del software de seguridad tiene realmente mucho que ofrecer a medida que surgen nuevos riesgos, pero los proveedores necesitan ayudar a los clientes a administrar el riesgo y no simplemente protegerlos de amenazas que realmente ya no existen.

Una llamada a las armas
Si hay una cosa que me gustaría haber transmitido a los lectores de esta serie de tres artículos es que como sector necesitamos estar al mismo nivel que nuestros usuarios y clientes. Necesitamos explicar los riesgos y la forma como los usuarios pueden resolverlos. Y, por último, necesitamos empezar a equipar a la gente para que se protejan ellos mismos.
Lo que más me preocupa de todas estas "soluciones" es que hay una posibilidad grave de que a largo plazo sean responsables de degradar la seguridad. Si los usuarios, e incluso administradores de TI, creen realmente que estos productos van a resolver riesgos de seguridad verdaderos, especialmente todos los riesgos que dicen engañosamente resolver, podemos perder la oportunidad de enseñar a la gente a protegerse a ellos mismos realmente.
Tomemos como ejemplo el sistema de autenticación por contraseñas. Si los usuarios creen que los complementos deficientes para los sistemas basados en autenticación de contraseña de los que hablé en la primera parte de esta serie realmente los protegen, pasarán a relajarse y a usar contraseñas aún más deficientes. En los peores casos que he descrito en esta serie, la tecnología en realidad obliga al usuario a usar una seguridad más deficiente de la que se hubiera usado si la tecnología nueva no se hubiera implementado. Esto significa que cuando los usuarios malintencionados averigüen cómo derrotar estos sistemas, cosa que a menudo no resulta complicada, estaremos en una condición todavía peor que la actual. Eso podría provocar un problema de confianza considerable que podría hacer que la gente deje de usar las soluciones con un valor auténtico.
Necesitamos actuar ahora para proteger el ecosistema tecnológico que sostiene nuestros negocios. Evidentemente, es necesario que apoyemos la innovación, pero debemos evitar caer en la trampa de la innovación por la innovación, ya que podría interponerse en el análisis de los riesgos reales. De lo contrario, tendríamos una seguridad ficticia que, al final, terminaría estallándonos en las manos.
Lo mismo puede decirse de los otros ejemplos que he mencionado. Tomemos como ejemplo la parafernalia gráfica inútil de la seguridad. No hace ningún bien a los usuarios, les proporciona un falso sentido de la seguridad y permite que los proveedores de servicio en línea realicen optimizaciones que perjudican de forma indirecta a los usuarios. Mientras tanto, el costo neto para proporcionar información apropiada a los usuarios sería de sólo algunos miles de dólares, en los casos más extremos, tal vez de decenas de miles. ¿Es realmente demasiado pedir que los proveedores gasten esa pequeña cantidad de dinero en proteger a sus clientes y su negocio?
Esto tiene muchas implicaciones. Primero, debemos terminar con la percepción de que los usuarios son incapaces de tomar decisiones y que se debe evitar que lo hagan. Los usuarios no son incapaces de aprender para tomar decisiones. Después de todo, estos usuarios han tomado ya muchas decisiones, como la compra del equipo, usar su sitio o adquirir uno de sus productos o servicios. De igual forma que la gente necesita aprender a manejar un coche sin riesgos, también deben aprender a usar un equipo sin riesgos. Hoy en día, los ataques se dirigen a los usuarios individuales y no se puede depender de la tecnología para tomar decisiones. En lugar de ello, las tecnologías de seguridad deben ser sistemas de soporte técnico de decisión y ofrecer la información correcta en el momento oportuno para permitir al usuario tomar decisiones inteligentes.
Algunas de las peores interfaces de usuario del mundo proceden de soluciones de seguridad porque las aplicaciones se han diseñado para ocultar cualquier clase de toma de decisiones por parte del usuario o para transferir todos los datos disponibles (de forma bastante hostil) al usuario. Ningún enfoque funciona. El primero pone en peligro a los usuarios porque no se puede depender en la tecnología para tomar la decisión correcta. Y si se percibe que la tecnología dificulta los objetivos empresariales del usuario, no tardará mucho en ser deshabilitada. El segundo enfoque, por otro lado, falla porque la gente no desea que se la moleste con direcciones IP, ID de proceso, ni con otros datos que no tienen sentido para ellos. Sólo quieren saber lo que el equipo hace con sus contraseñas y tarjetas de crédito. Después de todo, en eso consiste realmente la seguridad.

Jesper M. Johansson es un arquitecto de software que trabaja en el campo del software de seguridad y colabora como editor en TechNet Magazine. Posee un doctorado en sistemas de información de administración, más de 20 años de experiencia en el ámbito de la seguridad y es un MVP de Microsoft en seguridad empresarial. Su último libro es Windows Server 2008 Security Resource Kit.


Notas de campo Innovación desde dentro
Romi Mahajan

En el libro The Future of Management, Gary Hamel, conocido gurú de la administración y estratega de los negocios, sostiene que la ventaja comparativa a largo plazo proviene de la creación de una cultura de la innovación que a la vez es un producto de la evolución de las tecnologías de administración. Mientras que el sector se ha innovado y se ha reinventado en innumerables ocasiones y el múltiples áreas, la mayoría de las compañías todavía están sumidas en una cultura de la administración basada en jerarquías. Esto impide que surjan culturas realmente innovadoras simplemente porque no se propician resultados decentes en lo relativo a la creatividad y el capital humanos.
Dichas jerarquías son anatemas para la innovación, mientras que la creatividad humana, cuando se le da rienda suelta, es el combustible fundamental para la innovación a largo plazo. Cuando se reprime la creatividad humana, más del 80 por ciento de los trabajadores no se sienten comprometidos con su trabajo. Hamel cree que esto no sólo es un fracaso empresarial sino también ético.
En un nivel muy básico, esto debería ser una clara llamada de atención al sector con el fin de desterrar el uso excesivo de jerarquías. En su esencia, el argumento es fundamentalmente antiburocrático. El poder de la toma de decisiones no debería recaer en administradores que no están al corriente de lo que ocurre ni en ejecutivos ricos.
Hamel considera que la administración es la fuente de innovación, no los servicios de TI. Al fin y al cabo, los servicios de TI se pueden subcontratar, por lo tanto, ¿cómo pueden generar ventaja comparativa? Si los servicios de TI no son la fuente de innovación, y el aumento de productividad, el tiempo de actividad, la confiabilidad, la rápida instalación de nuevas aplicaciones y el inicio de sesión único (así como otros de esta misma índole) no pueden generar ventaja comparativa, entonces ¿de qué nos preocupamos tanto?
¿Está dispuesto a adentrarse en lo más profundo de sus organizaciones y sus compañías de TI como si fueran una sola para ver si, quizás, Hamel tiene algo de razón? ¿Cómo puede estar seguro de que los servicios de TI no se consideran una mercancía?
Incorporando lo más destacado de los conceptos de Hamel y usándolos para ayudar a las organizaciones de TI a proteger su futuro como concentradores de innovación, he desarrollado una teoría denominada Innovación desde dentro. El uso conjunto y óptimo de la creatividad humana y el capital es la clave para conseguir una ventaja comparativa sostenible; asimismo, las organizaciones de gran envergadura deben hacer que la innovación sea intrínseca a su función. Las organizaciones deben dedicarse a la comunidad, no a la burocracia. Y lo que es más importante, la administración demasiado a menudo obstruye el camino de la innovación verdadera: la auténtica innovación es posible sólo cuando la administración evoluciona.
Echemos un vistazo a las organizaciones de TI. El personal de TI lo suelen formar personas inteligentes, dedicadas y dispuestas a tener repercusión. A menudo se les exige más con menos recursos, así que pasan la mayor parte del tiempo realizando tareas comunes, lo que les deja poco tiempo para la innovación.
Mi concepto Innovación desde dentro aplica la teoría de Hamel al campo de los servicios de TI. Los principios fundamentales son:
  • Dada la creatividad inherente al personal de TI, en nuestro propio interés debemos asegurar un modelo de administración de TI que use este potencial.
  • La innovación surge de un proceso sistemático e irreverente que se compone de ideas, pruebas, errores y revisiones, un proceso que es inherente a la TI.
  • Cuando se incluye a la comunidad a lo largo y a lo ancho, las soluciones técnicas surgen solas. Los servicios de TI pueden liderar el proyecto, empezando por ellas mismas.
  • En los servicios de TI, las personas son las únicas fuentes de ventaja comparativa.
  • La administración de TI debe evolucionar y dejar de centrarse en los proyectos y los presupuestos para centrarse en un nuevo e interesante objetivo, la administración de la innovación.
  • Los servicios de TI no deben preocuparse por reducir los costos, sino por obtener grandes resultados.
¿Está dispuesto a creer en esta teoría? ¿Podemos aplicar el concepto de Innovación desde dentro y demostrar que las organizaciones de TI son el lugar adecuado para realizar este fantástico experimento? ¿Están preparados los administradores para desprenderse del poder y dedicarse a sus propias comunidades? ¿Está preparada la administración para abandonar su poder e incorporar nuestro talento colectivo?

Romi Mahajan es director de marketing de Ascentium Corporation. Antes de trabajar para Ascentium, pasó más de siete años en Microsoft, donde el último puesto que ocupó fue el de director de marketing de plataformas y audiencia técnica. Los trabajos de Romi sobre tecnología, política, economía y sociología se publican en múltiples medios.


Confidencial de Windows Windows 95 desconectado
Raymond Chen

Aunque los programas de 32 bits para Windows® 95 podían usar el compilador de 32 bits habitual y los programas de 16 bits podían usar el compilador de 16 bits habitual, Windows 95 necesitaba un compilador especial, uno que comprendiera ambos mundos de 32 y 16 bits, y que pudiera salvar las diferencias. Windows 95 también necesitaba un vinculador personalizado que supiera combinar estos dos tipos de código y necesitaba un vinculador personalizado para los VxD (el formato de controlador para Windows 95).
El equipo de Windows 95 confió en la división de lenguajes y herramientas para que le proporcionaran estos compiladores y vinculadores especiales. Estoy seguro de que la división de lenguajes consideró que se trataba de una solicitud extraña: "¿Podríais crear un compilador que haga X, Y y Z, y que se va a usar para compilar únicamente dos DLL en toda su vida?" Es cierto. Pero, después de todo, se trataba de dos DLL muy importantes.
A pesar de lo absurdo que parecía la solicitud, la división de lenguajes y herramientas cumplió y el compilador y el vinculador de alta especialización pasó a formar parte del proceso de creación de Windows 95. Evidentemente, el compilador no estuvo completo de buenas a primeras. El equipo de Windows recibió una versión preliminar y, después, actualizaciones periódicas a medida que se implementaban nuevas optimizaciones y se corregían los errores.
Un día, la compilación de Windows 95 inesperadamente empezó a ir muy lenta. Un archivo que normalmente tardaba unos segundos en vincularse tardó varios minutos. El archivo se generaba correctamente, pero tardaba muchísimo. Y no sólo sucedía en el equipo de un desarrollador, el problema afectaba a todos los del equipo. ¿Nuestro código había producido algún caso patológico en el vinculador? ¿Nos habíamos tropezado con un error del vinculador?
Después de realizar algunas tareas de depuración, identificamos el origen del problema. La versión más reciente del vinculador contenía código de diagnóstico que los encargados de los lenguajes se habían olvidado de quitar antes de entregar el código al equipo de Windows. Este código de diagnóstico registraba su salida en un archivo que se almacenaba en un equipo que se encontraba en la oficina de un miembro del equipo del compilador. Y el equipo estaba apagado. Esto me recuerda a Leslie Lamport, que en una famosa descripción explicaba que un sistema distribuido es aquel que no puede trabajar porque un equipo desconocido está apagado.
Esa versión del vinculador se había estado ejecutando felizmente durante semanas. Cada vez que alguien intentaba vincular un VxD al compilar Windows 95, se realizaba una actualización en el archivo que se encontraba en el equipo de ese desarrollador. Mientras el equipo estuvo encendido y conectado a la red, nadie se había dado cuenta. Pero un día el equipo se apagó y todo iba muy lento.
Una vez identificado el problema, los encargados del compilador no tardaron en dar al equipo de Windows una revisión que quitaba el código de diagnóstico del vinculador.
Esta historia tiene distintos desenlaces según quién la cuente. Cuando la cuento yo, el desenlace es: "Y ese desarrollador del compilador pasó al equipo de Windows y acabó siendo mi jefe". Suelo disfrutar contando esta historia como una broma amable.
Sin embargo, si es mi jefe quien cuenta la historia, el desenlace es muy distinto: "Y resulta que yo no había escrito el código de diagnóstico. Fue uno de mis colegas, que decidió que en vez de llenar su equipo con información de diagnóstico, llenaría el mío".

En el sitio web de Raymond Chen, The Old New Thing, y en su libro homónimo se trata la historia de Windows y la programación Win32. Su ADN está lleno de código muerto.