【解決12/10】XSERVER上のWordPressにログインできない・投稿できない件
2014/12/12
先日よりChromeの履歴やらクッキーやらを削除して、
別サイトの動作確認をしていたのですが、
急に、PC上からWordPressに一切ログインできなくなりました。
(2014/12/10 2:00 am)
解決することができましたのでご紹介しておきます。
原因はブラウザのクッキーや履歴の削除を行ったことに起因して、
再ログインを求められたことによって発生した模様です。
この動作自体はおそらく仕様変更が以前から行われていたと思われます。
本投稿には一部不正確な部分が残っています。
本事象の根本的な原因等は私の環境に依存するものなのかを検証中です。
あくまでも参考程度にご覧ください。
発生した症状
ログイン時に以下のような画面が表示され、
一切のログイン操作が行えなくなってしまいました。
ダッシュボードに全くログインできなくなったので、PCからの操作は全く行えず。
iPhoneのWordPressアプリからログイン済みの状態で利用していたため、
急遽そちらからこの記事を書いていましたが、
結局保存時に403エラーが発生してしまう結果になりました。
一応、当サイトの設定がおかしいのか、
WordPress(厳密にはJetPack)のサイト統計情報の画面が刷新されたことによる、
ログイン試行エラーが発生しているなどの、要因があるのかはその時点では不明でした。
一旦はXSERVERさんの方へ問い合わせを行いました。
解決しましたら、追ってこちらからご報告致します。
(追記)
無事解決しましたのでご紹介しておきます。
2014/12/11追記
なお、上記の機能とほぼ等々の機能が、以下のレンサバにも導入されています。
- XSERVER (X10にて確認)
- Netowl (minibirdにて確認)
- xdomain (PHP&MySQLサーバーで確認)
XSERVERではサブディレクトリ・サブドメイン共に環境変数を、
.htaccessに設定すれば有効無効を切り替えられます。
しかし、2014/12/10現在はNetowlのminibirdでは、
サブドメインのディレクトリ内に配置した.htaccessへ環境変数を指定しても、
サブドメインでは機能の無効化ができない状況にあります。
その為、サブドメインを対象にブロックが効いてしまうと、
WordPressのダッシュボードに一切ログインできなくなります。
Netowlへ現在問い合わせ中ですが、早々に改善されることを願います。
2014/12/11追記
Netowlのminibirdサーバーに対しての回避策が見つかりましたので、
ご紹介しておきます。
xdomainでは詳細の確認はしていませんが、
こちらは無料のサービスなのでどのような仕様を押し付けられても、
ユーザーは許容するしかありませんので、嫌ならお引越しするという選択しかありません。
対応手順
対応としては、XSERVERのサーバーパネルから、
WordPressセキュリティー設定-[ログイン試行回数制限設定]にて、
設定をOFFにすることで、一時的にはログインができるようになるとされています。
しかし、WordPressセキュリティー設定のすべての設定をOFFにしても、
一向にログイン拒否が解除されない状態に当サイトでは直面しました。
公式手順
公式のヘルプでは、WordPressセキュリティー設定より、
[ログイン試行回数制限設定]を解除することとされています。
エックスサーバー マニュアル | レンタルサーバー 高速・高機能・高安定性の【エックスサーバー】
公式手順で解決しなかった場合は、
すっ飛ばして、以下からどうぞ。
XSERVERのインフォパネルにログインして、
対象の契約サーバーのサーバーパネルにログインします。
サーバーパネルが開いたら左下から設定対象の
ドメインを選択し[設定する]をクリックします。
ドメインの選択が完了したら[WordPressセキュリティー設定]をクリックします。
「WordPressセキュリティー設定」でグイン試行回数制限設定]タブを選択します。
表示されたページにて[OFFにする]をクリックして、
一旦、OFFに変更します。
[ログイン試行回数制限設定]画面では以下のような画面構成になっています。
WordPressセキュリティ設定
国外IPからのアクセスを制限したり、不正なログインを制限する等、WordPressに関するセキュリティを向上させることが出来ます。
- 国外IPアクセス制限設定
- ログイン試行回数制限設定
- コメント・トラックバック制限設定
設定対象ドメイン[xxxxx.jp]
現在の設定 変更 OFF [ONにする] ※短時間に連続してログイン処理(失敗)が行われた場合にアクセスを制限します。
パスワード総当り(ブルートフォースアタック)による不正アクセスを防止します。※ログイン制限は、制限されてから24時間後に解除されます。
※利用者自身が制限された場合は、ご利用時のみ一時的に「OFF」にしてください。
ご利用後は再度「ON」に変更してください。※特別な事情がない場合を除き、「ON」のまま運用されることを推奨します。
OFFの状態にすることで、ログイン画面の制限が一旦解除され、
WordPressにログインが行えるはずです。
※私はこれだけではログインできなかったのですが(後述)
なお、この設定はブラウザなどから一旦ログインしてしまえば、
再びONにしても、操作上は問題ありません。
すぐに[ON]に戻しておくことをお勧めします。
[ログイン試行回数制限設定]変更でもログインできない場合
[ログイン試行回数制限設定]を変更してもログインできないケースとして、
ドメインルート以外に .htaccess ファイルを設置していないでしょうか。
XSERVERのWordPressセキュリティー設定では、
各設定のON/OFFによって、サーバー上の.htaccessファイルに対して、
設定情報が書き込まれるようになっています。
設定の状態と書き込まれる設定値に関しては、
以下でご紹介しています。
今回の[ログイン試行回数制限設定]画面から、
設定をOFFへ変更すると以下のような環境変数設定が書き込まれます。
1 |
SetEnvIf Request_URI ".*" WpLoginNoLimit |
この環境変数の設定によって、
WordPressのログインエラーが頻発した場合にログインをロックするかが決定されます。
ログイン自体は24時間で解放されるとされていますが、
私の場合、2日目になってもログインが継続してロックされています。
実際にアタックを受けているのかは今のところ何とも言えない状況です。
(調査中)
2014/12/11追記
その後、XSERVERサポートからは以下のような回答がありました。
Xsererではサーバーに攻撃を類推するようなアクセスについ
ては
一定の基準で検知しておりますが、お客様のアカウントにおいては
そのような検知はされておりませんでした。———-
ただ、お客様より「誤検知である」との指摘を受ける際に
よく見受けられる原因として、ダッシュボードへのログインページ以外の
ページ・コンテンツに「wp-login.php」が用いられていることがございます。
※ WordPressの構成や利用プラグインによっては
「wp-login.php」がログインページ以外に用いられることがございます。 ———-
該当の【ログイン試行回数制限設定】は、「wp-login.
php」への
アクセス回数でカウントしておりますので、ログインページ以外に
「wp-login.php」が利用されていると、ログインページへのアクセスがなくとも
試行回数制限によるログイン失敗画面が表示されるケースがございます。
実際にアタックを受けていない場合でも、
wp-login.phpへのアクセスが頻繁にあると制限を受けるようです。
これってどうなの?
ユーザーを切り替えてログインを繰り返したら、
それだけでブロックされるんじゃないのかなぁ・・・と。
さて、この環境変数の.htaccessへの設定ですが、
XSERVERのサーバーパネルから設定変更を行った場合に、
更新されるのはルートディレクトリにある.htaccessファイルのみです。
通常WordPressで「サイトアドレス (URL)」に指定したディレクトリにのみ、
.htaccessファイルがあるはずです。
しかし、何らかの事情やこれまでの経緯によって、
複数の.htaccessファイルを配置してしまっている場合には、
公開ディレクトリだけでなく、サブディレクトリ内の.htaccessに対しても、
SetEnvIf Request_URI “.*” WpLoginNoLimit を設定する必要があります。
これは[ログイン試行回数制限設定]だけでなく、
国外IPアドレスからのダッシュボードアクセス制限などの環境変数も同様です。
XSERVERによって更新されてきた環境変数値をコピーして、
サブディレクトリそれぞれの.htaccessへ設定を反映する必要があります。
2014/12/11追記
無効化は簡単に行えますが、
実際にアタックを受けている可能性も否定できないので、
そうした場合には、個別にwp-login.phpへのアクセス制限を行っておくといいでしょう。
以下は、自分のIPのみwp-login.phpへのアクセスを許可している例です。
1 2 3 4 5 6 7 8 9 |
#####wpsecurity_login##### SetEnvIf Request_URI ".*" WpLoginNoLimit #####end:wpsecurity_login##### <Files ~ "^.*\wp-login.php$"> order deny,allow deny from all allow from (自分のIP) </Files> |
当然、固定IP環境以外ではIPアドレスは変化しますし、
都度変更が必要になります。
また、スマホなど他の端末からのIPアドレスも許可しておかないと、
他端末からはログインができませんのでご注意を。
自分のIPアドレスの確認方法は以下で確認できます。
2014/12/11追記
wp-login.php へのアクセスを許可しただけでは、
新規投稿・投稿の保存、カテゴリの追加などその他の操作が結局許可されないようなので、
以下の通り/wp-admin/へのアクセス制御を追記して最終的に対応しました。
さいごに
少し考えれば当たり前のことではあるのですが、
忙しい時にログインができないと、
焦ってしまってあれこれ設定を触ってしまいがちです。
無用なサーバー設定の変更を行う前に、
他の.htaccessによる設定が効いていないかを確認するといいでしょう。
サイトの公開当初に判断を誤って、
WordPressのインストールディレクトリを深い階層に入れてしまったことで、
ややこしい構成になってしまったことを、少し後悔しています。
設計はちゃんと最初に決めておく必要がありますね。とほほ。
参考
いいヒントを頂きましたありがとう!
ドメイン切り替えで国外からのWordPress管理ページ表示が403エラー | 未分類 | 酔っぱらいSEの日常
mod_setenvif について
mod_setenvif – Apache HTTP サーバ
Apache,Apache Hadoop,Apache Subversion,Hadoop,HDFS,HBase,Hive,Mahout,Pigは、
Apache Software Foundationの米国およびその他の国における登録商標または商標です。
ApacheソフトウェアはApache Software License (原文)および
Apache License, 2.0 (原文)に基づきOpen Source Initiativeに承認されライセンスされています。
関連記事
-
サーバーをXSERVERへ移転しました(お名前SD-01プランより)
Google or AdMax Promotion(it) 禁断の機能がau公式 …
-
XSERVERのWordPressセキュリティー設定で設定される.htaccess環境変数
Google or AdMax Promotion(it) 禁断の機能がau公式 …