SELinux 使用 RSA 密钥阻止 ssh

Posted

技术标签:

【中文标题】SELinux 使用 RSA 密钥阻止 ssh【英文标题】:SELinux prevents ssh with RSA key 【发布时间】:2015-04-25 17:14:17 【问题描述】:

我忘记了我在其中一台 Web 服务器上启用了 SELinux。因此,当我使用我的用户帐户和 ssh 密钥登录主机时,我收到了权限被拒绝错误。

[TimothyDunphy@JEC206429674LM:~] #ssh bluethundr@web1.somedomain.com
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

嗯...所以我安慰到服务器并能够登录。我跟踪了审计日志,这就是我所看到的:

type=USER_LOGIN msg=audit(1429981690.809:394593): pid=17074 uid=0     auid=4294967295 ses=4294967295 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023     msg='op=login acct="bluethundr" exe="/usr/sbin/sshd" hostname=? addr=47.18.111.100 terminal=ssh res=failed'

在谷歌搜索这个问题的答案时,我得到了运行这个命令的建议:

[root@web1:~] #restorecon -R -v /home/bluethundr/.ssh
[root@web1:~] #

但是当我再次登录时,这样做之后,我得到了相同的结果。权限被拒绝并且日志中出现相同的错误。

我唯一能想到的另一件事是用户的主目录是从 NFS 共享挂载的。是否可以使用一些 SELinux 咒语来允许 SSH 连接到 NFS 共享上的主目录?

或者也许我错过了其他东西?

谢谢, 蒂姆

【问题讨论】:

【参考方案1】:

如果restorecon 不起作用,我通常会尝试audit2why 和/或audit2allow 来找出违反了什么政策。这并不是说我应用了生成的政策变更建议,只是它们为解决问题提供了非常好的信息。

【讨论】:

【参考方案2】:

宾果游戏!!

当我运行 audit2why -w 这是我看到的输出:

 [root@web1:~] #grep ssh /var/log/audit/audit.log | audit2why -w
 Was caused by:
    The boolean use_nfs_home_dirs was set incorrectly.
    Description:
    Allow use to nfs home dirs

    Allow access by executing:
    # setsebool -P use_nfs_home_dirs 1
    type=AVC msg=audit(1429983513.529:394784): avc:  denied   read  for  pid=19748 comm="sshd" name="authorized_keys" dev="0:40" ino=275968 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:nfs_t:s0 tclass=file

所以看起来我的预感是关于 NFS 以及您使用 audit2 的建议为什么允许我破案!

[TimothyDunphy@JEC206429674LM:~/creds] #ssh bluethundr@web1.jokefire.com
Last login: Sat Apr 25 13:41:02 2015 from ool-2f126f64.dyn.optonline.net
[bluethundr@web1 ~]$

砰!有用。感谢您的帮助!

【讨论】:

当然!作为形式问题,您应该将您如何解决问题的格式化内容放入您的问题中,任何特定的 cmets 反对答案,然后“接受”有效的答案。继续使用 SELinux,它对安全系统很重要! :)

以上是关于SELinux 使用 RSA 密钥阻止 ssh的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sha512 为 JWT 生成 RSA 密钥?

解决SELinux阻止Nginx访问服务

测试 EMV 卡的 RSA 密钥

Python使用rsa模块实现非对称加密与解密

尝试使用 RSA 解密时密钥不存在

在python中使用密码创建RSA密钥