加固你的Roundcube服务器

简介

Roundcube是一个Webmail客户端,具有强大的安全功能和来自其插件存储库的广泛自定义选项。本文介绍如何进一步保护基本的现有Roundcube安装。

如果在Roundcube的初始设置中配置IMAP和STMP设置时使用了SSL,则Roundcube与电子邮件服务器之间的连接已得到保护。但是,从您的浏览器到Roundcube的连接却不是这样,您的电子邮件本身也是明文发送的。您的Roundcube帐户本身也仅受密码保护。

在本教程中,您将通过以下方式保护电子邮件:

  • 使用腾讯云免费SSL证书添加到Apache。
  • 使用Roundcube插件为您的Roundcube帐户添加双重身份验证。
  • 使用GPG使用Roundcube插件对电子邮件进行签名和加密。

准备

要学习本教程,您需要:

  • 一个安装了Roundcube的Ubuntu 16.04服务器,
  • 安装了TOTP兼容应用的智能手机或平板电脑,如Google身份验证器(iOS,Android)。您将使用它来设置双重身份验证。

第一步 - 添加SSL以安全访问Roundcube

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

一种简单的方法是使用腾讯云中的免费SSL证书。首先,我们需要申请腾讯云的证书,具体步骤如下:

申请入口

进入SSL证书管理控制台

单击【申请证书】

查看申请域名型证书型号,单击【确定】

填写申请

填写申请域名,例如qcloud.com,cloud.tencent.com,demo.test.qlcoud.com。

手动DNS验证方式

证书默认支持收到DNS验证,验证方法可查看详情

提交申请后验证身份

提交申请成功后弹窗提示如下,需要前往【证书详情页】获取CName记录添加解析:

获取CName记录如Tips中显示,需要尽快成功添加解析,方可通过CA机构审核:

获取证书

下载你申请的证书,Apache文件夹内获得证书文件 1_root_bundle.crt2_www.domain.com_cert.crt 和私钥文件 3_www.domain.com.key

1_root_bundle.crt 文件包括一段证书代码 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”, 2_www.domain.com_cert.crt文件包括一段证书代码 “-----BEGIN CERTIFICATE-----”和“-----END CERTIFICATE-----”, 3_www.domain.com.key文件包括一段私钥代码“-----BEGIN RSA PRIVATE KEY-----”和“-----END RSA PRIVATE KEY-----”。

证书安装

编辑Apache根目录下 conf/httpd.conf 文件,找到 #LoadModule ssl_module modules/mod_ssl.so#Include conf/extra/httpd-ssl.conf,去掉前面的#号注释;编辑Apache根目录下 conf/extra/httpd-ssl.conf 文件,修改如下内容:

<VirtualHost 0.0.0.0:443>
    DocumentRoot "/var/www/html"
    ServerName www.domain.com
    SSLEngine on
    SSLCertificateFile /usr/local/apache/conf/2_www.domain.com_cert.crt
    SSLCertificateKeyFile /usr/local/apache/conf/3_www.domain.com.key
    SSLCertificateChainFile /usr/local/apache/conf/1_root_bundle.crt
</VirtualHost>

配置完成后,重新启动 Apache 就可以使用https://www.domain.com来访问了。

您现在可以从计算机到Roundcube安装进行安全连接,从而实现与IMAP /SMTP电子邮件服务器的安全连接。您还可以采取一些措施来提高电子邮件通信的安全性,下一步使用插件通过添加双重身份验证来强化Roundcube帐户的安全性。

第二步 - 安装双重身份验证插件

有两种方法可以安装插件:

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

这里,我们将使用半自动安装,因为它易于使用。

Composer由存储在$RC_HOME/composer.json中由composer.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

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

. . .
"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。

第三步 - 在您的帐户上启用双重身份验证

要开始使用,请使用浏览器中的服务器IP或域登录Roundcube。单击右上角的“设置”按钮,然后单击左侧导航中的“双重身份验证 ”。

在“双重身份验证选项”部分中,单击“ 激活”复选框,然后单击“ 创建密码”

接下来,单击“显示恢复代码”并将显示的四个恢复代码存储在安全的位置。如果您无法生成令牌(例如,如果丢失手机),您将使用这些代码登录。

最后,单击“ 保存”按钮。

这样可以启用2FA,但现在您需要将密码添加到与TOTP兼容的应用中,例如Google身份验证器。单击保存密码后显示的是二维码代码按钮,并使用您的应用程序扫描代码。如果扫描不起作用,您也可以手动输入密码。

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

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

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

Enigma插件增加了用于查看和发送签名,加密电子邮件的支持。您可以按照步骤二中用于2FA插件的相同步骤立即添加Enigma插件。

首先,我们需要启用一些默认加密选项。 登录Roundcube,然后单击右上角的“设置”按钮。单击“首选项”,然后单击“节”列表下的“加密”。

