9月1日にSecurity-JAWSとNW(Network)-JAWSは合同で「NW X Security JAWS勉強会」を開催。各レイヤーのスペシャリストが最新のトピックを語るという趣向で、データセンターからネットワーク、アプリケーションサービスまで包括的なセッションが披露された。ここではAWS WAFのアップデートとセキュリティオートメーションについて語ったアマゾン ウェブ サービス ジャパン(AWSJ)の桐山隼人さんのセッションをお届けする。
HIPPAにも準拠、DDoS対策に有効なレートベースルールにも対応
「AWS WAFはかわいい子。子供と同じで、手のかかるくらいがかわいい(笑)。皆さんもぜひこの子を愛してあげてほしい」――そんな風にAWS WAFへの愛を語ったアマゾン ウェブ サービス ジャパン(AWSJ)の桐山隼人さん。「NW X Security JAWS勉強会」におけるレイヤ5~7の担当として、「子供と同じように、気付かぬうちにアップデートを重ね、成長している」というAWS WAFの機能を紹介した。
AWS WAFは、Webアプリケーションファイアウォール(WAF)として外部からのさまざまなアプリケーションレベルの攻撃を検知、保護するセキュリティ機能だ。AWSの他の機能と同様、APIを介してさまざまなサービスと連携でき、Cloud Formationのテンプレートを活用すれば容易にデプロイできる。また、「トラフィックを可視化し、場合によってはCloudWatchに飛ばしてアラートを発することができる。これはAWSの得意技」(桐山氏)。もちろん初期投資は不要で、従量課金性で使った分だけ支払えばよい。
桐山さんはその上で、AWS WAFが次々にアップデートを重ね、機能を拡張していることを紹介した。たとえば、医療業界のセキュリティ標準である「HIPPA(Health Insurance Portability and Accountability Act)」に準拠した他、「レートベースルール」もアップデート。ある一定の時間内に大量のトラフィックがあり、しきい値を超えたならばDoS/DDoS攻撃と判断し、CloudWatchからLambdaを呼び出して送信元IPアドレスをブラックリストに追加するといった措置をとれるようになった。また、業界団体であるOWASPが定期的に公開している「OWASP Top 10」にも対応。リストに挙げられている脆弱性を緩和する方法を記したホワイトペーパーと、その設定のためのCloud Formationテンプレートが公開されている。
AWS WAFで実現できる3つの「オートメーション」
桐山さんはこうしたアップデート事項を説明した上で、話題を「AWS WAFによるセキュリティオートメーション」に移した。「セキュリティオートメーション自体は1年前に出ていたものだが、つい1、2カ月前にバージョン2になった。今日はこの部分をぜひ持ち帰ってほしい」(桐山さん)
AWS WAFセキュリティオートメーションでは、「デプロイの自動化」「アナライズの自動化」「プロテクトの自動化」という3つの自動化が実現できるという。
デプロイの自動化は分かりやすい。Cloud Formationで用意されているテンプレートを用いると、事前定義されたWAFのルールセットが適用、展開されるというものだ。CloudFront向けとApplication Load Balancer(ALB)向け、2種類のテンプレートが用意されており、これを展開するとACLが設定されたWAFのハコが出来上がるイメージだ。
2つ目のアナライズの自動化は、「トラフィックのふるまいを元に、不正なアクセスを自動的に解析する」(桐山さん)というもの。CloudFrontなどで取得したアクセスログを解析して攻撃元と疑われる送信元を特定したり、Cloud Watch Eventsを用いてSpamuhausなどのサードパーティが提供するIPブラックリストを参照し、スパマーやボットなどのアクセスをブロックすることができた。
バージョン2ではさらに、攻撃者をおびき寄せる「ハニーポット」による解析が可能になった。「APIゲートウェイをおとりにして、本来ならばここに来るはずのないアクセスを把握する。これらのアクセスはおそらく、コンテンツスクレイパーやボット、脆弱性を探るスキャナなど何か変なものと考えられるので、このIPアドレスをブラックリストに載せましょう、という処理をLambdaで書ける」(桐山さん)
3つ目が保護の自動化、オートメートプロテクションだ。解析結果に基づいてWAFのルールを自動生成し、SQLインジェクションやクロスサイトスクリプティング、アプリケーション層のDDoS攻撃、HTTP Flood、スキャナ、プローブなどをブロックする。解析の部分で活用したIPブラックリストやレピュテーションリストを元に、既知の攻撃元を遮断することも可能だ。「このソリューションでは人がやるのではなく、機械に自動でやらせることができる」(桐山さん)ことがポイントだ。
これは、昨今課題とされるセキュリティエンジニア不足の解決策にもなる。「いままでのインシデントレスポンスでは、WAFを運用しているセキュリティエンジニアはユーザーからログをもらって解析し、脅威分析して付き合わせた結果、何か悪いものが見つかったら、AWS WAFのルールを手作業で設定し、変更していた。AWS WAFのセキュリティオートメーションを使うと、脅威分析からいきなりLambdaを呼び出し、自動で対応できる。つまり、セキュリティエンジニアが手でやっていたフローがなくなる」(桐山さん)
機械学習を組み合わせ、自動化をさらに追求
桐山さんは最後に、「ここまで来たらさらに自動化したい。『More Automation』して不必要な時間をもっと削減したい」という思いでPoCに取り組んでいるという、新しいアイデアも披露した。
しばしば、攻撃と防御はいたちごっこと言われる。防御側がアクセス制御を実施した結果、攻撃側はIPアドレスをひんぱんに変え、ブロックをかいくぐろうとしてきた。そこで守る側も定期的にIPアドレスのブラックリストを更新したり、レピュテーションを活用し、不正な通信元をいち早くブロックできるよう試みている。これに対し攻撃側が次の手として編み出しつつあるのが、自動生成アルゴリズムを用いてドメイン名を生成、登録し、防御をかいくぐろうとするやり方だ。
アルゴリズムで自動生成されたこの種のドメイン名は、人間の目で見れば、無意味な文字列となるため区別がつく。桐山氏はこれを「自動判定したいと考えた」という。
ここで利用したのが「機械学習」だ。通信元のドメイン名はWebリクエストのHTTPヘッダーのリファラーに記されている。まず教師データとして、Amazon Machine Learning(Amazon ML)に正しいドメイン名(Alexa Top 10000のWebサイトのドメインを用いた)と不正なドメイン名を食わせた上で、評価データとしてCloudFrontのログからドメイン名をパースして活用した。
こうして作られたシステムでは、S3バケットに溜まったアクセスログをLambdaで呼び出してAmazon MLに渡し、ドメインジェネレートアルゴリズム(DGA)で生成されたものか、それとも人間が作った正規のドメインかどうかを判別する。結果は再びS3バケットに返され、Lambda経由で読み出し「不正なドメインだから自動的にWAFのルールに追加しよう」というところまで機械が行う仕組みだ。PoCで試した結果、判定の精度は98%、誤検出は1%という数字を実現できた。「そこまでひどくはないので、これをベースに新しいものをどんどん作れる余地はある。もっと実践的なユースケースを考えるところに注力したい」と桐山氏は述べた。
こんな風にAWS WAFはどんどん進化し、人間が今まで汗をかいてやっていた作業をどんどん肩代わりできるようになりつつある。桐山氏は「さらに先を目指し、自動化を進めるため、いいアイデアがあればぜひディスカッションさせてほしい」と会場に呼び掛け、セッションを締めくくった。