如何在Ubuntu 16.04上保护Roundcube

在本教程中,您将使用Let's Encrypt将Apache添加到Apache,使用Roundcube插件向您的Roundcube帐户添加双因素身份验证,并使用GPG使用Enigma插件签署和加密电子邮件,从而确保现有的基本Roundcube安装。

介绍

由于电子邮件是现代通信的重要组成部分,因此对您的电子邮件管道的所有部分都要记住安全是非常重要的。 Roundcube是一款网络邮件客户端,它的插件存储库具有强大的安全功能和广泛的自定义选项。 本文解释如何进一步确保基本的现有Roundcube安装。

如果您在Roundcube的初始设置中配置IMAPSTMP设置时使用了SSL,则从Roundcube到您的电子邮件服务器的连接已经安全。 但是,从您的浏览器到Roundcube的连接不是,您的电子邮件本身以明文方式发送。 您的Roundcube帐户本身也仅受密码保护。

在本教程中,您将通过以下方式确保电子邮件管道的这三个部分:

  • 使用我们的加密将Apache添加到Apache。
  • 使用Roundcube插件向您的Roundcube帐户添加双因素身份验证
  • 使用GPG使用Roundcube插件签署和加密电子邮件。

先决条件

要学习本教程,您需要:

  • 通过在Ubuntu 16.04教程中关注此Roundcube安装了一台安装了Roundcube的Ubuntu 16.04服务器。 完成此先决条件教程后,您将拥有一个功能齐全(但部分不安全)的Web电子邮件客户端。
  • 安装了TOTP兼容应用的智能手机或平板电脑,例如Google身份验证器( iOSAndroid )。 您将使用它来设置双因素身份验证。

您可以在Ubuntu 16.04上的如何为SSH设置多因素身份验证的介绍中了解有关多因素身份验证的更多信息。 您可以在如何使用GPG加密和签名消息中了解有关GPG的更多信息

第1步 - 添加SSL以保护对Roundcube的访问

现在,如果您在浏览器中使用服务器的域名访问您的Roundcube安装,则将通过HTTP而不是HTTPS进行连接。 为了将整个通信链从浏览器完全保护到电子邮件服务器,与Roundcube的连接应使用SSL / TLS。

一个简单的方法是使用来自Let's Encrypt的免费SSL证书。 Roundcube设置在LAMP的顶部,因此您可以按照如何使用Let's Encrypt在Ubuntu 16.04上安全保护Apache进行详细的设置。 这里有一个简要的总结:

首先,安装Let's Encrypt Client。

sudo add-apt-repository ppa:certbot/certbot
sudo apt-get update
sudo apt-get install python-certbot-apache

然后获取您的SSL证书并验证自动更新是否有效。 example.com替换为您的域,并为任何子域或别名使用附加的-d标志。

sudo certbot --apache -d example.com
sudo certbot renew --dry-run

在交互式配置期间(输入sudo certbot --apache -d example.com ),当询问您是否需要基本或安全设置时,请确保选择安全 这将确保所有的HTTP流量都被重定向到HTTPS。

您现在可以通过计算机与您的Roundcube安装建立安全连接,从而实现与您的IMAP / SMTP电子邮件服务器的安全连接。 为了提高电子邮件通信的安全性,您还可以做更多的事情,但他们需要插件。

下一步使用插件通过添加双因素身份验证来加强Roundcube帐户的安全性。

第2步 - 安装双因素身份验证插件

虽然Roundcube项目正在为插件开发GUI功能,但目前,所有插件都必须通过命令行进行安装。 有两种方法可以做到这一点:

  • 手动安装 ,这是第一种可用的方法。 这涉及下载插件(通常是.zip文件或Git存储库),然后通过修改Roundcube配置文件/var/www/roundcube/config/config.inc.ph来启用它。
  • 半自动安装 ,这是更现代化的方法。 这在PHP软件包管理器Composer上进行回复,以便在您的配置文件中安装您指定的插件。

一些插件建议使用另一种安装方法。 2FA插件可以同时使用这两种方法,并且不会提出建议,所以在这里,我们将使用半自动安装,因为它的易用性。

Composer由储存在$RC_HOME/composer.jsoncomposer.json文件控制。 通过创建该配置文件来启用Composer。 Roundcube附带一个名为composer.json-dist的基本配置文件,因此我们将从该文件的副本开始。

cd /var/www/roundcube
sudo cp composer.json-dist composer.json

这个默认文件中已经指定了几个核心插件,因此接下来运行Composer来安装这些插件并完成其初始配置。 确保你从/var/www/roundcube目录运行Composer。

sudo composer install

接下来,要添加2FA插件,我们需要将它添加到composer.json文件中。

插件行的语法是" organization / plugin_name ": " version_or_branch " 因此,对于2FA插件,您要添加的行是"" alexandregz / twofactor_gauthenticator ": " dev-master "

使用nano或您最喜爱的文本编辑器打开composer.json文件进行编辑。

sudo nano /var/www/roundcube/composer.json

