「WordPress」カテゴリーアーカイブ

【解決済】WordPressのセキュリティでロックされ {“error”:”Bad Request”,”message”:”Invalid input.”} と言われて復旧できない時の対処法

WordPressでJetpackを導入している時にロックされた時の対処法

Jetpackのセキュリティ設定の中の「総当たり攻撃からの保護」が原因でログインできなくなる症状が時々報告されている。
 


曰く、
Jetpackがログインページをロックしました。
「お客様のIPアドレス(xx.xx.xx.x)はセキュリティ違反の可能性があるため、フラグが立てられました。ログインのロックを解除するには、特殊リンクをメールで自分自身に送信します。さらに詳しく」

 
と出てきてWordpressの管理者のメールアドレスを入力させられる。

そもそも管理者のメールアドレスなんか覚えてない場合が多い。
覚えてたとして、メールを送信してきても、その「特殊リンク」とやらをクリックすると
 
Google Chromeでは
{“error”:”Bad Request”,”message”:”Invalid input.”}

FireFoxで
error “Bad Request”
message “Invalid input.”

などと表示され、全然ロックを解除できない。
 
解決法は3つあるのでそれぞれ紹介。
 

解決法1:Wordpress.com から IPのセーフリストに追加

 
まず調べると出てくるのは、Wordpressにログインして、管理画面の「総当たり攻撃からの保護」の欄にセーフIPを記入しろと言われる。
しかし、そのログインができねんじゃー!である。

まあ…一時的にスマホを使ってログインしてもいいのだが。

Akismetなどを利用している場合など、高確率で WordPress.com のアカウントを持っているかと思う。

WordPress.com からも同様にセーフリストにIPを記入することができる。

WordPress.com のアカウントなど無い!もしくはあるかもしれんが忘れたわ!という人は無理なので、次の解決法2か3を参照のこと。

まず、Wordpress.com からログインする。

ログイン後、左上の「My Sites」へ移動。


問題のブログが表示されていればOKだが、されていなければ、その下の「Switch Site」で、該当ブログを選択。


下の方の「設定(Settings)」をクリック。


セキュリティ(Security)の中の「総当たり攻撃からの保護(Prevent brute force login attacks)」の下向き矢印をクリックして開く。


ここの「IPアドレスのホワイトリスト(Whitelisted IP addresses)」に自分のIPを記入する。
ちなみに自分のIPはすぐ上に記載されている。

※ここで注意が必要なのだが、JetpackのセキュリティではじかれているIPとこのIPが一致していない場合は、自分のIPではなく、サーバーのIPをはじいている場合がある。
この場合はサーバーのIPのロック画面に記載されている。(xx.xx.xx.x)も合わせて記入しておこう。

これで解決できれば完了。以下の解決法は見なくていい。

WordPress.com のアカウントとブログのリンクがうまくいってない場合は、設定ができない場合もあるので、その時は解決法2か3を試してみること。

 

解決法2:wp-config.phpにセーフIPを記入

 
FTPソフト、またはWebサーバーのファイルが見れる場所から、wp-config.php をダウンロード。

テキストファイルなどで開いて、中ほどの空白行(/* */とか書いてない場所)に下記のコードをコピペして上書きでアップロードしなおす。

define('JETPACK_IP_ADDRESS_OK', 'X.X.X.X');

x.x.x.xの部分を自分のIPにすること。


こんな感じ。色々書いてあるものは、サーバーや環境によって結構違うので、注意されたし。

これでログインできるようになる。

ログインした後は、管理画面から、Jetpackの設定で「総当たり攻撃からの保護」欄のホワイトリストIPに改めて追加しておく方が無難。

※この方法では、wp-config.phpに記載したIPアドレス1個しか、セーフリストに載らない。複雑な環境下などで、複数のIPアドレスを記載する必要がある場合は、下記を参照。

 

解決法3:プラグインのjetpackごと一時無効化

 
色々あって、どうしても無理な場合は最後の手段。

FTPソフトなどで、Webサーバーにつなぎ、wp-content/plugins/jetpack
の「jetpack」のフォルダ名を変更
する。例えば「jetpack_backup」などに。

するとプラグインの読み込み自体がなくなるので、セキュリティ設定も死に、無事ログインできるようになる。

ログインできるようになった後は、WordPress.comのアカウントを作成した後で、「解決法1」の方法で複数のセーフIPを登録する。

最後に「jetpack_backup」などのフォルダ名を元の「jetpack」に戻すと、jetpackの他の機能も含めて元に戻ってくれる。
 

上記の3つの方法のうちどれか1つで確実に解決できるはずだ。

さくらのレンタルサーバーでログイン画面で500エラー。クイックインストールでも500エラー

さくらサーバーでWordpressが500エラー internal server errorになる

