WordPressのセキュリティー対策

WordPressのセキュリティー対策サービスの概要

当社のWordPressセキュリティー対策サービスは、WordPressで構築されているWebサイトの基本的なセキュリティー対策を総合的に実現するサービスです。

当社では、2017年よりWebサイト・Webサイト・WordPressの保守運用サービスを正式に開始し、WordPressサイトのセキュリティー対策もその一環として実施してまいりました。

しかしながら、2020年より、保守とは別にスポットでWordPressサイトのセキュリティー対策をしてほしいというご相談が増加してきました。

そこで、2021年4月より、これまでWordPressの保守運用サービスの一要素として当社に蓄積されてきたWordPressサイトのセキュリティー対策を、当社のエンジニアチームが提供するサービスとして定型化しました。

このようなお悩みがありましたら、お気軽にご相談ください

  • ・WordPressでWebサイトを運営しているが、セキュリティー対策を実施したい。
  • ・WordPressのセキュリティー対策についてセカンドオピニオンがほしい。
  • ・AWS等のクラウドサーバーを利用している為、サーバーの設定、OS・ミドルウェアのパッチ適用、WAFの設定などワンストップで対策をしてくれる会社を探している。
  • ・費用が適切なところを探してる。

WordPressサイトにセキュリティー対策が必要な理由

WordPress(ワードプレス)は、世界で圧倒的な支持を得ているオープンソースのCMS(コンテンツ管理システム)です。
W3Techsによれば、2021年5月17日時点で、世界中のWebサイトの約41.4%がWordPressで構築されているとのことです(右グラフ参照)。当社の記録によれば、2018年の春に確認した際には30.7%でしたので、凄まじい勢いでシェアが増えていることがわかります。

一方で、オープンソースの優れたCMSであるために、WordPressは攻撃の対象として狙われやすいという特徴を有しています。
また、WordPress本体だけではなく、人気のあるプラグインをターゲットにする攻撃も増加してきています。

この為、WordPressで構築されたWebサイトを運用する場合、可能な限りセキュリティー対策を実施しておくことが重要になっています。

Webサイト全体におけるWordPressの利用率
Webサイト全体におけるWordPressの利用率
※2021年5月17日W3Techsのデータに基づいてtaneCREATIVEがグラフ化

WordPressサイトの脆弱性を発見・塞ぐ対策の概要

WordPressサイトのセキュリティー対策の第一は、Webアプリケーション、ミドルウェア、OSの各ソフトウエアにおける脆弱性(セキュリティーホール)を発見した上で、これらを塞ぐ対策を実施することです。

WordPressサイトというWebアプリケーションは、一般的にHTML、CSS、JavaScriptという言語でコーディングされており、これらがWordPressに組み込まれることで構築されています。
そして、WordPressには通常テーマと複数のプラグインがインストールされています。

また、Webアプリケーションの開発時に、フレームワーク・ライブラリが利用されている場合もあります。
JavaScriptのフレームワークであるjQueryや、CSSのフレームワークであるBootStrapなどがよく利用されています。

また、WordPress自体はPHPというスクリプト言語で作られていますし、MySQLないしMariaDBというデータベース管理システムが採用されています。更に、通常はApacheないしNginxというWebサーバーソフトウエアが利用されており(稀にIISLiteSpeedが使われているケースもあります)、これらがWordPressサイトを動かす為に使用されるミドルウェアになります。

最後に、Webアプリケーションを動かすためにOSが必要です。

このようにWordPressサイトは多くのソフトウエアで動いておりますので、脆弱性を発見・塞ぐ対策についても総合的な対策が必要となります。

以下、当社にて対応出来る脆弱性を発見・塞ぐ対策の概要についてご説明させていただきます。

Webアプリケーション・フレームワークの脆弱性対策

Webアプリケーションの脆弱性を発見する

前述のようにWordPressサイトはHTML、CSS、JavaScriptという言語がWordPressに組み込まれている他、テーマや複数のプラグインがインストールされており、更にはjQuery等のフレームワーク・ライブラリまで使われていますので、それらの脆弱性を全て発見することは非常に困難です。
この為、現時点での最も有効な発見手法は、セキュリティー専門会社に手動脆弱性診断を依頼し、専門知見を有する診断員にチェックをかけてもらうことになります。
しかしながら、この手動脆弱性診断は、(内容にもよりますが)しっかりと診断しようとすれば相応のコストがかかります。
そこで、当社では、①2人日程度を上限とする簡易調査を実施・レポートを提出・ご報告をさせていただいた上で、②更に必要があリそうであればVAddyによる自動脆弱性診断を実施するか、③自動診断で厳しそうであればセキュリティー専門会社をご紹介するというフローで必要コストを段階的に分散させながら脆弱性診断を実施しています。