查找以"require": {开头的require块"require": { 大括号( {} )之间的每一行都是一个插件行。 除了最后一个条目外,块中的所有插件行都应以逗号结尾。

将2FA插件行添加到块的末尾,并确保向前一行添加逗号。

/var/www/roundcube/composer.json
. . .
"require": {
    "php": ">=5.4.0",
    "pear/pear-core-minimal": "~1.10.1",
    "pear/net_socket": "~1.2.1",
    "pear/auth_sasl": "~1.1.0",
    "pear/net_idna2": "~0.2.0",
    "pear/mail_mime": "~1.10.0",
    "pear/net_smtp": "~1.7.1",
    "pear/crypt_gpg": "~1.6.2",
    "pear/net_sieve": "~1.4.0",
    "roundcube/plugin-installer": "~0.1.6",
    "endroid/qr-code": "~1.6.5",
    "alexandregz/twofactor_gauthenticator": "dev-master"
},
. . .

保存并关闭该文件,然后运行tell Composer来更新其包信息以安装新插件。

sudo composer update

当Composer询问您是否要启用该插件时,请输入Y以继续。 安装完成后,注销Roundcube并重新登录以启用该插件。

现在该插件已安装,我们需要通过Roundcube的GUI在我们的帐户上设置2FA。

第3步 - 在您的账户上启用2FA

要开始使用,请在浏览器中使用您的服务器IP或域登录到Roundcube。 点击右侧的设置按钮,然后点击左侧导航中的双因素身份验证

Roundcube双因素身份验证设置页面

在双因素身份验证选项部分,点击激活复选框,然后点击创建密码

接下来,点击显示恢复代码并将四个显示的恢复代码保存在安全的地方。 如果您无法生成令牌,则将使用这些代码登录(例如,如果您丢失了手机)。

最后,点击保存按钮。

这可以启用2FA,但现在您需要将密码添加到您的TOTP兼容应用,例如Google身份验证器。 点击保存密码后显示的显示QR码按钮,然后用您的应用扫描密码。 如果扫描不起作用,您也可以手动输入密码。

Roundcube双因素身份验证QR码

最后,一旦您的应用程序生成了代码,请通过在代码按钮旁边的字段中输入代码来确保其正常工作,然后单击该按钮。 如果有效,您会看到一个窗口,显示Code OK ,您可以单击底部的OK按钮关闭该窗口。 如果出现问题,请尝试重新将秘密添加到您的应用中。

保护数字通信的最后一步是加密通过电子邮件发送的实际消息。 我们将在下一步中使用名为Enigma的插件来完成此操作。

第4步 - 使用GPG启用加密电子邮件

Enigma插件增加了对查看和发送已签名的加密电子邮件的支持。 如果您遵循之前的Roundcube安装教程 ,则Enigma插件已在您的安装中启用。 如果没有,您可以按照您在第2步中用于2FA插件的相同步骤来添加Enigma插件。

首先,我们需要启用一些默认的加密选项。 登录到Roundcube并单击右上角的设置按钮。 从那里,单击部分列表下的首选项 ,然后单击加密

设置加密设置

主选项列表中有7个加密设置。 启用所有7将提供最大的安全性,但是这在可用性方面有一些折衷。

以下是主选项菜单中的每个选项以及我们对每种选项的建议(必要,推荐或可选),但您应该选择适合您的用例的设置:

  • 启用消息加密和签名 :必要的。 这使您可以签署和加密消息。
  • 启用消息签名验证建议。 如果有人向您发送签名的电子邮件,则此设置会使Roundcube尝试通过其电子邮件地址和密钥验证发件人。
  • 启用消息解密 :建议。 如果有人向您发送加密电子邮件,则此设置会使Roundcube使用您的GPG密钥对其进行解密。
  • 默认签署所有消息 :可选。 即使您发送的人没有GPG支持,也会对您发送的每封电子邮件签名。 如果他们不这样做,他们会在电子邮件底部看到一些字符。 撰写电子邮件时,您也可以切换此选项。
  • 默认加密所有消息 :可选。 这会加密您发送的每封电子邮件,假设您有发送电子邮件的人的公钥。 撰写电子邮件时,您也可以切换此选项。
  • 默认附加我的公共PGP密钥 :可选。 这会将您的GPG公钥添加为您发送的每封电子邮件中的附件。 如果收件人支持GPG,他们的电子邮件客户端将会看到该密钥并将其安装到密钥环中,以便他们可以向您发送加密的电子邮件。
  • 保留私钥密码以设置Roundcube记住您在加密或解密电子邮件时输入的密码短语的时间,因此您不必每次输入密码。

一旦你选择了你的设置,点击保存。 接下来,点击设置列中的标识

更新身份

默认设置是使用您注册的电子邮件地址的单一身份。 点击电子邮件并填写显示名称字段。 您可以选择填写其他字段,例如组织 完成后,单击保存按钮。

配置的最后一部分是创建一个密钥。 点击左侧导航栏中的PGP键

如果您已经拥有GPG密钥,则可以单击右上方的导入并导入您的密钥,然后再次单击以导入您的公钥。

如果您没有GPG密钥,或者您想创建一个新密钥,请单击PGP密钥列底部的加号( + )按钮。 从那里选择你想要创建密钥的身份并选择密钥强度(密钥的大小越大,破解加密的难度就越大,但执行加密的速度就越慢)。 最后,选择一个强大的密码,然后单击保存

警告 :使用Chrome时,有一个错误会阻止在Roundcube中创建新密钥。 如果您通常使用Chrome,请暂时切换到其他浏览器以创建新密钥。 一旦Chrome中有密钥,按预期导入密钥对并签名/加密工作。

当您收到经过验证的已签名电子邮件时,Roundcube会在顶部显示通知中的绿色已验证签名

签署电子邮件

当您收到并解密加密的电子邮件时,Roundcube会显示消息解密通知:

解密电子邮件

要在邮件中使用GPG加密,请点击左上角的邮件图标,然后撰写新邮件。 单击加密图标以查看可用的加密选项。 这取决于您在加密设置中选择的内容。 如果您遵循了我们的建议,则应该看到数字签名此邮件加密此邮件附加我的公钥 发送电子邮件时,请检查您想要的加密选项。

结论

通过添加SSL,双因素身份验证和GPG加密,您的电子邮件管道显着更安全。 从这里开始,您可以通过探索Roundcube插件库来继续扩展和自定义Roundcube。