配置为通过pam_oath进行2FA SSH访问的CentOS 7-一次性口令允许6个字符或更少的字符串

问题描述 投票:-1回答:1

因此,我一直在学习使用pam_oath和FreeOTP电话应用程序为这两个因素配置SSH的CentOS 7计算机以进行2因子身份验证,并为这两个因素加上本地用户名/密码。我已经阅读了各种在线文章,并且似乎都遵循以下文章中列出的基本说明:

https://wiki.archlinux.org/index.php/Pam_oath

https://jonarcher.info/2015/07/hardening-ssh-with-otp-for-2-factor-authentication/

https://www.brianlane.com/post/setup-oath-ssh-login-on-fedora/

在我的主要CentOS计算机上执行此操作之前,我启动了VirtualBox VM进行测试,并进行了最低限度的CentOS 7安装。我按照说明进行操作,并提示输入“一次性密码(OATH)”凭据,但是我注意到我可以输入any小于等于6个字符的字母数字字符串,然后提示我输入我的本地用户名/密码。只要我正确输入本地密码,就可以授予外壳访问权限。

这里是最初的最小CentOS 7安装(CentOS Linux版本7.7.1908(核心))之后我遵循的步骤:

  1. 安装软件包
yum update && yum upgrade

yum install epel-release

yum install pam_oath oathtool gen-oath-safe
  1. 编辑/etc/pam.d/sshd,并将以下行添加为第一行非注释行:

验证足够的pam_oath.so usersfile = / etc / liboath / users.oath窗口= 10位数= 6

因此,/ etc / pam.d / sshd的前几行以前看起来像这样:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
# Used with polkit to reauthorize users in remote sessions

以及之后:

#%PAM-1.0
auth sufficient pam_oath.so usersfile=/etc/liboath/users.oath window=10 digits=6
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
  1. 为我的本地帐户生成密钥:

gen-oath-safe jdoe hotp

  1. 通过QR码将密钥添加到手机上的FreeOTP应用程序中

  2. 将十六进制代码添加到/etc/liboath/users.oath:

HOTP jdoe-已删除

  1. 编辑/ etc / ssh / sshd_config文件,并确保以下设置到位:
UsePAM yes
ChallengeResponseAuthentication yes
PasswordAuthentication yes
  1. 在/ etc / liboath上设置SELinux权限:
semanage fcontext -a -t systemd_passwd_var_run_t '/etc/liboath(/.*)?'
restorecon -rv /etc/liboath/
  1. 重新启动SSH:

systemctl restart sshd

因此,当我通过SSH连接到该主机,并输入6个字符或更少的字符串时,我可以使用本地密码登录:

login as: jdoe
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':
 Password:
End of keyboard-interactive prompts from server
Last login: Sun Mar 22 18:03:08 2020 from 192.168.1.240
[jdoe@pkcentos7 ~]

如果我为OATH密码输入7个字符或更多的字符串,则会发生以下情况:

login as: jdoe
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':
End of keyboard-interactive prompts from server
Access denied
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':
End of keyboard-interactive prompts from server
Access denied
Keyboard-interactive authentication prompts from server:
 One-time password (OATH) for `jdoe':

我浏览了Google搜索返回的其他各种文章,但没有清楚地看到缺少的步骤或设置。

在此方面的任何帮助将不胜感激。预先谢谢您,如果需要任何其他信息,请让我知道。

保罗

ssh centos pam two-factor-authentication
1个回答
0
投票

将pam模块的控制从sufficient更改为[success=done new_authtok_reqd=done default=die]

我的pam行看起来像:

auth [success=done new_authtok_reqd=done default=die] pam_oath.so usersfile=/etc/users.oath

sshd_config

PasswordAuthentication no
AuthenticationMethods publickey,keyboard-interactive:pam 
UsePAM yes
ChallengeResponseAuthentication yes
© www.soinside.com 2019 - 2024. All rights reserved.