本プラグインは強力なファイアウォール機能を有しているため、設定や接続環境によっては管理者様ご自身のアクセスまで遮断(ロックアウト)されてしまう可能性がございます。安全にご利用いただくため、必ず以下の事項をご確認の上でお求め・ご設定ください。
2. 有効化前に「ショップ画面での動作確認」と「ホワイトリスト登録」を強く推奨 プラグインのインストール直後は安全のため【全機能OFF(停止状態)】で導入されます。いきなり全体を有効化するのではなく、以下の手順で段階的に設定してください。
・まずプラグイン設定画面内の「IP判定シミュレーター」にて、現在接続中の自社・管理者様IPが正常に「JP(日本)」と判定されることをご確認ください。
・VPN、社内プロキシ、固定回線、モバイルテザリング環境等では実際の認識IPが変動する場合があります。締め出しを確実に防ぐため、管理者様の接続元IPをあらかじめ「手動ホワイトリスト」に登録してから、管理画面ブロックや全体有効化をONにしてください。
3. 緊急時の即時復旧コマンドについて 万が一アクセスできなくなった場合でも、サーバーターミナル(SSH)より以下のコマンドを実行すれば、1秒で全ブロックを緊急停止(アクセス全復旧)させることができます。
bin/console eccube:site-blocker:toggle --disable
1. プラグイン概要・解決する課題
警察庁の統計によると、日本国内のECサイトやWebサーバーに向けられる不審アクセス・脆弱性スキャンの実に99%が海外発であることが明らかになっています。特に昨今では、海外IPや自動化ボットによる「不正注文・不正アクセス」や「大量スパム会員登録」、管理画面へのブルートフォース攻撃が深刻な課題となっています。
本プラグイン(SiteOverseasIpBlocker)は、この問題を根本から解決するために開発されました。
※すでに弊社の「管理画面の海外IPブロック(GeoIPファイアウォール)」をご利用中、またはあわせてご購入をご検討中のお客様へ。
本プラグイン(SiteOverseasIpBlocker)には、「管理画面の海外IPブロック」と同等の機能があらかじめ標準搭載されております。
そのため、両方のプラグインを重複してご購入いただく必要はございません。
「管理画面のみを保護したい」のか、それとも「決済画面・会員登録・管理画面までショップ全域を包括的に保護したい」のか、店舗様の運用目的に合わせて以下の機能比較表をご確認の上、最適なプラグインをお選びください。
| 対策・機能項目 | 管理画面専用プラグイン (管理画面の海外IPブロック) |
本プラグイン【総合保護】 (管理画面・決済・会員登録) |
|---|---|---|
| 管理画面(/admin)の海外IPブロック | ◯(完全対応) | ◯(標準搭載) |
| 海外IPからの不正決済・不正注文を防止 | ✕(非対応) | ◯(不正注文・決済アクセスを遮断) |
| 海外IPからのスパム会員登録を防止 | ✕(非対応) | ◯(大量不正アカウント登録を阻止) |
| こんなショップ様におすすめ | 管理画面の乗っ取り対策のみをピンポイントで導入したい店舗様 | 不正注文・決済被害やスパム登録、管理画面保護をまとめて根本解決したい店舗様(推奨) |
2. 動作要件・システム環境
本プラグインは、以下の環境において動作検証およびセキュリティ検証を実施しています。
| 項目 | 要件・対応仕様 |
|---|---|
| EC-CUBE バージョン | EC-CUBE 4.2.0 〜 4.3.x(4.2系・4.3系両対応) |
| PHP バージョン | PHP 7.4 〜 8.3(PHP 7.4 / 8.0 / 8.1 / 8.2 / 8.3 完全両対応) |
| データベース | MySQL 5.7 / 8.0 / 8.4、PostgreSQL 10〜16、MariaDB 10.5〜11.x |
| 必要拡張モジュール | PHP標準関数(fseek, pack, unpack)のみ。特殊なPECL拡張や外部モジュールは不要です。 |
| プロキシ・CDN環境 | Cloudflare(CF-Connecting-IP)、AWS ALB、リバースプロキシ(X-Forwarded-For)に完全対応。 |
本プラグインの超高速GeoIP判定エンジンは「IPv4アドレス専用」の設計となっております。
エックスサーバー、ConoHa、さくらのレンタルサーバなど、一般的なEC-CUBEホスティング環境(DNSのAレコードのみ設定されたIPv4環境)では、お客様がIPv6回線(v6プラス・IPoE等)をご利用の場合でも通信事業者(プロバイダ)側で自動的に国内IPv4へ変換されるため、通常通り正常に判定・通過いたします。
※以下の環境ではご注意ください:
- WebサーバーのDNSにIPv6(AAAAレコード)を直接設定されている場合
- Cloudflare等のCDN経由でIPv6アドレスが直接Webサーバーへ到達する環境
上記のようにサーバーへ直接IPv6アドレスで通信が到達する場合、日本国内からのアクセスであっても「国籍判定不可」としてブロック対象となります。Cloudflare等をご利用の際は、Cloudflare管理画面にて「Pseudo IPv4(疑似IPv4)」機能等の併用をご検討ください。
3. インストール・有効化手順
-
1
プラグインの入手・インストール
EC-CUBE管理画面の「オーナーズストア > プラグイン > プラグイン一覧」より本プラグインをインストールします。
-
2
プラグインの有効化
プラグイン一覧画面にて、本プラグインのトグルスイッチまたは「有効化」ボタンを押下します。
-
3
初期設定の確認・保存
左メニューの「設定 > システム設定 > 海外IPブロック設定」へ進み、店舗の運用ポリシーに合わせて設定を行い「保存」をクリックします。
4. 管理画面の設定項目一覧
管理画面の「設定 > システム設定 > 海外IPブロック設定」で提供される設定パラメータの一覧です。
| 設定項目名 | 初期値 | 説明・設定のポイント |
|---|---|---|
プラグインの有効化isEnabled |
OFF(無効) | 海外IPブロック機能全体の有効/無効を切り替えます。 |
保護モードprotectionMode |
決済・会員登録のみ (推奨) |
以下の3つのモードから選択できます:
|
管理画面の海外遮断blockAdmin |
ON(有効) | 管理画面(/%eccube_admin_route%/)への海外IPアクセスを個別に遮断するか指定します。フロント側の保護モード設定に関わらず独立して機能します。 |
許可する国コードallowedCountries |
JP |
アクセスを許可する国コード(ISO 3166-1 alpha-2)をカンマ区切りで指定します(例: JP,US)。通常は日本国内限定(JP)のままで問題ありません。 |
検索クローラー通過allowSearchBots |
ON(有効) | GooglebotやBingbotなどの検索エンジンクローラーを自動認証し、無条件で通過させる機能です。SEO維持のため常時ONを強く推奨します。 |
手動ホワイトリストIPwhitelistIps |
空(未設定) | 海外IPであってもアクセスを無条件許可したいIPアドレスまたはCIDR範囲を改行区切りで入力します(例: 203.0.113.10 または 198.51.100.0/24)。海外出張時や外部連携サーバーの登録に利用します。 |
手動ブラックリストIPblacklistIps |
空(未設定) | 国判定に関わらず、特定IPからの接続を強制拒絶したい場合に入力します。 |
GeoIP自動更新autoUpdate |
ON(有効) | GitHub Actionsにより日次配信される最新のIP割当バイナリへの自動追従設定です。 |
5. SEO保護(Googlebot通過判定)の仕組み
悪意あるボットが User-Agent: Googlebot と偽装してアクセスしてくる攻撃(UAスプーフィング)を防ぎつつ、本物のGooglebotのみを100%安全に通過させるため、本プラグインはGoogle公式が推奨する「Forward-Confirmed Reverse DNS(FCrDNS / 二重逆引き照合)」を採用しています。
- User-Agentの一次判定: リクエストのUser-Agentに「Googlebot」や「bingbot」が含まれるかを検知。
- Reverse DNS逆引き: 接続元IPをホ스트名に逆引き(例:
crawl-66-249-66-1.googlebot.com)。ドメイン末尾が.googlebot.comまたは.google.comであることを検証。 - Forward DNS正引き照合: 取得したホスト名を再度IPアドレスに正引き解決し、元の接続元IPと完全に一致することを確認。
この検証結果はキャッシュ(APCuまたはファイルキャッシュ)に保存されるため、2回目以降の巡回アクセスでDNS問い合わせのオーバーヘッドは発生しません。
6. リアルタイム遮断ログ&IPシミュレーター
管理画面のタブメニューより、遮断実績の確認や任意のIPに対する判定テストが可能です。
リアルタイム遮断ログ
海外IPからのアクセスが遮断された際の日時、アクセス先URL(/shoppingや/adminなど)、接続元IP、国コード、ユーザーエージェントが一覧で記録されます。どの国からどのような攻撃が仕掛けられているかを視覚的に把握できます。
IP判定シミュレーター
調査したいIPアドレスを入力して「判定テスト」を実行することで、本プラグインがそのIPをどのように認識するか(国コード、許可/遮断判定、ホワイトリスト該当有無)を事前シミュレーションできます。
7. SSHコンソールコマンド(緊急復旧・保守)
万が一の設定ミスや管理画面へのアクセス制限時でも、サーバーのSSHターミナルから直接プラグインの状態確認・緊急解除が行えるSymfony Consoleコマンドを完備しています。
| 用途・操作 | 実行コマンド |
|---|---|
| 全ブロック機能を緊急停止(即座に全解除・アクセス全復旧) | bin/console eccube:site-blocker:toggle --disable |
| 全ブロック機能を再度有効化(ON) | bin/console eccube:site-blocker:toggle --enable |
| 管理画面の海外ブロックのみ緊急解除(OFF) | bin/console eccube:site-blocker:toggle --disable-admin |
| 管理画面の海外ブロックを再度有効化(ON) | bin/console eccube:site-blocker:toggle --enable-admin |
| 稼働状況・現在の設定状態を確認 | bin/console eccube:site-blocker:toggle --status |
| 接続元IPをホワイトリストに即時追加 | bin/console eccube:site-blocker:toggle --add-whitelist=[IPアドレス] |
| 特定IPの判定シミュレーション実行 | bin/console eccube:site-blocker:toggle --check-ip=[IPアドレス] |
| 最新のGeoIP判定データを更新(cron用) | bin/console eccube:site-blocker:update |
bin/console eccube:site-blocker:toggle --disable※SSH接続が利用できずFTPのみ可能な場合の復旧手順は、後述の「よくある質問(FAQ)」をご確認ください。
8. よくある質問・トラブルシューティング
Q. クレジットマスター攻撃(大量不正決済・不正注文)に対する防御効果はありますか?
はい、極めて高い防御効果を発揮します。
盗難・流出したクレジットカード情報の有効性を機械的に確かめるために数千件規模の連続注文を仕掛ける「クレジットマスター攻撃」や自動注文ボットは、警察庁の報告が示す通り、不審アクセスの99%以上が日本国外の攻撃サーバーや海外プロキシを経由して実行されています。
本プラグインの「スマート決済保護モード」を有効にすることで、商品閲覧やトップページは世界中に公開したまま(SEO順位100%維持)、攻撃対象となる「ご注文・決済手続き画面(/shopping)」および「会員登録(/entry)」のみ、日本国外からのアクセスを水際(403 Forbidden)で即座に遮断します。
海外からの攻撃アクセスはGMOペイメントゲートウェイやStripe等の決済ゲートウェイに到達する前に物理遮断されるため、数千件に及ぶ不正注文試行やカード決済手数料・チャージバック被害を元から根本解決できます。
Q. SSH接続が使えず、FTPのみ接続できる環境で締め出された場合の復旧方法はありますか?
はい、FTP接続環境があれば、プラグインディレクトリを一時退避させることで即座にアクセスを緊急復旧できます。
EC-CUBEはブート時に app/Plugin/ 内の物理ディレクトリを自動スキャンしてイベントリスナーをロードするため、以下の手順でプラグインの読み込みを一時停止させてください:
- FTPでサーバーに接続: FTPクライアント(FileZillaやCyberduck等)でEC-CUBEの設置ディレクトリに接続します。
- プラグインフォルダを退避:
app/Plugin/SiteOverseasIpBlockerフォルダを、スキャン対象外であるvar/配下へ移動(例:var/SiteOverseasIpBlocker_bak)します。
※ご注意:app/Plugin/ディレクトリの中で名前を変更すると、EC-CUBEが新規プラグインと誤認して設定ファイルを読み込もうとし、ネームスペース不一致エラー(500エラー)の原因となる場合があります。必ずapp/Plugin/の外(var/等)へフォルダごと移動させてください。 - キャッシュのクリア:
var/cache/prod/フォルダ内のキャッシュファイルを全て削除します。
上記を実施すると、EC-CUBEは本プラグインを読み込まずに起動するため、IPブロック機能が完全に停止し、管理画面およびショップへのアクセスが即座に回復します。
アクセス回復後、管理画面の「手動ホワイトリスト」にご自身の接続IPをあらかじめ登録してから、フォルダを元の app/Plugin/SiteOverseasIpBlocker に戻し、キャッシュを再クリアすることで安全に通常運用を再開いただけます。
Q. 海外出張先や海外拠点から管理画面にアクセスできなくなりました。
海外IPからの接続のため、正常に403遮断されています。あらかじめ出張先のIPを「手動ホワイトリスト」に登録しておくか、サーバーへSSH接続できる環境であれば bin/console eccube:site-blocker:toggle --disable-admin または --disable で一時的に機能をOFFにしてください。
Q. 緊急停止コマンドを実行すると、他の設定は消えてしまいますか?
いいえ、消えません。緊急停止コマンド(--disable)はブロック機能の有効化スイッチのみをOFFにするため、手動ホワイトリストや保護モードの設定情報はデータベース内に安全に保持されます。アクセス回復後に管理画面から安全を確認して再度ONに戻すことができます。
Q. CloudflareなどのCDNを導入していますが、正常に判定されますか?
はい、完全に対応しています。Cloudflareが付与する CF-Connecting-IP や一般的なプロキシの X-Forwarded-For ヘッダーから真のクライアントIPを自動抽出して厳格に判定します。
Q. Google Merchant CenterやFacebook広告の審査ボットが遮断されませんか?
推奨の「決済・会員登録のみ遮断」モードをご利用の場合、商品詳細ページやカート画面などは海外にも開放されているため、各種広告審査クローラーが商品ページを巡回する際に遮断される心配はございません。
Q. お客様がIPv6環境(v6プラス・IPoE等)を利用している場合でも正常にアクセスできますか?
はい、エックスサーバーやConoHa、さくらのレンタルサーバなど一般的なホスティング環境(DNSにAレコードのみ設定されたIPv4サーバー)であれば問題ございません。お客様のアクセス時にプロバイダ側で自動的に国内IPv4へ変換されてWebサーバーへ到達するため、通常通り正常に国内判定されて通過します。
ただし、WebサーバーのDNSにIPv6(AAAAレコード)を設定している場合や、Cloudflare等のCDN経由でIPv6が直接Webサーバーへ到達する場合は「国籍判定不可」となり遮断対象となるため、Cloudflareの「Pseudo IPv4(疑似IPv4)」機能等の併用をご検討ください。