EIM

 

IBM i   propose un Single Signon basé sur Kerberos avec EIM.

 

KERBEROS est un protocole d'authentification, qui utilise les concepts suivants :

Le dialogue se passe de la manière suivante :

 => demande au serveur d'authentification (probablement Windows) d'un TGT
 <= réception du TGT si l'authentification est valide

 => je fournit mon TGT au KDC (toujours Windows) afin d'obtenir un TS pour un service donné
 <= obtention du TS si TGT valide

 => présentation du TS auprès du fournisseur de service (probablement le System i)
 <= accord de ce dernier si le TS est jugé valide, qui présente en échange la preuve qu'il est bien le service attendu.

 



EIM
est une architecture et un jeu d'API d'origine IBM complétant Kerberos dans la mise en place du SSO (Single SignOn)

Elle permet d'établir une relation entre une personne physique (identifiant EIM) et l'ID (le profil) qui identifie cette personne sur chaque serveur.
(donc le nom d'utilisateur peut être différent sur Windows et IBM i)

Cette correspondance est enregistrée dans le serveur LDAP de l'IBM i, qui doit être configuré et démarré.

 

Mise en place (à l'aide de System i Navigator) :

Vérifiez que vous avez installé les logiciels suivants

 

1/ Configurez le serveur d'authentification (kerberos)

Sécurité/Service d'authentification réseau et par un clic droit, choisissez configuration.


un assistant est lancé

indiquez ici si vous utilisez un serveur Windows (2000,2003 ou 2008), comme centre Kerberos.

-> si vous utilisez Windows (cas le plus simple et le plus répandu) entrez le nom de domaine

puis les coordonnées du serveur kerberos


et le serveur de mot de passe (normalement le même)

Ensuite, indiquez les services qui vont utiliser EIM (il faut générer des clés)


Indiquez les services à authentifier (ceux pour lesquels il faudra un TS)

ATTENTION :

vos serveurs DNS doivent être correctement renseigné, particulièrement il doit y avoir correspondance entre

  • le nom de la machine (CFGTCP/option 12)
  • le nom du serveur pour le PC.
  • le nom retourné par une recherche inverse (ping -a) sur l'adresse IP

sinon , vous verrez cette fenêtre

puis service par service, entrez le fichier où stocker la clé , le nom de principal et la clé :


ATTENTION, cela va aussi générer un fichier .bat de création d'utilisateurs sur Active Directory si votre KDC est un serveur WINDOWS

la clé saisie ici, sera le mot de passe attribué à l'utilisateur sur l'AD, il doit donc respecter les stratégies imposées par ce dernier (longueur mini par exemple)

pour kerberos
krbsvr400/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA

puis LDAP
ldap/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA

Apache
HTTP/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA

Dans la config apache pour protéger un répertoire par kerberos il faudra ajouter :


<Directory /www/apachedft/htdocs>
  Order Allow,Deny
  Allow From all
  Require valid-user
  PasswdFile %%KERBEROS%%
  AuthType Kerberos
</Directory>

 

Netserver
HOST/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA (nom complet)
cifs/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA
HOST/as400@DOMAINENT.VOLUBIS.INTRA
(nom court)
cifs/as400@DOMAINENT.VOLUBIS.INTRA
HOST/qas400@DOMAINENT.VOLUBIS.INTRA
(nom netserver)
cifs/qas400@DOMAINENT.VOLUBIS.INTRA
HOST/10.3.1.1@DOMAINENT.VOLUBIS.INTRA
(adresse IOP)
cifs/10.3.1.1@DOMAINENT.VOLUBIS.INTRA

Les lignes HOST/ sont pour les PC avant XP, les lignes cifs/ pour les PC en XP, Seven et suivant...

Vous devez retrouver :

  1. Le nom de système (long et court)
  2. L'adresse IP
  3. le nom Netbios indiqué ici :

Ensuite, pour utiliser le SSO, il faudra simplement autoriser l'Authentification réseau

NFS
nfs/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA


puis indiquez (conseillé) si vous souhaitez que l'assistant génère le fichier .bat à lancer sur votre serveur Windows, comme vu plus haut.

  Cela va définir les services sur le KDC

Enfin, confirmez cet écran récapitulatif.

2/ Configurez EIM

Réseau/mappage EIM/ configuration et par un clic droit choisissez configuration (ou Reconfiguration)

si le serveur kerberos n'est pas configuré, l'assistant va lancer la configuration vue plus haut.

Indiquez

indiquez l'annuaire LDAP

il est obligatoire que le serveur LDAP soit sur IBM i (et, préférable, sur la même machine)


sinon, indiqué ces coordonnées

puis l'identifiant avec lequel l'assistant va se connecter à ce dernier..

le serveur EIM fonctionne par domaine, indiquez ici un nom (à créer)

et le suffixe LDAP sous lequel enregistrer les informations

l'ID avec lequel l'OS se connectera à EIM (donc au serveur LDAP).

 

puis confirmez l'écran récapitulatif en cliquant sur Terminer

Vous devez retrouver les deux registres créés, sous cet affichage :

 


Ensuite, configurez votre serveur Windows (enregistrement des services)

lancez NASConfig_AS400.bat (remplacez AS400 par le nom de votre serveur)

qui doit lancer une série de commandes comme celles-ci :

NET USER as400_1_krbsvr400 XXXXX /ADD /workstations:none /DOMAIN (DSADD pour windows 2003/2008)
KTPASS -MAPUSER as400_1_krbsvr400 -princ krbsvr400/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA -pass XXXXX -mapOp set

où XXXXX est le mot de passe enregistré par l'assistant et -mapOp indique un remplacement si l'entrée existe déjà.

NET USER créé l'utilisateur dans Active Directory

KTPASS lui associe le principal fourni en paramètre

Avec ce paramétrage :

Attention, vous remarquerez la case "Utiliser les types de cryptage DES pour ce compte" cochée, c'est obligatoire.

EIM utilisant ce type de cryptage et non le RC4-HMAC de Windows 2003/2008.

Ceci est géré automatiquement par l'ajout de +DesOnly à la commande ktpass générée dans le fichier .bat par l'assistant de Client Access V6R1(et suivantes) (pour Client Access V5R4, installez SI37892).

Windows 7 et 2008 n'utilisent plus par défaut le chiffrement DES-CBC-MD5 utilisé par EIM.

 

  • Soit, Il faut le forcer.

Sur le poste Windows 7, exécuter "gpedit.msc"
Dans la console, aller sur Configuration Ordinateur / Paramètres Windows / Paramètres de sécurité / Stratégies locales/ Options de sécurité

Dans la panneau de droite, Double-cliquer sur l'option "Sécurité réseau : configurer les types de chiffrement autorisés pour Kerberos"


Cocher les cases "DES-CBC-MD5". Valider. Fermer la console.

  • Soit il faut installer les PTF suivantes
    • V7R10 : SI42219,SI45846,SI43918
    • V6R10 : SI42957,SI45582,SI43919
    • V5R40 : SI43034,SI45840,SI43920


      Vérifiez que vous avez dans le fichier /QIBM/UserData/OS400/NetworkAuthentication/krb5.conf

      les deux lignes (dans la section [libdefaults] )
      default_tkt_enctypes = aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96,arcfour-hmac
      default_tgs_enctypes = aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96,arcfour-hmac

      Qui doivent apparaitre comme ceci quand vous demandez les propriétés du service d'authentification


    • Modifiez le principal sur votre serveur Windows
      • Sur Windows 2003 enlevez le cryptage DES
      • Sur Windows 2008, enlevez DES et Cochez AES 128 et 256 bits


        Si vous devez utiliser ktpass, remplacez +DesOnly par /crypto All sur Windows 2008

 

 


Pour continuer, retournons sur le System i, lancez QSH depuis une session 5250

puis tapez kinit -k krbsvr400/as400.volubis.intra@DOMAINENT.VOLUBIS.INTRA (en remplaçant par vos valeurs)

Si vous voyez le message suivant : "Response too large for datagram"

retournez sur iSeries navigator, demandez les propriétés du service d'authentification (clic droit)
et cochez "Utiliser TCP"

si tout marche bien , vous devez voir le prompt ($), vous pouvez vérifier ensuite par klist

keytab list, vous montre la liste détaillée.

 

Enfin, il faut enregistrer les utilisateurs sous System i Navigator. Connectez vous :

il faut créer

EN V6R1, vous pouvez même associer plusieurs profils CIBLE pour un même système, à condition de préciser l'adresse IP d'origine permettant de départager (bouton Détail).

Et vous pouvez avoir plusieurs utilisateurs source (Windows) pour un seul utilisateur Cible.




ici les utilisateurs Windows FORMATIONA ou FORMATIONB, utiliserons le profil IBM i FORMATIONA
(attention, ceci dit, à ne pas vous embrouiller, on préférera sans doute la règle du 1 pour 1)

Du coté System i, vous pouvez aussi utiliser la commande :

CHGUSRPRF USRPRF(FORMATION1) EIMASSOC(*USRPRF *TARGET *REPLACE *CRTEIMID)

cela va créer un identificateur (grâce à *CRTEIMID) et lui associer un profil local de même nom, de type cible.


ou utiliser les API EIM pour insérer les identificateurs par programme. (voir cet exemple)

Enfin sur les postes concernés, paramétrez votre connexion Client Access Windows comme ceci :


Base de registre :

HKEY_CURRENT_USER\Software\IBM\Client Access Express\CurrentVersion\Environments\Mes connexions\AS400\Communication
->   Clé Signon Mode à 4.

Par session, créer ou modifier le fichier CAE
[CAE]
UserIDSource=4


ou pour IBM i Access client solution (ACS)



Vous pouvez aussi le préciser au niveau de la session (ici sous ACS)





Exemple de mise en place :


Cas particulier, vous avez deux domaines Windows


(dans nos exemples DOMAINENT et DOMAINEW8, lors d'un passage à Windows 2008)

 

Vous devez :


Autre cas, Deux machines IBM i

L'une des deux doit être définie comme nous venons de le voir plus haut.

 

Pour l'autre (I5TEST dans nos exemples) :

 

 

Cette configuration peut aussi être utilisée pour passer d'un système à l'autre, particulièrement pour :


La version 7.2 propose d'utiliser aussi kerberos pour connecter deux IBM i en TELNET et FTP



Sauvegardes :

Vous pouvez répliquer les deux bibliothèques et les deux branches de l'IFS (arborescence incluse) sur une machine de backup
  (LDAP sera démarré, uniquement en cas de bascule, sur la machine de backup)

Attention, ceci dit, avec des iASP (PowerHA, par exemple)

  • Il n'était pas possible d'indiquer un ASP indépendant lors de la config LDAP (donc QUSRDIRDB est dans l'ASP système)
  • C'est désormais accepté lors de la configuration initiale


  • La bibliothèque QUSRDIRDB sera placée dans cet ASP
  • Le répertoire /QIBM/UserData/OS400/DIRSRV/idsslapd-QUSRDIR (lié à l'instance) ne sera qu'un lien symbolique vers le répertoire de même nom dans l'IASP (sous QSH ls -l montre les liens symboliques)

Dans le cas d'une config. dans l'ASP de base :

-> Sauvegardez/restaurez les bibliothèques et les répertoires "à la main" (par exemple sauvegarde dans un SAVF d'une bibliothèque de l'iASP),
ou bien voyez la réplication de serveur LDAP à serveur LDAP en suivant ce cours

   (basé sur http://www-01.ibm.com/support/docview.wss?uid=nas1618398daccf03cf3862575d6006c3ce6 )

 

Copyright © 2009/2017 VOLUBIS