WordPressにおけるセキュリティ対策として、各社レンタルサーバーなどで海外IPからのアクセスをすべてブロックする「海外IPアクセス制限」がとられることがあります。
ただし、運用面では誤動作のような挙動で問題となることもあり、「本当に海外アクセス制限は必要なのか?」「なぜ海外からのアクセスを制限する必要があるのか?」という観点から、海外IPアクセス制限の必要性と、制限を解除する場合の代替手段について解説いたします。
目次
WordPressセキュリティ対策における海外IPアクセスの制限の問題点と必要性
WordPressセキュリティ対策の1つに"海外アクセスの制限" があります。
たとえば、エックスサーバーはWordPressのセキュリティ機能として、"国外IPアクセス制限設定"というものがあり、この機能をONにすることが強く推奨されています。
この"国外IPアクセス制限設定"の"ダッシュボード アクセス制限"をONにすると、日本国外からの海外IPによるログインおよびダッシュボード画面へのアクセスをすべてブロックするという挙動に。
なお、エックスサーバーのダッシュボードアクセス制限は、具体的には下記の場所へのアクセスを制限します。
・/wp-admin … ダッシュボード のフォルダ
・/wp-login.php … ダッシュボード ログイン時にアクセスするファイル
国外IPアクセス制限設定 | WordPressセキュリティ設定 | レンタルサーバーならエックスサーバー
セキュリティ上のログを見ていると、クラッキングを疑われる痕跡があるのは海外IPによるアクセスの割合が非常に高いです。
一部、おそらくVPN (Virtual Private Network)を経由させて攻撃してくるクラッカーもいますが、bot等による攻撃は海外IPを一律でブロックすることで、大部分の攻撃を防ぐことが可能になります。
海外IPアクセスの問題点。国内からの通常アクセスも海外として判定されブロックされてしまう
しかしこの海外アクセス制限、運用面では面倒になることが多い。通常の運用をしていても、国内からのアクセスなのに海外からのアクセスとしてブロックされたりします。
この原因の1つには、ユーザーが契約しているWifiサービスが海外サーバーを経由させる仕組みとなっていることが挙げられます。
また、CloudFlareなどのCDN(Contents Delivery Network)を利用している場合にも弾かれてしまうケースが多くなります。
一時的な対処方法として、VPN(Virtual Private Network)を利用し、明示的に日本国内のサーバーを経由させることて回避することが可能。
しかし、毎回VPN接続することが面倒だったり、CDNを利用している場合には完全に回避できないケースもあり、運用上の負担となることもしばしば。
このため、"海外アクセス制限を解除したい"というご依頼を受けることがあります。
海外アクセス制限の必要性。セキュリティリスクとサイト速度・パフォーマンスへの影響
しかし単純に海外アクセス制限を解除してしまうと、セキュリティリスクが大きく高まります。
海外IPアクセス制限を実施する利用の1つに、ログインへのブルートフォースアタック(総当たり攻撃) が挙げられます。
海外アクセス制限を解除してしまうと、海外の悪質なbotがログイン画面への総当たり攻撃を仕掛けてくる可能性が高くなるのです。
侵入されるリスクももちろんですが、総当たり攻撃がもたらす"速度への影響"も深刻。
WordPressはログイン情報が入力されたとき、その度にデータベース内のユーザー情報と照合します。
そのため、総当たり攻撃を受けるとサーバーやデータベースへの負荷が大きくなり、その間サイトのパフォーマンスが低下、表示速度が遅くなるのです。
ブルートフォースアタックによってユーザーIDとパスワードを何回もサーバーにリクエストされてしまうので、サーバやデータベースに負荷が掛かってしまい、サイトパフォーマンスに影響を及ぼします。
プラグインを使わずWordPressログイン画面のセキュリティ対策にhtaccessでBASIC認証を設定してブルートフォースアタックを防御 | インフォコネクト株式会社
したがって、海外アクセス制限に代わる何らかのセキュリティ対策を行うことが必要です。
海外アクセス制限に代わるWordPressセキュリティ対策
まずはWordPressアップデートとプラグイン更新をしっかりと
まずそもそもとして、WordPressおよび各プラグインを最新版に保つことは大前提です。
つまるところ、WordPressでは最新版に保ち脆弱性の穴をふさぐ、ということが最大のセキュリティ対策となります。
これに加え、セキュリティプラグインを導入するなどの追加のセキュリティ対策を行いましょう。
WordPressアップデートの重要製は、webセキュリティやわらか「超入門」 | まほウェブ の記事でもお話させていただきました。
実際にアップデートを怠ったことで、サイト乗っ取りの被害を受けた体験談です。
最強のログインセキュリティ対策「2段階認証」(2FA)を設置
現時点での最強のログインセキュリティ対策は、2段階認証です。
2段階認証を設置し確実に運用をしておけば、ログイン画面から総当たり攻撃で侵入されることは"まずない"とされています。 WordPressに2段階認証ログインを設置・設定する方法について、詳細は下記の記事よりご確認ください。
WordPressの2段階認証ログインをAuthyとWordfenceを用いて実装。設定方法と手順 | まほウェブ
おすすめのセキュリティ対策プラグイン「Wordfence」と2段階認証の鍵管理アプリ「Authy」を組み合わせて実装する方法にてご紹介しています。
速度・パフォーマンス対策としてログイン試行回数制限設定とBASIC認証をログイン画面に設置
上記アップデートや2段階認証を実施しても防げないのが、総当たり攻撃によるWordPressサイトパフォーマンスの低下です。
海外IPアクセス制限を外したままだと、海外アクセスからWordPressログイン画面が無防備に。総当たり攻撃を受けることでパフォーマンスが低下。サイト表示速度が遅くなってしまいます。
WordPressログイン試行回数の制限を設定する
ご契約のサーバーにログイン試行回数制限設定があれば、ログイン試行回数を一定の回数に制限するようにしましょう。
たとえば、エックスサーバーでは ログイン試行回数設定 | WordPressセキュリティ設定 が設定可能です。
ログイン試行回数については、サーバー機能以外にWordPressにおけるセキュリティプラグインでも対応しているものがあります。
ただし、ログイン試行回数を制限しても、"ログイン試行回数の上限までは攻撃を仕掛ける" ということは可能です。
数が少なければ大丈夫でしょうが、botの数が増えてきたりするとサイトパフォーマンスを低下させ速度低下の一因となります。
下のWordPressダッシュボードへのBASIC認証も合わせて実装しましょう。 実質的には合計で3段階のログインとなります。
BASIC認証でWordPressログイン画面を保護する
BASIC認証を設置することで、WordPressへのログイン画面より前に"BASIC認証のログイン画面" を表示させることができます。
そもそものBASIC認証についてや設置方法、またよくある5つの間違いについて、下記記事で紹介しています。
Basic認証が効かない5パターンの対処と.htacessファイル作成方法 | まほウェブ
BASIC認証は暗号化したファイル内での照合となり、データベースからユーザー情報を呼び出しての照合作業とは異なります。そのため、データベースに大きな負荷をかけることなくbotからのログイン攻撃を防ぐことが可能。
しかし、海外IPからのアクセスを「すべてブロックする」海外IPアクセス制限機能に比べて、BASIC認証はあくまでパスワード認証です。
パスワード認証である以上、総当たり攻撃などにより突破される可能性があります。利便性を求める運用とセキュリティ対策はトレードオフになることが多く、本件もセキュリティとしては弱くなってしまうことは留意してください。
そのため、BASIC認証では少しでもセキュリティ強度を高める工夫が必要。
具体的には、BASIC認証パスワードを可能なかぎり長く、推測されにくい複雑なものに設定しましょう。BASIC認証の部分自体は総当たり攻撃の標的となるため、それに耐えうる強度のパスワードにする必要があるのです。
目安として、16桁以上がおすすめです。(あくまで個人的な目安)
またBASIC認証ではログインIDは平文で保存されており容易に見られてしまう可能性があるため、IDについては短くても構いません。
BASIC認証を設定する範囲として、WordPressインストールディレクトリ上にある下記2つのファイル・フォルダにBASIC認証をかけるようにしましょう。これでログイン画面にBASIC認証をかけることができ、ダッシュボードも保護することが可能です。
/wp-admin … ダッシュボード のフォルダ
/wp-login.php … ダッシュボード ログイン時にアクセスするファイル
WordPressにおける上2つのログイン画面をBASIC認証によってアクセス制限する方法は、下の記事で詳細な方法を說明しています。
WordPressログイン画面とダッシュボードにBASIC認証でアクセス制限をかける方法 | まほウェブ
“WordPressのログインセキュリティ対策としてのBASIC認証はサーバーパネル等からwp-adminフォルダさえ制限をかければよい”
としている記事が多いですが、私はそれでは不十分と考えます。
ぜひ上の記事から詳細をお読みください。
Leave a Reply