Webアプリケーションの脆弱性を塞いで調整する

脆弱性を発見さえすれば、あとはこれを塞いで調整をすることになります。
WordPressは非常に優れたCMSですので、基本的にはWordPress本体とテーマ、プラグインのバージョンアップを適切に実施していけば、通常のWordPressサイトの脆弱性はほぼ塞ぐことができます。
しかしながら、このWordPress本体とテーマ、プラグインのバージョンアップを適切に実施するだけでも数々のトラブルが発生する為、結果としてWordPressを熟知したWeb制作会社でないと調整が困難であるケースが多発しています。
例えば、WebサイトにはjQueryというJavaScriptのフレームワーク・ライブラリがよく使用されていますが、このjQueryの古いバージョン(1系)には2020年だけでもいくつかの脆弱性が発見されました。
WordPressも対策を実施しており、本体のバージョンを5.6にアップデートするとjQueryは最新の3.5系にアップデートされるようになっています。ところがこのアップデートによりjQueryを利用している各種プログラムが正常に動かなくなる等の問題が多発しており、調整が必要になります。
また、WordPressの公式テーマ以外のテーマやプラグインを数多くインストールしている場合では、WordPressのバージョンアップをすると正常に稼働しなくなるなどのケースがよくあり、これらも調整が必要になります。
「調整」というワードからは簡単な作業のイメージを受けられるかもしれませんが、ケースによっては機能の作り直しなどを実施することになります。
ミドルウェアの脆弱性対策

ミドルウェアの脆弱性を発見する

WordPressサイトにはPHP、MySQLないしMariaDB、ApacheないしNginxといったミドルウェアが使用されていますが、このミドルウェアにも脆弱性が発見されます。
この情報は各ディストリビューションより情報が公開されていますので、こういった情報を定期的にチェックすることで脆弱性を発見します。

ミドルウェアの脆弱性を塞いで調整する

脆弱性を発見さえすれば、あとはこれを塞いで調整をする点はWebアプリケーションと同様です。
Webアプリケーションと異なる点としては、ミドルウェアにおいてわたしたちユーザーサイドで実施できることは少なく、基本的には各ディストリビューションの案内に従ってミドルウェアのアップデートないしパッチの適用とそれに伴う調整を実施することになります。
特にPHPに関しては、各バージョンのリリース後2年で公式のセキュリティーサポートが終了しますので、定期的にアップデートと調整を実施する必要があります。
なお、OSによってはOSのベンダー(RedHat等)がPHPの保守をしてくれるケースもありますし、レンタルサーバーをお使いの場合にはレンタルサーバー会社側でPHPの古いバージョンのセキュリティー対策を実施してくれているケースもありますので、各企業にて「公式にサポート」されているバージョンかどうかを確認する必要があります。
OSの脆弱性対策

OSの脆弱性を発見し脆弱性を塞いで調整する

OSについても脆弱性は発見されます。
OSもミドルウェアと同様に、わたしたちユーザーサイドで実施できることは少なく、基本的には各ディストリビューションの案内に従ってアップデートないしパッチの適用とそれに伴う調整を実施することになります。
OSは開発の基盤となるソフトウエアですのでその影響は大きく、私たちにできることはそれほど多くはありません。
最近ですと、CentOS8が2021年末にサポート終了することが発表されたましたが、当社で出来ることは移行先候補の選定と影響範囲の調査・検討、そして移行作業の実施だけという状態です。

WordPressサイトへの攻撃を避ける対策の概要

WordPressサイトのセキュリティー対策の第2は、あたりまえのことではありますが攻撃を避ける対策を実施することです。

攻撃を避ける対策には「隠ぺい・削除による対策」と「攻撃の端緒を与えない対策」があります。

以下、簡単に攻撃を避ける対策の概要をご説明させていただきます。

隠ぺいによるセキュリティー対策

ソースコードからWordPressサイトである痕跡を消すことで攻撃を避ける

WordPressへの攻撃を試みるプログラムはソースコード上のWordPressの痕跡を探して、攻撃対象サイトをリスト化し、攻撃を加えてきますので、ソースコード上からWordPressの痕跡を消し去ることで、一定程度狙われにくくすることは可能です。
しかしながら、痕跡を消しきる為にはいくつかの制約を受けることはあまり知られていません。例えば、RSSフィードを利用している場合、RSSフィードにアクセスすることでバージョン情報は確認できてしまいますので、RSSフィードの使用について制約を受ける等です。
また、これを実施してしまうと、WordPress本体、テーマ、プラグインの脆弱性を定期的にチェックするツール(WPsec等)が誤作動を起こすなどのデメリットもある点に注意が必要です。
当社の場合、保守にて脆弱性を発見・塞ぐことを優先していますので、この対策はそれほどお勧めしておりません。

管理画面へのログイン画面のURLを変更することで攻撃を避ける

