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
是时候安装密码生成应用程序了。有适用于Android、iOS 和 Blackberry 的版本。Google 解释了详细信息。安装完成后,启动应用程序并将秘密密钥输入其中 — 手动或使用二维码。这样就完成了,连接 MariaDB 时可以使用双重验证了。但是我们的用户使用 Windows!这怎么行得通呢?
答案取决于您的用户使用的 Windows MariaDB 客户端。在撰写本文时,只有 HeidiSQL 完全支持可插拔身份验证。您可能已经安装了它 — HeidiSQL 是 MariaDB Windows 分发版的一部分。或者,您可以直接从官方网站下载。
首先,我们使用 HeidiSQL 会话管理器来配置连接参数。在这里,我们将作为用户“serg”连接 — 这是我们在上面创建的用于使用 PAM 身份验证插件的用户。请注意,客户端不需要为可插拔身份验证进行特殊配置,它在必要时会自动启用。
现在我们可以连接到服务器了。它使用 PAM 身份验证插件,该插件加载 Google Authenticator,然后 Google Authenticator 要求输入验证码。然后我们看到 HeidiSQL 询问
我们启动 Authenticator 应用程序,它会生成验证码
然后我们使用它登录!下一次验证码将不同,即使有人在旁边偷看,也无法窃取我们宝贵的连接密码。
如何将它与 PHP 或其他 MySQL 客户端一起使用?
嗨 sergei,我遇到了一些错误,无法登录
我从 /var/log/auth.log 中得到了这些
unix_chkpwd[30882]: 检查密码;用户未知
unix_chkpwd[30882]: 用户 (rspadim) 密码检查失败
mysqld[2290]: pam_unix(mysql:auth): 身份验证失败;logname= uid=89 euid=89 tty= ruser= rhost= user=rspadim
mysql(pam_google_authenticator)[2290]: 未能将用户 ID 更改为“rspadim”
我正在运行最新的 mariadb 10.0.0
有什么想法吗?