ChannelK

今日を――生き残れ。

Flower

Posts Tagged ‘Wordfence’

Wordfenceをもっと使いこなしてみる(その1)

以前にWordfenceについて書いたのにその後何も書いてないな、とふと思い立ったので書いてみる。
確かにメモリはそれなりに(ウチでは11MB~20MBくらい)使いますし、データベースへの負荷もかかりますが非常に重宝しています。

日々の運用としては、NewStatPressでアクセス数と検索ターム、リファラを確認しつつ、気になるリファラがあったらWordfenceの「Live Traffic」で確認するという感じ。IPアドレスとホストネームからDNSを逆引きしてアクセス元の国名表示をしてくれるので、国外からの怪しげなアクセスも一目瞭然です。

Live Traffic画面で気になったアクセス元をブロックしたい場合には「Block this IP」をクリック。これだけで一定時間そのIPからwebへのアクセスが遮断されます。

LiveTraffic

 さらにそのIPが含まれるネットワークセグメントごとブロックしたい場合には「Block this network」をクリック。WHOIS Lookup画面へ遷移後、ブロックされるIPアドレスの範囲とWHOISの検索結果が表示されます。NetRangeの項目、赤文字のリンクをクリックするとさらにAdvanced Blocking画面へ遷移。必要項目を入力して「Block Visitors Matching this Pattern」をクリックすればそのネットワークセグメント全体がブロックされます。

※ドメイン全体ではなくセグメント全体であることに注意。複数のセグメントを持っているドメインをブロックしたい場合にはそれぞれのセグメントを登録する必要があります。

WordPressへの不正アクセスとして一般的なものの1つに、ダッシュボードへのアクセスを試みるというものがあります。具体的にはダッシュボードへのログオン画面で辞書による総当たりをしてくるというもの。一定回数失敗したらロックアウトを行うプラグインもありますが、Wordfenceの機能はさらに上を行きます。
「Options」の「Login Security Options」セクションで細かな設定が行えますが、ウチの場合はこんな感じ。

LoginSecurityOptions

 デフォルトから設定を変更しているのはロックアウトまでの試行回数とロックアウトされる期間。それから残りのチェックボックスです。特にこのチェックボックスは重要。

Immediately lock out invalid usernames

「存在しないユーザー名の場合には速やかにロックアウトする」
クラッキングツールを使って「administrator」「admin」「adminadmin」「admin1」などとさっと撫でていくタイプの不正アクセスがほとんどなので、このチェックボックスを有効にするだけでもかなりの効果があります。ただし、1文字スペルミスしただけでロックアウトされるのでご注意を。

Don’t let WordPress reveal valid users in login errors

「ログインエラー時に有効なユーザーを表示させないようにする」
文字通り。

Prevent users registering ‘admin’ username if it doesn’t exist

「”admin”が存在しない場合、”admin”ユーザーの登録を禁止する」
WordPressのセキュリティ向上の基本として挙げられるのが、管理者のユーザー名をadmin以外にするというものですが、さらに後からユーザー登録されることも防ぐというものです。

ウチでは上記設定によって1ヶ月にロックアウトされるIPアドレスが550個ほど。そのまま踏み台になり続けているIPがあるので2ヶ月だと800個ほどのIPアドレスがロックアウトされています。ネットの普及しているアメリカやヨーロッパ諸国はもちろん、東南アジア諸国やアフリカの国々など国はかなりバラバラです。
そういえば属国旗を掲げている某国は見かけませんね……。

Wordfenceのインストールと機能について。

前回のエントリで触れたWordpressのセキュリティプラグイン「Wordfence」は相変わらず重宝しています。ダッシュボード上でチェックが簡単にできる点がいいですね。アクセス解析の「New StatPress」と共にほぼ毎日確認しています。

※WordfenceプラグインはWordpress上のセキュリティチェックのみを行なうプラグインです。鯖OS、Apache、My SQL、PHPなどのセキュリティチェックは行なわないのでご注意を。

で、日本語でこのプラグインについてきちんと説明しているところがないので導入から設定画面までを簡単に紹介しようかと。

Wordfenceのインストール

ダッシュボードにログイン後、[プラグイン]→[新規追加]とたどったら、検索フォームに「Wordfence」と入力。

Wordfenceプラグインを検索

検索一覧に「Wordfence Security」が表示されているので、「いますぐインストール」をクリック。ダッシュボードからのプラグイン追加を許可してあれば、インストールはこれだけで終わり。^^;;
オプションを確認したらプラグイン一覧で「有効化」しておきましょう。

プラグインを有効化しておくこと

引き続き、設定などの各種画面について

Scan

WordPressモジュールやテーマ、プラグインが不正に改変されていないかの確認ができます。何はともあれ左上にある青い「Start a Wordfence Scan」ボタンをクリック。スキャンの際にWordfenceのサーバ(69.46.36.0~69.46.36.32)と通信を行なうので、ガチガチにiptablesを設定している場合には通すようにしておきましょう。

Scanはボタンひとつ

しばらくScan SummaryとScan Detailed Activityにチェック項目と進捗状況が表示された後、問題があればその下の「New Issues」タブに問題点が表示されます。インストールされているプラグインの中にバージョンの古いものがあれば通知してくれたりもしますが、重宝するのがテーマやプラグインの改変チェック。
もし、オリジナルから改変されていることが確認されればファイル毎に警告が表示されます。選択肢は「リポジトリから復元」「無視」「解決法を確認」の3つ。

