NetFlow
NetFlow 수집기는 NetFlow가 활성화된 장치를 시각화 및 모니터링하고 Guance에 대한 로그를 수집하여 다양한 NetFlow 이상 현상을 모니터링하고 분석하는 데 사용할 수 있습니다.
NetFlow 소개¶
NetFlow는 인터페이스에 들어오고 나가는 모든 트래픽을 모니터링하고 기록하기 위해 Cisco에서 개발한 가장 널리 사용되는 트래픽 통계 표준입니다. NetFlow는 수집한 트래픽 데이터를 분석하여 흐름과 흐름 속도에 대한 가시성을 제공하고, 트래픽이 어디서 오고 어디로 가는지, 특정 시간에 어떤 트래픽이 생성되는지 추적합니다. 기록된 정보는 사용량 모니터링, 이상 탐지, 기타 다양한 네트워크 관리 작업에 사용될 수 있습니다.
현재 DataKit은 다음 프로토콜을 지원합니다:
- netflow5
- netflow9
- sflow5
- ipfix
설정¶
사전 조건¶
- NetFlow를 지원하고 NetFlow가 활성화된 장치입니다. 기기마다 여는 방법이 다릅니다. 공식 문서를 참고하는 것이 좋습니다. 예: Cisco ASA에서 NetFlow 켜기
DataKit 설치 디렉토리 아래에 conf.d/samples 디렉토리를 입력하고 netflow.conf.sample를 복사한 후 이름을 netflow.conf로 지정합니다. 예는 다음과 같습니다:
[[inputs.netflow]]
source = "netflow"
namespace = "namespace"
#[[inputs.netflow.listeners]]
# flow_type = "netflow9"
# port = 2055
[[inputs.netflow.listeners]]
flow_type = "netflow5"
port = 2056
#[[inputs.netflow.listeners]]
# flow_type = "ipfix"
# port = 4739
#[[inputs.netflow.listeners]]
# flow_type = "sflow5"
# port = 6343
[inputs.netflow.tags]
# some_tag = "some_value"
# more_tag = "some_other_value"
구성 후 DataKit 다시 시작만 사용하면 됩니다.
현재 수집기 구성을 삽입하는 ConfigMap 메서드를 통해 컬렉터를 켤 수 있습니다.
로그¶
다음은 예시 로그입니다.
{
"flush_timestamp":1692077978547,
"type":"netflow5",
"sampling_rate":0,
"direction":"ingress",
"start":1692077976,
"end":1692077976,
"bytes":668,
"packets":1588,
"ether_type":"IPv4",
"ip_protocol":"TCP",
"device":{
"namespace":"namespace"
},
"exporter":{
"ip":"10.200.14.142"
},
"source":{
"ip":"130.240.103.204",
"port":"4627",
"mac":"00:00:00:00:00:00",
"mask":"130.240.96.0/20"
},
"destination":{
"ip":"152.222.36.168",
"port":"424",
"mac":"00:00:00:00:00:00",
"mask":"152.0.0.0/8"
},
"ingress":{
"interface":{
"index":0
}
},
"egress":{
"interface":{
"index":0
}
},
"host":"MacBook-Air-2.local",
"next_hop":{
"ip":"20.104.52.139"
}
}
설명은 다음과 같습니다.
- 루트/NetFlow 노드
| 필드 | 설명 |
|---|---|
| flush_timestamp | 보고시간 |
| type | 합의 |
| sampling_rate | 샘플링 주파수 |
| direction | 방향 |
| start | 시작 시간 |
| end | 종료 시간 |
| bytes | 전송된 바이트 수 |
| packets | 전송 패킷 수 |
| ether_type | 이더넷 유형(IPv4/IPv6) |
| ip_protocol | IP 프로토콜(TCP/UDP) |
| device | 장치 정보 노드 |
| exporter | 수출업자 정보 노드 |
| source | 플로우 source 정보 노드 |
| destination | 흐름 목적지 정보 노드 |
| ingress | 인그레스 게이트웨이 정보 노드 |
| egress | 게이트웨이 정보 노드 종료 |
| host | 수집가의 호스트 이름 |
| tcp_flags | TCP 마크 |
| next_hop | Next_Hop 속성 정보 노드 |
device노드
| 필드 | 설명 |
|---|---|
| namespace | 네임스페이스 |
exporter노드
| 필드 | 설명 |
|---|---|
| ip | 수출자의 IP |
source노드
| 필드 | 설명 |
|---|---|
| ip | 소스 IP 주소 |
| port | 소스 포트 |
| mac | 소스 MAC 주소 |
| mask | 소스 네트워크 마스크 |
destination노드
| 필드 | 설명 |
|---|---|
| ip | 목적지의 IP 주소 |
| port | 목적지 포트 |
| mac | 대상 MAC 주소 |
| mask | 대상 IP 넷마스크 |
ingress노드
| 필드 | 설명 |
|---|---|
| interface | 네트워크 포트 번호 |
egress노드
| 필드 | 설명 |
|---|---|
| interface | 네트워크 포트 번호 |
next_hop노드
| 필드 | 설명 |
|---|---|
| ip | Next_Hop 속성의 대상에 대한 다음 홉 IP 주소 |
메트릭 집합¶
다음의 모든 데이터 수집은 기본적으로 host라는 전역 태그를 추가합니다(태그 값은 DataKit의 호스트 이름입니다). 구성에서 [inputs.netflow.tags]를 통해 다른 태그를 지정할 수도 있습니다.
Info
Netflow에서 수집한 데이터는 로그 클래스(L) 데이터에 저장됩니다.
netflow¶
NetFlow log records built from decoded flow payloads.
| Tags & Fields | Description |
|---|---|
| host ( tag) |
Hostname. |
| ip ( tag) |
Collector IP address. |
| bytes | Number of bytes observed for this flow. Type: int | (gauge) Unit: digital,B |
| dest_ip | Flow destination IP address. Type: string | (string) Unit: N/A |
| dest_port | Flow destination port. Type: string | (string) Unit: N/A |
| device_ip | NetFlow exporter IP address. Type: string | (string) Unit: N/A |
| ip_protocol | Flow network protocol. Type: string | (string) Unit: N/A |
| message | Rendered NetFlow log message. Type: string | (string) Unit: N/A |
| source_ip | Flow source IP address. Type: string | (string) Unit: N/A |
| source_port | Flow source port. Type: string | (string) Unit: N/A |
| status | Normalized NetFlow log status. Type: string | (string) Unit: N/A |
| type | NetFlow record type. Type: string | (string) Unit: N/A |