Exécution d'un serveur Web avec un système de fichiers crypté (tout ou partie de celui-ci)

7

J'ai besoin d'un serveur Web (LAMP) s'exécutant sur une machine virtuelle (n ° 1) exécutée en tant que service (n ° 2) en mode sans tête (n ° 3) avec tout ou partie du système de fichiers crypté (n ° 4).

La machine virtuelle sera démarrée sans intervention de l'utilisateur et fournira un accès à une application Web aux utilisateurs de la machine hôte. Les points n ° 1, n ° 2 et n ° 3 sont vérifiés et s’avèrent bien fonctionner avec Sun VirtualBox; ma question est donc pour le n ° 4:

Puis-je chiffrer tout le système de fichiers et toujours accéder au serveur Web (à l'aide d'un navigateur) ou GRUB me demandera-t-il un mot de passe?

Si le cryptage de tout le système de fichiers n’est pas une option, puis-je crypter uniquement /homeet /var/www? Apache / PHP pourra-t-il utiliser des fichiers dans /homeou /var/wwwsans demander un mot de passe ou monter ces partitions manuellement?

Gaffe
la source
Pourquoi veux-tu faire cela?
Akira
envoyer une image au client avec des données sensibles - notre client souhaite que ces données ne soient accessibles que via le navigateur Web
Vous pouvez également envisager de chiffrer la zone du système de fichiers où votre base de données de site Web est stockée. Je suppose, bien sûr, que votre site utilise une base de données, comme de nombreux types, par exemple Wordpress, Drupal et d’autres frameworks / cms. Le processus de base de données, par exemple depuis mysql ou maria, stockera la base de données dans le système de fichiers sous forme de fichiers quelque part. +1 belle question.
therobyouknow
Vous pouvez également envisager de chiffrer votre échange. Voici un exemple: askubuntu.com/questions/463661/…
therobyouknow

Réponses:

11

Si vous souhaitez un chiffrement intégral du disque, vous devez entrer le mot de passe pendant la phase de démarrage, ce qui n'est probablement pas ce que vous voulez. Je vous recommande de créer une partition chiffrée à l'aide de luks et de placer toutes les données sensibles sur cette partition. Une fois la machine démarrée, vous pouvez ssh dans la boîte et déverrouiller la partition.

Pour ce qui est du cryptage, c’est très simple:

  • Créez la partition comme vous le souhaitez
  • Formatez la partition avec luks:

    cryptsetup -c twofish -y luksFormat /dev/sda4
    
  • Déverrouiller la partition avec luks:

    cryptsetup luksOpen /dev/sda4 encwww
    
  • Formatez la partition chiffrée avec un fs de votre choix:

    mkfs.ext3 /dev/mapper/encwww
    
  • Vous avez terminé et pouvez maintenant monter /dev/mapper/encwww

Pour déverrouiller la partition après un redémarrage, vous devez:

cryptsetup luksOpen /dev/sda4 encwww

puis montez la partition.

Tim Schumacher
la source
Sur la base de votre réponse, je ne vois pas ce qui empêche un processus frauduleux qui a obtenu un accès root d’exécuter ces commandes et de consulter vos données sensibles. Peux-tu expliquer?
trusktr
3
@trusktr no le processus ne le ferait pas, car il ne connaît pas le mot de passe. Mais après avoir entré votre mot de passe, il serait capable de lire tous les fichiers. Si vous avez un rootkit sur votre ordinateur, vous avez bien entendu beaucoup plus de problèmes à résoudre.
Tim Schumacher
+1 Belle réponse, je vais l'appliquer à mes propres besoins. J'examinerai également comment chiffrer la zone dans laquelle la base de données est stockée et commenter si possible. Il semble que cette question deviendra plus pertinente compte tenu de la législation à venir du RGPD.
therobyouknow
1
@TimSchumacher Donc, chaque fois que le serveur doit redémarrer, le mot de passe sudo est nécessaire pour monter ou déchiffrer le contenu, n'est-ce pas?
SaidbakR le
2

cryptsetup et dm-crypt ne sont pas disponibles sur les distributions standard-linux et c'est une solution assez exotique, vous devriez essayer de le faire de la manière habituelle:

modprobe loop
modprobe cryptoloop
modprobe aes

dd if=/dev/urandom of=/yourContainerFile bs=`expr 1024 \* 1024 \* 1024` count=yourSizeInGigaBytes

losetup -e aes-256 /dev/loop0 /yourContainerFile

mkfs.ext3 /dev/loop0

aa et maintenant vous êtes prêt à monter / dev / loop0 où bon vous semble - un cryptage puissant correctement effectué; vous pouvez même configurer votre fstab de manière à ce que la clé de cryptage soit lue à partir d'une clé USB qui doit être branchée à @ boot ... beaucoup plus flexible ET sécurisée -> Ne suivez jamais les guides qui utilisent "twofish" ou quelque chose de similaire comme le cryptage ... cet algorithme n'est pas encore complètement analysé, personne ne sait s'il est sécurisé.

Oh et: si vous voulez une sécurité au-delà de la portée et de la puissance des agences secrètes: utilisez

/dev/random

au lieu. Le démon de collecte d'entropie de Linux fournit des valeurs statistiquement "bonnes", mais il est très lent.

Et si vous êtes vraiment paranoïaque, achetez-vous un appareil capable de recevoir et de mesurer le rayonnement de fond cosmique, connectez-le à votre ordinateur et laissez-le écrire dans / dev / random :-D

spécialisation
la source
2
Selon en.wikipedia.org/wiki/Cryptoloop , dm-crypt empêche une certaine vulnérabilité (tatouage) observée avec cryptoloop. Quelles sont vos pensées à ce sujet?
trusktr