Kinstaをご利用のお客様は、隔離コンテナ技術CloudflareのエンタープライズレベルWAFSOC 2 Type Ⅱ報告書、およびMyKinsta必須の二要素認証(2FA)などのセキュリティ機能により、インフラストラクチャの堅牢なセキュリティの恩恵を受けることができます。

しかし、WordPressのセキュリティは、堅牢なインフラの確保だけでは不十分です。プラグインの脆弱性を悪用し、認証情報を盗用するためにプラットフォームを直接狙う高度な攻撃を阻止するための策が必要です。

そこで今回は、Kinstaの組み込みのセキュリティ機能を活かしながら、WordPressレベルの本質的な保護を実装するセキュリティ運用手順の実装方法をご紹介します。

管理者、クライアント、社員のための二要素認証(2FA)

Kinstaでは、コントロールパネルのMyKinstaアクセスに二要素認証を義務付けています。これはサーバーアカウント保護に役立つ基本のセキュリティ対策で、サーバー設定、請求情報、デプロイツール、およびサーバーとサイト管理に使用するすべてを保護してくれます。

MyKinsta内の認証アプリセクション
MyKinsta内の認証アプリセクション

しかし、WordPressは独立して動作しているため、wp-login.phpを標的とする攻撃者は、MyKinstaのセキュリティ層をすり抜けてしまいます。Kinstaのインフラのセキュリティがどれほど強固でも、WordPressの認証情報を入手すれば、誰でも即時サイトにアクセスできてしまいます。

MyKinstaの二要素認証は、サーバーアカウントのアクセス(SSH、ステージング環境、バックアップなど)、WordPressの二要素認証は、コンテンツ管理アクセスを保護します。したがって、サイト全体を守るには、両方の保護が必要になります。

Kinstaのインフラ保護に加えてWordPressに二要素認証を実装する

サイトに二要素認証を実装するためのプラグインをインストールすることは、非常に重要です。WordPressの主要開発者によるプラグインは多数ありますが、まずおすすめできるのは、WordPress.orgチームが開発したTwo-Factorです。

Two-Factorプラグイン
Two-Factorプラグイン

時間ベースのパスワード(TOTP、Time-Based One-Time Passwordsの略)やFIDO Universal 2nd Factor(U2F)、メールコード、そしてテスト用セットアップをサポートしており、より高度な統合向けのアクションやフィルターも多数用意されています。

他にも、以下のようなプラグインを利用できます。

  • Melapress提供のWP 2FA:オンボーディングの猶予期間を提供しながら、すべてのユーザー役割に二要素認証を強制できる。TOTPアプリ(Google AuthenticatorやAuthyなど)、メールコード、バックアップ方法をサポート。有料版では、信頼できるデバイスとホワイトラベルが利用可。
  • Wordfence Login Security:Wordfenceプラグインから派生したもので、セキュリティ機能はなく、ログイン認証だけを強化できる。カスタムログインページやXML-RPCにも対応しているため、モバイルアプリやリモート投稿に不可欠。
  • miniOrange SSO:WordPressをAzure AD、Google Workspace、OktaなどのIDプロバイダーに接続できるため、企業環境におすすめ。ディレクトリグループもWordPressの役割に自動的にマッピングされるため、マーケティング部門には編集者権限、サポート部門には投稿者権限といった形で付与されます。

いずれも無料で利用でき、設定も簡単です。

Webhookと監視を使用したリアルタイム通知の設定

Kinstaでは、標準機能としてインフラストラクチャ監視を提供しています。これには、10箇所のグローバルロケーションからの3分ごとの稼働状況監視、パフォーマンスの異常検出、および障害に対するメール通知、タイムスタンプとユーザー属性ですべての管理アクションを追跡するアクティビティログがあります。

しかし、WordPressレベルのイベントを考慮すると、Kinstaのインフラ監視を補完する監視とログが必要です。

WP Activity Logプラグイン(出典:WordPress.orgより)
WP Activity Logプラグイン(出典:WordPress.orgより)

MelapressのWP Activity Logは、Kinstaサーバーのパフォーマンスへの影響を最小限に抑えながら、WordPress固有のイベントをキャプチャしてくれます。

新規ユーザーの作成、ログイン試行の失敗、プラグインやテーマのインストール、さらにはコアファイルの変更などの重要なセキュリティイベントの通知を設定することができます。

Webhooksを使えば、チームのワークフローツールに通知を連携させることができます。たとえば、SlackのIncoming Webhookを設定すると、WP Activity Logから整理された形式の通知を送るように設定可能です。

