Just Enough Administration

Just Enough Administration

In un mondo in cui la velocità e l’efficienza spesso prendono il sopravvento sulla sicurezza, molti amministratori cadono nella trappola di concedere permessi senza ponderarne attentamente le conseguenze.

Questo approccio, pur semplificando le operazioni quotidiane di amministrazione dell’ambiente Active Directory, apre la porta a rischi significativi a livello di sicurezza, mettendo in pericolo l’integrità della nostra infrastruttura.

Tuttavia, esiste una luce all’orizzonte (oggi ho la vena poetica 😊) che, se implementata, promette di cambiare questo modo di amministrare.

La funzionalità JEA (Just Enough Administration) di Powershell.JEA si pone come un punto di svolta nella gestione di Active Directory (ovviamente non solo AD, ma tutto ciò per Powershell può gestire), offrendo agli amministratori la possibilità di ASSEGNARE ESATTAMENTE i permessi necessari, né più né meno, rivoluzionando il modo di delegare l’amministrazione e garantendone, contestualmente anche la sicurezza.

Perché è importante implementare JEA?

L’utilizzo di Account Privilegiati per gestire ed amministrare Active Directory o i Windows Server in generale presenta notevoli rischi per la sicurezza.

🔎 Immaginate di avere più persone che lavorano su un Windows Server: potrebbero esserci amministratori o operatori Help-Desk che hanno bisogno di eseguire determinate operazioni come il riavvio di un servizio di tanto in tanto

ESEMPIO: Il riavvio del servizio di spooler di stampa su un Printer Server o il riavvio del servizio IIS ecc.

Queste operazioni richiederebbero diritti amministrativi, ma per un operatore del Help-Desk, avere tali privilegi è eccessivo e pericoloso, in quanto potrebbe abusarne lui stesso o un eventuale malintenzionato che abbia ottenute le sue credenziali di accesso.

Ahimè, rimuovere i privilegi amministrativi non è un’operazione semplicissima e a volte non sempre fattibile.

________________________________________

L'idea alla base di JEA è che possiamo decidere COSA È PERMESSO FARE.

Infatti, l’amministratore può decidere non solo quali COMANDI puoi eseguire, ma decidere quali PARAMETRI su quei comandi puoi usare, in più può decidere cosa si può inserire come VALORE di quel parametro.

________________________________________

Ritornando al nostro esempio, in questo modo, l’operatore del Help-Desk potrà usare Powershell Remoting per accedere al Server e poter riavviare il SOLO servizio di Spooler di stampa e basta, nonostante di default non avrebbe i privilegi per accedere su tale Server.

Grazie a JEA non è possibile utilizzare altri comandi, oltre a quelli configurati.

________________________________________

🟡 ACCOUNT VIRTUALI

JEA utilizza il concetto di Account Virtuali.

Fondamentalmente sono Account TEMPORANEI che “nascono” con la creazione della sessione remote e “muoiono” con la chiusura della sessione.

Questi account virtuali sono progettati per concedere PRIVILEGI TEMPORANEI agli utenti, consentendo a chi avvia la sessione di agire come se disponesse di un account con maggiori autorizzazioni. Così, l'utente può eseguire comandi, previsti dalla configurazione, che di solito necessitano di privilegi superiori.

JEA facilita quindi la rimozione degli utenti dai gruppi privilegiati (sia locali che di dominio) e semplifica il controllo delle azioni che gli utenti eseguono in ogni computer.

SCENARIO - Andiamo a vedere uno scenario reale che è possibile riadattare ad ogni esigenza: Supponiamo di dover designare ad un gruppo di utenti (senza alcun privilegio, quindi Domain Users), il permesso di poter effettuare il SOLO “Restart” del servizio Spooler di stampata su un SOLO Server specifico. Quindi gli utenti membri del gruppo Active Directory “Spooler Admins” devono potere eseguire tramite Powershell Remoting solo il seguente comando

Restart-Service -Name Spooler        

Tutta la configurazione di Powershell JEA si basa su 2 file:

1. PS Session Configuration (.pssc): Questo è il file che detiene la configurazione della sessione (configurazione dell’endpoint)

