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

Se protéger des attaques et sécuriser l'IFS

Branché au réseau, un IBM i ne se limite plus à l'écran de connexion : FTP, ODBC, partages de fichiers et commandes à distance passent à côté des menus. Ce qu'il faut fermer, surveiller et protéger, dont les répertoires de l'IFS, démontré sur un IBM i 7.5.

5serveurs du tableau d'IBM livrés en AUTOSTART(*YES)
SSHplutôt que Telnet et FTP en clair
*ALLle droit public livré sur la racine /
*RXà avoir sur chaque répertoire du chemin

En une phrase

Contre les attaques, on réduit ce qui écoute sur le réseau, on chiffre ce qui reste (SSH, TLS), on surveille les tentatives dans le journal d'audit ; dans l'IFS, on ferme chaque répertoire au public dès sa création, car il hérite sinon des droits de son parent, et la racine est livrée ouverte à tous.

Réduire ce qui écoute sur le réseau

Au démarrage de TCP/IP, STRTCP lance tous les serveurs réglés en AUTOSTART(*YES). Voici les valeurs de livraison que donne IBM pour les principaux :

ServeurAUTOSTART livréRôle
Telnet*YESSession 5250 ; mot de passe en clair sans TLS.
FTP*YESTransfert de fichiers ; mot de passe en clair sans TLS.
SMTP*YESCourrier.
LPD*YESRéception d'impressions.
SNMP*YESSupervision réseau.
REXEC*NOExécution de commandes à distance.
TFTP*NOTransfert sans authentification.
HTTP*NOServeur web (réglé par CHGHTTPA).

Ne laissez démarrer que les serveurs utiles, avec CHGTCPSVR :

CHGTCPSVR  SVRSPCVAL(*LPD) AUTOSTART(*NO)
CHGCMDDFT  CMD(ENDTCP) NEWDFT('CONFIRM(*YES)')

La seconde commande, conseillée par IBM, fait demander confirmation avant d'arrêter TCP/IP. IBM recommande aussi de donner avec soin le droit spécial *IOSYSCFG, qui permet de changer ces réglages, et d'auditer CHGTCPSVR pour voir qui les modifie.

Pour voir les ports réellement en écoute, une requête SQL, exécutée sur notre IBM i 7.5 :

SELECT DISTINCT LOCAL_PORT, LOCAL_PORT_NAME
  FROM QSYS2.NETSTAT_INFO
 WHERE TCP_STATE = 'LISTEN'
 ORDER BY LOCAL_PORT

Chaque port doit correspondre à un service voulu. Un port inconnu peut être un serveur oublié… ou une porte dérobée. ADDTCPPORT réserve un port à des profils donnés, pour qu'aucun autre programme ne s'y installe.

Chiffrer : SSH et TLS

IBM le rappelle : Telnet et FTP transmettent les données et les mots de passe en clair ; n'importe qui sur le chemin peut les lire. Les remèdes :

  • SSH (sftp, scp, ssh), livré avec IBM i, remplace FTP et Telnet : client et serveur s'authentifient, et tout circule chiffré, identifiants compris.
  • TLS chiffre Telnet, FTP et les serveurs hôtes d'IBM i Access, une fois un certificat attribué à chaque application dans le gestionnaire de certificats (DCM).
  • Les valeurs QSSLPCL et QSSLCSLCTL à *OPSYS laissent le système retirer les protocoles et chiffrements devenus faibles à chaque version.

Les accès à distance passent à côté des menus

Un utilisateur limité à un menu, avec LMTCPB(*YES), peut quand même lancer des commandes depuis son PC : IBM cite la commande à distance par un fichier DDM, les appels de programmes distribués (DPC) d'IBM i Access, ODBC et le SQL distant. Une commande à distance équivaut à une ligne de commande, et IBM précise qu'une commande reçue par DDM ne tient pas compte de LMTCPB.

Le menu ne protège que l'écran 5250 Un utilisateur qui se connecte en 5250 arrive sur son menu, limité par LMTCPB. Le même utilisateur qui passe par ODBC, FTP ou DDM arrive directement aux objets. Dans les deux cas, seuls les droits sur les objets décident de l'accès aux données. Session 5250menu, LMTCPB ODBC, FTP, DDMaucun menu Programmes du menuce que l'appli permet Droits sur les objetsle seul contrôle commun
Le chemin en pointillé contourne le menu : seuls les droits sur les objets protègent les données.

