Archivi categoria: Open Source

Effettuare il Login su macchine Linux con Azure AD

Facebooktwittergoogle_plusredditlinkedin

Nella gestione di infrastrutture in cui sono presenti numerose macchine è indispensabile avere un servizio di autenticazione centralizzato, in particolar modo quando gli utenti che devono effettuare i login cambiano frequentemente.

Non è buona norma, infatti, distribuire agli utenti le password del “superuser” dei sistemi, in primo luogo perché un eventuale furto di credenziali costituirebbe un grave problema di sicurezza, e poi perché ogni volta che uno di questi utenti deve essere disabilitato siamo costretti a modificare la password del superuser e ridistribuirla solo alle persone autorizzate.

Il buonsenso, e soprattutto le normative in materia di privacy, impongono l’utilizzo di credenziali personalizzate per l’accesso ai sistemi, così una gestione locale per ogni macchina dell’autenticazione può diventare scomoda, perché un eventuale cambio password deve essere eseguito su tutti i sistemi.

Sulle macchine Windows il problema è risolto implementando Active Directory e già da tempo è possibile sincronizzare gli utenti AD locali con quelli definiti su Azure; è altresì possibile utilizzare il servizio Azure AD per l’autenticazione di client e server gestendo le utenze direttamente dal portale Azure, facendo a meno di un controller di dominio locale. Da pochissimo tempo il login utilizzando Azure AD è disponibile anche sulle macchine Linux, dove fino a poco tempo fa era utilizzato per lo più il servizio LDAP in rete locale.

Attraverso Azure AD è possibile quindi aggiungere e rimuovere facilmente utenti assegnando loro i privilegi per effettuare il login su macchine Linux in Azure, controllare accessi e privilegi in maniera centralizzata, e sottoscrivendo AD Premium è possibile utilizzare le funzionalità Just-in-time per la configurazione dinamica delle regole di firewall.

Il login sulle macchine Linux è reso possibile da un’estensione, chiamata AADLoginForLinux, quindi per utilizzare questa funzionalità sarà sufficiente creare una macchina includendo l’estensione oppure aggiungerla via command line alle macchine esistenti.

Per l’implementazione dell’estensione su una nuova macchina è sufficiente abilitare “Accedi con Azure Active Directory” nella fase 1 della creazione della VM. La funzionalità è in preview e questa opzione non è ancora presente su tutti i template; è comunque possibile installare successivamente l’estensione da command line.

Per l’installazione da command line utilizziamo Azure Cloud Shell, l’interfaccia a riga di comando avviabile direttamente da browser dall’interno del portale Azure; invito tutti coloro che non l’hanno mai utilizzata a provarne le funzionalità, poiché quella che può sembrare una semplice shell è in effetti una macchina virtuale con il proprio storage al cui interno è possibile salvare script personalizzati e molto altro. Azure Cloud Shell è sempre associata ad una risorsa disco quindi al primo utilizzo dobbiamo indicare all’interno di quale gruppo di risorse creare tutto il necessario per il suo funzionamento.

Al momento è possibile installare l’estensione sulle distribuzioni indicate nella tabella seguente, quindi assicuriamoci di trovarci in una configurazione supportata e procediamo.

Distribuzione Versione
CentOS CentOS 6.9 e CentOS 7.4
RedHat Enterprise Linux RHEL 7
Ubuntu Server Ubuntu 14.04 LTS, Ubuntu Server 16.04 e Ubuntu Server 17.10

Apriamo Azure Cloud Shell dall’icona in alto a destra e scegliamo il tipo di ambiente su cui lavorare. E’ possibile utilizzare Bash oppure PowerShell, e per questo esempio utilizzeremo la prima opzione.

Eseguamo il comando az vm estension set indicando il nostro gruppo risorse ed il nome della VM, nel nostro caso rispettivamente GruppoRisorse1 ed Ubuntu

az vm extension set –publisher Microsoft.Azure.ActiveDirectory.LinuxSSH –name AADLoginForLinux –resource-group GruppoRisorse1 –vm-name Ubuntu

Ora la macchina può accettare login di utenti presenti su Azure AD, ma prima è necessario abilitare gli utenti al login sulla macchina, scegliendo se possono farlo con privilegi amministrativi o limitati.

Per fare questo apriamo Controllo di accesso (IAM), l’interfaccia per la gestione del controllo di accesso, dopo aver selezionato la VM dal pannello delle risorse.

Facciamo Click su Aggiungi e selezioniamo l’utente aggiungendolo al gruppo Virtual Machine Administrator (o User) Login.

La stessa operazione è eseguibile da Cloud Shell con i seguenti comandi:

vm=$(az vm show –resource-group GruppoRisorse1 –name Ubuntu–query id -o tsv)

az role assignment create role “Virtual Machine Administrator Login”assignee gnanoia@gnanoia.onmicrosoft.comscope $vm

LogIn alla VM

Proviamo quindi ad effettuare il login sulla macchina utilizzando un client SSH; procuratevi l’indirizzo IP della VM ed utilizzate il vostro client preferito. Io sto utilizzando il client integrato in Windows Subsystem for Linux in Windows 10

ssh -l gnanoia@gnanoia.onmicrosoft.com 137.117.242.42


Il server vi chiederà di aprire con un browser la pagina https://microsoft.com/devicelogin immettendo un OTP.


Specifichiamo quindi sul browser le credenziali dell’utente AAD ed otterremo una pagina di conferma.


Torniamo quindi sul nostro client SSH e premiamo invio come richiesto.


Siamo ora loggati sulla macchina come utente Azure Active Directory e possiamo dire di aver fatto un altro passo verso la messa in sicurezza dei nostri sistemi.

Conclusioni

