, 5 Choses (avancées) sur la gestion des mots de passe

Voici quelques informations, un peu plus sensibles sur la gestion des mots de passe.

1) Mot de passe SST


Pour accéder aux outils de maintenance système (SST), vous devez avoir un profil créé (CRTSSTUSR) et votre profil IBMi devra avoir le droit *SERVICE
vous pouvez ensuite lancer une session SST par STRSST

2) Mot de passe iNetServer


iNetServer gère son propre contrôle de mot de passe identique pour accéder à vos partages.
vous avez sans doute déjà reçu des messages CPIB682 qui indiquent que l’utilisateur est désactivé pour NetServer
pour le réactiver vous pouvez passer par Navigator For i ou utiliser l’API QZLSCHSI
exemple ici

https://www.ibm.com/support/pages/node/684479

3) Contrôler un mot de passe


Par la commande CHKPWD sur le profil en cours , monmsg CPF2300 à traiter
Par API QSYGETPH, plus d’information, sur le site https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_74/apis/QSYGETPH.htm
exemple
PGM PARM(&userid &passwrd &STS)
/* Paramètres*/

DCL VAR(&USERID) TYPE(CHAR) LEN(10) /* input */

DCL VAR(&PASSWRD) TYPE(CHAR) LEN(10) /* input */
DCL &STS *CHAR 01 /* output */

/* Variables de travail / DCL VAR(&ERRORCODE) TYPE(CHAR) LEN(272)
DCL VAR(&MSGID) TYPE(CHAR) STG(DEFINED) LEN(7) DEFVAR(&ERRORCODE 9)
DCL VAR(&HANDLE) TYPE(CHAR) LEN(12)

/* Récupère le handle */

CHGVAR VAR(&ERRORCODE) VALUE(X’0110′) CALL QSYGETPH (&USERID &PASSWRD &HANDLE &ERRORCODE X’0000000A’ X’FFFFFFFF’) /* test message d’erreur */
If (&MSGID *ne ‘ ‘) THEN(Do)
CHGVAR VAR(&STS) VALUE(‘1’)
SNDPGMMSG MSGID(CPF9897) MSGF(*LIBL/QCPFMSG) +
MSGDTA(&MSGID *BCAT ‘Erreur contrôle de +
mot de passe’) MSGTYPE(ESCAPE) ENDDO ELSE CMD(DO) CHGVAR &STS VALUE(‘0’) SNDPGMMSG MSGID(CPF9897) MSGF(LIBL/QCPFMSG) +
MSGDTA(‘Mot de passe correct pour le +
profil ‘ !! &USERID) MSGTYPE(*COMP)
ENDDO
ENDPGM

4) Supprimer le mot de passe

Certains utilisateurs ne servent pas à se connecter et il peut être important de leurs enlever celui c’est le cas des profils de QSRV et QSRVBAS par exemple !
pour réaliser cette opération vous devez faire un chgusrprf en indiquant le paramètre PASSWORD(*NONE)

5) Rendre un mot de passe utilisateur sans être *SECADM


Par défaut un utilisateur ne peut modifier que son mot de passe. Pour qu’un utilisateur puisse rendre un mot de passe, on peut faire un programme en adoption de droit par rapport à un profil qui lui a *SECADM.
exemple
commande
CMD PROMPT(‘Changement PWD Utilisateur’)
PARM KWD(USRPRF) TYPE(NAME) LEN(10) MIN(1) + PROMPT(‘Profil utilisateur’)

programme

PGM PARM(&USR)

DCLPRCOPT USRPRF(OWNER)
/* paramètres */
dcl &usr *char 10
/* variables de travail */
dcl &usre *char 10
CHKOBJ OBJ(&USR) OBJTYPE(*USRPRF)
monmsg cpf9801 exec(do)
SNDUSRMSG MSG(‘Profil,’ *BCAT &USR BCAT ‘inexistant’) + MSGTYPE(INFO)
RETURN
enddo
RTVJOBA USER(&USrE)
CHGUSRPRF USRPRF(&USR ) PASSWORD(&USR ) +
PWDEXP(YES) STATUS(ENABLED)
monmsg cpf0000 exec(do)
SNDMSG MSG(‘Modification de passe impossible pour +
l »utilisateur’ *BCAT &USR *BCAT ‘demandée +
par’ BCAT &USRE) TOMSGQ(HSTLOG)
RETURN
enddo
SNDMSG MSG(‘Mot de passe pour l »utilisateur’ *BCAT +
&USR *BCAT ‘réinitialisé par’ BCAT + &USRE) TOMSGQ(HSTLOG)
endpgm

