Aller au contenu
Sécuriser IBM i · 1 / 2

Sécuriser IBM i : niveau, valeurs système, profils et audit

IBM i est réputé sûr, mais il est livré ouvert : à vous de fermer les portes. Le niveau de sécurité, les 43 valeurs système que recommande IBM, les outils fournis, les profils à surveiller et le journal d'audit, vérifiés sur un IBM i 7.5.

40le niveau livré, celui que nous conseillons
50le plus protégé, mais difficile à mettre en place
43valeurs système conseillées par IBM
15caractères au moins par mot de passe

En une phrase

Sécuriser IBM i, c'est choisir un niveau de sécurité (QSECURITY 40), régler les valeurs système qui encadrent mots de passe, sessions et restaurations, ne laisser aux profils que les droits utiles, et auditer pour savoir ce qui se passe ; les droits sur les objets font le reste.

Les niveaux de sécurité

La valeur système QSECURITY fixe le niveau de protection que le système impose. Chaque niveau ajoute des contrôles au précédent :

Les cinq niveaux de sécurité d'IBM i Niveau 10 : aucune protection, ne peut plus être choisi. Niveau 20 : mot de passe, mais tous les utilisateurs ont *ALLOBJ, ne peut plus être choisi. Niveau 30 : mot de passe et droits sur les objets, non considéré comme sûr. Niveau 40 : protection de l'intégrité, niveau livré. Niveau 50 : protection renforcée de l'intégrité, le plus sûr. 50 · intégrité renforcéele plus protégé, conçu pour les Critères communs 40 · intégriténiveau livré, recommandé pour la plupart des installations 30 · mot de passe et droits sur les objetspas considéré comme sûr 20 · mot de passe, tous *ALLOBJne peut plus être choisi 10 · aucune protectionne peut plus être choisi
Les niveaux de QSECURITY, du moins au plus protégé (documentation IBM i 7.5).
  • 10 et 20 ne peuvent plus être choisis. Au niveau 20, tous les utilisateurs ont *ALLOBJ : chacun accède à tout.
  • 30 contrôle les droits sur les objets, mais IBM ne le considère pas comme un niveau sûr : la protection de l'intégrité n'y est pas active.
  • 40 protège le système contre les utilisateurs : un programme ne peut plus appeler une interface non documentée ou manipuler des pointeurs pour atteindre des blocs de contrôle. C'est le niveau de toute nouvelle installation, recommandé pour la plupart d'entre elles.
  • 50 ajoute une protection renforcée, par exemple sur les messages entre programmes système et programmes utilisateur, et ne laisse voir que les données, pas les informations sur le système. IBM le présente comme le niveau recommandé pour la plupart des entreprises, car c'est le plus sûr.

Notre conseil : le niveau 40

IBM et l'outil PRTSYSSECA poussent vers 50, mais pour une entreprise nous recommandons 40 : il apporte déjà la protection de l'intégrité, et le niveau 50 est difficile à mettre en place. La documentation d'IBM en donne elle-même les raisons :

  • il ne se teste pas à l'avance : ses contrôles supplémentaires ne laissent ni message ni entrée d'audit aux niveaux inférieurs, on ne découvre les erreurs qu'une fois passé en 50 ;
  • les espaces, index et files utilisateur du domaine utilisateur ne sont permis que dans les bibliothèques de QALWUSRDMN : il faut y recenser celles des applications et des logiciels qui en créent ;
  • aucun travail ne peut plus atteindre la QTEMP d'un autre travail ;
  • certains anciens programmes RPG et COBOL doivent être recompilés.

Le changement prend effet à l'IPL suivant. Pour passer de 30 à 40, IBM conseille d'activer d'abord l'audit avec *AUTFAIL et *PGMFAIL, de faire tourner toutes les applications, puis de corriger les programmes qui laissent des entrées AF dans le journal (instruction interdite, interface non prise en charge…) avant de changer la valeur :

CHGSYSVAL  SYSVAL(QSECURITY) VALUE('40')
PWRDWNSYS  OPTION(*IMMED) RESTART(*YES)

Les valeurs système conseillées

La commande PRTSYSSECA imprime chaque valeur système de sécurité avec sa valeur actuelle et la valeur que recommande IBM. Voici la colonne « recommandée » relevée sur notre IBM i 7.5, regroupée par thème, sauf pour QSECURITY où nous gardons 40. Chaque nom mène à sa fiche détaillée ; la mention à tester signale un réglage qui peut bloquer une application ou un usage.

