当記事では、AWS Network Firewallにおけるログの出力方法について記載します。
目次
前提条件
既にAWS Network Firewallを構築しており、通信を制御できていることを前提とします。
設定方法に関する記事はこちら:AWS Network Firewallの設定方法
設定方法
- コンソールの[ネットワークファイアウォール]タブの[ファイアウォール]を選択します。
その後、表示されたファイアウォールでログ出力設定を行うものの名前を押下します。 - [ファイアウォールの詳細]タブを選択します。
- 下へ画面をスクロールさせ、[ログ記録]の[編集]を押下します。
- 出力するログタイプを選択します。
Alert:ルールでアクションを[ドロップ]または[アラート]にしている場合に出力されるログ
Flow: デフォルトで表示されるトラフィックログ
- ログの送信先を設定します。
今回は、CloudWatch ロググループに送信するため、任意のCloudWatchロググループを選択します。
- [保存]を押下します。
以上で設定は完了です。
CloudWatchのロググループのログストリームから、ログが指定した宛先へ正しく送信されていることを確認できます。
なお、上記CloudWatchのロググループ上のログをLogStare Collectorで収集する場合は、こちらの記事を参照してください。
以下、LogStare Collectorで収集したログを表示している画面です。文字列(正規表現)検索を行えるため、確認したいログを瞬時に見つけることが可能です。
サンプルログ
Alertログ
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-2a", "event_timestamp": "1675153572", "event": { "src_ip": "192.168.0.78", "src_port": 51117, "event_type": "alert", "alert": { "severity": 3, "signature_id": 3, "rev": 0, "signature": "", "action": "allowed", "category": "" }, "flow_id": 180684184660251, "dest_ip": "18.180.167.106", "proto": "TCP", "dest_port": 443, "timestamp": "2023-01-31T08:26:12.436507+0000" } }
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-2a", "event_timestamp": "1675153534", "event": { "icmp_type": 8, "src_ip": "192.168.0.78", "src_port": 0, "event_type": "alert", "alert": { "severity": 3, "signature_id": 4, "rev": 0, "signature": "", "action": "blocked", "category": "" }, "flow_id": 1238487382520761, "dest_ip": "18.180.167.106", "proto": "ICMP", "icmp_code": 0, "dest_port": 0, "timestamp": "2023-01-31T08:25:34.881593+0000" } }
Alertログから、主に以下の情報を入手することができます。
・送信元IP アドレス
・送信元ポート番号
・宛先IP アドレス
・宛先ポート番号
・プロトコル
・アクション
・タイムスタンプ(ログ日時)
Flowログ
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-2a", "event_timestamp": "1675151323", "event": { "tcp": { "tcp_flags": "df", "syn": true, "fin": true, "rst": true, "psh": true, "ack": true, "ecn": true, "cwr": true }, "app_proto": "tls", "src_ip": "192.168.0.78", "src_port": 50811, "netflow": { "pkts": 16, "bytes": 3487, "start": "2023-01-31T07:44:20.121258+0000", "end": "2023-01-31T07:44:28.852749+0000", "age": 8, "min_ttl": 127, "max_ttl": 127 }, "event_type": "netflow", "flow_id": 106638783863210, "dest_ip": "18.180.167.106", "proto": "TCP", "dest_port": 443, "timestamp": "2023-01-31T07:48:43.647164+0000" } }
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-2a", "event_timestamp": "1675152724", "event": { "src_ip": "192.168.0.78", "icmp_type": 8, "netflow": { "pkts": 3, "bytes": 180, "start": "2023-01-31T08:11:16.984073+0000", "end": "2023-01-31T08:11:28.570025+0000", "age": 12, "min_ttl": 127, "max_ttl": 127 }, "event_type": "netflow", "flow_id": 1238487326262281, "dest_ip": "18.180.167.106", "proto": "ICMP", "icmp_code": 0, "timestamp": "2023-01-31T08:12:04.090331+0000" } }
Flowログから、主に以下の情報を入手することができます。
・送信元IP アドレス
・送信元ポート番号
・宛先IP アドレス
・宛先ポート番号
・プロトコル
・バイト数
・通信開始及び終了時間
・タイムスタンプ(ログ日時)
運用上の注意点
Fortinet社のFortiGateやPaloAlto Networks社のPaloAltoでは、リクエスト通信とレスポンス通信は1つのセットとしてログに出力されます。しかし、AWS Network FirewallのFlowログでは、リクエスト通信とレスポンス通信はそれぞれ別でログに出力されます。そのため、ログ分析を行う際は、ログ件数や送受信バイト数の計算等でAWS Network Firewallのログ出力の仕様を考慮する必要があります。
※対となるリクエスト通信とレスポンス通信のログでは、「flow_id」という項目が同じ値となるため、その項目の値からリクエスト通信とレスポンス通信を紐づけることで、ログ件数や送受信バイト数の計算を行うことができます。
AWS Network Firewallにおける対となる通信ログの例
- リクエスト通信
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-2a", "event_timestamp": "1675151323", "event": { "tcp": { "tcp_flags": "df", "syn": true, "fin": true, "rst": true, "psh": true, "ack": true, "ecn": true, "cwr": true }, "app_proto": "tls", "src_ip": "192.168.0.78", "src_port": 50811, "netflow": { "pkts": 16, "bytes": 3487, "start": "2023-01-31T07:44:20.121258+0000", "end": "2023-01-31T07:44:28.852749+0000", "age": 8, "min_ttl": 127, "max_ttl": 127 }, "event_type": "netflow", "flow_id": 106638783863210, "dest_ip": "18.180.167.106", "proto": "TCP", "dest_port": 443, "timestamp": "2023-01-31T07:48:43.647164+0000" } }
- レスポンス通信
{ "firewall_name": "NetworkFirewall", "availability_zone": "us-west-2a", "event_timestamp": "1675151323", "event": { "tcp": { "tcp_flags": "1b", "syn": true, "fin": true, "psh": true, "ack": true }, "app_proto": "tls", "src_ip": "18.180.167.106", "src_port": 443, "netflow": { "pkts": 28, "bytes": 29719, "start": "2023-01-31T07:44:20.121258+0000", "end": "2023-01-31T07:44:28.852749+0000", "age": 8, "min_ttl": 110, "max_ttl": 227 }, "event_type": "netflow", "flow_id": 106638783863210, "dest_ip": "192.168.0.78", "proto": "TCP", "dest_port": 50811, "timestamp": "2023-01-31T07:48:43.647207+0000" } }
LogStare Reporter / LogStare Quintでのレポート例
当社のLogStare ReporterおよびLogStare QuintはAWS Network Firewallのアクセスログの可視化に対応しています。
※「LogStare Reporter / LogStare Quint」につきまして詳しくはラインアップをご覧ください。
ラインアップ - AI予測・システム監視・ログ管理を統合したセキュリティ・プラットフォーム LogStare(ログステア)
以下はレポートの一例です。
時間帯別ファイアウォールログ件数レポート
AWS Netwrork Firewallのログを時間帯別にallowed/blocked別に集計したレポートです。
例えばblocked(グラフ上黄色)の多い時間帯についてクローズアップ(ドリルダウン)することで、ブロックされた通信の宛先IPアドレス、送信元IPアドレス、ポート番号などを分析することが出来ます。
宛先IPアドレス別レポート(netflow)
netflowのログより通信量の多い宛先別に集計したレポートです。
想定外に外部への大量通信が発生しないかなどを一目で確認することができます。
クローズアップ(ドリルダウン)することで、送信元IPアドレス、アプリケーション、ポート番号などを調査することが出来ます。
プロトコル別レポート(netflow)
AWS Network Firewallが識別したアプリケーションプロトコル別のレポートです。
クローズアップ(ドリルダウン)することで、宛先IPアドレス、送信元IPアドレスなどを調査することが出来ます。
以上で、AWS Network Firewallにおけるログ出力設定方法についての説明は終了となります。
記載されている会社名、システム名、製品名は一般に各社の登録商標または商標です。
当社製品以外のサードパーティ製品の設定内容につきましては、弊社サポート対象外となります。