今回はお問合せを頂くことの多い、AWSサービスを使ったWEBアプリケーションの脆弱性対策を10個紹介します。
目次
AWSサービスを使った脆弱性対策
DDoS攻撃対策
AWS Shieldを使用して、DDoS攻撃から保護することができます。AWS Shieldは、AWSが提供するDDoS攻撃対策のサービスで、複数のレイヤーで攻撃を検知し、防御することができます。
AWS Shieldは、以下の2つのサービスがあります。
1.AWS Shield Standard
AWS Shield Standardは、AWSアカウントに自動的に含まれる無料のDDoS攻撃防御サービスで、AWSのグローバルネットワークインフラストラクチャー上で自動的に適用されます。このサービスを使用することで、一般的なレイヤー4およびレイヤー7の攻撃から保護されます。
2.AWS Shield Advanced
AWS Shield Advancedは、AWS Shield Standardに加えて、高度なDDoS攻撃に対する防御機能を提供する有料のサービスです。AWS Shield Advancedを使用することで、専用のAWS DDoS Response Teamが24時間365日対応し、攻撃の検知、解析、防御を行います。
AWS Shield Advancedを使用する場合、以下のような機能が利用できます。
・リアルタイムでのトラフィック監視
・自動的な攻撃検出および通知
・自動的な攻撃の防御と転送ルールの適用
・AWS WAFと連携したカスタムルールの作成と適用
・AWS Shieldを使用することで、DDoS攻撃からWebアプリケーションを保護することができます。
セッションハイジャック対策
AWS WAFを使用して、Webアプリケーションに対する悪意のあるトラフィックをブロックすることができます。AWS WAF(Web Application Firewall)は、Webアプリケーションに対する悪意のあるトラフィックをブロックすることができるサービスです。セッションハイジャックとは、攻撃者がユーザーのセッションを奪う攻撃手法のことであり、AWS WAFを使用して対策することができます。
以下に、AWS WAFを使用したセッションハイジャック対策の例をいくつか示します。
・CookieのSecure属性の設定
AWS WAFを使用して、CookieにSecure属性を設定することができます。この設定を行うことで、攻撃者がセッションCookieを傍受しても、暗号化されているため、Cookieの内容を読み取ることができません。
・CookieのHttpOnly属性の設定
AWS WAFを使用して、CookieにHttpOnly属性を設定することができます。この設定を行うことで、攻撃者がJavaScriptを使用してCookieを読み取ることができなくなります。
・CSRFトークンの実装
AWS WAFを使用して、Cross-Site Request Forgery(CSRF)攻撃から保護するために、CSRFトークンを実装することができます。CSRFトークンは、ユーザーがログインしている場合にのみ有効であり、攻撃者がトークンを知らない限り、リクエストを送信することができません。
・ブラウザーのキャッシュの無効化
AWS WAFを使用して、ブラウザーのキャッシュを無効にすることができます。この設定を行うことで、攻撃者がユーザーのセッション情報をキャッシュから読み取ることができなくなります。
これらの対策を講じることで、AWS WAFを使用してセッションハイジャック攻撃からWebアプリケーションを保護することができます。
SQLインジェクション対策
AWS RDSを使用して、SQLインジェクション攻撃から保護することができます。AWS RDS(Relational Database Service)を使用したSQLインジェクション攻撃からの保護には、以下のような対策を講じることができます。
・パラメータ化されたクエリの使用
パラメータ化されたクエリを使用することで、SQL文に直接変数を埋め込むのではなく、パラメーターとして処理することができます。これにより、攻撃者がSQLインジェクションを行っても、SQL文を構成する変数に悪意のあるコードを埋め込むことができなくなります。
・ホワイトリストによる入力値の検証
入力値をホワイトリストによって検証することで、正しいフォーマットの入力値のみを受け付けることができます。ホワイトリストを使用することで、攻撃者が悪意のあるコードを含む入力値を送信しても、AWS RDSはその入力値を拒否することができます。
・ユーザー認証とアクセス制御
AWS RDSでは、ユーザー認証とアクセス制御を行うことができます。この機能を使用することで、データベースにアクセスするユーザーのアクセス権限を制御することができます。例えば、攻撃者がデータベースにアクセスしようとしても、適切な権限を持たないため、データベースにアクセスすることができません。
・パッチ管理
AWS RDSでは、セキュリティパッチの自動適用機能を使用することができます。この機能を使用することで、最新のセキュリティパッチを自動的に適用することができます。これにより、既知の脆弱性に対する保護を強化することができます。
これらの対策を講じることで、AWS RDSを使用してSQLインジェクション攻撃からWebアプリケーションを保護することができます。
クロスサイトスクリプティング対策
AWS CloudFrontを使用して、Webアプリケーションに対する悪意のあるスクリプトをブロックすることができます。AWS CloudFrontを使用したWebアプリケーションに対する悪意のあるスクリプトをブロックする方法は、以下のような対策を講じることができます。
・AWS WAFを使用したブロック
AWS WAFを使用することで、特定のIPアドレス、リクエスト元、リクエストの内容などを検知してブロックすることができます。特に、悪意のあるスクリプトを含むリクエストをブロックするために、AWS WAFは正規表現やパターンマッチングを使用して、リクエストの内容を分析し、悪意のあるスクリプトを含むリクエストをブロックすることができます。
・CloudFront Functionsを使用したブロック
CloudFront Functionsを使用することで、JavaScriptのコードを使用して、特定のリクエストをブロックすることができます。たとえば、特定のCookieを含むリクエストをブロックするJavaScriptコードをCloudFront Functionsに記述することができます。これにより、悪意のあるスクリプトを含むリクエストをブロックすることができます。
・Content Security Policyを使用したブロック
Content Security Policy(CSP)を使用することで、Webアプリケーションに読み込まれるJavaScriptやCSSなどのリソースについて、許可されたドメインやコンテンツタイプ、スクリプトの実行方法などを指定することができます。これにより、外部ドメインからのスクリプトや、inlineスクリプトなどをブロックすることができます。
これらの対策を講じることで、AWS CloudFrontを使用してWebアプリケーションに対する悪意のあるスクリプトをブロックすることができます。
クロスサイトリクエストフォージェリ対策
AWS Lambdaを使用して、リクエストを検証し、不正なリクエストをブロックすることができます。AWS Lambdaを使用したクロスサイトリクエストフォージェリ(CSRF)対策には、以下のような手順を踏むことができます。
・リクエストの検証
Lambda関数を使用して、リクエストの検証を行います。具体的には、リクエストに含まれるトークンが正当なものであるかどうかを確認し、正当なトークンが含まれていないリクエストを拒否します。
・トークンの生成と送信
Webアプリケーションにログインしたユーザーに対して、ランダムなトークンを生成し、そのトークンを含めたリクエストを送信します。Lambda関数は、トークンが正当であることを確認してから、リクエストを処理するように設定します。
・トークンの保持
Webアプリケーションは、ユーザーセッション中にランダムなトークンを生成し、セッション情報に保持します。Lambda関数は、リクエストに含まれるトークンがセッション情報に含まれるトークンと一致しているかどうかを確認してから、リクエストを処理するように設定します。
これらの手順を実装することで、AWS Lambdaを使用してWebアプリケーションに対するCSRF攻撃からの保護を実現することができます。
パラメータ操作対策
AWS IAMを使用して、アクセス許可を適切に設定することができます。AWS IAMのパラメータ操作対策には、以下のような手順を踏むことができます。
・最小特権の原則
IAMユーザーに与える権限は最小限に抑えるように設定します。必要な権限だけを付与し、不要な権限は削除します。
・パスワードポリシーの設定
IAMユーザーのパスワードポリシーを設定し、パスワードの長さや複雑さの要件を定めます。パスワードの有効期限を設定することも重要です。
・MFAの有効化
IAMユーザーに対して、Multi-Factor Authentication (MFA) を有効にすることで、パスワードだけでなく、さらに安全性を向上させることができます。
・IAMポリシーのレビュー
定期的にIAMポリシーをレビューし、不要な権限が付与されていないかどうかを確認します。また、不正なポリシーが設定されていないかどうかも確認します。
・AWS CloudTrailの有効化
AWS CloudTrailを有効にすることで、IAMユーザーによるAWSリソースの変更履歴を記録し、異常な操作が行われた場合にすばやく検出できるようになります。
これらの手順を実装することで、AWS IAMのパラメータ操作対策を実現することができます。
データ暗号化対策
AWS KMSを使用して、データを暗号化することができます。AWS KMS(Key Management Service)を使用したデータ暗号化対策には、以下のような手順を踏むことができます。
・データ暗号化キーの作成
KMSを使用してデータ暗号化キーを作成します。このキーは、データの暗号化および復号に使用されます。
・データの暗号化
データを暗号化する前に、まずKMSで作成したデータ暗号化キーを使用して、データキーを作成します。このデータキーを使用して、実際にデータを暗号化します。
・データキーの保護
データキーは、AWS KMSによって生成されたマスターキーによって暗号化されます。データキーは、暗号化された状態でS3やDynamoDB、RDSなどのAWSリソースに保存されます。データキーの復号化は、KMSを使用して行われます。
・キーのローテーション
定期的にデータ暗号化キーをローテーションすることで、より高いセキュリティレベルを確保できます。
これらの手順を実装することで、AWS KMSを使用したデータ暗号化対策を実現することができます。
ログ管理対策
AWS CloudWatchを使用して、ログを収集し、不審なアクティビティを監視することができます。
アプリケーション監視対策
AWS CloudTrailを使用して、アプリケーションのアクティビティを監視し、不審なアクティビティを検出することができます。
バックアップ対策
AWS S3を使用して、Webアプリケーションのデータをバックアップすることができます。
まとめ
今回ご紹介した対策を講じることで、Webアプリケーションのセキュリティを強化することができます。ただし、セキュリティは一度設定しただけで安心できるものではなく、定期的な監視やアップデートが必要です。クラウド部でもココナラにて、セキュリティ強化のご相談を承っております。お気軽にご相談ください。
認定者がAWSインフラ運用監視のご相談に乗ります 現役のAWSエンジニアが丁寧に対応いたします