레이블이 네트워크 모니터인 게시물을 표시합니다. 모든 게시물 표시
레이블이 네트워크 모니터인 게시물을 표시합니다. 모든 게시물 표시

2013년 1월 22일 화요일

콘솔 기반의 리눅스/BSD 네트워크 모니터 vnStat

vnStat 는 Linux, BSD 계열의 네트워크 트래픽 모니터이다. 콘솔기반의 도구로 간단하게 사용가능하며, 패킷 스니핑 도구와 같이 직접적으로 트래픽을 모니터 하지 않고 커널에서 제공해주는 네트워크 인터페이스 정보를 기반으로 정보를 보여준다. 직접 스니핑을 하지 않으므로 시스템 자원 사용면에서는 가볍다. 리눅스에서 사용하기 위해서는 커널 2.2 이상 되어야 한다.

주요기능으로는

- 루트 권한 없이도 사용할 수 있다.
- 낮은 시스템 자원 사용
- 다양한 출력 옵션 지원 (요약, 시간, 일,월,주 별로 제공 등)
- libgd 를 이용한 png 이미지 출력
- 동시에 여러개의 인터페이스를 모니터링 할 수 있음
- 빠르고 간단하게 설치하여 사용할 수 있다.

소스는 다음 경로에서 받을 수 있다.
http://humdi.net/vnstat/vnstat-1.11.tar.gz

사용할 수 있는 옵션은 아래와 같으며, 워낙 간결해서 옵션 이름만 보아도 어떤 기능인지 추측이 될 것이다.

$ vnstat --help
 vnStat 1.11 by Teemu Toivola 

         -q,  --query          query database
         -h,  --hours          show hours
         -d,  --days           show days
         -m,  --months         show months
         -w,  --weeks          show weeks
         -t,  --top10          show top10
         -s,  --short          use short output
         -u,  --update         update database
         -i,  --iface          select interface (default: eth0)
         -?,  --help           short help
         -v,  --version        show version
         -tr, --traffic        calculate traffic
         -ru, --rateunit       swap configured rate unit
         -l,  --live           show transfer rate in real time

See also "--longhelp" for complete options list and "man vnstat".

-h 옵션을 사용해 시간대별로 트래픽 현황을 표시한 것이다.

$ vnstat -h
 eth1                                                                     21:25
  ^           r
  |           r
  |           r                                            r
  |        r  r                                            r
  |      t r  r                                            r            t
  |     rt r  r                                            r  r      t  t
  |     rt r  r                                            r  r      t  t
  |     rt r  r         t                      r           r  r      t  t
  |     rt r  rt        t                   r  r        r  rt rt  t rt rt  t
  |  rt rt rt rt rt r  rt r              r  r  r  r  rt rt rt rt rt rt rt  t
 -+--------------------------------------------------------------------------->
  |  22 23 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21

 h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)      h  rx (KiB)   tx (KiB)
22    250,801    205,825    06    100,529     49,054    14    205,356    157,877
23    705,144    885,844    07     52,806     44,130    15    258,228    226,265
00    928,792    224,789    08     52,298     45,230    16  1,028,043    343,843
01  1,271,180    292,260    09     70,396     61,719    17    755,804    293,309
02    212,296    186,481    10    155,502     72,451    18    235,691    284,886
03    165,931     91,943    11    266,673     92,497    19    275,554    658,386
04    150,997    437,071    12    392,244    122,185    20    307,819    850,813
05    180,170     56,391    13    133,829    120,555    21    117,474    292,787

일별로 트래픽 현황을 살펴보는 것이다.

$ vnstat -d

 eth1  /  daily

         day         rx      |     tx      |    total    |   avg. rate
     ------------------------+-------------+-------------+---------------
      07/03/09     10.90 GiB |    6.39 GiB |   17.29 GiB |    1.68 Mbit/s
      07/04/09     21.21 GiB |    5.65 GiB |   26.87 GiB |    2.61 Mbit/s
      07/05/09     10.58 GiB |    6.67 GiB |   17.25 GiB |    1.67 Mbit/s
      07/06/09     49.90 GiB |    9.69 GiB |   59.59 GiB |    5.79 Mbit/s

주별로도 트래픽 현황을 볼 수 있다.


