JASoft.org

El blog de José Manuel Alarcón Aguín. Programación web y mucho más...

MENÚ - JASoft: JM Alarcón

Protege tu PC y tus discos externos de robos y pérdidas con TPM y Bitlocker

Cualquiera que maneje una computadora, especialmente si es un portátil, corre el riesgo de perderla o de que se la roben. Incluso un ordenador de sobremesa puede verse comprometido y hay bandas que roban en las empresas solo por los datos que pueden sacar de los PCs. Por ello es importante proteger los datos de cualquier sistema portátil que manejemos, en especial si se trata de una computadora de la empresa. Ya no solo por la información que tengamos, sino porque si perdemos o nos roban un ordenador empresarial, el asaltante podría tener acceso a toda la red interna de la organización. Además, si almacenamos claves u otra información valiosa en la maquina (nunca debemos hacerlo sin cifrar esa información) es todavía peor. Si tienes acceso físico a una maquina es bastante sencillo poder saltarse toda la seguridad y acceder usando cualquiera de las cuentas de usuario existentes, cambiándoles la contraseña. También es posible extraer el disco duro, pincharlo a otro equipo y utiliza... [Más]

Cómo cambiar el orden de los algoritmos criptográficos de SSL en Windows Server / IIS

Hace poco veíamos cómo solicitar un certificado digital para SSL usando un algoritmo de hash moderno, y no el que se usa por defecto en IIS.En esta ocasión vamos a ver cómo podemos modificar en Windows Server, y por lo tanto en Internet Information Server, el orden de preferencia de los diferentes conjuntos de algoritmos de cifrado disponibles. De este modo nos cerciorarnos de que los más modernos y seguros van primero en la lista y por lo tanto se les da preferencia a la hora de cifrar las comunicaciones, obteniendo un servidor más seguro.La cosa es bastante sencilla. Sólo hay que saber en dónde tocar.Lo primero que tenemos que hacer es abrir el editor de políticas de seguridad local del servidor. Para ello puedes intentar escribir:gpedit.smcen una línea de comandos o en el diálogo de ejecutar (Windows+R), pero lo más probable es que te aparezca este mensaje:El motivo es que necesitas usar una cuenta con privilegios elevados para poder cambiar los ajustes de seguridad. Así que lo mejo... [Más]

Cómo solicitar certificados con SHA-2 en lugar de SHA-1 en IIS y Windows Server 2008

Dentro de las tareas criptográficas necesarias para realizar comunicaciones seguras están los algoritmos de resumen digital o hashing. Uno de los más utilizados desde hace varios lustros es el algoritmo SHA-1. El problema es que este algoritmo ha sido ya vapuleado por algunos expertos en seguridad a partir de 2004, y hoy en día se considera inseguro, por lo que la mayor parte de fabricantes de navegadores y otros sistemas han anunciado que irán dejando de soportarlo paulatinamente: Microsoft Google Mozilla Lo que hay que hacer es utilizar SHA-2 en cualquiera de sus 6 variantes, y más en concreto se suele utilizar SHA-256. El consenso general es que a partir del día 1 de Enero de 2017 los navegadores que se encuentran con una conexión segura SSL basada en el algoritmo SHA-1 pasarán a considerarla insegura y mostrarán un aviso de seguridad. Es más, hoy en día esto ya está ocurriendo pues... [Más]

Acceder a la herramienta de configuración de ASP.NET en Visual Studio 2013

Hasta la versión 2012 de Visual Studio disponíamos de un acceso directo muy cómodo desde el propio entorno que nos permitía lanzar la herramienta de configuración de ASP.NET: De esta manera abríamos la utilidad que nos permitía configurar la seguridad de la aplicación: usuarios, roles, proveedores para éstos, etc... En Visual Studio 2013 y .NET 4.5 se ha dado preferencia a las bibliotecas de ASP.NET Identityen detrimento del clásico sistema de Membership. Por ello, aparte de basar las nuevas plantillas de proyecto en estas nuevas bibliotecas de autenticación y autorización, se ha retirado el acceso directo a la herramienta anterior (y no se proporciona tampoco una herramienta análoga para lo nuevo, debiendo recurrir a la implementación por defecto incluida en las plantillas). Sin embargo, si necesitas (o prefieres) utilizar el antiguo sistema de autenticación y te interesa acceder a la herramienta, todavía puedes hacerlo, aunque no te resultará tan cómodo. El acceso se basa en el... [Más]

Suplantación de usuarios en IIS y ASP.NET: un resumen detallado

