「Apache」の設定
「Apache」のインストール
[root@CentOS ~]# yum -y install httpd <= 「Apache」のインストール
[root@CentOS ~]# yum clean packages <= ダウンロードしたパッケージの削除
「Apache」の設定

「CentOS」のバージョンによって元の設定が多少違いますが、設定後の内容になるように設定します。

[root@CentOS ~]# vi /etc/httpd/conf/httpd.conf <= 設定ファイルの編集
ServerTokens OS
↓
ServerTokens Prod <= エラーページ等でApacheのバージョン等を表示しない

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

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


<Directory "/var/www/html">

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 logs/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 logs/access_log combined env=!no_log <= 上記以外のアクセスをログに記録する(通常のログファイル)
CustomLog logs/worm_log combined env=worm <= wormのログファイル
ここまで追加

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

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

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

[root@CentOS ~]# ln -s /usr/bin/perl /usr/local/bin/perl

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

[root@CentOS ~]# chown kaz.kaz /var/www/html/
「Apache」の起動
[root@CentOS ~]# /etc/rc.d/init.d/httpd start

「Apache」の自動起動

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

[root@CentOS ~]# chkconfig httpd on
CGIの実行の制限

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

[root@CentOS ~]# vi /etc/httpd/conf/httpd.conf <= 設定ファイルの編集
<Directory "/var/www/html">

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

</Directory>


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

<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options Includes 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」を再起動し、設定を反映させます。

[root@CentOS ~]# /etc/rc.d/init.d/httpd restart
▲ページのトップへ