侵入経路の多くは「初歩的な対策の欠如」から生まれます。とくに管理者の使い回しパスワード、二段階認証の未導入、アップデート放置、不要ユーザーや不要プラグインの放置、バックアップはあるのに復元テストがない——この5つが重なると、被害の確率は一気に上がります。本稿では、制作・運用現場で費用対効果の高い順に実施すべき5施策を深掘りし、さらに補強策・可視化・運用ルール・インシデント対応まで含めて「回るセキュリティ」を具体化します。
Contents
基本5施策(費用対効果の順)
- 二段階認証(MFA):管理者・編集者は必須。漏えいDB照合・総当たり・フィッシングが成立しても、MFAで突破は劇的に減ります。
実装ポイント:- サイトの役割に応じて「全管理系ロールにMFA必須」を運用規定化(プラグインやIdP連携でも可)。
- バックアップコードの保管場所をチームで定義(パスワードマネージャー推奨)。
- ログイン防御:URL変更、試行回数制限、reCAPTCHA/Turnstile、不要なXML-RPC停止、REST APIのユーザー列挙対策は低コストで効きます。
設定例(ApacheでXML-RPC無効):<Files "xmlrpc.php"> Require all denied </Files>Nginx で /wp-login.php のレート制限:limit_req_zone $binary_remote_addr zone=login:10m rate=10r/m; location = /wp-login.php { limit_req zone=login burst=20 nodelay; include fastcgi_params; # 以降は環境に合わせて }RESTユーザー列挙抑止: ?author=1 などのリダイレクトをWAFで遮断、もしくはフックで匿名化。 - 権限最小化:不要ユーザー削除、共有アカウント禁止、ロールとケイパビリティの適正化。「投稿担当に管理者権限」は厳禁。
運用ポイント:- オンボーディング/オフボーディングのチェックリストにアカウント付与/剥奪を組み込み、四半期ごとに棚卸し。
- FTP/SSH/DB資格情報を個人割り当てにし、共有配布をやめる(発行・失効の履歴を残す)。
- 更新の継続:コア・テーマ・プラグインを最新化。放置プラグインは停止ではなく削除。
運用ポイント:- ステージングで検証 → 本番反映を定常化。一括更新ではなく影響範囲の大きい順に段階適用。
- 変更履歴(changelog)の確認と、破壊的変更(breaking change)の有無を毎回チェック。
- バックアップ+復元テスト:取得だけでは不十分。復元できるかどうかが品質です。RPO(データ喪失許容量)/RTO(復旧目標時間)を数値で定義し、月次で検証。
運用ポイント:- 3-2-1 ルール:3世代・2種類の媒体・1つはオフサイト(暗号化)で保管。
- DBダンプのローテーションと整合性チェック、メディア(uploads)含むファイル完全性の検証。
補強策と可視化(攻撃面の縮小+異常の見える化)
- WAF / セキュリティプラグイン:スキャン、防御、通知を統合。検知ルールと閾値(ログイン失敗、海外からのPOST急増など)をSlack/メールでアラート。
- ファイル権限の適正化:典型は
755/644。所有者/グループを明確化し、不要な書込権限を削減。 - uploads でPHP実行禁止: .htaccess 例(Apache)
<Directory "/path/to/wp-content/uploads"> <FilesMatch "\.php$">Require all denied</FilesMatch> </Directory>Nginx 例location ~* ^/wp-content/uploads/.*\.php$ { deny all; return 403; } - wp-config.php のハードニング:
define('DISALLOW_FILE_EDIT', true); // 管理画面からのファイル編集禁止 define('WP_POST_REVISIONS', 10); // 無限リビジョンの抑制(任意) define('AUTOSAVE_INTERVAL', 120); // 負荷調整(任意)※DISALLOW_FILE_MODSはアップデートも止まるため、Composer運用などの例外時のみ。 - キーとソルトの更新:秘密鍵のローテーションでハイジャック耐性を上げる(wp-config.php のキーを定期更新)。
- セキュリティヘッダ:CSP/Strict-Transport-Security/X-Frame-Options/Referrer-Policy を環境に合わせて導入。
- 監査ログ:ユーザー操作(ログイン・権限変更・プラグイン導入/削除・設定変更)を記録・保全。
運用ルール(チームで守るための標準化)
- 本番直更新の禁止:ステージング→レビュー→本番反映。Gitで差分を可視化し、ロールバック経路を常設。
- 作業記録の残置:誰が/いつ/何を行ったかをチケットやRunbookに記録。再現性を高め、属人化を防ぐ。
- 権限レビューの定期実施:四半期ごとにユーザー棚卸し、外部委託の期限管理、アカウント休眠の自動失効。
- 秘密情報の管理:環境変数・Vault・パスワードマネージャーで集中管理し、平文共有を禁止。
インシデント対応の最小プレイブック
- 検知:アラート受信(改ざん・不審ログ)→ 影響範囲の初期把握。
- 隔離:一時的にメンテ/Basic認証、WAFで書込み系を制限。
- 初動:直近変更のロールバック、疑わしいユーザー/プラグインの無効化、
debug.logとアクセスログの保全。 - 根治:コア再展開、不要ファイル削除、キー・パスワード総入替、.htaccess/Nginxの見直し。
- 回復:Search Console等での回復申請、キャッシュ再構築、KPI監視。
- 事後:原因分析・再発防止策の文書化・手順更新。
月次・四半期で回すチェック
- 月次:MFA有効率、失敗ログインの推移、更新の適用率、バックアップ復元テスト。
- 四半期:権限レビュー、不要プラグイン/テーマの棚卸し、セキュリティヘッダ・WAFルールの見直し、Runbookの更新訓練。
セキュリティは“導入して終わり”ではなく“運用で磨く”領域です。対策の有無よりも、継続できる仕組みを持てているかが品質の分水嶺になります。まずはMFA・ログイン防御・権限最小化・更新継続・復元テストの5点を確実に回し、補強策と可視化で「気づける体制」をつくりましょう。域です。対策の有無より、継続できる仕組みを持てているかが品質の分水嶺になります。
