WordPressのセキュリティ対策ではじめに入れるべきプラグインや設定を紹介

「WordPressって便利だけどセキュリティが心配」
WordPress 4.7 での重大な脆弱性が大きく話題になりました。レンタルサーバー会社からも号外でメールで注意喚起が飛んでくるほど。皆さんキチンとWordPressのバージョンを最新にアップデートしていますか。
WordPress の脆弱性対策について
もしバージョンが古いまま使用している方がいたら、今すぐアップデートしましょう(バージョンアップの際はもちろんバックアップを取ってから)
 

便利でシェアが大きいシステムは当然狙われる。

今さらですが、WordPressはとても便利なブログ機能(CMS)です。これは間違いない。
ですが、これだけ便利でシェアが大きいとそれに比例して悪意ある攻撃対象になることが多いのも現実…。
かといって
「簡単だからWordPressを使ってるのに、セキュリティ云々のこと言われても」
「面倒だから、つい後回しに…」
という気持ちもわかります。
 
「風邪と一緒で予防してもやられる時はどうせやられるから」
ってWeb屋の口から聞いたときはビックリしたけど…笑。
 
「予防注射したのにインフルになったぞ、どうしてくれんだ!」
WordPress関係ない。
 
ただ、実際のところ本気で狙われてしまったら、いち個人ができる対策では限界があるのも事実。しかし泥棒が戸締まりが甘い家を狙うように、番犬がいる家よりもいない家を狙うのと同じで、
「うちは防犯対策してますよー」
という気概を見せることで、セキュリティの穴をついた攻撃を受けるリスクを減らせるのも事実です。
 
なので今回は
「うちは道場破りいつでも大歓迎だよ」
なんていうカッコいいWordPress管理者さん以外は、とりあえずここに書いてあることでも導入してみてください。前置き長くなりましたが、どんなズボラさんでもすぐにできちゃう最低限のWordPressセキュリティ設定だけ紹介していきます。

「Suite Gurd」は様々なセキュリティ対策がひとつになったプラグイン

WordPressといったらやはりプラグインが便利です。わたし自身は極力プラグインは使用せずに直接カスタマイズしたい派ですが、WordPressをインストールする際はこのプラグインだけは必ず導入することにしています。
https://ja.wordpress.org/plugins/siteguard/

ひとつのプラグインで色々なセキュリティ設定が可能

これはSiteGuard をインストールしたあとの管理画面のキャプチャですが、設定項目がとても多いのがわかると思います。
site Guard のキャプ

管理ページアクセス制限

ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。

ログインページ変更

ログインページ名を変更します。

画像認証

ログインページ、コメント投稿に画像認証を追加します。

ログイン詳細エラーメッセージの無効化

ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。

ログインロック

ログイン失敗を繰り返す接続元を一定期間ロックします。

ログインアラート

ログインがあったことを、メールで通知します。

 

フェールワンス

正しい入力を行っても、ログインを一回失敗します。

XMLRPC防御

XMLRPCの悪用を防ぎます。

更新通知

WordPress、プラグイン、テーマの更新が必要になった場合に、管理者にメールで通知します。

WAFチューニングサポート

WAF (SiteGuard Lite)の除外ルールを作成します。

管理ページのアクセスを制限する

もちろんできるだけ全部の項目を「ON」にしておくことが理想ですが、例えば1番目の「管理ページアクセス制限」は、接続しているネットワークのIPを利用したアクセス制限ですが、一般的な家庭のネットワーク環境はIPが一定期間ごとに変更されることが多いのでこの項目は使えないかもしれません。
もしIPが固定されるネットワークを使用していて、かつそれ以外のネットワークを使用してログインすることはないんだという場合はONにしておきましょう。

ログインページのURLを変更する

これは「ブルートフォース攻撃、リスト攻撃等の、不正にログインを試みる攻撃を受けにくくするための機能」です。
WordPressを使っている方はわかると思いますが、WordPressの管理画面へログインページのURLは一律固定で「http://ドメイン/wp-login.php」になっています。
つまり対策されていないWordPressの場合はこの法則に則ったURLにアクセスすれば、かならずログイン画面が表示されるわけですね。
悪意ある攻撃の多くは、このログインページにアクセスした後、ランダムにIDとパスワードの組合せをシステム的に試し合わせてログインを試みます。
なので、そのログインページ自体のURLを変更してしまい入り口をわかりにくくしようというのがこの項目です。

画像認証

画像認証
これも必ずONにしておきたい項目です。仮にログインページのURLが割れてしまっても、悪意ある攻撃の多くはプログラムで組まれた無人攻撃なので、「画像認証」などの本来のWordPressにはない項目が増えれば、イレギュラーとなり、それだけで攻撃の成功率は下がります。こういった風にログインに必要な情報に画像認証をひとつ増やすのも効果的です。
(画像認証の解析技術も上がってきているので未来永久有効とはいえないですが…)

ログイン詳細エラーメッセージの無効化

ログインに失敗した際にでるエラーメッセージを同一の文面にする設定です。ID・パスワードのどちらが間違っていても同じエラーメッセージが返ってくることで攻撃者にヒントを与えないようにするものですね。

ログインロック

同一IPからの連続したログイン失敗があった場合にアクセスを制限するものです。当然ONにしておくのが望ましいですが、もしパスワードを忘れてしまったなんて場合にあまりログイン試行しすぎると当然ですが自分も締め出されるので注意しましょう。

ログインアラート

