「Apache」の設定

Solaris10には1.3系と2系がインストールされていますが、ここでは、2系を利用することとします。

「Apache」の設定

Solaris10ではIPv6が標準で有効になっていますが、サーバ側にIPv6のアドレスを設定していない場合、error_logに
(128)Network is unreachable: connect to listener
というログが大量に出力されてしまいます。
これは、設定ファイルのListendディレクティブでIPアドレスを指定しない場合、すべてのIPアドレスを待ち受ける為です。
その為、本サイトではListendディレクティブでIPアドレスとポート番号を指定しています。
この設定はサーバ側にIPv6のアドレスを設定している場合は指定しなくても構いません。
また、「Apache」の導入前ならconfigure時に --disable-ipv6 を指定しても構いません。

Solaris# cp /etc/apache2/httpd.conf-example /etc/apache2/httpd.conf <= サンプル設定ファイルをコピー
Solaris# vi /etc/apache2/httpd.conf <= 設定ファイルの編集
Listen 80
↓
Listen 192.168.0.2:80 <= サーバのIPアドレスと待ち受けるポート番号を指定

ServerAdmin you@yourhost.com
↓
ServerAdmin kaz@crimson-snow.net <= 管理者のメールアドレスを指定

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


<Directory "/var/apache2/htdocs">

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エラー)をログに記録しない

wormからのアクセスのログを切り分けるように設定
#CustomLog /var/apache2/logs/access_log common <= コメントアウト
以下から追加
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/apache2/logs/access_log combined env=!no_log
 <= 上記以外のアクセスをログに記録する(通常のログファイル)
CustomLog /var/apache2/logs/worm_log combined env=worm <= wormのログファイル
ここまで追加

ServerTokens Full
↓
ServerTokens Prod <= エラーページ等でApacheのバージョン等を表示しない

ServerSignature On
↓
ServerSignature Off <= エラーページ等でApacheのバージョン等を表示しない

AddLanguage ca .ca
AddLanguage cs .cz .cs
等となっているところで
AddLanguage ja .ja
を一番上に移動する(文字化け対策)

LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
↓
LanguagePriority ja en ca cs da de el eo es et fr he hr it ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW
 <= ja を先頭にする(文字化け対策)

AddDefaultCharset ISO-8859-1
↓
AddDefaultCharset EUC-JP <= 自分のホームページの文字コードにする(文字化け対策)


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

Perlを利用する場合、先頭にPerlへのパスを記述しますが、Solaris以外ではパスが
/usr/local/bin/perl
というケースが多々あります。
そこで、このパスでも実行できるよう、リンクを貼ります。

Solaris# mkdir -p /usr/local/bin <= ディレクトリの作成
Solaris# ln -s /usr/bin/perl /usr/local/bin/perl <= リンクの作成

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

Solaris# chown kaz:kaz /var/apache2/htdocs/
「Apache」の起動
Solaris# svcs -a | grep apache <= 「Apache」の動作状況の確認
legacy_run     20:21:16 lrc:/etc/rc3_d/S50apache
disabled       20:20:24 svc:/network/http:apache2

Solaris# svcadm enable svc:/network/http:apache2 <= 「Apache」の起動
CGIの実行の制限

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

Solaris# vi /etc/apache2/httpd.conf <= 設定ファイルの編集
<Directory "/var/apache2/htdocs">

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

</Directory>


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

<Directory "/var/apache2/cgi-bin">
    AllowOverride None
    Options None
    ↓
    Options Includes ExecCGI FollowSymLinks <= CGI,SSIを許可
    Order allow,deny
    Allow from all
    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」を再起動し、設定を反映させます。

Solaris# svcadm restart svc:/network/http:apache2
▲ページのトップへ