- CGI
- 2009-11-27 - 更新:2014-06-05
# OS: Red Hat Enterprise Linux 5
# perl: 5.8.5
# qmail: 1.03
# apache: 2.2.8
apacheはプリインストールのものを廃止し、別途ソースからインストール。
sendmailを廃止し、qmailを導入したところ、CGIからメールが送れないという現象が発生。
別のサーバー(CentOS)では同じCGIを実行しても正常に送信できる。
perlで文法を確認してもエラーはなし。
CGIからのメール送信を実行すると、auditからセキュリティの警告が発生。
auditからのメッセージ
audit (1259217229.577:0): avc: denied { execute } for pid=15250 exe=/usr/bin/perl name=sendmail dev=dm-0 ino=13893837 scontext=root:system_r:httpd_sys_script_t tcontext=root:object_r:var_t tclass=file
テスト用のCGIでチェックすると、sendmailはあるが、実行可能ではないと出る。
調査の結果、原因はSELinuxの設定により拒否されていることがわかった。
おそらく原因はディストリビューションに含まれないソフトウェアをカスタムにインストールしたからではないかと推測される。
【解決法】※セキュアかどうか不明のため暫定
GUI上でSELinuxのポリシー設定の
「Allow HTTPD cgi support」のチェックを解除し、再起動
するとCGIからメールが送れるようになった。
【以下、メモ】
設定ファイルに追加しようと思った
allow httpd_sys_script_t var_t:file {execute};
設定ファイルがあると思った場所(見たがなかった)
domains/program/*.te
設定を変更し、反映させる
/etc/selinux/strict/src/policy/以下でmake reloadを実行