Niveau de sécurité et intégrité

ValeurConseilléeEffet
QSECURITY 40 Protection de l'intégrité, niveau livré. PRTSYSSECA indique 50, le plus protégé, mais difficile à mettre en place : nous conseillons 40 (voir les niveaux ci-dessus).
QALWOBJRST *NONE Refuse la restauration des objets sensibles (état système, droits adoptés). À remettre à *ALL le temps d'installer une version ou un logiciel. à tester
QVFYOBJRST 3 Vérifie la signature des objets restaurés : les objets non signés passent, les objets signés seulement si la signature est valide. C'est la valeur livrée.
QFRCCVNRST 4 Reconvertit à la restauration les programmes sans signature valide qui peuvent l'être ; un objet qui paraît altéré est reconverti ou refusé.
QALWUSRDMN QTEMP N'autorise les espaces, index et files utilisateur du domaine utilisateur que dans QTEMP. à tester
QSHRMEMCTL 0 Interdit aux utilisateurs d'écrire dans la mémoire partagée ou mappée.
QUSEADPAUT une liste d'autorisation Réserve aux membres d'une liste *PUBLIC *EXCLUDE la création de programmes qui utilisent les droits adoptés de leurs appelants.
QCRTAUT *CHANGE Droit public des nouveaux objets. PRTSYSSECA conseille de le régler bibliothèque par bibliothèque (CRTAUT) ; la valeur système reste à *CHANGE, comme le recommande IBM.
QSRVDMP *NONE Ne crée pas de vidage de service pour les messages d'échappement non surveillés.
QATNPGM *NONE Aucun programme sur la touche Attention.

Mots de passe

ValeurConseilléeEffet
QPWDLVL 4 Mots de passe jusqu'à 128 caractères, stockés avec PBKDF2 HMAC SHA-512 (nouveau en 7.5). Pris en compte à l'IPL suivant. à tester
QPWDRULES *ALLCRTCHG *LMTPRFNAME *MINLEN15 15 caractères au moins, sans le nom du profil, règles appliquées aussi par CRTUSRPRF et CHGUSRPRF.
QPWDEXPITV 90 Le mot de passe expire au bout de 90 jours.
QPWDEXPWRN 14 Prévient l'utilisateur 14 jours avant l'expiration.
QPWDCHGBLK 24 Interdit de rechanger son mot de passe dans les 24 heures, pour ne pas revenir à l'ancien.
QPWDRQDDIF 1 Refuse les 32 derniers mots de passe.
QPWDVLDPGM *NONE Aucun programme maison de validation des mots de passe.

Ouverture de session

ValeurConseilléeEffet
QMAXSIGN 3 Trois mots de passe faux de suite au plus.
QMAXSGNACN 3 Puis désactive le profil et l'unité.
QLMTSECOFR 1 Les profils *ALLOBJ et *SERVICE ne se connectent que sur les écrans autorisés pour eux.
QLMTDEVSSN 1 Une seule session écran à la fois par utilisateur.
QDSPSGNINF 1 Affiche la dernière connexion et les tentatives ratées après l'ouverture de session.
QINACTITV 15 Un travail interactif inactif depuis 15 minutes déclenche QINACTMSGQ.
QINACTMSGQ *DSCJOB Le travail inactif est déconnecté ; il retrouve sa session à la reconnexion.
QDSCJOBITV 60 Un travail déconnecté depuis 60 minutes est terminé.
QRMTSIGN *FRCSIGNON Une session à distance (passthrough, Telnet) passe toujours par l'écran de connexion.

Communications et IFS

ValeurConseilléeEffet
QAUTOCFG 0 Pas de configuration automatique des nouvelles unités locales.
QAUTORMT 0 Pas de configuration automatique des unités distantes.
QAUTOVRT 0 Pas de création automatique d'unités virtuelles : à n'appliquer que si vous créez vos unités Telnet vous-même. à tester
QRMTIPL 0 Pas de redémarrage à distance par ligne téléphonique.
QRMTSRVATR 0 Pas d'analyse des incidents à distance.
QCMNRCYLMT 0 0 Pas de reprise automatique des liaisons en panne.
QDEVRCYACN *DSCMSG Après une erreur de l'écran, déconnecte le travail ; à la reconnexion, l'application reçoit un message d'erreur.
QSSLPCL *OPSYS Le système choisit les versions de TLS acceptées, selon la version d'IBM i.
QSSLCSLCTL *OPSYS Le système gère la liste des suites de chiffrement.
QSCANFS *ROOTOPNUD Fait analyser les fichiers de l'IFS par les programmes d'exit enregistrés (un antivirus).
QSCANFSCTL *ERRFAIL *NOWRTUPG Échec de l'accès si l'analyse échoue ; pas d'élévation des droits d'écriture pour l'antivirus.

