En utilisant un fournisseur comme Digital Ocean, si je stocke des informations privées/sensibles sur le VPS, existe-t-il un moyen de protéger ces informations (empêchant l'hôte VPS d'y accéder) tout en conservant l'accès SFTP et SSH ?
Réponse acceptée :
Malheureusement ce n'est pas possible du tout. Voici quelques brèves explications à ce sujet :
Même avec le chiffrement, le fournisseur peut prendre un instantané de l'état actuel de la mémoire et du disque et cloner une nouvelle instance pour obtenir autant d'accès que vous. (source)
Même si vous utilisez un VPS avec des systèmes de fichiers cryptés, toutes les données en RAM seront non cryptées, auxquelles les administrateurs système de l'hôte VPS auraient accès, y compris la phrase secrète de décryptage. Si vous avez vraiment des exigences de sécurité aussi strictes, il semble que vous deviez exécuter vos propres systèmes physiquement sécurisés ou trouver une société d'hébergement de serveurs dédiée spécialisée dans ce genre de choses. (source)
… gardez à l'esprit que toute personne ayant accès à l'image VPS peut potentiellement ajouter un bogue à votre code pour détecter la phrase de passe que vous utilisez. (source)
[Le cryptage] a du sens si vous contrôlez le matériel ; quand quelqu'un d'autre contrôle le matériel, il n'y a pas grand intérêt à moins que vous soyez sûr que l'hôte ne veut pas vraiment le regarder... (source)
L'accès physique est un accès root, donc si quelqu'un a un accès physique au serveur, qu'il se trouve sur une machine virtuelle ou sur un système nu, il a un accès root. Dans le cas de KVM, le propriétaire de l'hôte bare metal peut accéder à l'invité. Vous pouvez toujours chiffrer les données, mais cela peut présenter un avantage limité car les données seront déchiffrées lorsque vous y accéderez.
Idem avec le réseau. Le propriétaire de la machine virtuelle peut voir votre trafic réseau. Encore une fois, vous pouvez chiffrer une partie du trafic (https, ssh, etc.). (source)
Voici une solution particulière au cas où vous voudriez simplement stocker des données sensibles sur votre VPS :
Comment créer et utiliser un répertoire chiffré via eCryptfs et le monter à distance
Prérequis
Installez les packages ecryptfs-utils
et sshfs
et redémarrez le système :
sudo apt update && sudo apt -y install ecryptfs-utils sshfs
sudo apt update && sudo systemctl reboot
Configuration et utilisation standard
Ouvrez une fenêtre de terminal et exécutez cette commande :
ecryptfs-setup-private
Ensuite, il vous sera demandé :
-
Enter your login passphrase [<user>]:
cette phrase de passe doit correspondre au mot de passe de l'utilisateur actuel et sera utilisée pour déverrouiller (déchiffrer) vos informations chiffrées. -
Enter your mount passphrase [leave blank ...]:
cette phrase de passe sera utilisée automatiquement lors du montage de vos données cryptées, mais vous en aurez besoin en cas d'urgence et vous devez récupérer vos données, alors notez-la dans un endroit sûr.
La commande ci-dessus créera deux répertoires :
~/.Private
où vos données cryptées seront stockées.~/Private
où le répertoire~/.Private
sera monté comme déchiffré.
Tant que ~/.Private
n'est pas monté dans le répertoire ~/Private
a deux fichiers avec des instructions.
Lorsque vous vous connectez au système via le mot de passe de l'utilisateur (login passphrase
) le répertoire ~/.Private
sera automatiquement monté sur ~/Private
et vous pourrez y travailler. Lorsque vous vous logout
ou exit
, le répertoire ~/.Private
sera démonté. Pour y parvenir manuellement, vous pouvez utiliser les commandes :ecryptfs-mount-private
et ecryptfs-umount-private
. Vous trouverez plus d'informations sur ces options dans l'article eCryptfs du ArchLinux Wiki. Voir aussi :comment utiliser ecryptfs avec un répertoire aléatoire.
Si vous authentifiez votre connexion SSH/SFTP via un mot de passe, ce qui précède fonctionnera. Mais si vous vous authentifiez via une paire de clés SSH, vous devez utiliser ecryptfs-mount-private
pour monter ~/.Private
. Dans ce cas, vous devez d'abord vous connecter en SSH au système et exécuter ecryptfs-mount-private
alors vous pourrez utiliser SFTP vers le répertoire ~/Private
. Vous pouvez ajouter la commande ecryptfs-mount-private
au bas de ~/.bashrc
pour automatiser ce processus :
echo -e "\n# Mount my Private directory\necryptfs-mount-private\n" | tee -a ~/.bashrc
Monter un répertoire distant chiffré et le déverrouiller (déchiffrer) localement
Sur la machine distante (VPS) et sur la machine locale, exécutez la commande suivante et entrez des données identiques pour login passphrase
et pour mount passphrase
sur les deux machines :
ecryptfs-setup-private --nopwcheck --noautomount
Sur la machine distante :
-
Exécutez la commande :
ecryptfs-mount-private
Remarque : Pendant que je testais cette approche, j'ai dû exécuter la commande ci-dessus deux fois !
-
Créez du contenu simple :
echo "Hello Word!" > ~/Private/hello.txt
-
Démonter
~/.Private
:ecryptfs-umount-private
-
De plus, vous pouvez supprimer le répertoire
~/.ecryptfs
(du VPS), où sont stockées vos données de déchiffrement.
Sur la machine locale :
-
Montez le dossier chiffré distant
~/.Private
dans le dossier local~/.Private
viasshfs
, et masquez la propriété des fichiers (remplacez<user>@<host_name_or_ip>
):sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private
Pour démonter, utilisez la commande :
fusermount -u ~/.Private
ousudo umount -l ~/.Private
. -
Puis montez (et déchiffrez) le répertoire local
~/.Private
vers~/Private
ecryptfs-mount-private
-
Vérifiez si le fichier
hello.txt
est là :$ cat ~/Private/hello.txt Hello Word!
-
Si vous rencontrez un problème avec la commande
ecryptfs-umount-private
(umount.ecryptfs_private
) vous pouvez démonter le~/Private
local répertoire par la commandesudo umount -l ~/Private
. -
eCryptfs a des bogues et parfois
ecryptfs-mount-private
etecryptfs-umount-private
ne fonctionnent pas correctement. -
Selon ce qui précède, vous pouvez créer deux fonctions dans
~/.bashrc
qui automatisera l'ensemble du processus (montage/démontage) (remplacez<user>@<host_name_or_ip>
):function ecryptfs-remote-mount { sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private > /dev/null 2>&1 sudo keyctl clear @u sudo ecryptfs-insert-wrapped-passphrase-into-keyring $HOME/.ecryptfs/wrapped-passphrase # Attempt to mount, and loop the function unless it is true - due to CLI usage bug ecryptfs-mount-private && echo "Done!" || ecryptfs-remote-mount } function ecryptfs-remote-umount { ecryptfs-umount-private > /dev/null 2>&1 || sudo umount -l $HOME/Private fusermount -u $HOME/.Private > /dev/null 2>&1 || sudo umount -l $HOME/.Private echo "Done!" } export -f ecryptfs-remote-mount ecryptfs-remote-umount
Puis
source ~/.bashrc
et vous pourrez utiliserecryptfs-remote-mount
etecryptfs-remote-umount
comme commandes.
Références et lectures complémentaires
-
Créez un fichier d'archive crypté (tar), où se cachent vos données sensibles :
- Crypter le fichier tar.gz lors de sa création
- Comment créer une archive tar ou zip cryptée (protégée par mot de passe) sous Linux
- Comment protéger par mot de passe les fichiers gzip sur la ligne de commande ?
- Comment puis-je protéger par mot de passe un fichier .tgz avec tar sous Unix ?
-
Créez un répertoire chiffré :
- Sauvegarde cryptée sur un serveur SFTP (WebSpace) avec ecryptfs
- Comment faire pour sécuriser le volume distant chiffré
- Comment chiffrer des dossiers individuels ?
- Comment chiffrer des répertoires avec eCryptfs sur Ubuntu 16.04
- YouTube :Comment chiffrer un dossier dans Ubuntu
-
Utiliser le chiffrement du répertoire personnel de l'utilisateur :
- Dossier d'accueil chiffré
- Guide d'utilisation du répertoire personnel chiffré
- HOW-TO chiffrer votre répertoire personnel
- Accéder à votre répertoire personnel chiffré dans Ubuntu
- Migration vers un répertoire personnel chiffré
- Message SSH après la connexion, puis empêche l'utilisateur d'utiliser le compte