5 votes

Serveur Ubuntu sans surveillance et sans tête avec cryptage de disque - comment le mettre en place ?

Je suis un utilisateur de longue date de Linux, mais je ne suis pas très au fait des derniers développements, notamment en ce qui concerne Ubuntu et l'administration des systèmes.

J'ai un très vieux PC que je veux utiliser pour un serveur de fichiers, un repo Mercurial, un serveur FTP et WWW, et quelques autres petites applications web internes à l'entreprise que j'ai réalisées avec Django. Auparavant, tout cela fonctionnait sur un ancien Fedora, sur un disque non crypté, et tout était lancé à partir de /etc/rc.local .

J'ai mis un nouveau disque dur, et j'ai installé Ubuntu 18.04 LTS dessus. Je suis maintenant en train de restaurer les services, mais je veux aussi les améliorer.

Tout d'abord, je veux que les données importantes (base de données Django, fichiers du serveur de fichiers, ...) soient sur une partition cryptée. Cependant, d'après mon expérience du chiffrement de disque, quelque chose vous demande la phrase de passe au démarrage. Je veux éviter cela, puisque le serveur n'aura pas de moniteur ou de clavier attaché. Deuxièmement, je veux administrer les services d'une manière un peu plus officielle ("Ubuntian").

Idée actuelle

  • avoir les données des services sur une partition chiffrée, qui n'est pas répertoriée dans /etc/fstab .
  • Au redémarrage, le serveur n'aura que sshd, mais les services ne seront pas démarrés et la partition ne sera pas montée.
  • Je me connecterais en ssh à la machine, et j'exécuterais un script, qui monterait la partition (en me demandant la phrase de passe), et lancerait les services.

La machine est sur un UPS, je m'attends à exécuter la procédure ci-dessus rarement (quelques fois par an).

Question

L'idée actuelle est-elle bonne ? De meilleures façons de procéder ?

Si c'est bon, comment le mettre en œuvre ? Je peux certainement faire le "total DIY way" et écrire un énorme script avec les commandes luks, les commandes iptables pour ouvrir les ports, et invoquer les démons des services directement, mais je veux apprendre quelque chose de nouveau ici et le faire à la manière Ubuntu appropriée™ :).

Toute indication ou exemple de code/script sera apprécié.

4voto

Simon Sudler Points 3215

Déverrouillage à distance de la partition chiffrée

Il existe un moyen simple et plus ou moins standard de déverrouiller les partitions cryptées au démarrage, sans modification de la partition racine. Il faut pour cela dropbear y busybox .

$ sudo apt install dropbear busybox

Ajouter busybox à initramfs

Pour activer busybox dans le disque RAM initial, définissez BUSYBOX=y en /etc/initramfs-tools/initramfs.conf . Les clés hôte SSH de dropbear sont stockées dans le fichier /etc/dropbear-initramfs dossier.

Ajouter les clés publiques à authorized_keys de dropbear

Il n'y a pas de gestion des utilisateurs dans le disque RAM initial, donc seul l'utilisateur root avec une clé publique dans le fichier /etc/dropbear-initramfs/authorized_keys peuvent se connecter via ssh . Vous pouvez ajouter n'importe quel public ou simplement copier celui de votre utilisateur :

$ sudo cp ~/.ssh/authorized_keys /etc/dropbear-initramfs/authorized_keys

dropbear ne supporte pas actuellement ed25519 donc les ajouter à dropbear ne fonctionnera pas.

Mise à jour des initramfs avec les clés dropbear

Après cela, le disque RAM initial doit être mis à jour :

$ sudo update-initramfs -u

C'est tout. Maintenant, redémarrez le système et attendez que le message cryptsetup dialogue.

Déverrouillage du système à distance

Après le redémarrage, le système attendra le déverrouillage de l'appareil crypté. Connectez-vous via ssh avec l'utilisateur root et la clé privée correspondante.

# From a remote system
$ ssh -i ~/.ssh/my_private.id_rsa root@my.system.waiting.for.a.password.com
Enter passphrase for key '~/.ssh/my_private.id_rsa':

BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu6.1) built-in shell (ash)
Enter 'help' for a list of built-in commands.

#
# cryptroot-unlock
Please unlock disk ubuntu-root:
cryptsetup: ubuntu-root set up successfully
# Connection to my.system.waiting.for.a.password.com closed by remote host.
Connection to my.system.waiting.for.a.password.com closed.

Et le système démarrera avec un appareil root débloqué.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X