はじめに
こんにちは!エンジニアのはまちです!
WordPressは世界中で利用されている大人気CMSです。
利用者が多い分、攻撃対象になりやすい側面がありますが、一方で、セキュリティに関する情報や対策の知見も多く共有されています。
キャッチアップはbaserCMSを得意としているのですが、度々WordPressも構築する事があり
近々WordPress構築に関わる予定があるため、WordPressのセキュリティについて理解を深めたいと思い、先日、WordPressを中心としたセキュリティウェビナーを受講しました。
ウェビナーでは、WordPress本体・プラグイン・テーマの脆弱性対策や、管理画面への攻撃対策など、WordPress運用で注意すべき内容が紹介されていました。
ただ、これはWordPressだけの話ではなく、CMSやWebサイト全般の保守・運用にも通じる内容だと感じました。
CMSは「公開して終わり」ではない
Webサイトは公開した時点で完成、ではありません。
WordPressやbaserCMSなどといったCMSの本体・プラグイン・テーマ・PHP・サーバー環境など、構築時は最新の状態にしていても、時間が経つにつれて古くなっていきます。
公開時点では問題がなかったサイトでも更新が止まってしまうと、後から脆弱性のある状態になってしまう可能性があります。
特にCMSは管理画面やプラグインの機能を持つため、放置されたままになると攻撃者の入口になりやすいそうです。
というのも、最近baserCMSのアップデート対応を行う機会があったのですが、
問題なく動作しているサイトでも、時間が経って再構築やアップデートを行う際に、依存しているライブラリやバージョンによっては脆弱性に関する警告が表示されることがありました。
定期的な更新やアップデート前の事前検証の大切さを改めて感じました。
WordPressで特に注意したいポイント
ウェビナーでは、WordPressサイトで注意すべきポイントとして、以下のような内容が紹介されていました。
・WordPress本体を最新に保つ
・プラグイン・テーマを更新する
・不要なプラグイン・テーマを削除する
・管理画面への総当たり攻撃に備える
・XML-RPCなど不要な機能を無効化する
・ユーザー権限を適切に管理する
・ファイルパーミッションを適切に設定する
WordPressは利用者が多く、プラグインやテーマも豊富に公開されています。
便利にお手軽に拡張できる一方で、プラグインが古い状態だったり、不要なテーマが残っていると、そこが攻撃の入口になる可能性があります。
「使っていないものは残さない」「更新を止めない」という基本的な運用が、セキュリティ対策として重要だと感じました。
管理画面を守ることも大切
CMSでは、管理画面へのログインを守ることも重要です。
ウェビナーでは、管理画面への総当たり攻撃への対策や、ログインURL・ユーザーIDが外部から見えていないか確認する方法についても紹介されていました。
管理画面にBasic認証を設定する、IP制限をかける、多要素認証を利用するなど、サイトの運用状況に応じた対策が必要です。
これはWordPressに限らず、baserCMSなど他のCMSでも同じですよね。
管理画面はサイトを操作できる重要な入口なので、公開後も「外部からどう見えているか」を定期的に確認するのは大事だと思いました。
見落としやすいのは「使っていないサイト」
今回特に印象に残ったのは、本番サイトだけでなく、「検証環境(ステージング環境)」や「旧サイト」もリスクになるという点です。
例えば、以下のようなものです。
example.com
├─ 本番サイト
├─ stg.example.com
├─ old.example.com
├─ /renewal/
├─ /backup.zip
├─ /db.sql
└─ /◯◯◯◯.php.bak
本番サイトは気をつけていても、過去に作成した環境や、一時的に使っていたサイトがサーバー上に残ったままになっていると、それがリスクになります。
外部からアクセスできる状態であれば、攻撃者からは丸見えの状態です。
CMSのセキュリティ対策では、今動いているサイト(環境)だけでなく、使っていない環境を棚卸しすることも大切だと感じました。
技術だけでなく、運用ルールも必要
セキュリティ対策というと、ツールや設定の話をイメージしがちです。
もちろん、WAFやマルウェア検知、改ざん検知などのツールは有効です。
ただ、それだけではなく、
・誰が更新するのか
・どの頻度で確認するのか
・サーバーやドメインの管理者は誰か
・退職者のアカウントが残っていないか
・バックアップはどこに、どの頻度でとっているか
・事故が起きたとき誰に連絡するか
といった運用面も重要です。
担当者が変わったり、制作から時間が経ったりすると、管理者や契約情報が分からなくなることがあります。
「誰が管理しているか分からない」という状態は、それ自体がリスクになります。
サイトの運用・保守で確認したい5つのポイント
1. 管理中のサイト情報、CMSの情報などの一覧はあるか
まず、どのサイトを管理しているのかを把握する必要があります。
本番サイトだけでなく、検証環境、旧サイト、サブドメインなども含めて一覧化してまとめておくと安心です。
2. 本体・プラグイン・テーマは更新されているか
CMS本体だけでなく、もちろんプラグインやテーマも確認対象です。
使っていないものは削除して、必要なものは更新できる状態にしておくことが大切です。
3. 使っていないサイトや検証環境が残っていないか
不要な環境が外から見える状態になっていないか確認します。
残す必要がある場合は、Basic認証やIP制限などでアクセス制限をかけます。
4. バックアップや設定ファイルが公開領域にないか
バックアップファイルや設定ファイルが外部から見える場所に置かれていないか確認します。
一時的に置いたファイルが残っていないかも注意が必要です。
5. 外部から見える状態を定期的に確認しているか
管理画面、著者ページ、不要なファイル、古いサブドメインなどが外部から見えていないか確認します。
内部で管理しているつもりでも、外部から見える状態になっていればリスクになります。
まとめ
今回、WordPressのセキュリティについて理解を深めるため、ウェビナーを受講しました。
WordPress特有の注意点もありましたが、安全に運用するという意味では、baserCMSなど他のCMSにも通じる内容が多くありました。
CMSは作って終わりではなく、公開後も更新・棚卸し・アクセス制限・バックアップ確認を続けていくことが大切です。
日頃の制作や保守の中でも、検証環境へのアクセス制限、公開領域に置くファイルの扱い、管理画面への導線など、セキュリティに関わるポイントは身近にあります。
今回のウェビナーを通して、普段のルールや確認作業が、サイトを安全に運用するための大切な保守の一部なのだと改めて感じました。
今後も「作って終わり」ではなく、公開後の運用まで意識しながら制作に関わっていきたいと思います。
baserCMSやWebサイト構築のご相談など
お気軽にお問い合わせください