PowerShell Remoting es una característica de Windows que permite a los administradores ejecutar comandos, scripts e incluso iniciar sesiones interacticas en otros equipos dentro del directorio activo. PowerShell Remoting usa las credenciales que tenemos actualmente para autenticarse en el sistema remoto.
Esta funcionalidad se basa en el uso de protocolos como WS-Management y utiliza el puerto 5985 para HTTP y 5986 para HTTPS.
Un ejemplo de uso de PowerShell Remoting seria ejecutar en PowerShell con un usuario autorizado en el equipo remoto el siguiente comando
para hacer el equivalente a un dir a C:\:
New-PSSession -ComputerName equipoDC
Invoke-Command -ComputerName equipoDC -ScriptBlock {Get-ChildItem c:\}
Sin embargo, como cualquier herramienta, también puede ser explotada por atacantes si no se maneja adecuadamente. Por ello, en entornos donde no es absolutamente necesario, deshabilitar PowerShell Remoting puede ser una medida de seguridad interesante.
Aunque es una herramienta útil para la administración remota de sistemas, también representa un riesgo potencial si es aprovechada por actores maliciosos. Un atacante con acceso podría moverse lateralmente dentro de la red o incluso elevar privilegios.
Para desabilitar PowerShell Remoting ejecutamos en PowerShell como administradores:
Disable-PSRemoting -Force
Este comando realiza varias acciones importantes:
-Desactiva el Listener de WS-Management: Deshabilita la escucha en los puertos que PowerShell Remoting utiliza, bloqueando así nuevas conexiones remotas.
-Deshabilita la Configuración de Sesión Remota: Impide que se inicien nuevas sesiones remotas.
-Desactiva el Servicio WinRM: Elimina la capacidad de gestionar el sistema remotamente a través de WinRM (Windows Remote Management).
Sin embargo, es importante balancear la seguridad con la funcionalidad. En entornos donde la administración remota es necesaria, deshabilitar PowerShell Remoting puede no ser viable. En estos casos, se deben implementar medidas adicionales, como el uso de autenticación robusta (preferentemente Kerberos), cifrado de la comunicación, restricciones de acceso por IP, y la aplicación de políticas de grupo para controlar quién puede utilizar PowerShell Remoting.
Otras buenas Prácticas en la Administración Remota
Además, se pueden implementar las siguientes medidas de seguridad:
- Utilizar SSL/TLS para cifrar la comunicación remota.
- Configurar firewalls para limitar el acceso a los puertos utilizados por PowerShell Remoting.
- Aplicar autenticación multifactor (MFA) para proteger el acceso remoto.
- Implementar contraseñas robustas y politicas de cambio de las mismas.
- Monitorear y auditar las sesiones de PowerShell Remoting para detectar actividades sospechosas.
Un saludo.