E’ interessante notare come abbiamo eseguito tutto dall’”esterno” della macchina virtuale, installando i componenti necessari ed assegnando i privilegi agli utenti senza mai effettuare il login sulla macchina; questo è ovviamente un grande vantaggio se la necessità è quella di gestire un numero elevato di macchine, riuscendo ad ottenere in poco tempo elevati standard di sicurezza, mantenendo snello il sistema di gestione.

RISC-V: hardware non completamente open source

Facebooktwittergoogle_plusredditlinkedin

RISC-V è un instructruction set (ISA) basato sull’utilizzo di reduced instruction set compute (RISC per l’appunto), una metodologia che prevede la progettazione di microprocessori utilizzando un’architettura più semplice per permettere l’esecuzione di set di istruzioni in tempi più rapidi.

RISC-V ha riscosso particolare interesse nel mondo dell’open source, sia hardware che software, visto che può essere utilizzato liberamente per qualunque progetto consentendo a chiunque di progettare, produrre e commercializzare processori basati su questa architettura.

Purtroppo, nonostante ISA sia davvero completamente aperto, le implementazioni di RISC-V lo sembrerebbero un po’ meno.

Queste perplessità arrivano direttamente da Ron Minnich, a capo del progetto Coreboot, che da una decina di anni è impegnato per cercare di sostituire i firmware BIOS/UEFI proprietari con uno open.

Il suo commento, in particolare, si riferisce alla board HiFive Unleashed presentata settimana scorsa:

All this said, note that the HiFive is no more open, today, than your
average ARM SOC; and it is much less open than, e.g., Power. […] Open instruction sets do not necessarily result in open implementations. An open implementation of RISC-V will require a commitment on the part of a company to opening it up at all levels, not just the instruction set.

Ad oggi, HiFive, non è più aperto del vostro ARM SOC medio; ed è molto meno aperto, ad esempio, dei Power. Instruction set aperti non significano implemetazioni aperte. Un’implementazione open di RISC-V richiederà impegno da parte della società per aprirsi su diversi livelli, non solo a livello di instruction set.

Conclude infine augurandosi che altri produttori lavoreranno su ulteriori implementazioni di RISC-V, stavolta open sul serio!

Utilizzo di Azure DNS per la validazione automatica di Let’s Encrypt

Facebooktwittergoogle_plusredditlinkedin

In ICTPower ci siamo occupati a più riprese della Certification Authority Let’s Encrypt, ed abbiamo visto come è possibile utilizzarla in diversi scenari.

In Ambienti OpenSource, con la validazione basata su Apache, In un altro articolo abbiamo proposto lo scenario che si può utilizzare con IIS come base per la validazione.

In questo articolo vediamo quali sono le modalità di validazione per il rilascio ed il rinnovo dei certificati sulla base di ambienti DNS, in questo modo è possibile utilizzare un servizio DNS, anche in hosting, per la gestione del ciclo di vita dei certificati gestiti da Let’s Encrypt. Le procedure proposte si basano sul client Win-Acme (WACS) e quindi in ambiente Windows.

Let’s Encrypt utilizza, analogamente a quanto visto per la validazione tramite servizi WEB, un’automazione che provvede a gestire determinati record all’interno del DNS.

Figura 1 Validazione tramite servizio DNS generico

Nella figura 1 è riportato un esempio di come Win-Acme, tramite le opzioni avanzate, permette di utilizzare il DNS per la validazione.

Nell’esempio sopra Win-Acme ricerca uno script a cui passare “hostname, record name e token“, e se opportunamente eseguito interagisce con il servizio DNS in modo da “scrivere” all’interno queste informazioni che lette dalla CA prima del rilascio del certificato, attestano che il richiedente è il reale proprietario del dominio.

E’ quindi chiaro che la disponibilità da parte del fornitore del servizio DNS ad una gestione automatizzata è fondamentale.

Nel panorama Italiano, Aruba non permette questo tipo di automazione (almeno da richiesta fatta al supporto tecnico nel mese di febbraio 2018), ma come vedremo in seguito questo non è necessariamente un limite.

Esistono diversi gestori di servizi DNS che rilasciano nelle gallery relative alle automazioni, script nati per far interagire i client CertBot con il loro DNS in modo da automatizzare le richieste verso Let’s Encrypt.

La maggioranza delle automazioni finora sono relative ad ambienti Linux.

Nel nostro caso utilizziamo invece Azure-DNS per la validazione da parte della CA, non ci occuperemo di come effettuare la delega al servizio Azure della risoluzione per il dominio, questa attività è trattata in dettaglio in questo articolo e si presuppone sia già stata effettuata.

Prima di procedere con la richiesta del certificato vero e proprio è necessario configurare il servizio Azure-DNS in modo che permetta l’accesso ad un “utente” con le credenziali minime per poter creare e cancellare record all’interno del Database DNS.

Questa tipologia di accesso è possibile con la creazione di un Service Principal Account
che possiamo definire come una identità di livello applicativo.

     Assign permissions to the app identity that are different than your own permissions. Typically, these permissions are restricted to exactly what the app needs to do.

Per poter creare una identità di questo tipo possiamo utilizzare Azure Powershell e con l’utilizzo di alcune command let procedere alla sua creazione, l’accesso all’ambiente PS avviene direttamente dal portale Azure

Figura 2 accesso alla Cloud Shell

La preparazione dell’ambiente non è immediata e può richiedere anche più di un minuto, terminato l’accesso, disponiamo di un ambiente comandi direttamente sulla sottoscrizione.

Per procedere alla creazione del Principal account che verrà utilizzato per l’automazione è sufficiente utilizzare questi comandi

$Password = ConvertTo-SecureString -String “InserireQuiLaPassword” -AsPlainText -Force

New-AzureRmADServicePrincipal -DisplayName LetsEncrypt -Password $Password

Figura 3 creazione del service principal

