본문 바로가기
  • 테크에 관한 모든 것.
IT

[네트워크] Cisco NetFlow : 적용부터 데이터 시각화까지

by @TA 2024. 3. 26.
네트워크 흐름을 시각적으로 탐색하고 보안 감시를 강화하는 "Cisco NetFlow"와 "Grafana"의 매력적인 시너지에 대해 알아봅시다!

네트워크 트래픽을 실시간으로 모니터링하고 보안 위협을 감지하며, 리소스를 효율적으로 관리하는 것은 기업에 있어 매우 중요한 역량입니다. 그래서 오늘은 Cisco NetFlow를 활용하여 네트워크 데이터를 수집하고, InfluxDB와 Grafana를 통해 시각화하는 방법을 알아보겠습니다.


이 강력한 조합은 뛰어난 성능 모니터링과 보안 감시를 제공하며, 네트워크 인프라를 최적화하는 것에 도움이 되리라 확신합니다. 함께 이 블로그 글에서 Cisco NetFlow와 InfluxDB/Grafana의 강력한 기능을 살펴보고, 어떻게 이를 효과적으로 활용할 수 있는지 알아보시죠 :D

 

Cisco NetFlow 란?

Cisco NetFlow는 네트워크 트래픽 모니터링 및 분석을 위한 프로토콜입니다. 주로 라우터와 스위치에서 사용되며, 네트워크에서 발생하는 트래픽의 흐름을 캡처하고, 이를 분석하여 네트워크 성능을 개선하고 보안 이슈를 감지하는 데 사용됩니다.

 

NetFlow는 다음과 같은 기능을 제공합니다.

트래픽 모니터링
네트워크에서 발생하는 트래픽의 양과 흐름을 실시간으로 모니터링할 수 있습니다. 이를 통해 네트워크 사용량, 트래픽 패턴 등을 파악할 수 있습니다.

트래픽 분석
수집된 데이터를 분석하여 네트워크 트래픽 패턴을 식별하고, 성능 문제를 해결하거나 효율적인 리소스 할당을 수행할 수 있습니다.

보안 감지
이상 트래픽이나 DDoS(분산 서비스 거부) 공격과 같은 보안 위협을 식별하고 대응할 수 있습니다.

용량 계획 및 용량 관리
트래픽의 양과 패턴을 분석하여 네트워크 용량을 계획하고 관리할 수 있습니다.

 

NetFlow는 일반적으로 다음의 정보를 제공합니다.

  • 송신자 및 수신자 IP 주소
  • 송신자 및 수신자 포트 번호
  • 프로토콜 유형 (TCP, UDP)
  • 트래픽의 시작 및 종료 시간
  • 패킷 및 바이트 수

시스코 외에도 다른 제조사들도 비슷한 기능을 가진 다른 프로토콜을 사용할 수 있습니다. 예를 들어, Juniper의 sFlow, Huawei의 NetStream 등이 있습니다. NetFlow는 네트워크 운영 및 보안에 필수적인 도구로 널리 사용되고 있습니다.


Cisco NetFlow 설정 적용하기

다음은 Cisco 라우터에서 NetFlow를 설정하는 구체적인 예제입니다. 이 예제는 라우터의 인터페이스에서 NetFlow를 활성화하고 데이터를 수집하는 방법을 보여줍니다.

# NetFlow를 사용할 인터페이스로 이동합니다.
interface GigabitEthernet0/0

# 인터페이스에 NetFlow를 활성화합니다.
ip flow ingress

# NetFlow를 수신할 콜렉터의 IP 주소와 포트를 설정합니다.
ip flow-export destination <Collector_IP_Address> <Collector_Port>

# NetFlow 데이터를 수집할 버전을 설정합니다.
ip flow-export version 9

# NetFlow 트래픽 샘플링을 설정합니다.
ip flow-sampling mode random one-out-of <sampling_rate>

 

위의 코드 블록에서 <Collector_IP_Address>는 NetFlow 데이터가 전송될 콜렉터의 IP 주소를 나타내며, <Collector_Port>는 콜렉터가 수신 대기 중인 포트 번호를 나타냅니다. <sampling_rate>는 트래픽 샘플링 비율을 나타내며, 보통 1에서 1000까지의 값으로 설정됩니다.

