communication-g7396f4352_1280

WordPressは世界的に使われているCMSであり、それゆえに、攻撃の対象になりやすいというのが実情です。 別に大手のウェブサイト・ブログだけが狙われるというわけでなく、インターネット上にて稼働・公開している以上は、常に狙われている状況だったりします。

例えば、記事公開時点でほとんど人がこない(2桁乗るかどうかくらい)当ブログですら、Tor経由でログインページへアクセスを試みたり、特定のプラグインの脆弱性を狙っていると思しき痕跡があったりしますからね……。

ただ、そういう状況だとしてもWordPressは便利だし、今更手放して乗り換えるのも難しい……ということも珍しくはないでしょう。 そこで、セキュリティ関係の知識・技術がないど素人にでもできる範囲で、可能な限りセキュリティのレベルを高め、防衛しよう!……というのが本記事の目指すところです。

とはいえ、すべてを網羅するととんでもなく長大になってしまうため、適宜参考にした記事を紹介しつつ、補足などを交えながら書いていこうと思います。

用語説明は特にしませんので、不明な語があれば適宜検索してください。 また、WordPressの基本的な操作や、各種名称などを十分に把握している前提で書いていきます。

また、記事の特性上「うまくいかない」「サイトが表示されなくなった」などの問題は発生しうるので、変更点をもとに戻したり復旧できる手段は用意しつつ実行してください。

まず、なにはなくとも「メタ情報」を消す

おそらく消している人が多いでしょうけれど、デフォルトで(なぜか)サイドバーなどに用意されている「メタ情報」ウィジェット。 これは消しましょう。

私は消してしまっているのでスクリーンショットは掲載できませんが、(ログイン状態なら)サイト管理とかログアウト、コメントフィード、投稿フィード……とか表示されているアレです。

言わずもがな、これらは読者にとっては不必要な情報です。 その上、ログインフォームをウェブサイト・ブログ上に表示しておくのは百害あって一利なしです。 訪問者がログイン試行し放題の状態になっているわけなので……。

ログインページはブックマークするなどして使うようにし、これは消しましょう。 なんでデフォルトで、割と危険なこれが表示されているんでしょうね……?(多分本当の入門者向けなんでしょうけれども)

WordPressとプラグイン、テーマは最新の状態にしておく

これも基本ではありますが、更新はちゃんとしましょう。 特にWordPress本体とプラグインは可能な限り早い段階で最新にすべきです。

プラグインに関しても、最終更新が1年前以上とかのものは使うのをやめたほうがいいかもしれません。 代替のものがあれば乗り換える方がいいと思います。

WordPress本体の更新によって、古いプラグインが動かないだけならまだしも、動作に悪影響を及ぼして最悪ウェブサイト・ブログが表示できなくなったりしもしますし、脆弱性を突かれて乗っ取られる・マルウェアなどを仕込まれるなどしたら、もう大変なことになりますので、適宜更新と動作確認することが重要です。

「Edit Author Slug」でユーザー名の露出を防ぐ

次に、「Edit Author Slug」というプラグインを使い、ユーザー名の露出を防ぐことにします。

使い方に関しては「WordPressサイトのユーザー名の漏洩を未然に防ぐプラグイン「Edit Author slug」」あたりを読んでみてください。

デフォルトの状態だと、URLの末尾にパラメーターを付与したり、著者名をクリックするなどしてもユーザー名がわかってしまいますが、このプラグインを適切に使うことでユーザー名を拾い上げられてしまうことを防げるでしょう。

2FA(2要素認証)を有効にする

他のサービスで使ったことがあるかもしれませんが、WordPressでも2FAを利用することができます。 プラグインとしては「miniOrange 2 Factor Authentication」あたりがいいでしょうか。

こちらのプラグインの使い方に関しては「WordPressセキュリティー強化2段階認証」などを参考にしてください。

2“段階”認証とは書いていますが、実際に2段階認証の形式を取った2要素認証なので(たぶん)、表記間違いではないです。 内容に関しても誤りがあるわけではないので、ここではいったん気にしない方向で。

このプラグインであればGoogleの認証システムを使えるため、Google AuthenticatorやAuthyなどで認証コードの確認ができて便利です。

セキュリティプラグインで更に守りを固める

ここまででの対策でもそれなりに効果はあるとは思いますが、まだまだ色々と手を入れられる場所はあるので、引き続きやっていきましょう。 続いて、セキュリティプラグインも入れて更に防衛力を高めていきます。

候補としては「XO Security」か「SiteGuard WP Plugin」あたりのどちらかがいいでしょう。 これらのプラグインを使えば、ログインページの変更やCAPTCHA(画像認証)の設定が可能です。 特にログインページの変更はぜひとも行いたいところ。 もちろん他にも様々な機能がそれぞれにあります。

