Cómo proteger las contraseñas con PowerShell

¿Tiene bucles o scripts que esperan que ingrese una clave secreta? ¿Tiene que almacenar estas contraseñas en texto sin formato en su contenido en contra de los deseos de su oficial de seguridad?

PowerShell proporciona un método para guardar una clave secreta o informar al cliente sobre los datos. Luego puede usar estos datos para crear lo que se conoce como una credencial de PSC. La mayoría de los comandos de PowerShell que admiten asociaciones de servidores remotos (WMI, CIM, Invoke-Command, etc.) proporcionan una forma de aprobar una certificación.

Mientras que algunos requieren solo la clave secreta, otros requieren el elemento completo para validar un cliente. Este artículo en PowerShell se puede realizar de varias formas, según sus necesidades. Los supervisores a menudo necesitan almacenar contraseñas fácilmente en una variedad de scripts de PowerShell en situaciones informáticas.

Como probablemente sepa, esto es increíblemente poco confiable en un clima de compilación porque otros clientes del servidor o presidentes pueden ver la clave secreta en texto sin formato. De esta manera, es más inteligente involucrar una estrategia más segura para incluir contraseñas en los scripts de PowerShell o cifrar contraseñas cuando la información inteligente es inimaginable.

Credencial de PSC

El tipo completo es el objeto "System.Management.Automation.PSCredential". Los comandos que usan un parámetro "-Credential" generalmente requerirán que se pase este tipo. Tienes algunas formas diferentes de hacerlo dependiendo de tus necesidades. Cada método generalmente se alinea con dos escenarios diferentes: interactivo o automatizado. El objeto PSCredential requiere dos argumentos:

  • Nombre de usuario (Sistema.Cadena)
  • Contraseña (Sistema.Seguridad.SecureString)

El nombre de usuario es bastante obvio, pero la contraseña no es solo un valor de cadena. No puede simplemente tomar una cadena y declararla como SecureString. Para crear una SecureString, primero debe especificar una contraseña. Dependiendo de cómo lo haga, puede ser un riesgo de seguridad en la mayoría de los entornos porque está pasando (o almacenando) su contraseña en texto sin formato. Cuando trabaje con contraseñas en PowerShell, es mejor ofuscar su contraseña para protegerla de miradas indiscretas. PowerShell ofrece algunas opciones diferentes para ocultar su contraseña. Los explicaré a continuación con algunos ejemplos.

Una pequeña advertencia

Cuando trabaje con objetos PSCredential, notará que hay una forma de leer la contraseña como texto sin formato. Este objeto contiene propiedades para un método específico que devuelve la contraseña en texto sin formato. El método se llama: GetNetworkCredential(). Este método tiene cuatro propiedades: dominio, contraseña, contraseña segura y nombre de usuario. Estas propiedades están presentes porque puede haber momentos en los que esté trabajando con comandos o ejecutables de terceros y necesite pasar la contraseña en texto no cifrado. Puede usar esta propiedad sin mostrarla como texto sin formato en su secuencia de comandos.

Esto significa que debe tener en cuenta que, si bien los métodos que se muestran son útiles para cumplir con ciertos requisitos de seguridad, también debe tener en cuenta el riesgo de que tales variables permanezcan en la memoria después de que se complete el script. . Lo mejor es hacer el hábito de limpiar al final. Siempre que utilice los métodos enumerados a continuación, deben ser locales para la función particular que los utiliza.

anfitrión de lectura

Los comandos interactivos significan que le pedirá al usuario que ingrese cierta información, como una contraseña. Read-Host es útil para solicitar la contraseña en la línea de comando, especialmente si no necesita el nombre de usuario también. Para obtener el objeto SecureString, solo necesita usar el parámetro "-AsSecureString". Esto mostrará la contraseña con asteriscos a medida que el usuario escribe y devolverá un objeto SecureString.

$t = Read-Host -Indicador "Ingrese su contraseña" -AsSecureString$t.GetType()

Obtener credencial

El uso de este comando le dará al usuario una ventana emergente con la que probablemente esté más familiarizado para ingresar su nombre de usuario y contraseña. La ventaja que tiene con este comando es que después de que el usuario haga clic en el botón "Aceptar", devolverá un objeto PSCredential. Esto puede ahorrarle algunas líneas de código más en comparación con el comando "Read-Host", que aún requeriría que construya el objeto PSCredential. Este comando es el favorito para los comandos de una sola línea en los que necesita crear rápidamente un objeto PSCredential para un comando dado en PowerShell.

”'powershell $t = Get-Credential -Message “Ingrese su contraseña” “`

Después de hacer clic en Aceptar podemos ver que se devuelve un objeto PSCredential. Si desea usar esto en una sola línea como con "Get-WmiObject", simplemente puede hacer esto:

Get-WmiObject win32_service -ComputerName Server1 -Credential (Get-Credential)

Sin usted, esta web no existiria. Gracias por visitarme, espero que le haya gustado y vuelva. Gracias ☺️

Cómo proteger las contraseñas con PowerShell

Fecha actualizacion el 2022-05-07. Fecha publicacion el 2022-05-07. Autor: Oscar olg Mapa del sitio Fuente: bollyinside