Audit

ValeurConseilléeEffet
QAUDCTL *AUDLVL *OBJAUD *NOQTEMP Active l'audit des actions et des objets, sans les objets de QTEMP.
QAUDLVL *AUDLVL2 Renvoie à QAUDLVL2 pour la liste des événements.
QAUDLVL2 *AUTFAIL *CREATE *DELETE *OBJMGT *PGMFAIL *SAVRST *SECURITY *SERVICE *SYSMGT Échecs de droits et de programmes, créations, suppressions, déplacements, sauvegardes et restaurations, sécurité, outils de service, gestion du système.
QAUDENDACN *NOTIFY Si l'audit ne peut plus écrire, prévient et continue.
QAUDFRCLVL *SYS Le système décide quand écrire les entrées d'audit sur disque.
QCRTOBJAUD par bibliothèque Audit des nouveaux objets : PRTSYSSECA conseille de le régler bibliothèque par bibliothèque (paramètre CRTOBJAUD de la bibliothèque).

PRTSYSSECA contrôle aussi trois attributs réseau (commande CHGNETA), détaillés avec les accès à distance :

DDMACC *REJECT Refuse les demandes DDM et DRDA entrantes. À ne pas appliquer si d'autres systèmes lisent vos fichiers par DDM ou SQL distant. à tester
JOBACN *REJECT Refuse les travaux soumis par le réseau (SNADS).
PCSACC *REJECT Ne concerne que les anciens clients DOS et OS/2.
N'appliquez pas tout d'un coup. Ces valeurs décrivent un système très fermé. Quelques effets à évaluer avant :
  • QSECURITY 50, si vous voulez quand même y aller, ne se teste pas à l'avance : essayez-le sur une partition de test avec toutes vos applications.
  • QPWDLVL 4 se prépare : il faut passer par le niveau 2 ou 3 avant ; le niveau 3 supprime les anciens mots de passe des niveaux 0 et 1, dont d'anciens clients ou systèmes peuvent encore avoir besoin. Chaque changement attend l'IPL.
  • QALWOBJRST *NONE peut faire échouer l'installation d'une nouvelle version ou d'un logiciel et une reprise du système : IBM demande *ALL le temps de l'opération, puis le retour à la valeur habituelle. La valeur *ALWPTF laisse passer les PTF.
  • DDMACC *REJECT coupe le DDM et le SQL distant entrants ; QAUTOVRT 0 empêche les sessions Telnet si les unités virtuelles ne sont pas créées à l'avance.

Pour comparer vos valeurs à ces recommandations, sans imprimer, une requête :

SELECT SYSTEM_VALUE_NAME, CURRENT_CHARACTER_VALUE, CURRENT_NUMERIC_VALUE
  FROM QSYS2.SYSTEM_VALUE_INFO
 WHERE SYSTEM_VALUE_NAME IN ('QSECURITY', 'QPWDLVL', 'QMAXSIGN', 'QMAXSGNACN',
       'QLMTSECOFR', 'QINACTITV', 'QALWOBJRST', 'QVFYOBJRST', 'QAUDCTL')
 ORDER BY SYSTEM_VALUE_NAME

Enfin, la plupart des valeurs de sécurité ne peuvent être changées que par un profil *ALLOBJ et *SECADM. Pour empêcher même ces profils de les modifier en exploitation, on les verrouille par les outils de service (SST, DST) ou la commande CHGSSTSECA.

Les outils d'IBM : GO SECTOOLS

Le menu des outils de sécurité, livré avec le système, regroupe les commandes de contrôle : GO SECTOOLS.

