SELinux が公開鍵経由の SSH を阻止する

SELinux が公開鍵経由の SSH を阻止する

承認されたユーザー ファイルを持つシステム ユーザー アカウントであるユーザーがいます$USER。SELinux を有効にすると、公開キーを使用してサーバーに ssh で接続できなくなります。 するとsetenabled 0$USERログインできるようになります。

SELinux を完全に無効にせずにこの動作を修正するには、どの SELinux ブール値/ポリシーを変更する必要がありますか?

このデフォルトの SELinux 構成ではパスワードでログインできることは注目に値します。ここで何が起こっているのか、なぜ SELinux がそれをブロックしないのか、少し教えていただければ幸いです$USER。(この問題が解決したらパスワード認証を完全に無効にするつもりなので、この質問は知っておくともっとありがたいです)

答え1

~/.ssh/*のファイルシステムの権限が正しいと仮定して、次の出力を確認します。

sealert -a /var/log/audit/audit.log

そこに AVC エントリに手がかりがあるはずです。おそらく解決策は以下を実行することになるでしょう:

restorecon -R -v ~/.ssh

答え2

sealert私が最近遭遇したシステムのように、システムが欠落している場合は、次の可能性もありますaudit2allow:

$ sudo audit2allow -w -a
type=AVC msg=audit(1548909218.552:1037): avc:  denied  { read } for  pid=13996 comm="sshd" name="authorized_keys" dev="dm-0" ino=4663556 scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:admin_home_t:s0 tclass=file
    Was caused by:
            Missing type enforcement (TE) allow rule.

            You can use audit2allow to generate a loadable module to allow this access.

AVC の詳細:

avc: denied { read } for pid=13996 comm="sshd" name="authorized_keys" dev="dm-0" ino=4663556
    "sshd" was denied read on a file resource named "authorized_keys".
scontext=system_u:system_r:sshd_t:s0-s0:c0.c1023
    SELinux context of the sshd process that attempted the denied action.
tcontext=system_u:object_r:admin_home_t:s0 tclass=file
    SELinux context of the authorized_keys file.

Audit2allow は問題の解決方法を簡潔に説明していませんが、 と を見るscontexttcontext、 のscontext値は必要なコンテキストを示しており、 はtcontext不十分な「authorized_keys」ファイル コンテキストを示しています。

この場合、restorecon -R -v ~/.ssh単独では機能しませんでしたが、目的のコンテキストを適用すると機能しました。

$ sudo semanage fcontext --add -t ssh_home_t "/path/to/my/.ssh(/.*)?"; \
$ sudo restorecon -FRv /path/to/my/.ssh

必要に応じて、AVC に表示される内容に基づいてリソース名やコンテキストを変更します。この回答の正確な詳細は、「authorized_keys」に関連する問題を解決するために作成されましたが、sealertまたはによって生成された AVC で異なるファイルまたはコンテキストが示されている場合でも、このモデルに従うソリューションが可能ですaudit2allow

関連情報