WordPressで攻撃を受けやすいファイルとそのセキュリティー対策まとめ

先日、当サイトがやたら重くなり、500エラーを頻出したことがありました。

500_internal_server_error

そのときは、以下の対策をとって、それ以降は500エラーを見ることはなくなりました。

最近やたらとWordpressが攻撃されて500エラーになるので行ったセキュリティー対策まとめ
このサイトの運営にはエックスサーバーを利用しています。 僕はこのサーバーの最も安いプランを利用しているのですが、これがまたとても優秀で...

上記の記事では、サイトがエラーになる原因はxmlrpc.php(ピンバックをしたり、アプリから投稿したりするファイル)であろうと、あたりをつけ、そのファイルに対して主に対策を行いました。

けれど、「実際にxmlrpc.phpへの対策でよかったのか?」「その他に攻撃されているファイルはなかったのか?」と気になったので、サーバーからアクセスログを取り寄せて、調べてみたらを多く攻撃を受けているPHPファイルがわかりました。

今回は、その結果を書きたいと思います。

あくまでも、当サイトへのアクセス結果です。

スポンサーリンク
レクタングル(大)広告

アクセスログの取得

まずは、サーバーからアクセスログを取得します。

僕は、今エックスサーバーしか利用していないので、その方法を書きます。

エックスサーバーの場合はサーバーパネルからログインしてパネルを開きます。

そして、「統計」項目の「ログファイル」をクリックします。

ログファイル

あとはドメインを選択して、

ドメインを選択する

ダウンロードするだけです。

アクセスログのダウンロード

エックスサーバーデフォルトの場合は「nelog.jp.access_log」というファイルがダウンロードされます。

このアクセスログには、すべてのファイルへのアクセスに対する「1週間のログ」が書き込まれています。

すべてのファイルへのログなので、当サイトの場合だと2GB以上あり、600万行以上のテキストになっていました。

アクセスログの解析方法

これら膨大なアクセスログから、一つ一つ怪しいファイルを見ていくのは不可能なので、簡単な解析用コードをRubyで書きました。

WordPressが攻撃される場合は大抵、xxxxx.phpのような実行権のあるファイルに対して行われます。

通常のWordpress閲覧ユーザーは、.phpと拡張子がついたファイルにアクセスすることはまずないと思います。ですので、自分のアクセスを除いた「.phpファイル」へのアクセスは、スクリプトなどで何かよからぬことをしようとしている攻撃元と思って良いのではないかと思います。

で、そういった「.phpに直接アクセスされたファイルを抽出するコード」が以下です。

Rubyをインストールした環境(1.9.3と2.2で動作確認)で、「nelog.jp.access_log(ログファイル名)」と「xxx.xxx.xxx.xxx(あなたの固定IP)」を変更して、実行すれば、どの.phpファイルにアクセスが集中しているか並べ替えて表示されます。

ちなみに、自分の固定IPは、アクセス情報【使用中のIPアドレス確認】から取得できます。(固定IPでないと意味はありません)

実行してみると、以下のように、アクセスが多かったファイルから順番にファイル名がリストアップされます。

:の左側がファイル名、右側がアクセス数です。

アクセスの多かった.phpファイルトップ10

以下は、アクセスの多かったPHPファイルと、そのファイルに対する攻撃への対策を紹介したいと思います。

1位 /wp-admin/admin-ajax.php : 78916アクセス

1位は、admin-ajax.phpになりました。

ただこれは、テーマやプラグインが、Ajaxを使用している場合、通常利用されるファイルなので、これは攻撃ではないと思います。

ブルートフォース攻撃 – WordPress Codex 日本語版にも以下のように書かれていて、アクセス制限をかけていても、admin-ajax.phpを除外するように書かれています。

テーマやプラグインが AJAX を使用している場合、.htaccess に追加の設定を記述して、それらがうまく動作するようにする必要があります。

ですので、admin-ajax.phpへのアクセスは、通常のWordpress閲覧ユーザーからのもので、そこまで問題視する必要はないと思います。

対策

ただ、導入しているプラグイン等によってはクロスサイトリクエストフォージェリの脆弱性をつかれる恐れもあるので、Ajaxなどで非同期で情報を取得するプラグイン等を利用している場合は、アップデートをコマメに行うなどの注意は必要かもしれません。

2位 /xmlrpc.php : 6570アクセス

やはり、先日500エラーが多発した原因の実質1位ははこれだったのではないかと思います。

こんなアクセス。

国外IPから、やたらこのファイルにポストするアクセスが来ていました。だいたい一日に1000アクセスぐらいなのですが、これが満遍なく来るわけではなく、ある時間に集中してきたりするので、サーバーに不可となり500エラーが出たのではないかと思います。

