Apparmor 在 mysql 文件夹上安装 ecryptfs 时出现问题

Apparmor 在 mysql 文件夹上安装 ecryptfs 时出现问题

我准备在 DigitalOcean Ubuntu 18.04.2 中运行标准 LAMP 堆栈的文件系统mysql来运行ecryptfsWordpress 网站。

它运行良好,但需要禁用 AppArmor 才能启动 MySQL(在安装时ecryptfs),并且由于我在 Wordpress 上运行 CIVICRM,因此仍然存在与数据库查询相关的古怪行为,这些查询没有得到很好的响应。但是,总的来说,在这个阶段,WP 已经启动并运行。我在下面使用的过程是将文件夹复制到文件夹中mysqlecrypfs然后将其绑定安装回以/var/lib/mysql避开和中的更改my.cnfapparmor但是mysql在我删除 mysql 的配置文件之前,它仍然拒绝启动apparmor

  1. 安装ecryptfs

    sudo apt-get update
    sudo apt-get install ecryptfs-utils
    
  2. 停止mysql服务

    sudo service mysql stop
    
  3. 制作加密文件夹

    sudo mkdir /usr/local/enc/mysql
    
  4. 重命名当前mysql文件夹

    sudo cd /var/lib
    sudo mv mysql mysql.bak
    
  5. 将加密文件夹挂载到mysql文件夹中

    sudo mount -t ecryptfs /usr/local/enc/mysql /var/lib/mysql
    

    会有问题询问,我已采取默认[1,1,n,n,yes]

    或者,您可以通过 nano /etc/fstab 添加自动挂载,添加以下行,但密码也需要在这里,这并不安全:

    /usr/local/enc/mysql /var/lib/mysql ecryptfs key=passphrase:passwd=xxxxxxxx,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n,ecryptfs_enable_filename_crypto=n 0 0

  6. 将当前文件夹中的所有内容复制mysql到加密文件夹中

    sudo cp -R -p /var/lib/mysql.bak /var/lib/mysql
    
  7. 将内容上移/var/lib/mysql1 级

    sudo cd /var/lib/mysql
    sudo mv mysql.bak/* .
    sudo rmdir mysql.bak
    
  8. 此时,您可以检查文件是否清晰,/var/lib/mysql但相关文件/usr/local/enc/mysql是否为乱码/加密

  9. 尝试重新启动mysql,但遇到错误

    sudo service mysql start
    
    Job for mysql.service failed because the control process exited with error code.
    See "systemctl status mysql.service" and "journalctl -xe" for details.
    

10. 检查 2 个文件夹的所有权限均正确后,我尝试apparmor按照以下步骤禁用 mysql

    sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/
    sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld 

  1. 将加密文件夹作为别名添加到 apparmor

    sudo nano /etc/apparmor.d/tunables/alias
    
    add this line to the file:
    alias /var/lib/mysql -> /usr/local/enc/mysql/,
    
  2. 现在就mysql可以开始了,我的 Wordpress 也可以用

    sudo service mysql start
    

但是,我还是希望 Apparmor 能够正常工作,而不是禁用 mysql 配置文件。有没有什么建议可以做到这一点?

答案1

我做了更多的挖掘,我想我找到了答案。尽管我从一些帖子中看到 apparmor 并不关心挂载源文件夹,但显然它在挂载时会查看源文件夹的来源。这实际上是很好的安全性。我尝试在 apparmor 中将源文件夹添加为别名,现在它可以正常工作了。我还将挂载更改为自动挂载。我上次描述的怪癖也消失了。我将针对这些要点编辑我的原始帖子。

我现在的后续问题是 ecryptfs 支持 mysql 的性能,对此有什么建议吗?谢谢。

答案2

我使用 AppArmor、mysql 和 encryptfs 的经验是,你必须同时为源位和已安装位设置别名

/etc/apparmor.d/tunables/别名

alias /var/lib/mysql/ -> /usr/local/encrypted-source/mysql/,
alias /var/lib/mysql/ -> /usr/local/encrypted/mysql/,

注意这是 Ubuntu 20.04

查看 /etc/apparmor.d/usr.sbin.mysqld,发现很多东西都很明显。

相关内容