In questo modo è stato creato l’account “Letsencrypt” con la relativa password ed è necessario assegnare i permessi di accesso alla zona DNS relativa al dominio per il quale stiamo richiedendo il certificato

Figura 4 attribuzione dei permessi

Accedendo alla gestione della zona robimassa.cloud tramite Access Control (IAM) si attribuisce il ruolo di DNS Zone Contributor al Service Principal Letsencrypt creato in precedenza.

La preparazione dell’ambiente relativo al servizio DNS è completata e prima di procedere alla generazione del certificato è utile recuperare alcune informazioni che saranno poi richieste dal client Win-Acme.

  • Tenant ID (directory ID) ossia l’identificativo della Directory a cui ci stiamo riferendo
  • Client ID l’identificativo del Service Principal creato prima
  • Secret la password definita per il Principal
  • DNS Subscription ID l’identificativo del Servizio DNS in questo caso (robimassa.cloud)
  • DNS Resource Group Name il resource group definito per la risorsa DNS pubblica

In questa guida si fa riferimento al dominio robimassa.cloud, forse è superfluo specificarlo, ma il dominio DEVE essere un dominio pubblico regolarmente raggiungibile e quindi acquistato tramite i normali canali commerciali, nello specifico questo dominio è stato acquistato da Aruba.

Generazione del certificato

Il client Win-Acme dovrà essere eseguito con l’opzione –centralsslstore in modo da permettere l’archiviazione dei certificati (SAN o singolo Host) all’interno di una cartella, questo è necessario nel nostro caso in quanto i certificati rilasciati non vengono associati in automatico ad un Host Web, ma sono archiviati per un utilizzo successivo.

letsencrypt.exe –centralsslstore C:\letsencrypt-san\

vengono richieste a questo punto le impostazioni di base che sono quelle viste in figura 1 ad eccezione della validazione, per la quale dovremo selezionare l’opzione 1 ossia [dns-01] Azure DNS

Figura 5 richiesta validazione su Azure DNS

Proseguendo dovremo fornire le indicazioni relative all’accesso automatico del client come riportato sopra, ed al termine completata l’esecuzione, verranno salvati i certificati nella directory.

Figura 6 richiesta certificato

A questo punto il certificato è correttamente salvato in formato pfx e disponibile ad essere utilizzato, può ancora essere definito un utente con cui verrà eseguita periodicamente la task di rinnovo.

Se fosse necessario verificare i certificati emessi è possibile, sempre client Win-Acme la procedure di verifica.

Figura 7 verifica dei certificati emessi

Riferimenti

Novità di Windows Subsystem for Linux in Windows 10 Build 17063 (e successive)

Facebooktwittergoogle_plusredditlinkedin

Come facilmente immaginabile, anche nelle ultime build di Windows 10 del programma Insider ci sono novità importanti che riguardano il componente Windows Subsystem for Linux. Ricordiamo che il programma Insider permette di testare in anteprima le ultime novità del sistema operativo Windows 10 anche con grande anticipo rispetto al rilascio ufficiale, quindi tutto ciò che leggerete in questo articolo sarà sicuramente parte integrante della prossima versione di Windows 10, conosciuta per ora con il nome RS4 o 1803. Riguardo alla funzionalità Windows Subsystem for Linux la componente che ha subito il cambiamento più importante è sicuramente il sistema di gestione dei permessi, che già dalla build 17063 ha visto un upgrade fondamentale; è stata poi aggiunta la possibilità di configurare attraverso un file di testo una serie di parametri da passare alla shell linux al momento dell’apertura.

