domingo, 1 de abril de 2012

¿Todavia usas tu equipo todo el tiempo como admin?

En esta época donde hay tantas amenazas y hay miles de personas súper capaces que están trabajando del lado del mal, y que están pensando todo el tiempo como entrar sin autorización a los sistemas, la seguridad pasa a tomar un papel muy importante.
Sin importar que sistema operativo uses, estas en riesgo. Incluso con software original actualizado, con antivirus que también se actualizan prácticamente todos los días, siguen apareciendo fallas de seguridad en los sistemas todos los días, que permiten que se pueda infectar un equipo, por ejemplo, con solo entrar a un sitio web…
En esta época, el malware ha evolucionado. Ya no te va a poner un cartelito diciéndote “I Love You”, o haciendo que los caracteres de tu pantalla se caigan, tal cual hacían los primeros virus. Ahora van atrás del dinero, atrás de tus cuentas bancarias, atrás de tus passwords y credenciales de acceso.
Los procesadores actuales son tan potentes que en muchísimos casos podemos estar infectados y nuestro equipo funcionará mejor que nunca. Estamos en una época complicada.

Una de las premisas básicas de seguridad, es no usar para el trabajo diario una cuenta con privilegios de administrador, incluso en aquellos equipos que usamos para el desarrollo de aplicaciones.
Como usuario tendremos la ventaja de que trabajaremos y navegaremos la web en un ambiente mas seguro: si ingresamos a algún sitio web, o insertamos un pen drive o algún otro dispositivo en nuestro equipo que tenga código malicioso siempre las posibilidades de que ese código se llegue a ejecutar serán menores, ya que se nos pedirá elevar los permisos, y si estamos un poco despiertos, nos daremos cuenta que no tenemos por qué elevar los derechos de usuario solo por el hecho de insertar un pen drive por ejemplo.
Luego, como desarrolladores también tenemos ventajas. Es que en tiempo de desarrollo, y desde la primer línea de código, nuestra aplicación se ejecutará en un ambiente con pocos privilegios, por lo cual vamos a ir solucionando y evitando los posibles problemas de permisos mientras desarrollamos la misma, logrando así que la aplicación se ejecute correctamente sin que nuestros usuarios tengan que elevar sus privilegios al momento de la implementación... Poder evitar eso es una gran ventaja, ya que si nuestra aplicación tiene algún problema de seguridad, se ejecutara con pocos privilegios y el atacante tendrá menos chances de lograr su objetivo.
Si bien las ultimas versiones de Visual Studio y SQL Server se ejecutan perfectamente sin la necesidad de tener que ejecutarse con privilegios elevados (Y cuando hace falta avisa), se me ocurrió dejar documentado aquí, un par de soluciones a problemas que se me plantearon a la hora de trabajar en un equipo sin privilegios de administrador.

1) El Detach de SQL server cambia los permisos ACL de los archivos:
Por una cuestión de seguridad, cuando uno hace un Detach de una base de datos, SQL quita cualquier otro permiso que exista en los archivos tanto mdb como log, y deja como único usuario con acceso a esos archivos al usuario que hizo el detach. Esto es así por diseño, y me parece bien, pero sucede que en mi equipo de desarrollo, tengo varias copias de una misma base de datos, (cada una con datos de distintos clientes), entonces tengo un script para hace un detach y un attach de esas copias de la base para poder probar mi sistema con datos de distintos clientes. La cuestión es que cada vez que hacia un detach, se me cambiaban los privilegios de los archivos, y esto era el causal de que mas tarde, mi sistema de backups no pudiera hacer un respaldo de dichos archivos ya que daba un error de acceso denegado.
Lo solucione ejecutando este script antes de hacer el backup:

ICACLS "C:\CarpetaDondeTengoMisBasesSQL\*.*" /inheritance:e /grant:r "Admin":F /T

Este comando, vuelve a dejar mis archivos como los tenia inicialmente, (con herencia de permisos desde la carpeta padre), y dando permiso total al usuario Admin, que es el usuario con el cual se ejecuta el backup.

2) En Windows 7, las tareas programadas que se ejecutan en modo “impersonate” es decir, que deben ejecutarse como otro usuario, no funcionan por defecto si no se es administrador.
En este caso mi backup que hace una copia completa de mi disco incluyendo los archivos en uso como los .pst de Outlook o las bases de datos de SQL, debe ejecutarse como un usuario con mas privilegios y no como el usuario que yo uso todo el tempo. La cuestión es que cualquier tarea programada que deba ejecutarse como otro usuario, no funciona si ese otro usuario no es administrador.
Asi que para lograr que mis tareas programadas funcionen con un usuario que no es administrador, hice lo siguiente:

a) Inicie el Local Group Policy Editor, iniciando una ventana de comando como administrador y ejecutando: gpedit.msc
b) Navegue hasta: Local Computer Policy -> Windows Settings -> Security Settings -> Local Policies -> User Rights Assignment
c) En la policy: “Log on as a batch job”, agregue a mi usuario no administrador, es decir el usuario a nombre de quien se ejecutará la tarea programada.

Luego de realizar esos cambios, logré que todos mis procesos se ejecutaran correctamente en mi equpo de desarrollo, sin tener que elevar los permisos de usuario.

Conclusiones: Como decía al inicio de esta entrada, el mundo actual es muy inseguro, debemos tomar precauciones y cualquier especialista en seguridad nos dará como primer premisa que no se debe usar el equipo como administrador, incluso en los equipos de desarrollo. Salvo en las empresas donde haya un administrador de red al cual realmente le importe la seguridad, la verdad es que lamentablemente se ve todo el tiempo que los usuarios tienen derecho a todo…
Por otro lado creo que Windows debería hacer algunas cosas más fáciles. Creo que si un usuario final, que usa su equipo solo para cosas básicas como navegar por la web, usar paquetes de ofimática, bajar correo electrónico, usar redes sociales, etc, tiene que ponerse a renegar con tantas cosas como por ejemplo el editor de políticas de seguridad para lograr usar su equipo como usuario estándar, es lógico que hará la mas fácil, se pondrá como administrador y ya..

Pero bueno, para estar seguro hay que comprometerse y trabajar un poco… Llevado a la vida real, la cosa seria mas fácil si no tendríamos que poner rejas ni alarmas en la casa, pero aunque cueste tiempo y dinero tenemos que hacerlo para estar mas seguros, aquí pasa lo mismo, ¿no?

domingo, 3 de julio de 2011

Presentación ASP.Net MVC 3 - Run Web Camp Córdoba

Durante el mes de mayo de 2011 se realizó en la UTN Cordoba (con la ayuda de Grupo de Usuarios de Microsoft), el Run Web Camp, donde participé como orador, junto a los amigos Enrique Dutra y Daniel Laco. Aquí dejo algunas fotitos y la presentación que me toco dar.