Imagen: iStock/metamorworks

La capacidad de acceder a los sistemas de forma remota nunca ha sido más importante que en la actualidad. Por varias razones: una pandemia global que impide que muchos trabajadores accedan físicamente a los servicios, el creciente número de usuarios que optan por trabajar desde casa o el crecimiento del panorama de amenazas a medida que se amplían los límites de la red de la organización para permitir una mayor accesibilidad y disponibilidad. .

VER: Calendario editorial premium de TechRepublic: políticas de TI descargables, listas de verificación, kits de herramientas e investigación (Premium de TechRepublic)

No es ningún secreto que los actores malintencionados están buscando activamente nuevos objetivos. Además, el estado actual de Internet global significa que el acceso está disponible para millones de usuarios, que es una lista interminable de objetivos para comprometer y explotar. Como una tormenta perfecta que coloca la carga de la protección de datos sobre los usuarios diarios y los respectivos profesionales de TI responsables de garantizar la seguridad de los datos.

Una de esas herramientas que se ha vuelto común en los últimos años para facilitar el acceso remoto y la administración de sistemas es PowerShell (PS) de Microsoft. Initialement proposé en tant qu'application Windows uniquement, PS a été officiellement rendu open-source plusieurs versions et offre un support pour les systèmes d'exploitation les plus populaires, y compris diverses distributions Linux et macOS, aux côtés de Windows pour effectuer ses tâches con toda seguridad. Y los métodos a continuación ilustrarán diferentes formas de hacerlo sin comprometer la privacidad o la integridad del sistema.

Índice
  • Cmdlets que usan el argumento -ComputerName
  • Inicio de una sesión interactiva con Enter-PSSession
  • Protección de cuentas de usuario/contraseñas con Get-Credential
  • Ejecute cualquier comando de forma remota con Invoke-Command
  • Cifrado de valores de cadena con ConvertTo-SecureString
  • Cmdlets que usan el argumento -ComputerName

    En general, los cmdlets de PS tienen argumentos adicionales que forman parte de la sintaxis que permite la especificación adicional de dispositivos, variables o parámetros adicionales. Algunos son comunes a la mayoría de los cmdlets, otros son exclusivos de un cmdlet específico o una rama de cmdlets.

    El argumento -ComputerName está disponible para muchos cmdlets y se puede usar para apuntar a un dispositivo específico al administrar procesos de forma remota. El parámetro también se puede asociar con una lista de archivos, como un archivo CSV con una lista de nombres de host de equipos para procesar cmdlets en la lista de nombres de host de forma exclusiva y recursiva.

    Get-Service -Name *SSH -ComputerName SAMPLE-PC01 | Start-Service
    Input-CSV -Path serversharecomputerlist.csv | Add-ADComputer -ComputerName {for each. $_.Computers }

    Inicio de una sesión interactiva con Enter-PSSession

    Iniciar una sesión de PowerShell con un dispositivo establece una conexión directa y segura entre su consola PS local y un dispositivo remoto. Similar a la ejecución de los cmdlets anteriores, Session PS va un paso más allá y permite que este dispositivo se vincule directamente a la consola, de modo que los cmdlets se ejecuten en la sesión solo en el dispositivo remoto, hasta que salga de la sesión.

    VER: Política de protección contra el robo de identidad (Premium de TechRepublic)

    Para quienes estén familiarizados con SSH, una sesión de PS funciona de manera muy similar a SSH, excepto que utiliza el lenguaje de programación PowerShell como protocolos de comunicación y encriptación para administrar de forma segura un dispositivo de forma remota. Se pueden crear varias sesiones a la vez, pero eso requeriría abrir varias instancias de PS. Como se mencionó anteriormente, SSH puede funcionar mejor en casos individuales o con secuencias de comandos para garantizar que cada conexión se cree una a la vez para procesar los cmdlets y luego finalice antes de pasar a la siguiente conexión. Y al igual que SSH, PSRemoting, el servicio que permite sesiones de PS, está deshabilitado por defecto y debe habilitarse antes de establecer una conexión remota.

    Enter-PSSession -Name PC02.local -Credential LOCALUSER

    Protección de cuentas de usuario/contraseñas con Get-Credential

    Otro método que se puede usar para ingresar credenciales de forma segura es usar el cmdlet Get-Credential. Aprovechando esto, el comando solicitará al usuario de forma interactiva las credenciales para proporcionar el contexto de seguridad en el que ejecutar el cmdlet. A menudo, esto se incluye como una variable o se canaliza directamente a otro cmdlet para garantizar que las credenciales se puedan reutilizar si es necesario sin requerir varias solicitudes o, lo que es peor, mostrar nombres de usuario o contraseñas.

    Get-Credential -Credential LOCALUSER
    $cred = Get-CredentialNew-ADComputer -Name "PC03" -SamAccountName "PC03" -Path "OU=Computers,DC=Local" -Credential $cred

    Ejecute cualquier comando de forma remota con Invoke-Command

    Al igual que con muchos procesos en Windows, a menudo hay varias formas de realizar tareas similares. La ejecución de comandos de forma remota es uno de esos elementos con múltiples métodos para realizar la misma tarea. Con el cmdlet Invoke-Command, los usuarios pueden hacer exactamente lo mismo que en una sesión de PS dedicada, sin tener que preocuparse por activar el servicio primero. De hecho, el único requisito es que el usuario tenga permiso para ejecutar comandos en el sistema remoto para que funcionen.

    La sintaxis del cmdlet Invoke-Command agrega un poco de complejidad a la sintaxis de PS estándar, pero una vez que lo domine, descubrirá que este método facilita la ejecución de comandos de PowerShell y que no son de PowerShell.

    Invoke-Command -Filepath "serversharescript1.bat" -ComputerName "PC03.local" -Credential $cred 
    Invoke-Command -ComputerName "PC03.local" -ScriptBlock { Test-ComputerSeureChannel -Repair }

    Cifrado de valores de cadena con ConvertTo-SecureString

    Finalmente, otro competidor para proteger las credenciales, o cualquier otro dato privado, es el cmdlet ConvertTo-SecureString, que se usa para almacenar temporalmente datos privados en la computadora como un archivo cifrado durante la sesión o hasta que se eliminen. Al proteger los valores de esta manera, el usuario se asegura de que se pueda acceder al valor durante toda la sesión (como cuando se ejecutan varios comandos que requieren el parámetro -Credential) y mantiene los valores confidenciales para que no se puedan leer en Texto sin formato.

    VER: Ingeniería social: checklist para profesionales (PDF gratuito) (República Tecnológica)

    A menudo, este método se presta bien a procesos con secuencias de comandos o automatizados que están configurados para ejecutarse según un cronograma o si los datos deben almacenarse como un valor de cadena seguro para que las partes no autorizadas no puedan ver el contenido de una secuencia de comandos para extraer lo que desee. no quiere caer en sus manos, como credenciales, nombres de host, direcciones IP, etc.

    $svrip = ConvertTo-SecureString "192.168.1.1" -AsPlainText -Force
    (Get-Credential).Password | ConvertFrom-SecureString | Out-File "servershareencryptcreds.txt"