En aquest tema, explorarem les consideracions de seguretat que cal tenir en compte quan es treballa amb PowerShell, especialment en entorns de remotització. La seguretat és un aspecte crític per garantir que els scripts i les operacions no comprometen la integritat del sistema ni la confidencialitat de les dades.
Conceptes Clau
-
Autenticació i Autorització:
- Autenticació: Verificació de la identitat de l'usuari o sistema.
- Autorització: Determinació dels permisos que té un usuari autenticat.
-
Execució de Scripts:
- Política d'Execució: Configuració que determina quins scripts es poden executar en un sistema.
-
Seguretat de les Sessions Remotes:
- CredSSP (Credential Security Support Provider): Protocol que permet la delegació de credencials.
- SSL/TLS: Protocols per assegurar la comunicació entre el client i el servidor.
-
Gestió de Credencials:
- Emmagatzematge Segur de Credencials: Utilització de mètodes segurs per emmagatzemar i gestionar credencials.
Autenticació i Autorització
Autenticació
PowerShell suporta diversos mètodes d'autenticació per a sessions remotes, incloent:
- Kerberos: Utilitzat en entorns de domini.
- NTLM: Utilitzat en entorns no dominis.
- CredSSP: Permet la delegació de credencials.
Autorització
Després de l'autenticació, PowerShell verifica els permisos de l'usuari per determinar si pot executar les accions sol·licitades. Això es fa mitjançant:
- Roles i Grups: Assignació de permisos basats en el rol o grup de l'usuari.
- Polítiques de Seguretat: Configuracions específiques que determinen els permisos.
Execució de Scripts
Política d'Execució
La política d'execució de PowerShell determina quins scripts es poden executar en un sistema. Les opcions inclouen:
- Restricted: No es permet l'execució de cap script.
- AllSigned: Només es permet l'execució de scripts signats per un editor de confiança.
- RemoteSigned: Els scripts descarregats d'Internet han d'estar signats per un editor de confiança.
- Unrestricted: Es permet l'execució de tots els scripts, però es mostra una advertència per als scripts no signats.
# Comprovar la política d'execució actual Get-ExecutionPolicy # Establir la política d'execució a RemoteSigned Set-ExecutionPolicy RemoteSigned
Seguretat de les Sessions Remotes
CredSSP
CredSSP permet la delegació de credencials, la qual cosa és útil per a operacions que requereixen autenticació en múltiples salts.
# Configurar una sessió remota utilitzant CredSSP $session = New-PSSession -ComputerName "Server01" -Authentication Credssp
SSL/TLS
Per assegurar la comunicació entre el client i el servidor, és recomanable utilitzar SSL/TLS.
# Configurar una sessió remota utilitzant SSL/TLS $session = New-PSSession -ComputerName "Server01" -UseSSL
Gestió de Credencials
Emmagatzematge Segur de Credencials
És important emmagatzemar les credencials de manera segura per evitar accessos no autoritzats.
# Emmagatzemar credencials de manera segura $cred = Get-Credential # Utilitzar les credencials emmagatzemades per a una sessió remota $session = New-PSSession -ComputerName "Server01" -Credential $cred
Exercici Pràctic
Exercici 1: Configurar una Sessió Remota Segura
- Objectiu: Configurar una sessió remota segura utilitzant SSL/TLS i CredSSP.
- Passos:
- Configura la política d'execució a
RemoteSigned
. - Crea una sessió remota utilitzant SSL/TLS.
- Utilitza CredSSP per a la delegació de credencials.
- Configura la política d'execució a
# Establir la política d'execució a RemoteSigned Set-ExecutionPolicy RemoteSigned # Emmagatzemar credencials de manera segura $cred = Get-Credential # Configurar una sessió remota utilitzant SSL/TLS i CredSSP $session = New-PSSession -ComputerName "Server01" -UseSSL -Authentication Credssp -Credential $cred
Solució
# Establir la política d'execució a RemoteSigned Set-ExecutionPolicy RemoteSigned # Emmagatzemar credencials de manera segura $cred = Get-Credential # Configurar una sessió remota utilitzant SSL/TLS i CredSSP $session = New-PSSession -ComputerName "Server01" -UseSSL -Authentication Credssp -Credential $cred
Resum
En aquesta secció, hem explorat les consideracions de seguretat en PowerShell, incloent l'autenticació i autorització, la política d'execució de scripts, la seguretat de les sessions remotes i la gestió segura de credencials. Aquests conceptes són fonamentals per garantir que les operacions de PowerShell es realitzin de manera segura i eficient.
Curs de PowerShell
Mòdul 1: Introducció a PowerShell
- Què és PowerShell?
- Instal·lació i Configuració de PowerShell
- Consola i ISE de PowerShell
- Comandes i Sintaxi Bàsiques
- Sistema d'Ajuda en PowerShell
Mòdul 2: Scripting Bàsic
- Variables i Tipus de Dades
- Operadors en PowerShell
- Sentències Condicionals
- Bucles en PowerShell
- Funcions i Scripts
Mòdul 3: Treballant amb Objectes
- Comprensió dels Objectes
- Propietats i Mètodes dels Objectes
- Pipelines i Manipulació d'Objectes
- Filtratge i Selecció d'Objectes
- Ordenació i Agrupació d'Objectes
Mòdul 4: Tècniques Avançades de Scripting
- Gestió d'Errors
- Depuració de Scripts
- Expressions Regulars
- Treballant amb Fitxers i Directoris
- Ús de Mòduls i Snap-ins
Mòdul 5: Automatització i Programació de Tasques
- Introducció a l'Automatització
- Creació de Tasques Programades
- Ús de PowerShell per a l'Administració del Sistema
- Automatització de Tasques d'Active Directory
- Automatització de Tasques de Xarxa
Mòdul 6: Remotització amb PowerShell
- Introducció a la Remotització
- Configuració de la Remotització
- Ús d'Invoke-Command
- Gestió de Sessions
- Consideracions de Seguretat
Mòdul 7: Funcions Avançades de PowerShell
- Perfils de PowerShell
- Personalització de l'Entorn de PowerShell
- Creació i Ús de Classes
- Treballant amb XML i JSON
- Ús de PowerShell amb REST APIs
Mòdul 8: PowerShell i DevOps
- Introducció a DevOps
- Ús de PowerShell amb Pipelines CI/CD
- Infraestructura com a Codi (IaC)
- Gestió de Recursos al Núvol amb PowerShell
- PowerShell i Docker