Advisory · Progetti · Conferenze LinkedIn GitHub Credly IT EN

Media · Italia · 2026

Audit delle sessioni Citrix, dal NetScaler all’archivio cifrato

Il team Audit di un'azienda del settore media vuole sapere chi usa Citrix, da dove e per quanto tempo. Ho progettato e sviluppato il servizio che ricostruisce le sessioni dai dati AppFlow del NetScaler e ogni notte consegna un archivio cifrato, conservato per cinque anni.

Contesto

Il team Audit del cliente doveva sapere chi apre sessioni Citrix attraverso il NetScaler Gateway, da quale indirizzo e per quanto tempo, e ricevere queste informazioni ogni giorno in una forma che solo lui potesse leggere. Il NetScaler questi dati li conosce, ma li invia come record AppFlow grezzi: non ci sono ancora sessioni, utenze complete o file da consegnare.

Ho progettato e sviluppato il servizio, N.U.S.A. (NetScaler User Session Auditor), e ho scritto il manuale operativo per il supporto di primo e secondo livello.

La sfida

  • Dai record alle sessioni. I record IPFIX vanno correlati in sessioni con login, logout e durata, distinguendo quelle chiuse da quelle rimaste senza chiusura e dai segnaposto tecnici che il NetScaler genera.
  • Utenze incomplete. Il NetScaler tronca i nomi utente più lunghi e in alcuni casi perde il dominio: l’utenza va ricostruita prima di finire nel file.
  • Un formato contrattuale. Colonne, ordine, separatore e significato di ogni campo sono concordati con il cliente: il file non può cambiare per errore.
  • Riservatezza e prova di consegna. Il pacchetto deve essere leggibile solo dal cliente, e bisogna poter dimostrare se e quando è stato ritirato.
  • Cinque anni di storico. Lo spazio deve bastare per tutta la conservazione, e il servizio deve lavorare da solo, seguito da un team di supporto che non sviluppa software.

L’architettura

Su un server Linux dedicato, RHEL o Rocky Linux 9, ogni anello della catena è un servizio systemd separato. Il collector ipfixcol2 riceve i record dal NetScaler sulla porta UDP 4739 e li scrive come JSON; il session tracker li correla in sessioni; ogni notte alle 00:30 UTC l’export trasforma le sessioni chiuse del giorno prima in un CSV, lo comprime, lo cifra con la chiave PGP pubblica del cliente e lo archivia per anno e mese.

Il cliente ritira i pacchetti con un’utenza SFTP dedicata, in sola lettura e limitata all’archivio, e un calendario nel portale mostra per ogni giorno se il pacchetto è stato prodotto e se è stato ritirato. Il portale web, in HTTPS con ruoli amministratore e utente, riunisce consultazione delle sessioni, formato del file, chiavi PGP, subnet VPN, regole di correzione delle utenze, previsione dello spazio disco e stato dei servizi.

Decisioni chiave

  • Il database non è l’archivio. Il database delle sessioni è una finestra di lavoro di pochi giorni; lo storico vive solo nei pacchetti cifrati, che nessuna operazione di manutenzione tocca.
  • Sul server solo la chiave pubblica. Il pacchetto si cifra con la chiave del cliente: una volta prodotto, può aprirlo solo lui. Il cambio di chiave segue una procedura con verifica del fingerprint su un canale separato e un pacchetto di prova.
  • Anelli indipendenti. Se il portale si ferma, raccolta ed export continuano. Ogni servizio ha la sua pagina e il suo sintomo, e il manuale porta dal sintomo al rimedio.
  • La configurazione concordata è un contratto. Formato del file, subnet VPN e regole sulle utenze cambiano il contenuto consegnato: si modificano solo su richiesta del cliente, e il formato predefinito coincide con quello concordato.
  • Spazio previsto, non scoperto. I dati grezzi si fermano a 30 giorni, l’archivio cresce per cinque anni: il portale stima quando il disco si riempirebbe e se basta per tutta la conservazione.
  • Aggiornamenti senza sorprese. Un unico pacchetto con impronta SHA-256, uno script idempotente che conserva database, archivio e configurazioni, e una verifica in sei passi che si chiude solo con il primo export notturno riuscito.

Oggi è un prodotto

Lo stesso software è oggi NetScaler-UserLogging, una delle soluzioni di Corellix Software Engineering, la startup che ho co-fondato.

01

Soluzione, livello per livello

Seleziona un livello coinvolto per leggere cosa è stato fatto.

L1 · Accesso sicuro

Il NetScaler Gateway invia con AppFlow i record IPFIX delle sessioni ICA, con utenza AAA, dominio e connection chaining abilitati. Il portale prepara i comandi da applicare sull'apparato e quelli per verificarli.

L4 · Dati

Le sessioni diventano ogni notte un CSV nel formato concordato con il cliente: separatore pipe, una riga per il login e una per il logout, utenza ricostruita come utente@dominio e un campo che segnala gli accessi dalla VPN aziendale. Compresso e cifrato con la chiave PGP del cliente, resta in archivio cinque anni.

AI · Automazione e AI

Il servizio lavora senza intervento umano: timer systemd per export, pulizia dei dati grezzi e allineamento dei ritiri SFTP, un watchdog periodico, uno script di healthcheck e un aggiornamento idempotente con verifica dell'impronta SHA-256. Il supporto ha una checklist quotidiana da un minuto.

02

Risultati

1
archivio cifrato ogni notte, con le sessioni del giorno prima
5
anni di conservazione dell'archivio
30
giorni di dati grezzi, poi ripuliti in automatico
8
servizi e timer systemd, uno per anello della catena

03

Tecnologie

  • NetScaler Gateway
  • AppFlow
  • IPFIX
  • ipfixcol2
  • Python
  • gunicorn
  • systemd
  • OpenPGP
  • gzip
  • SFTP
  • Rocky Linux 9
  • RHEL 9