运行带有加密文件系统的 Web 服务器(全部或部分)

运行带有加密文件系统的 Web 服务器(全部或部分)

我需要一个在虚拟机(#1)内运行的 Web 服务器(LAMP),该虚拟机作为服务(#2)以无头模式运行(#3),并对部分或整个文件系统进行加密(#4)。

虚拟机将在无需用户干预的情况下启动,并为主机中的用户提供对 Web 应用程序的访问。第 1、2 和 3 点已检查并证明与 Sun VirtualBox 配合良好,所以我的问题是第 4 点:

我可以加密整个文件系统并仍然访问网络服务器(使用浏览器)吗?或者 GRUB 会要求我输入密码吗?

如果无法加密整个文件系统,我可以只加密/home和吗/var/www?Apache/PHP 是否能够在不要求输入密码或手动安装这些分区的情况下使用/home或中的文件?/var/www

答案1

如果您想要全盘加密,则必须在启动阶段输入密码,这可能不是您想要的。我建议您使用 luks 创建一个加密分区,并将所有敏感数据放在该分区上。机器启动后,您可以通过 ssh 进入盒子并解锁分区。

至于如何加密,非常简单:

  • 根据需要创建分区
  • 使用 luks 格式化分区:

    cryptsetup -c twofish -y luksFormat /dev/sda4
    
  • 使用 luks 解锁分区:

    cryptsetup luksOpen /dev/sda4 encwww
    
  • 使用您选择的 fs 格式化加密分区:

    mkfs.ext3 /dev/mapper/encwww
    
  • 您已完成并可以安装/dev/mapper/encwww

要在重启后再次解锁分区,您需要执行以下操作:

cryptsetup luksOpen /dev/sda4 encwww

然后挂载分区。

答案2

cryptsetup 和 dm-crypt 在标准 Linux 发行版上不可用,而且这是一个相当奇特的解决方案,您应该尝试以正常方式执行此操作:

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

现在您可以将 /dev/loop0 挂载到任何您喜欢的地方 - 强加密,正确完成;您甚至可以配置您的 fstab,以允许从必须在启动时插入的 USB 记忆棒读取加密密钥...更加灵活和安全 --> 永远不要遵循使用“twofish”或类似加密的指南...该算法尚未完全分析,没有人知道它是否安全。

哦,还有:如果你想要超出秘密机构范围和权力的安全:使用

/dev/random

Linux 的熵收集守护进程虽然提供了统计上的“良好”值,但是速度非常慢。

如果你真的很偏执,那就买一个能够接收和测量宇宙背景辐射的设备,把它连接到你的电脑上,让它到/dev/random :-D

相关内容