Riduciamo e ottimizziamo i tempi delle nostre attività

Controllare la sicurezza sui sistemi IBM i: l'​Audit Journal


Sappiamo bene che i sistemi informativi devono essere messi in sicurezza, ma sappiamo anche che essa deve anche essere controllata, per capire se gli strumenti utilizzati sono adeguati e configurati al meglio.
Monitorare la sicurezza significa capire cosa sta avvenendo sui sistemi in ogni momento, sia per ottemperare alle normative e sia (ancora più importante) per essere avvisati il prima possibile nel caso di operazioni errate o fraudolente sui dati di business. Si possono avere i sistemi perfettamente funzionanti e performanti, ma senza un controllo della sicurezza, si rischia comunque il danno grave su ciò che di più prezioso abbiamo in azienda, i dati.

Controllare la sicurezza dei sistemi IBM i: l'Audit Journal

In questo articolo non partiremo con la descrizione di cosa sono i journal all'interno dei sistemi IBM i, ma ci faremo bastare poche considerazioni. I giornali sul sistema as400 si dividono in:
  • giornali di dati: log che collezionano ciò che avviene sui dati del sistema
  • giornale di audit: log che colleziona ciò che avviene sul sistema

    Come distinguere il giornale di audit dai giornali di dati?

    La differenza è molto semplice, il giornale di Audit è unico per una singola partizione e lo si distingue perchè deve essere creato con un nome ben specifico in una libreria ben definita:
    QAUDJRN nella libreria QSYS

    Non affronteremo qui l'argomento del "come crearlo e attivarlo"​ ma resteremo in argomento monitoring e vedremo come controllare che esista e che sia configurato al minimo indispensabile

    Per farlo ci vengono incontro i servizi SQL che IBM ha reso disponibili fin dalla versione 7.2 del sistema operativo

    Controllare, in SQL, se l'audit journal esiste ed è configurato

    select journal_name, journal_library, attached_journal_receiver_name, attached_journal_receiver_library, journal_state,number_journal_receivers, cast(cast(total_size_journal_receivers as decimal(10,3))/1000/1000 as decimal(10,3)) as GB from QSYS2.JOURNAL_INFO where journal_name='QAUDJRN'​

  • Se non trovo record: Audit Journal non esistente
  • Se trovo un record ma il campo journal_state è diverso da *ACTIVE: Audit Journal esistente ma disattivo
  • Se c'è almeno un record e il campo journal_state è uguale ad *ACTIVE: Audit Journal esistente e attivo

    "Se l'Audit Journal è attivo sono a posto?"

    Assolutamente no, l'Audit Journal deve essere configurato per indicare cosa registrare tra le attività che accadono sul sistema. Sono tantissimi gli eventi che l'audit journal può registrare ma è necessario dirglielo altrimenti avrei un log vuoto e quindi inutile

    Vediamo le entry type che un Audit Journal può contenere e successivamente vediamo come controllare quali siano già configurate:

    https://www.ibm.com/docs/en/i/7.4?topic=actions-security-auditing-journal-entries

    Controllare la configurazione dell'Audit Journal

    Per farlo si guarda il contenuto di alcuni system values, controllo che noi facciamo sempre in SQL

    select system_value_name,current_character_value from qsys2.SYSTEM_VALUE_INFO where system_value_name='QAUDCTL'​ and current_character_value like '​%*AUDLVL%'​

    un esempio:


  • Se non si ottiene alcun record: Audit Journal non configurato
  • Se esiste un record, ma il campo current_character_value non contiene il valore *OBJAUD: Audit Journal non configurato
  • Se esiste il record e il campo current_character_value contiene il valore *OBJAUD, allora passo al controllo successivo

    select system_value_name,current_character_value from qsys2.SYSTEM_VALUE_INFO where system_value_name in ('QAUDLVL'​, 'QAUDLVL2'​) order by system_value_name

  • Se non si ottiene alcun record: Audit Journal non configurato
  • Se il primo record ha il campo current_character_value uguale a *NONE: Audit Journal non configurato
  • Se nel primo record c'è *AUDLVL2 o altro, allora metto insieme i valori delle due celle current_character_value (escludendo l'eventuale *NONE del secondo record) e passo ai controlli successivi

  • Se i valori complessivi dei due current_character_value contengono *JOBDTA o *JOBBAS e *JOBCHGUSR, allora nell'Audit Journal vengono registrati gli accessi degli utenti al sistema, sia batch che interattivi
  • Se i valori complessivi dei due current_character_value contengono *AUTFAIL, allora nell'Audit Journal vengono registrati gli accessi errati al sistema (password sbagliate, utenti disabilitati, utenti inesistenti, ...)
  • Se i valori complessivi dei due current_character_value contengono *SECVFY o il valore *SECURITY, allora nell'Audit Journal vengono registrati gli accessi con swap del profilo su un altro
  • Se i valori complessivi dei due current_character_value contengono *SECCFG o il valore *SECURITY, allora nell'Audit Journal vengono registrate le modifiche ai system values del sistema

    ... e così via, questi li ritengo i valori più importanti ma nell'audit journal possono essere registrate tantissime altre azioni. Per un dettaglio maggiore https://www.ibm.com/docs/en/i/7.4?topic=actions-security-auditing-journal-entries (dal sito IBM)

    Come leggere l'audit journal in maniera completa? Sarà argomento di un prossimo articolo... buona sicurezza a tutti 😉

    Marco Moret Monitoring Project Manager presso smeup ICS
     Puoi trovare l'articolo anche su LinkedIn

    Tutti gli articoli
     Quando il sistema è ripartito l'ultima volta?
     Writers Manager: Controllare e gestire le stampanti con l'SQL
     Controllare la sicurezza sui sistemi IBM i: l'​Audit Journal
     JTOpen per ambienti .Net. La prima connessione JDBC da C#
     JTOpen, sviluppare applicazioni in .Net per IBM i
     DB2 for i: gestire le date in SQL
     Scaricare, installare e utilizzare i driver ODBC per IBM i
     Ottenere le info di sistema in SQL

    Gestisci, analizza e controlla il sistema IBM i
    Scarica, installa e lavora in pochi secondi
      IBM i Monitoring Facility - Check è completamente gratuito fino a fine mese

  • Update cookies preferences