
$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.
scontext
audit2allowは、トラブルシューティングの方法を簡潔には示していませんが、およびを見ると、値が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
。