Écran 5250 Outils de sécurité SECTOOLS, gestion des profils : analyser les mots de passe par défaut, liste des profils actifs, analyser l'activité des profils, plannings d'activation et de péremption
Le menu SECTOOLS, première page : la gestion des profils.
Écran 5250 Outils de sécurité SECTOOLS, deuxième page : gestion de l'audit et rapports (objets adoptant, postes du journal d'audit, droits des listes d'autorisation, sécurité des communications)
Deuxième page : l'audit et les rapports, qu'on peut aussi planifier en batch (option 20).
ANZDFTPWDListe les profils dont le mot de passe est égal au nom, et peut les désactiver ou faire expirer leur mot de passe.
ANZPRFACTDésactive les profils restés inactifs plus de n jours.
CHGACTPRFLExclut des profils de ANZPRFACT (DSPACTPRFL pour les voir).
CHGACTSCDEOuvre un profil seulement à certaines heures (DSPACTSCD pour les voir).
CHGEXPSCDEFait expirer un profil à une date : désactivé ou supprimé (DSPEXPSCD).
PRTPRFINTImprime le nombre d'entrées internes des profils (objets possédés, droits privés), pour repérer ceux qui approchent la limite.
CHGSECAUDDémarre ou règle l'audit de sécurité (DSPSECAUD pour l'afficher).
CPYAUDJRNECopie les entrées du journal d'audit dans des fichiers.
PRTSYSSECAImprime les valeurs système de sécurité : actuelle et recommandée.
PRTADPOBJImprime les objets qui adoptent les droits d'un profil.
PRTPUBAUTImprime les objets dont le droit public n'est pas *EXCLUDE.
CFGSYSSECApplique en une fois une configuration de sécurité.
RVKPUBAUTRetire le droit public d'un ensemble de commandes et d'API sensibles, et ramène la racine de l'IFS à *USE.

CFGSYSSEC mérite une précaution : elle règle d'un coup les valeurs système, met à *NONE le mot de passe des profils fournis par IBM et démarre l'audit. Elle demande *ALLOBJ, *SECADM et *AUDIT. Pour l'adapter, IBM indique de récupérer la source de son programme, QSYS/QSECCFGS, par RTVCLSRC, puis de la modifier et de la compiler sous un autre nom.

Les profils : fermer les portes connues

Les premiers essais d'un intrus visent les profils dont le mot de passe est publié. La documentation d'IBM donne la liste à vérifier :

Profil fourni par IBMMot de passe recommandé
QSECOFRUne valeur non triviale, connue du seul responsable de la sécurité. Livré avec mot de passe expiré.
QSYSOPR*NONE
QPGMR*NONE
QUSER*NONE ; il doit rester activé pour IBM i Access en TCP/IP.
QSRV*NONE
QSRVBAS*NONE
QPGMR_NC, QSECOFR_NC, QSYSOPR_NC, QUSER_NCNouveaux en 7.6 : pas de mot de passe, non modifiables (voir le MFA plus bas).
  1. Aucun profil avec un mot de passe égal à son nom. ANZDFTPWD les trouve, et peut les désactiver.
  2. Les outils de service aussi. Les identifiants DST QSECOFR et QSRV ont des mots de passe publiés : changez-les, et rechangez celui de QSRV après chaque intervention d'un technicien.
  3. Pas de connexion par simple Entrée. Essayez, sur plusieurs écrans, d'ouvrir une session sans rien taper. Si cela marche, passez en niveau 40 ou 50, ou mettez USER(*RQD) dans les descriptions de travail des postes écran.
  4. Peu de *ALLOBJ. Chaque profil qui l'a peut tout lire et tout modifier (voir les droits spéciaux).
  5. Pas de profil oublié. Désactivez les profils inutilisés avec ANZPRFACT, et faites expirer ceux des intérimaires (CHGEXPSCDE).
  6. Un mot de passe à changer dès la première connexion : PWDEXP(*YES) à la création du profil (voir les profils utilisateurs).

