osCommerceを動かすのに必要なソフトウェアについて、以下のセキュリティ問題が報告されています。使用しているソフトウェアのバージョンを確認して、必要なアップグレードを行ってください。
Apacheを実行するユーザを確認しておきます。
次のファイルtest.phpをサーバに置いて、そのファイルのURLを指定してブラウザで開いてください。
<?php phpinfo(); ?>
PHPが正常に動作していれば、開いたページの`apache'ブロックの`User/Group'の項に、実行ユーザ名、ユーザID、グループIDが表示されます。確認を終えたら、上記のファイルtest.phpをサーバから削除してください。
その他の確認方法としては、Apacheの設定ファイルhttpd.confの記述を参照する方法(1)があります。
User apache
httpd.confの中で、OptionsディレクティブにIndexesをセットしないでください。Webでアクセスした人に、ディレクトリ中の一覧を表示してしまうことを防ぎます。
osCommerceに関連したディレクトリだけでIndexesが働かないようにするには、catalogセクションのトップ・ディレクトリ/catalog/に、以下の記述をした.htaccessを置くことでも実現できます。
IndexIgnore *
また、DirectoryIndexディレクティブにdefault.phpを加えます。これは、インデックスになりえるファイルとして使われます。
DirectoryIndex index.html index.php default.php
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;
osCommerce日本語版では、インストールして最初にログインする場合には、「ユーザ認証」ページでユーザに`admin'、パスワードに`admin'を入力してログインします。
ログインしたら、そのパスワードをすぐに変更してください。パスワードを変更するには、管理ツールの[ユーザ] - [ユーザ管理]を選択して、ユーザ管理画面でシステム管理者(admin)のパスワードを変更します。
また、このadminというアカウントの代わりに別の管理者アカウントを作成して、その後でadminを削除してしまうことを推奨します。
管理ツールで画像を追加したり削除したりするには、画像を置くディレクトリに正しいアクセス権をセットする必要があります。Apacheのプロセスがどのユーザやグループの権限で動いているかを調べて、次のようなコマンドでアクセス権を設定します。
# cd catalog # chown -R someone.apache images # chmod 775 images
上の例の`someone.apache'のうち、someoneは管理者のユーザ・アカウント、apacheはApacheの実行ユーザが属するグループを指します。
adminセクションへの入り口となるURLは、SSLを利用しない場合は次のようなものになります。
http://www.somewhere.com/admin/
SSLを利用する場合は次のようなURLでアクセスしてください。
https://www.somewhere.com/admin/
こうすることで、最初の認証画面から暗号で保護された通信が行われます。
osCommerceを管理する担当者が複数いる場合には、それぞれの担当者ごとにadminセクションのアカウントを作成して、パスワードを設定してください。
それによって、サーバにログインした担当者を記録に残すこともできますし、担当者が代わったときに、そのアカウントを削除することによって、アクセスを簡単に制限することができます。
adminセクションのディレクトリ名は、デフォルトでは/admin/ですが、このディレクトリ名を変更することによって、「ユーザ認証」ページへの不正アクセスを防ぐことができます。
ディレクトリ名を変更した場合には、adminセクションのincludes/configure.phpの設定を変更してください。
adminセクションにアクセスできるPCを、特定のIPアドレスだけに制限することができます。
Apacheの設定ファイルhttpd.confで設定するとしたら、次の設定例のようになります。
<Directory "/var/www/html/admin"> Order allow,deny Allow from 123.156.3.5 </Directory>
共用サーバを利用する場合は、adminセクションのトップ・ディレクトリ/admin/に置かれた.htaccessファイルの中で、次のように設定します。
Order allow,deny Allow from 123.156.3.5
ある範囲のIPアドレスを許可することや、ドメイン単位で許可することもできますので、Apacheのマニュアルを参照してください。
osCommerceの一般的な構成では、WebサーバとDBサーバを1台のコンピュータにインストールします。この構成では、サーバがクラックされた場合に、DBの中の顧客情報を見られてしまう可能性があります。
セキュリティ・レベルをもっと高めるには、WebサーバとDBサーバを2台のコンピュータに分散して、その間にファイアウォールを設置します。
次のようなところで情報が入手できます。