CentOS 7: SELinux ルールのネスト

CentOS 7: SELinux ルールのネスト

だから、私は.sshファイルにはssh_home_tファイルコンテキストが必要であることがわかった今度は、SELinux ルールをネストする方法を理解する必要があります。

最初の問題は、SELinux ファイル コンテキストの目的が何であるかを説明するリストが見つからないことです。したがって、ここでは私の考えが間違っている可能性があります。次の 3 つのことを順番に実行する必要があると思います。

  1. /exports/home/$USER一致するすべてのディレクトリを設定するnfs_t それなしまた、 の下にあるサブディレクトリにも一致します$USER。これにより、NFS サーバーにホーム ディレクトリを合法的にエクスポートできることが通知されます。
  2. 一致するものをすべて/exports/home/$USER/.*何かに設定しますか? この場合、説明付きの包括的なリストが役立ちます。 SELinux には、通常、ユーザーのホーム ディレクトリ内のファイルを指定するファイル コンテキストがありますか?
  3. すべてを一致させる/exports/home/$USER/\.ssh(/.*) のみssh_home_t、SSHD が の使用を許可できるようにしますauthorized_keys

NFSサーバーから3つのルールすべてを呼び出す必要があります。そして、2番目と3番目のルールを呼び出す必要があります。個人ユーザーとしてホーム ディレクトリをマウントしているどのホストからでも、その個々のユーザーのファイルに対して。当然ながら、これらのホーム ディレクトリのいずれかをマウントしているどのホストでも、root 権限を奪取したいと考えているからです。ユーザーは、NFS サーバーではないホストから、ssh ファイルを含むファイルを作成する可能性が最も高いです。


アップデート

適切なファイル コンテキストがわかったと思います。次に必要なのは、適切な正規表現を見つけることだけです。

# semanage fcontext -a nfs_t '<regexp 1>'

# semanage fcontext -a user_home_t '<regexp 2>'

# semanage fcontext -a ssh_home_t '<regexp 3>'

どこ

  • <regexp 1>引っかかって/exports/home/$USERそれ以上進みません。
  • <regexp 2>キャッチ/exports/home/$USER\.* を除いて exports/home/$USER/\.ssh(/.*)?
  • <regexp 3>キャッチしますexports/home/$USER/\.ssh(/.*)?

文字$USER列に依存しない(つまり、どのユーザーでも)POSIX 拡張正規表現許可されていないようです。

答え1

簡単で、額をたたきながら答えるなら:

SELinux にはすでに `/export/home/* のデフォルト ルールがあります。"s" を削除するだけで修正されました。

関連情報