但是如果您在/ etc / passwd中没有本地用户但是您可以获得主机/ XXXXXX服务票证(GSSAPI正常工作),则sshd无法登录并且永远不会获得SecurID的提示(我们的pam半径指向SecurID).我明白那个.由于服务器“已验证”用户和pam_unix知道用户不在/ etc / passwd中,因此无需使用任何其他auth方法.
但是,我的问题是为什么如果我第一次运行kdestroy(故意让GSSAPI失败),(并且仍然不存在于/ etc / passwd中)我是否突然得到一个Securid提示(即PAM参与)?
运行sshd与调试显示:推迟键盘交互为无效用户“用户”.首先,为什么它不会简单地失败?为什么延迟? pam_radius是’必需’,而不是’必需’.
我希望也会失败,因为即使我没有经过身份验证,我也永远不会超过pam_unix.
文件:
的/ etc / SSH / sshd_config中
.... ChallengeResponseAuthentication yes GSSAPIAuthentication yes HostbasedAuthentication no KerberosAuthentication no PasswordAuthentication no PubkeyAuthentication yes RhostsRSAAuthentication no RSAAuthentication yes UsePAM yes ....
上将/etc/pam.d/sshd
auth requisite pam_radius_auth.so conf=pam_radius_auth.conf debug retry=3 auth required pam_nologin.so auth required pam_krb5.so.1 account sufficient pam_radius_auth.so conf=pam_radius_auth.conf account required pam_stack.so service=system-auth password required pam_stack.so service=system-auth session required pam_stack.so service=system-auth session required pam_limits.so session optional pam_console.so
将/etc/pam.d/system-auth
auth required pam_env.so auth sufficient pam_krb5.so.1 auth sufficient pam_unix.so auth required pam_deny.so account required pam_unix.so password required pam_cracklib.so retry=3 password sufficient pam_unix.so use_authtok md5 shadow password required pam_deny.so session required pam_limits.so session required pam_unix.so
解决方法
GSSAPI身份验证有3种结果.
>身份验证失败,因为凭据已发送但凭据无效.
>使用提供的凭据验证成功.
>忽略身份验证,因为未提供凭据.
如果结果为1,则在发送令牌但是失败时,请求将被彻底拒绝. SSHD不会尝试其他身份验证方法.
如果结果为3,则sshd将接下来尝试其他身份验证方法,其中包括PAM身份验证部分.
我不熟悉pam_radius,但我认为无论用户是否因安全原因而存在,它都会请求身份验证令牌.让它失败会立即向用户/攻击者表明这样的用户不存在,因此从消除过程中您可以枚举用户.
至于“必需”选项,在堆栈设置中给出“必需”和“必需”具有相同的效果. pam_krb无法在没有有效用户的情况下请求票证,因此最终会立即失败.
对于给定的配置,pam_unix不用于身份验证而是授权,这是在身份验证之后发生的步骤.澄清;身份验证处理证明您就是您所说的人,而授权处理您具有正确的权限来执行您想要做的事情(在这种情况下是登录).