WordPressのセキュリティー対策

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

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

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

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

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

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

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

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

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

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

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

Webサイト全体におけるWordPressの利用率
Webサイト全体におけるWordPressの利用率
※2023年8月31日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等のフレームワーク・ライブラリまで使われているケースが多いため、それらの脆弱性を全てリアルタイムで発見することは非常に困難です。
これらの脆弱性について、当社では、スウェーデンのTriop AB社によるWordPressスキャンであるWPSECにて定期的にチェックしている他、米国国立標準技術研究所(NIST)が運営する脆弱性データベース(NVD)とバージョン情報を突合するシステムを自社開発していることで、可能な限り迅速に脆弱性を発見できる体制を整備しています。
この突合プログラムについては、一部「Webセキュリティ保守.com」として無料で公開させていただきましたので、チェックしてみていただけると幸いです。

また、WordPressサイトにエンジニアが自ら開発した独自のプログラムを組み込んでいる場合、そのプログラムに脆弱性が入り込んでいる場合があります。
この独自プログラムに内在する脆弱性を発見する最も有効な発見手法は、セキュリティ専門会社に手動脆弱性診断を依頼し、専門知見を有する診断員にチェックをかけてもらうことになりますが、この手動脆弱性診断は、(内容にもよりますが)しっかりと診断しようとすれば相応のコストがかかります。
そこで、当社では、必要に応じて脆弱性診断ツールであるVAddyによる脆弱性診断を採用することで、必要コストを可能な限り抑えながら脆弱性を発見できる体制を構築しています。

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

脆弱性を発見した後は、これを塞いで調整をすることになります。
WordPressは非常に優れたCMSですので、基本的にはWordPress本体とテーマ、プラグインのバージョンアップを適切に実施していけば、通常のWordPressサイトの脆弱性はほぼ塞ぐことができます
しかしながら、このWordPress本体とテーマ、プラグインのバージョンアップを適切に実施するだけでも数々のトラブルが発生する為、結果としてWordPressを熟知したWeb制作会社でないと調整が困難であるケースが発生したりします。
また、WordPressサイトにはjQueryというJavaScriptのライブラリがよく使用されていますが、このjQueryの古いバージョンにもいくつかの脆弱性が発見されています。
このjQueryのバージョンアップを実施すると、WordPressサイトが正常に挙動しなくなるなどのトラブルが発生したりします。
「調整」というワードからは簡単な作業のイメージを受けられるかもしれませんが、ケースによっては機能の作り直しなどを実施することになります。
ミドルウェアの
脆弱性対策

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

WordPressサイトにはPHP、MySQLないしMariaDB、ApacheないしNginxといったミドルウェアが使用されていますが、このミドルウェアにも脆弱性が発見されます。
この脆弱性情報は各ディストリビューターより公開されていますので、こういった情報を定期的にチェックすることで脆弱性を発見します。
当社では、NISTが運営する脆弱性データベース(NVD)とバージョン情報を突合する自社システムにて、可能な限り迅速にミドルウェアの脆弱性を発見できる体制を整備しています。
この突合プログラムについては、apache、mysql、mariadb、phpに関しては「Webセキュリティ保守.com」として無料で公開させていただきましたので、自社サイトのミドルウェアの脆弱性チェックにお役立ていたただけますと幸いです。

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

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

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

OSについても脆弱性は発見されます。
OSもミドルウェアと同様に、わたしたちユーザーサイドで実施できることは少なく、基本的には各ディストリビューターの案内に従ってアップデートないしパッチの適用とそれに伴う調整を実施することになります。
当社では、NISTが運営する脆弱性データベース(NVD)とバージョン情報を突合する自社システムにて、可能な限り迅速にOSの脆弱性を発見できる体制を整備しています。
この突合プログラムについては、Debian 、Red Hat Enterprice Linux、Ubuntuに関しては「Webセキュリティ保守.com」として無料で公開させていただきましたので、自社サイトのOSの脆弱性チェックにお役立ていたただけますと幸いです。

WordPressサイトへの攻撃自体を減らす対策の概要

WordPressサイトのセキュリティ対策の第二は、攻撃自体を減らす対策を実施することです。

攻撃を減らす対策には「情報開示・隠ぺいによる対策」と「攻撃の端緒を与えない対策」があります。

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

情報開示・
隠ぺいによる
セキュリティ対策

■WordPress本体やテーマ・プラグインの最新バージョンを公開することで攻撃を減らす