Deux requêtes de contrôle, exécutées sur notre IBM i 7.5 (nous n'en publions pas le résultat). Les profils actifs, avec un mot de passe, sans connexion depuis 90 jours :

SELECT AUTHORIZATION_NAME, PREVIOUS_SIGNON, USER_CLASS_NAME
  FROM QSYS2.USER_INFO_BASIC
 WHERE STATUS = '*ENABLED'
   AND (PREVIOUS_SIGNON IS NULL OR PREVIOUS_SIGNON < CURRENT TIMESTAMP - 90 DAYS)
   AND NO_PASSWORD_INDICATOR = 'NO'
   AND AUTHORIZATION_NAME NOT LIKE 'Q%'
 ORDER BY PREVIOUS_SIGNON

Les profils actifs qui ont *ALLOBJ en propre (ajoutez ceux qui l'héritent d'un groupe avec QSYS2.GROUP_PROFILE_ENTRIES) :

SELECT AUTHORIZATION_NAME, USER_CLASS_NAME, SPECIAL_AUTHORITIES
  FROM QSYS2.USER_INFO_BASIC
 WHERE SPECIAL_AUTHORITIES LIKE '%*ALLOBJ%'
   AND STATUS = '*ENABLED'

IBM i 7.6 : activez le MFA

Depuis IBM i 7.6, le système intègre l'authentification multifacteur (MFA). En plus du mot de passe, l'utilisateur saisit un code à usage unique (TOTP, norme RFC 6238), calculé par une application d'authentification sur son téléphone, sa montre ou un jeton physique. Un mot de passe volé ou deviné ne suffit plus. Nous conseillons de l'activer, en commençant par les profils qui ont des droits spéciaux.

Notre système de démonstration est en 7.5 : cette partie s'appuie sur la documentation d'IBM i 7.6, sans démonstration.

Les prérequis

  • QSECURITY à 40 ou plus : notre niveau conseillé suffit.
  • QPWDLVL à 4 : on y passe par le niveau 2 ou 3, chaque changement attendant l'IPL (voir l'encadré plus haut).
  • Des horloges à l'heure : le code dépend de l'heure, le système et les téléphones doivent être synchronisés à quelques secondes près. IBM conseille le client NTP (STRTCPSVR SERVER(*NTP), valeur système QTIMADJ).

Bon à savoir : sur une nouvelle installation en 7.6, QPWDLVL est livré à 3 et QPWDRULES à *ALLCRTCHG *LMTPRFNAME *MINLEN15 *REQANY3. Un système mis à niveau garde ses valeurs.

La mise en place, pas à pas

Les étapes de mise en place du MFA sur IBM i 7.6 1. L'administrateur active l'attribut Additional sign-on factor par CHGSECA puis fait un IPL. 2. L'utilisateur crée sa clé TOTP par CHGTOTPKEY et range sa clé de secours. 3. Il enregistre la clé dans son application et la vérifie par CHKTOTP. 4. L'administrateur passe le profil en AUTHMTH(*TOTP). 5. À chaque connexion, l'utilisateur saisit mot de passe et code. 1 · Administrateur : CHGSECA ADLSGNFACactive le facteur supplémentaire, puis IPL 2 · Utilisateur : CHGTOTPKEYcrée sa clé TOTP, range sa clé de secours 3 · Utilisateur : application et CHKTOTPenregistre la clé, vérifie un code 4 · Administrateur : CHGUSRPRF AUTHMTH(*TOTP)et, si besoin, un intervalle TOTPOPTITV 5 · Connexion : mot de passe + codechamp « facteur supplémentaire » ou mot de passe:code
D'après la documentation IBM i 7.6 « Multi-factor authentication (MFA) ». En rouge, l'administrateur ; en bleu, l'utilisateur.
/* 1. Administrateur : activer le facteur supplémentaire, puis IPL */
CHGSECA    ADLSGNFAC(*ENABLED)

/* 2 et 3. Chaque utilisateur, sous son propre profil */
CHGTOTPKEY
CHKTOTP

/* 4. Administrateur : exiger le code pour ce profil */
CHGUSRPRF  USRPRF(DUPONTJ) AUTHMTH(*TOTP) TOTPOPTITV(*NONE)
  • Activer le système ne suffit pas. L'attribut ajoute un champ « facteur supplémentaire » à l'écran de connexion, mais seuls les profils en AUTHMTH(*TOTP) doivent le remplir. Tous les profils existants ou créés restent en *NONE.
  • Si CHGSECA refuse, l'attribut est verrouillé dans les outils de service : CHGSSTSECA CHGADLSGN(*YES) le déverrouille, et CHGADLSGN(*NO) le reverrouille une fois réglé. L'attribut n'est ni sauvegardé ni restauré.
  • Chacun crée sa propre clé : l'administrateur ne peut pas le faire à sa place. IBM Navigator for i propose aussi un QR code à scanner (Manage My MFA Key).
  • La clé de secours remplace le code si le téléphone est perdu. Elle ne vaut que 10 minutes après sa première utilisation, le temps de créer une nouvelle clé. Passé ce délai, la clé est supprimée et seul l'administrateur peut débloquer le profil en retirant *TOTP.
  • Écran de connexion personnalisé ? Refaites-le à partir du format QDSIGNON3 avant l'IPL, sinon le champ du code n'apparaîtra pas.
  • Sur une interface sans champ pour le code, on tape motdepasse:123456 dans le champ du mot de passe. Cela ne marche pas avec IBM i Access Client Solutions, Navigator ni DCM, qui ont leur propre champ.
