我在不同的端口上设置了多个打开的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)