Ssh

嘗試通過 xinetd 執行 sshd 的 RHEL7 selinux 問題 - sshd_net_t 轉換導致登錄失敗

  • November 22, 2017

我正在嘗試將 sshd 設置為在 RHEL7 伺服器上的 xinetd 下執行。我在備用埠上執行 sshd,使用 xinetd 來限制可以連接的 IP。

如果我禁用 SELinux,這在 RHEL6 和 RHEL7 上都可以正常工作。但是,RHEL7 上的目標 SELinux 策略正在阻止它。

不幸的是,當它失敗時,它在 /var/log/audit 中並沒有多大用處。我的連接嘗試產生了兩行成功的 CRYPTO_KEY_USER 操作,然後是這個(單行,我已經包裝了):

type=USER_LOGIN msg=audit(1485378997.248:18523): pid=6812 uid=0 
auid=4294967295 ses=4294967295 
subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 
msg='op=login acct="(unknown)" exe="/usr/sbin/sshd" 
hostname=? addr=A.B.C.D terminal=ssh res=failed'

audit2why甚至不承認存在問題。我猜它正在尋找 DENY 事件或類似的東西,而不是失敗。

我將調試日誌添加到 sshd 並找到了這個(這次沒有包裝):

debug1: SELinux support enabled [preauth]
debug3: ssh_selinux_change_context: setting context from 'system_u:system_r:sshd_t:s0-s0:c0.c1023' to 'system_u:system_r:sshd_net_t:s0-s0:c0.c1023' [preauth]
debug3: privsep user:group 74:74 [preauth]
debug1: permanently_set_uid: 74/74 [preauth]
debug1: list_hostkey_types: ssh-rsa [preauth]
debug1: SSH2_MSG_KEXINIT sent [preauth]
Write failed: Permission denied [preauth]

我想這是我的問題 - 從 sshd_t 到 sshd_net_t 的轉換。然而,在沒有任何來自審計日誌的有用資訊的情況下,我已經達到了我的 SElinux 調試技能的極限。

一位同事建議我在許可模式下查看成功連接的審核日誌。不幸的是,沒有提到 sshd_net_t 的成功操作。以下是相關的日誌條目: http: //pastebin.com/raw/9sSVpgLq

我確實在 redhat bug tracker 上看到了一些相關資訊,但它並沒有讓我對解決方案走得太遠。https://bugzilla.redhat.com/show_bug.cgi?id=1008580

事實證明,某些 SELinux 規則預設情況下不會被審計。跑步:

semanage dontaudit off

即使在策略中的“dontaudit”規則上也啟用審計日誌記錄。

一旦我這樣做了,就很容易找到失去的 SELinux 權限(它們是allow sshd_net_t inetd_t:tcp_socket (read|write);)。

引用自:https://serverfault.com/questions/828642