セキュリティ対策 この記事もchatGPT
🔒 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つが重要です。
- 鍵管理
- ポート制限
- HTTPS化
- ログ監視
これらを継続的に行うことで、安全で信頼性の高い運用が実現できます。
🔐 ポイント:
「守るべき範囲を限定し、常に最新状態を保つ」
—— シンプルですが、最も効果的なセキュリティ戦略です。