A la hora de desplegar en un entorno real de producción, para ponerlas a disposición de todo el mundo, las aplicaciones web creadas con ASP.NET se albergan en un servidor web. Por regla general éste será Internet Information Server (IIS), incluido en las versiones de servidor de Windows. IIS no es más que otra aplicación que se ejecuta sobre el sistema operativo, por lo que es Windows el que se ocupa del nivel más bajo de la cadena de la seguridad. Por ello conviene tener claro que la última palabra a la hora de conceder acceso a un recurso físico del sistema la tiene el propio sistema operativo, no IIS ni ASP.NET. Contextos de seguridad En Windows, cada proceso se ejecuta dentro de su propio contexto de seguridad. Cuando un proceso accede, por ejemplo al sistema de archivos NTFS, los permisos se le otorgan en función del contexto en el que se ejecute. Normalmente si un proceso lanza otro subproceso éste ... [Más]

Propagación y herencia de permisos: la clase FileSystemAccessRule

La información que ofrece en ocasiones MSDN sobre la plataforma .NET se puede decir, eufemísticamente, que "no es todo lo buena que debiera ser". Un buen ejemplo de ello es la documentación de la clase FileSystemAccessRule y más en concreto lo que se refiere a los indicadores sobre propagación y herencia de permisos en el acceso al sistema de archivos. Consideremos este ejemplo. Necesitas controlar desde tu aplicación el acceso a un carpeta llamada "docs" de forma que te asegures de que el usuario "DOMINIO\Usuario" tendrá acceso de lectura a la carpeta y todas sus subcarpetas (y las hijas de éstas), pero sin embargo no tendrá acceso a ninguno de los archivos contenidos en éstas. Dejemos de lado la utilidad exacta de esto. Lo que quiero es mostrar lo retorcidas que han puesto las opciones correspondientes en la plataforma .NET :-S El código en C# que necesitaríamos incluir es este: 1: DirectorySecurity dirSec = Directory.GetAccessControl(@&quo... [Más]

Proveedores universales de ASP.NET: Membership y Roles fuera de SQL Server

Como todo programador de ASP.NET sabe, la mayor parte de las API de esta plataforma de desarrollo web están basadas en el modelo de proveedores. Para explicarlo de manera rápida, básicamente esto significa que entre la funcionalidad que el programador utiliza y el almacenamiento relacionado con ésta, existe un elemento intermedio llamado "proveedor" que desacopla ambas partes. De esta manera, si queremos utilizar otro tipo de almacenamiento basta con cambiar el proveedor en la configuración y listo. no es necesario tocar el código en absoluto, por lo que resulta muy cómodo y útil. El siguiente esquema (sacado de MSDN) ilustra la arquitectura de este modelo: Como vemos muchos servicios como los de seguridad (Membership y Roles), la personalización (Profile) u otros como el almacenamiento de la sesión o los WebParts, están basados en este modelo, representados por las cajas de la parte superior. Así, la información de los usuarios, los roles, los perfiles, las sesiones, etc... [Más]

Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación

Este pasado martes impartí una charla en el grupo de usuarios de ASP.NET de España (AUGES) titulada como este post: “Seguridad de aplicaciones Web: las técnicas más interesantes para que no hackeen tu aplicación” El resumen de la misma es el siguiente: Programar es mucho más que la simple creación de aplicaciones que cumplen con la funcionalidad para la que fueron diseñadas. Existen otras muchas consideraciones que hacer y multitud de características tan importantes como la propia funcionalidad que se deben tener en cuenta: rendimiento, extensibilidad, facilidad de mantenimiento, etc... entre las que destaca especialmente la seguridad del código que se escribe. De poco o de nada sirve una aplicación que lleva a cabo su cometido principal pero que permite que casi cualquiera pueda acceder a la información que supuestamente protege o que, debido a la escritura de código descuidado, un competidor desleal impide su funcionamiento cuando más se necesita. Y no, no llega con tener... [Más]

Evitar que se publiquen las descripciones de nuestros servicios Web

Si disponemos de un servicio Web en nuestro servidor que está destinado a ser utilizado por nuestras aplicaciones pero no queremos facilitar que otros programadores le puedan sacar partido: ¿para qué queremos dejar publicado su archivo de descripción WSDL? El WSDL (Web Services Description Language) describe cómo es un servicio Web: qué tipos usa, qué métodos expone, etc… y es lo que usan Visual Studio y otras herramientas para crear un proxy que nos permita usar un determinado servicio. Se puede visualizar para cualquier servicio de .NET añadiendo ?wsdl al final de su URL, por ejemplo: http://www.miservidor.com/Servicios/miServicio.asmx?wsdl Cuando añadimos una nueva referencia Web a nuestro proyecto, en el diálogo que aparece podemos inspeccionar el servicio gracias a su descripción WSDL: Sin ese WSDL no podríamos inspeccionarlo ni tampoco añadir la clase proxy correspondiente. Un proxy es una serie de clases .NET que actúan de intermediarias entre nuestro código y el servi... [Más]