bea*_*mit 8 security authentication pam
我正在编写自己的 PAM 模块,它将成为我正在开发的应用程序的一部分,但我不确定将它放在哪里。我的模块基本上执行类似于 LDAP 的网络级身份验证(当然还有其他 mojo)。
我的/etc/pam.d/目录中有很多配置文件,我知道大多数服务的作用(除了一些服务,比如 atd、polkit、ppp)。我假设使用 PAM 堆栈进行身份验证是这样的:
我在这个假设中正确吗? 是否所有平台都有 common-auth、common-account、common-password 和 common-session?
如果是这样,我正在考虑将它作为sufficient模块放在common-* 的顶部,以便在失败时常规 PAM 堆栈不受影响。这是特别有利的,因为我可以在软件安装时以编程方式执行此操作。
我是否遗漏了任何潜在的安全漏洞?
我找不到关于在哪里集成自定义 PAM 模块或围绕模块放置位置的安全问题的很好的文档。
当您调用 Linux-PAM 进行某些身份验证过程时,始终只有一个堆栈在运行。
在这些地方查找堆栈定义;第一次成功尝试确定读取哪个文件:
/etc/pam.d以应用程序“服务名称”命名的文件(例如,sshd或gdm),或
/etc/pam.d/other如果不存在特定于服务的文件,则该文件,或
/etc/pam.conf如果目录/etc/pam.d不存在,则该文件。
有关详细信息,请参阅函数pam_start的文档。
common-* 文件是许多 Linux 发行版遵循的约定,但不是 PAM 软件本身强制要求的。它们通常通过@include
语句被其他 PAM 文件包含;例如/etc/pam.d/otherDebian 上的文件具有以下内容:
# We fall back to the system default in /etc/pam.d/common-*
@include common-auth
@include common-account
@include common-password
@include common-session
Run Code Online (Sandbox Code Playgroud)
@include特定于服务的文件也可以使用相同的语句,并且-确实-它们在 Debian 上的默认配置中。请注意,这是配置问题:系统管理员可以随意更改文件,/etc/pam.d根本不包含任何 common-* 文件!
因此:如果您的 PAM 模块特定于您的应用程序,请创建一个特定于应用程序的服务文件并从那里调用该模块。千万不能自动添加一个模块,其他服务PAM文件,也没有向回退others的文件,因为这可能会破坏系统上安装的其他应用程序。PAM 软件堆栈的管理是系统管理员的任务,而不是应用程序开发人员的任务。
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |