web-dev-qa-db-ja.com

SELinuxが公開鍵を介してsshを防ぐ

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

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

$USERこのデフォルトのSELinux構成ではパスワードでログインできます。ここで何が起こっているのか、なぜSELinuxがそれをブロックしていないのかについての洞察をいただければ幸いです。 (これが解決された後は、パスワード認証を完全に無効にするので、この質問はよりわかりやすくなっています)

6
Colton

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

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

そこのAVCエントリに手掛かりがあるはずです。最も可能性の高い解決策は、実行に要約されます。

restorecon -R -v ~/.ssh
6
dartonw

システムで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.

さらに、この場合、restorecon -R -v ~/.ssh自体は機能しませんでしたが、次のように機能しました。

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