さくらのレンタルサーバーにWordpressをインストールする時にはパーミッションが問題になる場合がある。

だが、パーミッションが問題なくても管理画面(サイト画面も)500エラーになる場合がある。

そのポイントをまとめておく。
 

パーミッションは問題なし!

直接インストールした場合は、フォルダやphpファイルのパーミッションの設定をしておく必要がある。

しかし今回の場合はパーミッションも問題ない

クイックインストールだから、パーミッションに問題がないのも当たり前。

さくらのレンタルサーバーに他のワードプレスも多数インストールしており、他のWordpressは正常に稼働している。

新規にインストールしたWordpressだけが500エラー。

 

色々調べた結果、php.iniが問題だった

まず、さくらのレンタルサーバーではエラーログを確認してみよう。

さくらのインターネットサーバコントロールパネルにログインし、左のメニューから「アクセスログの設定」をクリック。

ページ中ほどの「エラーログの表示 エラーログ」をクリック。

 
エラーログが表示される。下の方が新しいエラーだ。日付を見ながら確認していこう。

[error] [client **.***.0.106] malformed header from script. Bad header=<br />: install.php

このようなエラーが確認できるなら、PHP.iniの編集で500エラーを回避可能。
 

500エラーの回避方法

さくらのインターネットサーバコントロールパネルで

左のメニューから「PHP設定の編集」をクリック。

php.iniで「magic_quotes_gpc = On

となっている。

これは、フォームで送られた全てのデータがエスケープされる。

つまり、PHPのコマンドなどが正常に受け取れなくなる。

まあ小難しい事はどうでもいいので、この箇所ををコメントアウトしよう。

PHPのコメントアウトは 「;」 で可能。

;magic_quotes_gpc = On

とすれば500エラーは回避できる。

さくらのVPSに導入したWordPressでRSSのFeedや、個別記事のページが404 not foundになったら

WordPressでRSSフィードが取得できない時に疑うこと

ワードプレスでは自動でRSSを出力してくれる。その取得URLは下記の通り、

http://example.com/feed/
http://example.com/feed/rss/
か、
http://example.com/?feed=rss
http://example.com/?feed=rss2

他にもあるが、どうでもいいので割愛。

マネージド・レンタルサーバーであれば多分このエラーはレアケース。

ちゃんと指定してもRSSが取得できないケースがある。
VPSにインストールした場合は割とある。
その原因は .htaccess にある。

 

症状

・RSSが取得できない
・直接RSSのURLを見に行くと404エラー(そりゃ取得できる訳もない)
・個別記事も404
・カテゴリーなども404

 

確認

サーバー内(FTPソフトなどで見る)Wordpressのフォルダの .htaccess をダウンロードして中身を見てみよう。

# BEGIN WordPress
<ifmodule mod_rewrite.c=”">
RewriteEngine On
RewriteBase /wp/
RewriteRule ^index\.php$ ? [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

大体こんな感じのものが書かれているはず。

書かれてなければコピペして上書きアップロードで完了。

書かれてるのにダメな場合もある。
よくあるパターンはVPS使っていて .htaccess が無効になっている場合。

 

VPSで個別記事が404になる時の解決法

.htaccess が無効になっているのを有効化する方法。通称黒い窓を触る必要がある。

さくらのVPSで説明するが、他のVPSでもやり方は割と同じ。


さくらの会員メニューにログインする。

「契約情報」→「契約サービス一覧」→「サーバ設定」→「コンソールの中のシリアルコンソール」

なお、シリアルコンソールでなくてもやり方は同じ。

基本的には、マウスは使えない、コピペなど普通にはできない。

キーボードの矢印とコマンドとエンターでやっていく。

[root@www~]#

となっている状態で

vi /etc/httpd/conf/httpd.conf

と入力して(何回か)エンター。

ずらーっと英語が出て来るので

/AllowOverride

とコマンドを打てば検索できる。

「n」 で次の検索結果へ、「N」で前へ検索していく。

# AllowOverride controls what directives may be placed in .htaccess files.
# It can be “All”, “None”, or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None

この 「None」 を 「All」 に変更する。

「i」をキーボードで押すとインサートモードになる。

つまり書き換えができる。

インサートモードで「バックスペース」で削除、普通に記入して

記入し終わったらインサートモードを止める。

「ESC」 でインサートモード終了。

続いて mod_rewrite の検索。

/LoadModule rewrite_module

LoadModule rewrite_module modules/mod_rewrite.so の先頭に # がついていれば、その # を削除。

# はコメントアウトなので、 # の行は無視される。

インサートモードを解除(コマンドモードで)

「:wq」エンターで、上書き保存。

[root@www~]# となってるところで、

service httpd restart エンター

で、 httpd を再読み込み。

これで、.htaccess が効くようになり、404は解消されるはず。