xmlrpc.phpファイルは、本来ピンバックに利用したり、アプリなどからの更新を行うためのファイルです。

ただ今回、集計時に僕のIPは除外していますし、ピンバックも1週間で10もないと思います。

それ以外の6500のアクセスは、大方以下のような意図があるのではないかと思います。

  • ピンバックを用いたDDoS攻撃
  • ユーザー名とパスワードを用いてログインして何かしようとしている

対策

これに対抗するには、やはり長くて強いパスワードを設定する必要があると思います。

あと、ピンバックが不要で、アプリでも利用しない場合は、xmlrpc.phpは利用不能にしておいた方が良いかと思います。

xmlrpc.phpを利用不能にする

完全に利用不能にするには、以下などが参考になります。

参考 WordPressのxmlrpc.phpに国外IPからDDoS攻撃を受けた時の対処法 | アフィリエイト野郎

参考 wordpressのxmlrpc.phpに対するブルートフォースアタックを防ぐ | ものづくりエクスペリメント

自分以外のIPを拒否する

ただ、僕の場合はWindows Live Writerというブログエディターから編集は行いたかったので、.htaccessファイルに以下のように追記しました。

xxx.xxx.xxx.xxx部分に、自分のIPを記入してください。自分のIPは、アクセス情報【使用中のIPアドレス確認】などから確認できます。

詳しくは以下を参照してください。

最近やたらとWordpressが攻撃されて500エラーになるので行ったセキュリティー対策まとめ
このサイトの運営にはエックスサーバーを利用しています。 僕はこのサーバーの最も安いプランを利用しているのですが、これがまたとても優秀で...

3位 /wp-cron.php : 897アクセス

今回調べるまで、このファイルは全くノーマークでした。

cronは基本的に、スケジュールに基づいて指定したコマンドを自動実行してくれるサーバー上のプログラムとして利用されています。

wp-cron.phpの機能も同様みたいなもので、予約投稿や、テーマのアップデート、E-mail の通知、スケジューリング機能を持つ一部プラグインなどが wp-cron.php を使っているそうです。

このファイルに関する脆弱性みたいな記事はあまり検索しても見つかりませんでした。過去にプラグインと関係したクロスサイトスクリプティングの脆弱性を利用されたこともあったくらいなもので。

なので、wp-cron.phpを利用するような、スケジューリング系のプラグインのアップデートは、しっかりやっておいたほうがよさそうです。(どのプラグインでもそうだけど。)

特に、スケジュール関連の機能が必要ない場合は、以下のように無効にする方法もあるようです。

参考 WordPress の wp-cron.php を無効にする | Web Design Leaves

4位 /wp-comments-post.php : 812アクセス

これは、コメントを書き込む時に利用するファイルです。

当サイトへのコメントは、週に多くて20ぐらいなので、それ以外はほとんどスパムかと思われます。

対策

僕は、コメントのスパムに関しては、プラグインで外国語でのコメントを書き込みできないようにしています。これで、スパム数がゼロになりました。

Wordpressのスパムコメント数を12812→0にした方法
こんなブログのコメント欄にも、それなりにスパムコメントがきます。 Akismetプラグインの統計情報によると、10月は1万28...

ただ上記プラグインを使用しても、一旦wp-comments-post.phpを利用して書き込まれてから判定されるので、負荷があることは変わりありません。ですので僕は、サーバーの設定で外国からのwp-comments-post.php利用を拒否しています。

エックスサーバーユーザーならスパムをシャットアウトするのは超簡単
先日、あるプラグインを使用してWordpressのスパム投稿数をゼロにすることができました。 これで、スパムによるサーバーへの負荷...

その他にも、コメントスパム対策 – WordPress Codex 日本語版には、コメントスパム対策として、以下のような方法も紹介されています。

コメントスパムハック

以下は、一般ユーザーにはおすすめしません。WordPress コアファイルを編集します。 必ずバックアップを取ってください。

wp-comments-post.php の削除

コメントスパムに対する究極の解決策です。コメントを無効にし、コメントスパムの洪水を止めることができます。あなたのサイトにコメントを付けることが一切できなくなります。

5位 /wp-login.php : 291アクセス

wp-login.phpは、以下のようなWordpressログイン画面のファイルです。

Wordpressログイン画面

大抵のアクセスは「wp-login.php?action=register」のようなパラメーターつきでアクセスしてきます。

通常ちゃんと運営されているサイトに「action=register」パラメータをつけてアクセスすると、404ページが表示されますが、初期設定を行っていないWordpressの場合だと以下のような登録画面が表示されます。

2015-04-02_13h35_50

