IP Geo Blockとは
IP Geo Blockとは、Webサイトに対して国外IPアドレスからのアクセスのブロック機能を持ち一般公開領域(フロントエンド)と
管理画面領域(バックエンド)に国コードで指定してのアクセスや脆弱性攻撃を遮断することができます。
また、Webサイトへのアクセスを遮断した統計情報を記録しグラフと接続元のIPアドレスや国コードを確認でき
セキュリティ対策の機能を無料で利用できるプラグインとなります。
本記事では、mixhostで無料でのセキュリティ対策と国別でアクセス遮断ができる「IP Geo Block」の導入と設定方法について紹介します。

国コード(別名国名コード)とは、
国際標準化機構 (ISO) により規格化された独立国や非独立地域ごとにつけられる2文字のコードのことで
以下のように国と地域ごとで定められており「IP Geo Block」ではホワイト/ブラックリストでこれを元に遮断を行う対象を指定するのに使用されます。
国・地域名(例) |
コード |
アメリカ合衆国 |
US |
中華人民共和国 |
CN |
日本 |
JP |
ロシア連邦 |
RU |
導入方法
プラグイン導入
ダッシュボードより「①プラグイン欄:新規追加」→「②キーワードに【IP Geo Block】と入力」→「③【今すぐインストール】」→「④【有効化】」の順に選択しプラグインの有効化しましょう。
![]()
設定方法及び機能
IP Geo Blockの設定画面へは、ダッシュボードから【設定:IP Geo Block】をクリックしましょう。
![]()
設定
設定タブでは、以下の設定項目を設定することでアクセスを遮断する「国コード」や規則を適用する領域を指定することができます。
ここでは、設定タブの設定についてとオススメの設定方法について紹介します。
![]()
+マークの見出しをクリックすると展開表示をします。
検証ルールと振る舞いの設定では、遮断する対象や規則(ホワイト/ブラックリスト)や遮断時の表示内容などが設定できます。
注意
「マッチング規則」で指定したリストによりアクセスの遮断を行う為、Googleのクローラーやbotなど、
弾くと不都合があるIPアドレス範囲も弾いてしまう場合があり試験稼働用のサイトや「ミュレーション・モード」を
使用して【ログ】による確認をオススメします。
IP Geo Blockの公式ペルプへはこちら リンク先を新しいタブで開きます。
項目 |
内容 |
オススメ設定や入力例など |
①あなたのIPアドレス / 国コード |
アクセスしているグローバルIPアドレスと
国コードが表示されます。 |
「国コードを検索する」をクリックすることで
国コードを確認することができます。
※【ローカル・データベースの設定】の項目にてデータベースのダウンロードを事前に行う必要があります。 |
②マッチング規則 |
以下のアクセスを許可する方式を選択します。
・「ホワイトリスト」:リストで指定したものだけ許可する。
・「ブラックリスト」:リストで指定したものだけ不許可にする。 |
・「ホワイトリスト」:アクセスを対象(日本国内のみなど)だけ許可する場合。
・「ブラックリスト」:アクセスを対象(特定国のみなど)からのアクセスを不許可にし遮断する場合。 |
③国コードのホワイト/ブラックリスト
(ISO 3166-1 alpha-2) |
「マッチング規則」にて選択した方式で表示が変化し
リストの対象となる国コード(アルファベット2文字)を指定します。 |
ホワイトリストで日本国内のみだけ許可する場合
・入力例:JP
ブラックリストで「位置情報未登録」と「全ての国をマッチ」場合
・入力例「位置情報未登録」:ZZ
・入力例「全ての国をマッチ」:YY |
④AS番号を使用可能にする (ASN) |
「マッチング規則」に対してIPアドレスの代わりに
自律システム番号 (ASN)を指定可能とする。 |
「 無効」
※特定組織のIPアドレス群を指定する場合は
「 有効」 |
⑤IPアドレスを追加抽出する
$_SERVER のキー |
プロキシーサーバーを経由したリクエストの場合、経由した複数サーバーのIPアドレス が特定のHTTPヘッダフィールドに格納される場合があります。
その様なIPアドレスの 全てを検証の対象とするために、HTTP_X_FORWARDED_FOR や HTTP_CLIENT_IP など、 PHPで取得可能なキーを設定します。 |
プロキシサーバーを経由しているアクセス元のIPアドレスなどの検証が必要な場合、以下ような$_SERVER(サーバー変数)を追加しましょう。
・HTTP_X_FORWARDED_FOR
・HTTP_CLIENT_IP |
⑥国コードに優先して検証する
IPアドレスのホワイト/ブラックリスト
(CIDR, ASN) |
通過か遮断させるIPアドレス群やAS番号 (ASN)を指定します。
※項目の横にある電卓マークをクリックすると「IPv4/IPv6用CIDR変換電卓」を使用でき連続するIPアドレスをCIDRに変換が可能です。 |
設定例
・IPアドレス:192.168.0.0
・連続するIPアドレス(CIDR):192.168.0.0/16
・自律システム番号 (ASN):AS32934 |
⑦悪意のあるシグネチャ |
悪意のあるリクエストを遮断するために、クエリから検索すべき悪意のある 文字列を指定します。
※コメントや記事の中身は検証対象からは除外されます。 |
・デフォルトで管理領域など設定されており、
以下のコマンドの文字列を追加するをオススメします。
../,/wp-config.php,/passwd curl,wget,eval,base64 |
⑧悪意のあるアップロード防止 |
プラグインやテーマの脆弱性を狙う悪意のあるファイルのアップロードを阻止するルールを設定し以下の適用をします。
・許可する MIME タイプのホワイトリスト
・禁止するファイル拡張子のブラックリスト
・検証する権限 |
「拡張と MIME タイプ検証」
※「許可する MIME タイプのホワイトリスト」の▼をクリックすると許可するファイル形式が選択でき、基本的には変更不要ですがチェックの無いファイルをアップロードをする場合は、対象にチェックを追加しましょう。 |
⑨メタデータの改ざん防止 |
データベース内の情報が改ざん・悪用されることを
防止します。 |
「 有効」 |
⑩レスポンス・コード (RFC 2616) |
遮断時に応答する HTTPステータスコード を指定します。 |
「403 Forbidden 」 |
⑪レスポンス・メッセージ/リダイレクト先 URL |
4XX および 5XX は、シンプルなインターフェース wp_die() で
表示する メッセージを指定します。
別途、テーマの 404.php をテンプレートとする ヒューマン・フレンドリーなエラーページ を設定することが出来ます。 |
「レスポンス・コード (RFC 2616)」の選択で自動で変更される為、基本的には変更不要です。
・「Sorry, your request cannot be accepted.」(訳:申し訳ありませんが、リクエストは受け付けられません。) |
⑫検証のタイミング |
このプラグインによる検証の実行タイミングを指定します。
・"int アクションフック":テーマやプラグインの読み込み後
・muplugins_loaded:テーマやプラグインの読み込み前
通常、プラグインの安全な実行タイミングは アクション・フック の init ですが、となるため、遮断時には無駄な サーバー資源を消費することになります。この無駄を省くため、muplugins_loaded を選択することが出来ます。 |
「muplugins_loaded(ip-geo-block-mu.php)」 |
⑬シミュレーション・モード |
このオプションを有効にした場合、検証を模擬するだけで、実際には遮断しないように 振る舞わせることができます。検証結果は「ログ」上で確認することができるので、 設定したルールが意図通りに働いているかどうかを事前にチェックすることができます。 |
「 無効」
※動作確認時のみ「 有効」としましょう。 |
![]()
WordPress には、サイトに何らかの影響を及ぼす重要なバックエンドへの入口、即ち エンドポイントがあります。このセクションでは、特に重要なエンドポイントに対する リクエストを検証するルールを設定します。
この設定に関しては、プラグイン側でプリセット設定が用意されており【プラグインの設定】から「バックエンドの推奨設定」で設定変更が出来ます。
IP Geo Blockの公式ペルプへはこちら リンク先を新しいタブで開きます。
項目 |
内容 |
オススメ設定や入力例など |
①コメント投稿 |
wp-comments-post.php へのリクエストを検証します。 |
国コードで遮断:「 有効」 |
②投稿フォーム上の
メッセージ |
テンプレートのアクション・フック comment_form または
comment_form_top をトリガーに、投稿フォーム上に出力するメッセージを
設定します。
以下のタグが使用可能です:<a> , <abbr> , <acronym> , <b> , <cite> ,
<code> ,
<del> , <em> , <i> , <q> , <s> , <strike> , <strong>
|
例:「Sorry, your request cannot be accepted.」 |
③XML-RPC |
xmlrpc.php へのリクエストを検証します。
・無効
・国コードで遮断
・完全に閉鎖 |
「国コードで遮断」 |
④ログイン・フォーム |
wp-login.php 、wp-signup.php へのアクセスを検証します。 |
・国コードで遮断:「 有効」
対象アクション
・ログイン:「 有効」
・登録:「 有効」
・パスワードのリセット:「 有効」
・パスワード紛失:「 有効」
・パスワード保護:「 有効」 |
⑤IPアドレス当たりの
ログイン試行可能回数 |
ログイン試行可能な最大回数を設定します。
※【プライバシーと記録の設定】の【IPアドレスをキャッシュに記録】を
有効化する必要があります。 |
「5」or「10」 |
⑥管理領域 |
wp-admin/*.php へのアクセスを検証します。 |
・国コードで遮断:「 有効」
・ゼロデイ攻撃を遮断:「 有効」 |
⑦管理領域 ajax/post |
特に wp-admin/admin-ajax.php と wp-admin/admin-post.php へのリクエストを 検証します。 |
・国コードで遮断:「 有効」
・ゼロデイ攻撃を遮断:「 有効」 |
⑧プラグイン領域 |
wp-content/plugins/⋯/*.php へのリクエストを遮断します。 |
・「ゼロデイ攻撃を遮断」
・WPコアの読み込みを強制:「 有効」
・▼例外:アクティブ(色が濃い)項目「 有効」 |
⑨テーマ領域 |
wp-content/themes/⋯/*.php へのリクエストを遮断します。 |
・「ゼロデイ攻撃を遮断」
・WPコアの読み込みを強制:「 有効」
・▼例外:アクティブ(色が濃い)項目「 有効」 |
![]()
このセクションでは、望まない国からの一般公開ページ、即ちフロントエンドへの アクセスを遮断するルールを設定します。
※この設定を無効にした場合でも、【検証ルールの設定】で設定 した以下の内容は有効となりますので注意しましょう。
- 「国コードに優先して検証するIPアドレスのホワイトリスト/ブラックリスト」
- 「悪意のあるシグネチャ」
- 「悪意のあるアップロード防止」
IP Geo Blockの公式ペルプへはこちら リンク先を新しいタブで開きます。
項目 |
内容 |
オススメ設定や入力例など |
①一般公開ページ |
「国コードで遮断」を有効化し、特定国からのリクエストを遮断します。 |
国コードで遮断:「 無効」 |
②マッチング規則 |
次の中から1つを選択します:
- [検証ルールの設定]に従う
- ホワイトリスト
- ブラックリスト
ホワイトリストまたはブラックリストを選択した場合には、「検証ルールの 設定」とは
別に、国コードや遮断時の応答ルールを設定することが できます。 |
・【ホワイトリスト】 |
③国コードのホワイト/ブラックリスト
(ISO 3166-1 alpha-2) |
「マッチング規則」にて選択した方式で表示が変化しリストの対象となる国コード(アルファベット2文字)を
指定します。
※国コードによる遮断が適切ではない、または特定のボットやクローラー だけを遮断する場合、
「国コードのホワイトリスト」を「空欄」に設定すれば、 「ユーザーエージェント文字列と条件」の
ルールだけを適用することができます。 |
「空欄」 |
④レスポンス・コード (RFC 2616) |
遮断時に応答する HTTPステータスコード を指定します。 |
「307 Temporary Redirect」 |
⑤リダイレクト先 URL/レスポンス・メッセージ |
2XX および 3XX 用のリダイレクト先URLか表示するメッセージを指定します。
※リダイレクト先URLを空欄にした場合は、ホームへリダイレクトします。 |
「空欄」 |
⑥検証対象 |
以下のどちらかを選択します:
- 全てのリクエスト
フロントエンドへの全リクエストを検証対象とします。このオプションを選択した場合 に限り、 キャッシュ・プラグインとの互換性をとることができます。
- ターゲットを指定
ページ、投稿タイプ、カテゴリ や タグ で検証対象を指定します。 このオプションを選択した場合、URL からこれらのターゲット情報を取得するため、 「検証のタイミング」は wp アクション・フックまで 遅延され、またキャッシュ・プラグインとの互換性も失います。
|
「全てのリクエスト」 |
⑦行儀の悪いボットやクローラーを遮断 |
短時間で多くのリクエストを繰り返す、行儀の悪いボットやクローラーを遮断します。
せっかちな訪問者にも不快な思いをさせない程度に、観測期間とページ要求の回数を 設定してください。 |
「 無効」 |
⑧ユーザーエージェント文字列と条件 |
検証対象からは外したい検索エンジンのボットやクローラー、あるいは国コードでは
弾けないリクエストなどに対するルールを、「: 」(通過)または「# 」(遮断)で
区切られた「ユーザーエージェント文字列」と「条件」のペアで設定します。 |
「Google:HOST,bot:HOST,slurp:HOST
spider:HOST,archive:HOST,*:FEED
embed.ly:HOST,Twitterbot:US,Face」 |
⑨DNS 逆引き |
「条件」中の HOST にホスト名(の一部)を指定可能にします。
無効の場合、HOST 及び HOST=… は 常に「真」として扱います。 |
「 無効」 |
![]()
プライバシーと記録の設定では、遮断時の情報を可視化する【統計】と【ログ】の機能を有効化する設定とIPアドレスのキャッシュなどに
関する設定でき基本的には変更不要です。
IP Geo Blockの公式ペルプへはこちら リンク先を新しいタブで開きます。
項目 |
内容 |
オススメ設定や入力例など |
①IPアドレスを匿名化する |
GDPR では、IPアドレスは個人情報と見做されます。このオプションを 有効にすると、
単体では個人が識別できないよう、記録時に IP アドレスの末尾を *** でマスクします。 |
「 有効」 |
②外部APIへの送信を制限する |
データ管理者が EU 経済圏から圏外のデータ・プロセッサに個人情報を移動させるには、
両者の間で Data Processing Agreement が必要です。
このオプションを有効にすると、 取得した IP アドレスを外部の位置情報 API へ送信しません。 |
「 有効」 |
③IPアドレスをキャッシュに記録 |
このプラグインでは、国コード、ホスト名、ログイン失敗回数などを IP アドレスに 紐付けて検証を実行します。
このオプションを有効にすると、これらを一定期間 キャッシュに保持し、
国コードやホスト名の重複検索を避けサーバー負荷を減らすと 共に高速に動作させることができます。 |
「 有効」 |
④各エントリーの有効期間 [秒] |
キャッシュを保持する時間を秒単位で指定します。
※デフォルト:3600秒(1時間) |
「3600」 |
⑤検証のログを記録 |
このオプションを有効にすると、「ログ」画面で検証結果の履歴を閲覧できるように なります。 |
「遮断時に記録」 |
⑥各エントリーの有効期間[日] |
ログ中の各エントリーは、このオプションで指定される期間を過ぎるか、
最大エントリー数(デフォルト:500)を超えると自動的に削除されます。 |
「7」 |
⑦内容を展開する$_POSTのキー |
HTTP メソッド POST でリクエストされた場合、指定したキーに対応する
メッセージ・ボディ中のデータを展開し、安全な形で記録します。
以下の例は、 キーに log と pwd を指定した場合に、wp-login.php 宛に
リクエスト されたログイン名とパスワードが記録された様子を示しています。 |
「action,comment,log,pwd,FILES」 |
⑧ガベージコレクション周期[秒] |
このオプションで、IPアドレスのキャッシュ 及び 検証のログ 中の有効期限の
過ぎたエントリーを削除する周期を指定します。
※デフォルト:900秒(15分) |
「900」 |
⑨検証の統計を記録 |
全遮断数、国別遮断数、1日あたりの遮断数、遮断したIPアドレスの タイプ、
API毎の平均応答時間などの統計データを記録し、「統計」画面に 表示します。 |
「 有効」 |
⑩アンインストール時に設定と記録を全て削除 |
アンインストール時に、このプラグインの設定や記録された IP アドレスを
含む全データをデータベースから削除します。 |
「 有効」 |
![]()
本プラグインでは、Maxmind と IP2location が配布する 複数の IP アドレス位置情報データベースをオンサイトで活用します。
【検証ルールと振る舞いの設定:①あなたのIPアドレス / 国コード】などIPアドレスに関する情報を利用する為に
「データベースのダウンロード:今すぐダウンロード」をクリックしましょう。
IP Geo Blockの公式ペルプへはこちら リンク先を新しいタブで開きます。
![]()
統計
統計は、【プライバシーと記録の設定】の「検証の統計を記録」を有効にすることで全遮断数、国別遮断数、1日あたりの遮断数、遮断したIPアドレスのタイプ、
API毎の平均応答時間などの統計データが記録され確認することができます。
ログ
ログは、【プライバシーと記録の設定】の 「検証のログを記録」を有効にすることで【ログ】画面で検証結果の履歴を閲覧できるように なります。
![]()
検索
検索は、【統計】や【ログ】から得た接続元のIPアドレスを検索することで、「Whois(IPアドレスの詳細)」やGoogleMap上で位置情報を確認できます。
※IPアドレスによっては、GoogleMapの位置情報が正しく表示されない場合もあります。