不特定多数にCGI実行可能な ディレクトリを提供する場合、デフォルトではnobody権限の動作となるためシステムに深刻なダメージを与える事は出来ませんが、悪意あるユーザー、又 はftp認証が盗聴された場合、nobody権限で動作する他のサービスへの攻撃が可能になってしまいます。
万が一そのような状況に陥った場合、システムに深刻なダメージを与えないためにnobody権限となっているわけですが、nobody全てがやられてしま います。
これを防ぐためには、それぞれの実行権限で動作させる suEXEC が必須となります。 不特定多数の外部のユーザーにCGI 実行可能ディレクトリを提供するのであれば必要ですが、サーバー管理者が確認し、設置行う場合は特に必要な機能ではありません。
つまり外部にCGI実行可能ディレクトリを認めない限り必ずしも必要な機能ではありません。
本家Apacheからソースをコンパイルする場合、デフォルトではsuEXECをサポートしません。コンパイルオプションが必要になります。ここではTurboLinuxの対応済みパッケージを使用しているため、ソースからのコンパイルについては触れていません。
TurboLinuxのsrc.rpmパッケージがsuEXECをサポートしていたため、これらを利用してみることにしました。suEXECは有効となっているもの利用可能な状態にはなっていません。
使用したパッケージ apache-1.3.27-13.src.rpm
rebuildし、生成されたrpmをアップデートしています。
TurboLinuxの場合は以下のディレクトリにrpmが生成されます。
/usr/src/turbo/RPMS/i386/
/usr/sbin/suexec が存在することを確認 します。
インストール直後は有効になっていません。以下のコマンドで確認します。
このように表示されたらApacheはsuEXECに対応しています。ですが有効になっていません。
パーミッションとオーナーを変更します。
Apacheを再起動後、再度確認
suEXECが有効になりました。
無効にする場合は、/user/sbin/suexec のパーミッションを全て読み込み不可にするか、名前を変えるなどし、httpdを再起動します。
以上でsuEXECの導入は終了です。cgiはそれぞれのユーザー権限で動作するようになります。が、これで「めでたしめでたし」という訳には行きません。