最近、オープンソースプロダクトを狙った改竄が流行しています。
Magentoもソースが開示されているので、脆弱性が見つかった場合は早急に対処しなければなりません。
それはそれで必要なのですが、管理画面のURLがデフォルトのままであるサイトが多いように思います。 

このエントリでは、管理画面URLを変更する理由を解説し、対策として管理画面URLを変更する方法を説明します。

Magentoの管理画面URLはどこにあるか

Magentoの管理画面URLは、インストール時に指定しない限り、

http(s)://yourdomain.com/index.php/admin

となります。
これはMagentoのデフォルトの挙動なので、意識しない限りは管理画面のURLが上記のURLになります。 
また、設定を変更しない限りは管理画面はSSLで運用されないので、平文で個人情報をやりとりする運用をしているサイトが時折見受けられます。
(簡単な設定変更でSSL化できるのですが、URLが変わるので管理者が戸惑うことがあります) 

管理画面URLがバレると何が悪いか

では、管理画面URLがバレると何が悪いのでしょうか。
私の見解としては以下のようなリスクがあると考えています。 

サイトがMagentoでできていることを見ぬくのは簡単

これは非常に簡単です。
FireFoxなどのプラグインで簡単に可視化できますし、HTMLのソースをみるだけでもMagentoでできていることを判断することはとても容易です。

また、JavaScriptやCSSファイルに書かれたコメントから、おおよそのMagentoのバージョンを推測することができます。
バージョンがわかれば、Magentoのリリースノートやバグレポートなどからどういうバグがあったのかを知ることができ、そこから攻撃方法を考えることができます。 

Community Editionに管理者ロックアウト機能はない

Enterprise Editionには管理者がログインを一定回数以上失敗すると、その管理者アカウントをロックする機能があります。
ですが、Community Editionにはありません。

そのため、管理者URLがバレると、パスワードがヒットするまでログインを繰り返すことができてしまいます。
アクセスログ(生ログ)を毎日解析していない限り、おそらくサイト管理者は気づくこともないでしょう。

パスワードがあまりにも短い場合、運が悪いとログインを許してしまう恐れがあります。

Magentoの管理者パスワードの最短文字数は7文字

これは管理者アカウントを作成する際のチェック処理で知ることができます。
標準は7文字で、半角英数字を取り混ぜる必要があります。
ですが、記号や大文字小文字を組み合わせるほどの指定はありません。

パスワードの長さと複雑さがもたらすクラッキング耐性については、他サイトの説明を見ていただくとして、やはり管理者パスワードはある程度の長さと複雑さを持たせておくことが望ましいと言えます。

あとは、「admin」や「root」といったアカウントは使用しないことでしょうか。
他のオープンソースでもよく見かけるIDなので、使わないほうがよいでしょう。

対策

では、どのように対策すべきなのでしょうか。
Community Editionには管理者アカウントのロック機能がないので、まずはアクセスさせないことを考えなければいけません。 

インストール時または運用開始前にURLを変更する

運用中にも変更は可能なのですが、無用の混乱を避けるためにも、インストール時が望ましいと私は考えます。
管理者URLの設定は、インストール時のデータベース接続情報を入力する画面の「Admin Path」というところにあります。
初期値として「admin」が入っているのですぐわかると思います。

ここを独自の名称に変えておくだけでも多少の効果はあります。

インストール後に変更する場合は、app/etc/local.xml にある

    
        
            
                
                    
                
            
        
    

という箇所の frontName の値を変更し、Magentoのキャッシュを更新すれば変更できます(先にキャッシュファイルをすべて消しておくほうがいいでしょう)。 

管理画面を別ドメインにする

SSL証明書が追加で1枚必要になります(ワイルドカード証明書を使用する場合は不要です)が、管理画面全体を別ドメインにする事ができます。

こうすればSSLによる暗号化も使えますし、Webサーバ上でバーチャルホストを別に設定するため、接続元IPを制限することもできます。

アクセス制限用のエクステンションを入れる

管理画面へのログインページにIPアドレス制限をかけるエクステンション「Sweet-Apple Lockdown Admin By IP Address」などを使用して、アクセス制限を行います。
エクステンションでなくても、.htaccessやWebサーバの設定で調整することもできます。
ただし、この対策はアクセスするIPが固定である前提なので、動的IPの場合には対応が難しいでしょう。 

basic認証はかけてはいけない

Magento1.xではファイルのアップロードにFlashを使用しています。
もし、アクセス制限にbasic認証を使用してしまうと、ファイルのアップロードができなくなってしまいます。
これは、ファイルのアップロード時に使用するFlashがbasic認証を通過できないためです。

ですから、basic認証は使用できません。

終わりに

Magentoの管理画面へのアクセスを制限する方法はいろいろな方法があります。
何が正解、ということはありません。
サイトを運用する側の環境やサーバの構成によって変わります。
IPアドレスによる制御は管理者のIPが固定である必要があります(VPNも可です)。

自社に最適なものを選択し、システムを護ることが必要だと思います。