このあたりのプラグインは他に使っているプラグインなどとの相性もあるので、実際に試して問題がないほうを選ぶ……という感じでいいと思います。

また、ログインページ変更はうっかり新たなログインページのURLを忘れたりすると大変なことになったりと、一手間違うと自分が操作できない・ウェブサイト・ブログの動作に悪影響を及ぼす……などもありうるため、慎重に、少しずつ設定を詰めていくことを強く推奨します。

その代わり、うまく設定できた場合はかなり堅牢になるものと思いますよ。

「XO Security」を使う場合は「【WordPressログインURL変更】XO Securityの設定方法【プラグイン】」、「SiteGuard WP Plugin」を使う場合は「SiteGuard WP Pluginでサイトを守る!設定と注意事項」あたりの記事を読んで(特に注意点のあたり)設定してみてください。

なお、導入済みプラグインと競合している機能がある場合は、どちらか一方だけ使うようにしましょう。

WordPressのパーミッションを変更する

次は、WordPress自体を守る方向で対策してみましょう。 WordPressを構成するファイルやディレクトリのパーミッション(権限)を変更し、外部から“悪さ”しにくくします。

具体的なパーミッションの変更対象とその内容は「WordPressのパーミッションを変更してセキュリティを高める」という記事をもとに設定するといい感じかと思います。

基本的にFTPかサーバーのファイルマネージャーで操作しますが、操作自体は簡単な割に権限の付与を誤ると動作不良を起こしたり、逆にセキュリティが甘くなったりするので、設定の際は慎重に。

.htaccessを編集してなんやかんやする

そして、.htaccessを編集して様々な穴を塞いでいきます。 アクセスされるとマズいものへのアクセスを拒否したり、リダイレクトしたり、特定の機能を無効にしたり……ということが可能です。

具体的にどう編集するのかは「.htaccessにコードを追記してWordPressセキュリティを高める」を参考にするとよさそうです。

こちらに関しても基本はコピペということで操作自体は簡単ですが、与えうる影響はかなり強力なため、なにかの加減でミスるとウェブサイト・ブログが表示できないとかそういう問題にも繋がります。 

よって、作業前に.htaccessのバックアップを取るなどして問題発生時にすぐに戻せるようにしておくといいでしょう。

なお、自分のIPアドレスを指定して他を弾く設定は、自分もアクセスできなくなる可能性があるため、設定は注意が必要です(一般的な環境であれば、なにもしていなければIPアドレスが動的に変更されるためです)。

IPを固定するなどすればOKですが、固定IPアドレスにも動的IPアドレスにも一長一短あるため、よりよい方を選択し、採用するかどうか決定してみてください。

CDNを使ってみる

また、CDNを噛ませてみるのもいいかもしれません。 有名なところだとCloudflareでしょうか。

CloudflareのCDNを使うことで高速配信が可能になったり、負荷分散を行い……DDoS攻撃対策にも多少は効果が見込めるという意味でも有用です。

ただ、そのままWordPressで動いているウェブサイト・ブログに適用してしまうと、キャッシュするのが望ましくない管理画面やプレビュー画面までキャッシュされてしまい、秘匿すべき部分が露出してしまう可能性があります。

そこで、「WordPressサイトでCloudflareを使う時に最適なページルール設定」などを参考に、Cloudflareのページルールを作成することで対処しましょう。 一通り設定し終わったあと、ルールの適用優先度が記事で示されたものと一致しているかの確認もお忘れなく。

CDNを利用することによって発生するデメリットも少なからずある模様(CDNダウン時に巻き添えを食らうとか、解析しにくくなるとか)ので、そのあたりが問題ないと思えるなら、CDNを採用するのは一考の余地アリかなと。

ひとまずここまででも、だいぶ堅牢になるでしょう

他にもセキュリティ系プラグインを使って更にガチガチにもできるでしょうし、サーバーによってはWAFや海外アクセスの制限などが使えたりするので、これら以外にもまだとれる手段はあります。

が、ひとまず環境を選ばずにできることとしては、この記事に書いた内容だけでも十分効果的なのではないかな……と、素人目には映っています。

もちろん今後も新たな問題・脆弱性が見つかることもあれば、逆に対策も出てくることもあるかと思うので、ここで安心しきらずにアンテナを張っておいたほうがいいのだろうなぁとは思います。

なかなか情報を追うのも対策するのも大変ですし、難解な部分もありますけれども、なんとか対応して安心してウェブサイト・ブログの運営をしていきましょう!