En aquest tema, explorarem les millors pràctiques de seguretat en PowerShell per assegurar que els teus scripts i entorns siguin segurs. La seguretat és un aspecte crític en qualsevol entorn de programació, especialment quan es treballa amb eines potents com PowerShell que poden tenir accés a recursos sensibles del sistema.

Continguts

Execució de Polítiques

PowerShell té diverses polítiques d'execució que determinen quins scripts es poden executar en el sistema. Les polítiques d'execució són:

  • Restricted: No es permet l'execució de cap script.
  • AllSigned: Només es poden executar scripts signats per un editor de confiança.
  • RemoteSigned: Es poden executar scripts locals sense signar, però els scripts descarregats d'Internet han d'estar signats.
  • Unrestricted: Es poden executar tots els scripts, però es mostra un avís per als scripts descarregats d'Internet.

Exemple de Codi

# Comprovar la política d'execució actual
Get-ExecutionPolicy

# Establir la política d'execució a RemoteSigned
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Explicació

  • Get-ExecutionPolicy: Mostra la política d'execució actual.
  • Set-ExecutionPolicy RemoteSigned -Scope CurrentUser: Estableix la política d'execució a RemoteSigned per a l'usuari actual.

Signatura de Scripts

Signar scripts és una manera de garantir que el codi no ha estat alterat des que va ser signat per l'autor. Això ajuda a prevenir l'execució de scripts maliciosos.

Exemple de Codi

# Signar un script amb un certificat
Set-AuthenticodeSignature -FilePath .\myscript.ps1 -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert)

Explicació

  • Set-AuthenticodeSignature: Afegeix una signatura digital a un script.
  • -FilePath .\myscript.ps1: Especifica el camí del script a signar.
  • -Certificate (Get-ChildItem -Path Cert:\CurrentUser\My -CodeSigningCert): Utilitza un certificat de signatura de codi del magatzem de certificats de l'usuari actual.

Gestió de Credencials

És important gestionar les credencials de manera segura per evitar exposar informació sensible.

Exemple de Codi

# Emmagatzemar credencials de manera segura
$cred = Get-Credential

# Utilitzar les credencials emmagatzemades
Invoke-Command -ComputerName Server01 -Credential $cred -ScriptBlock { Get-Process }

Explicació

  • Get-Credential: Mostra una finestra de diàleg per introduir les credencials de manera segura.
  • Invoke-Command -ComputerName Server01 -Credential $cred -ScriptBlock { Get-Process }: Executa un bloc de codi en un equip remot utilitzant les credencials emmagatzemades.

Ús de SecureString

SecureString és una classe que proporciona una manera segura d'emmagatzemar dades sensibles com contrasenyes.

Exemple de Codi

# Convertir una contrasenya a SecureString
$securePassword = ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force

# Crear un objecte PSCredential amb un nom d'usuari i una contrasenya segura
$credential = New-Object System.Management.Automation.PSCredential ("username", $securePassword)

Explicació

  • ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force: Converteix una contrasenya en text pla a un objecte SecureString.
  • New-Object System.Management.Automation.PSCredential ("username", $securePassword): Crea un objecte PSCredential utilitzant un nom d'usuari i una contrasenya segura.

Auditoria i Registre

L'auditoria i el registre són essencials per monitoritzar l'activitat dels scripts i detectar possibles problemes de seguretat.

Exemple de Codi

# Habilitar el registre de transcripcions
Start-Transcript -Path "C:\Logs\PowerShell_transcript.txt"

# Executar comandes
Get-Process

# Aturar el registre de transcripcions
Stop-Transcript

Explicació

  • Start-Transcript -Path "C:\Logs\PowerShell_transcript.txt": Inicia el registre de totes les comandes i la seva sortida en un fitxer de transcripció.
  • Stop-Transcript: Atura el registre de transcripcions.

Consells Addicionals

  • Evita l'ús de contrasenyes en text pla: Utilitza SecureString i PSCredential per emmagatzemar contrasenyes de manera segura.
  • Revisa els scripts abans d'executar-los: Especialment si provenen de fonts desconegudes.
  • Utilitza polítiques d'execució restrictives: Configura la política d'execució a AllSigned o RemoteSigned per augmentar la seguretat.
  • Mantén PowerShell actualitzat: Assegura't d'utilitzar la versió més recent de PowerShell per beneficiar-te de les últimes millores de seguretat.

Conclusió

En aquesta secció, hem explorat diverses pràctiques de seguretat que pots implementar en els teus scripts de PowerShell per protegir el teu entorn i les teves dades. Des de la configuració de polítiques d'execució fins a la gestió segura de credencials i l'auditoria, aquestes pràctiques t'ajudaran a mantenir un entorn segur i fiable.

Curs de PowerShell

Mòdul 1: Introducció a PowerShell

Mòdul 2: Scripting Bàsic

Mòdul 3: Treballant amb Objectes

Mòdul 4: Tècniques Avançades de Scripting

Mòdul 5: Automatització i Programació de Tasques

Mòdul 6: Remotització amb PowerShell

Mòdul 7: Funcions Avançades de PowerShell

Mòdul 8: PowerShell i DevOps

Mòdul 9: Millors Pràctiques i Consells Avançats

© Copyright 2024. Tots els drets reservats