Perlは悪くない――CGIセキュリティホールの落とし穴スパム時代のサニタイズ開発手法(2/2 ページ)

» 2005年12月20日 08時34分 公開
[平田豊,ITmedia]
前のページへ 1|2       

 今回の記事では、CGIやPerlが何であるか? どのような仕組みで動作し、セキュリティホールが明るみとなる事項を幾つか挙げてきた。

 核心となるPerlセキュリティとサニタイズの関係は、次回の記事で詳細を解説していこう。

運用者が知っておくべきWebサーバソフトの設定

 筆者は、今回の記事執筆のために動作環境として、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


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