MariaDB:使用双重验证提高安全性

在本入门指南中,我将展示如何使用双重验证来提高 MariaDB 安装的安全性,以及如何从 Windows GUI 客户端中使用它。

假设您的数据存储在 MariaDB 中,安装在例如 Ubuntu 上。您的用户通过某种 Windows GUI 客户端连接到它以运行临时查询。您不希望他们在便利贴上写下访问密码,也不希望客户端自动输入密码。当销售人员在网吧用笔记本电脑连接到主系统时,您也不希望任何人看到密码。因此,您决定像 Google 那样使用双重验证来保护数据的访问安全。

如果您不知道什么是“双重验证”,例如可以观看 Google 提供的这个入门视频

双重验证看起来很棒,但我们如何实现它呢?幸运的是,Google Authenticator 项目中有一个 PAM 模块,我们可以将其与 MariaDB PAM 身份验证插件一起使用。

让我稍微离题一下。下面我们将实现基于 Google Authenticator 的双重验证。但在将本入门指南投入生产之前,您可能需要评估其他类似的解决方案。有不少 PAM 模块实现了 One-Time Password (OTP) 方法(pam_google_authenticator 只是其中之一)。特别地,OPIE(和 S/Key)看起来很有趣,因为它们不需要为每个用户提供有效的 Unix 帐户和主目录。也有基于硬件的解决方案,要求用户有一个小型密码生成设备(例如 RSA SecurID)。

回到 Google Authenticator。首先,我们需要安装 PAM 模块。在 Ubuntu 11.10 上非常简单:一个 apt-get 命令即可。对于不包含它的发行版(和旧版本的 Ubuntu),您可以使用手动安装说明

无论哪种方式,我们都安装 /lib/security/pam_google_authenticator.so(我没有 Ubuntu 11.10,所以我必须手动安装)。为了实现双重验证,我们需要同时要求普通账户密码和一次性代码。这可以通过以下 PAM 配置文件实现

auth            required        pam_unix.so
auth            required        pam_google_authenticator.so
account         required        pam_unix.so

我必须将其放在 /etc/pam.d/mysql 文件中,您的系统上位置可能不同。完成此操作后,让我们安装 MariaDB PAM 插件并创建用户账户

现在我们需要为账户配置 Google Authenticator

是时候安装密码生成应用程序了。有适用于AndroidiOS 和 Blackberry 的版本。Google 解释了详细信息。安装完成后,启动应用程序并将秘密密钥输入其中 — 手动或使用二维码。这样就完成了,连接 MariaDB 时可以使用双重验证了。但是我们的用户使用 Windows!这怎么行得通呢?

答案取决于您的用户使用的 Windows MariaDB 客户端。在撰写本文时,只有 HeidiSQL 完全支持可插拔身份验证。您可能已经安装了它 — HeidiSQL 是 MariaDB Windows 分发版的一部分。或者,您可以直接从官方网站下载。

首先,我们使用 HeidiSQL 会话管理器来配置连接参数。在这里,我们将作为用户“serg”连接 — 这是我们在上面创建的用于使用 PAM 身份验证插件的用户。请注意,客户端不需要为可插拔身份验证进行特殊配置,它在必要时会自动启用。

现在我们可以连接到服务器了。它使用 PAM 身份验证插件,该插件加载 Google Authenticator,然后 Google Authenticator 要求输入验证码。然后我们看到 HeidiSQL 询问

我们启动 Authenticator 应用程序,它会生成验证码

然后我们使用它登录!下一次验证码将不同,即使有人在旁边偷看,也无法窃取我们宝贵的连接密码。