5 formas de administrar computadoras de forma segura y remota usando PowerShell


Poder proteger las comunicaciones entre recursos remotos es tan importante como poder acceder al dispositivo. Con PowerShell, TI puede hacer ambas cosas al acceder a dispositivos externos en varias plataformas.

«data-credit =» Imagen: iStock / metamorworks «rel =» noopener noreferrer nofollow «>laptop conectada

Imagen: iStock / metamorworks

La capacidad de acceder a los sistemas de forma remota nunca ha sido más importante que en la actualidad. Por una variedad de razones: una pandemia world-wide que impide que muchos trabajadores accedan físicamente a los servicios, el creciente número de usuarios que optan por ir de forma remota o el crecimiento del panorama de amenazas a medida que las fronteras de la red de la organización se expanden para permitir una mayor accesibilidad y disponibilidad. .

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

No es ningún secreto que hay actores maliciosos que buscan activamente nuevos objetivos. Además, el estado actual de Online world significa que el acceso está disponible para millones de usuarios, lo que representa una lista interminable de objetivos para comprometer y explotar. Como una tormenta perfecta que coloca la carga de proteger los datos directamente sobre los usuarios cotidianos y los respectivos profesionales de TI encargados de garantizar que los datos permanezcan seguros.

Una de esas herramientas que se ha generalizado en los últimos años para facilitar el acceso remoto y la administración de sistemas es PowerShell (PS) de Microsoft. Inicialmente ofrecida como una aplicación solo para Windows, PS se convirtió oficialmente en código abierto en varias versiones y ofrece soporte para los sistemas operativos más populares, incluidas varias distribuciones de Linux y macOS, junto con Windows para realizar sus tareas de forma segura. Y los métodos a continuación ilustrarán varias formas de hacerlo sin comprometer la confidencialidad o integridad del sistema.

Cmdlets usando el argumento -ComputerName

En typical, 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 emparejar con una lista de archivos, como un archivo CSV con una lista de nombres de host de computadora para procesar cmdlets contra la lista de nombres de host de manera exclusiva y recursiva.

Get-Provider -Identify *SSH -ComputerName SAMPLE-Computer01 | Begin-Service
Enter-CSV -Route serversharecomputerlist.csv | Increase-ADComputer -ComputerName for every single. $_.Pcs 

Iniciar sesión interactiva usando Enter-PSSession

Comenzar una sesión de PowerShell con un dispositivo permite establecer una conexión directa y segura entre su consola PS community y un dispositivo remoto. De manera related a la ejecución de los cmdlets anteriores, la sesión de PS avanza un paso y permite vincular ese dispositivo directamente a la consola, por lo que los cmdlets ejecutados durante la sesión solo ocurren en el dispositivo remoto, hasta que sale de la sesión.

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

Para aquellos familiarizados con SSH, una sesión de PS funciona de manera muy equivalent a SSH, excepto que usa el lenguaje de programación PowerShell como los protocolos de encriptación y comunicación para administrar remotamente un dispositivo de forma segura. Se pueden crear varias sesiones a la vez, pero eso requeriría múltiples instancias de PS abierto. Como SSH mencionado anteriormente, puede funcionar mejor en casos uno a uno o programado para garantizar que cada conexión se cree una a la vez para procesar cmdlets y luego se termina antes de pasar a la siguiente conexión. Y al igual que SSH, PSRemoting, el servicio que permite sesiones de PS, está deshabilitado de forma predeterminada y debe habilitarse antes de establecer una conexión remota.

Enter-PSSession -Identify Laptop02.local -Credential LOCALUSER

Asegurar cuentas de usuario / contraseñas con Get-Credential

Otro método que se puede usar para ingresar credenciales de forma segura es utilizar el cmdlet Get-Credential. Al aprovechar esto, el comando solicitará al usuario que ingrese sus credenciales de forma interactiva 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 según sea necesario sin requerir varias solicitudes o, lo que es peor, mostrar nombres de usuario o contraseñas en texto sin formato.

Get-Credential -Credential LOCALUSER
$cred = Get-CredentialNew-ADComputer -Title "Laptop03" -SamAccountName "Computer system03" -Path "OU=Desktops,DC=Regional" -Credential $cred

Ejecutar cualquier comando de forma remota con Invoke-Command

Como ocurre 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 lo mismo que en una sesión de PS dedicada, sin tener que preocuparse por habilitar el servicio de antemano. 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 en comparación con la sintaxis estándar de PS, pero una vez que lo domine, encontrará que este método permite ejecutar comandos de PowerShell y de otros fabricantes con facilidad.

Invoke-Command -Filepath "serversharescript1.bat" -ComputerName "Computer03.nearby" -Credential $cred 
Invoke-Command -ComputerName "Laptop03.regional" -ScriptBlock  Take a look at-ComputerSeureChannel -Restore 

Cifrar valores de cadena con ConvertTo-SecureString

Por último, otro competidor para proteger las credenciales, o cualquier otro dato privado, es el cmdlet ConvertTo-SecureString, que sirve para almacenar datos privados temporalmente en la computadora como un archivo cifrado durante la sesión o hasta que se eliminen. Al asegurar los valores de esta manera, el usuario se asegura de que el valor sea accesible durante toda la sesión (como cuando se ejecutan varios comandos que requieren el parámetro -Credential) y mantiene la confidencialidad de los valores para que no se puedan leer en texto plano.

VER: Ingeniería social: una hoja de trucos para profesionales de negocios (PDF gratuito) (TechRepublic)

A menudo, este método se presta perfectamente a procesos automatizados o con secuencias de comandos que están configurados para ejecutarse en un horario o si requieren que los datos se almacenen como un valor de cadena seguro para que las partes no autorizadas no puedan ver el contenido de una secuencia de comandos para extraer cualquier cosa que usted no quisiera No quiero caer en sus manos, como credenciales, nombres de host, direcciones IP, and many others.

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

Ver también



Enlace a la noticia unique