Quantcast
Channel: WordPress アーカイブ - WEBもがき道場
Viewing all articles
Browse latest Browse all 21

WordPressセキュリティ対策完全ガイド:構築と運用・保守別に紹介

$
0
0

1. はじめに:なぜWordPressのセキュリティ対策が重要なのか

1.1 WordPressを取り巻くセキュリティリスク

WordPressは世界で60%を超える圧倒的シェアを誇るCMSです。WordPressを利用する上場企業のコーポレートサイトも年々増加しています。

王道DX|「WordPressの脆弱性と企業サイトの脆弱性攻撃対策」|https://ohdo.at21.jp/cms/wordpress01/|2024年11月8日

WordPressは世界のWebサイトの60%以上で使用されている人気のCMSプラットフォームです。
そして、企業のコーポレートサイトでも採用されることが多いです。
しかし、この広範な普及は同時に大きなセキュリティリスクも伴っています。

現状の深刻な課題

日常的な攻撃の実態:1日あたり1万件以上の不正アクセスが発生

WordPress の脆弱性を狙った攻撃は、毎日1万件以上発生しています。

王道DX|「WordPressの脆弱性と企業サイトの脆弱性攻撃対策」|https://ohdo.at21.jp/cms/wordpress01/|2024年11月8日
オープンソースの両面性:誰でも構造を確認できるため、脆弱性が見つかりやすい

WordPressの脆弱性が狙われやすい理由には、世界で普及率が最も高いオープンソースであることや、プラグインでの拡張で便利な反面、責任が不明確になりやすいことなどがあります。

王道DX|「WordPressの脆弱性と企業サイトの脆弱性攻撃対策」|https://ohdo.at21.jp/cms/wordpress01/|2024年11月8日

「無料で、容易に取得しやすい」というメリットがある一方、
「脆弱性が見つかりやすい」「セキュリティに責任を負わない」というデメリットがあります。

実際の被害事例の増加:著名人のサイト改ざんなど、具体的な被害報告が後を絶たない

2023年6月の話ですが、料理研究家のリュウジさんのWordPressサイトが攻撃されたことをX(旧:Twitter)で公表されています。

有名人だけでなく、フォロワーさんや知人から「自分のWordPressサイトが攻撃された」という話を時々聞きます。
被害が出てから対策しても遅いのです。

1.2 セキュリティ対策の現実

多くの場合、以下のような理由でセキュリティ対策が後回しにされています:

  • 予算の制約
  • 人的リソースの不足
  • 技術的な知識不足

本記事では、これらの制約を考慮し、無料または低コストで実装可能な実践的なセキュリティ対策に焦点を当てています。
私がサイト構築時、基本的に行っている内容になります。
かなりの長文で恐縮ですが、ご参考にしていただけると幸いです。

2. サイト構築時のセキュリティ対策

2.1 管理画面への不正ログイン対策(総当たり攻撃、ID・パスワードの組み合わせによる攻撃への対策)

基本的なアカウント設定

  • 「admin」など推測されやすいユーザー名は避ける
  • 強力なパスワードを設定する

国外IPアドレス接続制限の設定

1. Xserverの場合
①WordPressセキュリティ設定

これを設定しても、サイト自体は海外からでも閲覧できます。
管理画面などへのアクセスを海外から出来ないようにします。
(海外から更新作業をする場合は、このフィルターを外し、IPアドレス制限など別の対策と併用する必要があります)

  • 初期設定:国外IPアドレスからの投稿はOFF、それ以外はON
  • 「国外IPアドレスからのコメント・トラックバック制限」は初期状態ではOFF(無効)
    →国外からのコメント・トラックバックが不要な場合は、ONに設定を推奨

▽Xserver:WordPressセキュリティ設定
https://www.xserver.ne.jp/manual/man_server_wpsecurity.php

SSH設定「ON[国内からのアクセスのみ許可]」※

※実施するなら、運用前が望ましい。

SSH(Secure Shell)とは、ネットワークを介してサーバーにログインしたり、ログインしたマシンでコマンドを実行する手段の一つ。

実施前に以下のデメリットを考慮:
・海外出張時のサーバー管理が不可。海外からの管理作業にはVPNが必須
・CDNやクラウドサービス経由の正規通信が遮断される可能性あり
・国内IPアドレスを詐称した攻撃は防げない

▽Xserver:SSH設定
https://www.xserver.ne.jp/manual/man_server_ssh.php

WAF設定※

※実施するなら、運用前が望ましい。

WAF設定では、有害な可能性のあるアクセスを検知する機能を提供するので実施するのがおすすめ。
しかし、まれに、WordPressのプラグインと衝突することがあるので、導入時にはチェックが必要。

実施前に以下のデメリットを考慮:
・不正アクセスの100%防御は保証されない
・脆弱性対策の最低限の予防策として機能
・併せて最新バージョンの利用とセキュリティ対応が必要

▽Xserver:WAF設定
https://www.xserver.ne.jp/manual/man_server_waf.php

2. さくらサーバーの場合
①国外IPアドレスフィルター

これを設定しても、サイト自体は海外からでも閲覧できます。
管理画面などへのアクセスを海外から出来ないようにします。
(海外から更新作業をする場合は、このフィルターを外し、IPアドレス制限など別の対策と併用する必要があります)

  • 初期設定ではアクセス制限設定が「有効」
  • 個別の制限設定を必要に応じて追加
https://help.sakura.ad.jp/rs/2234
WAF設定※

※実施するなら、運用前が望ましい。

  • WAF機能を 「利用する」 に設定したドメインは、ドメイン設定で削除できない。ドメインを削除する場合、「利用しない」に変更してから削除する。
  • 海外など、特定地域のアクセスのみを遮断することは不可
https://help.sakura.ad.jp/rs/2233

※SSHは高度な設定が必要なため、さくらサーバーでは基本的に実施しない。

3. ロリポップの場合
①海外アタックガード機能の設定

これを設定しても、サイト自体は海外からでも閲覧できます。
管理画面などへのアクセスを海外から出来ないようにします。
(海外から更新作業をする場合は、このフィルターを外し、IPアドレス制限など別の対策と併用する必要があります)

https://lolipop.jp/manual/user/attack-guard
WAF設定の実施※

※実施するなら、運用前が望ましい。

https://lolipop.jp/manual/user/waf-set

※SSHはサポート対象外のため、ロリポップでは基本的に実施しない。

追加的なアクセス制限設定

1. FTPアクセス制限
特定のIPのみFTPアクセスを許可※

※ 社内でのみ更新作業を行う場合に設定

  • お客様側での更新作業が必要な場合:
    • 事前にお客様のIPアドレスの確認が必要
    • 固定IPでない場合は代替案の検討が必要
2. 管理画面の追加保護
Basic認証の設定※

WordPressログイン画面にBasic認証を追加

※以下を事前にお客様に確認する必要がある:
お客様のIPアドレスの確認が必要
固定IPでない場合は代替案の検討が必要

ログイン制限の強化
  • ログイン試行回数の制限
  • ログインページへの画像認証追加
  • ログインURLの変更(WordPressディレクトリ構造を変更していない場合)
セキュリティプラグインの導入
  • 「SiteGuard WP Plugin」の設定
    • ログイン試行回数制限機能の有効化
    • 画像認証の設定
    • 管理ページのURL変更
  • 有料テーマ使用時の注意点:
    • SWELLなどの場合、「XO Security」の使用を検討
  • Xserverの場合:
    • デフォルト機能があるが、プラグインでの二重対策を推奨

2.2 コンテンツ保護とファイルアクセス制御

SSL/TLS暗号化の実装

SSLの設定

SSLとは、「インターネット上のデータ通信を暗号化して保護する仕組み」のこと。
Webサイトとユーザー間の通信を暗号化することで、個人情報やクレジットカード情報などの重要なデータを第三者から守ることができる。

  • 設定手順:
    • サーバーのコントロールパネルでドメイン設定
    • http→httpsへの転送設定
    • 混在コンテンツの確認と修正

WAFによる保護

WAF設定時の注意点※

※実施するなら、運用前が望ましい。

  • 実装前の確認事項:
    • テーマとの互換性確認
    • 使用プラグインとの互換性確認
    • 「Elementor」など、特にページビルダー系プラグインとの相性に注意

参考サイト:

https://e-senryaku.jp/wp/trouble/waf-off-wp-security/

重要ファイルの保護設定

wp-config.phpの保護
  • 秘密鍵の設定
  • パーミッションを「400」に設定
.htaccessの保護
  • wp-config.phpと同じ階層の.htaccessのパーミッションを「606」に設定

WordPressファイル構造の最適化

ディレクトリ構造の変更
  • wp-contentディレクトリの移動:
    • WordPressインストールディレクトリの外部へ移動
    • ディレクトリ名の変更することで秘匿性を向上

注意点:
各サーバーの「テストサーバー作成機能」が使用不可に
※バックアップサービスは通常通り利用可能

その他のセキュリティ強化
  • Authorページの非公開設定
    • サイトでユーザー検索機能を使用しない場合に推奨

プラグイン管理の最適化

プラグインの選定基準
  • 評価のチェック:
    • 「評価1」が異常に多いプラグインは使用を避ける
    • 有効インストール数が4桁台以下のものは慎重に判断
  • 更新状況の確認:
    • 最新3回のメジャーリリースでのテスト状況を確認
    • 定期的な更新が行われているかを確認
不要プラグインの管理
  • 未使用テーマの完全削除
    • 不要なテーマを介した侵入リスクの軽減
  • 無効プラグインの削除
    • 使用していないプラグインからの脆弱性排除

2.3 スパム対策の実装

コメントスパム対策
  • 基本設定:
    • 不要な場合はコメント機能を完全に無効化
    • 必要な場合は手動承認に設定。
      また、プラグイン「Anti-Spam Bee」の導入し、特定言語のコメントのみ許可設定など、詳細項目を設定する。
