Los sistemas operativos han desarrollado un conjunto completo de medidas de seguridad para mitigar y detectar actividades maliciosas en varias etapas. Subsistemas de autenticación, autorización, controles de escalada de privilegios, soluciones antivirus, políticas de grupo y más, que permiten un mayor control del sistema.
En este artículo veremos uno de estos mecanismos de seguridad y aprenderemos cómo configurar políticas para controlar el lanzamiento de scripts en el sistema operativo.
¿Qué son las políticas de ejecución?
Literalmente podemos interpretar este mecanismo como políticas de ejecución para scripts de PowerShell. El intérprete de PS en sí es un shell del SO que administra servicios, procesos, dispositivos y el control de objetos del SO en general.
Antes de ejecutar comandos, el intérprete puede realizar comprobaciones adicionales según sus configuraciones y mecanismos. Una de ellas, Políticas de ejecución, establece una política para un objeto mediante la cual se determinará si se puede ejecutar el script actual.
Por ejemplo, un usuario de nuestra red de dominio decide abrir un script que es potencialmente malicioso según nuestra política:

Obtenemos una respuesta lógica: el sistema tiene una política que prohíbe la ejecución de scripts. La política en sí se puede configurar con el comando:
Set-ExecutionPolicy -Scope -ExecutionPolicy -Force
En los casos en que los valores de alcance o ámbito de aplicación, así como la categoría de la propia política de prohibición, varían, se puede seleccionar uno de los ámbitos de aplicación presentados:
- Máquina local - modificado manualmente en el registro HKEY_LOCAL_MACHINE, se aplica a todos los usuarios y es independiente de los GPO;
- Política de máquina - se administra de forma centralizada a través de GPO y se aplica a todo el equipo.
- Política de usuario - se administra de forma centralizada a través de una GPO, pero se aplica únicamente a usuarios individuales;
- Proceso - La política se aplica al proceso en el que se ejecutó el comando de restricción de script;
- Usuario actual - la política se aplicará al usuario actual desde la rama de registro HKEY_CURRENT_USER.
Prioridad de aplicación: si el parámetro se establece en varios lugares a la vez, la prioridad será la siguiente:
- Proceso - la política establecida en Proceso tiene la máxima prioridad y anula todas las demás;
- Política de usuario (configurado a través de GPO para el usuario);
- Política de máquina (configurado a través de GPO para la computadora);
- Usuario actual (entrada de registro HKEY_CURRENT_USER);
- Máquina local (Entrada de registro HKEY_LOCAL_MACHINE).
La lógica detrás de esta priorización es bastante clara, para la mayor parte de los dispositivos la configuración se realiza a través de GPOs, seleccionando usuarios y máquinas. Para aquellos usuarios o dispositivos que no se ven afectados por las políticas se utilizan configuraciones del registro. Pero donde no hay excepciones en forma de prioridad para los procesos.
Y las variaciones presentadas de tipos de políticas realizan las siguientes funciones:
- Restringido - prohibición de ejecutar cualquier script tanto en el dispositivo local como desde Internet;
- TodosFirmados - prohibir la ejecución de scripts no firmados por un editor de confianza. Sin embargo, si agrega un certificado de CA autofirmado a la carpeta raíz de confianza, la verificación permitirá la ejecución del script;
- RemoteSigned - no se permite ejecutar scripts remotos no firmados, se permiten todos los scripts locales;
- Irrestricto - todos los scripts pueden ejecutarse, se requiere confirmación antes de ejecutarse;
- Evitar - similar a Sin restricciones, pero no requiere confirmación. Se implementa con el fin de automatizar tareas y no se recomienda su uso en estaciones de trabajo y servidores comunes.
- "Predeterminado" - con Windows 10 el valor es Restringido y para los servidores es RemoteSigned.
Una vez que hemos cubierto las opciones básicas y la sintaxis, ¡vamos a la práctica!
¿Cómo configuro la política de ejecución a través de GPO?
Para comenzar, puede averiguar qué política está configurada en su máquina ahora con el comando:
Get-ExecutionPolicy

Después de poder establecer políticas globalmente a través de GPO, en un controlador de dominio vaya a:
Computer Configuration → Windows Settings → Administrative Templates → Windows Components → Windows PowerShell
.
Es necesario habilitar la política así como su tipo:

Luego guarde y aplique a una unidad organizativa de dispositivos o usuarios:

En el dispositivo cliente, puede actualizar las políticas sin esperar la actualización automática Win+X → Terminal/PowerShell:
gpupdate /force

Y después de eso, verifiquemos la configuración mediante el comando:
Get-ExecutionPolicy -list
Dependiendo de si ha asignado la política a dispositivos o usuarios, se cambiará el parámetro MachinePolicy o UserPolicy.
¿Cómo configuro la política de ejecución a través de PS?
Si desea cambiar la configuración localmente en su equipo, ejecute el comando que explicamos anteriormente. Por ejemplo, permitiremos los scripts locales pero no permitiremos los scripts remotos sin firmar:
Set-ExecutionPolicy -Scope LocalMachine -ExecutionPolicy RemoteSigned -Force

Tenga en cuenta que las acciones deben ser realizadas por una persona que tenga permisos para la rama de registro. Después de ejecutar un archivo sin firmar desde una red externa, generalmente dichos archivos tienen una etiqueta MotW que marca el archivo como externo. La política funcionó y el script no se ejecutó; este mecanismo es excelente para mitigar la actividad maliciosa en una red de dominio en puntos finales, en soluciones de servidor. ¡Esta herramienta sería una gran incorporación a su política de AppLocker y zonas de lanzamiento de archivos existentes!
Si no tienes suficientes recursos, puedes realizar acciones. en potentes servidores en la nube. Serverspace Proporciona aislado VPS / VDS Servidores para uso común y virtualizado.
