Hace una semana hablamos sobre la seguridad en PowerShell, la línea de comandos más potente de Microsoft. En la entrada anterior se trataron las distintas políticas que dispone esta potente línea de comandos.
Hoy hablaremos sobre los ámbitos de ejecución de dichas políticas de seguridad, pero ¿Qué aportan exactamente los ámbitos? Los ámbitos aportan riqueza y distinción a las políticas de ejecución, es decir, se puede especificar que una política es válida para un ámbito en concreto, por ejemplo para el ámbito de usuario o de equipo global. Es algo muy similar a las ramas del registro de Windows. En la versión 2 de PowerShell encontramos los siguientes ámbitos:
- Local Machine: La política de ejecución que se configure para este ámbito afectará a todos los usuarios de la máquina. En otras palabras se almacena de manera persistente en la rama del registro HKEY_LOCAL_MACHINE.
- Current User: La política de ejecución afecta solamente al usuario actual, se almacena en el registro de Windows, pero en la parte correspondiente al usuario.
- Process: La política de ejecución afecta solamente al proceso en curso. No es un ámbito persistente, como si lo son los anteriores.
La prioridad en las que se ejecutarán estas poíticas vienen determinadas por el orden siguiente: process -> current user -> local machone, por lo que la más prioritaria es la de process. Solamente cuando el ámbito process esté declarado con una política undefined se valorará la política current user, y solo cuando ésta tamnién esté undefined se aplicará local machine. Si todos los ámbitos se encuentran con políticas undefined, se ejecutará la política más restrictiva, es decir, restricted.
Se puede ejecutar los cmdlets get-executionpolicy para visualizar las políticas aplicadas a los distintos ámbitos. Para aplicar una política a un ámbito se debe utilizar el parámetro scope e indicar el ámbito, utilizando el parámetro set-executionpolicy.
ACLs
Los cmdlets get-acl y set-acl son utilizados para la gestión de permisos en el sistema de archivos NTFS. Todo esto puede ser realizado desde PowerShell de manera sencilla y eficaz. Los sistemas de archivos NTFS disponen de un descriptor de seguridad, SD, el cual determina si un usuario dispone de permisos o no para realizar ciertas acciones. Con get-acl se puede leer los permisos que se tiene sobre un directorio o archivo, por defecto se obtiene el owner, usuarios y el tipo de acceso que éstos disponen.
Con set-acl se aplican nuevos permisos a los ficheros, su utilización es sencilla. Por ejemplo para clonar los permisos de un directorio y aplicarlo sobre otro se realizaría de la siguiente manera:
$acl = get-acl <fichero o dir>; set-acl <nuevo fich o dir> $acl
En el libro de PowerShell: La navaja suiza de los administradores de sistemas se puede obtener más información sobre la seguridad aplicada con esta línea de comandos.