问题标签 [pam]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4105 浏览

active-directory - 使用 kerberos 将 Linux 绑定到 Active Directory

我们正在尝试将 Linux 机器(debian 4.0)绑定到 W2k3 AD。我们已经正确配置了 kerberos,以便我们可以获取 TGT。并且用户正确地进行身份验证。但是,PAM 似乎是粘性检票口。例如,当我们尝试以 AD 用户之一的身份通过 SSH 连接到 linux 机器时,身份验证成功(根据 auth.log),但我从来没有得到 shell。默认环境配置正确,PAM 甚至可以正确创建 Homedir。作为参考,我们大致遵循:

https://help.ubuntu.com/community/ActiveDirectoryHowto

0 投票
3 回答
43900 浏览

linux - 在 Linux 中限制用户可用的内存和 CPU

我有点担心我可以在共享机器中使用的资源量。有什么方法可以测试管理员对我可以使用的资源数量是否有限制?如果是这样,为了提出一个更完整的问题,我该如何设置这样的限制?

0 投票
1 回答
4055 浏览

linux - 使用硬件令牌登录

我是密码学的新手,正在研究 PKI 和 PKCS 等。我了解 PKI 的基本概念以及它如何用于加密/解密。但是,我对如何使用 USB 令牌或智能卡等硬件令牌来安全登录您的计算机感到困惑。以下是我理解的步骤以及我感到困惑的部分(对于问题长度,请提前抱歉):

场景:网络上的计算机 xyz 包含只有属于 SECRET 组的用户才能访问的数据。用户 Bob 和 Joe 属于该组,并已获得 USB 令牌,他们可以使用这些令牌提供凭据,使他们能够访问这些资源。USB 令牌采用双因素身份验证,需要输入密码。该令牌符合 PKCS11。

  1. Bob 将 USB 令牌插入 Linux 机器
  2. PAM-PKCS11 模块识别此事件并提示 Bob 输入他的密码。
  3. 一旦 Bob 正确输入了他的 4 位 PIN,模块将通过以下方式检查 Bob 令牌上证书的有效性(这会有所不同,但最低要求是多少?)
    • 查找根证书以检查受信任的 CA
    • 检查证书有效期和撤销列表
    • 将令牌上的 ID 与用户文件(在哪里?,缺少步骤)或目录(LDAP 等)匹配
  4. 如果一切正常,模块会通知 PAM 成功的结果。
  5. 此行被标记为足够,因此 PAM 接受身份验证,并且 Bob 已登录并且可以查看仅限于 SECRET 组用户的信息。

我缺少的部分是关于 Bob 是否可以访问这台机器以及他与网络(甚至桌面)用户 Bob 的关系的信息存储在哪里。我了解有关 Bob 的其他识别数据将存储在 USB 上,包括 ID(例如,电子邮件地址)。但是,这种强大的安全性如何?如果有的话,在登录过程中在哪里使用加密(或者这不是这些令牌的真正目的)?如果有人拿到 USB 并知道 4 位数的 pin,这似乎就是所需要的,对吧?此外,CA 的信任本质上是否允许信任另一个用户无法获得新的 USB 令牌并使用受信任的 CA 来获取新证书,但指定所有识别数据与 Bob 的相同?我知道我缺少一些关键部分.. 但是在阅读了几十篇文章之后,这方面的解释似乎被掩盖了。使用硬件令牌作为身份验证登录到包含敏感数据的机器的充分手段是个好主意吗?或者此类令牌的目的主要是为了安全地存储在其他应用程序中使用的密钥对?感谢您的帮助!

0 投票
3 回答
779 浏览

c - PAM 的不同访问级别

目前我有一个图形应用程序,它有两个访问级别,操作员和管理员。登录和身份验证都是自制的,我想将应用程序切换为使用 PAM。我不确定这样做的正确方法是什么。

如果我错了,请纠正我,但似乎 PAM 归结为“是”或“否”检查——是的,您可以访问此服务,或者不,您不能。没有规定根据哪个用户登录具有不同级别的访问权限。不过,我需要能够分辨谁是操作员,谁是管理员,并且如果可能的话,我希望能够严格通过 PAM 来做到这一点。

所以我的想法是我会为操作员和管理员设置两个具有两种不同配置的服务。然后,我的应用程序将尝试首先进行身份验证,如果失败则. 如果两者都失败,则拒绝访问。我是在正确的轨道上还是完全脱离了轨道?/etc/pam.d/pamdemo/etc/pam.d/pamdemo-adminpamdemo-adminpamdemo

这是我编写的一些示例 C 代码作为概念证明。当我登录时,我不想提示用户输入他的凭据两次。我已经知道了,所以它会记住两次pam_start()调用中的用户名,但我无法pam_get_item(PAM_AUTHTOK)从应用程序级别访问以对密码进行相同的缓存。正是在尝试这样做时,我意识到可能有一种完全不同的方式来做到这一点。无论使用何种身份验证方法,无论是用户名/密码还是 Kerberos 票证或指纹,我都希望这个应用程序能够正常工作。

正如所写的那样,这个演示程序重复“密码:”提示。我不希望它问两次!

0 投票
1 回答
3126 浏览