ログインした際に任意のメールアドレスに通知がくるようにします。WordPress管理画面にログインした際は必ずメールが飛んできます。

フェールワンス

正しいログイン情報の場合でも一回エラーが返される設定です。セキュリティ設定したこと忘れててログインを試行した場合に少し焦るかも…。(本来の狙いはそこですが)

XMLRPC防御

Pingback機能を無効化する、あるいは、XMLRPC全体( xmlrpc.php )を無効化し、悪用を防止します。XMLRPC全体を無効化すると、XMLRPCを使用したプラグインやアプリの使用ができなくなります。支障がある場合には、本機能を使わないでください。
一部のプラグインを使用する場合は有効にすることをオススメできないです。こちらの記事でも詳しく紹介されています。
http://help.sova.sg/ja/theme-plugins-other-software-affected-by-security-restrictions/

更新通知

WordPressを管理する者としてはアップデートの情報などは決して他人事ではありませんので、日々しっかりと意識できるように設定しておきましょう。Webサイトは決しておまけではなく事業の大きな資産ですよー。
WAFチューニングサポートについてはこの後に紹介します。

Suite Gurd と一緒に導入しておきたい「Edit Author Slug」

WordPressは「http://ドメイン/?author=1」とアクセスすることで、管理者(Author)の情報が丸見えです。この語尾がすなわちログインページのIDになっているケースもあります。不正アクセスの攻撃はこのページのURLの文字列を用いてログインページにアクセスしてきます。
これは、セキュリティプラグインを入れる前のとある日の、ログインページのリクエストログです。
つまりログインページに悪意ある攻撃を仕掛けようとした回数です。過去のリクエストログから一部分を切り取っただけですが、同日同同時間帯にこれだけアタックされています…。

12月25日 16:54 – komete.jp(107.180.71.246)(XMLRPC)
12月25日 14:43 – komete.jp(107.180.71.246)(XMLRPC)
12月25日 13:36 – komete.jp(107.180.71.246)(XMLRPC)
12月25日 10:07 – 14(107.180.71.246)(XMLRPC)
12月25日 05:54 – admin(107.180.71.246)(XMLRPC)
12月25日 05:36 – admin(107.180.71.246)(XMLRPC)
12月25日 05:24 – admin(107.180.71.246)(XMLRPC)
12月25日 05:06 – admin(107.180.71.246)(XMLRPC)

 
「admin」やドメインである「ishida~~.com」をIDだと仮定してログインを試みているようです。
実際に「admin」をIDにしていたせいでサイトが乗っ取られてしまい、レンタルサーバー会社からサーバーの使用停止処理を受けて閲覧不可になったケースも見ています。どれだけズボラでも「admin」や「webadmin」「ドメイン名そのまま」なんていうユーザー名は使わないようにしましょう。

WAFチューニングサポート

WebサーバーにJP-Secure製のWAF ( SiteGuard Lite ) が導入されている場合に、WordPress内での誤検知(正常なアクセスなのに、403エラーが発生する等)を回避するためのルールを作成する機能です。WAFは、Webサーバーに対する外部からの攻撃を防ぎますが、WordPressの機能や、プラグインの機能によっては、WAFが攻撃でないのに攻撃と判断して、その機能をブロックする場合があります。除外ルールを作成することで、特定の機能での誤検知を防ぎつつ、全体としてのWAFの防御機能を活かすことができます。

「あ、はい…」
ってなるような難しいことが書いてありますが、ようするにサーバー側(WordPressのデータを格納しているところ)でも、「WAF」と呼ばれるセキュリティ対策を講じてくれているサーバーが多いのですが、そのWAFの影響で逆にWebサイト運営に支障がある場合は例外ルールを設定してくれればそこは考慮しますよ、というのがこのWAFチューニングサポートです。

レンタルサーバーを選ぶ際はWAF設定があるかどうかも大事

WAFはレンタルサーバーによっては提供していないプランなどもあります。例えば、さくらインターネットのレンタルサーバーの場合は「スタンダードプラン」以上での搭載なので「ライトプラン」では使用できません。
ロリポップは全プラン標準でWAFが有効のようですね。
レンタルサーバーを選ぶ際は、金額や容量・スピードもそうですが、セキュリティ対策がどうなっているかも大事です。

たいしてブログを更新しないならWordPressはやめておく

「WordPressは素人でも更新できて便利だ」という一点にのみ焦点があたっているせいでセキュリティについてスルーされがちです。
WordPressのようなCMSは日々バージョンアップを繰り返します。当然ですがそれにあわせて悪意ある攻撃側も日々その手段をアップデートしています。
しっかり更新できる体制が整っていない状態で安易にWordPressを導入するのはおすすめしません。日頃から監視できないような状態ではデメリットしか存在しないからです。
数ページのコーポレートサイトや店舗のサイトを構築するだけなら、CMSを使わない静的なサイトにすることをおすすめします。
「予算もないから自分たちで更新したい」という気持ちもわかりますが、結局更新せず古いバージョンのまま放置して万が一サイトを乗っ取られたら、場合によってはその時の被害のほうが大きいです。

まとめ

ずぼらでWordPressを所持してるけど正直管理は面倒な方は、とりあえず「Suite Gurd」プラグインを導入し、WordPressのバージョンアップメールが着たら最新バージョンに保つことだけでもしておきましょう。
https://ja.wordpress.org/plugins/siteguard/
 

この記事を書いた人

石田 真啓|komete 代表