Cómo restringir el acceso a PowerShell para usuarios no administradores en Windows

Deshabilitar PowerShell en equipos Windows suele ser necesario en entornos donde las políticas de seguridad lo exigen; por ejemplo, para detener ataques basados ​​en scripts o simplemente controlar lo que los usuarios pueden ejecutar. Sin embargo, si se bloquea PowerShell por completo, puede afectar a funciones legítimas, como scripts de inicio de sesión de GPO o tareas programadas que se ejecutan en SYSTEM. Por lo tanto, el objetivo es deshabilitar la consola interactiva y la ejecución de scripts, pero dejar intactas esas tareas automatizadas. Es una cuestión de equilibrio y no siempre infalible, sobre todo porque los usuarios encuentran maneras de eludir políticas sencillas.

Cómo deshabilitar PowerShell en Windows mediante varios métodos

Método 1: Resulta que bloquear el ejecutable con políticas de restricción de software no es totalmente seguro.

Este es probablemente el truco más rápido. Activa la política » No ejecutar aplicaciones de Windows especificadas» en Configuración de usuario > Políticas > Configuración de Windows > Configuración de seguridad > Políticas de restricción de software. Luego, agrega las rutas powershell.exey powershell_ise.exe. Sencillo, ¿verdad? Bueno, es un poco raro, pero con solo esto, en la mayoría de los casos, el proceso se bloquea y no se inicia. Cuando los usuarios intentan ejecutar PowerShell, obtienen lo siguiente:

This app has been blocked by your administrator

Dicho esto, no es 100% fiable. En algunas configuraciones, como Windows Terminal o versiones más recientes de PowerShell Core ( GitHub Winhance podría ayudar a gestionar las políticas de ejecución), este método podría no bloquear todo. Porque, claro, Windows tiene que complicarlo más de lo necesario.

Método 2: Bloquear archivos ejecutables en el sistema de archivos mediante políticas de grupo con Políticas de restricción de software

Esto es un poco más exhaustivo, pero aún no es perfecto. Crea una nueva GPO con [Nombre del grupo de directivas gpmc.msc] y luego ve a Configuración de usuario > Políticas > Configuración de Windows > Configuración de seguridad >> Políticas de restricción de software. Crea una nueva política y, en Reglas adicionales, agrega rutas como:

%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe C:\Program Files\PowerShell\7\pwsh.exe  

Establezca cada una como No permitida. Una vez aplicada esta política, los usuarios no podrán ejecutar powershell.exeni pwsh.exe. Recibirán errores como:

This program is blocked by group policy. For more information, contact your system administrator.

Pero prepárese para algunas peculiaridades: si los scripts o las tareas programadas se ejecutan como SYSTEM, podrían activarse, especialmente si el script se ejecuta antes de que se aplique la política. En las versiones más recientes de Windows, este método se considera obsoleto en favor de AppLocker.

Método 3: usar AppLocker para denegar explícitamente la ejecución de PowerShell

Este enfoque es más robusto. A partir de Windows 10 2004 y Windows 11, las reglas de AppLocker funcionan en ciertas ediciones (Pro, Enterprise y ahora incluso en algunas ediciones Pro).Para configurarlo:

  • Habilite el servicio de Identidad de aplicación desde Servicios (en Configuración del equipo > Configuración de Windows > Configuración de seguridad > Servicios del sistema ); configúrelo en Automático.
  • En Políticas de control de aplicaciones > AppLocker, configure las reglas en Aplicar reglas.
  • Primero cree reglas predeterminadas para otras aplicaciones, luego haga clic derecho en Reglas ejecutables > Crear nueva regla.
  • Seleccione Denegar para las reglas del editor y especifique las rutas a los ejecutables de PowerShell (como powershell.exe, pwsh.exey powershell_ise.exe); puede usar caracteres comodín o la información del editor.
  • Para los usuarios en quienes confía para ejecutar PowerShell, cree una regla de permiso que permita explícitamente a esos usuarios o grupos.

Una pequeña advertencia: dado que las reglas de AppLocker se procesan en orden, asegúrese de que las reglas de denegación aparezcan primero o estén ordenadas correctamente. De lo contrario, los usuarios podrían iniciar PowerShell si hay una regla de permiso más específica. Además, exportar las reglas Get-AppLockerPolicy -Effective -XML > C:\path\to\file.xmlpuede facilitar la depuración.

Consejos adicionales: Manejo de excepciones y automatización

En configuraciones reales, podría ser conveniente crear excepciones para que algunos grupos de administradores o cuentas específicas puedan seguir ejecutando PowerShell. Para ello, configure las reglas con grupos de seguridad y configure la delegación para que solo esos grupos tengan permiso. Use la pestaña Delegación para agregar grupos y denegar o permitir ciertas políticas.

Tenga en cuenta que, a partir de Windows 10 1803 y Windows Server 2019, las SRP (políticas de restricción de software) quedaron obsoletas en favor de WDAC y AppLocker, que son más flexibles y seguras.

Resumen

  • Utilice la política No ejecutar aplicaciones de Windows específicas para un bloqueo rápido: funciona en muchos casos, pero no en todos.
  • Configure políticas de restricción de software para bloquear todos los ejecutables de PowerShell en el nivel del sistema de archivos.
  • Para una solución más sólida, implemente reglas de AppLocker para denegar explícitamente archivos de PowerShell y establecer excepciones para cuentas confiables.
  • Recuerde que estos métodos bloquean principalmente las sesiones interactivas, pero pueden no detener la ejecución de scripts o tareas programadas bajo SISTEMA o con diferentes métodos de ofuscación.

Resumen

Deshabilitar PowerShell no es tan sencillo como pulsar un interruptor, especialmente con las versiones más recientes de Windows. Combinar métodos como AppLocker con la delegación adecuada y las reglas de excepción parece ser la mejor opción. No es perfecto (nada lo es) y algunos scripts o procesos podrían fallar dependiendo de su configuración. Por lo tanto, las pruebas son clave, y no olvide que las actualizaciones o las nuevas funciones de seguridad del sistema operativo podrían cambiar el comportamiento de estas políticas. Ojalá esto ayude a evitar problemas de seguridad sin interrumpir la automatización esencial. Funcionó en varias configuraciones; espero que esto le suceda lo mismo.