python - Python PAM 模块的安全问题?

我有兴趣编写一个 PAM 模块,该模块将利用流行的 Unix 登录身份验证机制。我过去的大部分编程经验都是在 Python 中进行的,而我与之交互的系统已经有了 Python API。我四处搜索并找到pam_python,它允许 PAM 模块调用 python 解释器,因此允许 PAM 模块基本上Python 编写。

但是,我了解到,当允许用户调用以比用户本身更高的访问级别运行的 Python 代码时存在安全风险,例如 SUID Python 脚本。这些问题是否也适用于 Python PAM 模块?

0 投票
2 回答
824 浏览

c++ - Linux C++ 应用程序中的 SecurID 身份验证

谁能推荐如何在基于 Linux C++ 的应用程序中实现 SecurID 身份验证?II 正在考虑以下选项:

  1. SecurID 的 apache 模块(我们在前端使用 Apache)
  2. 帕姆
  3. 我听说过但不理解的通过 Radius 的 SecurID 的一些组合
0 投票
3 回答
1263 浏览

linux - 以编程方式提升Linux上的权限

我正在创建一个应该在 Linux 上运行的图形安装程序。安装应该包括将文件复制到/usr. 目前安装程序是用 Python 编写的。

当我需要复制文件时,如何提升安装程序的权限?我查看了PolicyKit

  • a) PolicyKit 似乎没有通用的“安装文件”操作 ID
  • b) 在我可以使用的操作 ID 中,我认为它们不是跨发行版的标准

我还查看了 PAM,我有使用 libpam 的代码,但我似乎无能为力。在对我的用户进行身份验证(通过提供用户名和密码)后,我没有对/usr. 我尝试os.setuid(0)在身份验证后更改我的用户,但我从操作系统收到错误消息。

此外,奇怪的是,我提供什么服务似乎并不重要pam_start。只要用户名和密码正确,我就可以传递任何我想要的东西。我看我有/etc/pam.d/sudo。下面的代码经过简化,密码正确存储在一个pam_conversation对象中,我确实传递了一个句柄对象。

效果一样好

也就是说,他们都成功了。

作为最后的手段,我可​​能可以执行gksudokdesudo但我不想被这些程序束缚。要求用户调用我的安装程序sudo是(非常)最后的手段。

0 投票
1 回答
1335 浏览

php - PHP pam_auth 和 cookie

长话短说,我正在开发一个内部报告引擎。它完全基于网络(使用 PHP 和各种 AJAX 技术),并通过我们的生产软件解释存储在 MySQL 数据库中的数据。它在 Ubuntu 8.04 服务器上运行,所有员工在该机器上都有一个 linux 用户帐户。我使用 pam_auth 设置了一个登录系统,它强制用户使用他们的 linux 用户帐户登录,并确定他们是否属于访问特定报告的适当组。

这部分效果很好,我的问题是使用 cookie 添加“记住我”功能。我希望用户有一个 30 天的 cookie,只是为了节省他们一些时间,并且每次会话到期时都必须登录。我编写了代码的“记住我”部分,它很好地存储了 cookie。我只存储他们的用户名和密码的 md5 哈希值。当需要重新验证它们时,问题就来了。通常我只需将存储的用户名与数据库中该用户的密码哈希进行比较即可。使事情复杂化的是我无法直接访问用户名和密码哈希。它们都存储在 /etc/passwd 和 /etc/shadow 中,登录由 PAM 模块处理。pam_auth 需要纯文本用户名和纯文本密码。

似乎我唯一的选择是将密码存储为纯文本,或者使用可逆加密,但我并不特别喜欢这些想法中的任何一个。

这里有更好的解决方案吗?

0 投票
1 回答
1987 浏览

python - 在使用 mod_python 运行的脚本中使用 pam_python

我想开发一个 Web 界面,允许 Linux 系统的用户执行与其帐户相关的某些任务。我决定在 Apache 上使用 Python 和 mod_python 编写站点的后端。为了对用户进行身份验证,我想我可以使用python_pam来查询 PAM 服务。我修改了与模块捆绑在一起的示例并得到了这个:

我的问题是,无论我在简单脚本中还是通过 mod_python 使用它,这个函数的行为都不一样。为了说明这一点,我写了这些简单的案例:

脚本的结果是:

但是 mod_python 的结果是:

我不明白为什么在auth给定相同输入的情况下该函数不会返回相同的值。知道我哪里弄错了吗?是原始脚本,如果可以帮助您。

非常感谢 !

编辑:好吧,我发现了错误。我以root身份运行脚本。mod_python 以网络服务器的用户身份运行脚本。只有 root 有权读取影子。我不确定我将如何规避这一点,但至少现在我知道问题出在哪里!

0 投票
3 回答
3025 浏览

python - PAM 身份验证问题

我正在使用此模块使用 pam 进行身份验证: http ://code.google.com/p/web2py/source/browse/gluon/contrib/pam.py

我可以调用 authenticate('username','password') 并返回 True/False。它适用于除“root”以外的任何“用户名”。我的猜测是 PAM 中有一个安全限制,不允许检查 root 密码。

我需要能够检查root密码。我可以在 pam.conf 或其他地方更改什么以消除此限制吗?