使用不同 PAM 配置的多个 sshd 实例

使用不同 PAM 配置的多个 sshd 实例

我在不同的端口上设置了多个开放的 ssh 守护进程,并希望让它们使用不同的 PAM 配置文件。这可能吗?据我所知,PAM 从守护进程二进制文件中确定配置文件名 - 所以我需要重新编译我的 sshd 才能让它使用其他 PAM 配置文件?!

答案1

不幸的是,程序选择的服务名称是硬编码的。您很可能必须修改 sshd 源代码并重新编译。

他们这样做而不是直接传递 ARGV[0] 作为服务名称是出于安全原因。如果 pam.d/file 是根据 ARGV[0](程序名称)选择的,那么攻击者可能将该程序符号链接/硬链接/cp 到她选择的名称。在其关联的 pam.d/file 中限制最少的名称。

在源中搜索如下字符串:

int pam_start(

===================

更新:

auth-pam.h 显示服务名称设置为:

__progname

这意味着您可以只更改程序名称,它就会查找新名称的 pam 文件。这不是一个好的安全做法,我对此感到有点惊讶。也许有人知道一些我不知道的事情……因为 OpenBSD 的人比我聪明得多。:p

更新2:

通过从控制台执行以下操作,验证 PAM 服务名称是否设置为基本名称:

将 sshd 复制到 sshd2:

[root@cent ~]# cp /usr/sbin/sshd /usr/sbin/sshd2

停止当前的 sshd 并启动新的 sshd:

[root@cent ~]# /etc/init.d/sshd stop
[root@cent ~]# /usr/sbin/sshd2

在新的 sshd 上启动 strace 并尝试从另一台计算机进行 ssh 登录。

[root@cent ~]# strace -fp 5835 -e trace=open -o ssh_results&

查找哪个 pam 文件:

[root@cent ~]# grep -i pam.d ssh_results 
6116  open("/etc/pam.d/sshd2", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)

sshd2(基本名称)

相关内容