본문 바로가기
네트워크 (LAN,WAN)

NetFlow 데이터 분석 관련 프로그램 설치 및 활용

by 날으는물고기 2009. 3. 23.

NetFlow 데이터 분석 관련 프로그램 설치 및 활용

NetFlow 데이터 분석 관련 프로그램 설치 및 활용

(RRDTool, flow-tools, FlowScan, and CUFlow)

 

1.   NetFlow 데이터란?

 

Source IP destination IP사이에 발생하는 일련의 패킷들을 NetFlow라고 정의할 수 있는데, 여기에는 NetFlow버전에 따라 다양한 정보를 포함하고 있다. 기본적으로 source IP, destination IP, application port 번호, IP Protocol Type, Service Type, AS번호 등이다. 이런 정보를 이용해 현재 발생하고 있는 이벤트에 대한 추적이 가능하다.

 

참조: http://www.cisco.com/warp/public/cc/pd/iosw/ioft/neflct/tech/napps_wp.htm

 

기존의 MRTG가 실제 트래픽 사용률에 대한 정보를 보여 주었다면, NetFlow 데이터는 위에서 언급한 정보들을 가지고 있으므로 과다한 트래픽을 발생시키는 IP, 바이러스에 감염된 PC, 그리고 현재 우리 네트웍에서 어떤 유형의 트래픽이 많은 지를 분석할 수 있다.

 

따라서 MRTG FlowScan을 병행하면 굳이 고가의 NMS 프로그램을 구입하지 않더라도 수준급의 보안 시스템을 구축했다고 볼 수 있지 않을까?

 

* 실제예 : 바이러스에 감염된 전용선 가입자의 MRTG 그래프 및 FlowScan 검색

MRTG그래프

 

이 그래프는 어떤 전용회선 가입자의 트래픽 사용현황을 보여주는 것으로써 input값이 일정하고 또 새벽에도 input값이 일정하게 있는 것으로 보아 바이러스에 감염됐음을 짐작할 수 있다. 하지만 어떤 IP인지는 이 그래픽만으로는 알 수 없다. 이때 FlowScan을 이용하면 된다.

 

FlowScan

2003/11/27 04:08:22 211.238.196.17 -> 211.238.205.100 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.101 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.102 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.103 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.104 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.105 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.106 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.107 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.108 ICMP_ECHO 1 922003/11/27 04:08:22 211.238.196.17 -> 211.238.205.109 ICMP_ECHO 1 92
FlowScan으로 위 가입자의 IP주소(211.238.196.17)를 검색해보니 특정 IP주소(211.238.205.X번대) 92Byte의 일정한 크기로 스캔하는 웜(Welchia)에 감염되었음을 알 수 있다.

 

☞ 이제부터 NetFlow 데이터를 분석하는 프로그램들을 설치해보자.

 

2.      프로그램 설치

1)      내가 설치한 시스템 사양

[H/W]

모델명 : 인텔 ISP2150 (인텔 조립서버라고 많이 부름)

CPU : PIII 800MHz *2 (듀얼CPU)

Memory : 1024Gbytes

DISK : 9Gbytes*1, 72Gbytes*1 (모두 SCSI방식, 72G NetFlow데이터 쌓임)

[S/W]

OS : Redhat Linux 7.2

설치패키지 : Linux설치 시 대부분의 패키지 설치(게임 관련 패키지 제외)

 

2)      프로그램 설치순서 및 역할

Apache

웹서버

 

Perl5

Perl로 작성된 프로그램 인터프리터

RRDTool

분석된 Flow데이터를 저장하는 DB파일

Flow-tools

flow 데이터를 수집하는 collector

Perl Modules

Perl 추가 모듈

Korn Shell

CUFlow 프로그램에서 사용

FlowScan

수집된 flow데이터를 분석하여 보고서 작성

CUFlow

보고서 종류 중 하나. 다른 종류로써 CampusIO SubNetIO가 있고 서로 혼용해서 사용가능

 

 

3)      설치

