web-dev-qa-db-fra.com

Comment utiliser l'authentification LDAP avec un chiffrement intégral du disque?

J'évalue le client (x) ubuntu pour le développeur de logiciels de mon entreprise. Nous devons utiliser le chiffrement intégral du disque car les logiciels ne sauvegardent pas leurs fichiers dans/home (comme les bases de données). La société utilise "Active Directory" comme solution LDAP.

Au démarrage du système, je voudrais que l'authentification d'utilisateur LDAP déverrouille le chiffrement. Est-ce facilement possible avec les outils Linux?

Je connais LVM avec Luks, mais autant que je sache, c'est un mot de passe qui ne peut pas être connecté à LDAP.

Une solution similaire pour Windows est "DriveLock".

4
keiki

Solution 1: Utilisation d'un script crypttab pour interroger LDAP

Le chiffrement de disque complet nécessite la clé avant l'authentification de l'utilisateur. Pour cette raison, vous devez écrire/trouver un script qui est exécuté par crypttab lorsque vous utilisez le chiffrement de disque complet Ubuntu par défaut. Un exemple très simple (sans LDAP) peut être trouvé ici . Vous trouverez un exemple de script d'authentification LDAP python --- here . Si vous avez besoin de plusieurs utilisateurs pour utiliser la machine, vous devrez faire preuve de créativité pour voir comment l'authentification LDAP fournira la même clé de disque à tout moment (par exemple, plusieurs copies chiffrées de la clé localement, déchiffrer avec un mot de passe d'utilisateur?).

Solution 2: mapper les fichiers/la direction vers un répertoire personnel chiffré

Si je vous ai bien compris, vous avez besoin d’une solution qui étend essentiellement un répertoire de base chiffré avec quelques autres emplacements auxquels le logiciel exécuté par l’utilisateur accède. Vous pouvez ensuite utiliser la norme authentification LDAP pour établir la connexion initiale de l'utilisateur.

Solution 2a: utilisation de ln -s

ln -s créer des liens symboliques. Si vous prévoyez uniquement une configuration statique dans laquelle le même utilisateur utilise la machine en permanence, cette configuration peut fonctionner. Utilisez ln -s pour rediriger les fichiers/dossiers dans lesquels le logiciel écrit (redirection vers le répertoire de départ chiffré). Ou essayez simplement de savoir si vous pouvez re-représenter (par une nouvelle compilation?) Le répertoire de sortie du logiciel.

Solution 2b: utilisation de loopfs

La dernière solution est similaire aux répertoires de départ cryptés: utilisez des systèmes de fichiers en boucle stockés dans le répertoire de base de l'utilisateur et chiffrez le répertoire de base. Si vous savez exactement où votre logiciel stocke les données, vous pouvez écrire un script pour monter les systèmes de fichiers en boucle à ces emplacements. Je vais esquisser une solution maintenant, vous pouvez l’adapter à vos besoins spécifiques.

Par exemple, supposons que votre logiciel ait besoin de stocker des données sensibles dans/opt/foo. Je suppose que/opt/foo est actuellement vide. Je ne suis pas sûr à 100% de la manière actuelle d'ubuntu de le faire, mais vous devez essentiellement:

créer un fichier vide de taille appropriée avec dd, permet d'appeler celui-ci myLoopFS

utilisez losetup /dev/loop0 yourfile ou similaire pour connecter votre fichier au périphérique de bouclage (comme/dev/loop0). Vous pouvez même chiffrer ce fichier avec losetup -e AES, mais ce n'est pas nécessaire car il sera stocké dans le répertoire personnel chiffré.

Puis formatez/dev/loop0 avec ext4.

Ensuite, montez-le sur/opt/foo lorsque l'utilisateur se connecte.

Le logiciel écrit ensuite dans le répertoire/dev/loop0, qui entre dans votre fichier myLoopFS.

Assurez-vous que/dev/loop0 est démonté à nouveau lorsque l'utilisateur se déconnecte.

Ce système devrait répondre à vos besoins, sauf si votre logiciel écrit des données sensibles dans tous les sens.

Résumé

Je n'ai pas trouvé de logiciel prêt à l'emploi pour résoudre votre problème, mais il semble assez facile à résoudre avec des outils linux par défaut tels que ln -s, losetup, ou à l'aide de scripts crypttab.

0
noleti