Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WordPress のセキュリティの基礎について/WordPress Meetup@KOBE
Search
YukinobuAsakawa
June 23, 2025
0
180
WordPress のセキュリティの基礎について/WordPress Meetup@KOBE
2025/06/22(日)
Kansai WordPress Meetup@KOBE
サーバーやWordPressのセキュリティについて話し合う会
浅川幸宣の資料
YukinobuAsakawa
June 23, 2025
Tweet
Share
More Decks by YukinobuAsakawa
See All by YukinobuAsakawa
2020-11-03-TokyoWordPressMeetup-Translation-Asakawa
yukinobuasakawa
0
43
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
7
490
Building Adaptive Systems
keathley
43
2.6k
Designing Experiences People Love
moore
142
24k
Balancing Empowerment & Direction
lara
1
370
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Java REST API Framework Comparison - PWX 2021
mraible
31
8.6k
The Invisible Side of Design
smashingmag
299
51k
Fireside Chat
paigeccino
37
3.5k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
A designer walks into a library…
pauljervisheath
206
24k
Why Our Code Smells
bkeepers
PRO
337
57k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
2025/06/22 作成者: 浅川 幸宣 あさかわゆきのぶ WordPress のセキュリティの基礎について Kansai WordPress Meetup@KOBE サーバーやWordPressのセキュリティについて話し合う会
• 氏名:浅川 幸宣(あさかわ ゆきのぶ) • 1983年・大阪府泉大津市出身 • 経歴 ◦ 2005年新卒、IT業界に入り35才までの13年間は会社員として働く(今年で 20年目!) ◦
2018年にフリーランスとして独立 ◦ 会社員時代から OSS(オープンソースソフトウェア)の活動を始める ◦ WordPress は、開発・サポート・翻訳・イベント運営スタッフなどの活動を行なっています。 ◦ 2025年2月〜WordPress.org サポートフォーラム(日本語版)のモデレーターとして活動 ◦ なお、OSS 活動を株式会社Webの相談所さんにスポンサー支援いただいています。 自己紹介 WordCamp2018 Osaka Photo by Atsushi Ando-San WordPress.org プロフィールページ
WordPress に関する質問などを投稿できる公式サポートフォーラム ( https://ja.wordpress.org/support/ )は、日本語で誰でも投稿・閲覧・回答で きる場所です。 サポートフォーラムについて
本日は、日頃のフォーラムでの回答経験も踏まえて、WordPressを安定して運 用するためにセキュリティーの基本知識や疑問点、つまづきやすいポイントなど を解説します。 Agenda 1. WordPress の基礎知識 1.1. WordPressサイトの特徴 2.
定期的なアップデート(コア・プラグイン・テーマ) 2.1. 自動更新を設定する場合 2.2. 手動更新する時の工夫 2.3. エラーなどで特定バージョンを戻したい時 3. 基本的なセキュリティ対策 3.1. レンタルサーバーで実施できる対策 3.2. WordPress プラグインで実施できる対策 3.3. その他セキュリティー対策 4. WordPressアカウントの管理 4.1. 権限(ロール)の管理 5.1. ユーザーの新規追加・削除・停止 5.その他 5.1. 標準となるテーマやプラグインの選定 5.2. 開発環境の使い分け 5.4. FTPアカウントの運用について 5.5. おまけ
1.WordPress の基礎知識 1.WordPress の基礎知識
Web コンテンツを構成するテキスト、画像、レイアウト情報などを 一元的に保存・管理し、サイトを構築・編集するソフトウェア( CMS)です。 • CMSとして世界 No.1のシェアを持ち、2023年5月現在、世界中のサイトの 43%が WordPress を使用しています。
※W3Techsによる調査結果https://w3techs.com/ • 普段目にしているサイトの多くも WordPress を使って構築されており、「ニュースサイ トの The Japan Times」や「女性向け情報サイト・マイナビウーマン」など、日本国内で も多くのサイトやサービスの構築に使用されています。 WordPressとは
WordPressサイトは、表示するページの内容がデータベースに保存されていて、表示の たびにサーバーが内容を組み立てます。 WordPressの仕組み
「静的サイト」と「WordPressサイト(動的サイト)」のページ 表示の流れと、その違い 静的サイト WordPressサイト(動的サイト) HTMLファイルをそのまま返す (原則として、作った通りで、いつ・誰がみても同じ内 容が表示される) データベースから集めて毎回 HTMLを作る (ブログ一覧の自動生成、アクセス数に基づいた人気記
事、予約投稿機能、下書きに戻すなどが設定できる) 速くてシンプル 柔軟で更新しやすいが少し遅い場合も プログラム不要 プログラム(PHP)とDB(MySQL)が必要 構築と運用にはコーディングのスキルが必要 ・管理画面から操作可能 ・ブロックエディターでノーコードで作成できる ・更新が必要のないサイト ・LP(ランディングページ)向き ・日々更新が必要なサイト (ブログ、メディアサイトなど)
WordPressでのセキュリティー対策の基本① 1 WordPressのアップデート コア、プラグイン、テーマをアップデートしておく必要がある。 2 サーバーソフトウェアのアップデート PHPやデータベース(MySQL/MariaDB)も定期的に最新版 へ。 3 ファイル/ディレクトリのパーミッション管
理 重要ファイルへの書き込み制限(例 : wp-config.php) 4 WordPressアカウント管理 強力なパスワード使用と定期変更と不要なアカウントや権限 の見直し 5 常時SSL化対応 サイト全体でSSLを有効化し、HTTPアクセスをリダイレクト 6 WordPressサイトのバックアップ wp-contentとデータベースのバックアップは最低限必要 7 その他 WAFによる不正アクセス対策、FTPアカウントの管理、サー バー契約管理 一般的なレンタルサーバーで、WordPressサイトを運用する場合、 以下の対策が必要です。
WordPressでのセキュリティー対策の基本② ①WordPressのアップデート ・コア(本体) ・テーマ ・プラグイン ⑥WordPressサイトのバックアップ ②サーバーソフトウェアのアップデート ・PHPプログラム ・MySQLデータベース ③ファイル
/ディレクトリのパー ミッション管理 ④WordPressアカウント管理 ⑤常時SSL化対応 ⑦その他 ・WAFによる不正アクセス対策 ・FTPアカウントの管理 ・サーバー、ドメイン契約管理 ・ログによる監視
WordPress におけるバックアップの対象は以下の2つです。以下の2つはサイト毎に固有のデータで すので、必ずバックアップすべき対象です。 • WordPress のコンテンツデータ ◦ wp-content 配下にあるデータが対象です。 •
データベース ◦ 固定ページや投稿ページの主にテキスト情報や設定に関するデータが保存されています。 バックアップの対象
サイトに変更を加える、アップデートを行う前に実施することが大切です。 バックアップ作業を実施するのタイミング
2.定期的なアップデート 2.定期的なアップデート
自動更新・手動更新の場合の設定 理想は、コア含む全てのアップデートを自動で行うこと ですが、アップデート後に表示崩れなどの不 具合が発生する可能性もあるため、以下のような運用をお勧めします。 検証環境 本番環境
• 自動更新を設定する場合 ◦ 検証環境を自動更新をONに設定する ◦ 本番環境は、問題ないことを確認してから手動更新する ◦ WordPress コアのマイナーバージョン(セキュリティアップデート)の自動更新を ON
• 手動更新する時の工夫 ◦ アップデートより前にバックアップを手動で行うこと ◦ ①コア、②プラグイン、③テーマの順番で行う ◦ 脆弱性が発見された時のアップデートを見逃さない工夫が必要(攻撃対象になるため) 自動更新・手動更新の場合の設定 追記: ・https://www.cve.org/ などのサイトの情報をウォッチする ・Wordfenceなどのセキュリティー関連の発信をしている Xアカウントをフォロー する
1. プラグインを使う方法 1.1. WP Downgrade | Specific Core Version 1.2.
WP Rollback WordPressの本体、テーマ、プラグインのバージョンを下げ たい(戻したい時)① WordPress本体、テーマ、プラグインは、原則として最新版が望ましいですが、最新版にアップデート した後に、不具合やエラーなどで一時的に(暫定的に)前のバージョンに戻したい時があります。その ようなケースで有効です。
2.FTPソフトでダウングレードする方法 1.リリースアーカイブページ(本体の場合)やWordPress.org プラグインページの以前のバー ジョンからファイルをダウンロード 2.WordPressの管理画面メニューの「プラグイン」から「新規追加」、「プラグインのアップロード」 を選択します。「ファイルを選択」します。この時に、「アップロードしたもので現在のものを置き換 える」をクリック。 WordPressの本体、テーマ、プラグインのバージョンを下げ たい(戻したい時)② Zip形式などでダウンロード
3. WP-CLIコマンドを使う方法 WP-CLI は WordPress を管理するためのコマンドラインインターフェースです。 プラグインの アップデートやマルチサイトのセットアップなど、多くのことをブラウザなしで実行できます。 --forceは上書きするという意味です。 WP-CLI公式サイト:
https://wp-cli.org/ja/ 3-1.コアのアップデート(ダウングレード)をする場合 wp core update --version=<バージョン> --force 3-2.プラグインのアップデート(ダウングレード)をする場合 wp plugin install <プラグイン名> --version=<バージョン> --force 3-3.テーマのアップデート(ダウングレード)をする場合 wp theme install <テーマ名> --version=<バージョン> --force WordPressの本体、テーマ、プラグインのバージョンを下げ たい(戻したい時)③
3.基本的なセキュリティー対策 3.基本的なセキュリティー対策
レンタルサーバー側の設定を最大限活用して、それでも足りない部分をWordPressのプラグイ ンで補完していくのが良い。 WordPressサイトのセキュリティー対策の基本的な考え方 1. WordPress側への負荷 を少しでも減らすため(プ ラグインはPHPプログラ ムで動作する 2. プラグインも脆弱性のリ
スクがある。 ファイアーウォール
一般的なレンタルサーバーでは以下の項目を設定可能です。本番環境では原則、以下のすべての項目を有効に することをお勧めします。 1.ネットワーク/サーバーレベルの防御 • DDoS攻撃の緩和 ◦ 大量アクセスによるサーバー負荷を軽減・遮断 • 不正アクセスの遮断( IP制限、国別制限など)
◦ ブラックリストIP、海外IPブロックなど • SQLインジェクション・XSS等の一般的なWeb攻撃の防御 ◦ アプリケーション層への悪意あるリクエストの検知・遮断 • 既知の脆弱性へのアクセスブロック ◦ 公開された脆弱性を突いた攻撃パターンの遮断 • ボット・クローラー対策 ◦ 不審なアクセスや自動化ツールの遮断 • SSL/TLS(HTTPS)強制/証明書の管理 ◦ 通信の暗号化、SSL証明書の自動更新 2.インフラ・システム運用 • サーバーOSやミドルウェアの脆弱性対策(パッチ適用など) • 自動バックアップやリカバリ(リストア)機能 • ファイアウォールなどのネットワーク制御 レンタルサーバーで実施できる対策
1.WordPressアプリケーション固有の防御 • ログインページの保護 ◦ reCAPTCHA導入、ログイン試行回数制限、2要素認証(2FA) • 管理画面(wp-admin)へのアクセス制御 ◦ IP制限、Basic認証追加 •
ユーザー権限の管理 ◦ 不要なユーザーの削除・権限見直し • ファイル編集機能の無効化 ◦ wp-config.phpや管理画面からのテーマ・プラグイン編集禁止 • コア・プラグイン・テーマの脆弱性診断 ◦ 脆弱性のあるバージョン検知と通知 • WordPressバージョンやディレクトリ構造の露出防止 ◦ “readme.html” や “wp-config.php” など機密ファイルへの対策 • スパム対策 ◦ コメントスパム、フォームスパムのブロック • 管理者へのアラート通知 ◦ 不審なログインや変更発生時のメール通知 WordPressプラグインでカバーすべき範囲
WordPressプラグイン(SiteGuard WP Plugin)で実施できる 対策 1. ログインページ変更 a. /wp-login.php を別のURLに変更し、ブルートフォース攻撃を軽減 b.
管理画面URLが変わるので運用に注意が必要ですが、有効な対策です。 2. ログイン通知メール a. 管理者にログイン通知を送信 3. ログイン試行制限 a. 指定回数以上の失敗で一定時間ブロック 4. 画像認証(CAPTCHA) a. ログインやコメント投稿に画像認証を追加 b. 海外からの攻撃に対して非常に有効な対策と言えます
WordPress の運用保守でログを活用する方法① WordPressサイト運用でよく使われる「サーバーアクセスログ」と「デバッグログ」につ いて、それぞれの仕組み・活用方法・注意事項を解説します。 1. サーバーでのアクセスログ • サーバー(ApacheやNginxなどのWebサーバー)が、Webサイトへのリクエスト(アクセス)があるたび に記録するログ。 •
レンタルサーバーの管理コンソール画面から設定を行う。 (サーバー会社によって、設定方法が異なります。ご自分の設定を確認してみてください。) 参考: https://web-soudan.co.jp/topics/5227/ 2. デバッグログ(WordPressのデバッグログ) WordPressがエラーや警告、開発用の情報を記録するログ。 • プラグインやテーマ開発時の不具合調査 • サイトで発生するPHPエラーや警告、デプリケーションの検出 • サイト障害時の原因特定(本番環境では表示せずログ出力のみ推奨)
WordPress の運用保守でログを活用する方法② 種類 仕組み 主な用途 注意事項 サーバーアクセスログ Webサーバーが記録 アクセス分析・攻撃検知 個人情報管理・容量管理
デバッグログ WordPressがエラー等を記 録 バグ調査・原因解析 本番表示禁止・肥大化に注 意 まとめ 注意 セキュリティー対策としては、アクセスログがサーバー側で保存できる設定に なっているかが非常に重要です。アクセスログの記録がオフの状態だった時に は、不正アクセスの履歴などが確認できないためです。
4.WordPressアカウント管理について 4.WordPressアカウント管理について
権限(ロール)の管理 WordPress を運用する場合、サイト制作を行う方は「管理者」権限、投稿記事などを執筆する だけ(日常業務でブログの更新のみ)のユーザーの場合には、「編集者」権限にすることをお勧 めします。 • 管理者 (スラッグ: ‘administrator’) –
シングルサイト内のすべての管理機能にアクセスで きるユーザー。 • 編集者 (スラッグ: ‘editor’) – 他のユーザーの投稿を含むすべての投稿を公開、管理できる ユーザー。テーマの変更やプラグインのインストール・削除などのサイト設定全体に関する 変更はできない
ユーザーアカウントやパスワードの使い回しについて 1. 複数人で1つのアカウントを使い回すと … • 誰が何をしたのか分からない ◦ 記事を消した人や設定を変更した人の特定ができなくなります。 • 悪意があっても見抜けない
◦ 誰かが意図的にサイトを壊したり、情報を盗んだとしても、犯人が分からないままです。 • 退職者や外部の人に使い続けられるリスク ◦ 以前の担当者がアカウント情報を知っていたままだと、退職後や契約終了後もアクセスされる恐れ があります。 2. パスワードを他のサービスと同じにしていると … • どれか1つがバレたら、全部バレる ◦ 他のサービスが攻撃され、アカウント情報が漏れた場合、同じパスワードを使っている WordPress も不正ログインされる可能性があります。 ◦ 残念ながら、メジャーなクラウドサービスでも、アカウント情報の漏洩事例があります。 ◦ https://xtech.nikkei.com/atcl/nxt/column/18/00001/09539/
ユーザーの新規追加・削除・停止について WordPress を運用する場合、退職や人事異動などで、業務が変わる場合には、必要に応じて ユーザーの削除や停止を行ってください。 1. 新規にユーザーを追加する場合 必要以上の権限を付与しないようにする。 ブログやページの更新だけであれば、編集者権限を付与。 2. 削除する場合
WordPressユーザーを削除する場合には、そのユーザーが作った コンテンツを他の方へ引き継ぐ 3. 削除したいが、執筆者情報などを掲 載している場合 記事下に執筆者などを表示している場合(WPユーザーから出力し ている場合)には、該当のアカウント削除して他の方に引き継いでし まうと、この執筆者の部分も変わってしましまうため、権限グループ を「 このサイトでの権限なし」に変更する。 参考:https://web-soudan.co.jp/topics/4967/
5.その他(役にたつティップス集) 5.その他(役にたつティップス集)
プラグイン・テーマの選定と管理の考え方 • 同じ用途のテーマやプラグインはできる限り種類を少なくしてナレッジがチーム内で蓄積さ れるように工夫する。 • 設定内容やカスタマイズ例はなるべく他の制作者にもわかるように、Wiki などのドキュメン トにまとめる、コメントを記載するようにしてください。 • 有効化していないテーマやプラグインは定期的に見直して、削除(アンインストール)するよ
うにしてください。
本番・ステージング環境の使い分け • ローカル開発環境 ◦ デザイナーさん、エンジニアさんが制作・開発段階で利用する環境 ◦ 開発者の方のPCの中に、WordPressサイトを構築する環境 ◦ Local が有名:
https://localwp.com/ • ステージング環境 ◦ (レンタル)サーバー側で構築する環境 ◦ テストサイト用のドメインで運用して、ベーシック認証などで第三者が閲覧できない仕組みにすることが 多い ◦ 表示確認、動作テストなどで利用する • 本番環境(プロダクション環境) ◦ 実際に公開している本番環境 ◦ サイトの設定変更や更新作業に関しては、管理者権限を持っている方のみが行うのが一般的
使い捨てができるテスト環境 Taste.wp ( https://tastewp.com/ ) • 新しいプラグインを試したい • アップデートしたらどうなるか事前に確認したい •
管理画面の操作説明や新しいメンバー向けに勉強用のWordPress環境が必要
コメント機能、お問い合わせフォームは本当に必要? コメント機能、お問い合わせフォームは正しく運用しないとスパムにすぐに狙われま す。
FTPアカウント運用の注意点(個人アカウントの発行) 1. アクセス権限の分離と制限 • アカウントごとにアクセス可能なディレクトリを制限 できる(例:/public_html/wp-content/themes/your-themeのみ にアクセスさせる)。 • 誤ってコアファイルや他のディレクトリを変更されるリスクを下げられる。 2.
操作のトレーサビリティ(責任の所在明確化) • 誰がいつどのファイルにアクセスしたかは直接的には記録されませんが、 問題発生時に関係者の特定が容易 になります。 3. セキュリティ管理の効率化 • 外部スタッフや一時的な業務委託者など、プロジェクト終了時に その人専用のFTPアカウントを削除すれば即座にアクセス遮 断できる。 • パスワードを共有しないので、漏洩リスクが軽減される。 4. 組織内のセキュリティポリシー遵守 • 複数人での管理・開発が関わる中での セキュリティレベル向上 や内部統制の強化につながる。 FTPアカウントについては、できる限り個人単位で個別にアカウントを発行してください。特に外 部の方への作業依頼する場合には、権限を最低限のものにしてください。 追記: レンタルサーバーの契約プランに よって、複数のFTPアカウントを作 成できる/できないなどの違いがあ ります。
FTPアカウント運用のベストプラクティス 項目 推奨アクション アカウント発行時 個人単位のアカウント名を付ける 権限の設定 最小限の必要ディレクトリに限定。 パスワード管理 強力なパスワードを設定し、必要に応じて定期変更 or
ワン タイム利用 アクセスログ確認 万が一に備えてFTPログの記録有無を確認(エックスサー バーの「アクセスログ」機能) プロジェクト終了後 アカウントを必ず削除し、共有していた情報も破棄または変 更 定期棚卸し FTPアカウントの定期的な見直し・不要アカウントの削除 追記 SFTP (SSH File Transfer Protocol)は、通信時に 暗号化されているので、利用できる時には、 FTPで はなくSFTP利用してください。
ファイル/ディレクトリのパーミッション管理① WordPressサイトのセキュリティ対策において、ファイルパーミッション(ファイルや ディレクトリのアクセス権)は非常に重要な役割を果たします。不適切なパーミッショ ン設定は、第三者による不正アクセスやサイト改ざん、情報漏洩のリスクを高めてし まいます。 • アクセス制御 ファイルパーミッションは、誰がファイルやディレクトリを閲覧・編集・実行できるかを 制御します。不正な権限を与えてしまうと、悪意のある第三者による改ざんやマル ウェアの設置が容易になります。
• 脆弱性悪用の防止 WordPressやプラグインに脆弱性があった場合でも、適切なパーミッション設定をし ておくことで、被害を最小限に抑えられます。 • 最小権限の原則 サイト運用に必要な最低限の権限だけを与えることで、リスクを低減します。
ファイル/ディレクトリのパーミッション管理② • 不要な書き込み権限を与えない。 サイト構築時やプラグイン・テーマ導入時以外は、wp-content内のディレクトリにも 書き込み権限(777など)を与えない。 種類 推奨パーミッション 説明 wp-config.php 600
or 640 サイトの設定やDB情報が書かれているため、 600や640などで きるだけ厳しいパーミッションに設定。 .htaccess 644 書き込み権限は所有者のみ、グループメンバーとその他の人に も読み取り権限がある設定 ディレクトリ 755 ファイル所有者には読み込み、書き込み、実行を許可し、グ ループとその他のユーザーには読み込みと実行を許可。 ファイル 644 書き込み権限は所有者のみ、グループメンバーとその他の人に も読み取り権限がある設定
ありがとうございました!