NeGiMeMo.net

ねぎさんのメモ帳。日常・メモ・ときどきWordPress。

うちのサイトになんか仕込まれていた件

bell賞味期限切れコンテンツ

この記事は公開または最終更新から891日くらい経過しています。
このメッセージが表示されている記事(特にプログラミング系)は情報が古くなっている可能性があるので注意して下さい。

Facebookから見慣れない通知が来てたので見てみたところ、外人さんからのメッセージが届いていました。

それだけなら「あー、知らないうちにワールドワイド?」とか言ってられたんですが、内容を読んでみたらどうもそういうわけではなさそう。

もらった内容はこんなかんじでした。

Someone has installed a Google Phishing page in your WordPress install (ここに該当ページへのURLが載っていた) You may want to see where the secure details are being siphoned off, remove it, and check your security settings.

一応ファイルの場所に関しては伏せてみました。一応。

はい。英語の成績はあまり良くなかった自分ですが、それでもGoogle翻訳を使わなくても自分でもある程度読めました。曰く、

誰かがアンタのWordPressにグーグルのフィッシングページを仕込んでるから削除してね。あとセキュリティの設定もチェックしてね。

みたいな感じだとおもいます。((あとでGoogle翻訳かけてみたところ、「誰かがインストールし、あなたのワードプレスでグーグルフィッシング詐欺のページをインストールされています(URL削除)
 セキュア詳細はそれを削除し、吸い上げ、およびセキュリティ設定を確認している場所を確認することができます。」とのことだったので、まぁ、だいたい合ってた?))

怪しいファイルが悪さ出来ないようにする

ということで、FTPソフトでログインしてみると、確かに該当ディレクトリに最近謎のファイルが追加された形跡がありました。

20140624_1

とはいえ、このディレクトリはコアファイルが入っている場所。下手に削除して動かなくなるのはよろしくありません。

ということで、ローカルにインストールされているWordPressの同じディレクトリを開き、そこにないファイルので更新日が新しいものを調べてみると、「ID3」フォルダ以外は後から増やされているもののようです。

更に「ID3」のなかにも1つだけ更新日が新しい「header.php」というものがあり、それもどうやら不要なもののようでした。(中身は1つ上の階層にあるheader.php同様、eval(gzinflate(base64_decode(‘中略’))) でかかれたPHPファイル。因みに複合すると過去にいちどやらかされたときの謎のアップローダー(?)画面のようでした。

ということはこれは前回の修正の時の取りこぼし…?

兎に角、こいつらを一旦パーミッション000にして様子見中ですが、週末にでも再インストールしようかとも思っています。他にもなんかなってたら嫌だし。

ここまでがまずは怪しいスクリプトの停止について。

続いてセキュリティの設定の見直しです。

管理画面にBASIC認証をかける

前回遭遇した時はWAFの設定とFTPパスワードの見直しだけで、実は管理画面のアクセス制限はかけていませんでした。というのも自分は何箇所からか更新することがあるし、固定IPではないためちょっとしたタイミングでアクセスできなくなるのも不便だなと思ってたからです。(結果それがまずかったのかもしれませんが)

で、調べてみたところ、アクセス制限じゃなくて、BASIC認証をつかって管理画面のログイン情報とは別にパスワード認証をかけるほうほうが有ることを知ったので、その方法を採用することにしました。

BASIC認証の設定方法

BASIC認証には、.htaccess と .htpasswd という2つのファイルをつかいます。

.htaccess は WordPress をしばらく触ってればなんとなく聞いたことがある人も多いかもしれませんが、サーバーのいろんな設定をディレクトリ単位で変更できるファイルです。アクセス制限とか認証といった設定もここでやるわけですね。他にもキャッシュの設定とか、WordPressのパーマリンク設定でお馴染みのMOD_REWRITEなんかもここで設定しています。

.htpasswd はあまり聞き慣れないかもしれませんが、これはBASIC認証の際に入力するユーザー名とパスワードの情報が書かれています。
で、認証するときにこのファイルを参照して入力されたユーザー名とパスワードの組合せが正しいかを判断してるんですね。きっと。

.htpasswdの作成

ということで、まずはこのパスワードファイルを作成します。

.(ドット)から始まるファイルはちょっと特殊なファイルなのでローカルで作ろうとすると地味に面倒くさかったりしますので、今回はロリポップFTPから作業しました。

ロリポップFTPから WordPressのインストールディレクトリまで移動し、新規ファイル作成をクリックします。

20140624_2

ファイル名を「.htpasswd」ファイルの属性は「604」に設定します。

そしてユーザー名とパスワードを書くのですが、そのまま書いても動作しませんのでちょっと特殊な書き方(暗号化)をします。
何故かと言うと、つまりそれってこのファイルがバレたらパスワードがばれてしまうってことになりますよね。多分そんな感じなんじゃないかと。

なので、暗号化も確か一方向タイプで、複合はできなかったはずです。認証するときは同じ条件で都度暗号化して、暗号化された状態を比較してるんだと思います。たぶん。

やりかたはいろいろありますが、今回はぱぱっと作成できるこのサイトを利用しました。

htpasswdファイル生成(作成)

使い方は簡単で、「ID」と「Password」にそれぞれ認証に使いたいID(ユーザー名)とパスワードを入力して「生成」を押すと、「.htpasswd」の欄に生成されますのでこれをそのまま全部コピーします。

20140624_3

で、これを、さっきのロリポップFTP画面にもどって下の本文テキストフィールドに貼り付けます。

貼り付けた後改行してファイルの末尾に1行あけておくのも忘れずに。やらないとうまく動かないらしい。

で、ファイルを保存したらパスワードの準備は完了です。

続いて、.htaccess を編集します。

.htaccessの編集

WordPressでパーマリンクの設定とかしてたら多分もう既に .htaccess は有ると思うので、それをそのまま修正します。ついでなのでこれもロリポップFTPでやってしまいましょう。

一覧に戻ってから .htaccess をクリックして編集画面に入り、以下のように追記します。

 書式については、こちらの記事を参考にしました。
WordPressの管理画面とログイン画面にBasic認証を適用する.htaccessの記述 | Simple Colors

ロリポップの場合、嵌りそうなのが、.htpasswdまでのパスと、AuthGroupFile の設定でしょうか?

いずれもロリポップのマニュアルに書いてありましたが、はじめ気付かずに何度やってもパスワードが通らないってことがありました。

まず、.htpasswd までのパスですが、これはフルパスで書く必要があります。つまり、ロリポップの場合、

/home/users/0/lolipop.jp-(ロリポップ!のドメイン)/web/

がフルパスになります。ロリポップのドメインってのは、よくメールとかFTPの設定とかでいれるdpなんたら〜ってやつです。

これは、ロリポップのユーザーページにログインして、「アカウント情報」というページに入ると、下から3番目あたりに書かれてます。

これらを正しく設定したら、保存してからWordPressのログイン画面を開いてみましょう。認証がでてきましたか?

でてきたら成功です。出てこない場合はためしにブラウザを再起動したり他のブラウザで試してみたりしてください。それでも出ない場合はどっか設定が間違えてるかもしれません。

逆に入力ダイアログは出るけどパスワードを何度入れても通らないって場合は、上記のパスとか末尾の改行とかを疑ってみてください。

TAGS