- AWSのセキュリティ対策で簡単に導入できて効果が大きいものをまとめました。
- 完璧ではないけど、一通りのリスクに対応することを目指しています。
- 管理者用のweb(管理画面)の対策は、awsに関係がない対策も書いています。
awsアカウント, iamユーザーの権限、アクセス制限
awsアカウントの2段階認証を有効化する。
各awsアカウントには最小限の権限を付与する。
iamユーザーで利用されていないものは削除する。
sshによるec2サーバーへの接続
sshを使わず、AWS Systems Manager Session Manager 経由でec2にアクセスする。
- マネージメントコンソールからのアクセスに限定する場合、セキュリティグループからsshのアクセス許可を削除できる。
- ssh用の鍵ファイルを配布しなくていい。
- 参考記事: 【初心者】AWS Systems Manager Session Manager を使ってみる
sshでec2にアクセスする場合、セキュリティグループでipを制限する。
- 全てのipからsshでアクセスできるようにしない。
httpリクエスト経由での不正なアクセスを防ぐ。
DDoSの対応: AWS Shield
- 無料版のAWS Shield Standardはデフォルトで有効化されている。基本的な対策はAWSの利用者であれば適用されている。
- 有料版のAWS Shield Advancedだと高度な機能が利用できるが月額の利用料が3,000.00USD。予算的に厳しければ、問題があってから有効化する。
- 無料版と有料版の違いはAWS Shield の特徴を参照してください。
SQLインジェクション等の不正なリクエストを防ぐ。: aws wafの導入
「AWSManagedRulesCommonRuleSet」について
-
このルールで一般的な攻撃手法を網羅している。
-
「AWSManagedRulesCommonRuleSet」の注意点: 意図しないリクエストをブロックする可能性もある。
-
本番環境にルールを適用する前にカウントモードで意図しないリクエストのブロックがないか調査する。
管理者向けのWeb(管理画面)からの情報流出を防ぐ。
認証、アクセス制限
- パスワード認証の場合、ブルートフォース攻撃で突破されるリスクがある。
- パスワード認証に一定回数以上、連続して失敗した場合は、対象のアカウントはロックして、ログイン処理を実行しない。
- 特定のネットワーク、ipアドレスからしかアクセスできないようにする。
画像、テキストファイルの流出を防ぐ
CSV等のダウンロード機能がある場合、ファイルをサーバー内に保持しない。
- 対応案1: サーバー内にファイルを一時保存せず、streamでダウンロードさせる方法で実装する。
- 対応案2: ファイルを一時保存する場合はダウンロードが完了したタイミングで削除する。もしくは、定期的に削除する。
s3内に保持している画像、書類の表示には、cloud frontの署名付きURL経由で表示する。
-
有効期限を数分に設定して、有効期限を超えたら表示できないようにできる。
-
URLが流出しても有効期限を超えている場合はファイルを取得できない。
-
参考記事
身分証画像のように流出すると影響が大きいものは不要になったら削除する。
- 例えば、年齢の判定のために身分証画像を利用している場合、判定処理が終わったら削除する。
サーバーに不正なアクセスで接続されてしまった場合に機密情報を守る。
dbの接続情報などをconfigファイルに記載せず、aws secrets managerを利用してAPI経由で取得する。
awsの操作ログの記録
AWS CloudTrail
- awsの操作ログを記録する。
- 無料利用枠:直近、90日間のイベント履歴を保存。
- AWS CloudTrail