이 코드를 사용하면 라우터의 특정 인터페이스에서 발생하는 트래픽에 대한 NetFlow 데이터를 수집할 수 있습니다. 또한, 이 데이터는 설정한 콜렉터로 전송되어 분석할 수 있습니다. NetFlow 설정은 네트워크 요구 사항에 따라 다를 수 있으므로, 필요에 따라 구성을 조정해야 할 수 있습니다.

[참고] Netflow 적용 가능 Cisco 제품군

Cisco NetFlow는 다양한 Cisco 라우터 및 스위치 모델에서 지원됩니다. 일반적으로 Cisco IOS, Cisco IOS XE, Cisco NX-OS 등의 운영 체제에서 NetFlow를 구성할 수 있습니다. 그러나 일부 오래된 모델이나 특정 모델에서는 제한적인 지원이 있을 수 있습니다.

NetFlow를 지원하는 Cisco 라우터 및 스위치의 일반적인 목록은 다음과 같습니다.

□ Cisco ISR 시리즈 (Integrated Services Routers)
□ Cisco ASR 시리즈 (Aggregation Services Routers)
□ Cisco Catalyst 시리즈 스위치
□ Cisco Nexus 시리즈 스위치

특정 모델의 경우에는 특정 NetFlow 기능이나 버전을 지원하지 않을 수도 있으므로, 모델의 데이터 시트나 사용 설명서를 확인하여 해당 모델에서 NetFlow를 지원하는지 확인하는 것이 좋습니다. 

Cisco NetFlow 설정 적용 결과 확인

적용 확인 명령어

  • Show ip flow export: NetFlow 전송 설정 확인
  • Show ip flow export statistics: NetFlow 전송 통계 확인
  • Show ip cache flow: 캐시된 NetFlow 흐름 정보 확인

명령어 적용 결과 화면

1. Show ip flow export

Router# show ip flow export
Flow export v5 is enabled for main cache
  Export source and destination details :
  VRF ID : Default
    Destination(1) : 192.168.1.100 (Port 2055)

 

2. Show ip flow export statistics

Router# show ip flow export statistics
Flow export v5 is enabled for main cache
  Exporting flows to 192.168.1.100 (2055)
  Exporting using source address 10.0.0.1
  Version 5 flow records exported for 0.000 secs
  0 flows exported in 0 udp datagrams
  0 flows failed due to lack of export packet
  0 export packets were sent up to process level
  0 export packets were dropped due to no fib
  0 export packets were dropped due to adjacency issues
  0 export packets were dropped due to fragmentation failures
  0 export packets were dropped due to encapsulation fixup failures

 

3. Show ip cache flow

Router# show ip cache flow
IP packet size distribution (166 total packets):
   1-32   64   96  128  160  192  224  256  288  320  352  384  416  448  480
   .000 .609 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000
  512  544  576 1024 1536 2048 2560 3072 3584 4096 4608
 .000 .000 .360 .000 .000 .000 .000 .000 .000 .000 .000

IP Flow Switching Cache, 278544 bytes
  0 active, 4096 inactive, 0 added
  217 flows added, 217 active, 0 fast, 0 aged, 0 aged
  0 hash collisions, 0 acl cache hits, 0 acl cache misses
  15930 cache entries, 31860 bytes
  0x0 flags, 0x0 hw_id, 0x0 ifindex
  1149 output bytes, 11 total packets
  1 flows exported in 0 udp datagrams
  0 flows failed due to lack of export packet
  0 export packets were sent up to process level
  0 export packets were dropped due to no fib
  0 export packets were dropped due to adjacency issues
  0 export packets were dropped due to fragmentation failures
  0 export packets were dropped due to encapsulation fixup failures

Netflow 설정 완료 후 시각화를 위한 Big-Picture

Netflow 데이터 시각화까지의 Infra Flow

 

방화벽(Firewall) 정책 오픈

1. Cisco NetFlow를 사용하기 위해 방화벽에서 열어야 하는 포트는 주로 UDP 포트와 TCP 포트입니다. 이들 포트를 열어야 NetFlow 데이터를 수집하는 서버 또는 콜렉터가 라우터나 스위치에서 전송하는 것을 허용할 수 있습니다.

일반적으로 사용되는 포트는 다음과 같습니다.

□ UDP 2055: NetFlow 버전 5 및 9의 기본 포트입니다.
UDP 9996: NetFlow 버전 9에서 데이터를 전송하는 데 사용될 수도 있습니다.
TCP 9995: NetFlow v9 데이터를 보안하기 위해 사용될 수 있습니다.

2. InfluxDB는 기본적으로 다음의 포트를 사용합니다. 이 포트들은 InfluxDB의 기본 구성에 따라 다를 수 있으며, 필요에 따라 변경될 수 있습니다. 아래는 일반적으로 사용되는 InfluxDB의 포트입니다.


TCP 8086 : HTTP API 포트 
InfluxDB의 HTTP API에 접근하기 위한 포트입니다. 이 포트는 데이터베이스에 대한 쿼리 및 데이터 작성을 위해 사용됩니다. 주로 웹 브라우저나 다른 클라이언트 프로그램이 이 포트를 통해 InfluxDB에 연결합니다.

 

InfluxDB 설치 후 Netflow 데이터 적재

Cisco NetFlow 데이터를 InfluxDB에 연동하고 데이터를 적재하는 과정은 다음과 같습니다. 아래 단계에 따라 InfluxDB를 설치하고 설정한 후, Cisco 장치에서 NetFlow 데이터를 수집하고 이를 InfluxDB에 적재합니다.

