AWS Network Firewall 提供三种类型的日志,用于全面了解网络流量和安全事件
捕获与具有 alert 操作的有状态规则匹配的流量,或在检查期间生成告警的规则。
使用场景: 检测威胁、监控可疑活动、调整规则
关键字段: event_type、src_ip、dest_ip、alert.signature、alert.severity
{
"firewall_name": "egress-and-east-west-firewall",
"availability_zone": "us-east-1a",
"event_timestamp": "1699564800",
"event": {
"timestamp": "2024-11-09T10:30:00.123456+0000",
"flow_id": 123456789,
"event_type": "alert",
"src_ip": "10.1.1.50",
"src_port": 54321,
"dest_ip": "203.0.113.10",
"dest_port": 80,
"proto": "TCP",
"alert": {
"action": "allowed",
"signature_id": 2024001,
"rev": 1,
"signature": "ET MALWARE Suspicious User-Agent",
"category": "Potentially Bad Traffic",
"severity": 2
},
"http": {
"hostname": "malicious-domain.example.com",
"url": "/malware/payload.exe",
"http_user_agent": "BadBot/1.0",
"http_method": "GET",
"protocol": "HTTP/1.1",
"length": 0
}
}
}
记录通过防火墙的所有流量的网络流量信息。
使用场景: 流量模式分析、基线建立、容量规划
关键字段: src_ip、dest_ip、proto、app_proto、netflow.bytes、netflow.pkts
{
"firewall_name": "egress-and-east-west-firewall",
"availability_zone": "us-east-1a",
"event_timestamp": "1762671650",
"event": {
"timestamp": "2025-11-09T07:00:50.245040+0000",
"flow_id": 192941910554151,
"event_type": "netflow",
"src_ip": "13.218.199.213",
"src_port": 123,
"dest_ip": "10.1.1.60",
"dest_port": 43518,
"proto": "UDP",
"app_proto": "ntp",
"netflow": {
"pkts": 1,
"bytes": 76,
"start": "2025-11-09T06:58:48.307066+0000",
"end": "2025-11-09T06:58:48.310483+0000",
"age": 0,
"min_ttl": 251,
"max_ttl": 251
}
}
}
在启用 TLS 检查时,提供有关 TLS 连接的详细信息,包括证书验证结果和错误。
使用场景: 检测 SNI 欺骗、监控证书验证失败、识别 TLS 连接问题
关键字段: sni、src_ip、dest_ip、tls_error.error_message
{
"firewall_name": "egress-and-east-west-firewall",
"availability_zone": "us-east-1a",
"event_timestamp": 1763164421,
"event": {
"timestamp": "2025-11-14T23:53:41.788600Z",
"src_ip": "10.1.1.100",
"src_port": "33482",
"dest_ip": "44.220.93.206",
"dest_port": "443",
"sni": "checkip.amazonaws.com",
"tls_error": {
"error_message": "Error in connection to Server: Certificate verification failed."
}
}
}
此日志显示了一次被阻止的 SNI 欺骗尝试,其中客户端在 SNI 字段中请求了 checkip.amazonaws.com,但服务器提供的证书不匹配。Network Firewall 由于证书验证失败而自动阻止了该连接。
导航至 CloudWatch 控制台
选择 Logs > Log groups

选择一个 Network Firewall 日志组, 选择一个日志流以查看条目:


可以通过使用 CloudWatch Logs Insights 直接查询日志来获得更深入的洞察。让我们分析 TLS 流量,以了解我们的环境正在与哪些域进行通信以及传输了多少数据。
导航到 CloudWatch 控制台,选择 Logs > Logs Insights,并同时选择 Network Firewall 日志组(/aws/networkfirewall/alert 和 /aws/networkfirewall/flow)。

Network Firewall 在告警日志中捕获 TLS 服务器名称指示(SNI),在流日志中捕获传输字节数。这些是独立的日志条目,但对于给定的连接,两者共享相同的 flow_id。此查询使用 flow_id 关联两个日志源的数据,并显示传输到每个唯一域的总字节数:
fields @timestamp
| filter event.app_proto="tls"
| stats sum(event.netflow.bytes) as flowBytes,
latest(event.tls.sni) as sni
by event.flow_id
| stats sum(flowBytes) as totalBytes, count(*) as flowCount by sni
| sort by totalBytes desc
该查询首先按 flow_id 聚合以将 SNI 与字节数关联,然后按域汇总所有字节数。结果显示我们的环境与哪些外部服务通信最多,以及大部分流量的去向。
Network Firewall 为同一连接流生成不同的日志条目。当建立 TLS 连接时,我们将看到:
event.tls.sni(域名))但没有字节数的告警日志条目event.netflow.bytes(传输数据)但没有 TLS SNI 信息的流日志条目两种日志类型共享相同的 event.flow_id,它唯一标识连接。挑战在于我们不能简单地按 SNI 分组并汇总字节数,因为它们存在于不同的日志条目中。

另一个有用的分析是识别哪些安全规则在阻断流量方面最为活跃。这有助于我们了解防火墙正在防护哪些威胁,以及哪些规则提供了最大价值。
使用此查询查看丢弃或拒绝流量最多的顶级规则:
filter event.verdict.action in ['DROP', 'REJECT'] or event.alert.action in ['blocked', 'dropped']
| stats count(*) as blockCount by event.alert.signature
| sort blockCount desc
| limit 20
此查询过滤所有被阻断的流量(无论是丢弃还是拒绝),并按规则签名(规则名称)分组,显示哪些规则被最频繁触发。结果有助于识别我们最活跃的安全规则,并了解防火墙正在阻断哪些类型的流量。