WordPressでは、管理画面へのログイン画面のURLがデフォルトで“wp-login.php”となっています。
WordPressへの攻撃を試みるボット・スクリプトは“wp-admin”または“wp-login.php”でログイン画面にたどり着けるサイトをアタックリストにアップしますので、この「ログイン画面のURLを変更」して管理画面への入り口を隠すことでブルートフォースアタックの機会を一定程度減少させることができます。
攻撃の端緒を出来るだけ与えないセキュリティー対策

データベース名とプレフィックスをデフォルトから変更する

WordPressはMySQLというデータベースを採用していますが、デフォルトでは、データベース名やデータベースのテーブルのプレフィックス(接頭辞)が一定のルールで設定されるようになっています。
これらがデータベースに対する攻撃(SQLインジェクション等)に利用される可能性がありますので、データベース名とプレフィックスはデフォルトから変更しておくことをお勧めしています。

ディスカッション設定を適切に管理する

WordPressはブログソフトウエアからスタートしたことから、コメント投稿機能・ピンバック機能(リクエストを受け付ける機能)・トラックバック機能(参照元のサイト管理者にリンクを貼ったことを通知する機能)が実装されており、デフォルトではONになっています。
これらの機能はDos攻撃・DDos攻撃(大量のデータを送りつける攻撃)に利用される可能性がありますので適切に設定しておく必要があります。

サイト内検索にはGoogleカスタム検索や専門の検索サービスを利用する

Webサイトのサイト内検索は非常に便利な機能であり、WordPressの場合サイト内検索機能を提供するプラグインが数多くあります。
しかしながら、サイト内検索の検索ボックスはWebサイトからDBへと不正なプログラムを送信できる入り口となりますので、攻撃の端緒となる確率が高い機能です。
また、同様の理由により、サイト内検索機能を提供するプラグインには脅威度の高い脆弱性が見つかるケースも多く、人気のあるプラグインを狙った攻撃も観測されていることから、当社ではサイト内検索機能が必要な場合にはGoogleカスタム検索による方法をお勧めしています。

メールフォームにはGoogleFormや専門のフォームサービスを利用する

ほとんどのWebサイトにおいて、お問合せなどで使用するフォームはもはや必須に近い機能であり、WordPressの場合、「Contact Form 7」や「MW WP Form」という有名プラグインで比較的簡単に高度なフォーム機能を実装できます。
しかしながら、フォームもまたWebサイトから不正なプログラムを送信できる入り口となりますので、攻撃の端緒となる確率が高い機能です。
また、同様の理由により、フォーム機能を提供するプラグインには脅威度の高い脆弱性が見つかるケースも多く、人気のあるプラグイン(特にContact Form 7)を狙った攻撃も観測されていることから、当社でも2020年冬頃よりフォームについてはGoogleFormやHubspot等のMAツールによる方法をまずお勧めするようになっています。

WordPressをHeadressCMS化してCDNを利用する

上記の攻撃を避ける手法の集大成ともいえる手法が、WordPressをHeadressCMS化した上で静的サイト化を行い、公開領域にはCDNのみ存在させる手法です。
※詳細は「厳密なリアルタイム性が要求されないWebシステムにおける当社の強み」をご覧ください。
この構成をとれば、Webサイト経由のアタックについては、全てCDN側のWebキャッシュサーバーが引き受けてくれる為、CMSが格納されているWebサーバーへの攻撃を避けることが可能になります。

WordPressサイトへの攻撃を防御する対策の概要

WordPressサイトのセキュリティー対策の第3は、攻撃を防御する対策を実施することです。

攻撃を防御する対策には「攻撃の難易度を高める対策」と「攻撃を検出し防御する対策」、そして「被害を少なくする対策」があります。

以下、簡単に攻撃を防御する対策の概要をご説明させていただきます。

攻撃の難易度を高める対策

管理画面へのログイン難易度を高める

前述のように、攻撃者のボットやスクリプトにWordPress管理画面へのログイン画面へたどり着かれると、ブルートフォースアタックを受けてしまう可能性がありますが、その際に、「パスワードを複雑で長くする」「ログインの試行回数を制限する」「ログインに(ひらがな等の)画像認証を追加する」等の対策を実施することで、攻撃を防御します。

IP制限(アクセス制限)を実施する

IP制限とは、事前に許可したグローバルIPアドレス以外からの接続を拒絶する手法であり、これを管理画面全体やWebサイトの重要な部分に掛けておけば、許可されていないIPからの攻撃を遮断することができる為、非常に強力なセキュリティー対策となります。
一方で、通常は公開すべきWebサイトにまでIP制限をかけるわけにはいかないため、公開領域に存在するWebサイト経由での攻撃については完全に防ぐことはできません。
攻撃を検出し防御する対策

