MENU
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
AWSの導入・クラウド運用を総合支援【CapsuleCloud】
  • サービス
  • AWS導入支援
  • AWS運用代行
  • WordPress
    • WordPress高速化
    • WordPress脆弱性対策
  • 導入事例
  • 良くあるご質問
  • AWS技術知見
  • お問い合わせ
  1. ホーム
  2. AWS技術知見
  3. AWS WAFでSQLインジェクションと特定URLをブロック

AWS WAFでSQLインジェクションと特定URLをブロック

2022 9/16
AWS技術知見
2022年9月16日
目次

はじめに

AWS WAFがCloudFrontだけでなくELBでも使えるようになり、より使いやすくなりました。
そこで、SQLインジェクションや非公開ファイルへのアクセスをブロックし、WAFのメリットを確認していきましょう。

AWS WAFとは

AWS WAF(Web Application Firewall)は、脆弱性を利用した様々な攻撃からアプリケーションを保護するファイヤーウォールです。
多くのAWSサービスと同様に、料金は従量課金となっています(設定するルール数、アプリケーションへのリクエスト数によって変動)。

脆弱性を持ったアプリケーション

まずはテストのために、SQLインジェクションが可能なRailsアプリケーションを作成します。
普通にRuby on Railsでアプリケーションを作ると基本的なリスクヘッジがされていますが、ここではあえて脆弱性を含むコードを書いてみます。

Userモデルに名前とメールアドレスのカラムが存在するという状態で、入力したメールアドレスと一致するユーザを検索をするために、プレイスホルダを使わずに文字列をそのままSQLとして渡すself.search_unsafeというメソッドを作成します。

[ruby]
class User < ApplicationRecord

# 危険
def self.search_unsafe(email)
User.where("email = '#{email}'")
end

# 安全
def self.search_safe(email)
User.where("email = ?", "#{email}")
end

end
[/ruby]

このメソッドに、

[sql]
' or 1=1 --'
[/sql]

という文字列を入力すると、発行されるSQLは

[sql]
SELECT `users`.* FROM `users` WHERE (email = '' or 1=1 --'')
[/sql]

となり、意図せず全てのユーザリストが取得できることになります。

AWS WAF

このRailsアプリケーションをEC2にデプロイし、ELB配下に設置します。
AWSマネジメントコンソールからWAFを選択。
Web ACLの作成を行います。

Web ACLの名前、CloudWatchのmetric名、対象となるELBを指定します。

Webアクセスコントロールリストを作成します。
今回はSQLインジェクションとURLに特定の文字列を含む場合をブロックするので、まずSQL Injection match conditionsを選択します。

名前を入力し、今回はフィルターにPart of request to filter onを「Body」、Transformationに「URL decode」を選択します。

同様にString match conditionを作成します。
名前、Part of request to filter onは「URL」、Match Typeを「Contains」、Value to matchに「secret」を設定します。
これで、secret.htmlなどを含むURLが要求された時にはブロックされるはずです。

次にルールを作成するため、「Create rule」を押します。

名前とCloudWatchのmetric名を入力し条件を設定します。

今回作成したルールは以下の通りです。

  • SQLインジェクションをブロック
  • 特定文字列に一致したものはブロック
  • それ以外は許可する

この内容で作成を実行します。

たったこれだけで、ELBにWAFが適用されます。
/secret.htmlにアクセスしてみると、確かにELBがブロックしています。

SQLインジェクションも検索実行した後に危険な文字列が含まれているためブロックされます。

マネジメントコンソールで確認してみると、WAFがブロックした履歴が確認できます。

まとめ

CloudFrontを使用していないケースでもELBでWAFが使えるということは、従来からあるアプリケーションにも適用可能となるので導入のハードルが下がりました。
アプリケーション特性に合ったルールが設定できるので、AWSでアプリケーションを運用する際にはWAFを検討してみてください。

正社員希望の方はこちら
業務委託希望の方はこちら
AWS技術知見

