StackOverflowの question の行と、ここにいる完全に異なる群衆の中で、私は疑問に思います:SELinuxを無効にする理由は何ですか(ほとんどの人がまだそうしていると仮定します)?有効のままにしますか? SELinuxをオンのままにしたことで、どのような異常が発生しましたか? Oracleとは別に、SELinuxが有効になっているシステムをサポートしている他のベンダーがいますか?
おまけの質問:誰かがOracleをRHEL5上でSELinuxを使用してターゲットモードを強制するように実行できましたか?つまり、strictはすばらしいと思いますが、まだリモートでの可能性はまだないので、最初に対象を絞ってください;-)
RedHatはより安全であるため、デフォルトでSELinuxをオンにします。 Redhatから派生した製品を使用するほぼすべてのベンダーがSELinuxをオンにしますoff時間(つまりお金)を費やす必要がないので、なぜうまくいかないのかを理解する必要はありません。 Redhat/Fedoraの人々は膨大な時間と労力を費やしてSELinuxをエンタープライズで実行可能なオプションにしていますが、他の多くの組織はyourセキュリティに本当に気を配っていません。 (彼らはtheirセキュリティと製品のセキュリティの評判を気にしますが、これはまったく別のものです。)
あなたがそれを機能させることができるならば、それからそれのために行ってください。できない場合は、そこにいるベンダーからの多くの支援を期待しないでください。おそらくRedhat/Fedoraの人たち、selinuxメーリングリスト、freenodeの#selinuxチャネルから助けを得ることができます。しかし、Oracleのような企業の場合、まあ、SELinuxは実際には彼らのビジネス計画を考慮に入れていません。
通常、SELinuxを完全に無効にするよりも、PermissiveでSELinuxを実行した方がよいでしょう。その後、しばらくしてから(audit2why
を介して)、通常の使用中に拒否された違反の種類を確認し、audit2allow
を介してカスタムポリシーを作成できます(それらの「違反」が偽陽性である場合)あなたのセットアップ。
非Fedora派生システムでのSELinuxの動作は、デフォルトの典型的なFedora/RHELシステムで得られるものよりもかなり扱いにくいことがわかりました。
まだご覧になっていない場合は、 Fedora SELinuxユーザーガイド を参考にしてください。
の理由:
反対の理由:
とはいえ、SELinuxを検討している場合は、本 SELinux by Example をお勧めします。
私はすべてのシステムで、強制モードでSELinuxを有効にした company で働いていました。私たちの鍵は、新しいコンテキストルールの作成に使用できるaudit2allowプログラムを理解して使用することでした。
最初に、audit2allowを使用してテンプレートを生成し、次のようにスクリプトを使用してそれを構築します。
export NAME="my_serviced"
Sudo audit2allow -m "${NAME}" -i /var/log/audit/audit.log > ${NAME}.te
Sudo setup_semodule ${NAME}
Setup_semoduleスクリプト:
#!/bin/sh
# Where to store selinux related files
SOURCE=/etc/selinux/local
BUILD=/etc/selinux/local
NAME=$1
/usr/bin/checkmodule -M -m -o ${BUILD}/${NAME}.mod ${SOURCE}/${NAME}.te
/usr/bin/semodule_package -o ${BUILD}/${NAME}.pp -m ${BUILD}/${NAME}.mod
/usr/sbin/semodule -i ${BUILD}/${NAME}.pp
/bin/rm ${BUILD}/${NAME}.mod ${BUILD}/${NAME}.pp
これにより、テンプレート(.teファイル)からモジュールが構築され、パッケージが生成されて、モジュールが読み込まれます。
構成管理システムにはPuppetを使用し、これらすべてを管理するためにPuppetの構成を作成しました。
SELinux Puppetモジュール:
オフにする理由は、デバッグが面倒になる可能性があるためです。
ただし、現在はオフにしていません。ほとんどいつもそれを動かし続けます。 SElinuxに問題があるかどうかをすばやく確認するために、時々それをオフにします。
特にaudit2allowを使い慣れている場合は、デバッグがはるかに簡単になりました。 audit2allowを使用してそれを実際に理解する必要はありませんが、audit2allowを使用した場合よりも、シンが大きくなる場合があります。一部のSELinuxはどれよりも優れていると言いました。
私は決してSELinuxの専門家ではなく、数年しか使用していません。私はまだ基本を本当に理解していませんが、アプリを実行するのに十分な知識があります。ディストリビューションに含まれているものや、ネットのランダムなものをコンパイルしたものです。
私が使用しなければならなかった主なものはls -lZ
(selinuxコンテキストを表示)、audit2allow
、chcon
、semodule
、getenforce
、setenforce
およびブール値。これらのツールを使用して、SELinuxで実行するために必要なすべてのアプリを取得できました。
私は、SELinuxの問題のデバッグに関する彼の大きな問題の1つを見つけました。私が他の賢明な不可解な問題を抱えているときに、SELinuxの問題をチェックすることを覚えているだけです。通常、「h!SELinuxをチェック!!」に行くのに少し時間がかかります。
Bindのmanページによると、SELinuxはchroot jailでbindを実行するよりもはるかに安全です。私が推奨するよりもはるかに多くの手がかりを持っている他の多くの人々が今は盲目的に実行しています。そして時折の問題にもかかわらず、それはおそらく価値があると疑っています。
AppArmor でSELinuxを無効にしましたが、SELinuxよりもはるかに使いやすく、メンテナンスも簡単です。
Permissiveモードで実行できる場合は、オフにする必要はありません。実行中のアプリケーションに干渉せず、有用なセキュリティログを提供します。唯一の例外は、ユーザーコンテキストに関するものです。chrootで実行されている別のLinuxインスタンス内に住む異なるユーザー間で変更する場合は、問題が発生する可能性があります。
SE Linuxは以前ほど絶望的ではありません。少なくとも、RHEL5のような商用サポートされているディストリビューションにはありません。ほとんどの場合はそのままにしておくことができ、RedHatが提供するものなら何でも問題ありません。それ以外のものは可変です。問題は、SE Linuxを有効にしてアプリケーションを動作させるための専門的なサービス作業がRedHatやOracleなどの企業にとって素晴らしい収入源であるため、すべてをうまく機能させるインセンティブがないということです。