WAFを設定する

WAF(Web Application Firewall)は、その名の通りファイアウォールの一種で、外部とWebアプリケーションのやり取りを検知・制御することで不正侵入を防御するセキュリティー製品です。
WAFはWebアプリケーション(WordPressサイト)への攻撃そのものを検知・制御するものですので、例えば使用しているプラグインに致命的な脆弱性が見つかり、更新が追い付いていない間に攻撃を受けた場合(ゼロディ攻撃)でも、WAFであれば一定程度防御できることがあります。
また、防御範囲も、XSS対策やSQLインジェクション対策、ファイル不正アクセス対策、PHPの関数の脆弱性対策などの検知しやすい攻撃への対策だけに留まらず、パスワードリスト攻撃、DDos等年々広くなっています(WAF製品・設定によって異なります)。
この為、当社では可能な限りWAFの設定を推奨させていただいております。

ファイアーウォール、IDS・IPSを設定する

ファイアーウォール(Firewall)は、サーバーやネットワークの入り口で主にIPアドレスとポート番号を監視して、「通過させてはいけない通信」を阻止するシステムです。 IDS(Intrusion Detection System)・IPS(Intrusion Prevention System)とは、その名の通り侵入検知・侵入防御システムのことですが、「通過させてはいけない通信」を阻止するシステムである点はファイアーウォールと同一です。すなわち外部からの不正アクセス・攻撃を防ぐだけではなく、例えば内部からの秘密情報の不正公開も「通過させてはいけない通信」として阻止してくれます。
この3つのシステムはセキュリティー対策の基本であり、各サーバーには、大なり小なり設置されていることが通常ですが、もし不足を感じるようであればセキュリティーの専門企業の力をお借りして最適なセキュリティー製品の導入を検討することになります。
被害を少なくする対策

ダッシュボードからの編集をできないようにする

攻撃者のボット・スクリプトに管理画面に侵入されてしまっても、管理画面からの編集が出来ないようにしておけばテーマやPHPファイルの書き換えを防げる場合があります。 ただし、この手法は利便性とトレードオフの関係にありますので、採用には慎重な検討が必要です。

問題がおこった際に対応できる体制を構築する

WordPressサイトのセキュリティー対策に関しては、万全のセキュリティーを保証することは、少なくとも当社にはできません。
その為、トラブル(業界では「インシデント」と呼びます)が起こった場合に迅速に対応できる体制を整えておくことが重要になります。
通常は企業側の情報システム部門と当社のような保守業者が役割分担表を作成し、ケースにより適用するエスカレーションフローを作成して、対応できる体制を整備することになります。

WordPressサイトのセキュリティー対策サービス開始までのフロー

1.お問合せ・ヒアリング

まずはこちらのお問合せフォームよりご相談ください。
Zoom等でWordPressサイトの現状について、ヒアリングをさせていただきながら表面的なチェックをさせていただきます。
また、当社のセキュリティー対策サービスについて、ご説明させていただきます。

2.簡易調査とご提案

セキュリティー対策サービスを受託させていただく前に、WordPressサイトのセキュリティー対策の現状について、1サイト2人日(80,000円~96,000円)程度で調査をさせて頂き、レポートにて提出・ご報告させていただきます。
当社の場合、フロントエンドエンジニアであれば人日40,000円であるため2人日ですと80,000円となりますが、状態によってはバックエンドエンジニア・サーバーサイドエンジニアが調査を担当せねばならないこともあり、その場合は人日48,000円の2人日で96,000円となります。
上記簡易調査の結果に基づいて、特に問題がなければセキュリティー対策の内容とお見積りを提出させていただく形になりますが、場合によっては追加でVAddyによる自動脆弱性診断をお薦めする場合もあります。
※稀ですが、この調査後の段階で当社の力量では十分な対応が出来ないと判断させていただくケースもあります。この場合には正直にお伝えさせていただいた上で、専門企業などをご紹介するなど可能な限り次の手段をご提案させていただきます。

3.契約締結

全面的に作り直すケースは別として、業務は準委任契約で、かつ当社の損害賠償責任委託金額を上限とする条項を付けさせていただいております。 これは、ほとんどのケースで他社様が制作・構築されたWordPressサイトを引継ぎ、セキュリティー対策を実施すという業務の性質上、当社のリスクを限定することで出来るだけ安価に受託させて頂くための工夫として皆様のご了承いただいております。

4.セキュリティー対策の実施

委託契約が締結されましたら、御社のメイン担当者・サブ担当者を付けさせていただきます。
また、やり取りはchatwork等のツールを使って実施しておりますが、担当者以外にも10名以上はchatの状況を共有する体制を構築させていただくことで、滞りなく御社のWordPressサイトのセキュリティ対策を実施させていただきます。

その他のサービスはこちら