标签: pam

如何在 FreeBSD 上使用 OTP 设置两因素身份验证?

我有一个 FreeBSD 服务器,我喜欢可以从任何地方访问它。通常我使用 SSH 公钥登录,或者如果我没有可用的 SSH 私钥,那么我可能会通过 SSH 使用常规密码。但是,当从不受信任的机器登录时,键盘记录器总是存在在我输入登录密码时捕获我的登录密码的风险。

FreeBSD 已经支持 OPIE,这是一种一次性密码方案。这很好用,但一次性密码是唯一需要的身份验证。如果我打印出一个一次性密码列表供以后使用,那么如果我丢失了该列表,那么这就是某人所需要的。

我想设置身份验证,以便我需要一次性密码我知道的一些信息(密码,除了不是我常用的登录密码)。我有一种感觉,答案与PAM(和/etc/pam.d/sshd)有关,但我不确定细节。

在需要两种方法的情况下,如何设置身份验证?

security freebsd ssh password pam

7
推荐指数
1
解决办法
1872
查看次数

来自 postgres 数据库的 sshd 中的虚拟用户

我有一个充满用户帐户的 Postgresql 数据库,我想允许这些用户通过 ssh 访问服务器,只使用公钥认证。

到目前为止,我已经在 Ubuntu 服务器上设置了这些部分:

  1. libnss-pgsql2将 NSS 连接到以 Unix 兼容格式列出我的用户的多个数据库视图
  2. libpam-pgsql允许使用这些相同的视图进行 PAM 身份验证
  3. sshd AuthorizedKeysCommand 带有一个脚本,该脚本使用他们的公钥(仍然来自 postgresql 数据库)对用户进行身份验证。

有没有更简单的方法来解决这个问题?我在正确设置 nss 配置时遇到问题(缺乏文档和日志)。

感谢您的时间和帮助。

postgresql ssh pam nss

6
推荐指数
1
解决办法
1345
查看次数

FreeIPA:防止本地 root 访问用户帐户

所以在问了这个问题之后,我一直在测试 FreeIPA 作为基于这个问题的中央认证源:管理对多个 linux 系统的访问

我遇到的一个问题是,如果用户被授予本地 root 权限,他们又可以以 FreeIPA 目录中的任何用户身份登录。即使该用户无权通过 HBAC 规则访问该特定机器。

示例场景:

  • FreeIPA 客户端机器PC1
  • FreeIPA 中的两个用户:Bob 和 Alice。
  • 爱丽丝通过HBAC规则允许访问PC1。Bob 在 PC1 上有本地根。Bob 可以su成为 PC1 上的 Alice。

我能找到的唯一信息是在 /etc/pam.d/su 中注释掉这一行:

auth            sufficient      pam_rootok.so
Run Code Online (Sandbox Code Playgroud)

如果他尝试以下操作,它现在会向本地 root 询问 Alice 的密码:su alice

但是,如果 Bob 具有 root 访问权限,他可以轻松启用上述 PAM/su 行。FreeIPA 不应该阻止 Alice 的帐户通过直接登录尝试或本地 root su访问 PC1吗?如何防止本地根用户以任何 FreeIPA 用户身份登录?

pam sssd freeipa

6
推荐指数
1
解决办法
2727
查看次数

使用公钥的 OpenSSH 和 PAM 身份验证