Testez vos applications avant. Ce qui mémorise le mot de passe pour se reconnecter plus tard casse : IBM cite ODBC, NetServer, DDM/DRDA, passthrough, QNTC, QFileSrv.400, les pilotes .NET et OLE DB. Pour ces utilisateurs, TOTPOPTITV (1 à 720 minutes) dispense de code pendant un intervalle après une connexion réussie avec code : réglez-le au plus court. Les profils qui servent aux programmes d'exit de cluster, le serveur IWS en accès direct ou le proxy de IBM Toolbox for Java ne supportent pas le MFA, et une commande ACS lancée en batch par un profil *TOTP reste bloquée. Les outils de service (SST et DST) ont leur propre MFA, avec des clés distinctes.

Les profils _NC et QIBM_RUN_UNDER_USER_NO_AUTH

Le MFA protège la connexion, mais un profil *ALLOBJ peut encore agir sous le nom d'un autre sans connaître ni son mot de passe ni son code : SBMJOB USER(DUPONTJ), ou un « profile handle » obtenu avec *NOPWD. La 7.6 ferme cette porte par la fonction d'utilisation QIBM_RUN_UNDER_USER_NO_AUTH : un profil mis en *DENIED ne peut plus être la cible de ces opérations, qui échouent avec CPF4AF1.

/* D'abord observer : entrées d'audit GR-F *USAGEWARN */
CHGUSRAUD  USRPRF(DUPONTJ) AUDLVL(*AUTWARN)

/* Puis protéger le profil */
CHGFCNUSG  FCNID(QIBM_RUN_UNDER_USER_NO_AUTH) USER(DUPONTJ) USAGE(*DENIED)

IBM la réserve aux profils interactifs, qui s'authentifient : ne la refusez pas aux profils qui ne servent qu'en batch. Elle fonctionne même sans MFA, mais elle le complète.

C'est là qu'interviennent les quatre nouveaux profils fournis par IBM, suffixés _NC (not changeable) : QPGMR_NC, QSECOFR_NC, QSYSOPR_NC et QUSER_NC. Ils ont les mêmes droits que QPGMR, QSECOFR, QSYSOPR et QUSER, mais n'ont pas de mot de passe, ne peuvent pas être modifiés, et ne peuvent pas se voir refuser QIBM_RUN_UNDER_USER_NO_AUTH. Le système les utilise là où il prenait les profils d'origine : travaux soumis, profile handles, profil sous lequel tourne un serveur. IBM demande aux applications de faire de même : une chaîne qui lance SBMJOB USER(QPGMR) doit passer à QPGMR_NC si QPGMR est un jour protégé. Après la mise à niveau, vérifiez aussi les droits privés donnés aux profils d'origine sur vos objets : les profils _NC en ont peut-être besoin.

L'audit : savoir ce qui se passe

Le journal d'audit QSYS/QAUDJRN enregistre les événements de sécurité choisis par QAUDLVL et QAUDLVL2 : tentatives refusées, créations, suppressions, changements de droits ou de profils, restaurations. Une seule commande le met en route :

CHGSECAUD  QAUDCTL(*AUDLVL) QAUDLVL(*DFTSET)

CHGSECAUD crée le journal et son récepteur s'ils n'existent pas, met QAUDCTL à *AUDLVL et, avec *DFTSET, active les événements *AUTFAIL, *CREATE, *DELETE, *SECURITY et *SAVRST. Elle demande *ALLOBJ et *AUDIT. IBM conseille d'aller plus loin : la liste de QAUDLVL2 du tableau ci-dessus ajoute *OBJMGT, *PGMFAIL, *SERVICE et *SYSMGT.