2. Capability File (.psrc): questo è il file dove andremo a definire quali saranno i comandi, parametri e ValidateSet che gli utenti potranno usare in quella sessione di Powershell Remoting.

Tutte le configurazioni che andremo a vedere, dovranno essere eseguite sui Server/Endpoint dove gli utenti remoti dovranno collegarsi per riavviare il servizio di Spooler.

New-PSSessionConfigurationFile -Path 'C:\Program Files\WindowsPowerShell\spooler_configuration.pssc'        

Nella mia demo ho abilitato, la trascrizione di Powershell tramite la chiave “TranscriptDirectory”, in modo che tutto quello che verrà eseguito nella sessione remota, verrà registrato all’interno di un file di log in quella directory.

Ho abilitato il Virtual Account, così l'utente in quella sessione lavorerà con l’account virtuale. Dopodiché tramite la sezione “RoleDefinitions” sono andato a DEFINIRE il gruppo Active Directory su cui applicare tale regola e il file .PSRC che conterrà la DEFINIZIONE dei comandi che gli utenti membri del gruppo “Spooler Admins” potranno usare.

Con questo comando andiamo a creare la cartella che conterrà tutte le RoleCapabilities (se la cartella non esiste già)

New-Item -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities' -ItemType Directory        

Adesso vado a creare il file che DEFINISCE quello che gli utenti potranno eseguire con quel ruolo

New-PSRoleCapabilityFile -Path 'C:\Program Files\WindowsPowerShell\Modules\JEA\RoleCapabilities\Spooler_Admins.psrc'        

Tramite la chiave “VisibleCmdlets” andiamo a definire quali sono le cmdlet che saranno disponibili agli utenti. Impostando anche il Parametro e il ValidateSet che potranno usare. Inoltre, come comando esterno a Powershell, ho impostato il Whoami.exe

Adesso per rendere attiva la configurazione, procedo alla REGISTRAZIONE della configurazione tramite il seguente comando:

Register-PSSessionConfiguration -Name Spooler_Admins -Path 'C:\Program Files\WindowsPowerShell\spooler_configuration.pssc'         

Tutte le impostazioni saranno attive solo dopo il riavvio del servizio WinRM

Restart-Service WinRM        

Per verificare se la registrazione per la sessione “Spooler Admins” sia stata registrata correttamente, dobbiamo usare la seguente cmdlet

Get-PSSessionConfiguration        

Andiamo ora a testare se tutto funziona correttamente.

Mi sposto sul Client e mi autentico con un utente membro del gruppo “SpoolerAdmins”.

Per usare JEA dobbiamo usare il parametro “ConfigurationName” altrimenti la sessione verrebbe reindirizzata sull’istanza di default e l’utente non privilegiato non avrebbe i diritti per accedervi.

Enter-PSSession -ComputerName HERO-SVR1 -ConfigurationName Spooler_Admins        

Una volta entrato nella sessione Powershell remota sul HERO-SVR1, possiamo notare che tra i comandi disponibili all’utente, troviamo “Restart-Service”.

Avendo messo una restrizione anche sul tipo di ValidateSet che è possibile usare, possiamo notare che l’utente po’ SOLO riavviare il servizio chiamato “Spooler” e basta.

________________________________________

CONCLUSIONI

In conclusione, l'uso di JEA consente anche a un utente non privilegiato di accedere a un server per eseguire attività amministrative predefinite per il suo ruolo. A seconda della configurazione, un account virtuale può essere utilizzato per conto dell'utente per consentire agli utenti remoti non amministrativi di svolgere attività che richiedono privilegi amministrativi. Naturalmente, ogni comando eseguito con l'account virtuale viene registrato e può essere ricondotto all'utente di origine.

JEA rappresenta un'efficace strategia per la gestione sicura dei privilegi, limitando i permessi solo al necessario e riducendo così la superficie di attacco. L’implementazione è fortemente consigliata!





Per visualizzare o aggiungere un commento, accedi

Altri articoli di Carmelo Cavallo

Altre pagine consultate