2019.02.08
OWASP Nagoya
Masatoshi Nishimura
OWASP Top 10 2017
AWS WAF テンプレート について
〜 WordPressの場合 〜
OWASP Nagoya Chapter Meeting #9
自己紹介
西村 将利(にしむら まさとし)
・株式会社こころみらい 代表取締役  https://cocoro-mirai.co.jp
 旧 ニシインターナショナル 代表  https://4649-24.com
・OWASP Nagoya https://www.owasp.org/index.php/Nagoya
・FB https://www.facebook.com/nishimura.masatoshi.3
・twitter https://twitter.com/BankKeikei55
・Instagram https://www.instagram.com/masatoshi55
アジェンダ
1.AWS WAFとは?
2.OWASP Top 10 2017
  テンプレートとは?
3.使ったAWSサービスと構築中のつまずき
4.OWASP Top 10 2017 テンプレートのメリット/気をつけるべき所
5.AWS WAF のメリット/気をつけるべき所
1.AWS WAFとは? ①
● 正式名称
AWS WAF and AWS Shield
● コンソールでは、
「セキュリティ、 アイデンティ
ティ、 コンプライアンス」の
「WAF&Shield」
1.AWS WAFとは? ②
1
ルールセットのテンプレート(ymlファイルなど)を使ったり、
自ら条件とルールを登録してhttp/httpsリクエストのAllow/Block/Countを行うこ
ともできるWAFサービス
2
ルールセットはマネージドと非マネージド
Managed Rules セラー
(F5 Networks , FORTINET , TREND MICRO , etc..)
3
テンプレートをS3バケットに保存、AWS CloudFormationでS3のURLを読み込
み、スタックをつくる。AWS WAFのWeb ACLsでスタックのRulesをELBへ紐づ
けてWAFとして使う
1.AWS WAFとは? ③
4
AWS CloudFront(CDN)かELB(LoadBalancer)に紐づけて使用
API Gatewayでも使える
5 httpとhttpsのリクエストに対するシグネチャに基づいたセキュリティを提供。物理
層のL1等、カバーしていない層のセキュリティ対策は別で必要
6
CloudWatchで監視可能。フィルタ条件に一致するリクエストを監視、アラートな
ども可能。誤検知分析はAWS WAFのログをFirehorseでストリ―ミング、S3保
存、Athenaで分析など、いろいろな手法がある
2.OWASP Top 10 2017 AWS WAF テンプレート?
OWASP Top 10 2017
ルールセット
テンプレート
非マネージド
OWASP Top 10 20×× の場合、
自分でテンプレート交換、設定
有償マネージドルールと異なる
2.OWASP Top 10 2017 AWS WAF テンプレート?
1
github
https://github.com/aws-samples/aws-waf-sample/tree/master/waf-owasp-top-10
2
Use AWS WAF to Mitigate OWASP’s Top 10 Web Application Vulnerabilities
https://d0.awsstatic.com/whitepapers/Security/aws-waf-owasp.pdf
3
AWSがS3で提供するダウンロードリンク
https://aws.amazon.com/jp/about-aws/whats-new/2017/07/use-aws-waf-to-mitigate-owasps-to
p-10-web-application-vulnerabilities/
2.OWASP Top 10 2017 AWS WAF テンプレート?
OWASP Top10 2017 AWS WAF テンプレート
https://github.com/aws-samples/aws-waf-s
ample/tree/master/waf-owasp-top-10
● AWS CloudFormation用テンプレート
WebACL(アクセスコントロールリスト)
Rule(ルール)
Condition(条件)
● スタートキットであり、利用者自身でカスタマイ
ズを行っていく事を作者が推奨
2.OWASP Top 10 2017 AWS WAF テンプレート?
● owasp_10_base.ymlファイル本体
https://github.com/aws-samples/a
ws-waf-sample/blob/master/waf-o
wasp-top-10/owasp_10_base.yml
● 1200行くらいで1つのymlファイル
● AWS CloudFormation向け
2.OWASP Top 10 2017 AWS WAF テンプレート?
OWASP Top10 2017 AWS WAF テン
プレートダウンロードリンク
https://aws.amazon.com/jp/about
-aws/whats-new/2017/07/use-aw
s-waf-to-mitigate-owasps-top-10-
web-application-vulnerabilities/
3.使ったAWSサービス
IAM CloudWatch
VPC ACM(AWS Certificate Manager)
Route53 ALB(Application Load Balancer)
ElasticIP CloudFormation
KMS(Key Management Service) S3
EC2 AWS WAF(WAF&Shield)
AWS WAFを使う場合、ELB か ColudFront が必須
3.使ったAWSサービス
3.構築中のつまずき①
ALBにACMを設定、
WordPressダッシュボード
ログインできなくなった!
3.構築中のつまずき①対策
①.htaccessの非SSLからSSLへのリダイレクト実装
②データベース内の非SSLパスをSSL化置換
③wp-config.phpに以下を記載
$_SERVER['HTTPS'] = 'on';
$_ENV['HTTPS'] = 'on';
④https://やhttp://を固定的に出力してしまうphp関数から
 https:やhttp:をpreg_replaceやstr_replaceで除去
