En el dinámico mundo de la administración de sistemas, la gestión proactiva es la clave para garantizar la seguridad, la estabilidad y el rendimiento de los entornos de TI. Una de las herramientas más poderosas disponibles para los administradores es PowerShell, un lenguaje de scripting y un entorno de línea de comandos que puede automatizar muchas tareas en los sistemas Windows. Cada semana, cada administrador debe ejecutar un determinado script de PowerShell, una herramienta simple pero extremadamente efectiva para garantizar el buen funcionamiento de las operaciones de TI. Este script, en particular, se centra en la gestión de las políticas de ejecución de scripts de PowerShell, un aspecto crucial que a menudo se pasa por alto. Este artículo explora esta característica esencial en profundidad.
Descripción de la política de ejecución de scripts de PowerShell
Allá estrategia de ejecución en PowerShell determina qué comandos y scripts se pueden ejecutar en un sistema. Es una característica de seguridad que protege al usuario de la ejecución de scripts maliciosos. Comprender esta política y saber cómo configurarla es fundamental para cualquier administrador que desee mantener un entorno Windows seguro y eficiente.
Hay varios niveles de estrategias de ejecución, cada uno con sus propias implicaciones y niveles de seguridad. A continuación se presenta una descripción general de las principales políticas disponibles:
- Restringido: Bloquea todos los scripts, permitiendo que sólo se ejecuten comandos interactivos en la consola.
- Todos firmados: Permitir únicamente la ejecución de scripts firmados por un editor confiable.
- Firmado remotamente: Permite la ejecución de scripts locales no firmados, pero bloquea aquellos de Internet a menos que estén firmados.
- Irrestricto: Permite ejecutar todos los scripts, pero muestra alertas para aquellos que provienen de Internet.
- Derivación: No aplica ninguna restricción, permitiendo que todos los scripts se ejecuten sin advertir al usuario.
- Indefinido: Indica que la política no está establecida y que se deja aplicar la política de nivel superior.
Para entornos empresariales, la estrategia Todo firmado Generalmente es el más recomendado, ya que proporciona un alto nivel de seguridad al tiempo que permite la ejecución necesaria de scripts. Sin embargo, dependiendo de las necesidades, se pueden aplicar otras políticas dependiendo del contexto de ejecución.
Explorando estrategias de ejecución
Para ver qué política se aplica actualmente en su sistema, utilice el cmdlet Obtener política de ejecución se puede utilizar:
<!– wp:code {"content":"Get-ExecutionPolicy
«} –>Obtener política de ejecución
Para obtener una vista más detallada de las políticas de ejecución en cada ámbito, es posible utilizar:
<!– wp:code {"content":"Get-ExecutionPolicy -List
«} –>Obtener-Política-Ejecución-Lista
Esto mostrará las políticas aplicadas a cada ámbito, incluidas las siguientes: Proceso, Usuario actual Y Máquina local.
Medida | Política de ejecución |
---|---|
Proceso | Política aplicada a la sesión actual de PowerShell |
Usuario actual | Política aplicada al usuario que inició sesión |
Máquina local | estrategia aplicada a toda la máquina |
Es una buena idea comprobar periódicamente estas configuraciones para garantizar que todavía satisfacen las necesidades de seguridad de la organización.
Cómo cambiar la estrategia de ejecución
Cambiar la política de ejecución es un proceso bastante simple, pero requiere privilegios de administrador. Usando el cmdlet Establecer política de ejecución permite definir una nueva estrategia. Por ejemplo, para establecer una política sobre Todo firmado, se debe ejecutar el siguiente comando:
<!– wp:code {"content":"Set-ExecutionPolicy -ExecutionPolicy AllSigned
«} –>Establecer-Política-de-Ejecución -Política-de-Ejecución Todo-firmado
También es posible especificar el ámbito de aplicación de esta política:
<!– wp:code {"content":"Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
«} –>Establecer-Política-de-Ejecución -Política-de-Ejecución Firmado-Remoto -Ámbito Usuario-Actual
Este comando aplica la política solo al usuario actual, lo que puede ser útil en un entorno que contiene varios usuarios.
En una organización, puede ser conveniente establecer políticas de ejecución estrictas para todos los usuarios a fin de reducir los riesgos asociados con la ejecución de scripts no verificados. A continuación se presentan algunas prácticas recomendadas a tener en cuenta:
- Promover el uso de la estrategia Todo firmado para garantizar que sólo se ejecuten scripts verificados.
- Educar a los usuarios sobre los riesgos asociados con la ejecución de scripts descargados.
- Implementar controles periódicos para verificar el cumplimiento de las configuraciones de la estrategia de ejecución.
La creación de documentación sobre las estrategias de ejecución y las razones detrás de su elección ayuda a concienciar y capacitar al personal administrativo.
Automatizar la verificación de la estrategia de ejecución
Un buen administrador de sistemas sabe que la monitorización proactiva puede suponer un valioso ahorro de tiempo. Escribir un pequeño script de PowerShell dedicado a verificar la política de ejecución y enviar alertas cuando se realizan cambios puede ayudar a mantener el cumplimiento continuo.
<!– wp:code {"content":"n$executionPolicy = Get-ExecutionPolicy -Listnif ($executionPolicy.CurrentUser -ne "AllSigned") {n Send-MailMessage -To "[email protected]" -From "[email protected]" -Subject "Alerte sur stratu00e9gie d'exu00e9cution" -Body "La politique d'exu00e9cution de l'utilisateur a changu00e9." -SmtpServer "smtp.example.com"n}n
«} –>$executionPolicy = Obtener-ExecutionPolicy-Lista si ($executionPolicy.CurrentUser -ne "AllSigned") { Send-MailMessage -A "[email protected]" -Desde "[email protected]" -Asunto "Alerta de política de ejecución" -Cuerpo "La política de ejecución del usuario ha cambiado". -SmtpServer "smtp.ejemplo.com" }
Este script envía un correo electrónico al administrador correspondiente si la política de ejecución actual no coincide con el estándar esperado. Esto ayuda a estar atento a cambios inesperados y potencialmente peligrosos.
A continuación se presentan algunas sugerencias para mejorar los procesos de automatización de auditoría:
- Integrar comprobaciones para otras configuraciones de seguridad además de las políticas de ejecución.
- Programe este script para que se ejecute en intervalos establecidos, por ejemplo, cada semana.
- Utilice herramientas de gestión de configuración como Jefe, Marioneta O Vientos solares para mantener la integridad de las configuraciones del sistema.
Reducir el riesgo humano mediante la automatización de estos controles le permitirá centrarse en otros aspectos críticos de la gestión de TI.
Desbloquear un script seguro de PowerShell
Al descargar scripts de Internet, es posible que se marquen como no confiables, lo que impide que se ejecuten de forma predeterminada como parte de la seguridad de Windows. Para ejecutarlos, debemos «desbloquearlos» con el cmdlet Desbloquear archivo.
<!– wp:code {"content":"Unblock-File "C:TEMPscript.ps1"
«} –>Desbloquear archivo "C:TEMPscript.ps1"
Este comando elimina la protección de seguridad asociada con el archivo descargado. Se recomienda utilizar este comando únicamente para archivos de fuentes confiables.
Los administradores deben tener cuidado al desbloquear archivos y recordar lo siguiente:
- Verifique la integridad y la fuente del script antes de desbloquearlo.
- Documentar los scripts desbloqueados para mantener el inventario y la trazabilidad.
- Evalúe los riesgos potenciales antes de dar luz verde a la ejecución de un script sensible.
La gestión adecuada de los scripts descargados puede marcar una gran diferencia en el nivel de seguridad de un sistema.
Ejecución administrativa de scripts de PowerShell
En muchas situaciones, ejecutar scripts requiere privilegios de administrador para acceder a ciertos recursos del sistema o aplicar cambios críticos. A continuación se explica cómo un administrador puede ejecutar fácilmente un script con privilegios elevados:
<!– wp:code {"content":"Start-Process powershell -Verb RunAs -ArgumentList "-File C:TEMPscript.ps1"
«} –>Inicio-Proceso powershell -Verbo EjecutarComo -ListaArgumentos "-Archivo C:TEMPscript.ps1"
Esto inicia un nuevo proceso de PowerShell con derechos de administrador para ejecutar el script especificado. Asegúrese de que los usuarios estén capacitados en este método para evitar posibles errores.
También es concebible escribir un script de autoelevación para automatizar este proceso:
<!– wp:code {"content":"nif (-Not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {n Start-Process PowerShell -Verb RunAs -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `$PSCommandPath"n Exitn}n
«} –>Inicio-Proceso PowerShell -Verbo EjecutarComo -ListaArgumentos "-NoPerfil -Omisión de Política de Ejecución -Archivo `$PSCommandPath" Salida }
Con este enfoque, si un usuario intenta ejecutar el script sin privilegios de administrador, el script se reiniciará automáticamente con los requisitos requeridos. Es un método seguro que simplifica el proceso de gestión de permisos.