PSRemoting (Parte 2): Cómo configurar PowerShell Remoting
Ahora que ya sabemos qué es y cómo funciona PowerShell Remoting gracias a la entrada anterior de la serie, estamos listos para empezar con la acción. En la entrada de hoy veremos cómo configurar PowerShell Remoting tanto en origen como en destino para empezar a ponernos en marcha.
Os dejo el índice de la serie:
- Parte 1: ¿Qué es PowerShell Remoting?
- Parte 2: Cómo configurar PowerShell Remoting.
- Parte 3: Cómo utilizar PowerShell Remoting.
Configuraciones necesarias en la máquina destino
Si bien no es estrictamente necesario conocer el detalle de qué necesita tener configurado una máquina para poder conectarnos a ella mediante PowerShell Remoting, sí que es interesante conocer las distintas partes involucradas. Ésto va a sernos útil en el caso de que queramos hacer troubleshooting de una conexión y, en el caso de que queramos habilitar PowerShell Remoting mediante GPO, se va a volver imprescindible. Las configuraciones necesarias son las siguientes:
- Configurar el servicio de escucha de WinRM.
- Habilitar el servicio de WinRM para el autoarranque.
- Crear una regla en el firewall local de la máquina para aceptar el tráfico entrante de WinRM.
Para nuestra suerte desde Windows Server 2012 estas tres configuraciones vienen habilitadas por defecto, por lo que en dichos sistemas (si no se ha deshabilitado después de la instalación alguno de estos puntos) no haría falta realizar ninguna configuración extra a no ser que intentemos conectar desde una subnet distinta a la de la máquina, puesto que la regla de Firewall por defecto no permite el tráfico desde subredes distintas en redes públicas.
Habilitar PowerShell Remoting en destino mediante Enable-PSRemoting
Sin duda a la hora de configurar PowerShell Remoting la opción más sencilla es utilizar Enable-PSRemoting siempre y cuando queramos habilitarlo en unas pocas máquinas, pues tendremos que ejecutar este cmdlet en cada una de ellas. Enable-PSRemoting se va a encargar de habilitar PowerShell Remoting sin más intervención por nuestra parte. Es importante remarcar también que no se requiere reinicio para aplicar los cambios.
Para usarlo abriremos una consola de PowerShell como administrador y ejecutaremos:
|
|
Ejecutamos el cmdlet con -Force para que no pida confirmaciones.
Una vez finalice la ejecución ya tendremos lista nuestra máquina.
Si estamos realizando esta operación en una máquina Windows cliente y no estamos en dominio es muy probable que nos encontremos con el siguiente error:
|
|
Para corregirlo deberíamos ejecutar Enable-PSRemoting con el parámetro SkipNetworkProfileCheck, con el que se crearía la regla igualmente pese a estar en una red pública:
|
|
Por último, si quisiéramos acceder a nuestras máquinas (tanto Windows Server como cliente) desde una subnet distinta deberíamos modificar la regla de Firewall creada que por Enable-PSRemoting para que acepte peticiones desde cualquier dirección remota:
|
|
Habilitar PowerShell Remoting en destino mediante GPO
Si bien configurar PowerShell Remoting mediante GPO es un poco más laborioso que hacerlo con Enable-PSRemoting, nos va a permitir hacerlo en gran cantidad de máquinas de una sola vez y asegurarnos de que nadie deshabilita PowerShell Remoting.
Para ello crearemos una nueva política de grupo en la que realizaremos las siguientes tres configuraciones.
Configurar el servicio de escucha de WinRM
Configuración del equipo > Directivas > Plantillas administrativas > Administración remota de Windows (WinRM) > Servicio WinRM > Permitir la administración de servidores remotos a través de WinRM
Configurar autoarranque del servicio de WinRM
Configuración del equipo > Directivas > Configuración de Windows > Configuración de seguridad > Servicios del sistema > Administración remota de Windows (WS-Management)
Configurar el Firewall de Windows
Configuración del equipo > Configuración de Windows > Configuración de seguridad > Firewall de Windows con seguridad avanzada > Reglas de entrada
Aquí haremos clic derecho y pulsaremos en nueva regla.
Si queremos permitir la conexión por PowerShell Remoting desde una subred distinta deberemos hacer botón derecho en la regla de perfil Público creada y en la pestaña **Ámbito **permitir cualquier dirección IP remota:
Después de aplicar la GPO a las máquinas correspondientes ya deberíamos ser capaces de conectar mediante PowerShell Remoting.
Comprobar conectividad de PSRemoting
Una vez tenemos PowerShell Remoting en nuestra máquina destino deberemos probar que la conectividad funciona correctamente. Para ello nos valdremos del cmdlet Test-WSMan:
Si tras ejecutarlo nos devuelve una salida parecida a la siguiente sin errores quiere decir que hemos triunfado.
Configurar PowerShell Remoting en origen
Por último, si planeamos utilizar PowerShell Remoting en un entorno fuera de dominio de Active Directory deberemos realizar un pequeño cambio en nuestra máquina cliente (si vas a utilizar PowerShell Remoting en dominio puedes ignorar este paso).
Si intentamos una conexión remota sin hacer cambios en un entorno de dominio encontraremos el siguiente error:
|
|
El error es muy autoexplicativo: por motivos de seguridad, si la autenticación no se realiza por Kerberos o si el equipo cliente no está unido a dominio tenemos que elegir una de las siguientes opciones para realizar la conexión:
- Utilizar WS-Man sobre HTTPS.
- Añadir el equipo destino a la configuración TrustedHosts.
Por el momento vamos a ver cómo modificar la configuración de TrustedHosts (PowerShell con permisos de administrador):
|
|
Después de esto ya deberíamos ser capaces de conectarnos a las máquinas destino que deseemos.
Cómo deshabilitar PowerShell Remoting
Por último, si queremos deshabilitar PowerShell Remoting disponemos de dos opciones:
- Utilizar el cmdlet Disable-PSRemoting.
- Crear una GPO que haga lo contrario de la que hemos visto en puntos anteriores.
Resumen
A modo de resumen, debido a que existen distintos escenarios a cubrir y puede parecer un poco lioso, estas son las acciones que hay que realizar según cada escenario posible:
- Si vas a utilizar PSRemoting en dominio:
- Servidores destino iguales o superiores a Windows 2012: No es necesario configurar nada.
- Servidores destino anteriores a Windows 2012: Hay que habilitar PSRemoting con GPO o Enable-PSRemoting.
- Si vas a utilizar PSRemoting fuera de dominio:
- Máquinas en la misma subnet: Habilitar PSRemoting con GPO o Enable-PSRemoting y modificar TrustedHosts.
- Máquinas en distinta subnet: Habilitar PSRemoting con GPO o Enable-PSRemoting, modificar TrustedHosts y modificar regla de Firewall.
Espero que os haya servido la entrada. En la próxima vamos a empezar a trastear con PowerShell Remoting y ver qué podemos hacer.