関連記事

  • aws-route53
    AWS機能を網羅してみよう3.3 Route53編「実践」DNSフェイルオーバー
  • AWSのクラウドセキュリティ「責任共有モデル」とは?
  • ansible
    AWSのためのAnsible入門
  • aws-s3
    Amazon S3でGlacierを活用したコスト削減法
  • aws-route53
    AWS機能を網羅してみよう3.2 Route53編「実践」
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
  • aws-route53
    AWS機能を網羅してみよう3.1 Route53編「概要」
  • aws-vpc
    AWSネットワーク設計 VPC概論
検索
clouddx003-low.pdf - 1.8MB
資料ダウンロードはこちら
人気記事
  • terraform
    Terraformと変数(variable)のお話
    Terraform
  • aws-s3
    Amazon S3で署名付きURLを使ったアクセス制御
    AWS技術知見
  • AWS導入支援
    amazonクラウド、AWSとは?何ができるかデメリット含めわかりやすく説明
    AWS導入支援
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
  • ansible
    AWSのためのAnsible入門
    AWS技術知見
  • WordPress脆弱性の原因とやっておくべき7つの対策
    WordPress
  • 【実例20選】AWS導入企業、活用事例をご紹介
    AWS導入支援
新着記事
  • AWS運用代行企業5選!企業選びのポイントを解説
    AWS運用代行
  • AWS運用代行のサービス内容やメリットについて
    AWS運用代行
  • 10分でスタート!AWSの利用開始までを解説
    AWS導入支援
  • WordPress脆弱性の原因とやっておくべき7つの対策
    WordPress
  • WordPress高速化!6つの簡単な方法で重さを改善
    WordPress
カテゴリー
  • AWS導入支援
  • AWS技術知見
    • Rancher
    • Terraform
  • AWS運用代行
  • WordPress
タグ一覧
AI (3) aws (25) aws-cli (3) CloudFormation (1) CloudSearch (3) DeepLearning (1) DNS (2) Docker (4) EBS最適化オプション (1) ec2 (7) ElasticBeanstalk (1) Geo Routing (1) Gitlab (1) HA (1) infrastructure-as-code (1) keypair (1) load-balancer (1) nginx (2) OpenAM (3) Rancher (8) Rekognition (2) Route53 (3) s3 (2) secrets (1) security-group (1) Terraform (6) terragrunt (2) tfvars (1) variable (1) vault (1) VPC (1) wordpress (3) アプリケーション (1) オンプレミス (2) クラウド (2) サインアップ (1) シングルサインオン (3) セキュリティ (1) セキュリティグループ (1) ネットワーク設計 (1) 人工知能 (2) 初心者 (1) 本番運用 (1) 画像認識 (3) 起動 (1)
アーカイブ
  • 2022年9月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2017年7月
  • 2017年6月
AWSエンジニア積極採用!
採用情報
フリーランスの求人情報!
テックブレイン

スーパーソフトウエアはAWSパートナーネットワーク(APN)のコンサルティングパートナーです。

スーパーソフトウエアはRancherパートナーネットワークのコンサルティングパートナーです。

logo

カプセルクラウドはAWSクラウドのマネージドサービスです。AWSを安心かつ迅速に導入し、負荷分散・セキュリティ・DevOps・コスト削減など、クラウドサービスのメリットを活かした豊富なベストプラクティスをご提供いたします。

Contents

  • サービス
  • 導入支援
  • WordPress
  • 導入事例
  • ブログ
  • Q&A
  • お問い合せ
  • 資料ダウンロード

お問い合わせ

株式会社スーパーソフトウエア
東京 03-6721-7105
大阪 06-4707-6001
info-capsulecloud@tokyo.supersoftware.co.jp

  • プライバシーポリシー
  • 免責事項
  • 契約約款
  • 特商法に基づく表記
  • 会社情報
  • サイトマップ

© Supersoftware 2017. All rights reserved.

目次