{
  "event_type": "user_privilege_escalation",
  "severity": "critical",
  "user_affected": "[email protected]",
  "role_change": "editor_to_administrator",
  "timestamp": "2025-08-10T14:30:00Z",
  "site": "client-production.kinsta.cloud"
}

ペイロードによって、アクションを起こしたユーザーが特定でき、迅速な状況判断と対応が可能になります。さらに、セキュリティ監視に役立つ以下のツールを導入することも可能です。

  • Main WP:ポートフォリオ全体のセキュリティイベントを集約するため、Kinstaでホスティングする監視専用のサイトに導入して、すべてのサイトの監視が可能。アクティビティログの拡張機能は、企業のセキュリティ運用のためにSIEMプラットフォームにイベントを転送。
  • Patchstack:リアルタイム通知による脆弱性監視を提供。脆弱性がサイトに影響を及ぼすと、修復手順とともに即座に通知が届く。パッチのテストは、本番環境に反映前のステージング環境に適した用途。

なお、ログ保存を設定する場合、GDPRの場合は30日、PCI DSSの場合は90日、HIPAAの場合は1年から始めてください。長期保存のために、ログをGoogle Cloud Storageにエクスポートするのも手です。

WP-CLIとKinstaでセキュリティを監査する

Kinstaのすべての環境にはWP-CLIが事前にインストールされており、SSH経由でアクセス可能です。これにより、他のインターフェースでは数時間かかるような迅速なセキュリティ監査と緊急対応が可能になります。

WP-CLIのWordPress開発者リソースは、特定のコマンドを活用して体系的な監査を構築するのに便利です。例えば、wp user listコマンドは役割で絞り込むことができ、データベースクエリは時間的なパターンを検出することができます。

#!/bin/bash
# 月次ユーザーセキュリティ監査
echo "=== Administrator Accounts ==="
wp user list --role=administrator --fields=ID,user_login,user_email --format=table
echo "=== Recently Created Users ==="
wp db query "SELECT user_login, user_registered FROM wp_users 
WHERE user_registered > DATE_SUB(NOW(), INTERVAL 30 DAY)"

スクリプトは、未承認の管理者アカウントや疑わしいユーザー作成パターンなど、ユーザーベースのセキュリティリスクを特定します。

wp core verify-checksumsコマンドを使用すると、WordPressのコアファイルと公式のチェックサムを照合できるため、侵害を示す可能性のある不正な変更を検出できます。

#!/bin/bash
# 日次の整合性チェック
core_check=$(wp core verify-checksums 2>&1)
if echo "$core_check" | grep -v "Success"; then
  echo "Alert: Core files modified"
  # Send notification to team
fi

ごくまれにサイトが侵害された場合でも、証拠を保全しながら脅威を無力化するためのロックダウンスクリプトを実装可能です。

#!/bin/bash
# 緊急ロックダウンスクリプト

# ステップ1. 証拠を保存
echo "フォレンジックバックアップを作成中..."
wp db export emergency_backup.sql
tar czf site_snapshot.tar.gz ~/public

# ステップ2. 公開アクセスをブロック
echo "メンテナンスモードを有効化中..."
wp maintenance-mode activate

# ステップ3. 管理者権限の取り消し
echo "管理者権限を取り消し中..."
wp user list --role=administrator --field=ID | while read userid;
do
  wp user set-role $userid subscriber
  echo "管理者権限を取り消し: ユーザーID $userid"
done

# ステップ4. 再認証を強制
echo "全セッションを無効化中..."
wp config shuffle-salts

まずは調査のために侵害の証拠を保存し、被害を最小限に抑えるためにアクセスを阻止します。その後、脅威を無力化するために権限を取り消し、再認証を強制するためにセッションを無効にします。

MyKinstaと外部管理画面によるマルチサイトの監視

何十ものWordPressサイトを管理するには、MyKinstaのインフラ制御とWordPress管理画面を組み合わせる必要があります。MyKinstaには、更新、バックアップ、キャッシュクリアなどの一括操作機能があります(アクティビティログでバックアップ)。

MyKinstaの一括操作機能
MyKinstaの一括操作機能

Kinstaの以下のような組み込み機能は、セキュリティ基盤の中心となります。

  • サイト間で同じ操作を行うための一括操作機能
  • 包括的な監査証跡のためのアクティビティログ
  • クライアントまたはセキュリティ階層別にサイトを整理するためのカスタムラベル
  • プログラム制御のためのAPIアクセス

そして、WordPress管理画面でこれを拡張すること可能です。

  • MainWPはログ機能に加えて、Kinstaのサーバープランと互換性があり、複数抱えるサイトを「子サイト」として管理するのに便利。脆弱性スキャン、プラグインの一元管理、ファイルの整合性監視、一括サイト強化などの機能あり。
  • ManageWPは、WordPressマルチサイト用のSaaS(Software as a Service)ソリューションとして動作し、Workerプラグインを介して接続可能。有料サービスでは、リアルタイムスキャンとホワイトラベルレポートが利用できる。

Kinsta APIを使って、独自のセキュリティダッシュボードを構築するのも手です。以下は簡単な方法例です。

// Kinsta APIのセキュリティ監視
async function checkSitesSecurity() {
  const response = await fetch('https://api.kinsta.com/v2/sites', {
    headers: {
      'Authorization': `Bearer ${process.env.KINSTA_API_KEY}`
    }
  });

  const sites = await response.json();

  // 各サイトのセキュリティステータスを確認
  return sites.map(site => ({
    name: site.name,
    ssl_active: site.ssl?.status === 'active',
    php_current: parseFloat(site.php_version) >= 8.0,
    backup_recent: site.backups?.[0]?.created_at > Date.now() - 86400000
  }));
}

ただし、これを実装する際には、SSLのステータス、PHPバージョン、バックアップの最新性など、主要なインフラストラクチャのセキュリティ指標を確実に監視する必要があります。

クライアントに対するセキュリティの透明性を高める

何を導入するかに関わらず、クライアントからは通常、自分たちの投資がセキュリティ強化につながっているという証拠を求められます。セキュリティの提供に関して透明性の高いポリシーを持つことで、クライアントとの信頼を築き、導入した保守契約を正当化することができます。

レポートの構成や見せ方はそれぞれですが、インフラとアプリケーションの両方のセキュリティを実証するために、分析と測定基準を含めることが重要です。例えば、Kinstaでは以下のような指標を提供しています。

  • 稼働率やインシデント履歴
  • CloudflareによってブロックされたDDoS試行
  • SSL証明書のステータスと更新日
  • バックアップの成功率と可用性
  • PHPバージョンとセキュリティパッチ

WordPressからは以下のような指標を取得可能です。

  • ブロックされたログイン試行失敗数
  • 検出しパッチを適用した脆弱性
  • ユーザー権限の変更の追跡
  • ファイルの完全性の検証結果
  • セキュリティスキャンの結果

場合によっては、攻撃時に保護した収益、コンプライアンスの維持方法、サイトの可用性といった、ビジネス指標を含めるのも効果的です。

クライアントによっては、リアルタイムの可視性が必要かもしれません。例えば、WordPressの役割と権限システムを使えば、アクセス制限プロトコルを作成することができます。

/**
 * WordPressの役割と権限に関するドキュメントに基づいて
 * クライアント用セキュリティ閲覧者役割を作成
 */

function create_security_viewer_role() {
    remove_role('security_viewer');
    add_role('security_viewer', 'Security Viewer', array(
        'read' => true,
        'view_security_reports' => true,
        'view_activity_logs' => true
    ));
}

add_action('init', 'create_security_viewer_role');

/**
 * 機密領域への閲覧者アクセスを制限
 */

function restrict_viewer_access() {
    $user = wp_get_current_user();

    if (in_array('security_viewer', $user->roles)) {
        $restricted = array('plugins.php', 'themes.php', 'users.php');
        $current = basename($_SERVER['SCRIPT_NAME']);

        if (in_array($current, $restricted)) {
            wp_redirect(admin_url('index.php'));
            exit;
        }
    }
}

add_action('admin_init', 'restrict_viewer_access');

これにより、制限された権限を持つ閲覧者の役割が作成されます。これにより、クライアントにリアルタイムのセキュリティ監視を提供しながら、クライアントの閲覧によって予期せぬ変更が生じないようにすることができます。

まとめ

Kinstaでは、堅牢なインフラをすべてのお客様に提供していますが、WordPressのセキュリティ運用手順を適切に実装するには、アプリケーション層での保護も必要です。

Kinstaは、隔離コンテナ技術、Cloudflare WAF、二要素認証の義務化、および監視機能を通じて基盤を提供します。WordPressレベルのセキュリティ運用には、さらにプラスαでプラグインを使った対策を講じることで、セキュリティを強化できます。

また、WP-CLI対応、API、一括操作といった、Kinstaの一部のツールは、インフラとシームレスに連携します。

KinstaのWordPress専用マネージドクラウドサーバーを利用して、WordPressのセキュリティ運用手順を実装しませんか?堅牢なインフラがセキュリティ運用に違いをもたらします。

Jeremy Holcombe Kinsta

Kinstaのコンテンツ&マーケティングエディター、WordPress開発者、コンテンツライター。WordPress以外の趣味は、ビーチでのんびりすること、ゴルフ、映画。高身長が特徴。