WordPressでウェブサイトやブログを立ち上げるのは、手軽でツールとして便利な一方。
WordPressサイトを運用しつづけるには、メンテナンスをする手間やセキュリティ上のリスクを自分で対応する必要があります。
保守管理をするレベルで対応できる範囲はそれぞれですが。
個人でWordPressサイトを運営する方から、ビジネスでWordPressを使ってウェブサイトを開設している方、ウェブ制作会社などクライアントのウェブサイトをサポートしている方に参考になるようできるだけ幅広い視点から「WordPress保守運用チェックリスト」を作成してみました。
WordPress保守運用の底上げに繋がれば幸いです。
WordPress保守運用チェックリスト
2020.10.05更新
WordPress保守・保全
- WordPress本体・テーマ・プラグインがアップデートできる環境になっている
- 自動アップデートが機能している環境になっている
- WordPress本体はこまめにアップデートしている
- 手動
- 自動
- テーマ・プラグイン・翻訳はこまめにアップデートしている
- 手動
- 自動
- データのバックアップを定期的にしている (ファイルとデータベース両方)
- 手動
- 自動
- バックアップのスケジュール・頻度
- 毎日
- 毎週
- 毎月
- バックアップデータの格納先
- サイトと同一サーバー上
- 別のサーバー・ストレージサービスなど遠隔スペース
- バックアップ先は、セキュリティを施してアクセスは制限されている
- データベースの肥大化を防いでいる
- 投稿履歴の件数を制限している
- データベースの最適化を定期的に行っている
- リストアなど復旧作業のシミュレーションを検証環境上で行っている
WordPressセキュリティ
アプリケーションレイヤー
- テーマ・プラグインは出所 (開発元) を確認して適切に管理している
- 公式ディレクトリ掲載テーマ・プラグイン (審査レビューチェック済み)
- 有料テーマ・プラグイン
- 野良テーマ・プラグイン (配布先ダウンロードが特定サイトのみ、GitHubなどレポジトリのみ)
- 独自開発テーマ・プラグイン
- 使っていないテーマは、デフォルトテーマ一つだけ残して削除している
- 使っていないプラグインは削除している
- セキュリティ系のプラグインを少なくとも一つは導入している
- ログイン・パスワード試行攻撃防御 (総当たり攻撃・ブルートフォースアタック、パスワードリスト攻撃)
- DDoS 攻撃防御
- メールフォームスパム対策
- コメントスパム対策
- セキュリティ監視
- wp-config.php の salt を wordpress.org salt generator で生成して設定している
- wp-config.php をアクセスできないルートディレクトリ外に配置している
- WordPress 本体を専用ディレクトリにインストールしている
- テーマ・プラグインのファイル編集機能を停止している
- 独自に開発したテーマ・プラグインは適切に管理している
- ソースコードの変更履歴を管理している
- PHPやWordPress本体の最新バージョンにアップデートできるように設計している、または都度対応できるようにしている
- 自動アップデートできるように設計している
- WordPressの自動アップデートの仕組みを組み込んでいる
- GitHubなどレポジトリを分けて管理をしている
- 独自テーマ・プラグインをいつでも修正をして不具合対応・改修ができる
- 継続的に改善を行ってテーマ・プラグインの性能・品質を向上し続けている
ミドルウエアレイヤー
- ファイルパーミッションを適切に設定している
- PHPの実行を拒否、ファイルアクセス拒否制御を行っている
- wp-config.php
- /wp-admin/includes/
- /wp-includes
- /wp-includes/js/tinymce/langs/
- /wp-includes/theme-compat/
- /wp-content/themes/
- /wp-content/plugins/
- /wp-content/uploads/
- 管理画面ログインアクセスのセキュリティを強化している
- reCAPTCHAを導入している
- Basic認証を導入している
- 管理画面のアクセスをIPアドレスホワイトリストで限定している
- 2段階認証・2ファクタ認証を導入している
- ログイン画面をデフォルトのURLアドレスから変更して、アドレスを知っている限られた人にのみに制限
- XML-RPCへのログインアクセスのセキュリティを強化している
- アクセスをIPアドレスホワイトリストで限定している
- XML-RPCの機能を無効化している
- サイトへの特定のアクセスをIPアドレスブラックリストで制限している
- 国外IPアドレスフィルタを有効にしている
- WAFを導入している、またはWAF機能を有効にしている
- マルウェア混入チェックを定期的に行っている
- 脆弱性診断を定期的に行っている
ヒューマンファクター
- ユーザ名 admin は削除している、または存在していない
- ユーザ名 admin のログインを即時禁止している
- ユーザアカウントのパスワードを適切なパスワード強度で設定している
- 8文字以上
- 小文字・大文字・数字が最低1つずつ含まれている
- できれば記号も含める
- パスワード自動生成なら尚よし (Password Generator)
- ユーザアカウントの使い回しをしていない
- 複数のユーザアカウントには、適切な操作権限を付与している
- 使われていないユーザアカウントは定期的に削除している
- ログインアクセスを履歴記録している
サーバ・システムインフラ基盤
- サーバーの保守管理担当者がいる
- レンタルサーバーまたはVPS・クラウドサーバーで運用している
- 独自ドメインで運用している
- 接続元IPアドレスが取得できる (リバースプロキシサーバ構成ではX-Forwarded-ForでIPアドレスを送出)
- 接続元IPアドレスを対象としてアクセス制限ができる
- ファイル (URL) を対象としてアクセス制限ができる
- SSL/TLS (サーバ証明書) を導入して暗号化通信している
- http と https 両方でサーバー接続している
- 常時SSL (https のみに限定してサーバー接続、http はリダイレクト処理)
- 常時SSL (https のみに限定してサーバー接続、http は80番ポート閉鎖)
- 通信プロトコル HTTP/2 で通信している
- サーバー・データベースやPHPなどミドルウエアを定期的にアップデートしている
- 定期的にサービスプランを変更してサーバーを刷新している、またはサーバ・システム基盤をリプレイスしている
- サーバーパフォーマンスを定期的に計測している、またはモニタリングしている
- ネットワークパフォーマンスを定期的に計測している、またはモニタリングしている
運用体制・障害対応
- WordPressの保守担当者がいる
- 死活監視を導入している
- 人的監視
- リモート自動監視
- アラート通知など障害発生にすぐに気づく体制がある
- 24時間以内に一次対応 (応急処置) で障害の復旧ができる
- 障害の原因調査ができる体制がある
- WordPressサイトの再現検証、テスト環境がある
- 再発防止策の実施など根本的な解決を行える体制がある
- 障害報告・対応作業報告・作業予定など情報を共有している
- 保守運用体制を定期的にチェックして改善している
その他
- WordPressに関連しないファイルを削除、または適切に整理管理している (WordPressの管理下にないファイルや以前のホームページデータなど不要なファイルなど)
- 移行作業をした際に使ったバックアップデータを残していない
- 移行作業をした際に使った phpMyAdmin、phpinfo.php を残していない