
承認されたユーザー ファイルを持つシステム ユーザー アカウントであるユーザーがいます$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 は問題の解決方法を簡潔に説明していませんが、 と を見るscontext
とtcontext
、 の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
。