Les parades, de la plus large à la plus fine :

  1. Les droits sur les objets d'abord, la seule protection valable pour toutes les interfaces (voir les droits sur les objets).
  2. Les attributs réseau, par CHGNETA : DDMACC(*REJECT), JOBACN(*REJECT), PCSACC(*REJECT). DDMACC(*REJECT) refuse les demandes DDM et DRDA entrantes : ne l'appliquez pas si d'autres systèmes lisent vos fichiers ainsi. JOBACN(*REJECT) refuse les travaux envoyés par le réseau ; PCSACC ne concerne plus que d'anciens clients DOS et OS/2.
  3. Les programmes d'exit des serveurs (FTP, ODBC, commande à distance…), enregistrés par WRKREGINF et listés par QSYS2.EXIT_PROGRAM_INFO. IBM prévient qu'ils sont difficiles à écrire, rarement infaillibles, et ne remplacent pas les droits sur les objets. Vérifiez aussi ceux qui sont déjà enregistrés : un programme d'exit inconnu est suspect.
  4. Les fonctions d'utilisation (WRKFCNUSG, CHGFCNUSG) décident qui peut utiliser certaines fonctions, par exemple la base de données par un client. Elles n'empêchent pas d'accéder à un objet par une autre interface.

Deux valeurs système ferment encore deux portes : QRMTSIGN à *FRCSIGNON impose l'écran de connexion aux sessions à distance, et QAUTOVRT limite la création automatique d'unités virtuelles pour Telnet.

Repérer les tentatives de connexion

Un robot qui essaie des mots de passe laisse des traces. Avec QMAXSIGN à 3 et QMAXSGNACN à 3, le profil et l'unité sont désactivés au troisième mot de passe faux. Avec l'audit actif (*AUTFAIL, voir l'audit), chaque échec écrit une entrée PW dans QAUDJRN, que l'on lit en SQL :

SELECT ENTRY_TIMESTAMP, USER_NAME, VIOLATION_TYPE_DETAIL, REMOTE_ADDRESS
  FROM TABLE(SYSTOOLS.AUDIT_JOURNAL_PW(STARTING_TIMESTAMP => CURRENT TIMESTAMP - 7 DAYS))
 ORDER BY ENTRY_TIMESTAMP DESC

La requête donne l'heure, le profil visé, le type d'erreur (mot de passe faux, profil inconnu…) et l'adresse d'origine. Beaucoup de profils inconnus essayés depuis la même adresse : c'est un balayage, à bloquer en amont, sur le pare-feu ou par les règles de filtrage IP d'IBM i (packet rules). Sur un système exposé à Internet, ne laissez de toute façon ouverts que les ports indispensables, et jamais Telnet ni FTP en clair.

L'IFS : la racine est livrée ouverte

L'IFS (integrated file system) contient les fichiers « à la PC » : la racine /, /home, QOpenSys… et même les bibliothèques, vues comme /QSYS.LIB. Deux règles font sa sécurité :

  • À la livraison, le droit public de la racine / est *ALL : tout utilisateur peut y créer un répertoire, comme sur son PC.
  • Un nouveau répertoire hérite par défaut des droits de son parent immédiat (CRTDIR … DTAAUT(*INDIR) OBJAUT(*INDIR)), droits privés et liste d'autorisation compris. Créé dans la racine, il est donc ouvert à tous.

IBM propose trois façons de s'y prendre : apprendre aux utilisateurs à préciser les droits en créant leurs répertoires ; créer un répertoire principal, protégé comme il faut, sous lequel chacun crée les siens, qui en hériteront ; ou retirer au public de la racine les droits de création (*W et les droits sur l'objet), après avoir vérifié qu'aucune application n'en a besoin. RVKPUBAUT ramène la racine à *USE.

Les droits sur les données de l'IFS

L'IFS parle en droits « à la Unix » ; chacun correspond à des droits IBM i :

