フローログサービスは、ユーザーのネットワークインターフェイスに送受信されるパケットを分析して統計情報を提供します。このサービスを使用すると、ネットワークインターフェイスに設定されたSecurity Groupsルールによって許可または拒否されたパケットの数、サイズなどの様々な統計情報を確認できます。フローログサービスを活用すれば、ユーザーのネットワークインターフェイスが正しくトラフィックを送受信したのか、誰と通信を行ったのか、そして外部からどのような侵入の試みがあったのかなどを確認できます。
フローログサービスは、ネットワークインターフェイスに行き来するすべてのパケットのヘッダを検査します。現在はインスタンスのネットワークインターフェイスとトランジットハブ接続に対してのみ機能を提供します。
ただし、L2タイプはEthernet、 L3タイプはIPv4、 L4タイプはTCP/UDP/ICMPの場合にのみヘッダを検査して統計を提供します。検査されたパケットは5-tupleを基準に集計されます。
現在、フローログサービスはObject Storageをストレージとして活用しています。ユーザーが設定した収集間隔ごとにOBS(Object Storage)にファイルが作成され、このファイルをダウンロードして実際の統計を確認できます。
統計を確認してSecurity Groupsが正しく設定されているかどうか、外部侵入の試みなどを確認できます。
インスタンスのポートを介して送受信されるパケットの接続情報、統計情報などを収集/確認したい場合
使用中のネットワークサービスに流れるパケットの接続情報、統計などを収集/確認したい場合。
Security Groups設定によって許可またはブロックされたパケットの接続情報、統計を収集/確認したい場合
インスタンスへのパケット流入記録を確認し、疑わしいアドレスをブロックしてインスタンスのセキュリティ強化を図りたい場合
フローログサービスで使用するリソースと用語を説明します。
| 番号 | フィールド | 説明 | 単位 | 備考 |
|---|---|---|---|---|
| 1 | timestamp_start | 該当5-tupleが最初に確認された時間 | UNIX TIMESTAMP | |
| 2 | timestamp_end | 該当5-tupleが最後に確認された時間 | UNIX TIMESTAMP | |
| 3 | interface_id | ネットワークインターフェイスID | UUID | |
| 4 | owner_type | ネットワークインターフェイスを所有している機器の種類 | instanceまたはtransithub_attachment |
|
| 5 | owner_id | ネットワークインターフェイスを所有している機器のID | UUID | |
| 6 | subnet_id | ネットワークインターフェイスを所有しているサブネットのID | UUID | |
| 7 | vpc_id | ネットワークインターフェイスを所有しているVPCのID | UUID | |
| 8 | region | リージョン情報 | KR1またはKR2 |
* KR1:韓国(パンギョ)リージョン * KR2:韓国(ピョンチョン)リージョン |
| 9 | protocol | 5-tupleの中からプロトコル番号 | IANAが付与したプロトコル番号を表現します。 * 各番号に基づくプロトコルは次のとおりです。 1: ICMP, 6: TCP, 17: UDP * それ以外は収集しません。 |
|
| 10 | src_addr | 送信元アドレス | IPv4アドレス | |
| 11 | dst_addr | 宛先アドレス | IPv4アドレス | |
| 12 | src_port | 送信元ポート番号 | Integer | ICMPは0とみなします。 |
| 13 | dst_port | 宛先ポート番号 | Integer | ICMPは0とみなします。 |
| 14 | tcp_flag | TCP flag | Integer | TCP flagは収集間隔内にキャプチャされたパケットをbitwise OR処理して表記します。 詳細は表下部のTCP flagsを参照してください。 |
| 15 | packets | 収集間隔中に確認されたパケット数 | Integer | |
| 16 | bytes | 収集間隔中に確認されたパケットサイズの合計 | Byte | |
| 17 | direction | 収集された5-tupleのパケットフローの方向 | ingress, egressまたはunknown |
|
| 18 | filter | 収集された5-tupleのSecurity Groups判定結果 | ACCEPTまたはDROP |
|
| 19 | transithub_drop_no_route_packets | ルーティングパスがなく、トランジットハブルーターがドロップしたパケットの数 | Integer | トランジットハブに関連する項目で、トランジットハブ以外のインターフェイスは -1で表記されます。 |
| 20 | transithub_drop_no_route_bytes | ルーティングパスがなく、トランジットハブルーターがドロップしたパケットサイズの合計 | Byte | トランジットハブと関連する項目で、トランジットハブ以外のインターフェイスは -1で表記されます。 |
| 21 | transithub_drop_black_hole_packets | トランジットハブルーターでブラックホールルーティングと判断されてドロップしたパケットの数 | Integer | トランジットハブに関連する項目で、トランジットハブ以外のインターフェイスは -1で表記されます。 |
| 22 | transithub_drop_black_hole_bytes | トランジットハブルーターでブラックホールルーティングと判断されてドロップしたパケットサイズの合計 | Byte | トランジットハブに関連する項目で、トランジットハブ以外のインターフェイスは -1で表記されます。 |
| 23 | status | ログ状態 | OKまたはSKIPDATAまたはNODATA |
* OK:正常にロギングされた5-tupleです。 * SKIPDATA:フローログが提供する内部容量を超過して該当収集間隔期間中に収集されなかったパケットが存在します。 * NODATA:該当収集間隔内に収集されたデータがありません。 |
TCP接続が短い場合、TCP Active openを試みる側でSYN、FINを収集間隔内に送信できます。この場合、SYN | FIN (2 | 1 = 3)が記録されます。SYN | FIN (2 | 1 = 3)が記録されます。
逆に受信データとしては、収集間隔内にSYN | ACK、そしてFINが受信されることがあります。この場合、SYN | ACK | FIN (16 | 2 | 1 = 19)が記録されます。
SYN, ACK, RST, FINの各数値は、TCP header tcp flag bit field(RFC 793, section 3.1. Header Format)に従います。
PSH flagのみ存在するパケット、ACK flagのみ存在するパケット、および一般的にトラフィックを送信する際に使用するPSH | ACK flagは収集に含めません。つまり、SYN、SYN | ACK、FIN | ACK、RST、FINのみ記録します。
収集間隔を長く設定した場合、実際には異なる接続ですが、同じ5-tupleで収集されることがあります。
収集間隔内に同じ5-tupleで複数回接続の確立/終了を繰り返すと、これらの接続が論理的にはそれぞれ異なる接続であっても、同じ5-tupleで集計されます。
したがって、状況に応じて適切な収集間隔を設定することをお勧めします。
接続確立パケットのみ収集(connection setup only)オプションの影響を受けず、接続状態に関係なく全てのパケットを収集します。現在、ロードバランサーはACCEPTパケットのみを収集します。ロードバランサーに設定されたIPACLによってDROPされたパケットの収集については、今後サポート予定です。
ロードバランサーへのアクセスを試みるパケットや、ロードバランサーとメンバー間の通常のパケットに加え、ヘルスチェックパケットも収集します。
接続確立パケットのみ収集(connection setup only)オプションの影響を受けず、接続状態と関係なく全てのパケットを収集します。接続確立パケットのみ収集(connection setup only)オプションの影響を受けず、接続状態に関係なく全てのパケットを収集します。