[우분투] Pcap => NetFlowProbe => NetFlowCollector(print flow) Computer Tip

몇년전 작업했던 내용 중 핵심을 정리해 봅니다.

넷플로우 정보를 가지고 활용하려면 우선 넷플로우를 생성하고 받는 컬렉터가 필요합니다.
생성은 라우터에서 설정을 하면 던저주지만, 일반적인 쉬운 환경에서는
pcap 에서부터 출발을 해야합니다.

우선 우분투에서  다음과 같은 패키지가 필요합니다.

$ sudo apt-get install fprobe flow-tools

1) 모니터링 포트로 패킷을 받아 netflow를 생성하기

# /usr/sbin/fprobe -ieth1 -f 'ip host 192.168.1.225 or 192.168.1.254' -d 30 -e 30 localhost:9000

별도의 데몬을 돌리지 않는다면, 위와 같이 수행하면 됩니다.
각각의 의미는 다음과 같습니다.

-ieth1 : eth1이 모니터링 포트가 되어 패킷을 잡습니다. 스위치의 SPAN 포트에 연결하거나 탭 장비에 연결합니다.
-f 'ip host 192.168.1.225 or 192.168.1.254' : 해당 호스트만 잡는 다는 것입니다. 일반적인 tcpdump 의 BPF 표현식입니다.
-d 30 : idle 플로우 생명주기로 아무 행동없이 30초가 넘으면 플로우 종료를 의미합니다.
-e 30 : active 플로우 생명주기로 실제 활동하는 플로우가 30초를 넘으면 플로우로 계산합니다.
localhost:9000 : 패킷에서 넷플로우 (디폴트, V5)를 생성하여 그 결과를 UDP 패킷으로 로컬호스트의 9000번호 포트로 쏘게 됩니다.

2) 플로우 캡쳐 (컬렉터 역할)

1에서 혹은 일반 라우터의 netflow probe 로부터 오는 netflow 정보를 캡쳐합니다.

# /usr/bin/flow-capture -n 1439 -N 0 -w /opt/flow 0/localhost/9000

각각의 의미는 다음과 같습니다.

-n 1439 : 하루에 몇개의 파일로 나누어 플로우를 저장하는가 입니다. 1439 (1440) 은 1분마다 파일을 저장합니다.
-N 0 : 출력 파일을 어느 단계의 하위폴더를 생성하는가인데 0은 그냥 플랫입니다.
-w ... : 출력할 폴더 위치입니다.
0/localhost/9000 : localip/remoteip/port 의미로 로컬호스트 9000번 포트에서 읽어 온다는 의미입니다.

혹은 이 부분에서 좀 더 잘 활용하면 고성능 DB 등에 저장할 수 있을 것입니다.

3) 2에서 캡쳐한 결과를 의미있는 정보로 가공합니다.

# cat /opt/flow/ft-v05.2010-10-28.083735* | flow-print -f 3

ft-v05.2010...등의 파일은 2에서 생성한 raw-cature 파일이고,
이것을 flow-print 명령으로 출력을 해 봅니다.

-f 3 은 3번 포맷인데, 1 line, no interfaces, decimal ports 의미입니다.
(더 다양하게 해 보세요~)

그러면 그 결과가,
srcIP            dstIP            prot  srcPort  dstPort  octets      packets
211.170.51.161   192.168.1.225    6     52230    3404     24906       364       
192.168.1.225    211.170.51.161   6     3404     52230    1153152     286       
192.168.1.225    192.168.1.255    17    138      138      1095        5 

등과 같이 나옵니다.

4) 결과를 의미있는 정보로 가공...

이 부분이 가장 중요합니다.
넷플로우로 악성 네트워크 정보를 분석하는 어느 회사가 최근에 시스코에 50억불인가에
팔렸다고 하는군요... 그만큼 분석 그 자체가 어떻게 하느냐에 따라
중요하다고 볼 수 있습니다.

NFDUMP 를 참고하시면 도움이 될 것입니다.

(나머지는 하고싶은 분의 몫입니다...)

이상과 같이 간단한 네트워크 환경에서
넷플로우를 가져다가 활용할 수 있는 기본적인
환경에 대하여 알아보았습니다.

어느분께는 도움이 되셨기를...

덧글

댓글 입력 영역

구글애드텍스트