「Apache」の設定
「Apache」のインストール
FreeBSD# cd /usr/ports/www/apache21 <= 作業ディレクトリへ移動
FreeBSD# make install clean <= 「Apache」のインストール

インストール時、「python」のオプションを聞かれるが、IPv6は使わないので、そのチェックを外す。
あとはデフォルト
[X] THREADS          Enable thread support
[X] UCS4             Use UCS4 for unicode support
[X] PYMALLOC         Use python's internal malloc
「Apache」の設定

FreeBSD6.0-RELEASEでは、一部の設定は /usr/local/etc/apache21/extra  ディレクトリ以下にあり、それを読み込む部分がコメントになっています。
ただし、ここでは httpd.conf ファイルに直接記述する方法で設定します。

FreeBSD# vi /usr/local/etc/apache21/httpd.conf <= 設定ファイルの編集
ServerAdmin you@example.com
↓
ServerAdmin kaz@crimson-snow.net <= 管理者のメールアドレスを指定

#ServerName www.example.com:80
↓
ServerName www.crimson-snow.net:80 <= サーバ名を指定


<Directory "/usr/local/www/data">

Options Indexes FollowSymLinks
↓
Options Includes ExecCGI FollowSymLinks <= CGI,SSIを許可

</Directory>

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
↓
LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
 <= 長すぎるURI(414エラー)をログに記録しない

<IfModule log_config_module>
wormからのアクセスのログを切り分けるように設定
#CustomLog /var/log/httpd-access.log combined <= コメントアウト
以下から追加
SetEnvIf Request_URI "default\.ida" no_log worm
SetEnvIf Request_URI "cmd\.exe" no_log worm
SetEnvIf Request_URI "root\.exe" no_log worm
SetEnvIf Request_URI "Admin\.dll" no_log worm
SetEnvIf Request_URI "NULL\.IDA" no_log worm
SetEnvIf Request_URI "xmlrpc\.php" no_log worm
SetEnvIf Request_URI "zero_vote" no_log worm
SetEnvIf Request_URI "sumthin" no_log worm
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)$" no_log <= gif,jpg,png,cssへのアクセスをログに記録しない
SetEnvIf Remote_Addr 192.168. no_log <= 内部からのアクセスをログに記録しない
CustomLog /var/log/httpd-access.log combined env=!no_log
 <= 上記以外のアクセスをログに記録する(通常のログファイル)
CustomLog /var/log/httpd-worm.log combined env=worm <= wormのログファイル
ここまで追加
</IfModule>

ServerTokens Full
↓
ServerTokens Prod <= エラーページ等でApacheのバージョン等を表示しない(FreeBSD6.0-RELEASEでは追加)

ServerSignature On
↓
ServerSignature Off <= エラーページ等でApacheのバージョン等を表示しない(FreeBSD6.0-RELEASEでは追加)

<IfModule mime_module>

    #AddHandler cgi-script .cgi
    ↓
    AddHandler cgi-script .cgi .pl <= CGIスクリプトに.plを追加

</IfModule>

ドキュメントルートの所有者を一般ユーザに変更します。

FreeBSD# chown kaz:kaz /usr/local/www/data/
「Apache」の起動
FreeBSD# /usr/local/sbin/apachectl start

「Apache」の自動起動

FreeBSDを起動する際に自動的に「Apache」を起動するようにします。

FreeBSD# vi /etc/rc.conf <= 設定ファイルの編集
apache21_enable="YES" <= 追加
CGIの実行の制限

このままですと、すべてのディレクトリでCGIが実行されてしまいます。
その為、セキュリティ的にも問題がありますので、CGIの実行を許可するディレクトリを限定します。
なお、ここでは /usr/local/www/cgi-bin のみ実行を許可するものとします。

FreeBSD# vi /usr/local/etc/apache21/httpd.conf <= 設定ファイルの編集
<Directory "/usr/local/www/data">

Options FollowSymLinks <= 「Includes ExecCGI」を追加しない

</Directory>


ScriptAlias /cgi-bin/ "/usr/local/www/cgi-bin" <= 確認(CGIを許可するディレクトリを指定)

<Directory "/usr/local/www/cgi-bin">
    AllowOverride None
    Options None
	↓
    Options Includes ExecCGI FollowSymLinks <= CGI,SSIを許可
    Order allow,deny
    Allow from all
    AddHandler php-script .php <= 追加(phpの設定)
    AddHandler image/gif .gif <= 追加(gifはイメージファイルとして処理)
    AddHandler image/jpeg .jpeg .jpg <= 追加(jpeg jpgはイメージファイルとして処理)
    AddHandler image/png .png <= 追加(pngはイメージファイルとして処理)
    AddHandler text/css .css <= 追加(cssはcssとして処理)
    AddHandler text/html .html .htm <= 追加(html htmはhtmlとして処理)
</Directory>

「Apache」を再起動し、設定を反映させます。

FreeBSD# /usr/local/sbin/apachectl restart
▲ページのトップへ