AWS Network FireWallのログ

(2020/11/21)

AWS Network FireWallのログはS3かCloudWatchに転送できます。Flowlogと同じですね。
Network FireWallでTCPをDROPする設定にして10.0.1.100から192.168.1.100にnmapをかけるとCloudWatchはこういう感じで見えます。

S3のログを直接見るよりはもちろん見やすいですが、ちゃんと運用しようと思ったらCloudWatchからElasticSearchにストリームするか、S3のデータをAthenaで見るのが良さそうです。
以下はログの中身です。AlertのActionがBlockedになっています。ざっと見たところどのパケットもsecerityは3で記録されていますが、全数確認するならやはりCloudWatchLogsだけでは不十分です。SignatureIDはマッチしたポリシーの番号でしょうか。少しわかりずらいです。ポリシー名を出して欲しいです。
{
“firewall_name”: “vpc3-firewall”,
“availability_zone”: “eu-west-1a”,
“event_timestamp”: “1605925265”,
“event”: {
“timestamp”: “2020-11-21T02:21:05.340059+0000”,
“flow_id”: 1917739296960603,
“event_type”: “alert”,
“src_ip”: “10.0.1.100”,
“src_port”: 55889,
“dest_ip”: “192.168.1.100”,
“dest_port”: 2100,
“proto”: “TCP”,
“alert”: {
“action”: “blocked”,
“signature_id”: 1,
“rev”: 0,
“signature”: “”,
“category”: “”,
“severity”: 3
}
}
}

次にNFWでTCPをPASSする設定(FireWall界隈の人は主にPermitって言うと思うけれど)にしてNMAPをかけてみました。
PASSのログも記録されるようで、大量に出力されていました。
以下がそのログですが、PASSだからでしょうが、alertの項目はありません。変わりにtcpの項目があります。
{
“firewall_name”: “vpc3-firewall”,
“availability_zone”: “eu-west-1a”,
“event_timestamp”: “1605925732”,
“event”: {
“timestamp”: “2020-11-21T02:28:52.002515+0000”,
“flow_id”: 553412897174776,
“event_type”: “netflow”,
“src_ip”: “10.0.1.100”,
“src_port”: 43172,
“dest_ip”: “192.168.1.100”,
“dest_port”: 19801,
“proto”: “TCP”,
“netflow”: {
“pkts”: 1,
“bytes”: 44,
“start”: “2020-11-21T02:27:50.161016+0000”,
“end”: “2020-11-21T02:27:50.161016+0000”,
“age”: 0,
“min_ttl”: 56,
“max_ttl”: 56
},
“tcp”: {
“tcp_flags”: “02”,
“syn”: true
}
}
}

基本的に必要な情報は入っていると思いますが、ファイアウォールのログは大量に出力されるので、もっと細かくログ送信を制御できないと辛いです。
・S3とCloudWatch両方に送れるとか
・もっと言うとPASSを含むログはS3に送って、CloudWatchはブロックしたログだけ送るとか
・ポリシーに応じてログを出す出さないを選択できるとか
上記のような事は現状できないです。今後に期待したいですが、AWS的にはデータレイク(S3)に全データを保持して、ETL処理して解析するべきという方針なのでしょうから、今からそういう設計にしたほうが良いのでしょうが、リアルタイムでログを確認したい事も多いですよね。やはりS3とCloudWatchLogs両方同時に送れるようにしてほしいです。