web-dev-qa-db-ja.com

Fedora 14でのみApache httpdのSELinuxを無効にする方法は?

次のように このリンク Fedora 14からSELinuxを完全にオフにすることができますが、httpdデーモンに対してのみSELinuxを無効にするにはどうすればよいのでしょうか。 system-config-selinuxをインストールしていません。会社のファイアウォールポリシーにより、パッケージをインストールするには、 pkgs.org からRPMを検索する必要があります。これを整理する方法はありますか?

編集:

Summary:

SELinux is preventing /opt/ibm/cognos/c10/cgi-bin/cognos.cgi "execute" access to
/opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so.

Detailed Description:

SELinux denied access requested by /opt/ibm/cognos/c10/cgi-bin/cognos.cgi.
/opt/ibm/cognos/c10/cgi-bin/cognos.cgi is mislabeled.
/opt/ibm/cognos/c10/cgi-bin/cognos.cgi default SELinux type is bin_t, but its
current type is bin_t. Changing this file back to the default type, may fix your
problem.

If you believe this is a bug, please file a bug report against this package.

Allowing Access:

You can restore the default system context to this file by executing the
restorecon command. restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'.

Fix Command:

/sbin/restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'

Additional Information:

Source Context                unconfined_u:system_r:httpd_t:s0
Target Context                unconfined_u:object_r:usr_t:s0
Target Objects                /opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so [
                              file ]
Source                        cognos.cgi
Source Path                   /opt/ibm/cognos/c10/cgi-bin/cognos.cgi
Port                          <Unknown>
Host                          mm2Fedora.syd.cog
Source RPM Packages           
Target RPM Packages           
Policy RPM                    selinux-policy-3.9.7-3.fc14
Selinux Enabled               True
Policy Type                   targeted
Enforcing Mode                Enforcing
Plugin Name                   restore_source_context
Host Name                     mm2Fedora.syd.cog
Platform                      Linux mm2Fedora.syd.cog 2.6.35.6-45.fc14.i686 #1
                              SMP Mon Oct 18 23:56:17 UTC 2010 i686 i686
Alert Count                   18
First Seen                    Fri 15 Apr 2011 02:12:44 PM EST
Last Seen                     Fri 15 Apr 2011 02:33:11 PM EST
Local ID                      409e250f-049f-49c0-89f6-7155e4643868
Line Numbers                  

Raw Audit Messages            

node=mm2Fedora.syd.cog type=AVC msg=audit(1302841991.999:22392): avc:  denied  { execute } for  pid=28242 comm="cognos.cgi" path="/opt/ibm/cognos/c10/cgi-bin/libIBJStreamsDLL.so" dev=dm-0 ino=138263 scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:usr_t:s0 tclass=file

node=mm2Fedora.syd.cog type=SYSCALL msg=audit(1302841991.999:22392): Arch=40000003 syscall=192 success=no exit=-13 a0=0 a1=1bc08 a2=5 a3=802 items=0 ppid=27923 pid=28242 auid=500 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="cognos.cgi" exe="/opt/ibm/cognos/c10/cgi-bin/cognos.cgi" subj=unconfined_u:system_r:httpd_t:s0 key=(null)

助言されたように、提案された修正コマンドを実行します:/sbin/restorecon '/opt/ibm/cognos/c10/cgi-bin/cognos.cgi'何度も、残念ながら。 SELinuxを完全に無効にすることで、このWebアプリが機能することを確認できます。私は現在、このトピックについて自分で調査しています。SELinuxをグローバルに有効にして、httpdに対してのみ無効にする方法が好きです。最善のアプローチである必要はありませんが、これは私と私のチームにとっては問題ないテストケースにすぎません。

私がFedora 13から得たヒント SELinux FAQはここにあります なので、私はsystem-config-selinuxに方法があると個人的に信じています。詳細は分かりません。 ...

4
Michael Mao

私の以前のコメントを回答に、人気の需要に変換する;)

You-learn-something-everyday部門から:ダンウォルシュが昨日プレゼンテーションをするのを見ました。そこで彼は、FedoraとEL6の新しいリリースでアプリケーションの制限を無効にする新しい方法を説明しました。遷移を無効にするようにブール値を設定することはありません(すべてを機能させるために設定する必要があるブール値のカスケードが発生する場合があります)が、特定のタイプを許可モードにします。これを行うには、「semanage permissive -a TYPE」コマンドを実行します(この場合、「semanage permissive -a httpd_t」)。これにより、httpd_tのSELinuxはオンのままになりますが、許容モードになります。 – wzzrd 5月20日、2011年5月20日8:45