La gestione dei permessi è sicuramente una delle caratteristiche più difficili da gestire nell’interazione tra Windows e WSL, poiché l’idea di avere un unico sistema su cui utilizzare indifferentemente comandi ed applicazioni Windows e Linux si scontra con le profonde differenze che ci sono tra i due sistemi da questo punto di vista. A segnare i confini tra un sistema e l’altro è sicuramente il filesystem, poiché l’NTFS di Windows non contempla l’esistenza dei “permission bits”, che sono invece alla base della gestione dei permessi sotto linux. Non mi dilungherò troppo nel dettaglio sulla gestione dell’accesso a file e cartelle da parte di linux; se qualcuno volesse approfondire questo argomento riporto un articolo molto esaustivo dal sito linux.com (https://www.linux.com/learn/understanding-linux-file-permissions).

Per risolvere questo limite WSL supporta il filesystem DrvFs che, attraverso una sorta di “plugin”, permette di salvare per ogni file una serie di metadati, all’interno dei quali sono memorizzate le informazioni circa proprietà e permessi così come li troveremmo su un sistema Linux.

Gestione dei permessi

Prima della build 17063 i files presenti sul filesystem Windows, risultavano tutti appartenere all’utente root e con permessi di lettura/scrittura abilitati, ed eventuali comandi chown e chmod per cambiarne la proprietà o i permessi non sortivano effetti, pur non restituendo errori. A partire da questa build, invece, è stato introdotto il supporto ai permission bits e al cambio di proprietario di files e cartelle, sia all’interno del filesystem nella distribuzione linux emulata, sia all’interno del filesystem Windows montato.

Notiamo immediatamente che eseguendo il comando

ls -al

nella home del nostro utente predefinito vediamo che il proprietario dei files è proprio il nostro utente (in questo caso chiamato gnanoia)

E’ possibile, inoltre, utilizzare il comando chown per modificare il proprietario di file e cartelle, e chmod per modificare i permission bits. Vediamo nello screenshot seguente come abbiamo creato un file di testo con l’utente root e ne abbiamo cambiato proprietà e permessi.

Per consentire il cambio dei permessi nel filesystem DrvFS, cioè nel filesystem Windows montato sulla distribuzione linux, è necessario aggiungere nell’opzione mount il paramentro -o metadata. Questo farà si che ogni file e cartella porti con sé un file (nascosto all’utente) all’interno del quale sono indicati i permessi così come li vedrebbe un sistema operativo linux.

All’apertura della shell bash, poiché il filesystem è montato di default senza il parametro metadata, sarà necessario prima smontarlo per poterlo rimontare con le opzioni corrette. Smontiamo quindi la partizione c: con:

sudo umount /mnt/c

e la montiamo con:

sudo mount -t drvfs C: /mnt/c -o metadata

Da questo momento in poi i comandi chown e chmod avranno effetto anche sui file della nostra partizione C: di Windows. Cambiare i permessi dall’interno della shell linux, tuttavia, non avrà effetto sull’accesso a questi file relativamente al sistema operativo Windows.

Configurazione automatica di wsl

Come accennato all’inizio di questo articolo a partire dalla build 17093 è possibile passare a WSL alcuni parametri per la configurazione della bash al momento dell’apertura. Proprio come indicato in precedenza, quindi, possiamo indicare a WSL di montare l’unità C di Windows utilizzando il supporto ai metadati già in fase di apertura, in modo da non dover smontare l’unità e rimontarla con le apposite opzioni ad ogni utilizzo.

Tutte le configurazioni vanno passate a WSL attraverso un file di testo chiamato wsl.conf che va posizionato all’interno della cartella /etc della distribuzione linux da utilizzare. Il file di esempio seguente consente appunto di montare l’unità C con il supporto ai metadati, in modo da utilizzare anche in questa partizione la gestione dei permessi di linux.

[automount]

enabled = true

root = /windir/

options = "metadata,umask=22,fmask=11"

mountFsTab = false

Vediamo infatti come all’apertura dell’app Ubuntu lanciando il comando mount è possibile notare il supporto ai metadati attivo sull’unità C:

Per-directory case sentitivity

La build 17110 introduce un’altra novità molto interessante per l’interoperabilità tra Windows e WSL: la gestione dei nomi di file e cartelle in modo case sensitive. Chi usa linux abitualmente sa benissimo che i nomi di files e cartelle sono case sensitive e quindi due nomi scritti con maiuscole e minuscole differenti identificano di fatto due file diversi, a differenza degli utenti Windows che non danno nessuna importanza al tipo di lettere utilizzate. Dovendo gestire, quindi, su un unico sistema sia Windows che Linux questo aspetto è uno di quelli che pensavamo avrebbe fatto la differenza tra un linux “vero” ed uno gestito da WSL. Windows 10 in realtà è sempre stato in grado di distinguere i file utilizzando il metodo case sensitive; passando alla syscall Createfile il parametro FILE_FLAG_POSIX_SEMANTICS, il sistema operativo è in grado di gestire lettere maiuscole e minuscole in maniera differente. Questa possibilità è gestita da una chiave di registro, che in maniera globale permette al sistema di riconoscere e dare un diverso significato alle lettere maiuscole e minuscole all’interno dei nomi dei file; modificando questa chiave, però, si ottiene spesso un effetto distruttivo poiché le applicazioni non sono fatte per supportare questa funzionalità.

WSL da sempre è in grado di bypassare il controllo di questa chiave e gestire i nomi dei file indipendentemente da Windows, così file e cartelle presenti nel filesystem linux sono sempre case sensitive.

A partire dalla build 17110, però, possiamo estendere questa possibilità anche alle cartelle presenti sul filesystem Windows, utilizzando il comando fsutil.exe

In particolare possiamo abilitare e disabilitare il supporto ai nomi Case Sensitive da Windows rispettivamente con i seguenti comandi da eseguire su un prompt con privilegi elevati:

fsutil.exe file setCaseSensitiveInfo <path> enable

fsutil.exe file setCaseSensitiveInfo <path> disable

Per integrare questo supporto su WSL sarà necessario inserire il parametro case=dir tra le opzioni del comando mount.

E’ possibile quindi creare una cartella dal prompt di DOS con:

mkdir cartella

Abilitare il supporto ai nomi case sensitive con:

fsutil.exe file setCaseSensitiveInfo cartella enable

e successivamente creare all’interno della cartella due file di testo chiamati FILE.txt e File.txt esattamente come avremmo fatto con una shell linux.

Conclusioni

Come abbiamo visto lo sviluppo su WSL procede a ritmi elevatissimi, quindi non ci resta che stare a guardare le sorprese che sono in serbo per noi nelle prossime build, non dimenticandoci che il componente WSL e tutte le sue incredibili potenzialità sono da poco disponibili anche sulle ultime build di Windows Server 2016.

Generazione di certificati SAN con Let’s Encrypt ed utilizzo in Microsoft Exchange

Facebooktwittergoogle_plusredditlinkedin

Come abbiamo già avuto modo di analizzare in articoli precedenti, Let’s Encrypt, in quanto CA, permette anche il rilascio di certificati di tipo SAN (Subjet Alternative Names), ossia certificati che sono emessi e quindi sono validi per più nomi host di uno stesso dominio oppure per nomi host differenti di domini differenti.

La possibilità di ottenere certificati come indicato, non è da confondere con l’emissione di certificati di tipo Wildcard (*) ossia di un certificato valido per tutti gli host di un singolo dominio

Sono esempi di certificati di tipo SAN rilasciati da Let’s Encrypt i seguenti

  • mail.robimassa.cloud
  • autodiscover.robimassa.cloud

esempi di certificati per uno stesso dominio ma per host differenti

  • web.robimassa.it
  • portale.robimassa.cloud

esempi di certificati per host in domini differenti.

Per quanto riguarda i certificati Wildcard, Let’s Encrypt ha annunciato che nel gennaio del 2018 avrebbe emesso questo tipo di certificati, ma recentemente stato pubblicato un annuncio che informa dello slittamento del rilascio di questa funzione.

Exchange può utilizzare certificati di questo tipo emessi da Let’s Encrypt

Nel caso di questo sevizio, per l’accesso alle risorse mail dobbiamo dichiarare in DNS un record di tipo “A” riferito al portale webmail, ed un record, sempre di tipo “A” con nome autodiscover

Per una descrizione più dettagliata sull’uso e sulla funzione di questa informazione dichiarata in DNS è possibile leggere l’articolo Autodiscover service

In modo molto semplicistico possiamo dire che l’informazione ottenuta con “autodiscover” sia essa in un record di tipo A o in un record di tipo SRV permette una identificazione automatica di risorse di servizi di collaborazione come Exchange a partire da un indirizzo mail in formato utente@dominio.com.

Fatta questa premessa, passiamo ad analizzare in quale modalità è possibile ottenere certificati di tipo SAN con Let’s Encrypt

In ambiente Windows è utilizzabile il tool Let’s Encrypt-win-simple di Lone Coder, che proprio recentemente ha cambiato il nome del proprio programma

New name

This is the first release of this program under a new name. Going forward we will call it “Windows ACME Simple”, which can be shortened to “win-acme” or “WACS”. The reason is that we want to avoid any confusion people might have about this programs relationship with the ISRG sponsored Let’s Encrypt project.

To be clear, we are not an ISRG supported client, just an independent group of people who want to help people managing Microsoft Windows machines to secure the web.

Let’s Encrypt literally wrote the book on the ACME protocol and is obviously the most popular service implementing it, but in fact everyone is free to run their own ACME server and we might see a lot more of them in the future. Therefore it also makes sense to drop “Let’s Encrypt” from the name of this program.

Per effettuare la richiesta del certificato alla CA è necessario scaricare il tool da github e copiarlo localmente per poi estrarre il contenuto.

Il client ACME (Automatic Certificate Management Environment) quale è appunto win-acme, è gestibile a riga di comando, pertanto dovremo prima creare una cartella in cui saranno salvati i certificati in formato .pfx rilasciati dalla CA e successivamente eseguire il comando letsencrypt.exe –centralsslstore C:\letsencrypt-san\

L’opzione –centralsslstore è utilizzata per
definire il percorso per il salvataggio dei certificati che dovranno poi essere importati in Exchange tramite Powershell

Figura 1 richiesta certificato

Dovremo selezionare la modalità per il rilascio di nuovi certificati con opzioni avanzate “M” e successivamente specificare i vari nomi fqdn per cui stiamo richiedendo i certificati, ognuno separato da virgola nell’esempio che è indicato la richiesta è per l’host mail.robimassa.cloud ed autodiscover.robimassa.cloud

Figura 2 Impostazioni per la validazione

Successivamente verrà chiesta la modalità di validazione, ed il modo più rapido, se si esegue la richiesta dei certificati da un server IIS, è di consentire la verifica automatica direttamente tramite il server Web.

Procedendo con la richiesta vera e propria, e conclusa la procedura, nella cartella C:\letsencrypt-san\ troviamo i due certificati in formato PFX, uno per sito.

Sarà sufficiente procedere all’importazione del certificato in IIS che verrà utilizzato per OWA

Figura 3importazione certificato in IIS

Oppure in caso di sistemi distribuiti su più Web Server Bilanciati, utilizzare la funzione di centralized ssl certificate support a questo punto il https è attivo con il certificato SAN segnato per i due host

Importazione del certificato in Exchange

Per quanto riguarda invece l’importazione dei certificati in Exchange sarà necessario eseguire il cmd-let Powershell Import-ExchangeCertificate come descritto in questo articolo.

Metodi di validazione alternativi

Esistono altri metodi di validazione da parte di Lets’Encrypt per determinare che il richiedente del certificato sia effettivamente il proprietario del dominio, uno di questi è il metodo basato su DNS.

Il client Acme in questo caso si deve “appoggiare” ad un programma esterno che ricevendo in input I parametri corretti si occupa di creare sul DNS il TXT record opportunamente configurato. Questo record, sarà poi letto dalla CA prima dell’emissione dei certificati.

Siccome il processo di rinnovo è automatizzato e quindi eseguito periodicamente alla scadenza dei certificati, il servizio DNS deve poter consentire un interoperabilità di questo tipo.

E’ consigliabile quindi la verifica della disponibiltà di automazione da parte del DNS.

Figura 4 validazione tramite DNS

Figura 5 certificato SAN

Considerazioni

Anche in questo caso Let’s Encrypt si dimostra una Certification Authority che in modo gratuito permette di attivare i protocolli di sicurezza sui propri servizi. Come già detto in precedenza, è di prossimo rilascio l’emissione di certificati WildCard, che completerà l’offerta dei servizi della CA.

Riferimenti

https://letsencrypt.org/

https://www.ictpower.it/guide/utilizzo-e-configurazione-di-lets-encrypt-in-ambiente-linuxapache.htm

Configurazione dell’interfaccia utente di GLPI e FusionInventory

Facebooktwittergoogle_plusredditlinkedin

Glpi è, come abbiamo visto un prodotto completo ed estendibile tramite vari plug-in, ad esempio FusionInventory consente di realizzare partendo da GLPI un valido sistema di Sw ed Hw inventory aziendale. Abbiamo anche scritto una guida su come Integrare FusionInventory con GLPI v9.2.1 in ambiente Windows.

Recentemente la normativa AgID “Misure Minime di Sicurezza ICT” per la Pubblica Amministrazione ha imposto tra le varie implementazioni, anche l’adozione di un inventory automatico del Software intallato. GLPI e l’estensione FusionInventory permettono in modo assolutamente economico e perfettamente automatico di implementare questa funzione, e non avendo in questo caso, la necessità di utilizzare altre funzionalità proprie di GLPI, vediamo come è possibile gestirne l’interfaccia utente in modo da permettere la sola consultazione richiesta.

GLPI presenta la possibilità di “modellare” l’interfaccia dei vari utenti che accedono in modo da presentare ad ognuno esclusivamente le funzioni necessarie. E’ quindi possibile impostare esclusivamente in consultazione le funzioni di inventario messe a disposizione con FusionInventory.

Il punto di partenza è chiaramente l’utente di GLPI che può essere locale oppure riferito ad una sorgente di autenticazione esterna ad esempio Active Directory, in GLPI ad ogni utente deve essere assegnato un profilo in modo da poter completare il processo di login, ed è all’interno delle impostazioni del profilo che possiamo definire con precisione le funzioni, o per meglio dire in questo caso, le visualizzazioni consentite.

Nell’esempio che proponiamo viene creato un profilo “Consultazione HW/SW” con il solo accesso all’inventario di Hardware, Software ed alla visualizzazione delle impostazioni del plugin di FusionInventory

Creazione del profilo

Dal menù di amministrazione nella sezione profili troviamo l’elenco di tutti i quelli esistenti, alcuni di questi sono presenti di default già dall’installazione. Nelle caratteristiche di base del profilo possiamo specificare se gli utenti avranno un’interfaccia semplificata oppure standard, per la quale è possibile ulteriormente definire i campi visualizzati.

Figura 1 pagina profili

Dalla Pagina Principale/Amministrazione/Profili tramite il tasto “+” si può creare il nuovo profilo.

Figura 2creazione profilo

E’ possibile fare sì che il profilo sia dichiarato come “Predefinito”, in questo caso verrà applicato di default ad ogni nuovo utente aggiunto a GLPI, e se è abilitata la possibilità di Self-Provisioning, ogni utente ( se presente in Active Directory ) potrà accedere a GLPI senza ulteriori profilazioni. Verrà quindi autenticato, creato e profilato all’atto del primo accesso.

Di Default GLPI durante l’installazione crea il profilo Self-Service come predefinito e sempre per impostazione predefinita tutti gli utenti oggetto di autenticazione esterna, possono collegarsi. Normalmente, anche per ragioni di sicurezza, è utile non definire alcun profilo come predefinito e disattivare l’impostazione di auto configurazione degli utenti esterni.

Proseguendo nella creazione del profilo si definisce il nome, se deve essere applicato di default ai nuovi utenti, e quale interfaccia di base applicare.

Nell’esempio sono riportate le informazioni corrette al fine di consentire le impostazioni di consultazione per FusionInventory, proseguendo con “Aggiungi” si apre una pagina ulteriore che riporta tutte le varie componenti consultabili ed eventualmente modificabili dagli utenti, l’ultima colonna a destra è utile per l’impostazione rapida di tutti i permessi su ogni asset.

Figura 3 selezione dei permessi

A questo punto è sufficiente selezionare il componente da visualizzare e le azioni permesse per il profilo, per il Plugin FusionInventory potremmo anche non attivare nessuna visualizzazione in quanto è GLPI dalla pagina Asset che riporta gli inventari fatti dagli agent installati, tuttavia è possibile permettere agli utenti la sola visualizzazione delle impostazioni del Plugin attivando i permessi di lettura come riportato sotto.

Terminata l’impostazione del profilo è sufficiente associarlo agli utenti interessati, accedendo al menu Amministrazione dopo aver selezionato il/gli utenti voluti, tramite il menu Azioni è possibile applicare il nuovo profilo.

Figura 4attribuzione dei permessi ad un utente

Nell’esempio descritto in questa guida la possibilità di consultazione per l’utente sarà quindi ridotta alle sole visualizzazioni di Computer (inteso come Hardware) e Software.

Figura 5 accesso ad una pagina ridotta

Considerazioni: la nuova normativa AgID citata in precedenza “impone” a tutta la P.A. una serie di obblighi al fine dell’adeguamento ad uno standard minimo di sicurezza. Alcune di queste implementazioni non hanno ( o quasi ) alternative di tipo Open-Source, la soluzione di inventory ha, come abbiamo visto la possibilità di essere implementata a costo zero, permettendo quindi di impiegare in modo più incisivo le sovente esigue risorse economiche disponibili.

Riferimenti:

Installazione GLPI v9.1.4 in ambiente Windows

Installazione di GLPI 9.2.0 in ambiente Linux

Gestione backup GLPI v9.1.4 in ambiente Windows

Configurazione autenticazione Windows in GLPI v9.1.4

Integrazione FusionInventory con GLPI v9.2.1 in ambiente Windows

http://fusioninventory.org/


Integrazione FusionInventory con GLPI v9.2.1 in ambiente Windows

Facebooktwittergoogle_plusredditlinkedin

Fusion Inventory è un progetto Open Source francese nato nel 2010 durante il FOSDEM meeting con l’obbiettivo di fornire una migliore integrazione tra differenti progetti di asset management come OCS Inventory, GLPI e GOSA. Come riportato nell’Overview al momento Fusion Inventory è in grado gestire l’inventario dei seguenti device:

  • Computers
  • Network devices
  • Printers
  • Virtual machines (VMware vCenter/ESX/ESXi, Virtualbox, Libvirt, Xen, OpenVZ/Virtuozzo, Parallels, LXC, FreeBSD Jails, HPVM, Vserver, Hyper-V)
  • Android phone

Inoltre può inviare comandi Wake on Lan e gestire l’installazione, update e la rimozione di software su OS Windows, OS X, Linux e*BSD.

Di seguito lo schema di funzionamento di Fusion Inventory che sfrutta SNMP, WMI il registro di Windows per gestire l’inventario hardware e software dei dispositivi:

Mentre nel seguente schema viene illustrata l’integrazione di Fusion Inventory con GLPI basata sull’Agent distribuito sui computer e sul Plugin installato su GLPI:

In questo articolo verranno analizzati gli aspetti relativi all’installazione del plugin e relativa configurazione per l’import dei dispositivi e l’installazione e la configurazione dell’Agent in ambiente Windows.

Installazione del plugin per FusionInventory in GLPI

La prima operazione da eseguire per utilizzare l’agent di FusionInventory in GLPI è quella di installare il plugin che può essere scaricato da GitHub al seguente link https://github.com/fusioninventory/fusioninventory-for-glpi/releases. Al momento l’ultima release compatibile con GLPI 9.2 è la 9.2+1.0.

Se occorre aggiornare il plugin occorre prima disattivarlo in GLPI tramite il menù Configurazione/Plugin quindi rimuovere la cartella plugins/fusioninventory in GLPI per rimuovere i file deprecati e infine si procede come per una normale installazione. Il plugin non va disinstallato in quanto questo causerebbe la perdita dei dati FusionInventory.

Per installare il plugin occorre scompattare il package, ad esempio con 7zip, quindi copiare la cartella fusioninventory nella cartella plugins di GLPI, per maggior sicurezza eseguire una copia di backup del database di GLPI.

Terminata la copia dei file del plugin occorre installarlo e attivarlo tramite menù Configurazione/Plugin.

Configurazione inziale del plugin per FusionInventory in GLPI

Affinchè l’agent di FusionInventory possa funzionare occorre configurare il plugin specificando il Link d’accesso al servizio tramite il menu Amministrazione/Entità/Root entity/Fusioninventory, l’impostazione di default è https://localhost/glpi.

Dopo l’installazione del plugin, se non è già stato fatto, occorre configurare la gestione delle operazioni pianificate in caso contrario l’interfaccia di GLPI visualizzerà l’errore “GLPI cron not running“, per rimuover il warnig occorre creare una operazione pianificata eseguita ad intervalli compresi tra 1 e 5 minuti che avvii il seguente comando (a riguardo si veda Cron for GLPI and for FusionInventory):

PathPHP\php.exe” -f PathGLPI\glpi\front\cron.php

Le opzioni di configurazione del plugin sono disponibili tramite il menu Amministrazione/FusionInventory/Generale/Impostazioni generali e sono suddivise nei seguenti gruppi:

  • Configurazione generale in cui è possibile impostare la porta TCP dell’Agent e l’utilizzo di SSL per la comunicazione con l’Agent che permette di mettere in sicurezza le informazioni scambiate, a riguardo si veda la sezione Security della documentazione di FusionInventory.
  • Inventario dei computer in cui è possibile definire quali informazioni del computeri verranno raccolte dall’Agent
  • Inventorio di rete in cui è possibile definire quali informazioni dei dispositivi di rete verranno raccolte dall’Agent tramite SNMP
  • Gestione pacchetto in cui è possibile configurare come gestire come vengono inviati i dati al server da parte del’Agent
  • Moduli degli agenti in cui è possibile configurare le azioni che possono essere eseguite dall’Agent
  • Blocchi in cui è possibile bloccare l’aggiornamento di alcuni campi di Computer, Stampanti e Periferica di rete da parte dell’Agent per evitare che vengano sovrascritte informazioni che si preferisce gestire manualmente

Tramite il menù Amministrazione/FusionInventory/Regole/
Equipment import and link rules è possibile gestire come importare dispositivi Computer, Printer e Network Equipment, Peripheral, Monitor, Phone, in modo da indentificare apparati in modo univoco secondo regole basate su seriale, UUID, nome, MAC o a combinazioni di questi identificativi.

Lo UUID(Universally unique identifier) è un identificatore di 128-bit che rispetta l’RFC4122 esposto dalla classe wmi Win32_ComputerSystemProduct che a sua volta ricava il valore dalla struttura System Information relativa alle informazioni SMBIOS, a riguardo si veda System Management BIOS su Wikipedia. E’ possibile ricavare lo UUID di un computer trami il seguente comando PowerShell:

Get-WmiObject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID

E’ possibile modificare, aggiungere, abilitare/disabilitare e variale l’ordine di applicazione delle rule, a riguardo si veda How to work ‘Equipment import and link rules’.

Di seguito un esempio di configurazione delle rule per un asset di tipo computer:

  • la rule Computer constraint (name) nega l’importazione nel caso non esista un nome
  • le rule Computer update (by uuid), Computer update (by name), Computer import (by uuid), Computer import (by name) aggiornano e se necessario creano l’asset computer identificandolo prima tramite l’UUID e poi tramite il nome
  • La rule Computer import denied blocca l’importazione se le rule precedenti non sono soddisfatte

L’elenco delle rule termina con le rule Global che definiscono come gestire importazione e aggiornamento degli asset non classicabili come Computer, Printer e Network Equipment, Peripheral, Monitor, Phone. Inoltre tramite il pulsante Verifica gestire delle regole è possibile eseguire un test di funzionamento delle regole.

Inoltre l’importazione e la creazione dei dispositivi è ulteriormente configurabile tramite i seguenti gruppi di rule disponibili tramite il menù Amministrazione/FusionInventory/Regole:

  • Ignored import devices
  • Computer entity rules
  • Computer location rules
  • Computer information rules
  • Blacklist

Installazione dell’Agent come servizio in ambiente Windows

La prima opzione d’installazione è quella di installare sui computer utilizzando gli installer a 32 bit o 64 bit a seconda del versione del sistema operativo, al momento è disponibile la versione 2.4 dell’agente scaricabile da GitHub al seguente link https://github.com/fusioninventory/fusioninventory-agent/releases.

Di seguito i passi di installazione, le opzioni e le configurazioni richieste dal setup d’installazione, per informazioni sull’installare, l’installazione massiva l’installazione silente e le opzioni a riga di comando dell’installer si vedano:

Per i dettagli sui passi d’installazione si veda Windows installer 2.3.x visual mode, l’installer prevede le seguenti possibilità ed opzioni di configurazione.

Scelta della lingua d’installazione, al momento sono disponibili le lingue Inglese, Francese e Spagnolo:

Scelta dei componenti da installare, al moneto sono disponibili i seguenti componenti:

  • Collect (registry query, WMI query e search file)
  • Deploy (software deploy)
  • ESX (ESX remote inventory)
  • Inventory
  • NetDiscovery (network discovery)
  • NetInventory (network inventory tramite SNMP)
  • WakeOnLan (wake on lan)

Impostazione del path locale dei risultati e dell’URL dei server GLPI o OCS a cui inviare i risultati

Impostazione della modalità di esecuzione, al momento è possibile configurare l’agente per essere eseguito come servizio, operazione pianificata o manuale:

Se viene selezionato la modalità di esecuzione Servizio è possibile configurare il server web locale che verrà installato per consentire il monitoraggio remoto del servizio:

Se viene selezionato la modalità di esecuzione operazione pianificata è possibile configurare la frequenza e l’intervallo orario di esecuzione:

Configurazione delle opzioni di esecuzione e delle opzioni avanzate di configurazione e di log

Al momento non è disponibile il file msi per la distribuzione tramite Group Policy, ma è possibile eseguire l’installazione tramite uno script di avvio computer di questo tipo sfruttando le opzioni a riga di comando dell’installer:

%SystemDrive%
cd %ProgramFiles%
if exist FusionInventory-Agent goto end
\\share\fusioninventory-agent_windows-x64_2.4.exe /acceptlicense /S /server=’http://serverGLPI/glpi/plugins/fusioninventory/’ /runnow
:end

Installazione in modalità portable dell’Agent in ambiente Windows

Se non si intende installare l’agent è anche possibile utilizzare la modalità di installazione portable utilizzando il package a 32 bit o 64 bit a seconda del versione del sistema operativo, al momento è disponibile la versione 2.4 dell’agente scaricabile da GitHub al seguente link https://github.com/fusioninventory/fusioninventory-agent/releases. Tramite la modalità portable è possibile scompattare l’agent senza necessità di avere privilegi amministrativi.

Per eseguire l’Agent sono già disponibili i seguenti script:

  • fusioninventory-agent.bat per eseguire l’agent che a sua volta può eseguire vari task tra cui l’inventario, deployment di software o il network discovery si in modo autonomo o in combinazione con un server di gestione compatibile come GLPI, OCS o OTRS (per dettagli si veda fusioninventory-agent)
  • fusioninventory-esx.bat per eseguire l’inventario di ESX/ESXi e vCenter VMware remoti tramite l’interfaccia SOAP (per dettagli si veda fusioninventory-esx)
  • fusioninventory-injector.bat per eseguire test, benchmark o eseguire il push dell’inventario da macchine off-line (per dettagli si veda fusioninventory-injector)
  • fusioninventory-inventory.bat per eseguire un task di inventario in modo autonomo senza necessità di un server GLPI (per dettagli si veda fusioninventory-inventory)
  • fusioninventory-netdiscovery.bat per eseguire un discovery su di un network range tramite SNMP versione 1 (per dettagli si veda fusioninventory-netdiscovery)
  • fusioninventory-netinventory.bat per eseguire l’inventario su un device di rete tramite SNMP versione 2c (per dettagli si veda fusioninventory-netinventory)
  • fusioninventory-wakeonlan.bat per eseguire un task wakeonlan in modo autonomo senza necessità di un server GLPI (per dettagli si veda fusioninventory-wakeonlan)
  • fusioninventory-wmi.bat per creare l’inventario di una macchina remota Win32 tramite l’interfaccia WMI

L’agent in modalità portable può comunque essere distribuito tramite le Group Policy Preferences per copiare sul client i file dell’Agent ed avviarlo in modo automatico ad esempio tramite un’operazione schedulata.

Configurazione dell’Agent

L’agent si può configurare tramite file di configurazione in /etc/agent.cfg o tramite registry tramite la chiave HKEY_LOCAL_MACHINE\SOFTWARE\FusionInventory-Agent o nel caso di agent a 32 bit su un sistema a 64 bit tramite la chiave KEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\FusionInventory-Agent, a riguardo si vedano:

Per quanto riguarda la configurazione tramite registro è possibile utilizzare le stesse voci di configurazione del file agent.cfg creando nelle chiave di registro i relativi valori di tipo string (REG_SZ), di seguito un esempio di configurazione che imposta il server GLPI (chiave server), esclude dal rilevamento le i dispositivi categorizzati come stampanti, monitor, video, storage, usb:

Conclusioni

L’utilizzo di Fusion Inventory in combinazione con GLPI consente di gestire l’inventario o parte di esso in modo automatizzato, ovviamente negli scenari in cui parte dell’inventario viene gestito manualmente occorre configurare opportunamente quali dati devono essere raccolti. Si pensi ad esempio al caso in cui i computer vengono acquistati e inventariati e solo dopo connessi in rete, inoltre in molti casi le informazioni che Fusion Inventory raccoglie potrebbero essere non così consistenti, si pensi ad esempio alla marca e modello che Fusion Inventory determina in base a quanto rileva sul sistema tramite wmi e chiavi di registro e quindi non sempre il produttore mantiene sempre le stesse diciture con l’avvicendarsi delle versioni software.

Un altro aspetto da tenere presente è che ne caso si elimina un asset computer occorre eliminarlo anche dal cestino di GLPI in caso contrario se Fusion Inventory rileva in rete un computer che risponde ai requisiti di indentificazione tramite nome, numero di serie, etc. connette le informazioni al primo asset che rispetta la query di identificazione indipendentemente che sia o meno nel cestino di GLPI causando quindi una conseguente impossibilità nel reperire le informazioni raccolte i n quanto gli asset nel cestino non vengono visualizzati.