Du système au journal d'audit, puis à SQL Un événement de sécurité, par exemple un mot de passe invalide, est écrit dans le journal QAUDJRN si QAUDCTL et QAUDLVL le prévoient ; les entrées sont rangées dans des récepteurs et se lisent en SQL avec les fonctions SYSTOOLS.AUDIT_JOURNAL_xx. Un événementmot de passe faux, droit refusé… si QAUDCTL et QAUDLVL le prévoient QSYS/QAUDJRNjournal d'audit et ses récepteurs SYSTOOLS.AUDIT_JOURNAL_xxlecture en SQL, par type d'entrée
Chaque type d'entrée a sa fonction SQL : PW pour les mots de passe, CA pour les droits, CP pour les profils…

Trois réglages complètent l'audit : QAUDENDACN dit quoi faire si le journal ne peut plus être écrit, QAUDFRCLVL quand écrire sur disque, et QCRTOBJAUD l'audit des nouveaux objets. Les entrées se lisent avec SYSTOOLS.AUDIT_JOURNAL_PW (mots de passe), SYSTOOLS.AUDIT_JOURNAL_CA (droits), SYSTOOLS.AUDIT_JOURNAL_CP (profils) : un exemple suit sur la page des attaques. Prévoyez la place et la purge des récepteurs : un audit complet produit beaucoup d'entrées.

À retenir

  • QSECURITY 40 : la protection de l'intégrité sans les contraintes du 50 ; changement à l'IPL.
  • PRTSYSSECA compare vos valeurs système aux recommandations d'IBM ; appliquez-les par étapes.
  • Mots de passe de 15 caractères, QPWDLVL 3 ou 4, trois essais au plus.
  • Profils fournis par IBM sans mot de passe, peu de *ALLOBJ, profils inactifs désactivés.
  • En 7.6, MFA activé (QPWDLVL 4, CHGSECA ADLSGNFAC, AUTHMTH(*TOTP)) ; applications et SBMJOB passés sur les profils _NC.
  • Audit actif : CHGSECAUD, puis lecture en SQL.

Sources