主选项列表中有7个加密设置。启用全部7个将提供最大的安全性,但这需要在可用性方面进行一些权衡。

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

  • 启用邮件加密和签名:必要。这允许您签名和加密邮件。
  • 启用邮件签名验证:推荐。如果有人向您发送了已签名的电子邮件,则此设置会使Roundcube尝试通过其电子邮件地址和密钥验证发件人。
  • 启用邮件解密:推荐。如果有人向您发送加密电子邮件,此设置会让Roundcube使用您的GPG密钥对其进行解密。
  • 默认情况下为所有邮件签名:可选。这标志着您发送的每封电子邮件,即使您发送给它的人没有GPG支持。如果他们不这样做,他们会在电子邮件的底部看到一大堆字符。您还可以在撰写电子邮件时切换此选项。
  • 默认情况下加密所有邮件:可选。假设您拥有要发送电子邮件的人的公钥,这会加密您发送的每封电子邮件。您还可以在撰写电子邮件时切换此选项。
  • 默认情况下附加我的公共GPG密钥:可选。这会将您的GPG公钥作为附件添加到您发送的每封电子邮件中。如果收件人有GPG支持,他们的电子邮件客户端将看到密钥并将其安装到密钥环中,以便他们可以向您发送加密电子邮件。
  • 保留设置的私钥密码:Roundcube会记住您在加密或解密电子邮件时输入的密码,因此您不必每次都输入密码。

选择设置后,单击“ 保存”。接下来,单击“ 设置”列中的“ 身份”

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

配置的最后一部分是创建密钥。单击左侧导航中的GPG密钥。如果您已经有GPG密钥,可以单击右上角的导入并导入密钥,然后再次单击它以导入您的公钥。

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

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

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

要在邮件中使用GPG加密,请单击左上角的“ 邮件”图标撰写新电子邮件,然后单击“撰写”。单击“加密”图标以查看可用的加密选项。这取决于您在加密设置中选择的内容。如果您按照我们的建议操作,则应该看到对此消息进行数字签名加密此消息以及附加我的公钥。发送电子邮件时,请检查所需的加密选项。

结论

通过添加SSL,双重身份验证和GPG加密,您的电子邮件更加安全。您可以通过浏览Roundcube插件存储库继续扩展和自定义Roundcube。你学会了吗?快去腾讯云购买免费试用一台服务器进行学习吧,更多安全知识,请前往腾讯云+社区学习。


参考文献:《How To Secure Roundcube on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

在Debian 8上使用Postfix配置SPF和DKIM

SPF(发件人策略框架)是一种向邮件服务器标识允许哪些主机为给定域发送电子邮件的系统。设置SPF有助于防止您的电子邮件被归类为垃圾邮件。

2210
来自专栏lestat's blog

certbot+letsencrypt配置免费单证书多域名ssl证书

前些天看到微信公众平台官方公告关于公众平台接口不再支持HTTP方式调用的公告之后决定把项目的协议从http改成https,于是开始在网上查,完成之后总结了一点经...

6594
来自专栏Youngxj

网站状态批量监控源码

1.2K4
来自专栏流柯技术学院

虚拟硬盘格式vdi、vhd、vmdk相互转换

Windows7的引导程序能够引导vhd格式的虚拟硬盘,而VirtualBox创建的虚拟硬盘文件是vdi格式的,怎么办呢? 以前要借助其他软件才能实现,但是V...

1562
来自专栏前端笔记

【HTTP2.0 协议】就“腾讯云 CDN 针对 HTTP 2.0全面公测”浅谈如何启用 HTTP 2.0协议?

HTTPS 是指超文本传输安全协议(Hypertext Transfer Protocol Secure),是一种在 HTTP 协议基础上进行传输加密的安全协...

5709
来自专栏小夜博客

LNMP环境配置SSL证书最简单教程

1K13
来自专栏俗人笔记

如何免费将网站升级到HTTPS

由于HTTPS可以防止页面被中间人攻击、确保数据传输过程不被篡改,保证内容完整性。所以升级网站到HTTPS是大的趋向。像苹果AppStore已经禁止使用HTTP...

3276
来自专栏QQ会员技术团队的专栏

HTTP/2探索第二篇——工具及应用

由于不同环境过于复杂,本文仅基于Mac OS和Linux来讲解工具及应用。 目录结构: HTTP/2环境搭建Step by step wireshark使用 f...

66810
来自专栏程序员宝库

更快更安全,HTTPS 优化总结

在网站升级到 HTTPS 之后,我们还可以有很多玩意可以折腾,优化 HTTPS,让它更快更安全。这里是一篇 HTTPS 优化的总结,也包含问题的解决方法,不过不...

95511
来自专栏技术博文

ssh(安全外壳协议)

SSH 为Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础...

32211

扫码关注云+社区

领取腾讯云代金券