セキュリティ対策 この記事もchatGPT

IT

🔒 AWS EC2+Docker+WordPressのセキュリティ対策まとめ

はじめに

AWS EC2上で運用している k-stone.click のWordPress環境では、DockerとNginxを使った構成に加え、複数のセキュリティ対策を実施しました。
この記事では、実際に行った安全対策を整理して紹介します。


1. SSHアクセスの保護

🔑 秘密鍵(.pem)の権限設定

EC2接続に使用する秘密鍵は、他のユーザーに読み取られないよう厳格に権限を設定します。

chmod 400 mykey.pem
ssh -i mykey.pem ubuntu@<EC2のパブリックIP>

これにより、SSHクライアント以外から鍵を使用できないようになります。

🚫 rootログインとパスワード認証の無効化

SSH設定ファイル /etc/ssh/sshd_config を編集して、以下のように設定しました。

PermitRootLogin no
PasswordAuthentication no

これでrootアカウント経由の侵入を防止します。


2. AWSセキュリティグループの設定

AWS EC2のセキュリティグループでは、必要最小限のポートだけを開放しています。

ポート 用途 許可元
22 SSH 自分の固定IPのみ
80 HTTP 全世界(0.0.0.0/0)
443 HTTPS 全世界(0.0.0.0/0)

SSHポート(22)は特定のIPのみ許可し、他のポートは閉じています。


3. SSL/TLS(HTTPS)対応

WordPressへのアクセスを暗号化するため、Nginx経由でHTTPSを導入しました。
初期段階では自己署名証明書を利用し、後にLet’s Encryptによる自動更新を設定します。

🔧 Certbotによる証明書取得

以下のコマンドで無料のSSL証明書を発行します。

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d k-stone.click

🧱 HSTSの設定

Nginxで常時HTTPSを強制するため、次のヘッダを追加しました。

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

この設定により、ブラウザはHTTPではなくHTTPSのみを利用します。


4. Nginxセキュリティヘッダの追加

不正なスクリプト実行やクリックジャッキングを防止するため、Nginx設定に以下のヘッダを追加しました。

add_header X-Content-Type-Options "nosniff";
add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";

Access-Control-Allow-Origin(CORS)は未設定ですが、将来的に特定ドメインのみ許可する予定です。


5. WordPress側のセキュリティ対策

🔒 管理画面URLの変更

WordPressの標準ログインURL(/wp-admin)を変更し、総当たり攻撃を防止しました。
プラグイン WPS Hide Login を使用して独自URLに設定しています。

💬 コメント機能の停止

スパム投稿を防ぐため、サイト全体でコメントを無効化。
WordPress管理画面 → 設定 → ディスカッション → 「コメントを許可する」のチェックを外しました。

💾 定期バックアップ

WordPress(wp_data)とMySQL(db_data)をDockerボリュームでホスト保存し、
週1回バックアップスクリプトでS3へ自動転送しています。

🔄 自動更新の有効化

WordPress本体・プラグイン・テーマの自動更新をONにし、脆弱性修正を即時反映しています。


6. 今後の強化予定

  • ✅ Let’s Encrypt証明書の自動更新スクリプト導入
  • ✅ Azure AD B2CによるOIDCログイン統合
  • ✅ fail2banでSSH・Nginxの不正アクセスをブロック
  • ✅ CloudWatchによるログ監視とアラート通知
  • ✅ AWS WAFまたはCloudflare導入の検討

まとめ

EC2・Docker・WordPressの3層構成でも、基本的なセキュリティ対策を徹底すれば、多くの攻撃を防ぐことが可能です。
特に次の4つが重要です。

  1. 鍵管理
  2. ポート制限
  3. HTTPS化
  4. ログ監視

これらを継続的に行うことで、安全で信頼性の高い運用が実現できます。

🔐 ポイント:
「守るべき範囲を限定し、常に最新状態を保つ」
—— シンプルですが、最も効果的なセキュリティ戦略です。