メールフォームのセキュリティ強化
  • 推奨プラグイン(よく使うもの):
    • Snow Monkey Forms
    • Contact Form 7
  • 追加セキュリティ機能:
    • 「Advanced Google reCAPTCHA」の導入
    • フォームの文字数制限設定(Contact Form 7で実施)
    • 日本語入力必須チェックの実装(Contact Form 7で実施)

参考サイト:

https://form.run/media/contents/wordpress/wordpress-anti-spam

2.4 データベースの不正操作対策

基本的な保護設定
  • WordPressバージョン情報の秘匿
    • バージョン情報の非表示化による脆弱性の隠蔽
  • データベース接頭辞の変更
    • デフォルトの「wp_」から別の接頭辞に変更
ユーザー権限の適切な設定
  • 権限グループの設定
    • 管理者権限の適切な制限
    • ユーザーごとに必要最小限の権限を付与
  • SQLインジェクション対策
    • PHPコード出力時のエスケープ処理の実装
/*PHPコード出力時のエスケープ処理の実装例*/

/* テーマのディレクトリURI */
<?php echo esc_url( get_template_directory_uri() ); ?>

/* ホームページURL */
<?php echo esc_url( home_url( '/' ) ); ?>

/* <br>などhtmlタグが入っている内容を出力(ACFのテキストエリアに出力時などに使用) */
<?php echo wp_kses_post( $dami ); ?>

参考サイト:

https://www.wpbeginner.com/ja/beginners-guide/how-to-prevent-wordpress-sql-injection-attacks

2.5 マルウェア対策の実装

「マルウェア」とは、コンピューターやその利用者に被害をもたらすことを目的とした、悪意のあるソフトウェアの総称。 この中には、暗号化などによってファイルを利用不能な状態にし、元に戻すことと引き換えに金銭を要求する「ランサムウェア」なども含まれる。

  • 実装する保護機能:
    • プラグイン「Wordfence Security」を使用。
      メール通知が必須で毎週メールが届くので、保守しない場合は、お客様のメールを設定する。
    • プラグインの代替案として「BulletProof Security」も検討中。

2.6 サイト運用・保守時のセキュリティ対策

バックアップ管理

サーバー別バックアップ設定
1. Xserverの場合
  • 自動バックアップ機能(無料)
    • FTPファイルとMySQLのバックアップ
    • 毎日のバックアップ
    • 過去14日分を保持
https://www.xserver.ne.jp/functions/service_backup.php
2. さくらサーバーの場合
  • バックアップ&ステージング機能(Snapup)の設定
    • FTPファイルとMySQLのバックアップ
    • 過去8回分を保持
    • 90日後に自動削除
https://oh-zappa.com/backup-for-snapup/
3. ロリポップの場合
  • 無料復元オプション
    • ※要問い合わせ
    • ※詳細な日時と内容の特定が必要
  • 有料バックアップオプション
    • 月額330円
    • 過去7回分のダウンロード可能
https://lolipop.jp/service/specs/backup

プラグインによるバックアップ管理

UpdraftPlusの活用
  • 設定時の注意点:
    • FTP上に設定した期間に定期バックアップをとってくれる。
      だが、サーバーに何かあったときのために、サーバー以外のところにバックアップを取ることを推奨。
    • メールバックアップの制限事項:
      • 容量が大きい場合、データベースのみしかバックアップが取れない。
    • 外部ストレージ連携の注意点:
      • 1アカウント1サイトの制限
      • 複数アカウントの同時ログインで連携エラーの可能性
      • 可能な限りお客様アカウントでの連携を推奨
代替バックアップ方法
  • 更新頻度の低いサイト向け対応
    • 「All-in-One WP Migration」の利用
    • FTPからの手動バックアップ
      • データベースのエクスポート
      • テーマ、アップロードファイルの保存

定期アップデート管理

アップデート対象の確認
  • 主要アップデート項目:
    • WordPressコア
    • プラグイン
    • PHP
    • MySQL
  • 自動更新に関する注意:
    • 不具合リスクを考慮し、基本的に手動更新を推奨
    • WordPressコアは「メンテナンスリリースとセキュリティリリースのみ自動更新」に設定
テスト環境でのアップデート検証
1. Xserverの場合
  • 「WordPressサイトコピー」機能の利用
    • 簡単インストールされたWordPressのみ対象
    • ※ファイル構造を変更したサイトは非対応

▽Xserver:WordPressのテンプレ化やテストサイト構築が容易に!「WordPressサイトコピー」機能を追加
https://www.xserver.ne.jp/news_detail.php?view_id=10633

2. さくらサーバーの場合
  • 「バックアップ&ステージング機能(Snapup)」によるステージング環境の構築
    • 同時に1つのステージング環境のみ利用可
    • 本番環境への1クリックリリース機能あり
    • 90日後に自動削除
https://oh-zappa.com/backup-for-snapup/
3. ロリポップの場合
  • 有料プラン(月額528円)でSnapup機能利用可
  • 無料プランは手動でのテスト環境構築が必要
https://lolipop.jp/unimal

投稿 WordPressセキュリティ対策完全ガイド:構築と運用・保守別に紹介WEBもがき道場 に最初に表示されました。


Viewing all articles
Browse latest Browse all 21

Trending Articles