Les exemples ont été créés et relevés sur un IBM i 7.5 (voir la méthode). Les définitions et les règles viennent de ces sources, consultées le 15 octobre 2026 :

  1. IBM i 7.5 Security : Planning and setting up system security, IBM (PDF). Niveaux de sécurité (10 et 20 abandonnés, 30 jugé non sûr, 40 livré et recommandé pour la plupart des installations, 50 recommandé pour la plupart des entreprises) ; mots de passe connus des profils fournis par IBM et des outils de service (tables 33 et 34), QUSER pour IBM i Access, connexion par simple Entrée ; verrouillage des valeurs système par SST, DST ou CHGSSTSECA ; risques de Telnet et FTP, serveurs démarrés automatiquement, commandes à distance, DDMACC, JOBACN, PCSACC ; droit public de la racine (*ALL à la livraison), répertoire principal, QPWFSERVER (*USE à la livraison, *EXCLUDE conseillé, limites), droits adoptés ignorés par l'IFS, *RX sur chaque composant du chemin.
  2. IBM i 7.5 Security : Security reference, IBM (PDF, 1 060 pages). Valeurs système de sécurité, de mot de passe et d'audit, avec leurs recommandations (QPWDMINLEN 15 dès le niveau 2, QPWDRQDDIF, QVFYOBJRST, QFRCCVNRST, QSCANFSCTL, QDEVRCYACN, QPWDRULES *ALLCRTCHG et *LMTPRFNAME) ; niveaux de mot de passe QPWDLVL 0 à 4 ; CHGSECAUD et *DFTSET ; CFGSYSSEC, ANZPRFACT, PRTSYSSECA ; RVKPUBAUT et la racine ; droits adoptés et IFS.
  3. IBM i 7.6 Security : Multi-factor authentication (MFA), IBM (PDF). MFA intégré par TOTP (RFC 6238), prérequis QSECURITY 40 et QPWDLVL 4, attribut Additional sign-on factor (CHGSECA ADLSGNFAC, CHGSSTSECA CHGADLSGN, IPL, QDSIGNON3), CHGTOTPKEY et CHKTOTP, clé de secours (10 minutes), AUTHMTH et TOTPOPTITV, saisie mot de passe:code, applications incompatibles, NTP, QIBM_RUN_UNDER_USER_NO_AUTH (CPF4AF1, *AUTWARN, GR-F *USAGEWARN), profils _NC.
  4. IBM i 7.6 Security : Security reference, IBM (PDF). Nouveautés 7.6 : paramètres AUTHMTH et TOTPOPTITV, profils QPGMR_NC, QSECOFR_NC, QSYSOPR_NC et QUSER_NC (mêmes droits que les profils d'origine), nouvelles valeurs livrées de QPWDLVL (3) et QPWDRULES (*ALLCRTCHG *LMTPRFNAME *MINLEN15 *REQANY3) pour les nouvelles installations.
  5. L'aide en ligne des commandes citées, livrée avec IBM i 7.5 et reprise en français dans les fiches des commandes CL de ce site. Paramètres de PRTSYSSECA, CFGSYSSEC, CHGSECAUD, ANZPRFACT, ANZDFTPWD, CHGTCPSVR, CHGNETA, CRTDIR et CHGAUT.

Questions fréquentes

Quel niveau de sécurité choisir sur IBM i ?

Nous conseillons 40, le niveau livré : il protège l'intégrité du système, et IBM le recommande pour la plupart des installations. IBM et PRTSYSSECA poussent vers 50, le plus protégé, mais il est difficile à mettre en place : il ne se teste pas à l'avance, limite les objets du domaine utilisateur aux bibliothèques de QALWUSRDMN et peut demander de recompiler d'anciens programmes. Les niveaux 10 et 20 ne peuvent plus être choisis, et 30 n'est pas considéré comme sûr. Le changement prend effet à l'IPL suivant.

Comment connaître les valeurs de sécurité recommandées ?

La commande PRTSYSSECA imprime, pour chaque valeur système de sécurité et pour les attributs réseau, la valeur actuelle et la valeur recommandée par IBM. Elle demande *ALLOBJ ou *AUDIT. Le service SQL QSYS2.SECURITY_INFO donne aussi les réglages de sécurité en une ligne.

Que fait la commande CFGSYSSEC ?

Elle applique d'un coup une configuration de sécurité : valeurs système, mots de passe *NONE pour les profils fournis par IBM, démarrage de l'audit. Elle exige *ALLOBJ, *SECADM et *AUDIT. On peut l'adapter en récupérant la source de son programme QSYS/QSECCFGS par RTVCLSRC. Testez-la avant : elle change le comportement du système.

Comment désactiver automatiquement les profils inutilisés ?

Avec ANZPRFACT, qui désactive les profils restés inactifs plus d'un nombre de jours donné ; CHGACTPRFL exclut les profils à ne jamais désactiver. En SQL, QSYS2.USER_INFO_BASIC donne la dernière ouverture de session (PREVIOUS_SIGNON) de chaque profil.

Comment activer le MFA sur IBM i 7.6 ?

Il faut QSECURITY 40 ou plus et QPWDLVL 4. L'administrateur active l'attribut Additional sign-on factor (CHGSECA ADLSGNFAC(*ENABLED)) puis fait un IPL ; chaque utilisateur crée sa clé TOTP avec CHGTOTPKEY (ou par QR code dans IBM Navigator for i), l'enregistre dans son application et la vérifie avec CHKTOTP ; l'administrateur passe enfin le profil en CHGUSRPRF AUTHMTH(*TOTP). Synchronisez les horloges avec NTP.

À quoi servent les profils QPGMR_NC, QSECOFR_NC, QSYSOPR_NC et QUSER_NC ?

Ce sont des profils fournis par IBM depuis la 7.6, « not changeable » : mêmes droits que QPGMR, QSECOFR, QSYSOPR et QUSER, mais sans mot de passe, non modifiables, et on ne peut pas leur refuser la fonction QIBM_RUN_UNDER_USER_NO_AUTH. Le système les utilise pour soumettre des travaux, obtenir des profile handles ou faire tourner des serveurs, et IBM demande aux applications de les utiliser si le profil d'origine est protégé par cette fonction.

Comment activer l'audit de sécurité ?

Le plus simple est CHGSECAUD QAUDCTL(*AUDLVL) QAUDLVL(*DFTSET) : la commande crée le journal QSYS/QAUDJRN et son récepteur s'ils n'existent pas, et active les événements *AUTFAIL, *CREATE, *DELETE, *SECURITY et *SAVRST. Il faut les droits spéciaux *ALLOBJ et *AUDIT. Les entrées se lisent ensuite avec les fonctions SYSTOOLS.AUDIT_JOURNAL_xx.