Используя поставщика как Цифровой Океан, если я храню частную / уязвимую информацию о VPS, там способ защитить ту информацию (предотвращение хоста VPS к тому, чтобы получить доступ) в то время как все еще сдерживающий SFTP и доступ SSH?
К сожалению, это не возможно вообще. Вот, пожалуйста немного коротких объяснений об этом:
Даже с шифрованием, поставщик мог создать снимки текущее состояние памяти и диска и клонировать новый экземпляр для получения такого же доступа, который Вы сделали. (источник)
Даже при выполнении VPS с зашифрованными файловыми системами будут не зашифрованы все данные в RAM, у каких системных администраторов хоста VPS был бы доступ к, включая пароль дешифрования. Если у Вас действительно есть это строгое из требований к защите, это кажется, что необходимо выполнить собственные физически защищенные системы или найти хостинговую компанию выделенного сервера, которая специализируется на этом виде вещи. (источник)
... примите во внимание, что любой с доступом к изображению VPS может потенциально добавить ошибку Ваш код для обнаружения пароля, который Вы используете. (источник)
[Шифрование] имеет некоторый смысл, если Вы управляете аппаратными средствами; когда кто-то еще управляет аппаратными средствами существует мало точки в них, если Вы не полагаете, что хост действительно не хочет смотреть на их... (источник)
Физический доступ является корневым доступом, поэтому если у кого-то есть физический доступ к серверу, независимо на том, если это находится на VM или чистом металле, у них есть корневой доступ. В случае KVM владелец хоста без операционной системы может получить доступ к гостю. Можно всегда шифровать данные, но, который может иметь ограниченную выгоду, поскольку данные будут дешифрованы при доступе к нему.
То же с сетью. Владелец VM видит Ваш сетевой трафик. Снова можно зашифровать часть трафика (https, ssh, и т.д.). (источник)
Вот конкретное решение в случае, если Вы хотите только хранить некоторые уязвимые данные на своем VPS:
Предварительные требования
Установите пакеты ecryptfs-utils
и sshfs
и перезагрузка система:
sudo apt update && sudo apt -y install ecryptfs-utils sshfs
sudo apt update && sudo systemctl reboot
Стандартная установка и использование
Откройте окно терминала и выполните эту команду:
ecryptfs-setup-private
Затем Вас попросят:
Enter your login passphrase [<user>]:
этот пароль должен соответствовать паролю текущего пользователя и будет использоваться для разблокирования (дешифруют) зашифрованные данные.
Enter your mount passphrase [leave blank ...]:
этот пароль будет использоваться автоматически, когда Ваши зашифрованные данные смонтируются, но Вам нужен он в случае, если существует чрезвычайная ситуация, и Вы должны восстановление Ваши данные, поэтому запишите его на безопасном месте.
Вышеупомянутая команда создаст два каталога:
~/.Private
где Ваши зашифрованные данные будут сохранены.~/Private
где каталог ~/.Private
будет смонтирован, как дешифровано.В то время как ~/.Private
не смонтирован в рамках каталога ~/Private
имеет два файла с инструкциями.
Когда Вы входите в систему через пароль пользователя (login passphrase
) каталог ~/.Private
будет автоматически смонтирован к ~/Private
и Вы сможете работать там. Когда Вы logout
или exit
, каталог ~/.Private
будет размонтирован. Для достижения этого вручную, можно использовать команды: ecryptfs-mount-private
и ecryptfs-umount-private
. Больше об этих опциях может быть найден в статье eCryptfs от ArchLinux Wiki.См. также: как использовать ecryptfs со случайным каталогом.
При аутентификации соединения SSH/SFTP через пароль вышеупомянутое должно быть работы. Но если Вы аутентифицируете себя через пару ключей SSH, необходимо использовать ecryptfs-mount-private
смонтироваться ~/.Private
. В этом случае сначала Вы нуждаетесь к SSH к системе и работаете ecryptfs-mount-private
затем Вы сможете использовать SFTP для каталога ~/Private
. Можно добавить команду ecryptfs-mount-private
к нижней части ~/.bashrc
автоматизировать этот процесс:
echo -e "\n# Mount my Private directory\necryptfs-mount-private\n" | tee -a ~/.bashrc
Смонтируйте удаленный зашифрованный каталог и разблокируйте (дешифруют) его локально
На удаленной машине (VPS) и на локальной машине выполняют следующую команду и вводят идентичные данные для login passphrase
и для mount passphrase
на обеих машинах:
ecryptfs-setup-private --nopwcheck --noautomount
Опция --nopwcheck
включает Вы для выбора пароля, отличающегося от пользователя, входите в пароль и опцию --noautomount
очевидно.
На удаленной машине:
Выполните команду:
ecryptfs-mount-private
Примечание: В то время как я тестирующий этот подход я должен был выполнить вышеупомянутую команду два раза!
Создайте некоторое простое содержание:
echo "Hello Word!" > ~/Private/hello.txt
Размонтирование ~/.Private
:
ecryptfs-umount-private
Далее можно удалить каталог ~/.ecryptfs
(от VPS), где Ваши данные дешифрования хранятся.
На локальной машине:
Смонтируйте удаленную зашифрованную папку ~/.Private
к локальной папке ~/.Private
через sshfs
, и театр масок владение в файлы (замена <user>@<host_name_or_ip>
):
sshfs -o idmap=user,uid=$(id -u),gid=$(id -g) <user>@<host_name_or_ip>:.Private ~/.Private
Для размонтирования используйте команду: fusermount -u ~/.Private
или sudo umount -l ~/.Private
.
Затем смонтируйтесь (и дешифруйте), локальный каталог ~/.Private
кому: ~/Private
ecryptfs-mount-private
Проверьте если файл hello.txt
есть ли:
$ cat ~/Private/hello.txt
Hello Word!
Если Вы сталкиваетесь с проблемой с командой ecryptfs-umount-private
(umount.ecryptfs_private
) можно размонтировать локальное ~/Private
каталог командой sudo umount -l ~/Private
.
eCryptfs имеет ошибки и иногда ecryptfs-mount-private
и ecryptfs-umount-private
не работайте правильно.
Согласно вышеупомянутому можно создать две функции в ~/.bashrc
это автоматизирует все (монтируют/размонтируют) процесс (замена <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
Затем source ~/.bashrc
и Вы сможете использовать ecryptfs-remote-mount
и ecryptfs-remote-umount
как команды.
Ссылки и дополнительные материалы для чтения
Создайте зашифрованный архивный файл (tar), где Ваши уязвимые данные скрываются:
Создайте зашифрованный каталог:
Используйте шифрование корневого каталога пользователя: