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
