Gestión remota avanzada

Introducción

Desde la versión 2.0 de PowerShell, las funciones de administración remota no han dejado de evolucionar, aunque el principio básico siga siendo el mismo. El aumento de los ciberataques obliga a las empresas y organizaciones de todo tipo a revisar a fondo sus políticas de seguridad. Un elemento importante es la adquisición de privilegios específicos para una persona o una función. Conceder más privilegios de los necesarios crea vulnerabilidades potenciales que pueden ser explotadas por un atacante en caso de que se comprometa la cuenta de usuario. En Linux existe sudo, en Windows existe JEA.

Antes de seguir adelante, es importante comprender bien los fundamentos de las sesiones PowerShell y la administración remota. Se hará un recordatorio, pero esto no cubrirá todo el tema. Simplemente se limitará a la configuración de sesiones a través de JEA.

JEA (Just Enough Administration)

JEA (Just Enough Administration) es una mejora de la gestión de sesiones introducida con la versión 5.0 de PowerShell. JEA permite limitar los comandos de PowerShell que los administradores y usuarios pueden ejecutar en los sistemas. Esto ya era posible en versiones anteriores, pero su implantación y funcionamiento resultaban laboriosos.

Los derechos de sesión debían actualizarse mediante una interfaz gráfica (GUI) de listas de control de acceso (ACL). En JEA, los roles se gestionan mediante archivos. Estos archivos pueden gestionarse manualmente, pero también existen comandos que facilitan el trabajo.

1. ¿Por qué JEA?

JEA mejora la seguridad de los sistemas administrados a distancia. Aquí encontramos la noción de RBAC (Role-Based Access Control). RBAC expresa la necesidad de definir el acceso a un recurso en función del rol del usuario. Para lograrlo, JEA dispone de tres mecanismos principales:

  • Limitar las operaciones que puede realizar cada usuario en función de su rol.

  • Auditar las acciones realizadas por cada usuario.

  • Limitar el número de administradores en los sistemas.

2. Prerrequisitos

Se requiere la versión 5.0 o superior de PowerShell. Sin embargo, la versión 5.1 estándar es el mínimo recomendado. Esta está disponible de serie a partir de Windows 10 y Windows Server 2016. Para versiones anteriores de Windows, es posible instalar Management Framework 5.1, publicado en enero de 2017. Como requisito previo para su instalación, el sistema debe disponer al menos del framework DotNet 4.5.2. La información y enlaces necesarios están disponibles aquí: https://learn.microsoft.com/en-us/powershell/scripting/learn/remoting/jea/prerequisites?view=powershell-5.1

Nota: algunas funciones pueden no estar disponibles en todos los sistemas operativos. Para más información, consulte la documentación en línea de JEA. También es importante tener en cuenta el final de la vida útil de los distintos sistemas operativos.

Otro punto importante es que JEA no está actualmente portado a la versión PowerShell Core. Solo puede utilizarse en Windows.

En los hosts a los que desea conectarse, el servicio WinRM debe estar habilitado y configurado. Para ello, utilice el comando Enable-PSRemoting.

En un contexto fuera del dominio de Active...

PowerShell Web Access

PowerShell Web Access es una característica que ha estado disponible desde Windows Server 2012. No ha cambiado significativamente desde sus primeras versiones. El objetivo de esta característica es ofrecer la administración de dispositivos mediante una consola PowerShell a través de un navegador web. Así, desde cualquier dispositivo (smartphone, tablet, PC), y en cualquier plataforma (Android, iOS, etc.), es posible ejecutar comandos o scripts de PowerShell sin herramientas adicionales.

Por supuesto, esto requiere una cuidadosa reflexión sobre la seguridad si la aplicación va a estar disponible a través de Internet. Incluso si el sitio web está protegido mediante el protocolo SSL.

1. Prerrequisitos

Para implementar PowerShell Web Access, es necesario cumplir una serie de requisitos previos tanto a nivel del navegador web como del servidor.

  • Servidor :

    • Windows Server 2012 o superior (Datacenter o Standard)

    • Rol Web Server (IIS)

    • .NET Framework 4.5

    • Windows PowerShell 3.0 o superior.

PowerShell 3.0 fue la versión incluida originalmente con Windows Server 2012.

  • Lista de navegadores web de escritorio probados oficialmente:

  • Windows Internet Explorer 8.0 a 11.0

  • Mozilla Firefox 10.0.2

  • Google Chrome 17.0.963.56m para Windows

  • Apple Safari 5.1.2 para Mac OS

Sin embargo, la aplicación puede funcionar en otros navegadores. Para ello, deben permitir cookies, aceptar la ejecución de JavaScript y aceptar conexiones HTTP.

Ejemplos de navegadores y dispositivos móviles que se han sometido a pruebas funcionales mínimas:

  • Windows Phone 7 y 7.5

  • Navegador Google Android WebKit 3.1 Android 2.2.1 (Kernel 2.6)

  • Apple Safari para iOS 5.0.1

Esta información proviene de fuentes oficiales en MSDN de Microsoft. Todos los ejemplos siguientes se crearon con la aplicación Edge Windows 10 Phone y el navegador Google Chrome.

2. Instalación

 Para instalar PowerShell Web Access, inicie una consola de PowerShell como administrador y ejecute el comando Install-WindowsFeature:

  PS > Install-WindowsFeature -Name WindowsPowerShellWebAccess `  
                            -IncludeManagementTools -Restart 

También es posible instalar esta funcionalidad en un disco duro virtual (VHD) sin conexión....

Sesión remota con SSH

Las sesiones remotas en PowerShell Core no presentan mayores inconvenientes en un entorno Windows. Cuando incluyes Linux o macOS en el bucle, la cosa cambia. Linux y macOS no son compatibles con WinRM y WSMan. Estos dos elementos son puramente Windows. Sin embargo, ya existe un mecanismo de sesión remota en Linux y macOS. Se trata de OpenSSH. Este utiliza el protocolo SSH.

Para facilitar la comunicación entre los distintos entornos, el equipo de PowerShell decidió portar una solución OpenSSH a Windows y utilizarla en PowerShell Core.

La ventaja de la solución OpenSSH es que no requiere un entorno de dominio ni la generación manual de certificados para cifrar los flujos. Todo el tráfico está cifrado de forma nativa de extremo a extremo.

1. Instalación en Windows

La solución OpenSSH para Windows consta de dos elementos, la parte cliente y la parte servidor. Se implementó por primera vez en Windows Server 2016 y Windows 10. Hay dos formas de instalarlos, a través del repositorio de GitHub o directamente desde las características opcionales del sistema.

Para el ejemplo, utilizaremos las características opcionales y los comandos Get-WindowsCapability y Add-WindowsCapability.

En esta sección, nos enfocaremos en la parte del servidor.

Lista de capacidades de openSSH

PS > Get-WindowsCapability -Name OpenSSH.Server* -Online  
  
Name         : OpenSSH.Server~~~~0.0.1.0  
State        : NotPresent  
DisplayName  : OpenSSH Server  
Description  : OpenSSH-based secure shell (SSH) server, for secure key  
management and access from remote machines.  
DownloadSize : 1518826  

Estas capacidades ya están instaladas:

PS > Get-WindowsCapability -Name OpenSSH.Server* -Online|  
Add-WindowsCapability -Online...