Mais conteúdo relacionado Semelhante a 20190124 waf (20) Mais de Serverworks Co.,Ltd. (20) 20190124 waf5. Webアプリケーションのリスク例
5
OWASP Top10
OWASP(Open Web Application Security Project)というコミュニティが、
最も重大なウェブアプリケーションリスクトップ10を解説したもの。
https://www.owasp.org/index.php/Japan
WAFでこれらの
リスクを守れるの???
7. 2018 Gartner Magic Quadrant for Web Application
Firewalls
どのWAFを使うか?
シグニチャー・ルール
企業秘密でブラックボックスな部分が多いので実
績や評判で判断するのもあり。
7
https://www.imperva.com/blog/imperva-recognized-as-a-2018-gartner-magic-quadrant-waf-leader-five-years-
running/
13. WAFで全ての脆弱性をカバーできるだろうか?
13
OWASP Top10 2017 WAFが守ってくれる範囲
リスクの名前とWAF設
定が一致しない。
Protect Your Applications Against All OWASP Top 10 Risks
https://www.imperva.com/docs/IM_eBook_Ten_OWASP_Threats.p
df
ある程度カバーしてい
ることはわかる。
14. あえてデフォルトで守らない部分もある
Cross site request forgery (CSRF)
Incapsulaはデフォルトで守らない
Using IncapRules, you can create a policy that filters requests to sensitive pages
and functions based on your HTTP referrer header content. Doing so allows
requests to be executed from a short list of secure domains.
OWASP Top10 2017
A8-クロスサイトリクエストフォージェリ (CSRF) は、多くのフレームワークがこの対策
を講じており (CSRF対策)、アプリケーションの5%程度 でのみ観察されています。
14
https://www.incapsula.com/web-application-security/csrf-cross-site-request-forgery.html
https://www.owasp.org/images/2/23/OWASP_Top_10-2017%28ja%29.pdf
Webアプリに固有の対策をする必要があり、
万能のルールを作成できない
15. WAFの誤検知
False Positive(偽陽性)
正しい通信なのに、 WAFが不正アクセスと判断し、ブロックしてしまうこと
問題になるのはこちら。
エンドユーザーから「使えない!」と苦情がくる。
False Negative(偽陰性)
不正アクセスなのに、WAFが正しい通信とみなし、許可してしまうこと
あまり問題にならない。
そもそも、気づかない。
WAFの精度には100%では無いという前提がある。
厳しくしすぎると、False Positive発生率が上がるというジレンマ
15
19. AWS WAFの作成手順
19
・
・
・
④リソースに適用①Conditionを作成 ②Ruleを作成 ③WebACLを作成
Condition1
URIの長さは 512 以上
Query stringは 1024以
上
cookieヘッダは4093以
上
ConditionX
Rule1
Condition1の何かに
Match
Condition2の全てに
Match
An
d
RuleX
・
・
・
WebACL1
Rule1にMatch => Block
Rule2にMatch => Block
Rule3にMatch => Count
Rule4にMatch => Allow
何にもMatchしない => Allow
・
・
・
WebACL (ウェブアクセスコントロールリスト)を作成する
21. OWASP Top 10 CloudFormationテンプレート
21
https://aws.amazon.com/jp/about-aws/whats-new/2017/07/use-aws-waf-to-mitigate-owasps-top-10-web-application-
vulnerabilities/
AWSが提供しているCloudFormationテンプレート
OWASP Top 10(2013年版)を考慮したWebACLが作成
ただし、チューニングも必要
22. OWASP Top 10テンプレートで作成されるルール
項目 Type Actionの例 説明
restrict-sizes
Regula
r
Block
Requests
Cookie、Body、Query string、URIの文字数を制限
detect-blacklisted-ips
Regul
ar
Block
Requests
アクセス元IPアドレスのブラックリストで制限
detect-bad-auth-
tokens
Regul
ar
Block
Requests
Cookieヘッダに不正な文字列があるか
mitigate-sqli
Regul
ar
Block
Requests
SQLインジェクション攻撃があるか
mitigate-xss
Regul
ar
Block
Requests
クロスサイトスクリプティング攻撃があるか
detect-rfi-lfi-traversal
Regul
ar
Block
Requests
リモートファイルインクルージョン、ローカルファイルインクルー
ジョン、"://""../"
detect-php-insecure
Regul
ar
Block
Requests
Query stringにPHPで使われる特定の悪意のある文字列が入っているか
22
デフォルトのままだと、誤検知が発生したり、または意味が無いパラメータがある。
25. セキュリティオートメーション CloudFormationテンプレートで作成されるルール
項目 Type Actionの例 説明
Whitelist Rule Regular Allow requests ホワイトリストに許可する IP アドレスを手動で追加
Blacklist Rule Regular Block Requests ブラックリストにブロックする IP アドレスを手動で追加
Http Flood Rule
Rate-
based
Block
Requests
一つのIPアドレスからの5分間のウェブアクセスを指定した数に制限
Scans Probes Rule
Regular Block
Requests
AWS Lambda のカスタム関数により、アクセスログを自動的に解析して、疑わしい
動作を特定し、該当する送信元 IP アドレスを AWS WAF ブロックリストに追加
WAF IP Reputation Lists Rule
#1
WAF IP Reputation Lists Rule
#2
Regular Block
Requests
カスタムの AWS Lambda 関数により、サードパーティの IP 評価リストが 1 時間ごと
に自動的にチェックされ、悪意のある IP アドレスが ブロックリストに追加(1000 /
List)
Bad Bot Rule
Regular Block Requests コンテンツスクレーパーや悪意のあるボットをおびき寄せるハニースポットを作成。
個別の API Gateway エンドポイント (ウェブアプリケーションに埋め込まれている)
がカスタムの AWS Lambda 関数をトリガーすると、疑わしいリクエストをインター
セプトして検査し、その送信元 IP アドレスをブロックリストに追加
SQL Injection Rule Regular Block Requests URI、クエリ文字列、リクエストボディ内の一般的な SQL インジェクションから保護
XSS Rule Regular Block Requests URI、クエリ文字列、リクエストボディ内の一般的な クロスサイトスクリプト (XSS)
パターンから保護
25
28. AWS WAFのログ出力
Kinesis Data Firehose経由で、S3、ElasticSearch、RedshiftにJSON形式でロ
グ出力可能
ログフォーマット
28
{"timestamp":15448049xxxxxx,"formatVersion":1,"webaclId":"xxxxxxxx-XXXX-XXXX-XXXX-
XXXXXXXXXXXX","terminatingRuleId":"Default_Action","terminatingRuleType":"REGULAR","action":"ALLOW","httpSourceName":"CF","httpSourceId":"X
XXXXXXXXXXXXX","ruleGroupList":[],"rateBasedRuleList":[{"rateBasedRuleId":"XXXXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXX","limitKey":"IP","maxRateAllowed":2000}],"nonTerminatingMatchingRules":[],"httpRequest":{"clientIp":"xx.xx.xx.xx","country":"US","header
s":[{"name":"Host","value":"xxx.example.com"},{"name":"Accept","value":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
},{"name":"User-Agent","value":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76
Safari/537.36"},{"name":"Accept-Encoding","value":"gzip, deflate"},{"name":"Accept-Language","value":"en-
US"}],"uri":"/","args":"","httpVersion":"HTTP/1.1","httpMethod":"GET","requestId":"V--xxxxxxx_xxxxxxx-xxxxxxxxxx_xxxxxxxxxxx=="}}
詳細な仕様:https://docs.aws.amazon.com/ja_jp/waf/latest/developerguide/logging.html