Используя сервис VPS, я могу препятствовать тому, чтобы мои данные были доступны хостом VPS?

Используя поставщика как Цифровой Океан, если я храню частную / уязвимую информацию о VPS, там способ защитить ту информацию (предотвращение хоста VPS к тому, чтобы получить доступ) в то время как все еще сдерживающий SFTP и доступ SSH?

4
задан 11 September 2017 в 00:55

1 ответ

К сожалению, это не возможно вообще. Вот, пожалуйста немного коротких объяснений об этом:

  • Даже с шифрованием, поставщик мог создать снимки текущее состояние памяти и диска и клонировать новый экземпляр для получения такого же доступа, который Вы сделали. (источник)

  • Даже при выполнении VPS с зашифрованными файловыми системами будут не зашифрованы все данные в RAM, у каких системных администраторов хоста VPS был бы доступ к, включая пароль дешифрования. Если у Вас действительно есть это строгое из требований к защите, это кажется, что необходимо выполнить собственные физически защищенные системы или найти хостинговую компанию выделенного сервера, которая специализируется на этом виде вещи. (источник)

  • ... примите во внимание, что любой с доступом к изображению VPS может потенциально добавить ошибку Ваш код для обнаружения пароля, который Вы используете. (источник)

  • [Шифрование] имеет некоторый смысл, если Вы управляете аппаратными средствами; когда кто-то еще управляет аппаратными средствами существует мало точки в них, если Вы не полагаете, что хост действительно не хочет смотреть на их... (источник)

  • Физический доступ является корневым доступом, поэтому если у кого-то есть физический доступ к серверу, независимо на том, если это находится на VM или чистом металле, у них есть корневой доступ. В случае KVM владелец хоста без операционной системы может получить доступ к гостю. Можно всегда шифровать данные, но, который может иметь ограниченную выгоду, поскольку данные будут дешифрованы при доступе к нему.

    То же с сетью. Владелец VM видит Ваш сетевой трафик. Снова можно зашифровать часть трафика (https, ssh, и т.д.). (источник)


Вот конкретное решение в случае, если Вы хотите только хранить некоторые уязвимые данные на своем VPS:

Как создать и использовать зашифрованный каталог через eCryptfs и смонтировать его удаленно

Предварительные требования

Установите пакеты 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 как команды.

Ссылки и дополнительные материалы для чтения

7
ответ дан 1 December 2019 в 09:13

Другие вопросы по тегам:

Похожие вопросы: