web-dev-qa-db-fra.com

Activer ecryptfs pour tous les nouveaux utilisateurs, même ceux s'authentifiant via kerberos et ldap

Comment puis-je m'assurer que le répertoire de base de tous les utilisateurs est crypté lors de la première connexion?

J'ai configuré pam pour utiliser l'authentification Kerberos et l'autorisation LDAP (ce qui, à mon avis, ne devrait pas vraiment avoir d'effet sur ecryptfs).

J'ai également configuré pam-mkhomedir pour créer les répertoires de base à partir de/etc/skel dans lesquels j'ai placé certaines configurations standard.

En examinant le répertoire .ecryptfs dans un compte utilisateur sur lequel ecryptfs est déjà activé, il existe certaines configurations spécifiques à l'utilisateur, telles que le point de montage (défini sur/home/d_inevitable), par exemple, qui ne serviraient à rien dans/etc/skel.

De plus, les configurations dans/etc/skel devront être copiées after le répertoire personnel a été monté avec ecryptfs.

5
d_inevitable

J'ai réussi à le faire fonctionner avec pam_exec:

  1. Créez un script pour configurer ecryptfs pour tous les nouveaux utilisateurs dans /etc/security/ecryptfs:

    #!/bin/bash
    
    home=`eval echo ~$PAM_USER`
    ecryptfs=/home/.ecryptfs/$PAM_USER/.ecryptfs
    
    read password
    
    if [ -d $ecryptfs ];  then
        # ecryptfs is set
        echo "Ecryptfs is already configured"
        exit 0
    Elif [ `id -u` == 0 ]; then
        # Setup ecryptfs and make home
        umask 077
        mkdir -p $home
        group=`id -gn $PAM_USER`
        chown $PAM_USER:$group $home
    
        ecryptfs-setup-private -u $PAM_USER -l "$password" -b --nopwcheck
        exit 0
    else
        # NOT ROOT
        echo "Cannot login with 'su' for the first time"
        exit 1
    fi
    

    Assurez-vous que le script est exécutable:

    Sudo chmod a+rx /etc/security/ecryptfs
    
  2. Ajoutez une entrée pour l'exécuter avec pam_exec sur auth:

    Sudo vim /etc/pam.d/common_auth
    

    Ajoutez les lignes suivantes:

    auth    required        pam_exec.so     expose_authtok /etc/security/ecryptfs
    auth    optional        pam_ecryptfs.so unwrap
    

    Le pam_exec est défini sur requis, car il ne configurera pas ecryptfs si le script ne s'exécute pas en tant que root. C'est le cas si su est utilisé par un utilisateur non root. Donc, si ecryptfs n'est pas configuré et que su est utilisé (c'est-à-dire lorsque l'utilisateur tente de se connecter pour la première fois à l'aide de su), sa demande sera refusée. En tant que tel, nous nous assurons que l'utilisateur ne peut pas se connecter sans une configuration ecryptfs.

  3. Créez un autre script pour renseigner le répertoire de base à la place de pam_mkhomedir

    Sudo vim /etc/security/mkhome
    

    Ce script copiera tout dans/etc/skel si le fichier .donotremove n’existe pas.

    #!/bin/bash
    
    cd ~
    
    if [ ! -f .donotremove ] ; then
        echo Copying /etc/skel
        cp -ra /etc/skel/* ~
        touch .donotremove
    fi
    

    Assurez-vous également que ce fichier est exécutable:

    Sudo chmod a+rx /etc/security/mkhome
    
  4. Ajouter une autre entrée pour exécuter ce script sur une session

    Sudo vim /etc/pam.d/common_session
    

    Ajoutez les lignes suivantes:

    session optional        pam_ecryptfs.so unwrap
    session optional        pam_exec.so     seteuid /etc/security/mkhome
    

Désormais, les utilisateurs LDAP peuvent se connecter et disposer d’un répertoire d’accueil chiffré ecryptfs.

Mise à jour

Au lieu d’éditer directement les fichiers dans /etc/pam.d (ce qui n’est généralement pas recommandé), il est préférable d’appliquer les paramètres en tant que profil PAMConfig .

Il suffit de coller ce code dans un nouveau fichier /usr/share/pam-configs/ecryptfs-nonlocal:

Name: Enable EcryptFS for users from remote directories such as LDAP.
Default: no
Priority: 0
Conflicts: ecryptfs-utils
Auth-Type: Additional
Auth-Final:
    required    pam_exec.so expose_authtok /etc/security/ecryptfs
    optional    pam_ecryptfs.so unwrap
Session-Type: Additional
Session-Final:
    optional    pam_ecryptfs.so unwrap
    optional    pam_exec.so seteuid /etc/security/mkhome
Password-Type: Additional
Password-Final:
    optional    pam_ecryptfs.so

Et puis exécutez pam-auth-update:

pam-auth-update

Cochez Enable EcryptFS for users from remote directories such as LDAP. et assurez-vous que eCryptfs Key/Mount Management est décoché . Laissez toutes les autres options à vos préférences.

Cela garantira que les configurations pertinentes dans /etc/pam.d sont appliquées et qu'elles y restent.

6
d_inevitable