SELinux:プロセスがディレクトリにすべてのファイルを生成できるようにする

SELinux:プロセスがディレクトリにすべてのファイルを生成できるようにする

dmesg呼び出されると、その内容がファイルに書き込まれ、ファイル名はデフォルトでタイムスタンプであるスクリプトがあります。 SELinuxはこれを防ぎます。 FedoraのSELinuxトラブルシューティングアプリの提案に従って、次のことを試しました。

grep dmesg /var/log/audit/audit.log | grep dmesg /var/log/audit/audit.log audit2allow-M mypol

semodule -i mypol.pp

しかし、これはうまくいかないようです。それはおそらく、作成されたファイルが毎回異なる名前を持つからです。それでは、SELinuxがdmesgディレクトリにすべてのファイルを作成(および記録)できるようにするにはどうすればよいですか?それとも、問題のスクリプト(およびそれが生成するすべてのプロセス)がこれを実行できると言いますか?

ベストアンサー1

AVC拒否をフィルタリングする方法と、特定のアクション(この場合はスクリプト)へのアクセスを許可するカスタムポリシーモジュールを作成する方法を理解する必要があります。

まず、上に挿入されたモジュールを取り外して新しいモジュールを起動します。

# semodule -r mymodule.pp

次にスクリプトを実行します。

# date && ./my_script.sh

このdate呼び出しは、タイムスタンプに基づいてAVC拒否をフィルタリングするのに役立ちます。

次に、AVC拒否をデバッグする一般的な方法を使用します。つまり、次のコマンドを使用しますausearch(8)

# ausearch -m avc -ts $timestamp | audit2allow

-ts利用可能なスイッチ(特にフラグ)の詳細については、マンページを参照してください。

この情報により、既存のポリシーに基づいてどのコンテンツが拒否されるかを確認できます。

これで、このアクセス権を付与するかどうかを決定する必要があります。アクセス権を与えるとしましょう。付与するアクセス権を定義するルールを説明するカスタムポリシーモジュールを作成する必要があります。スクリプトの複雑さに応じて、これはやや簡単です。

# ausearch -m avc -ts 10:40:00 | audit2allow -m my_script > my_script.te

これで説明が生成されますtype enforcement

引き続きコードを確認して精度を確認し、type enforcement次のようにコードをコンパイルする必要がありますmodule

# checkmodule -M -m -o my_script.mod my_script.te

モジュールは、policy package自由にロードおよびアンロードできるようにパッケージにパッケージ化する必要があります。

# semodule_package -o my_script.pp -m my_script.mod

これで、次を使用してポリシーをロードできます。

# semodule -i my_script.pp

正しくロードされていることを確認してください。

# semodule -l | grep my_script

その後、拒否を再度トリガーし、同じプロセスの監査ログにさらに(他の)警告があることを確認します.

コードの追加バージョンをtype enforcement更新する必要がありますversion()。それ以外の場合、パッケージのロードは失敗します。1.0コンパイルとパッケージングの後、アップデートpolicy packageは完了です。

# semodule -u my_script.pp

SELinuxを起動するときに学ぶことがたくさんあります。いくつかの便利な参考資料:

  • コマンドのマンページです。
  • また、出力を確認してくださいapropos selinux

RHELドキュメントから

Dave Quigleyは次のような素晴らしい紹介講演をしました。

おすすめ記事