osCommerceセキュリティTIPS

2002年9月11日
田村敏彦 (tamura@bitscope.co.jp)
この文書は、osCommerce 2.2を安全に運用するために必要な注意点を整理したものです。この文書についてのご意見をtamura@bitscope.co.jpまでお寄せください。

目次

動作環境

関連ソフトウェアのセキュリティ問題

osCommerceを動かすのに必要なソフトウェアについて、以下のセキュリティ問題が報告されています。使用しているソフトウェアのバージョンを確認して、必要なアップグレードを行ってください。

OpenSSL
リモートから任意のコードを実行できる弱点が発見されています。バージョン0.9.6eがリリースされています。(2002/07/31)
PHP
バージョン4.2.0および4.2.1にリモートから任意のコードを実行、あるいはウェブサーバを停止することができる弱点が発見されています。4.2.2にアップグレードしましょう。バージョン4.1.2についてはセキュリティ問題は報告されていません。(2002/07/23)
mod_ssl
リモートから任意のコードを実行できる弱点が発見されています。バージョン2.8.10がリリースされています。(2002/07/04)
Apache
DoS攻撃を行われてしまう弱点、リモートから悪質なプログラムを実行することが可能となる問題も発見されています。この問題に対応した最新バージョンである1.3.26および2.0.39がリリースされています。(2002/06/19)

インストール

Apache の設定

Apache を実行するユーザ

Apacheを実行するユーザを確認しておきます。

次のファイルtest.phpをサーバに置いて、そのファイルのURLを指定してブラウザで開いてください。

test.php
<?php phpinfo(); ?>

PHPが正常に動作していれば、開いたページの`apache'ブロックの`User/Group'の項に、実行ユーザ名、ユーザID、グループIDが表示されます。確認を終えたら、上記のファイルtest.phpをサーバから削除してください。

その他の確認方法としては、Apacheの設定ファイルhttpd.confの記述を参照する方法(1)があります。

  1. Apacheの設定ファイルhttpd.confの中では、実行ユーザは次のように指定されています。
    Userの設定 (httpd.conf)
    User apache
    

Options の設定

httpd.confの中で、OptionsディレクティブにIndexesをセットしないでください。Webでアクセスした人に、ディレクトリ中の一覧を表示してしまうことを防ぎます。

osCommerceに関連したディレクトリだけでIndexesが働かないようにするには、catalogセクションのトップ・ディレクトリ/catalog/に、以下の記述をした.htaccessを置くことでも実現できます。

ディレクトリ一覧を表示しない (.htaccess)
IndexIgnore *

また、DirectoryIndexディレクティブにdefault.phpを加えます。これは、インデックスになりえるファイルとして使われます。

DirectoryIndexの設定 (httpd.conf/.htaccess)
DirectoryIndex index.html index.php default.php

MySQL のアカウントとパスワード

MySQLをインストールした直後には、MySQLのアカウントrootのパスワードが設定されていません。これを必ず設定してください。

osCommerceの運用には、MySQLのアカウントとしてrootとは別のユーザを使用してください。それに加えて、このMySQLのユーザがosCommerceで使用するデータベースにアクセスして実行できるSQL文を、SELECT, INSERT, UPDATE, DELETEの最小限のものだけに限定することも有効です。

rootユーザでmysqlコマンドを起動して、以下のようにユーザ名、データベース名、パスワードをあたえて権限を指定することができます。

接続ユーザの権限を指定する
mysql> GRANT SELECT,INSERT,UPDATE,DELETE
    -> ON データベース名.*
    -> TO ユーザ名@localhost
    -> IDENTIFIED BY `パスワード';
mysql> FLUSH PRIVILEGES;

admin セクションのパスワード

osCommerce日本語版では、インストールして最初にログインする場合には、「ユーザ認証」ページでユーザに`admin'、パスワードに`admin'を入力してログインします。

ログインしたら、そのパスワードをすぐに変更してください。パスワードを変更するには、管理ツールの[ユーザ] - [ユーザ管理]を選択して、ユーザ管理画面でシステム管理者(admin)のパスワードを変更します。

また、このadminというアカウントの代わりに別の管理者アカウントを作成して、その後でadminを削除してしまうことを推奨します。

ディレクトリのアクセス権

管理ツールで画像を追加したり削除したりするには、画像を置くディレクトリに正しいアクセス権をセットする必要があります。Apacheのプロセスがどのユーザやグループの権限で動いているかを調べて、次のようなコマンドでアクセス権を設定します。

ディレクトリのアクセス権の設定
# cd catalog
# chown -R someone.apache images
# chmod 775 images

上の例の`someone.apache'のうち、someoneは管理者のユーザ・アカウント、apacheはApacheの実行ユーザが属するグループを指します。

運用

admin セクションへのアクセスURL

adminセクションへの入り口となるURLは、SSLを利用しない場合は次のようなものになります。

SSL を使用しないURLの例
http://www.somewhere.com/admin/

SSLを利用する場合は次のようなURLでアクセスしてください。

SSL を使用するURLの例
https://www.somewhere.com/admin/

こうすることで、最初の認証画面から暗号で保護された通信が行われます。

パスワードの管理

osCommerceを管理する担当者が複数いる場合には、それぞれの担当者ごとにadminセクションのアカウントを作成して、パスワードを設定してください。

それによって、サーバにログインした担当者を記録に残すこともできますし、担当者が代わったときに、そのアカウントを削除することによって、アクセスを簡単に制限することができます。

もう一歩先のセキュリティ対策

admin セクションのディレクトリ名

adminセクションのディレクトリ名は、デフォルトでは/admin/ですが、このディレクトリ名を変更することによって、「ユーザ認証」ページへの不正アクセスを防ぐことができます。

ディレクトリ名を変更した場合には、adminセクションのincludes/configure.phpの設定を変更してください。

IPアドレスによるアクセス制限

adminセクションにアクセスできるPCを、特定のIPアドレスだけに制限することができます。

Apacheの設定ファイルhttpd.confで設定するとしたら、次の設定例のようになります。

特定のIPアドレスからのアクセスを許可する設定例 (httpd.conf)
<Directory "/var/www/html/admin">
    Order allow,deny
    Allow from 123.156.3.5
</Directory>

共用サーバを利用する場合は、adminセクションのトップ・ディレクトリ/admin/に置かれた.htaccessファイルの中で、次のように設定します。

特定のIPアドレスからのアクセスを許可する設定例 (.htaccess)
Order allow,deny
Allow from 123.156.3.5

ある範囲のIPアドレスを許可することや、ドメイン単位で許可することもできますので、Apacheのマニュアルを参照してください。

Web サーバと DB サーバを分離する

osCommerceの一般的な構成では、WebサーバとDBサーバを1台のコンピュータにインストールします。この構成では、サーバがクラックされた場合に、DBの中の顧客情報を見られてしまう可能性があります。

セキュリティ・レベルをもっと高めるには、WebサーバとDBサーバを2台のコンピュータに分散して、その間にファイアウォールを設置します。

参考資料

次のようなところで情報が入手できます。

コンピュータ緊急対応センター
セキュリティ・ホール情報が緊急報告として集められています。
IPA/SECセキュリティセンター
コンピュータ・ウィルスや不正アクセス対策など、セキュリティ関連情報が幅広く集められています。特に小規模サイト管理者向けセキュリティ対策マニュアルなどが参考になります。
Japan Apache Users Group
Apache マニュアルでApacheの設定方法が確認できます。
日本語版Apache設定ファイル
Apacheの設定ファイルhttpd.confの実例に日本語のコメントがつけられています。