ChannelK

今日を――生き残れ。

Flower

Archive for the ‘ServersMan@VPS’ Category

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アドレスがロックアウトされています。ネットの普及しているアメリカやヨーロッパ諸国はもちろん、東南アジア諸国やアフリカの国々など国はかなりバラバラです。
そういえば属国旗を掲げている某国は見かけませんね……。

iptables設定で悩む。

VPSを契約した初日から最低限必要なセキュリティ設定は行っているのですが、先日のWordfenceのエントリでも書いたように相変わらずロシアなどからのアクセスが絶えません。
さてさてどうしたものか、と時間を見ながら色々設定をいじっています。(早朝にサイトにつながらなかったのはこのせいです)

最低限の設定として、参考にしていたのはここ。

誰得UNIX-Blog: ServersMan@VPSでのiptables設定(state版) 

ただ、あまりに設定が簡単なだけにもう少し手を加えたいと思ったわけです。
そのようなわけで次に参考に参考にしたのがここ。

ファイアウォール構築(iptables) – CentOSで自宅サーバー構築

iptablesの設定-CENTOSでアリソンサーバー

各種攻撃への対策の他、国別でアクセス制限をかけたりと高機能なのは良いのですが、手直ししてもどうやらServersMan@VPSの提供しているiptablesチェインの数が足らないらしくエラーを吐きまくって国別アクセス制限がかけられませんでした(/proc/user_beancountersを見る限り、上限は256個のようです)。

※追記:後日調べた結果、ロードされているモジュールが足らないようです。VPSによっては使用できないモジュールもあるようなのでこの辺は注意が必要です。

上の設定項目をVPS向けにシンプルにしたのがここ。

VPS における iptables の設定 | POPOLOG

内容を見れば分かるのですが、2つ上のリンク先の設定例から国別設定のスクリプトを取り除いてシンプルにした感じです。これはほんの少しの手直しで問題なく動きました。

……とはいうものの、必要としているのは国別のアクセス制限なんですよね。
ここのサイトが参考になりそうかなと思ったところ、参考サイトがつながらなくてスクリプト全体が見えずにいます。

大陸からのアクセスを規制する – 自宅PCの設定記録

今後も現実逃避のためにちょくちょく手を入れていくと思うので、サイトにつながらなかったらそういうことだと思ってください。^^;;

※さらに追記:CentOS 6.xならばiptabelsの他にipsetも使用できるので、より柔軟な設定ができそうです。
とはいうものの、このblogはCentOS 5.9上で動いているわけで……。

6.x以前でも動くipsetのブランチがあるようですが、どうせならOSもアップグレードしたいところ。
でも、5.xから6.xへのアップグレードはyumでは上げられず、上書きインストールではなく新規インストールが推奨されているのですよね。VPSの場合、インストールを済ませた鯖が割り当てられるとはいっても初期設定にはそれなりの時間がかかるわけで、時間に余裕がないとできません。

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

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

You are currently browsing the archives for the ServersMan@VPS category.

Optimization WordPress Plugins & Solutions by W3 EDGE