apache-1.3.29 インストールメモ #--------------------------------------------------------------------------------------------- # apache 概要 #--------------------------------------------------------------------------------------------- apache は現在Linux の世界ではディファクトスタンダートとなっているウェブサーバーです。apache-1.3系とapache-2.x 系がありますが、PHP と組み合わせて使う場合はapache-1.3 系を使用した方が安定面では良いでしょう。また、apache-2.x 系にはまだまだセキュリティー的問題が日々発見されており、安定しているとは到底思えません。以降、apache-1.3.x の安定版である”apache-1.3.29”についてのインストール、及び、各モジュールのインストール方法をご紹介します。 #--------------------------------------------------------------------------------------------- # apache のインストール方法 #--------------------------------------------------------------------------------------------- pache-1.3.29 のソースをインターネットよりダウンロード後、ソースを解凍します。 # su root # cd /usr/local/src/ # wget http://ring.asahi-net.or.jp/archives/net/apache/dist/httpd/apache_1.3.29.tar.gz # tar zxvf apache_1.3.29.tar.gz apache-1.3.29 を解凍後、ディレクトリに入りインストール作業を行います。この際、セキュリティー対策として、apache をsuEXEC 仕様で、さらにバーチャル仕様でコンパイルします。 バーチャル環境は以下を想定しています。 ・バーチャルドメインごとのディレクトリは全て「/home」以下に構築する ・バーチャルドメインごとに付与するユーザーID は2000 番以上とする ・バーチャルドメインごとに付与するグループID は2000 番とする suEXEC 環境は以下を想定しています。 ・CGI はユーザーID 2000 番以上のユーザーのみが実行することができる ・CGI はグループID 2000 番以上のユーザーのみが実行することができる ・CGI を起動するユーザー(apache ユーザー) は”nobody”とする ・CGI を利用できる領域を「/home」以下のみとする(バーチャル環境を/home/ 以下に構築するため) # cd ./apache_1.3.29/ # ./configure --enable-shared=max --enable-module=so --enable-suexec \ # --suexec-caller=nobody --suexec-docroot=/home/ --suexec-uidmin=2000 --suexec-gidmin=2000 # make # make install ※ 注意 ) バーチャル対応されたapache を構築する時は、suEXEC の”--suexec-userdir=”オプションはつける必要がありません。 suEXEC Wrapper がユーザID を設定するために、所有者”root”でのセットユーザIDビットをそのファイルのモードに設定しなければなりません。 # cd /usr/local/apache/bin # chown +t ./suexec バーチャル環境を「/home」以下に作成します。基本的に「/home」以下に各バーチャルドメインに対応するディレクトリを作成します。バーチャルドメインに対応するディレクトリ直下は一般ユーザーに公開する領域ですので、ウェブ以外にも様々なディレクトリを作成するかもしれません。これを考慮して、ウェブに関するディレクトリは全て「/webroot」ディレクトリにまとめることとします。 # cd /home/ # mkdir ./user01/ # mkdir ./user01/webroot/ # mkdir ./user01/webroot/htdocs/ # mkdir ./user01/webroot/logs/ また、apache をsuEXEC コンパイルしてあるので、「/user**」ディレクトリのUID/GID 及び権限は次のようにします。 UID | 2000 からのユーザーごとUID GID | 2000 権限 | 705 最後に、apache をスタートさせます。 # /usr/local/apache/bin/apachectl start #--------------------------------------------------------------------------------------------- # suEXEC について #--------------------------------------------------------------------------------------------- 概要: suEXEC は、configure オプションでコンパイルされるapache コンポーネントです。管理者はsuEXEC を使ってウェブサーバに割り当てられているユーザーとは別個にCGI スクリプトにユーザーを割り当てることができます。 利点: suEXEC を使用することで、ウェブサーバをユーザー”nobody”として稼働させせつつ、顧客を完全に異なるユーザーとして設定できます。これで、顧客がアクセスしてはならないシステム上のファイルを上書きするのを防ぎ、顧客側の操作を厳格に制御できるようになります。 実装: suEXEC は、実行されるコマンドとエラーをすべてログ・ファイルに記録し、スクリプト位置や許可など特定のセキュリティ・パラメータが正しくない場合にはスクリプトの実行を中止します。正しく呼び出しが行われると、suEXEC はCGI プログラムに対するラッパーとして実行されます。ただし、モジュール版PHP に関してはsuEXEC は効果ありません。 suEXEC を有効にするには、apache のconfigure オプションでその旨を伝える必要があります。以下にsuEXEC に関連するオプションを列挙します。 --enable-suexec このオプションはデフォルトではインストールされず、有効にはならないsuEXEC 機能を有効にします。 --suexec-caller=[UserID] apache を通常動作させるユーザ名を指定します。このユーザだけがsuEXEC の実行許可されたユーザになります。 --suexec-docroot=[DIR] apache のドキュメントルートを設定します。これがsuEXEC の動作で使用する唯一のディレクトリ階層になります。suEXEC 環境下でバーチャルホストを実装する場合、バーチャルホストの書くDocroot はDIR 以下に作成すべきです。 --suexec-logfile=[FILE] suEXEC の処理とエラーが記録されるファイル名を指定します。デフォルトでログファイルは”suexec_log”という名前で標準のログファイルディレクトリ(--logfiledir で指示した場所) に置かれます。 --suexec-userdir=[DIR] suEXEC がアクセスを許されるユーザホームディレクトリ配下のサブディレクトリを指定します。このディ レクトリ以下の全実行ファイルは、安全なプログラムになるようsuEXEC がそのユーザとして実行できるようにします。UserDir ディレクティブがそのユーザのパスワードファイル内のホームディレクトリと同じ場所を指していなければ、suEXEC は適切に動作しません。デフォルトは ”public_html”です。 --suexec-uidmin=[UID] suEXEC の対象ユーザとして許されるUID の最小値を指定します。 --suexec-gidmin=[GID] suEXEC の対象グループとして許される GID の最小値を指定します。 --suexec-safepath=[PATH] CGI 実行ファイルに渡される安全なPATH 環境変数です。デフォルト値は”/usr/local/bin:/usr/bin:/bin”です。