Droit IFSPermet deDroits IBM i
*Rlire*OBJOPR + *READ
*Wécrire, modifier, supprimer le contenu*OBJOPR + *ADD + *UPD + *DLT
*Xexécuter, traverser un répertoire*OBJOPR + *EXECUTE
*RXlire et traverser*USE
*RWXtout faire sur les données*CHANGE
*EXCLUDEaucun accès*EXCLUDE
Le chemin compte autant que le fichier. Pour atteindre un fichier, il faut *X sur chaque répertoire du chemin, et la plupart des opérations demandent *RX sur chaque composant, racine comprise. Et les droits adoptés ne servent pas dans la racine, QOpenSys, QDLS ni les systèmes de fichiers utilisateur : un programme USRPRF(*OWNER) n'ouvre pas un fichier de l'IFS.

Démonstration : un répertoire fermé au public

Sur notre IBM i 7.5, un répertoire /home/jobidemo créé avec des droits explicites, un sous-répertoire créé sans rien préciser, un fichier copié dedans, puis une lecture tentée par JOBIUSER, un profil sans droit spécial :

CRTDIR     DIR('/home/jobidemo') DTAAUT(*EXCLUDE) OBJAUT(*NONE)
CRTDIR     DIR('/home/jobidemo/projets')
CPYTOSTMF  FROMMBR('/QSYS.LIB/JOBIPRF.LIB/QCLSRC.FILE/LIRESECR.MBR') +
             TOSTMF('/home/jobidemo/projets/note.txt') STMFCCSID(1208)
SBMJOB     CMD(QSH CMD('cat /home/jobidemo/projets/note.txt')) +
             JOB(LIREIFS) USER(JOBIUSER)
Écran 5250 Droits de l'objet /home/jobidemo/projets, type DIR, propriétaire SAKADM : *PUBLIC *EXCLUDE, SAKADM *RWX avec tous les droits sur l'objet
DSPAUT du sous-répertoire projets : créé sans préciser de droits, il a hérité du *EXCLUDE de son parent.

Le fichier note.txt, créé par CPYTOSTMF, est lui aussi en *PUBLIC *EXCLUDE. Le travail de JOBIUSER se termine avec ce message dans sa sortie :

cat: 001-0023 Error found opening file /home/jobidemo/projets/note.txt. Permission denied.

Pour ouvrir l'accès à une équipe, on donne le droit à son groupe (ici un groupe GRPCOMPTA fictif), sur le chemin et sur le répertoire :

CHGAUT  OBJ('/home/jobidemo') USER(GRPCOMPTA) DTAAUT(*X)
CHGAUT  OBJ('/home/jobidemo/projets') USER(GRPCOMPTA) DTAAUT(*RWX)
CRTDIRCréer un répertoire ; DTAAUT et OBJAUT fixent ses droits (*INDIR par défaut : hérités du parent).
CHGAUTDonner ou retirer un droit à un utilisateur, un groupe ou *PUBLIC.
DSPAUTAfficher les droits d'un fichier ou d'un répertoire.
WRKAUTGérer les droits à l'écran.
CHGOWNChanger le propriétaire.
CHGPGPChanger le groupe principal.
CHGATRChanger un attribut, comme la lecture seule ou l'analyse antivirus.

Pour trouver les répertoires de /home où le public peut écrire (requête exécutée sur notre IBM i 7.5) :

SELECT S.PATH_NAME, P.DATA_AUTHORITY
  FROM TABLE(QSYS2.IFS_OBJECT_STATISTICS(
         START_PATH_NAME => '/home', SUBTREE_DIRECTORIES => 'NO')) S,
       TABLE(QSYS2.IFS_OBJECT_PRIVILEGES(PATH_NAME => S.PATH_NAME)) P
 WHERE S.OBJECT_TYPE = '*DIR'
   AND P.AUTHORIZATION_NAME = '*PUBLIC'
   AND P.DATA_AUTHORITY IN ('*RWX', '*WX', '*RW', '*W')

Bibliothèques, partages et antivirus

QSYS.LIB et la liste QPWFSERVER

Vues depuis un PC, les bibliothèques sont un répertoire comme un autre : un utilisateur peut faire glisser une bibliothèque dans la corbeille si les droits sur les objets le lui permettent. La liste d'autorisation QPWFSERVER est la porte de /QSYS.LIB pour les clients distants : livrée en *PUBLIC *USE, porte ouverte. IBM indique que la plupart des utilisateurs n'en ont pas besoin et qu'on voudra sans doute la passer à *EXCLUDE, en ajoutant un à un ceux qui en ont besoin :

EDTAUTL  AUTL(QPWFSERVER)

