为Linux用户启用MFA

2024-11-04 23:15:00
丁国栋
原创 90
摘要:本文介绍如何为Linux用户启用MFA,为GNOME桌面环境启用MFA。

在 GNOME 桌面环境中启用多因素认证,可以增加系统的安全性。在 GNOME 桌面环境中启用多因素认证(MFA)可以使用 PAM(可插拔认证模块)来实现与 Google Authenticator 的集成。以下是启用 MFA 的步骤:

注:本步骤同样适用于 SSH 登陆,详情见下文。

1. 安装 Google Authenticator

安装 libpam-google-authenticator 包。可以使用以下命令:
sudo apt-get install libpam-google-authenticator

2. 为用户生成 MFA 密钥

每个需要启用 MFA 登录的用户都需生成自己的 OTP 密钥,如果没有配置 MFA 则无需验证 MFA(因此在配置以下步骤之前可以提前登陆一个管理员账户或者不要给所有可登陆用户都配置MFA)。登录到该用户账户,并使用该用户身份运行(执行shell命令):
google-authenticator

根据提示,设置密钥、二维码和备份代码(通常保持默认即可,即全部问题回答是y)。

提示:支持的客户端有多种,例如 Google Authenticator, Microsoft Authenticator, Authy等等,可以各取所需。


3. 配置 PAM(可选)

编辑 PAM 配置文件,以启用 MFA。打开 /etc/pam.d/common-auth 文件(在某些系统上可能是 /etc/pam.d/login/etc/pam.d/sshd,具体根据自己使用的系统而定),并添加以下行:
auth required pam_google_authenticator.so
将其添加到文件的顶部,以便在其他认证方法之前进行 MFA 认证,注意这个文件会被其他 PAM 规则文件所包含,相当于一个全局的设置,这样设置以后会被要求先输入 MFA code(Verification code)再要求输入密码。

4. 修改 SSH 配置(如果需要)

如果使用 SSH 登录,可以配置 SSH 允许使用 PAM。打开 /etc/ssh/sshd_config 文件,确认以下配置存在并未被注释:
ChallengeResponseAuthentication yes
如果找不到该配置,说明这个参数已经被废弃,可以使用 KbdInteractiveAuthentication yes 代替。

5. 配置 GNOME 登录

配置 PAM 在本地登录时使用 MFA。检查 /etc/pam.d/gdm-password 文件,并添加以下行:
auth required pam_google_authenticator.so

提示:这个步骤其实可以单独执行,即在不配置/etc/pam.d/common-auth 文件的情况下单独使用,这样仅对 GNOME 有效 。

6. 重启服务

完成配置后,可以保存当前工作(防止会话结束造成数据丢失),并重启 GDM 服务(GNOME 显示管理器):
sudo systemctl restart gdm

7. 测试 MFA 登录

现在可以尝试重新登录 GNOME 桌面,系统应该会要求输入当前用户的密码并提示输入生成的 OTP code,验证顺序取决于是否在 /etc/pam.d/common-auth 文件进行了全局配置

8. 备份代码

用户在设置过程中会自动保存生成的备用代码,默认文件为 ~/.google_authenticator,可以备份到其他位置以便在无法访问 MFA 设备时可以恢复。

注意事项

  1. 在启用 MFA 之前,确保有其他方法(如已登录的SSH 会话,物理访问或其他用户账户)能够恢复访问。
  2. 备份用户的密钥和恢复代码,以防二步验证设备丢失。

评论列表
风风 2024-11-07 13:08:41 Email: ****@**** IP: 123.*.*.86 (山东/青岛) 回复
给SSH服务开启MFA后需要使用键盘输入用户身份验证(Keyboard Interactive),不然可能会无法登录。
1/1
发表评论
博客分类