アタッカーは、このような初期設定を行っていないWordpressを探し出して、乗っ取りを行おうとしているものと思われます。

対策

ですので、Wordpressの初期設定を置いていないまま放置しているサイトなどは、Wordpressをアンインストールしておくことをお勧めします。

それ以外にも、wp-login.phpにアクセスしてくる理由として、ユーザー名とパスワードを手当たり次第にポストして、Wordpressの管理者権限を奪いたいというのもあると思います。

そういった場合には、最低限「長めの強度の高いパスワードの設定」とLogin LockDownのような「数回ログインに失敗したらロックするプラグイン」のインストールはしておいたほうがいいと思います。

僕の場合は、wp-login.phpのファイル名自体を変更した上、さらにいろいろなセキュリティー対策を行えるSiteGuard WP Pluginを利用しています。

詳しい使用方法は、以下を参照してください。

最近やたらとWordpressが攻撃されて500エラーになるので行ったセキュリティー対策まとめ
このサイトの運営にはエックスサーバーを利用しています。 僕はこのサーバーの最も安いプランを利用しているのですが、これがまたとても優秀で...

6位以下 デフォルトでは存在しないファイルへのアクセス

6位~10位は、以下のようにデフォルトのWordpressでは存在しないファイルにアクセスしてきています。(/index.php以外)

通常、index.phpにきたアクセスは、ログを見るとすべて以下のようにトップページにリダイレクトされているので大丈夫かと思います。

それ以外は、おそらくマルウェアによって混入した悪意あるファイルの存在を確認しているのではないかと思います。(index.phpも書き換えられたファイル目当てでアクセスが来ていると推測します。index.phpが改ざんなども検索すると結構出てきます。)

対策

これらの対策を行おうにも、どのファイルが正常なファイルかは、通常分かりません。

そんな時は、Wordfence Securityプラグイン等を利用して、一度Wordpress内をスキャンしてみることおすすめします。

Wordfence Scan

怪しいファイルがあるときは、一覧表示してくれます。(普通にチェックしても3つぐらいヒットします。)

いろいろやっても、どうしても改善しない場合は、Wordfence Securityの有償機能になりますが、国ごとにアクセスを遮断する機能なんかもあります。

ただ、英語表記のプラグインなので、詳しい使い方は以下が参考になると思います。

参考 Wordfence Security – 高度なセキュリテイ対策のWordPressプラグイン – ネタワン

参考 Wordfence Securityで総合セキュリティ対策 | Country Netlife plus

11位以降~316位までのアクセス

一応11以降の.phpファイルへのアクセスも載せておきます。以下のほとんどは、Wordpressデフォルトでは存在しないファイルへのアクセスになっていると思います。

これだけ、いろいろなファイルにアクセスを試みるということは、やはりそれだけウイルスなどに感染しているWordpressが多いのでしょうか。

あとやはり、/wp-admin/フォルダ内目当てで来るものもあるので、フォルダにSiteGuard WP Pluginを利用して、アクセス制限をかけておいても良いと思います。

管理ページアクセス制限

悪用されるとまずいファイルに近づけさせないのも有効かと思います。

ブルートフォース攻撃 – WordPress Codex 日本語版には、.htaccessを用いたwp-adminフォルダへのアクセス制限のかけ方も載っています。

まとめ

今回、「Wordpressに攻撃というけど、どのファイルへのアタックが多いのか?」とふと思ったので、当サイトのアクセスログを調べてみました。

結果、やはりxmlrpc.phpが最も悪さをしていたのではないかと思います。(※あくまで当サイトの場合)

これらの結果から、Wordpressを安全に運営するに当たり、以下のことには気をつけないといけないなと感じました。

  1. xmlrpc.phpファイルへの対策は行っておいた方が良い(使用しないなら無効に)
  2. パスワードはなるべく長く、最低限大文字・小文字・数字を利用したものにしておく
  3. ログインページ(wp-login.php)への対策は、やっておいて損はない
  4. 当然ながらコメントスパムへの対策はしておくべき
  5. /wp-admin/フォルダ内は管理者以外ブロックしておく
  6. プラグイン・テーマなどのアップデートはこまめに

プラグインの脆弱性などを突かれると、どうしようもできない部分もあるのですが、「なるべく実績のあるプラグインを使用する」とか「コンスタントに更新しているプラグインを使用する」とか「JVN脆弱性レポート 一覧をチェックして対応」などすることで、多少リスクは下がるかと思います。

あと、Wordpress公式にブルートフォース攻撃への対策方法なども載っているので、足りない分は、こちらも合わせて対策しておくと、より強固なWordpress環境になるのではないかと思います。