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.
J'ai réussi à le faire fonctionner avec pam_exec:
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
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.
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
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.
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
:
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.