Limite signalée par IBM : elle ne contrôle que le serveur de fichiers (NetServer et fichiers entre serveurs), pas FTP ni ODBC.

Les partages NetServer

Chaque partage expose un répertoire au réseau Windows. Listez-les avec leurs droits, et ne gardez que ceux qui servent, en lecture seule quand c'est possible :

SELECT SERVER_SHARE_NAME, PATH_NAME, PERMISSIONS
  FROM QSYS2.SERVER_SHARE_INFO

L'antivirus

IBM le précise : IBM i lui-même ne peut pas être infecté par les virus des PC. Mais l'IFS peut stocker un fichier infecté et le transmettre aux postes qui l'ouvrent par un partage. Un antivirus s'enregistre aux points d'exit QIBM_QP0L_SCAN_OPEN et QIBM_QP0L_SCAN_CLOSE, et la valeur système QSCANFS (*ROOTOPNUD) décide quels systèmes de fichiers il analyse ; QSCANFSCTL règle le comportement en cas d'erreur.

À retenir

  • Seuls les serveurs utiles en AUTOSTART(*YES) ; vérifiez les ports en écoute.
  • SSH ou TLS : jamais de mot de passe en clair sur le réseau.
  • ODBC, FTP et DDM ignorent les menus : les droits sur les objets protègent, les programmes d'exit complètent.
  • Les échecs de connexion se lisent dans SYSTOOLS.AUDIT_JOURNAL_PW.
  • Dans l'IFS, créez chaque répertoire avec des droits explicites ; il faut *X sur tout le chemin ; les droits adoptés n'y servent pas.

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.5 Files and file systems : Integrated file system, IBM (PDF). Droits sur les données *R, *W, *X et leur équivalence en droits IBM i ; héritage des droits par les nouveaux répertoires ; QPWFSERVER dans QSYS.LIB ; analyse antivirus par points d'exit.
  4. 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

Faut-il désactiver Telnet et FTP sur IBM i ?

Telnet et FTP transmettent le mot de passe en clair. Préférez SSH (sftp, scp) ou leurs versions TLS, ne laissez démarrer automatiquement que les serveurs utiles (CHGTCPSVR AUTOSTART(*NO)), et vérifiez les ports en écoute avec QSYS2.NETSTAT_INFO.

Le menu restreint protège-t-il des accès ODBC ou FTP ?

Non. Une connexion ODBC, DDM ou FTP n'affiche aucun menu, et la commande à distance équivaut à une ligne de commande ; IBM précise que DDM ignore LMTCPB. Seuls les droits sur les objets protègent vraiment les données, complétés au besoin par des programmes d'exit.

Comment voir les tentatives de connexion échouées ?

Avec l'audit actif (*AUTFAIL), chaque mot de passe ou profil invalide écrit une entrée PW dans QAUDJRN. La fonction SYSTOOLS.AUDIT_JOURNAL_PW les lit en SQL, avec l'utilisateur, le type d'erreur et l'adresse distante. QMAXSIGN et QMAXSGNACN désactivent le profil après trois essais.

Quel droit public mettre sur un répertoire de l'IFS ?

Un nouveau répertoire hérite par défaut des droits de son parent, et la racine est livrée avec *PUBLIC *ALL. Créez vos répertoires avec un droit explicite, par exemple CRTDIR DTAAUT(*EXCLUDE) OBJAUT(*NONE), puis donnez les droits aux groupes avec CHGAUT. Pour traverser un chemin, il faut *X sur chaque répertoire, et la plupart des opérations demandent *RX sur chaque composant.

Les droits adoptés fonctionnent-ils dans l'IFS ?

Non : la plupart des systèmes de fichiers (racine, QOpenSys, QDLS, systèmes définis par l'utilisateur) ignorent les droits adoptés. Un programme USRPRF(*OWNER) ne donne donc pas accès à un fichier de l'IFS ; il faut un droit privé ou de groupe sur le fichier.

IBM i a-t-il besoin d'un antivirus ?

Les objets IBM i eux-mêmes ne sont pas infectables comme des exécutables PC, mais l'IFS peut stocker des fichiers infectés pour les postes qui y accèdent par un partage. Un antivirus s'enregistre aux points d'exit QIBM_QP0L_SCAN_OPEN et QIBM_QP0L_SCAN_CLOSE ; la valeur système QSCANFS décide quels systèmes de fichiers sont analysés.