※全て、WEBサーバーがApacheの場合です
3.構築中のつまずき②
ALBにAWS WAFを設定、
WordPressダッシュボード
また、ログインできなくなった!
3.構築中のつまずき②対策
・EDIT web ACL
WAF RulesのActionをBlockからAllowに
1個ずつ変更して、ダッシュボードログイン
可否確認。原因ルールを探す
・Allowにしたものはアプリケーション側で
対応を検討
WAF&Shield
3.構築中のつまずき②対策
OWASP Top 10 2017 Template × AWS WAF × WordPress 5.0.3の場合
generic-enforce-csrf
(OWASP Top 10 2017 A8)
Allowに変えて
アプリケーション側で
x-csrf-tokenの実装対応
3.構築中のつまずき②対策
generic-detect-ssi
(OWASP Top 10 2017 A9)
Allowに変えて、
該当ファイルパーミッションを
400などに変更
OWASP Top 10 2017 Template × AWS WAF × WordPress 5.0.3の場合
3.参考
generic-detect-admin-access
(OWASP Top 10 2017 A4)
のConditionsを以下の様に変更、
allowにする
● 自社の固定IP
● wp-admin
● wp-login.php
※ログインURLを変更した場合、
上記を変更後のURLに変える
OWASP Top 10 2017 Template × AWS WAF × WordPress 5.0.3の場合
4.OWASP Top 10 テンプレートのメリット
● 無料
● 2019年2月の時点で、OWASP Top 10 2017 テンプレートなので、
次のOWASP Top10 20××の時に新バージョンが出てくる可能性
● OWASP Top 10 2017の対策は何をしていくといいのか、
具体的に記載されているので理解しやすい
4.OWASP Top 10 テンプレートの気をつけるべき所
● 非マネージドルールのテンプレート(OWASP Top 10 2017テンプレート)を使う場合、設定
最適化を利用者自身で行う必要がある、OWASP Top 10 2017から アプリケーション側ま
で幅広いスキルが必要
● OWASP Top 10 20×× がリリースされて、新テンプレートが出てきたらテンプレート交換は
自分の手で行う必要がある
5.AWS WAFのメリット
● 初期設定簡単。ALBとEC2の間でRoute53のAレコードではなく、
ALBエイリアスを使えるのでイージーミスを減らしやすい
● ルールや条件のカスタマイズ作業がやりやすい。EC2再起動不要
即反映で設定検証しやすい
● CloudWatchを合わせて使ったり、いろいろな方法で監視可能、アラートも可能
● 安い。リクエスト数とルール数による従量課金
リクエスト数を抑える技術力があるとかなり安く出来る
● ルールのテンプレートを同じAWSアカウント内で共有できる
5.AWS WAFの気をつけるべき所
● AWSのELBかCloudFront、CloudFormationやS3やRoute53あたりが必要
EC2とAWS WAFの2つだけでは使えない
● ルールセットテンプレートは有償マネージドルールか?非マネージドルールか?
非マネージドはルール更新が手動
● 誤検知などの監視やアラートの運用も必要
● ルール内容を理解出来ないと誤検知対応が難しい

20190208 OWASP TOP10 2017 AWS WAF について