$ vnstat -w

 eth1  /  weekly

                      rx      |     tx      |    total    |   avg. rate
   ---------------------------+-------------+-------------+---------------
    last 7 days    114.11 GiB |   56.58 GiB |  170.69 GiB |    2.38 Mbit/s
      last week    137.79 GiB |   58.96 GiB |  196.75 GiB |    2.73 Mbit/s
   current week    102.60 GiB |   49.92 GiB |  152.52 GiB |    2.49 Mbit/s
   ---------------------------+-------------+-------------+---------------
      estimated    121.38 GiB |   59.06 GiB |  180.44 GiB |


다음은 이미지 출력 기능을 이용해 만들어 낸 것이다.

summary


vnStat 의 장점으로는 PHP 웹 기반으로 구현된 것도 있고 윈도우 기반의 SystrayIcon 도 있다. 이미지 출력 또한 지원한다.( http://humdi.net/vnstat/cgidemo/ )
루트 권한 없이 가볍게 트래픽 현황을 모니터링 하고 싶은 분들에게 추천해 본다.

[참고]
1. http://humdi.net/vnstat/


2012년 11월 16일 금요일

Capstats 로 네트워크 인터페이스 통계 정보 수집하기

Capstats 는 Bro-IDS 에서 배포하는 작은 인터페이스 상태 정보 수집 도구이다. libpcap 을 이용한 것으로 네트워크 인터페이스에서 발생하는 트래픽 정보를 간단히 보여준다. 다운로드는 다음의 경로에서 할 수 있다.

http://www.bro-ids.org/downloads/release/capstats-0.18.tar.gz

컴파일을 하기 위해서는 cmake 가 설치되어 있어야 한다.  우분투 계열이면 apt-get 으로 쉽게 설치 가능하다.

# apt-get install cmake

그리고, 컴파일을 다음과정을 거치면 어려움 없이 쉽게 컴파일이 완료된다.

# ./configure
# make
# make install

사용방법 또한 아주 간단하다. 인터페이스를 지정하고 -I 로 얼마 주기로 정보를 출력할 것인지 시간만 정해주면 된다. -f 를 이용하면 BPF 스타일의 필터를 사용할 수 있고 -n 은 지정한 값 만큼만 출력해주고 중단한다. -w 를 사용하면 패킷을 파일로도 저장할 수 있어, 간단히 패킷 덤프용으로도 사용가능하다.

# capstats -i eth0 -I 1

1352159800.380532 pkts=14 kpps=0.0 kbytes=6 mbps=0.1 nic_pkts=2906 nic_drops=0 u=0 t=14 i=0 o=0 nonip=0
1352159801.380637 pkts=2 kpps=0.0 kbytes=0 mbps=0.0 nic_pkts=2908 nic_drops=0 u=0 t=2 i=0 o=0 nonip=0
1352159802.380823 pkts=10 kpps=0.0 kbytes=0 mbps=0.0 nic_pkts=2918 nic_drops=0 u=2 t=8 i=0 o=0 nonip=0
^C1352159803.374389 pkts=3 kpps=0.0 kbytes=0 mbps=0.0 nic_pkts=2921 nic_drops=0 u=0 t=2 i=0 o=0 nonip=1
1352159803.374402
=== Total

1352159803.374442 pkts=2921 kpps=0.0 kbytes=984 mbps=0.0 nic_pkts=2921 nic_drops=0 u=398 t=2299 i=0 o=14 nonip=210


위 예는 인터페이스 eth0 을 모니터링 하고 -I 로 1초마다 정보를 출력하도록 설정한 것이다. 라인별 각 필드 정보는 다음과 같다:

pkts: Interval 기간에 capstats 가 본 패킷 개수
kpps: 초당 패킷 개수
kbytes: 지정된 Interval 동안 발생한 KBytes
mbps: 초당 Mbits
nic_pkts: libcap 의 pcap_stats() 에 보고된 패킷 개수
nic_drops:libpcap 의  pcap_stats() 에 보고된 Drop 패킷 개수
u: UDP 패킷 개수
t: TCP 패킷 개수
i: ICMP 패킷 개수
nonip: non-IP 패킷 개수


간단하게 네트워크 인터페이스 상황을 모니터링할때 유용하다.

[참고]
1. Capstats 추가 정보

http://www.bro-ids.org/documentation/components/capstats/README.html

2012년 5월 2일 수요일

*NIX 콘솔 기반 네트워크 사용량 표시 도구 - nload

현재 네트워크 사용량을 표시해주는 nload 를 소개한다. 사실 너무나도 많은 도구들이 있는데, 그래도 이런 형태의 도구는 있다고 알아두면 좋기 때문에 이름만은 기억해 두자. 'nload' 는 콘솔 기반의 프로그램으로 실시간으로 네트워크 상태를 표시해 준다. 아스키 형태의 그래프로도 말이다.


크게 Incoming/Outgoing 으로 화면이 나뉘어져 있으며 옵션은 다음과 같다.


nload  [-a period] [-i max_scaling] [-m] [-o max_scaling] [-t interval]
       [-u h|H|b|B|k|K|m|M|g|G] [-U h|H|b|B|k|K|m|M|g|G] [devices]

디바이스가 여러개 있는 경우 -m 으로 한번에 표시할 수 있으며, -t 로 화면의 Refresh 시간을 지정할 수 있다. 기본 값은 500 밀리세컨드 이다. 참고로 만약 100 밀리세컨드 이하로 값을 지정하면 빈번하게 계산해야 하기 때문에 부정확해 질 수도 있다는 점은 알아두길 바란다.

-u 로 트래픽 수치 표현 방법을 지정할 수 있다. 비트, 킬로비트, 메가 비트등의 옵션이 있다.

F2 키를 누르면 옵션 화면이 나타나서 설정 값등을 볼 수 있으며, 이동키를 통해 움직일 수도 있다.

다운로드는 다음 경로에서 가능하다

http://www.roland-riegel.de/nload/

데비안 계열 사용자는 apg-get install nload 로 쉽게 설치할 수 있다.

2011년 9월 16일 금요일

네트워크 트래픽 모니터링 도구 - DarkStat


네트워크 트래픽 상태를 살펴볼 수 있는 도구인 'darkstat' 를 소개한다. 기존에 소개하였던 콘솔 기반의 모니터링 도구가 아닌 웹 기반으로 트래픽 상태 정보를 살펴볼 수 있다. 간단하게 실행시켜 놓고, 브라우저를 통해 트래픽 양을 그래프로 쉽게 알 수 있다.

프로그램 자체의 크기도 크지 않고, 작고 안정적이며, 웹 서버 기능을 내장하고 있어서 앞서 언급했듯이 브라우저를 통해 정보를 확인할 수 있는 것이 장점이다. 이외 트래픽 그래프, 호스트별 보고기능, 호스트별 발생한 포트 정보등이 제공된다.

일단, 해당 정보에 대한 것은 다음 사이트를 방문하면 된다.

http://unix4lyfe.org/darkstat/

소스 컴파일도 아래와 같이 configure 를 통해 쉽게 컴파일이 가능하다.

# ./configure
# make
or
# apt-get install darkstat

설치된 후 실행은 네트워크 인터페이스 정도 지정하는 것 정도로 실행할 수 있다.

# darkstat -i eth0

포트번호를 지정한다면,

# darkstat -i eth0 -p 8080 과 같이 하면 된다.

이후, 브라우저를 통해 8080 포트를 접속해 보면 네트워크 상태 정보를 볼 수 있다.

기본적인 사용은 -i or -p 옵션 정도만 지정하여도 충분하고, 이외 추가적으로 사용 가능한 옵션들이 더욱 많은 아래 기본 사용방법만 보아도 대충 어떤 기능인지 추측이 가능할 것이다. 자세한 것은 'man darkstat' 를 통해 보면 세부적으로 알 수 있다.


# darkstat
darkstat 3.0.713 (built with libpcap 2.4)

usage: darkstat [ -i interface ]
                [ -r file ]
                [ --snaplen bytes ]
                [ --pppoe ]
                [ --syslog ]
                [ --verbose ]
                [ --no-daemon ]
                [ --no-promisc ]
                [ --no-dns ]
                [ --no-macs ]
                [ --no-lastseen ]
                [ -p port ]
                [ -b bindaddr ]
                [ -f filter ]
                [ -l network/netmask ]
                [ --chroot dir ]
                [ --user username ]
                [ --daylog filename ]
                [ --import filename ]
                [ --export filename ]
                [ --pidfile filename ]
                [ --hosts-max count ]
                [ --hosts-keep count ]
                [ --ports-max count ]
                [ --ports-keep count ]
                [ --highest-port port ]
                [ --wait secs ]
                [ --hexdump ]

Please refer to the darkstat(8) manual page for further
documentation and usage examples.

이 도구는 전체적인 트래픽 현황등을 파악하는 용도지, 와이어샤크와 같이 패킷을 분석하는 도구는 아니다. 즉, 이런 형태의 모니터링 도구를 통해 이상상황등을 감지하는데는 유용하게 사용할 수 있다.

2010년 9월 5일 일요일

ProcNetMonitor 로 트래픽을 유발하는 프로세스를 쉽게 찾아보자.

윈도우에서 사용 가능한 프로세스 네트워크 모니터 도구가 있어 소개한다. 여러가지 도구들이 있긴 한데, 오늘은 이 도구가 사용하기도 아주 쉽고, 유용할거 같다는 생각이 든다. 윈도우에서 악성코드에 감염되었다고 가정해보자.  그리고, 트래픽 확인을 위해 와이어샤크를 통해 네트워크 트래픽이 발생되고 있음을 확인한다. 그런데, 윈도우의 어떤 프로세스가 이 트래픽을 유발하고 있는지 알기가 어려운 것이다. 특정 프로세스에서 발생하면 쉬운데,
정상 서비스 프로세스에 인젝션 되어 발생되면 까다로워진다.

아래 프로그램은 각 프로세스별로 TCP, UDP, 연결 카운트를 보여주고 있다. 즉, 이 카운트가 크게 증가되었거나 하면 해당 프로세스를 의심해 볼 수 있다. 프로세스를 클릭하여 살펴보면, 어디로 연결되었는지 세부 정보를 확인해 볼 수가 있다. 이 도구의 사용방법을 설명할 것도 없이 워낙에 심플해서, 처음 이런류의 프로그램을 접하는 분들이라도 알 수 있을 정도이다.


Properties 를 누르면 프로세스에 대한 속성을 확인해 볼 수 있으며, Export 를 하면 프로세스 리스트를 HTML 파일로 저장할 수 있다.  다운로드는 다음의 경로에서 할 수 있다.


그리고, 이 프로그램이외에 분석에 유용하게 사용할 만한 도구들도 몇가지 있으므로, 한번 살펴보기 바란다.
패킷을 분석하는데는 그 목적이 있고, 그 목적을 달성하기 까지는 용도에 따라서 이러한 도구가 유용하게 사용될 것이다.

2009년 12월 16일 수요일

마이크로소프트 네트워크 모니터의 프로세스별 통신 상태

와이어샤크가 패킷 분석에 대중적으로 이용되고 있지만, MS 에서도 그에 대응하기 위한 패킷 분석
프로그램을 지속적으로 개발하고 있다. MS 프로그램이 많이 사용되고 있고, 개발된 응용프로그램의
통신 상태를 살펴보기 위한 도구가 필요하기도 때문일 것이다. 메인 화면을 살짝 들여다 보면 아래의 그림과
같다. 와이어샤크와 비교해 강점으로 뽑힐 수 있는 것은 좌측 화면의 Network Conversations 부분이다.
프로세스별로 나누어 패킷 형태를 보여주기 때문에, 특정한 프로그램의 통신 상태 또는 악성코드 감염에 의한
패킷 발생시 어떤 프로세스가 패킷을 유발하고 있는지 쉽게 파악할 수 가 있다.

물론, 악성코드나 기타 프로그램이 svchost 나 일반적인 프로그램에 Injection 되어 사용된다면 파악이
좀더 힘들수 도 있지만, 어찌 되었든 이것은 다른 패킷 분석기에 없는 강점임은 분명하다.


다음은 출력필터를 간단하게 들여다 본 것으로 TCP 페이로드 중 GET 이라는 문자열이 들어간 것만
필터를 적용하기 위한 것이다. 필터 내용을 입력하다 보면 쉽게 사용할 수 있도록 필터 문구가 나타나니
편리하게 이용할 수 있다.

분석에 유용한 다양한 기능은 차차 소개하도록 하겠다.