1. InfluxDB 설치
  1.1. InfluxDB 다운로드
  InfluxDB의 공식 웹사이트(https://portal.influxdata.com/downloads/)에서 운영 체제에 맞는 InfluxDB를 다운로드 합니다.
  1.2. InfluxDB 설치
  다운로드한 파일을 압축 해제하고 설치합니다. 각 운영 체제에 따라 설치 방법이 다를 수 있습니다.
  1.3. InfluxDB 실행
  InfluxDB를 실행합니다. 주로 터미널에서 influxd 명령을 사용하여 실행합니다.

2. InfluxDB 설정
  2.1. 데이터베이스 생성
  InfluxDB에 데이터를 저장할 데이터베이스를 생성합니다. influx 명령을 사용하여 InfluxDB 셸에 접속한 후 다음 명령을 실행합니다.
CREATE DATABASE netflow;​

 

  2.2. 사용자 및 권한 설정 (옵션)
  필요에 따라 InfluxDB에 접근할 수 있는 사용자를 생성하고 권한을 부여할 수 있습니다.

3. Cisco 장치에서 NetFlow 데이터 수집
  3.1. Cisco 장치 구성
  Cisco 장비에서 NetFlow를 활성화하고 데이터를 수집할 콜렉터의 IP 주소와 포트를 설정합니다. 이 과정은 Cisco 장비의 구성에 따라 다를 수 있습니다.
  3.2. 콜렉터 설정
  InfluxDB에 데이터를 적재할 콜렉터를 설정합니다. 이 콜렉터는 Cisco 장치에서 수집한 NetFlow 데이터를 InfluxDB에 적재할 것입니다.

 

Telegraf 설치/구성 후 데이터 적재

  * Telegraf : 데이터를 수집하고 InfluxDB에 적재하는데 사용될 수 있는 데이터 수집 도구입니다.

1. Telegraf 설치
  1.1. Telegraf 다운로드
  Telegraf를 공식 Telegraf 웹사이트(https://portal.influxdata.com/downloads/)에서 다운로드합니다.
  1.2. Telegraf 설치
  다운로드한 Telegraf 파일을 압축 해제하고 설치합니다. 각 운영 체제에 따라 설치 방법이 다를 수 있습니다.

2. Telegraf 구성
  2.1. Telegraf 설정 파일 생성
  Telegraf는 설정 파일을 사용하여 데이터 수집 및 출력을 구성합니다. 예를 들어, telegraf.conf 파일을 생성합니다.
telegraf --input-filter netflow --output-filter influxdb config > telegraf.conf​


  2.2. Telegraf 구성 파일 편집
  생성된 telegraf.conf 파일을 편집하여 Cisco 장치에서 수집한 NetFlow 데이터를 InfluxDB에 적재하는 설정을 추가합니다.

[[inputs.netflow]]
  address = ":2055" # Cisco 장치에서 NetFlow 데이터를 수집하는 포트
  data_format = "v5" # NetFlow 데이터 형식 (v5, v9 등)
  timeout = "5s" # 타임아웃 설정
  templates = [
    "CISCO_NETFLOW",
  ]

[[outputs.influxdb]]
  urls = ["http://localhost:8086"] # InfluxDB URL
  database = "netflow" # InfluxDB에 적재할 데이터베이스 이름


위의 설정은 Telegraf가 Cisco 장치에서 수집한 NetFlow 데이터를 InfluxDB에 적재하도록 구성합니다. 포트, 데이터 형식, 타임아웃 등은 환경에 따라 조정할 수 있습니다.

3. Telegraf 실행
  3.1. Telegraf 실행
  Telegraf를 실행하여 데이터 수집 및 적재 작업을 시작합니다.

telegraf --config telegraf.conf


  3.2. Telegraf 실행 확인
  Telegraf가 정상적으로 실행 중인지 확인하고 오류 메시지를 확인합니다.

4. 데이터 적재 확인
  4.1. InfluxDB 데이터베이스 확인
  InfluxDB에 데이터가 적재되었는지 확인합니다. influx 명령을 사용하여 InfluxDB 셸에 접속하여 데이터베이스를 확인할 수 있습니다.

 

데이터 시각화(Grafana)

Grafana에서 InfluxDB 데이터를 가져오는 과정은 다음과 같습니다.

1. 데이터 소스 설정
  1.1. Grafana에 로그인하고 대시보드를 편집하거나 새로 생성합니다.
  1.2. 좌측 메뉴에서 "Configuration"을 선택하고 "Data Sources"를 클릭합니다.
  1.3. "Add data source"를 클릭하여 새로운 데이터 소스를 추가합니다.
  1.4. 데이터베이스 유형으로 "InfluxDB"를 선택합니다.
  1.5. InfluxDB에 연결할 URL을 입력합니다. (예: http://localhost:8086)
  1.6. 데이터베이스 이름을 입력합니다. (예: netflow)
  1.7. 필요에 따라 사용자 이름과 비밀번호를 입력합니다.
  1.8. "Save & Test" 버튼을 클릭하여 연결을 테스트하고 저장합니다.

2. 쿼리 구성
  2.1. 대시보드 편집 화면에서 "Add panel"을 클릭하여 새로운 패널을 추가합니다.
  2.2. 패널의 "Data Source"를 선택하고 InfluxDB로 설정합니다.
  2.3. "Metric"을 선택하고 InfluxDB에서 쿼리할 측정값을 선택합니다.
  2.4. 필요에 따라 태그와 필터를 추가하여 데이터를 세분화합니다.
  2.5. "Group by"를 설정하여 데이터를 그룹화합니다. (옵션)
  2.6. 시간 범위를 선택하거나 조정하여 데이터의 시간 범위를 설정합니다.

3. 데이터 시각화
  3.1. 데이터 소스에서 쿼리한 데이터를 시각화하기 위해 적절한 시각화 형식을 선택합니다. (그래프, 테이블, 게이지 등)
  3.2. 시각화를 보다 강력하게 만들기 위해 옵션을 설정합니다. (색상, 레이블, 범례 등)
  3.3. 필요한 경우 대시보드의 다른 패널과 함께 데이터를 조합하여 시각적인 분석을 수행합니다.

쿼리문 예시
예를 들어, InfluxDB에 저장된 네트워크 트래픽 데이터를 시간에 따라 조회하고자 할 때 다음과 같은 쿼리문을 사용할 수 있습니다.
SELECT "bytes" FROM "netflow" WHERE time > now() - 1h GROUP BY time(10s)​

 

이 쿼리문은 최근 1시간 동안의 네트워크 트래픽 데이터를 10초 간격으로 조회합니다.

위의 단계를 따라 Grafana에서 InfluxDB 데이터를 가져와 시각화하면 네트워크 모니터링 및 분석을 보다 효과적으로 수행할 수 있습니다.
반응형