SELinuxは公開鍵を介してSSHをブロックします。

SELinuxは公開鍵を介してSSHをブロックします。

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

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

このデフォルトのSELinux構成では、パスワードを使用してログインできることに注目する価値があります。$USERここで何が起こっているのか、SELinuxがこれを防止しない理由を理解したいと思います。 (この問題を解決した後、パスワード認証を完全に無効にする予定なので、この問題について知っていただき、さらに嬉しいです)

答え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.

scontextaudit2allowは、トラブルシューティングの方法を簡潔には示していませんが、およびを見ると、値がtcontext満足できない「authorized_keys」ファイルコンテキストを表示scontextしながら、必要なコンテキストを表します。tcontext

この場合、それ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

関連情報