我正在寻找一种使用存储在数据库(MongoDB)中的公钥来验证用户身份的方法。类似的问题通常会导致建议安装 OpenSSH 的补丁版本 ( https://github.com/wuputahllc/openssh-for-git ),该版本针对数据库进行身份验证(GitHub 正在使用 OpenSSH 的补丁版本)。

我看到有一个 PAM 模块可以通过 MySQL 进行身份验证,但它假定用户名/密码身份验证。我想知道是否可以使用某种 PAM 模块对服务器使用公钥进行身份验证。

编辑:我需要一个 git 服务器,所有用户都将通过“git”用户名进行连接。每个用户不会有特定的用户名。

ssh database authentication pam public-key

6
推荐指数
2
解决办法
1万
查看次数

sshd 和 sftp 子系统的不同“RequiredAuthentications2”

我们目前在 SSH 服务器上使用 2factor 身份验证,因此我们的 sshd_config 中有“RequiredAuthentications2 publickey,keyboard-interactive”(公钥用于密钥,keyboard-interactive 用于通过 PAM 处理的 2factor)

为了让我们的开发人员更轻松,我们希望禁用 sftp 子系统的 2factor 要求。

我已经搜索了诸如“匹配子系统 sftp”之类的东西(比如可用的“匹配组”,我之后只能定义“RequiredAuthentications2 publickey”,但这似乎是不可能的。

我查看的另一件事是检查 PAM,如果有可能为 sftp 子系统定义单独的配置(这似乎不可行,pam 的服务始终是“ssh”)或者我是否可以在我的 sshd pam conf 就像“sftp 中的 auth [success=1 default=ignore] pam_succeed_if.so 安静子系统”

任何提示?(除了为具有不同设置的 sftp 设置另一个 sshd 实例)

ssh sftp pam

6
推荐指数
1
解决办法
2157
查看次数

了解 FreeBSD 上使用 security/sssd 的 PAM 身份验证过程

我试图了解 FreeBSD 10.0 上的 PAM 配置出现了什么错误

该计算机配置了两种不同的身份验证领域,一种是默认的 Unix 身份验证,另一种是使用系统安全服务守护程序 (sssd)。

目前我正在使用此配置,/etc/pam.d/sshd因为我只想允许 sssd 从 ssh 登录。

auth            sufficient      pam_opie.so                  no_warn no_fake_prompts
auth            requisite       pam_opieaccess.so            no_warn allow_local
auth            sufficient      /usr/local/lib/pam_sss.so
#auth           sufficient      pam_krb5.so                  no_warn try_first_pass
#auth           sufficient      pam_ssh.so                   no_warn try_first_pass
auth            required        pam_unix.so                  no_warn use_first_pass

# account
account         required        pam_nologin.so
#account        required        pam_krb5.so
account         required        pam_login_access.so
account         required        /usr/local/lib/pam_sss.so    ignore_unknown_user
account         required        pam_unix.so

# session
#session        optional        pam_ssh.so                   want_agent
session         optional        /usr/local/lib/pam_sss.so
session         optional        /usr/local/lib/pam_mkhomedir.so      mode=0700
session         required        pam_permit.so

# …
Run Code Online (Sandbox Code Playgroud)

freebsd authentication pam sssd

6
推荐指数
1
解决办法
6236
查看次数

登录需要很长时间

从任何服务升级到 Debian 7.4 后,密码验证都需要很长时间。这适用于 SSH 登录、sudo'ing 和使用 dovecot(配置为使用 PAM)的身份验证。

我能够反向查找 DNS 条目,这似乎不是问题。感觉就像某些身份验证机制遇到了超时。我尝试启用 pam_debug,但我没有看到任何调试输出。

以下是执行 sudo 所需时间的示例(带有密码提示,在 sudo 缓存密码期间,它会立即生效):

ceicke@h1633420:~$ time sudo who
[sudo] password for ceicke:
ceicke   pts/0        2014-08-01 09:19 (80.131.XXX.XXX)

real    0m27.976s
user    0m0.009s
sys 0m0.014s
Run Code Online (Sandbox Code Playgroud)

使用我的私钥 SSH 进入盒子也可以立即生效。所以真的密码检查过程需要很长时间。

我对我可以尝试的其他事情有点迷茫,特别是因为 PAM 模块对它正在做的事情非常非常沉默。

更新 #1

这是 strace 的输出:http : //pastebin.com/dRvqsrcd

我猜有很多调用time(null)会获取当前的 Unix 时间戳。似乎有些东西正在积极检查超时。

我注意到两件事:

  1. time(null)通话经常与公开征集到之前/dev/urandom,它可以是我的服务器正在等待收集足够的熵?
  2. krb5在不同的地方有很多参考。我不使用 Kerberos 进行身份验证,我可以简单地pam_krb5.so从我的 pam 配置中取出吗?

我没有很多准备strace输出的经验,也许你可以看到更多?

更新 #2

服务器上的熵相当低,在 100 - 200 之间。

debian password pam

6
推荐指数
1
解决办法
1051
查看次数

OpenSSH 两因素身份验证结合 Kerberos/公钥

我正在尝试为 OpenSSH 实施两因素身份验证。环境是 Centos 7(内核:3.10.0-229.1.2.el7.x86_64)和 OpenSSH_6.6.1p1,OpenSSL 1.0.1e-fips 2013 年 2 月 11 日。我们部署了 Active Directory (LDAP) + Kerberos。规格如下:

  • 必须仅向具有现有有效 Kerberos 票证的用户询问第二个因素
  • 必须要求没有现有有效 Kerberos 票证的用户提供他的密码和第二个因素
  • 本地用户(无 LDAP acc.)应该能够使用他们的本地密码进行身份验证
  • 在第一个因素之前不得提供第二个因素
  • 除了 Kerberos 之外,如果可用,也应接受公钥身份验证作为第一因素
  • 该功能应该能够仅限于一组用户 - 其他人只需输入密码即可

为了执行第二个因素的身份验证过程,有第 3 方可用的 PAM 模块,它对 Kerberos 一无所知。所以这就是我所做的:

将这些行放入 /etc/ssh/sshd_config:

# To enable PAM - this will make sshd use PAM with configuration /etc/pam.d/sshd
UsePam yes
ChallengeResponseAuthentication yes

# To enable Kerberos and public key authentication - it will let sshd use existing Kerberos tickets
GSSAPIAuthentication yes …
Run Code Online (Sandbox Code Playgroud)

ssh kerberos authentication pam

6
推荐指数
1
解决办法
3609
查看次数

无法通过 PAM 和 ldap 登录:无法获取密码

我正在尝试让 OpenVPN 通过 PAM 通过 LDAP 向 Active Directory 服务器验证用户。

以下是我的配置文件的相关部分:

/etc/openvpn/server.conf

# ...
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so ldap-login
Run Code Online (Sandbox Code Playgroud)

/etc/nslcd.conf

uri ldap://prod-adc1.mydomain.local
base DC=MyDomain,DC=Local
uid nslcd
gid ldap
Run Code Online (Sandbox Code Playgroud)

/etc/pam.d/ldap-login

auth      sufficient  pam_ldap.so minimum_uid=1000 use_first_pass
auth      required    pam_deny.so
password  sufficient  pam_ldap.so minimum_uid=1000 use_first_pass
password  required    pam_deny.so
Run Code Online (Sandbox Code Playgroud)

当我尝试进行身份验证时,我在日志中看到以下内容:

/var/log/secure

Dec  4 22:22:42 localhost openvpn[25505]: pam_ldap(ldap-login:auth): failed to get password: Authentication failure
Run Code Online (Sandbox Code Playgroud)

/var/log/messages

Dec  4 22:38:28 localhost openvpn[25504]: 1.2.3.4:37503 TLS: Initial packet from [AF_INET]1.2.3.4:37503, sid=c2d806cc 5c7c7ace
Dec  4 22:38:28 localhost …
Run Code Online (Sandbox Code Playgroud)

active-directory openvpn pam pam-ldap

6
推荐指数
1
解决办法
2463
查看次数

使用 google 身份验证器进行 SSH 公钥身份验证仍然要求输入密码

我正在尝试使用 libpam-google-authenticator 通过 ssh 启用 2FA。并非所有用户都需要启用身份验证器。每个人都使用 ssh 公钥,但没有人有密码。我正在运行 Debian buster,并且还尝试了 bullseye 的 libpam-google-authenticator。

我的问题是,无论我在 PAM 配置中输入什么内容,未启用身份验证器的用户都不会直接登录,而是总是要求输入密码

我已经安装了 libpam-google-authenticator 并配置了 /etc/ssh/sshd_config:

PasswordAuthentication no
ChallengeResponseAuthentication yes
AuthenticationMethods publickey,keyboard-interactive
PasswordAuthentication no
PermitEmptyPasswords no
Run Code Online (Sandbox Code Playgroud)

我无法计算出正确的 PAM 配置,以便没有 .google_authenticator 文件的用户仍然可以登录。根据我使用的内容,系统要么提示用户输入密码(他们没有密码),要么不提示完全允许进入。

在 /etc/pam.d/sshd 中,我尝试过(像这样Trying to get SSH with public key (no password) + googleauthenticatorworking on Ubuntu 14.04.1):

#@include common-auth
auth       required     pam_google_authenticator.so debug nullok
Run Code Online (Sandbox Code Playgroud)

在这种情况下,没有身份验证器设置的用户将通过以下调试被拒绝;

Aug 05 15:11:18 <host> sshd(pam_google_authenticator)[746624]: debug: start of google_authenticator for "<user>"
Aug 05 15:11:18 <host> sshd(pam_google_authenticator)[746624]: debug: …
Run Code Online (Sandbox Code Playgroud)

debian pam two-factor google-authenticator

6
推荐指数
1
解决办法
3474
查看次数