snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

SELinux で CGI から外部ネットワークへの通信を許可する

httpd_can_network_connect が off だと httpd と CGI は外部のネットワークと通信できない。
# /usr/sbin/getsebool httpd_can_network_connect
httpd_can_network_connect --> off
httpd_can_network_connect に 1 を設定すると許可される。
# /usr/sbin/setsebool -P httpd_can_network_connect 1
# /usr/sbin/getsebool httpd_can_network_connect
httpd_can_network_connect --> on
環境: CentOS 5.2
スポンサーサイト

SELinux で Apache の CGI から DB に接続可能にする

SELinux が有効な CentOS 5.2 + Apache 2.2.3 + PostgreSQL 8.1 + Perl 5.8

この環境で CGI の Perl スクリプトから DBD::Pg 経由で PostgreSQL に connect しようとしたらエラーになった。 どうやら標準では許可されてないらしい。
# /usr/sbin/getsebool -a | grep -i db
   :
httpd_can_network_connect_db --> off

なので、以下の様にして有効にする。
# /usr/sbin/setsebool -P httpd_can_network_connect_db 1

chroot した bind の syslog 出力を SELinux で許可

syslogd のオプションに -a /var/named/chroot/dev/log を追加したら /var/log/message に以下のログが出たので、audit2allow を用いて SELinux のポリシーを変更する。

Jul 23 00:20:56 delany kernel: audit(1153581656.851:2): avc:  denied  { search }
 for  pid=3201 comm="syslogd" name="named" dev=hda5 ino=676501 scontext=root:sys
tem_r:syslogd_t tcontext=system_u:object_r:named_zone_t tclass=dir

OS は CentOS 4.3 。 targeted ポリシーなので selinux-policy-targeted-sources パッケージをインストールしておく。

まず、permissive モードにする。

# setenforce permissive
syslogd を起動、停止する。 この操作で SELinux のポリシーに引っかかってエラーログが出ているはず。
# /sbin/service syslog start
# /sbin/service syslog stop
enforcing モードに戻す。
# setenforce enforcing
以下のように実行すると直近の permissive モードにして以降のエラーログから このエラーが出なくなるための設定を出力してくれる。
# audit2allow -d -l
allow syslogd_t named_conf_t:dir { add_name remove_name search write };
allow syslogd_t named_conf_t:sock_file { create setattr unlink };
allow syslogd_t named_zone_t:dir search;
出力された設定内容を syslogd.te ファイルの末尾に追記する。
# cd /etc/selinux/targeted/src/policy/domains/program
# vi syslogd.te
ポリシーをアップデートする。
# cd /etc/selinux/targeted/src/policy
# make reload
これで以下の様に syslogd が UNIX ドメイン・ソケットを作成する事が出来る様になった。
# ls -Z /var/named/chroot/dev/log
srw-rw-rw-  root     root     user_u:object_r:named_conf_t     log
とか書いてるが、SELinux についてまったくの勉強不足で、 audit2allow が出力した設定の意味をあまり理解していない。 これだと syslogd が bind の設定ファイルをいじれる事にしてるんじゃないだろうか。

Top

HOME

snbhsmt

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。