3
wzzrd

Fedora 14の場合、el6と同様に、次のコマンドを実行することで、http SELinuxモジュールをアンロードできると思います

semodule -r httpd

おそらく、httpdをinitrc_tまたはunconfined_tとして実行します。

これがF14で機能しない場合は、次のようにSELinuxブール値(el5からの「古い」方法)をオフにできます。

setsebool httpd_disable_trans 1

そして使う

setsebool -P httpd_disable_trans 1

恒久的にする

3
wzzrd

質問は完全に明確ではありません-あなたの意図は正確に何ですか?
Selinux自体の代わりにファイアウォールを使用するため、HTTPポートを開こうとしているのではないと想定します。
では、httpdデーモンに通常のドキュメントルートの下にないディレクトリへの書き込みを許可したいとお考えですか?
その場合、Selinuxの権限を確認し、アクセスするディレクトリに設定する必要があります。
ここにそれについて読む場所があります:
http://wiki.centos.org/HowTos/SELinux

FedoraとCentosの両方がRed Hatに関連しているため、これは重要です。

[編集]
これを試してください:
chcon -t textrel_shlib_t ThePathToTheFile

それはこの投稿でPabloTwoによって提案されました:
http://www.fedoraforum.org/forum/showthread.php?t=252552

これは、この投稿でもIBMによって提案されました。
https://www-304.ibm.com/support/docview.wss?uid=swg2145455

1
Beel

単一のサービスでどのようにSELinuxをオフにするのかわかりません-できないと思います。

しかし、実行できることは、runco​​nを使用して、Apacheプロセスを制約のないコンテキストで実行するように設定することです。

Runco​​nは、selinuxのsudoersと考えることができます。プロセスを実行するコンテキストを指定できます。

次のようなものを追加して、Apache起動スクリプトを変更する必要があります。

runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

実際にApacheを呼び出すhttpd起動スクリプトの部分。

私のFedora FC14ホストでは、次の行を変更します。

LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS

次のようなものを読むには:

LANG=$HTTPD_LANG daemon --pidfile=${pidfile} runcon unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 $httpd $OPTIONS

PS私は実際にこれをApache起動スクリプトでテストしていません。したがって、上記は正確にどこに配置する必要があるかについての推測ですが、runco​​nを使用して、プロセスを以前に制約なしで実行できるようにしたので、動作します、あなたはちょうど正しい場所を見つける必要があります。

1
Jason Tan

HttpdのSELinuxをグローバルに無効にするブール値はありません。そうは言っても、使用する必要のある関連ファイルのコンテキストについては、httpd_selinux(8)のマニュアルページをお読みください。あなたの場合あなたが欲しいhttpd_sys_script_exec_tまたはhttpd_unconfined_script_exec_t、およびchconを使用して一時的にテストに設定し、semanageを使用して永続的に設定できます。

GBrowse2を使用していたときにも同じ問題がありました。 GBrowse2は一時ファイルをウェブルート以外の場所に保存し、ウェブルート外のセッションにロックを設定します。 GBrowse2はApacheで実行されるため、SELinux dintを使用すると、httpdがwebroot外のディレクトリにアクセス/変更できます。私は前の投稿で提供されたリンクをたどりました:

"ここにそれを読む場所があります: http://wiki.centos.org/HowTos/SELinux "

問題をどのように解決するかについての完全な指示はありませんが、それは私を大いに助けました(セクション4:SELinuxアクセス制御)。 SELinuxがwebrootファイルと非webrootファイルをどのように区別するかについてのアイデアを与えてくれました。非webrootフォルダー/ファイルのタイプを、httpdプロセスタイプと互換性のあるタイプに変更する必要があります。このタイプは、SELinuxエラーの詳細で提供されるコマンド(semanageおよびrestoreconコマンド)を使用して設定できます。非Webルートフォルダーのタイプを修正した後、GBrowse2はタイプが変更された非Webルートフォルダーに新しいファイルをスムーズに作成できました。

1
Ravi Patel