wordpress.org上で配布されているテーマやプラグインをカスタマイズしている場合には、ここで改変されている旨のメッセージが表示されます。ここでカスタマイズしたファイルの復元を選んでしまうとカスタマイズが水の泡になるのでご注意を。
また、一度無視した項目については「Ignored Issues」タブに格納されるので確認しておきましょう。

Live traffic

Wordfenceで私が一番便利だなと思っている項目がここ。アクセス元のIPアドレスを元にDNS逆引きして国別表示をしてくれたり、ユーザーエージェントを判別してユーザーかクローラーかを判別したりしてくれます。

LiveTraffic

中でも「Pages not found」と「Logins and Logouts」タブは要チェック。1日も放置しておけば、存在しないはずの投稿者(author)やカテゴリ、タブを延々とリクエストしてくるIPが表示されていると思います。見えなかった不正アクセスが見えるようになると、今までどれだけノーガードだったのか怖くなると思います。

Blocked IPs

読んで文字のごとし。ブロックしたIPアドレスやロックアウトされたIPアドレスが表示されます。デフォルトでは一定時間後にブロックは解除されますが、永続的にブロックし続けることも可能です。もちろん手動でブロック解除することも。ブロックされる前に何ヒットしたか、ブロック後に何ヒットしたかも表示されるので、ブロックを解除する目安にするのもいいでしょう。
ブロック/ロックアウトの有効期間はオプションで設定可能です。

IP個別のブロックも可能

Country Blocking

有償機能。DNS逆引きを用いてアクセス元の国別(トップレベルドメイン)判定を行い、該当すればブロックするというものです。国別にチェックボックスが設けられているので、ポチポチとチェックするだけでOK。

Scan Schedule

有償機能。これも文字通りの機能で、曜日ごとに1時間刻みでスキャンスケジュールの設定ができます。

Whois Lookup

これもそのまま。わざわざコンソールを立ち上げなくて済むので助かります。

Advanced Blocking

単一IPアドレスのブロックを行なうのではない場合はこちらを。IPアドレスの範囲を指定してブロックしたり、特定のユーザーエージェントをブロック可能です。

AdvancedBlocking

オプション設定は項目がかなり多いので、また後日のエントリで。

不正アクセス対策。

先日、ServersMan@VPSのスペックアップが終わってから、メモリに余裕ができたのでwordpressのセキュリティを再点検しています。これまでも必要最低限の対策はしてきていたつもりだったのですが、より管理・対策が楽なソリューションを探していたら、こんなプラグインを見つけました。

「Wordfence」
オフィシャルサイトwordpress.org内プラグインページ

wordpressにプラグインとして追加できるセキュリティ関連のモジュールで、以下の機能を持っています。

  • ウイルスやマルウェア、トロイの木馬などに感染したコア、テーマ、プラグインファイルを修復
  • 感染したファイルのリストアップや修復手順の提供
  • 投稿したエントリーやコメント、プラグインのリアルタイムスキャン
  • クローラーやbotとユーザーアクセスの区別
  • DNSの逆引きやトラフィックの詳細情報の提供

最初の機能は、インストールされて実際に動いているコアやテーマ、プラグインとリポジトリ上にあるデータの比較を行なって改変が行なわれていればそれを通知、クリック1つでオリジナルファイルに戻せるという機能です。独自にphpをいじったり、カスタマイズしている場合には使えなかったり、使うと先祖返りしてしまったりするので注意が必要ですが、そのまま使っている場合には安心できます。
3つ目までの機能はボタン1つで確認ができ、その後もマウスでクリックするだけで済みます。

4つ目以降は、ダッシュボード上で「リアルタイム」にアクセス状況を確認できる点がメリット。最新のアクセス状況のモニタリング機能だけで、フィルタを使ってログを抽出したりはできませんが、必要充分の機能だと思います。IPアドレスからDNSを逆引きして国名・都市名まで表示してくれます。

リアルタイム監視のためにサーバのメモリを10M~18MBほど食いますが、これらの機能だけなら無料で使用できるという点が大きい。さらに、年間18ドルほど払ってProのライセンスを取得すれば、国別のアクセス制限をかけることもできたりします。

しばらく前からLast Referrerにロシアのurlが残っていることが多くて気になっていたのですが、wordefenceを利用すると、うちの場合はとにかくadminなどの管理ユーザーをターゲットとした総当たりの不正アクセスが多いことが分かりました。詳細データは取っていないのですが、多いときは1時間に50回以上。ロックアウトされたIPアドレスは300件遡ってもその日のものでした(汗)

これら「存在しない管理ユーザー」を即時ロックアウトするのも、wordefenceならば設定を開いてチェックボックスにチェックを入れるだけ。ボットネットからの不正アクセスはIPアドレスをいちいち拒否していてはキリがないのでこういう場合非常に助かります。もちろん手動でのアクセスブロックも可能なので、特に目に付いたIPアドレスをブロックリストに放り込むことも可能です。

文字ばかりになりましたが、2年以上更新されていないLogin Lock Downプラグインを今さら導入するよりもよっぽど安心できると思います。機能も多いしね。

惜しむらくはメッセージが日本語化されていないことですが、それほど難しい英語ではないので読んでいけば何となく理解できると思います。

You are currently browsing the ChannelK blog archives.

Optimization WordPress Plugins & Solutions by W3 EDGE