Apache Linux 설치 시 패키지로 설치하거나 최신버전을 다운받아 설치하면 된다.

Perl5역시 Apache와 동일한 방법으로 설치하면 된다.

RRDTool

다운받기

www.rrdtool.org 에서 stable버전인’rrdtool.tar.gz’ 받음

설치

tar –zxvf rrdtool.tar.gz ('rrdtool-1.0.43’ 디렉토리 생성, 버전에 따라 다름)

cd rrdtool-1.0.43

./configure –enable-shared –prefix=/usr/local/rrdtool

make install site-perl-install

 

Flow-tools

다운받기

http://www.splintered.net/sw/flow-tools/

설치

tar –zxvf flow-tools-0.66.tar.gz

cd flow-tools-0.66

./configure; make; make install

* 관련 파일들이 ‘/usr/local/netflow’ 디렉토리에 설치된다.

 

Perl Modules

CPAN Shell 방식으로 설치할 수도 있고, 관련 Module을 다운받아서 설치 할 수도 있다. 여기서는 관련 Module들을 다운받아 설치한다. , ConfigReader는 다른방식으로 설치한다.

다운받기

http://search.cpan.org/search?dist=Boulder

http://search.cpan.org/search?dist=ConfigReader

http://search.cpan.org/search?dist=HTML-Table

http://net.doit.wisc.edu/~plonka/Net-Patricia/

http://net.doit.wisc.edu/~plonka/Cflow/

설치

(Cflow)

tar –zxvf Cflow-1.051.tar.gz

cd Cflow-1.051

perl Makefile.PL

make; make test; make install

* 다른 Module들도 같은 방식으로 설치

설치

(ConfigReader)

ConfigReader Makefile.PL 파일이 없으므로, REAME 파일 참조해서

- You'll find documentation in ConfigReader.pod, as well as in the source files. The *.pm files should be installed in a "ConfigReader" subdirectory on your Perl include path. -

 

/usr/lib/perl5/5.8.0/ConfigReader 디렉토리를 만들어서 *.pm 복사하고,

/usr/lib/perl5/site_perl/5.8.0/ConfigReader 디렉토리도 만들어서 *.pm 복사하면 된다.

 

tar -zxvf ConfigReader-0.5.tar.gz

cd ConfigReader-0.5

cd /usr/lib/perl5/5.8.0

mkdir ConfigReader

cd ConfigReader

cp /home/src/ConfigReader-0.5/* .

 

Korn Shell

다운받기

Linux설치 CD#2 RPM디렉토리나

http://www.kornshell.com

설치

rpm –Uvh pdksh-5.2.14-16.i386.rpm

 

FlowScan

다운받기

http://net.doit.wisc.edu/~plonka/FlowScan/

설치

(‘root’계정이 아닌 일반 계정으로 설치할 것을 권고)

tar -zxvf FlowScan-1.006.tar.gz

cd FlowScan-1.006

./configure --prefix=/var/netflow

make

make -n install

make install

cd cf

cp flowscan.cf /var/netflow/bin

 

CUFlow (일반계정으로 설치 계속)

다운받기

http://www.columbia.edu/acis/networks/advanced/CUFlow/

설치

tar –zxvf CUFlow-1.4.tgz

cd CUFlow-1.4

cp CUFlow.* /var/netflow/bin/

 

☞ 자, 이제 NetFlow데이터를 수집하고 가공하기 위해 필요한 프로그램 설치는 끝났다. 그럼 실제 라우터나 스위치에서 NetFlow 데이터를 FlowScan서버로 보내는 방법과 이를 서버에서 처리하기 위한 사전 환경설정에 대해서 알아보자.

 

3.   NetFlow 데이터 보내기

1)      시스코 라우터 설정 (여기서는 시스코7513 라우터에서 설정)

 

#Global-mode

ip flow-export version 5 peer-as

ip flow-export destination x.x.x.x y (x.x.x.x –collector’s ip주소 / y -port번호, 보통 FlowScan프로그램은 2055/UDP를 사용한다.)

#Interface-mode

ip route-cache flow

 

2)      확인 (아래 flows 개수가 증가하는 지 확인)

7513#sh ip flow export

Flow export is enabled

  Exporting flows to x.x.x.x (y)

  Exporting using source IP address x.x.x.x

  Version 5 flow records, peer-as

  439795660 flows exported in 16392366 udp datagrams

  0 flows failed due to lack of export packet

 

4.   FlowScan서버 환경구성

 

1)      flow-tools

flow파일 및 RRD파일이 저장될 디렉토리 생성

#mkdir –p /var/netflow/

#mkdir –p /var/netflow/ft

#mkdir –p /var/netflow/rrds

#mkdir –p /var/netflow/scoreboard

/usr/local/netflow/bin 밑에 export라는 파일을 만들고 소유권한을 ‘chmod a+x export’로 준다.

#cd /usr/local/netflow/bin

#touch export

#chmod a+w export

 

export 파일을 아래와 같이 편집한다.

#!/usr/bin/perl

$file = $ARGV[0];

if ( $file =~ /.*ft-v05\.(\d\d\d\d)-(\d\d)-(\d\d)\.(\d\d)(\d\d)(\d\d)/ ){
$cflowfile = "flows.".$1.$2.$3."_".$4.":".$5.":".$6;
$command = "/usr/local/netflow/bin/flow-export -f0 < $file > /var/netflow/$cflowfile";
print "$command\n";
system($command);
}else

 

tcpdump flow 데이터가 들어오는지 확인

#tcpdump –n udp port 2055

ð       라우터로부터 NetFlow데이터를 정상적으로 받는지 확인. 만일 스크롤되는 데이터가 없다면 라우터의 NetFlow 설정부터 확인

 

NetFlow 캡쳐하기

#/usr/local/netflow/bin/flow-capture -w /var/netflow/ft 0/0/2055 -S5 -V5 -E1G -n 287 -N 0 -R /usr/local/netflow/bin/export

 

* flow-capture프로그램 옵션 설명

·        

-w /var/netflow/ft : flow-capture가 캡쳐한 flow 파일이 저장되는 장소

·       

0/0/2055 : local IP/remote IP/port번호, 0 any IP를 의미, 0은 모든 IP 의미

 

2)      flowscan

/var/netflow/bin/flowscan.cf 파일 수정

#ReportClasses 부분  -> 어떤 보고서 형식을 사용할 지

ReportClasses CUFlow

#FlowFileGlob 부분  -> 가공된 NetFlow파일 형식을 지정하는 부분. 예로들면, ‘flows.20031214_17:50:00’과 같은 형식

FlowFileGlob flows.*:*[0-9]

CampusIO.cf와 같은 나머지 FlowScan 파일은 수정할 필요없음.

 

3)      CUFlow

/var/netflow/bin/CUFlow.cf 파일 수정

# Subnet 부분 : 내부에서 사용하는 IP블록, CIDR형식. 여러 줄 가능

Subnet 210.100.64.0/19

Subnet 211.12.160.0/20

 

# Network 부분 : 네트웍 그룹으로써 이 그룹에 대한 트래픽을 모니터링하고 싶은 경우. “Network x.x.x.x/y lable” 형식

Network 210.100.66.0/24,211.12.162.0/24 data_center

 

# OutputDir 부분 : RRD 파일이 저장되는 장소

OutputDir /var/netflow/rrds

 

# Scoreboard/AggregateScore 부분 : 트래픽을 많이 발생시키는 순위에 대한 html파일이 저장되는 부분. Apache에서 이 파일을 링크하도록 구성하면 웹에서 확인 가능

Scoreboard  25  /var/netflow/scoreboard  /var/netflow/scoreboard/toptalkers.html

AggregateScore  25  /var/netflow/rrds/agg.dat  /var/netflow/scoreboard/overall.html

 

# Router 부분 : flow를 발생시키는 라우터 리스트

Router 210.100.64.1 GSR

Router 211.12.160.1 7513

 

☞ 이제 모든 준비가 끝났으므로 FlowScan을 실행시켜 NetFlow데이터가 제대로 쌓이는 지 확인해 보자.

 

5.   FlowScan 실행

 

1)   스크립트 작성#touch /var/netflow/bin/fs.sh;#chmod 755 /var/netflow/bin/fs.sh#vi /var/netflow/bin/fs.sh

#!/bin/sh
# description: Start FlowScan

case "$1" in
'start')
cd /var/netflow/ ; bin/flowscan >>/var/log/flowscan 2>&1 </dev/null & >/dev/null
touch /var/lock/subsys/flowscan.1
;;
'stop')
rm -f /var/lock/subsys/flowscan.1
;;
*)
echo "Usage: $0 { start | stop }"
;;
esac
exit 0

 

2)   flowscan 실행하기#/var/netflow/bin/fs.sh start#tail f /var/log/flowscan (아래와 같이 보이면 성공)

sleep 30...
2002/06/24 03:05:09 working on file flows.20020624_03:00:00...
2002/06/24 03:05:53 FlowScan-1.020 CUFlow: Cflow::find took 44 wallclock secs (43.57 usr + 0.11 sys = 43.68 CPU) for 8729930 flow file bytes, flow hit ratio: 156224/158726
2002/06/24 03:05:56 FlowScan-1.020 CUFlow: report took 3 wallclock secs ( 0.00 usr 0.03 sys + 1.47 cusr 1.30 csys = 2.80 CPU)
sleep 30...
 

3)      flowdumper
   
용도 : FlowScan에 의해 가공된 파일은 RRD형식이므로 cat같은 명령으로는 읽을 수 없다. Flowdumper RRD파일을 텍스트로 변형시켜 보여줌으로 grep과 같은 명령어와 혼합하면 원하는 데이터를 얻을 수 있다.
    사용예 

#flowdumper s flows.20031214_20:45:00 | grep 211.238.196.17

 

4)      CUGrapher.pl
      용도 : RRD파일을 가공해서 그래프로 보여주는 perl프로그램
      CUFlow-1.4 디렉토리에서 아파치의 cgi-bin디렉토리로 복사
      http://yourserver/cgi-bin/CUGrapher.pl 로 접속
      참고사이트
o        http://wwwstats.net.wisc.edu
 o      
http://flows.ikano.com

 

6.      기타 관련 사이트
      http://www.cisco.com/go/fn - This is the Cisco Feature Navigator 

      http://httpd.apache.org/ - This is the home page for Apache. This is the web server that I recommend.
      http://www.rrdtool.org/ - This is the RRDTool home page.
      http://www.splintered.net/sw/flow-tools/ - This is the flow-tools home page.
      http://net.doit.wisc.edu/~plonka/FlowScan/ - This is the FlowScan home page.
      http://www.columbia.edu/acis/networks/advanced/CUFlow/ - This is the CUFlow home page.
      http://net.doit.wisc.edu/~plonka/list/flowscan/ - This is the FlowScan mailing list home page.
      http://wwwstats.net.wisc.edu - Examples of FlowScan and CUFlow.
      http://flows.ikano.com - Another example web site.
      https://www1.columbia.edu/sec/bboard/mj/cuflow-users/ - CUFlow mailing list archive. The mailing list is cuflow-users@columbia.edu.




Netflow 와 분석도구의 활용

출처 : http://www.coconut.co.kr/

네트워크 와 시스템은 정보화 사회의 중추적인 역할을 담당하고 있으며 그 중요성은 날로 커지고 있다.
이에 따라 안전하고 효율적인 네트워크 환경을 위한 관리의 개념이 중요하게 대두되고 있다. 

이 연재를 통해 네트워크 모니터링 툴로 현재 가장 많이 쓰고 있는 MRTG의 한계를 벗어나 특정한
내부의 네트워크 트래픽(Layer4) 모니터링을 사용할 수 있는 내용을 살펴보도록 하겠습니다.

 

Cisco NetFlow기반의 라우터가 인터넷 패킷 흐름을 Flow 정보로 가공하여 다양한 트래픽을 분석하게 됩니다. Flow 정보는 Network-layer 와 Transport-layer 계층의 7 가지의 필드(Source IP address , Destination IP address, Source port number, Destination port number, Layer 3 protocol type, Type of service (ToS), Input logical interface ) 의 값을 가집니다.
Cisco NetFlow 에서는 라우터의 입/출력 인터페이스 번호를 덧붙혀 Flow 규격을 정의 했으며 일정시간 내에 패킷이 도착하지 않으면 Flow 종료를 선언하고, Flow 데이터를 외부 측정서버로 전송하도록 되어있습니다.Flow 규격은 현재 v1 부터 시작하여 v9 까지 존재하는데 그 중 라우터에서 BGP AS가 지원되기 시작한 v5가 현재 가장 많이 사용되고 있습니다. Version 9 기반은 IPv6, MPLS, Multicast 등의 다양한 Flow 포맷들을 실어 보낼 수 있게 하고 있습니다.또한 기존의 UDP 기반의 전송을 TCP 또는 SCTP 전송계층을 이용하도록 하여 신뢰성을 강화 시켰습니다.NetFlow 는 1996년 Cisco Systems. 개발이 되어 사용되고 있지만 현재는 다른 벤더 Enterasys, Juniper, extreme등 에서도 도입하여 사용되고 있습니다.

▶ 우선 Cisco NetFlow 가 설치 되어 있는 Router/Switch 를 찾아야 합니다. 어떤 장비가 NetFlow를 지원하는 지는 다음 URL를 참조 할 수 있습니다.

http://www.cisco.com/warp/public/732/Tech/nmp/docs/netflowoverview.pdf 

네트워크 장비에서 Capture 및 Export 를 수행할 때 모든 패킷에 대해 실시간으로 모니터링을 추가하는 것이므로 CPU 및 메모리 부하를 어느 정도 줄 수 밖에 없으므로 정확한 장비의 성능에 미치는 영향에 대한 정보를 확인해야 하며, 해당 정보는 다음 URL를 참조 할 수 있습니다.

http://www.cisco.com/en/US/tech/tk812/technologies_white_paper0900aecd802a0eb9.shtml

▶ Configuring NetFlow to Capture

Capture 방법은 측정하고자 하는 인터페이스에 Config-Mode 에서 sh ip cache flow 를 입력하면 됩니다.

[ 참고 ]
Protocol : 06 = 0*16^1 + 6*16^0 = 6 (TCP)
목적지포트 : 0089 = 16^3*0 + 16^2*0 + 16^1*8 + 16^0 = 137
▶ Configuring NetFlow to Export Network Traffic Data
NetfFlow 는 Data flow 정보를 메모리에 임시 저장을 하게 됩니다. 만약 기본사이즈로 정해져 있는 메모리 저장한계를 넘어서게 될 경우 처음 저장되어 있던 flow 정보는 삭제하게 되며 만약 15sec flow 가 Inactive 하게 되거나 30분 이상 변화 없이 멈쳐있는 경우 에도 flow 가 삭제됩니다.
이러한 불편한 점을 보안하기 위해 NetFlow Data 를 외부로 Exporting 할 수가 있습니다.

라우터/스위치의 NetFlow가 Enable 되어 있다면, 자동으로 분석서버로 보낼때는 일반적으로 적정 회선용량의 1.5% 대역폭을 점유하게 됩니다.

다음은 라우터/스위치에서 지원하는 NetFlow Data flow 정보를 가공 및 분석하여 웹을 통해 상시적으로 모니터링을 할 수 있는 공개 분석 도구 및 상용도구에 대해서 알아보겠습니다.
NetFlow의 데이터를 분석하여 웹이나 응용프로그램을 모니터링을 할 수 있는 프로그램으로는 아래와 같이 사용이 가능한 대표적인 프로그램들이 있습니다.

1) Caida( Cooperative Association for Internet Data Analysis) (오픈소스)
2) Arbor Networks 사의 PeakFlow (상용)
3) Hewlett Packard (상용)
4) 그 외의 프로그램이나 벤더주소는 아래의 URL 에서 확인 하실 수가 있습니다.
http://www.cisco.com/warp/public/732/Tech/nmp/netflow/partners/
위의 분석도구를 이용한다면 현재의 전체 트래픽 중 TCP , ICMP , UDP가 어느정도 인지, 즉 프로토콜 유형별를 알 수 있다. 또한 트래픽 중에 정상적인 트래픽과 유해트래픽을 판별하여 침해사고 대응 및 비정상적인 다량의 패킷 유입이 된다면 사전에 발견하여 신속한 대처가 이루어 질 수 있을 것입니다.
[그림3] Flowscan 과 RRD를 통한 프로토콜유형별 입/출력 패턴

[그림3] 을 보시면 백본트래픽이 양방향 최대 150Mbbs 정도로 전송되고 있다. In/Out 트래픽들의 프로토콜 유형 형태를 보면 잘 알려진 P2P과 같은 데이터는 특별히 많이 나타나지 않았습니다.또한 잘 알려진 포트를 사용하는 TELNET, SSH 등 응용 프로토콜의 트래픽 양보다 잘 알려지지 않은 포트를 사용하는 트래픽의 점유율이 훨씬 크다는 것을 알 수 있습니다. 이는 다양한 사용자 응용프로그램의 확산과 함께 동적인 포트번호를 사용하는 것들이 많기 때문입니다.

[그림3] 의 왼쪽하단 표를 보시면 웹과 같은 응용프로그램들은 플로우 지속시간이 짧은 작은 플로우들이 많습니다. 하지만 Flow 수는 작은 반면에 Octets 과 Packets 큰 응용(9553,8403)들도 많이 나타나고 있다. 이러한 응용들은 대개 파일 공유 프로그램 패킷으로 추정됩니다.
DoS Traffic Flood Detected by FlowScan

In/Out 트래픽이 40Byte 이하로 급격하게 증가한 현상을 볼 수 있을것입니다. Dos Attack 은 32Byte 내외의 작은패킷으로 구성되는게 일반적이므로 서비스거부공격으로 판단되어 집니다.Inbound 요청이 약 40Byte TCP ACK packets 이며 이 요청을 받은 서버 및 시스템들은 응답으로 약 30Byte TCP RST packets 보내는 수치를 보여주고 있습니다.

Routing Protocol(BGP)를 사용하는 네트워크 장비에서 서로 연결되어 있는AS 구간끼리 가장 많은 트래픽 유발하는 AS Number 별로 분류한 것을 보여주고 있습니다.패킷(웜바이러스)으로 인하여 서버나 네트워크에 불필요한 트래픽이 발생하여 전체 네트워크를 자원의 효율성을 심각하게 저하되는 상황을 방지 할 수 있습니다. 

이와 같이 라우터/스위치에서 제공하는 NetFlow Flow Date 를 이용하여 분석도구를 활용하면 네트워크 장비의 영향을 최소화 하면서 네트워크 관리를 효율적으로 할 수 있는 유용한 관리 시스템을 구축을 할 수 있을 것입니다.아울러 갑작스런 과다 트래픽이나 비정상적인 트래픽이 발생할 경우에도 굳이 전문적인 지식이 없어도 이 그래프를 통해서 트래픽의 특성 및 원인 규명하는 것이 그리 어렵지 않을 것입니다.상용 툴은 공개형 툴보다는 쿼리기능 및 다양한 리포트 기능을 가지고 있으며 사용자가 쉽게 사용할 수 있는 장점을 가지고 있습니다. 하지만 이 모든 툴은 침입탐지시스템(IDS)의 기능을 가지고 있는 것이 아니라 단지 네트워크 모니터링 툴에 불가하다는 것을 인지해야 합니다.

 

인터넷 수동적 트래픽 측정 도구 Flowscan의 설.doc
다운로드

728x90

댓글