2026年10月11日
2026年10月11日
WordPressのファイル整合性チェックを自動化する方法
はじめに
WordPressサイトを運用する際、ファイルの改ざんや不正な変更がないかを定期的に確認することは非常に重要です。この記事では、そのようなチェックを自動化する方法について説明します。
症状・背景
- ブログが突然機能しなくなった
- 不審なユーザーが登録された
- 違法なスクリプトが追加されたと疑われるファイルがあった
- セキュリティソフトウェアから警告が出た
手順・設定方法
ステップ1: WordPressサイトのバックアップを作成
# バックアップディレクトリを作成します。
mkdir /var/www/wordpress-backups
# 今日の日付に基づいたバックアップ名を指定して、WordPressファイルとデータベースをバックアップします。
cp -r /var/www/html/wp-content /var/www/wordpress-backups/$(date +%Y%m%d)_wp_content
mysqldump --user=your_db_user --password=your_db_password your_database_name > /var/www/wordpress-backups/$(date +%Y%m%d)_wp_database.sql
ステップ2: ファイル整合性チェックスクリプトを作成
# 一度バックアップしたファイルのハッシュ値を計算し、その結果をファイルに保存します。
find /var/www/html/wp-content -type f -exec md5sum {} \; | sort > /var/lib/wordpress-integrity-check/checkfile.md5
# 上記で作成したファイルと比較するためのスクリプトを作成します。スクリプトは、ファイルが変更された場合は警告を出力します。
echo '#!/bin/bash' > /usr/local/bin/integrity_check.sh
echo 'diff -u /var/lib/wordpress-integrity-check/checkfile.md5 <(find /var/www/html/wp-content -type f -exec md5sum {} \; | sort)' >> /usr/local/bin/integrity_check.sh
chmod +x /usr/local/bin/integrity_check.sh
ステップ3: クリーンアップスクリプトとcronジョブの設定
# バックアップを一か月間保持し、それ以前は削除するためのクリーンアップスクリプトを作成します。
echo '#!/bin/bash' > /usr/local/bin/cleanup.sh
echo 'find /var/www/wordpress-backups -type d -mtime +30 -exec rm -rf {} \;' >> /usr/local/bin/cleanup.sh
chmod +x /usr/local/bin/cleanup.sh
# ファイル整合性チェックとクリーンアップスクリプトを定期実行するcronジョブを作成します。
echo '*/15 * * * * root /usr/local/bin/integrity_check.sh' >> /etc/cron.d/check-integrity
echo '0 23 * * * root /usr/local/bin/cleanup.sh' >> /etc/cron.d/cleanup-backups
ステップ4: ファイル整合性チェック結果の監視
# 定期的にファイル整合性チェックを実行し、その出力をログファイルに保存します。
echo '*/15 * * * * root /usr/local/bin/integrity_check.sh > /var/log/wordpress-integrity.log 2>&1' >> /etc/cron.d/check-integrity
注意事項
- サイトをバックアップする前に必ずテストを実施すること。
- ファイル整合性チェックスクリプトの結果が異常である場合、原因を特定し、問題を解決することが重要です。
- 重要なデータは定期的に外部にもバックアップしておくことが推奨されます。
- バックアップファイルやログファイル自体が改ざんされる可能性もあるため、それらに対するセキュリティ対策も検討すること。
まとめ
1. バックアップの重要性: WordPressサイトは常に最新の状態を保持し、緊急時に対応できるように定期的なバックアップが必要です。
2. ファイル整合性チェックスクリプト: ファイルが不正に変更された場合や攻撃を受けたときに役立ちます。
3. cronジョブの設定: 定期的にバックアップを取ったり、ファイル整合性をチェックしたりするために使用します。
4. 監視とログ: 異常な出力をすぐに把握し対応することが重要です。
5. セキュリティ上の注意点: バックアップやログへのアクセス権限は適切に管理し、外部からのアクセスを制限すること。
関連記事: