今回の記事では、CGIやPerlが何であるか? どのような仕組みで動作し、セキュリティホールが明るみとなる事項を幾つか挙げてきた。
核心となるPerlセキュリティとサニタイズの関係は、次回の記事で詳細を解説していこう。
筆者は、今回の記事執筆のために動作環境として、Fedora Core 4(以下、FC4)のIA-32 PCを用意した。
Webサーバは市場シェア70%を誇るApacheを使用している。FC4にはあらかじめApacheのパッケージがインストールされているため、すぐにでもサービスを起動することができるが、その前に必要最小限の設定を行う必要がある。
Apacheは /etc/httpd/conf/httpd.conf を編集することで、カスタマイズを行うことができるようになっている。編集作業はroot権限(スーパーユーザー権限)で行う。注意すべき個所は以下の点だ。
リスト1■httpd.confの編集個所 |
・コメントを外し、ホスト名を修正する。ここではLinux PCのIPアドレスとした。 #ServerName www.example.com:80 ↓ ServerName 192.168.1.3:80 ・http://〜/~ユーザ名/ でアクセスできるようにする。 UserDir disable ↓ #UserDir disable #UserDir public_html ↓ UserDir public_html ・以下の3行を追加する。 Options ExecCGI ・CGIスクリプトを動作させるため、下記のコメントアウトを無効にする。 #AddHandler cgi-script .cgi ↓ AddHandler cgi-script .cgi ・デフォルトエンコーディングを無効にする #AddDefaultCharset UTF-8 ↓ AddDefaultCharset off |
ユーザーのホームディレクトリにpublic_html/ディレクトリを作成する。そこにHTMLやCGIスクリプトを置けばよい。このとき、chmodコマンドでパーミッションの設定を行っておく必要性にも注意だ。この作業を忘れると、「403 Forbidden」のエラー表示となって閲覧することができない。これはCGIスクリプトを実行させるときに、Apacheの権限ではなく、ファイルの所有者権限で動作させるsuEXEC(Switch User before EXECuting external programs)と呼ばれる機能が有効となっているためだ。suEXECは、最近では標準でApache(パッケージ)に組み込まれていることが多い。
/home/[ユーザ名]のディレクトリは、711
/home/[ユーザ名]/public_html/のディレクトリは、755
ApacheはスーパーデーモンのXinetd経由ではなく、単体のデーモンとして起動されるため、rc(Run Command)スクリプトから起動・停止・再起動処理を行う。Linuxのブート時に自動的に起動したい場合には、chkconfigコマンドでhttpdデーモンの設定を変更すればよい。
リスト2■実行結果 |
・コマンドラインヘルプ # /etc/rc.d/init.d/httpd 使い方: httpd {start|stop|restart|condrestart|reload|statusfull status|graceful|help|configtest} ・起動 # /etc/rc.d/init.d/httpd start ・停止 # /etc/rc.d/init.d/httpd stop |
Copyright © ITmedia, Inc. All Rights Reserved.