WordPressサイトへの攻撃を試みるプログラムは、一般的にWordPress本体やテーマ・プラグインのバージョン情報を探して、脆弱性のあるバージョンを使用しているサイトをリスト化し攻撃を加えてきますので、脆弱性を潰した最新バージョンをあえて分かりやすく伝えることで、一定程度狙われにくくすることは可能です。
一方で、この対策を実施してしまうと、後述するWordPress本体、テーマ、プラグインの最新バージョンを隠ぺいすることで攻撃を減らすという手法が取れなくなるなどのデメリットもあります。
保守管理業務にて脆弱性を発見・塞ぐことができるのであれば、この「最新バージョンを公開することで攻撃を減らす」対策はある程度有効です。

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

前述のWordPress本体やテーマ・プラグインの最新バージョンを公開することで攻撃を減らす方法とは逆の視点となりますが、WordPressの痕跡を全て消し去ることで、一定程度狙われにくくする対策もありえます。
しかしながら、痕跡を消しきる為にはいくつかのポイントがあることはあまり知られていません。例えば、RSSフィードを利用している場合、RSSフィードにアクセスすることでバージョン情報は確認できてしまうなどが有名ですが、単純にWordPress特有のサイト構造など、痕跡を消し切ることは案外難しく、痕跡を消しきったと立証することも困難です。
また、これを実施してしまうと、前述したWordPress本体、テーマ、プラグインの最新バージョンをあえて明示することで、攻撃を減らすという手法が取れなくなるなどのデメリットもあります。
保守管理業務にて適宜脆弱性を発見・塞ぐことが難しい状況でしたら、この「WordPressサイトである痕跡を消すことで攻撃を減らす」対策はある程度有効です。
攻撃の端緒を
出来るだけ与えない
セキュリティ対策

■管理画面へのログイン画面のURLを変更する

WordPressでは、管理画面へのログイン画面のURLがデフォルトで“wp-login.php”となっています。
WordPressへの攻撃を試みるボット・スクリプトは“wp-admin”または“wp-login.php”でログイン画面にたどり着けるサイトをアタックリストにアップしますので、この「ログイン画面のURLを変更」して管理画面への入り口を隠したり、ベーシック認証をかけて隠すことでブルートフォースアタック(総当たり攻撃)の端緒を一定程度減少させることができます。

■wp-config.phpのパーミッションを400ないし600にする

WordPressのファイルの内、wp-config.phpという非常に重要なファイルへのアクセスを制限することは、攻撃の端緒を潰す意味で重要です。
wp-config.phpへのパーミッションを400に設定すれば、WordPressサイトの管理者だけが読取可能(書込不可)となりセーフティですが、そうすると保守管理の現場での運用コストが増加する為、パーミッションを600に設定することで、WordPressサイトの管理者だけが読取・書込可能とする手法を当社では推奨しています。

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

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サイトのセキュリティ対策の第三は、攻撃を防御する対策を実施することです。

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

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

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

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

前述のように、攻撃者のボットやスクリプトにWordPress管理画面へのログイン画面へたどり着かれると、ブルートフォースアタックを受けてしまう可能性がありますが、その際に、「パスワードを複雑で長くする」「ログインの試行回数を制限する」「ログインに(ひらがな等の)画像認証を追加する」「フェールワンスを設定する」「エラーの原因を表示しない」等の対策を実施することで、攻撃を防御します。
ファールワンスとは、正しいID、パスワードが入力された場合でも一度はログイン失敗とさせる機能のことで、WordPressの場合、これらの防御機能はSiteGuard WP Pluginという有名プラグインで簡単に実装することができます。

■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つのシステムはセキュリティ対策の基本であり、各サーバーには、大なり小なり設置されていることが通常ですが、もし不足を感じるようであればセキュリティの専門企業の力をお借りして最適なセキュリティ製品の導入を検討することになります。
被害を少なくする対策

■バックアップ体制を整備する

万が一にも侵入を許してしまった場合には、基本的には、Webサーバーをクリーンインストールし(あるいは新しいサーバーを用意し)、確実に侵入されていないと言える段階でのバックアップを用いてWordPressサイトを再構築することになります。
このため、バックアップの体制を整備しておくことが非常に重要になります。

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

攻撃者のボット・スクリプトに管理画面に侵入されてしまっても、管理画面からの編集が出来ないようにしておけばテーマや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サイトのセキュリティ対策を実施させていただきます。

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