8. Configuration de l'authentification CHAP

Dans cette partie, on suppose que tous les tests précédents ont été effectués avec succès et que les échanges entre les systèmes Target et Initiator sont validés.

On s'intéresse maintenant à l'authentification entre ces mêmes systèmes. Pour traiter les questions suivantes, une nouvelle entrée a été utilisée pour le rôle Target.

Le mécanisme d'authentification le plus communément utilisé dans le déploiement des connexions iSCSI s'appuie sur CHAP (Challenge-Handshake Authentication Protocol). Il s'agit d'une méthode d'authentification entre deux hôtes pairs sans échange de mot de passe en clair sur le réseau. Cette méthode suppose que les deux hôtes utilisent le même mot de passe.

Q37.

Quel est l'attribut qui permet d'activer globalement l'authentification avec targetcli ?

Recherchez dans la liste des attributs du menu tpg1 celui qui est relatif à l'authentification.

Placez vous au niveau tpg1 du menu de l'application targetcli.

sudo targetcli
cd /iscsi/iqn.2003-01.org.linux-iscsi.target.x8664:sn.cd547a636fe7/tpg1/

Relevez la valeur de l'attribut authentication.

get attribute authentication
authentication=0

Changez la valeur de cet attribut pour activer l'authentification au niveau du portail iSCSI.

set attribute authentication=1
get attribute authentication
authentication=1

Q38.

Comment régler les paramètres d'authentification CHAP à deux voies pour le portail iSCSI ?

Recherchez les paramètres disponibles au niveau de la liste de contrôle d'accès dédiée au rôle Initiator.

Partant de la configuration mise en place dans la Section 6, « Configuration du rôle Target », on ajoute les paramètres d'authentification à la liste de contrôle d'accès existante.

sudo targetcli
cd /iscsi/iqn.2003-01.org.linux-iscsi.target.x8664:sn.cd547a636fe7/tpg1/
cd acls/iqn.1993-08.org.debian:01:733ea42cb56

Définissez les paramètres d'authentification pour cette liste de contrôle d'accès. Comme la méthode CHAP est symétrique, vous devez déposer de part et d'autre le secret. On fixe ici les paramètres userid et password.

set auth userid=SAN-lab-user
Parameter userid is now 'SAN-lab-user'.
set auth password=SAN-lab-pwd
Parameter password is now 'SAN-lab-pwd'.
set auth mutual_userid=target-user
Parameter mutual_userid is now 'target-user'.
set auth mutual_password=target-pwd
Parameter mutual_password is now 'target-pwd'.

Les valeurs définies ci-dessus doivent être reportées dans la configuration du service open-iscsi sur le système Initiator.

Q39.

Comment régler les paramètres d'authentification CHAP sur le système Initiator  ?

Recherchez dans le fichier de configuration principal du rôle Initiator les paramètres relatifs à l'authentification.

Libérez la session existante avant d'ajouter les authentifiants à la configuration du service open-iscsi.

Effacez l'enregistrement obtenu avec l'instruction de découverte utilisée précédemment.

Commencez par libérer la session.

sudo iscsiadm -m node -U all
Logging out of session [sid: 1,
    target: iqn.2003-01.org.linux-iscsi.target.x8664:sn.5fc599ddeef8,
    portal: 2001:678:3fc:171:baad:caff:fefe:5,3260]
Logout of [sid: 1,
    target: iqn.2003-01.org.linux-iscsi.target.x8664:sn.5fc599ddeef8,
    portal: 2001:678:3fc:171:baad:caff:fefe:5,3260] successful.

Effacez ensuite l'enregistrement de découverte du portail depuis le rôle Initiator.

sudo iscsiadm -m discoverydb \
    -t sendtargets \
    -p [2001:678:3fc:171:baad:caff:fefe:5]:3260 \
    -o delete

Le nom d'utilisateur et le mot de passe sont définis dans le fichier /etc/iscsi/iscsid.conf du système Initiator.

sudo grep -m1 -A30 CHAP /etc/iscsi/iscsid.conf
# CHAP Settings
# *************

# To enable CHAP authentication set node.session.auth.authmethod
# to CHAP. The default is None.
#
# NOTE: currently this attribute is checked for validity but then
# ignored, so even if it is set to None, CHAP will be used if the
# credentials (username/password and possibly username_in/password_in)
# are set. This behavior is deprecated, and in the future CHAP will
# not be used if authmethod is set to None.
#
#node.session.auth.authmethod = CHAP

# To configure which CHAP algorithms to enable, set
# node.session.auth.chap_algs to a comma separated list.
# The algorithms should be listed in order of decreasing
# preference - in particular, with the most preferred algorithm first.
# Valid values are MD5, SHA1, SHA256, and SHA3-256.
# The default is MD5.
#node.session.auth.chap_algs = SHA3-256,SHA256,SHA1,MD5

# To set a CHAP username and password for initiator
# authentication by the target(s), uncomment the following lines:
#node.session.auth.username = username
#node.session.auth.password = password

# To set a CHAP username and password for target(s)
# authentication by the initiator, uncomment the following lines:
#node.session.auth.username_in = username_in
#node.session.auth.password_in = password_in

Éditez les lignes du fichiers fichier /etc/iscsi/iscsid.conf avec les valeurs définies dans la configuration du rôle Target.

sudo sed \
-i 's/^#node.session.auth.authmethod = CHAP/node.session.auth.authmethod = CHAP/' \
/etc/iscsi/iscsid.conf
sudo sed \
-i 's/^#node.session.auth.username = username/node.session.auth.username = SAN-lab-user/' \
/etc/iscsi/iscsid.conf
sudo sed \
-i 's/^#node.session.auth.password = password/node.session.auth.password = SAN-lab-pwd/' \
/etc/iscsi/iscsid.conf
sudo sed \
-i 's/^#node.session.auth.username_in =.*/node.session.auth.username_in = target-user/' \
/etc/iscsi/iscsid.conf
sudo sed \
-i 's/^#node.session.auth.password_in = .*/node.session.auth.password_in = target-pwd/' \
/etc/iscsi/iscsid.conf

relancez le service open-iscsi pour prendre en compte les modifications effectuées sur la configuration du rôle Initiator.

sudo systemctl restart open-iscsi.service

Lancez une nouvelle découverte du portail iSCSI.

sudo iscsiadm -m discovery \
    --type sendtargets \
    --portal=[2001:678:3fc:171:baad:caff:fefe:5]

Lancez une nouvelle ouverture de session.

sudo iscsiadm -m node \
    -T iqn.2003-01.org.linux-iscsi.target.x8664:sn.cd547a636fe7 \
    -p [2001:678:3fc:171:baad:caff:fefe:5]:3260 \
    --login

Relevez les informations de session.

sudo iscsiadm -m session
tcp: [1] [2001:678:3fc:171:baad:caff:fefe:5]:3260,1 \
    iqn.2003-01.org.linux-iscsi.target.x8664:sn.cd547a636fe7 (non-flash)

Une fois la session établie, une authentification sécurisée est en place entre les rôles Target et Initiator.

Cependant, si le mécanisme d'authentification est valide, l'algorithme de chiffrement pose problème. En effet, le protocole MD5 ne garantit pas un niveau de sécurité suffisant.

Nous devons attendre une nouvelle version de la pile LIO du noyau Linux pour bénéficier de l'algorithme SHA3-256.

sudo iscsiadm -m node -o show | grep -i chap
iface.chap_auth = <empty>
iface.bidi_chap = <empty>
node.session.auth.authmethod = CHAP
node.session.auth.chap_algs = MD5