多个使用不同PAMconfiguration的sshd实例

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

不幸的是,程序select的服务名称是硬编码的。 你很可能不得不修改sshd源文件并重新编译。

他们这样做的原因,而不是只传递ARGV [0]作为服务名称是出于安全原因。 如果根据ARGV [0](程序名)select了pam.d /文件,则攻击者可能会将该程序的符号链接/硬链接/ cp文件命名为她select的名称。 在关联的pam.d /文件中具有最小限制的一个。

在源文件中searchstring,例如:

int pam_start( 

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

更新:

auth-pam.h显示servicename设置为:

 __progname 

这意味着你可以改变程序名,它会寻找一个新名字的pam文件。 这不是一个很好的安全措施,我对此感到有些吃惊。 也许有人知道我不会…因为OpenBSD家伙比我自己更聪明。 :p

更新2:

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

cp sshd到sshd2:

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

停止当前sshd并启动新的:

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

在新的sshd上启动strace并尝试从另一个comp进行sshlogin。

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

find哪个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(basename)