, 5 Choses (basiques) sur la gestion des mots de passe

Voici quelques informations concernant la gestion des mot de passe sur IBM i

1) Le niveau de mot de passe

Vous pouvez indiquer un niveau de mot de passe par la valeur Système QPWDLVL

1 et 2, vous avez un mot de passe sur 10 sans diférentiation de CAST
3 et 4, vous avez un mot de passe à 128 sensible à la cast.

le passage au niveau 3 ou 4 impose un IPL pas de gros risque pensez juste si vous avez des mires customizée à ajuster la taille de la zone PWD.
ce qu’il est conseillé, c’est de modifier le sous système CHGSBSD … SGNDSPF(*QDSIGNON) avant l’ipl et de faire vos modifications après en changeant à nouveau la valeur après avoir mis à niveau le fichier ècran.

2) Régle de validation des mots de passe

les principales valeurs systèmes

QPWDCHGBLK *SEC Bloquer la modification du mot de passe
QPWDEXPITV *SEC Durée de validité d’un mot de passe
QPWDEXPWRN *SEC Avertissement d’expiration de mot de passe
QPWDLMTAJC *SEC Limiter chiffres adjacents dans un mot de passe
QPWDLMTCHR *SEC Limiter certains caractères dans un mot de passe
QPWDLMTREP *SEC Limiter nb caractères identiques dans mot de pass
QPWDMAXLEN *SEC Longueur maximale du mot de passe
QPWDMINLEN *SEC Longueur minimale du mot de passe
QPWDPOSDIF *SEC Limiter positions des caractères dans mot de pass
QPWDRQDDGT *SEC Chiffre obligatoire dans un mot de passe
QPWDRQDDIF *SEC Mot de passe différent des précédents

QPWDRULES *SEC Règles mot de passe
les valeurs possibles sont :
*PWDSYSVAL prendre les valeurs sysval QPWD
*ALLCRTCHG règle de composition de mot de passe appliquées au chgusrprf et crtusrprf
*CHRLMTAJC
*CHRLMTREP
*DGTLMTAJC
*DGTLMTFST
*DGTLMTLST
*DGTMAXn
*DGTMINn
*LMTSAMPOS
*LMTPRFNAME
*LTRLMTAJC
*LTRLMTFST
*LTRLMTLST
*LTRMAXn
*LTRMINn
*MAXLENnnn
*MINLENnn
*MIXCASEn
*REQANY3
*SPCCHRLMTAJC
*SPCCHRLMTFST
*SPCCHRLMTLST
*SPCCHRMAXn
*SPCCHRMINn
plus d’informations ici
https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/rzarl/rzarlpwdrules.htm

3) Comment modifier un mot de passe ?

il y a 3 méthodes pour modifier un mot de passe
-la commande chgpwd
-l’API QSYCHGPW
-la commande chgusrprf (elle nécessite le droit *SECADM)

4) La validité d’un mot de passe et les actions associées

La durée de validité d’un mot de passe est exprimé en jours dans le paramètre du profil PWDEXPITV, par défaut on peut indiquer *SYSVAL il se baser alors sur la valeur système QPWDEXPITV
la règle d’usage est fixée par la valeurs système QMAXSIGN qui indique le nombre de tentatives
QMAXSGNACN indique l’action à réaliser en cas de débordement on peut désactiver le profil ou le profil est l’écran associé

5) Pour connaitre les profils désactivés

Voici une requête

select AUTHORIZATION_NAME as Profil_IBMi,
PREVIOUS_SIGNON as derniere_signature,
STATUS as status,
PASSWORD_CHANGE_DATE as date_changement,
DATE_PASSWORD_EXPIRES as date_expiration,
USER_DEFAULT_PASSWORD as PWD_egal_USRPRF,
LAST_USED_TIMESTAMP AS derniere_utilisation
from QSYS2.USER_INFO
where status = ‘*DISABLED’

Conclusion

Il est important d’avoir une bonne gestion des mots de passe sur votre ibm i.
La stratégie doit être adaptée au niveau requis par l’activité de l’entreprise
Elle doit être le plus possible globale au niveau des logins utilisés pour les différentes applications
Il n’y a pas de solution miracle ….