Webサーバ

apache を用いてWebサーバを構築します。
Sambaで共有するユーザ(smbuser)のホームディレクトリをサイト全体のホームディレクトリとします。

・インストール

コンソールから次のコマンドを入力します。
[root@host root]# apt-get install apache
インストールするだけで、起動設定は済んでいます。

・ホームディレクトリの用意

一般的な形とする為に/home/smbuser の下に public_html をつくる。
public_html の親ディレクトリは、701以上のパーミッションが必要です。adduser で追加したユーザは、700 となっているので変更します。(Vineをインストールした直後の話ですが)
CGI用のディレクトリとして、/home/smbuser/cgi-bin を作っておきます。CGIを実行しますので、一般ユーザに実行のパーミッションが必要です。755としておきます。

・設定ファイルの修正 xxx部は削除、xxx部は変更、xxx部は追加、xxx部は実際の値(個々の環境)に合わせる
/etc/httpd/conf/httpd.conf を修正します。
詳細については、Apacheのサイトこのページが詳しいです。

サーバ名の変更
実名(ローカルなホスト名)をわざわざ表示する必要は無いでしょう。表示してもかまわない場合(例えば、イントラサーバ)はこの項目を変更する必要はありません。
    #ServerName localhost
->   ServerName www.hoge.com
実体サーバの基本ディレクトリの指定
    DocumentRoot /home/httpd/html
->  DocumentRoot /home/smbuser/public_htm
実体サーバの基本ディレクトリの設定
    <Directory /home/httpd/html>
->  <Directory /home/smbuser/public_htm>
オプションの指定を変更
ディレクトリ内の一覧を表示しないようにします。
    Options Indexes Includes FollowSymLinks MultiViews
->  Options Includes FollowSymLinks MultiViews
各ユーザのホームページの設定をする
コメントアウトされているので#を外す。Optins も上書き可。一覧表示禁止。利用しないメソッドの使用禁止。
#<Directory /home/*/public_html>
#AllowOverride FileInfo AuthConfig Limit Options
#Options MultiViews Indexes SymLinksIfOwnerMatch IncludeNoExec FollowSymLinks Include
#    <Limit GET POST OPTIONS PROPFIND>
#        Order allow,deny
#        Allow from all
#    </Limit>
#    <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK OPTIONS PROPFIND>
#        Order deny,allow
#        Deny from all
#    </Limit>
#</Directory>
前半の Limit で、特定のメソッドのみ受付け、後半の Limit で(それ以外のずべてのメソッドを書き並べて)拒否しています。ですが、
<LimitExcept GET POST >
    Order deny,allow
    Deny from all
</LimitExcept>
のように受付けるメソッドと同じものを並べ、それ以外を拒否する方が分かりやすいし、漏れが無くて安全であると推奨されているようです。
ファイル名省略時の検索順の指定
何かの処理をする物を優先しておきます。
    DirectoryIndex index.html index.htm index.shtml index.php index.php4 index.php3 index.cgi
->  DirectoryIndex index.cgi index.shtml index.php index.php4 index.php3 index.html index.htm
ホスト名のルックアップの設定
ホスト名をログに記録するようにします。(イントラサーバには不必要かも知れませんが)
サイトへのアクセス数が多くなければ、オーバーヘッドも酷い事にはならないでしょう。ログ解析時に調べるか、アクセス毎に調べるかの違いです。
    HostnameLookups Off
->  HostnameLookups On
スクリプトログの追加
スクリプトログを追加しておきます。開発の際に多少は便利になるでしょう。ファイルには一般ユーザにも書込み可のパーミッションが必要です。(ErrorLog の次の行にでも書いておきます。)
ScriptLog /home/smbuser/cgi-bin/cgi.log
ログファイルの設定
本来はリクエストの属性に基いて環境変数をセットするディレクティブですが、これをログへの記録の為のフラグに利用してます。(LogFormat の後ろにでも書いておきます。)
SetEnvIf Remote_Addr 192.168. intra nolog  内部からのアクセス
SetEnvIf Request_URI "default.ida" vm nolog  以下はウィルスの特徴的なアクセス
SetEnvIf Request_URI "root.exe" vm nolog
SetEnvIf Request_URI "cmd.exe" vm nolog
SetEnvIf Request_URI "Admin.dll" vm nolog
SetEnvIf Request_URI "NULL.IDA" vm nolog
ログファイルの指定
ログファイルと記録する条件を指定します。ファイル名は"/"で始まっていなければ ServerRoot からの相対パスという事になっています。env= で記録する条件を指定しています。 デフォルトより少し詳しいログとし、ウィルスも別のファイルに残しておきます。(あまり意味は無いですが)
    # CustomLog /var/log/httpd/access_log common
->    CustomLog /var/log/httpd/access_log combined env=!nolog
      CustomLog /var/log/httpd/virs_log combined env=vm
サーバ名等の表示を止める
エラーページ等の表示の際に、フッタとしてサーバ名等の情報を表示されるのを止めます。
    ServerSignature On
->  ServerSignature Off
サーバ情報の表示を止める
レスポンスヘッダ内に、サーバ情報の表示するのを止めます。外部に色々と情報を出すのを止める為で、イントラサーバでは不要でしょう。(前項の次の行にでも挿入します)
ServerTokens ProductOnly  ProductOnly は Apache 1.3.12 以降で利用可能です。
スクリプトディレクトリの別名設定
スクリプトのディレクトリを、安全の為や管理上専用ディレクトリとしたいなどで DocumentRoot 外に設定する場合、これを指定します。(当然そのディレクトリに対してCGIの実行許可を与える設定もします。−後述)
    ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
->  ScriptAlias /cgi-bin/ /home/smbuser/cgi-bin/
スクリプトディレクトリの変更
前項でディレクトリを変更したので、それに合わせます。
    <Directory /home/public/cgi-bin>
->  <Directory /home/smbuser/cgi-bin>
ハンドラの追加
これを指定する事によって".cgi" の拡張子を持つファイルをCGIスクリプトであると扱われます。
#AddHandler cgi-script .cgi

・起動コマンド(再起動の際は、start -> restart)

[root@host root]# /etc/init.d/httpd start

Valid HTML 4.01! 2005/05/24
ページ及び内容についてのご意見等ありましたら、cello@xqt,jpまでご連絡下さい。