주 제 : 미러링스위치와 NTOP을 이용한 트래픽 분석
작성자 : 김마현. mail : mapoo@ㄴㅔㅇㅣ트.컴,
web : http://mapoo.kr
최초작성일 : 2013-07-15,
SerialNo : 20130715A01
< 목 차 >
>
시작말
>
1.
스펙
>
2.
GS108Tv2 스위치 설정
>
3.
리눅스 서버 구성
>
4.
ntop 설치
>
5.
ntop 구동
>
맺음말
n 시작말 :
소호 규모의 네트워크를 운영하면서 발생할 수 있는 인터넷 장애의 90% 이상은 악성코드나 웜바이러스에 감염된 PC 또는 torrent 사용의 과도한 세션으로 인한 공유기 리소스 부족이 원인이다. 정확한
원인 분석을 위해서는 문제의 PC를 찾아야 하는데, 그러기
위해서는 Gateway(공유기)를 통해 흐르는 모든 인터넷
패킷을 스니핑(감청) 해야된다. 일부 스니핑(포트미러링) 기능을
갖춘 공유기의 경우 별도의 스위치 없이 패킷분석이 가능하지만, 대부분 그런 기능이 없기 때문에 포트미러링이
지원되는 스위치를 통해 분석을 하게 된다. 또한 ntop 이라는
네트워크 분석 유틸리티를 운영하기 위해서 NIC가 2개 이상인
리눅스 시스템이 필요하다.
이 문서대로 구성시 구성도는 아래와 같다.
1.
스펙
1) H/W
CPU : Intel E3400
RAM : 512Mb
M/B : Foxconn G31MX-K
HDD : SATA3 1TB 7200RPM
USB LAN : ASIX-88772 칩셋 기반의 USB 2.0 100Mbps NIC
Switch : Netgear 8-port Gigabit Smart Switch
GS108Tv2
2) S/W
OS : CentOS 4.7 ServerCD 32bit
NTOP : ntop-3.3.9
2.
GS108Tv2 스위치
설정
1) 펌웨어 업데이트 및 시간서버
설정.
2013년 7월 기준으로 V5.0.5.4 펌웨어가 탑재되어 있다. 해당 펌웨어는 Time 서버(SNTP)
설정 후 리부팅하면 시간 동기화가 제대로 반영이 안되는 버그가 있다. Netgear에서
제공하는 SmartControlCenterManager 유틸리티를 통해 V5.0.5.10 으로 펌웨어를 업데이트한다. 펌웨어 파일전송까지 포함하여
업데이트 시간은 약 5분정도 소요된다. 펌웨어 업데이트 후 Factory Default를 한번 해줘야한다. 안그러면 오작동의 가능성이 있다.
업데이트 후 System - Management - Time -
SNTP Server Configuration 에서 kr.pool.ntp.org를 입력
후 Apply. 그리고 SNTP Global Configuration에서 SNTP 를 선택 하고 Time Zone을 UTC+09:00 선택하고 Apply 한다. 시간이 조금 흐르면 현재 시각이 스위치 시스템에 반영된다.
2) Port
Mirroring 설정
SmartControlCenterManager
유틸리티를 통해 스위치의 IP를 알아낸
후 Webrowser를 통해 스위치 설정창에 접근한다.
Monitoring -
Port Mirroring 에서 g2 ~ g8
까지 선택 후 Destination Port에 g1을
입력 후 Session Mode 에서 Enable 선택 - Apply : 이제부터 2 ~ 8번 포트의 모든 패킷이 1번 포트로 미러링 된다.
3.
리눅스 서버 구성
1) 리눅스 서버
1> OS
Cent OS 4.x 32bit 기반의 nFile 서버
2> 패키지 위치
ntop 패키지가
있는 디렉토리는 /usr/local/ntop-Pack으로 한다.
이 문서에 명시된 패키지들은 인터넷을 통해 다운로드 할 것.
3> NIC
정보
eth0 - ip : 192.168.0.254, subnet :
255.255.255.0, gateway : 192.168.0.1(라우터 ip) à 외부 통신용
eth1 - 설정하지 않음. à 미러링된 패킷 수신용
2) USB
랜카드
설치
1> 랜카드 장착
서버의 USB 포트에 랜카드 삽입 (온라인 상태에서
설치가 가능하다)
2> 드라이버 설치
$ cd /usr/local/ntop-Pack
$ unzip AX88772_772A_178_LINUX2.6.9_REV122.zip
$ cd AX88772_772A_LINUX2.6.9_REV122
$ make
$ make install
$ depmod -a
$ modprobe usbnet
3> 기존 네트워크 스크립트 파일
복사 후 수정 (파일이 없어도 되지만 /etc.init.d/ntop stop 시 오류 방지)
$ cp
/etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
$ vi /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
ONBOOT=no
BOOTPROTO=static
4> 장치 구동
$ ifconfig eth1 up
4.
ntop 설치
1) 의존성 패키지 설치
1> autogen.sh
을
위한 패키지
$ rpm -ivh autoconf-2.59-5.noarch.rpm
automake-1.9.2-3.noarch.rpm libtool-1.5.6-5.el4_8.i386.rpm
libtool-libs-1.5.6-5.el4_8.i386.rpm gdbm-devel-1.8.0-24.i386.rpm
2> ntop
이
필요로하는 패키지
$ rpm -ivh rrdtool-1.2.23-1.el4.rf.i386.rpm
rrdtool-devel-1.2.23-1.el4.rf.i386.rpm perl-rrdtool-1.2.23-1.el4.rf.i386.rpm
perl-Time-HiRes-1.55-3.i386.rpm libart_lgpl-2.3.16-3.i386.rpm
2) ntop
컴파일
$ cd /usr/local/ntop-Pack
$ tar zxvf ntop-3.3.9.tar.gz
$ cd ntop-3.3.9
$ ln -s
/usr/local/ntop-Pack/ntop-3.3.9/GeoIP-1.4.8/libGeoIP/.libs/
/usr/local/ntop-Pack/ntop-3.3.9/GeoIP-1.4.8/libGeoIP/.libs/.libs à make 시 에러 방지를 위함
$ ./autogen.sh
$ ./configure --prefix=/usr/local/ntop-339
$ make
$ make install
3) 설정
1> 유저 생성 및 권한 조정
$ groupadd -g 98 ntop
$ useradd -g 98 -u 98 -M ntop
$ chown -R ntop.ntop /usr/local/ntop-339/var à 권한이 없을 경우 rrd-tool 등이
미 실행됨
$ chown -R ntop.ntop /usr/local/ntop-339/share/ntop à 권한이 없을 경우 ntop 구동이
안될 수 있음
2> ntop
init 복사
$ cp
/usr/local/ntop-Pack/ntop-3.3.9/packages/RedHat/ntop.init /etc/init.d/ntop
3> ntop
init 수정
* 기본적인 ntop.init 스크립트를 사용하면 동작이 되지 않는다. 따라서
아래처럼 4곳을 수정 해야된다.
$ vi /etc/init.d/ntop
conf="/usr/local/ntop-339/etc/${name}${instance}.conf" à 94라인
prog="/usr/local/ntop-339/bin/ntop" à 97라인
daemon $prog
@/usr/local/ntop-339/etc/ntop.conf -d -L
à
543라인
pids=`ps axf | grep
'\/usr\/local\/ntop-339\/bin\/ntop' à 582 라인
4> ntop.conf
수정
* /usr/local/ntop-Pack/ntop-3.3.9/packages/RedHat/ntop.conf.sample
파일을 참고해도 된다.
$ vi /usr/local/ntop-339/etc/ntop.conf
--user ntop
--db-file-path /usr/local/ntop-339/var/ntop/
--interface eth1
--local-subnets 192.168.0.0/24
--http-server 3003
5.
ntop 구동
1) ntop
admin 비번 설정
$ /usr/local/ntop-339/bin/ntop -P /usr/local/ntop-339/share/ntop
-u ntop -A
2) 스크립트 구동
$ /etc/init.d/ntop start
3) 웹으로 확인
같은 네크워크에 위치한 PC의 웹브라우져에서 http://192.168.0.254:3003 입력
아래는 ntop이 웹을 통해 보여주는 것들의 일부를 캡쳐한
것들이다.
1> 접속시 첫 화면
2> 전체적인 시간별 트래픽에
대한 그래프 - rrdtool이 그래프를 구현해 준다.
3> 포트별 트래픽에 대한 그래프
4> 트래픽 대역폭별 사용량 통계
4) 문제의 PC 발견시
특정 PC가 다중의 세션과 과도한 트래픽을 유발하여 라우터에
부하를 주는것으로 감지되면 해당 PC의 인터넷 라우팅을 제한하도록 한다. 방법은 라우터(공유기)의
라우팅테이블을 설정하여 해당 PC의 IP를 null 라우팅 세팅을 하면되고, 제한 후 반응이 어떠한지 살펴보고
해당 PC에 대한 후속 조치를 하면 되겠다.
n 맺음말 :
분석을 위해 웹GUI가 아닌 CUI 인터페이스를 통해서도 가능하지만 특성상 GUI가 훨씬 직관적이고
빠른 분석이 가능하다. 그리고 포트미러링 기능이 없는 스위치 없이 리눅스서버에 NIC를 하나 더 추가하여 NIC 두 개를 브릿지모드로 설정 후 분석도
가능하다. 또한 흘러간 패킷에 대해 좀 더 자세한 분석이 필요할 경우엔 패킷 덤프를 한 후 와이어샤크나
이더리얼과 같은 패킷분석툴을 이용하여 분석하면 된다.
이 문서에서는 gateway와 네트워크가
하나 일때를 가정으로 구성한 것이며, 다중일 경우 구성방식은 달라진다.
또한 이 구성으로는 gateway를 통해 외부로 나가는 패킷에 대해서만 분석 가능고 내부
네트워크상에서 흐르는 패킷에 대한 분석은 안된다. 하지만 대부분의 문제는 gateway 윗단으로 향하는 패킷으로 인해 발생을 한다.
이상으로 ntop을 통해 실시간으로 네트워크
상의 트래픽을 자세히 분석할 수 있으며 분석 결과를 토대로 내부 네트워크 장비에 의한 인터넷 장애발생 요소 제거방법에 대해 알아 보았다.