🛡 AWSセキュリティとバックアップ
― セキュリティグループ再確認/スナップショット/AMI作成 ―
🎯 学習目的
- セキュリティグループの仕組みを理解し、安全な通信ルールを設定できる
- スナップショット/AMI(Amazon Machine Image) を手動作成し、
サーバーの状態を丸ごとバックアップ・復元できるようにする
🗺 全体像
┌─────────────┐
│ EC2(稼働中) │
│ ├ OS+WordPress
│ ├ Apache/PHP/MySQL
└─────────────┘
│
│ ① 通信制御(Security Group)
▼
┌─────────────┐
│ Backup層 │
│ ├ スナップショット(EBS)
│ ├ AMI(完全イメージ)
└─────────────┘
第1部 セキュリティグループの再確認
🔒 1. セキュリティグループとは?
| 概要 | AWS の「仮想ファイアウォール」機能。インスタンス単位で「通信の許可ルール」を定義。 |
|---|
| 単位 | 各 EC2 インスタンスが 1つ以上の SG(Security Group)に所属 |
| 方向 | 「インバウンド(受信)」と「アウトバウンド(送信)」を別々に制御 |
| 原則 | 明示的に「許可」した通信だけが通る(暗黙拒否) |
🧭 インバウンド・アウトバウンドの考え方
| 通信方向 | 例 | 許可対象 | 備考 |
|---|
| インバウンド | SSH(22), HTTP(80), HTTPS(443) | 外部→EC2 | 外部ユーザーがアクセスするポート |
| アウトバウンド | apt/yum更新, 外部API通信 | EC2→外部 | 通常は全許可(デフォルト)でOK |
🧪 実習①:セキュリティグループを確認する
手順(AWSコンソール)
- AWS マネジメントコンソール > EC2 > 左メニュー「セキュリティグループ」
- 該当インスタンスに紐づく SG(例:
launch-wizard-1)をクリック
- インバウンドルール を確認
| ルール名 | プロトコル | ポート範囲 | ソース | 意味 |
|---|
| SSH | TCP | 22 | 自分のグローバルIP(例:203.x.x.x/32) | 管理者のみ接続可 |
| HTTP | TCP | 80 | 0.0.0.0/0 | Web公開用 |
| HTTPS | TCP | 443 | 0.0.0.0/0 | SSL通信用 |
🧩 ポイント
- SSH (22) は「自分の固定IP のみ」許可が理想
- Webサーバーとして一般公開するのは 80 / 443 のみ
- RDSなど別サーバーがある場合、通信元を限定(例:
sg-xxxxxx → SG同士の参照)
🧪 実習②:SSH制限を強化する
- SSHのルールを選択 → 編集 → ソース = マイIP に変更
- 保存後、現在接続中のターミナルは閉じないこと(再接続できるか確認してから閉じる)
⚠️ 注意
- ルールを誤って削除すると接続不可になる可能性 → 既存セッションを閉じない
- IP が変動する環境では、VPN か固定IPサービス利用を検討
第2部 スナップショットによるバックアップ
💡 スナップショットとは
EBS(Elastic Block Store)ボリュームの状態を丸ごと保存するバックアップ。
| 特徴 | 内容 |
|---|
| 保存範囲 | OS・設定・データ(EBS内) |
| 保存先 | S3内部に保存(ユーザーからは見えない) |
| 増分保存 | 前回との差分のみ(2回目以降は高速) |
| 用途 | 一時バックアップ、AMI作成のベース、災害復旧 |
🧪 実習③:スナップショットを作成する
手順(AWSコンソール)
- EC2ダッシュボード → 「ボリューム」 を開く
- 対象ボリューム(例:
/dev/xvda)を選択
- 「アクション」 → 「スナップショットを作成」
- 名前例:
wp-server-backup-2025-11-12
- 説明:
WordPress LAMP 環境 Day2 実習後
- 「スナップショットを作成」 → 数分後に「完了」
CLIでも可能:
aws ec2 create-snapshot --volume-id vol-xxxxxxxx --description "WordPress Backup Nov 2025"
🔍 確認
- 「スナップショット」一覧 に作成したID(例:
snap-0a123456789)が表示
- 状態が
completed になればOK
💡 スナップショットから復元する場合(参考)
- スナップショットを選択 → 「アクション > ボリュームを作成」
- 新しいEBSボリュームが生成される
- 「アクション > インスタンスにアタッチ」 で別インスタンスへ接続可能
第3部 AMI(Amazon Machine Image)の作成
🧩 AMIとは
EC2インスタンスの OS・設定・EBS構成をまとめた“完全イメージ”。
新規インスタンスのテンプレートとして使える。
| 比較 | 内容 |
|---|
| スナップショット | ボリューム単位(EBSバックアップ) |
| AMI | EC2全体(EBS + 設定 + ネットワーク構成) |
🧪 実習④:AMIの作成
方法①:AWSコンソール
- EC2 > インスタンス
- バックアップ対象のインスタンスを選択
- 「アクション」 > 「イメージとテンプレート」 > 「イメージを作成」
- 設定例:
| 項目 | 設定例 |
|---|
| イメージ名 | ami-wp-lamp-2025-11-12 |
| 説明 | WordPress LAMP Training after SSL setup |
| 再起動 | ✅ チェック(整合性確保のため推奨) |
- 作成をクリック
→ 「AMI」一覧に登録される
方法②:CLI(参考)
aws ec2 create-image --instance-id i-0abcdef1234567890 --name "AMI-WordPress-LAMP-20251112" --description "Backup after SSL configuration"
🔍 確認
- 数分後、AMIのステータスが available になれば完了
- 自動で関連スナップショットも作成される
🧪 実習⑤:AMIから新インスタンスを起動(検証)
- EC2 > AMI → 対象AMIを選択
- 「アクション」>「インスタンスを起動」
- 手順は通常のEC2起動と同様
- インスタンスタイプ:t2.micro
- セキュリティグループ:既存のWebサーバーSG
- キーペア:同一または新規
- 起動後、Elastic IPを付与してWordPressの動作確認
⚠️ 注意点
| 項目 | 内容 |
|---|
| サイズ | AMIはスナップショットを内部で利用。S3課金あり |
| 更新 | サーバー更新後は再作成が必要 |
| リージョン | AMIは同一リージョン内でのみ利用可(コピーで他リージョン展開可) |
| パスワード等 | 平文設定は避ける(wp-config.php内のパスワード管理に注意) |
第4部 運用ベストプラクティス
🛡 セキュリティ管理の基本
| 項目 | 内容 |
|---|
| SSH接続制限 | 固定IP / VPN のみ許可(0.0.0.0/0は禁止) |
| rootログイン禁止 | Amazon Linuxではec2-user + sudoを使用 |
| 鍵管理 | .pem ファイルは安全な場所へ(再配布禁止) |
| MFA有効化 | AWSアカウントに二要素認証を設定 |
| IAM運用 | ルートユーザーは課金・管理のみ使用、操作はIAMユーザーで実施 |
💾 バックアップ運用例
| 項目 | 推奨周期 | 方法 |
|---|
| WordPressファイル(wp-content) | 毎日~週次 | S3 へバックアップ(プラグイン/cron) |
| DB(MariaDB) | 毎日 | mysqldump + S3 or UpdraftPlus |
| EBSスナップショット | 週次 | コンソール or AWS CLI 自動化 |
| AMI | 月次/構成変更時 | 手動 or Lambdaスケジュール |
🧩 定期バックアップ自動化(発展)
例:スナップショット自動作成用CLI
aws ec2 create-snapshot --volume-id vol-xxxx --description "Auto snapshot $(date '+%Y-%m-%d')"
例:定期スケジュール(crontab)
0 3 * * 0 /usr/bin/aws ec2 create-snapshot --volume-id vol-xxxx --description "Weekly snapshot $(date '+\%Y-\%m-\%d')"
※ AWS Backup や EventBridge+Lambda でGUI自動化も可能。
✅ チェックリスト
| 確認項目 | 結果 |
|---|
| EC2 のセキュリティグループを再確認し、22/80/443 のみ許可 | ☐ |
| SSHは「自分のIP」のみに制限済み | ☐ |
| スナップショットを作成し、状態が completed | ☐ |
| AMIを作成し、AMI一覧で available 確認 | ☐ |
| AMIから新インスタンス起動テスト(任意) | ☐ |
| 定期バックアップ方針を決定(週次スナップショット/月次AMI) | ☐ |
📚 まとめ
| 学びのポイント | 内容 |
|---|
| セキュリティグループ | AWSの仮想ファイアウォール。ポート開放を最小限にする |
| スナップショット | ボリューム単位のバックアップ。差分で高速保存 |
| AMI | EC2全体のイメージ化。複製・復旧に利用可能 |
| 定期運用 | SG見直し+スナップショット自動化で安全な運用 |