ニュースやSNS等でサイバー攻撃に関する情報を見かける機会が多くなってきたように感じる今日。一方でこんな声も聞こえてきます。
- セキュリティについて社内に詳しい人材がいない
- 専門用語が多すぎて分からない
- 敷居が高そうな印象でとっつきにくい
といった理由から具体的なセキュリティ対策にまだ踏み込めていない方もいらっしゃるのではないでしょうか?
本記事では、世界中で19億サイトともいわれるほど欠かせないツールとなったWebサイトをサイバー攻撃から守るために有効なWAF(Web Application Firewall)について、ログという観点から解説していきたいと思います。ログから見えてくるWAFを、少しでも身近なものとして捉えて頂けると幸いです。
もしもWAFにログがなかったら?
おそらく、こんなことを想像する人は多くないでしょう。ですが、ログの重要性を認識するという意味で、一度確認してみたいと思います。
もしログがない場合は、以下に示すような2つの点で困ってしまうと考えられます。
- 製品が画面等に出力する「結果」しか見えません。
- 途中で何が起こったのか?どのような判断が下されたのか?が分かりません。
- ネットワーク通信が目に見えないという性質も手伝って、意図せず通信が遮断されてしまった場合には対策が定められなくなります。
- 過去に発生した出来事を追跡できません。
- 24時間365日、瞬きもせずにじっと画面を見続けている必要が生じます。
- とても耐えられるものではありませんし、現実的でもありません。
デジタル温度計のように単純な「結果」を出力するだけの機器あるいはシステムであれば、ログの出力は不要かもしれません。また、ログを保持するための記憶領域を削ってでもコストを抑えたいという場合もあるでしょう。ですが、ある程度の複雑度を持つシステムならばログは必須と考えてもよいかと思います。それはWAFにおいても同様です。
ログの活用方法
ログの重要性についてもう1つだけ深堀りするために、その活用方法について考えてみたいと思います。
1つ目はデータ分析です。ログには「いつ、誰が、何を、どのように」といった情報が記録されていることが多いため、これを統計情報として分析することによって新たな傾向や対策の必要性についての気付きが得られる場合があります。その一例を下記の表に記載します。
分析結果 | 気付き | 対策(例) |
---|---|---|
存在しないURLへのアクセスが、毎日同じ時刻に同じIPアドレスから発生している | 自身が管轄する拠点からのアクセスの場合には、構築したシステムの不備が疑われる | 構築したシステムにおいて設定ミスなどがないか確認する |
見知らぬIPアドレスからのアクセスの場合には、自動化された不正アクセスが疑われる | アクセス元へ問い合わせる、または通信を遮断する | |
ゼロデイ攻撃に関するニュースが配信されると、しばらくの間はこれを模倣したようなアクセスが顕著に増える | 自身の所有するWebサイトに当該の脆弱性があった場合、被害を受けることが想定される | 定期的にWebサイトに対して脆弱性診断を実施して問題箇所をこまめに修正する、または当該の脆弱性に対するWAFの対応状況を確認する |
そして2つ目は教師データとしての活用です。教師データとは、AIや機械学習における「教師あり学習」にて用いられる情報で、システムが対象を分類するための事前に実施される訓練時に利用されます。AIや機械学習を用いたシステムとの連携によって、更なる付加価値を生み出す可能性もありますね。
WAFの場合も、より巧妙な攻撃手法を検知できるようになるかもしれませんが、検知ミス(本来通過させたい通信を遮断してしまう、またはその逆)を抑制するための精度向上が鍵になってきます。
WAFが出力するログの見方
さて、いよいよWAFのログについて詳しく見ていきたいと思います。世の中にはたくさんのWAFが存在していますが、本記事では情報量の多さという観点から下記の2つを取り上げます。
- AWS WAF
- ModSecurity
この2つを例として取り上げ、これらのログを比較する形で解説します。
- ログの出力先
ログの出力先は下表のようになります。AWSの場合は徹底されたマイクロサービス化の影響でもしかしたら読者によっては具体的なイメージが湧きづらい可能性もありますが、ログの保存/加工/分析といった一通りの対応が可能です。またModSecurityの方は自身が稼働するサーバ上にログを残すことができるため、手軽にログを確認することが可能となっています。
AWS WAF | ModSecurity |
---|---|
Amazon Kinesis Data Firehose CloudWatch Logs Amazon S3 | audit log と呼ばれる、自身が稼働するサーバ上のファイル 【ファイルの生成方式】 Serial 全てのログを1つのファイルへ集約 →管理が簡単 Conccurent トランザクション毎にファイルを生成 →大量書き込みに有利 HTTP通信が可能な別のWebサーバ |
なお、ModSecurityを利用する場合であっても、AWSのサービスへログを集約することが可能です。例えばaudit log への書き込みをCloudWatch AgentというAWSが提供するプログラムに監視させておきます。そして書き込まれた内容を自動的にCloudWatch Logsへ転送することによって、CloudWatch Logsを使ったログの管理も可能です。さらには、このCloudWatch Agentと同様のプログラムを用意すれば、他のシステムでもログを管理できますね。
- ログのフォーマット
次はログのフォーマットです。AWS WAF はJSON形式のフォーマットとなります。ModSecurityの方はJSON形式の他に「Native」と呼ばれるModSecurity独自のフォーマットも用意されています。
AWS WAF | ModSecurity |
---|---|
JSON | JSON →取り扱いのしやすさ重視 Native →解析処理のスピード重視 |
参考として、ModSecurityの「Native」フォーマットを使った出力例を以下に示します。
–be58b513-A–
[27/Jul/2022:05:46:16 +0900] V5guiH8AAQEAADTeJ2wAAAAK 192.168.3.1 50084 192.168.3.111 80
–be58b513-B–
POST /index.html?a=test HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: http://example.com/index.html
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded
Content-Length: 6
–be58b513-C–
b=test
–be58b513-F–
HTTP/1.1 200 OK
Last-Modified: Sun, 24 Jul 2022 15:24:49 GMT
ETag: “2d-5386344b7871a”
Accept-Ranges: bytes
Content-Length: 159
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html
(以下、省略)
- ログの項目
最後にログの代表的な項目を下表に示します。製品固有の項目が存在したり配置される位置が異なったりしていますが、要素としてはとても似ていることが分かるかと思います。
AWS WAF | ModSecurity |
---|---|
formatVersion フォーマットのバーション | |
timestamp ログのタイムスタンプ | time_stamp ログのタイムスタンプ |
client_ip アクセス元のIPアドレス | |
httpRequest HTTPリクエスト clientIp アクセス元のIPアドレス country アクセス元のIPアドレスを元にした国コード headers HTTPヘッダ情報 httpMethod HTTPメソッド uri アクセス先のURI | request HTTPリクエスト headers HTTPヘッダ情報 method HTTPメソッド uri アクセス先のURI |
webaclId 受信パケットと一致した終了ルールのWebACLのID | |
terminatingRuleId 受信パケットと一致した終了ルールのID | |
terminatingRuleMatchDetails 受信パケットと一致した終了ルールの詳細情報 | |
messages 検査結果 details 検査結果詳細 match 受信パケット一致したルールの該当箇所の説明 ruleId 受信パケット一致したルールのID |
まとめ
「もうWAFなんて怖くない!ログから見えてくるWAF解説 」と題しまして、ご紹介してきました。いかがでしたでしょうか?いきなり全てを把握しようとすると敷居が高く感じてしまうものであっても、いくつかの部分に分割して1つずつ攻略してみると意外と理解が進む場合もあるかと思います。
また、製品によって特徴が異なるので理解が進まないといった場合も考えられますが、WAFの目的は基本的に「不要な通信を遮断して、必要な通信を通す」ことになります。そのため、似ている部分は多く存在しますし、1つ知ると応用が効くものと考えられます。
もしも本記事を通して少しでもWAFを身近に感じて頂けましたら、これを機会にWAFの導入を検討してみるのもおすすめですよ。
当サイトでは、サイバー攻撃を防ぐためのWAFに興味がある方へ、参考になるダウンロード資料をご用意しております。「サイバー攻撃可視化ツールPrimeWAF 基本ガイドブック」は、WAF選定時に抑えるべき機能やポイントがわかる資料になっています。ぜひ資料をダウンロードください。