'시스템/TCP_IP Network'에 해당되는 글 10건

  1. 2011.01.27 DAS & NAS & SAN
  2. 2010.09.06 프로토콜/명령어 요약 포스터
  3. 2010.08.17 [리눅스] TCP Dump 명령어 활용
  4. 2010.06.13 서브넷 마스크 설정하기(Subnet Mask)
  5. 2010.05.10 [덤프] TCP dump 사용방법
시스템/TCP_IP Network2011. 1. 27. 02:19

DAS [Direct Attached Storage]

서버와 전용 케이블로 연결한 외장형 저장 장치. 서버/클라이언트 환경에서의 부족한 저장 공간을 가장 쉽게 확보하는 방법으로 서버 자체에 물리적으로 외부 저장 장치를 연결하는 것이다. 네트워크에 연결된 각 서버에 외부 저장 장치를 추가함으로서 필요한 데이터를 물리적으로 가까운 곳에서 접근할 수 있고 확장이 용이하다. 하지만 데이터의 증가에 따른 외부 저장 장치의 계속적인 추가는 서버의 효율성을 저하시키는 문제가 있다. 또 다른 문제는 네트워크상의 서버가 다운되는 경우에는 중지된 서버에 장착된 저장 장치도 사용할 수 없게 되어 중앙 집중식 시스템과 같은 취약점이 있다.


NAS [Network Attached Storage]


File Server는 파일공유와 파일 서비스라는 서버로서의 기능으로부터 시작된 솔루션이다. 네트워크가 발달하지 못하고 데이터 양이 많지않던 시절에 부서별로 파일공유를 위해 또는 파일에 대한 관리의 편의를 위해 시작되었던 솔루션으로 파일공유 및 파일 서비스 기능을 위해서는 범용OS (Unix 또는 Windows NT)에서 제공되는 일부분의 기능(NFS 또는 CIFS)을 이용하였고 데이터 저장장치는 주로 서버에 내장된 디스크를 사용하였다. 그리고 서버/클라이언트 구조로 파일서버가 서버로서의 역할을 각 End-user의 단말(PC 또는 Workstation)이 클라이언트로서의 역할을 하도록 구현되었다. 그런데 세월이 흐르면서 사용자 환경이 변하였다. 파일공유 및 파일 서비스를 위한 데이터 용량이 폭증하였다는 점, 변화는 파일공유 및 파일서비스를 위한 I/O가 보다 높은 대역폭과 속도를 요구한다는 점이다.
파일서버의 한계를 극복한 것이 NAS(Network Attached Storage)이다. NAS는 저장장치의 기능을 강조한 것으로 저장장치 부분의 하드웨어적 성능/기능뿐 아니라 소프트웨어적 기능이 예전의 파일서버와는 차별화 되었다. 그리고 I/O측면에서도 범용 OS대신에 파일서비스에 특화된 전용의 OS를 채용함으로써 보다 나은 I/O 성능을 제공하고 있다. 그리고 역할에 있어서도 기존의 파일서버가 End-user 단말에 대한 파일서비스를 제공하는 역할을 강조한 반면 NAS End-user단말에 대한 기존 파일서버의 역할뿐만 아니라 애플리케이션 서버의 데이터를 네트웍(LAN)을 통해 저장하여 네트웍이 연결된 곳에서는 언제 어디서라도 스토리지를 접속해서 사용할 수 있는 애플리케이션 서버에 대한 저장장치로서의 역할도 하고 있다
NAS를 이름 그대로 해석해 보면 네트웍(LAN)에 접속된 스토리지이다. 과연 스토리지를 LAN에 붙일수 있을까? 말을 바꾸어 보자. 스토리지는 SCSI 프로토콜을 기반으로 통신을 하고 LAN TCP/IP 프로토콜을 기반으로 통신을 한다.





NAS 장점은 파일공유다. 여러 애플리케이션 서버들이 LAN 통해 NFS또는 CIFS 같은 파일 서비스 프로토콜로 전용파일서버에 접속하여 파일에 대한 서비스를 요청하면 단일 파일서버가 요청에 따라 파일서비스를 하게 되므로써 NAS 저장된 파일이 모두 전용파일서버 한곳에서 관리됨으로써 파일들에 관한 정보들의 Consistency라든가 locking 문제가 없이 파일을 여러 서버들이 공유할 있게 된다.
NAS의 단점은 성능과 DB에서 사용할 때의 문제점이다. 성능상의 단점중의 한 요인은 Latency Time이다. NAS는 애플리케이션 서버에서 전용파일서버까지 네트웍으로 접속되고 전용파일서버에서 스토리지사이는 채널로 접속되어 채널로만 접속되는 DAS또는 SAN에 비해 접속단계가 늘어남으로서 Latency Time이 더 걸리게 된다. 물론 NAS LAN에서의 Latency time에서 단점을 Cache에서 그리고 저장장치 부문에서의 성능으로 보충하여 JBOD(Just Bunch of Disk: 저급의 디스크 스토리지를 의미)나 성능이 떨어지는 내장형 Disk보다 빠를 수 있다. 그러나 동급의 디스크 스토리지로 비교했을때는 DAS SAN보다 성능이 조금 떨어지는 것이 보통이다. 특히 I/O가 많은 대용량의 DB인 경우, 그리고 대규모 Batch Job을 수행해야 하는 경우에는 이와같은 성능차이가 문제가 된다. 또한 DB의 경우 전용 파일서버에서의 Caching기능 때문에 전용파일서버에 장애가 일어난 경우 Data consistency가 문제가 될 수도 있다.

SAN [Storage Area Network]

'광저장장치영역네트워크'로 번역되고 '스토리지 에어리어 네트워크'라고도 한다. 특수 목적용 고속 네트워크로서, 대규모 네트워크 사용자들을 위하여 서로 다른 종류의 데이터 저장장치를 관련 데이터 서버와 함께 연결해 별도의 랜(LAN:근거리통신망)이나 네트워크를 구성해 저장 데이터를 관리한다.
정보기술(IT)이 급속히 발전하면서 기업들의 가장 큰 고민 가운데 하나는 많은 데이터를 어떻게 효율적으로 저장할 수 있는가 하는 것이었다. 기존저장 방법은 장비에 스토리지를 붙여서 쓰는 DAS(direct attached storage:직접연결스토리지)를 이용하였으나, 저장할 데이터와 늘어나는 데이터가 한 공간에 존재하므로 데이터의 전송 속도가 떨어지는 단점이 있다. SAN은 이러한 단점을 극복하기 위한 목적으로 1990년대 말부터 개발되기 시작해 채 몇 년도 안 되어 새로운 데이터 저장기법으로 떠올랐다. 서로 다른 종류의 저장장치들이 함께 연결되어 있어 모든 사용자들이 공유할 수 있을 뿐 아니라, 백업·복원·영구보관·검색 등이 가능하고, 한 저장장치에서 다른 저장장치로 데이터를 이동시킬 수 있다는 장점이 있다. SAN 외에 별도로 랜이나 네트워크를 구성해 저장 데이터를 관리하는 방법으로 NAS(network attached storage:네트워크연결스토리지) 등이 있지만, 2002년 현재 SAN 기법이 보편화되어 시장의 50% 이상을 차지하고 있다. 더욱이 갈수록 대형화하면서 고성장세를 보이고 있다.
하지만 SAN 을 구축하기 위해서는 NAS 스토리지에 비해서 많은 비용과 장비들의 투자가 필요하고, 기존 시스템들의 업그레이드가 필수적이므로 몇가지 제약이 있다.
SAN 을 이기종간의 여러 서버에서 하나의 스토리지를 공유하기 위해서는 SAN 메니지먼트 소프트웨어가 별도로 필요로 하고 , NAS 와는 달리 SAN 네트워크를 별도로 구축을 해야 한다는 단점이 있다.
SAN은 서버와 스토리지 사이의 채널 접속에 파이버 채널 스위치를 넣어 네트웍의 개념을 도입한 것이다. 그렇다면 왜 SCSI Switch가 아닌 파이버채널 스위치인가? SCSI의 경우 Open System의 채널 인터페이스이긴 하지만 접속 거리가 최대 25m로 네트웍으로 구성하기에는 거리제약이 있으며 스위칭을 위한 고려가 전혀 되어있지 않는 인터페이스란 점 때문에 파이버 채널을 SAN의 표준으로 정하게 되었다.
파이버 채널 스위치를 중간에 넣음으로서 서버의 접속 포트 하나에서 여러대의 스토리지를 접속할 수 있고 또한 스토리지의 접속 포트 하나에 여러 서버가 접속할 수 있는 유연성이 생기게 된다. 그러나 여러 서버에서 파일 공유를 하려는 측면에서 생각해 보면 동일 파일 시스템에 대한 관리를 각각의 서버에서 해야 하기 때문에 Locking 문제와 Consistency 문제가 생기게 되고 그런 이유로 파일공유가 되지 않는다. 그렇다면 SAN에서 말하는 공유는 무엇일까? 그것은 지금현재로는 서버측면에서의 스토리지 공유 또는 스토리지 측면에서의 서버 공유를 의미할 뿐이다. 물론 SAN에서 궁극적으로 추구하는 목표에는 파일시스템의 공유가 포함되어 있으며 그러한 노력이 현재 진행되는 있는 것은 사실이지만 파일시스템의 공유라는 목표를 달성하기에는 아직도 많은 시간이 필요하리라고 생각된다.



비교자료

NAS File Server 비교

 
NAS
File Server
관점
스토리지
서버
역할
파일서버, 스토리지로서의 역할
파일서버 역할
저장장치형태
전용 OS
범용 OS
가용성
저장된 정보의 무중단 활용 측면에서의 가용성을 중시
정보 보호 보다는 파일서비스와 파일공유 기능에 중점
파일서버 성능
보통
데이터 용량
500GB 이상
200GB이하
파일 서비스를 위한 프로토콜
NFS, CIFS 동시 지원
사용 OS에 따라 NFS, CIFS 지원

NAS SAN 비교

 
NAS
SAN
구성요소
어플리케이션 서버, 전용 파일 서버, 스토리지
어플리케이션 서버, 스토리지
접속장치
LAN 스위치
Fibre Channel 스위치
스토리지 공유
가능
가능
파일시스템 공유
가능
불가능
파일시스템 관리
파일서버
어플리케이션 서버
접속 속도 결정 요인
LAN과 채널 속도에 좌우됨
채널 속도에 좌우됨
비고
파일공유를 위한 전통적 솔루션
유연성, 확장성, 편의성이 가장 뛰어난 구성

DAS, NAS, SAN 비교

 
DAS
NAS
SAN
구성요소
어플리케이션 서버, 스토리지
어플리케이션 서버, 전용파일 서버, 스토리지
어플리케이션 서버, 스토리지
접속장치
없음
이더넷 스위치
파이버채널 스위치
스토리지
공유
가능
가능
가능
파일시스템
공유
불가능
가능
불가능
파일시스템
관리
어플리케이션 서버
파일 서버
어플리케이션 서버
접속 속도
결정요인
채널속도
LAN과 채널속도
채널속도
특징
소규모 독립된 구성에 적합
파일 공유를 위한 가장 안정적이고 신뢰성 높은 솔루션
유연성/확장성/편의성이 가장 뛰어남

용어 : Fibre Channel

SAN(Storage Area Network)에 사용되는 표준화 채널로서 FWU(Fast Wide Ultra) SCSI의 뒤를 이을 차세대 고속 인터페이스다. 1992년에 휼렛패커드와 선마이크로시스템스•IBM 3개 업체가 FCSI(Fibre Channel Systems Initiative)를 구성했고, IP SCSI의 공조에 관심을 두고 표준화 작업을 진행하여 1998년에 표준안이 마련되었다. 2003년 현재 FCA(Fibre Channel Association) FCLC (Fibre Channel Loop Community)에서 관리한다.
FWU SCSI보다 4∼5배 빠른 1Gbps의 속도로 데이터를 전송할 수가 있으며, 사용되는 프로토콜이 SCSI와 호환되어 기존의 장치를 그대로 사용할 수 있는 장점이 있다. 또 거리 제한도 거의 없어 서버나 JBOD(Just a Bunch Of Disks; RAID 기능이 없는 하드디스크드라이브 세트)를 데이터센터에서 최대 8.6㎞나 떨어진 곳에 설치할 수도 있다. 설치 거리는 점차 늘어날 것으로 보인다.
이 기술로 백본랜을 구축할 경우, 수백 테라바이트의 용량을 보유한 중앙집중식 저장장치 팜(Farm)을 구축할 수 있고, 재해 복구를 위한 외부의 미러링도 가능하다. 클라이언트/서버 컴퓨팅에서 요구되던 분산 아키텍처를 지원하고, 폴트톨러런스(Fault Tolerance)와 자체 복구 기능도 지녀 네트워크 연결을 유연하게 해 준다. , 네트워크 확장을 거의 무한대 수준으로 끌어올리는 등 네트워크의 성능 저하를 최소화시킨다. 이와 같은 장점을 지녀 2003년 후반부터는 SCSI 기반의 인터페이스와 저장장치를 대체할 것으로 예상되며, SCSI IDE(Integrated Drive Electronics)와 같이 저가의 데스크톱 컴퓨터용으로 자리잡을 것으로 전망된다.



[출처] http://blog.naver.com/p1ngp1ng/120035225799
Posted by @dmin @dmin

댓글을 달아 주세요

시스템/TCP_IP Network2010. 9. 6. 11:15

네트워크 패킷 분석 프로그램을 사용하다가,
또는 많은 프로토콜을 분석하다가 각 내용을 세부적으로 기억하지는 못한다. 특히, 명령어가 복잡하거나
다양한 필터가 있는 경우는 더욱 그러하다. 이럴때, 유용하게 사용할 수 있는 것이
주요한 명령어만을 알차게 요약 정리해 놓은 1-2페이지의 문서이다.

BGP, IPSec, IPv6, OSPF 등의 프로토콜과 TCPDUMP, WireShark 출력 필터를
깔끔하게 정리해 놓은 포스터 형태의 문서가 있다.

[출처] PacketLife 의 Cheat Sheet 중 일부

다음의 사이트에서 해당 자료를 다운로드 받을 수 있다.
Posted by @dmin @dmin

댓글을 달아 주세요

시스템/TCP_IP Network2010. 8. 17. 10:41
[root@sniper root]# tcpdump -i eth0 -e -X -n host 211.174.49.204
tcpdump: WARNING: eth0: no IPv4 address assigned
tcpdump: listening on eth0
10:40:54.644934 0:14:5e:bb:6b:ee 0:d:61:7e:c8:e7 arp 60: arp who-has 211.174.49.
200 (0:d:61:7e:c8:e7) tell 211.174.49.204 (0:14:5e:bb:6b:ef)
0x0000   0001 0800 0604 0001 0014 5ebb 6bef d3ae        ..........^.k...
0x0010   31cc 000d 617e c8e7 d3ae 31c8 0000 0000        1...a~....1.....
0x0020   0000 0000 0000 0000 0000 0000 0000             ..............
10:40:54.644961 0:d:61:7e:c8:e7 0:14:5e:bb:6b:ef arp 42: arp reply 211.174.49.20
0 is-at 0:d:61:7e:c8:e7
0x0000   0001 0800 0604 0002 000d 617e c8e7 d3ae        ..........a~....
0x0010   31c8 0014 5ebb 6bef d3ae 31cc                  1...^.k...1.

-e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다.
-X : 각각의 패킷을 헥사코드로 출력한다.
-n : 모든 주소들을 번역하지 않는다(port,host address 등등)




Tcpdump의 옵션들

  -a : Network & Broadcast 주소들을 이름들로 바꾼다.
  -c Number : 제시된 수의 패킷을 받은 후 종료한다.
  -d : comile packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로
      출력하고, 종료한다.

  -dd : packet-matching code C program의 일부로 출력한다.
  -ddd : packet-matching code를 숫자로 출력한다.
  -e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다.
  -f : 외부의 internet address를 가급적 심볼로 출력한다(Sun yp server와의 사용은
        가급적 피하자).

  -F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은
    모두 무시된다.

  -i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면
    시스템의 인터페이스 리스트를 뒤져서 가장 낮은 번호를
    가진 인터페이스를 선택한다(이 때 loopback은 제외된다).

  -l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서
      tcpdump로부터 데이터를 받고자 할 때, 유용하다.

  -n : 모든 주소들을 번역하지 않는다(port,host address 등등)
  -N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다.
  -O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer
        있는 버그를 찾을 때나 쓰인다.

  -p : 인터페이스를 promiscuous mode로 두지 않는다.
  -q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다.
  -r file : 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면
        표준 입력을 통해서 받아들인다.

  -s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때
        사용한다(SunOS NIT에서는 최소가 96Byte이다). 68Byte
        IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server NFS 패킷들의 경우에는
        프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할
        때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하나하나를 처리하는데
        시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도
        자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. , 작게 잡으면
        그만큼의 정보를 잃게되는 것이다. 따라서 가급적
        캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아주어야 한다.

  -T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과
        같은 것들이 올 수 있다. rpc(Remote Procedure Call),
        rtp(Real-Time Applications protocol), rtcp(Real-Time Application control
        protocal), vat(Visual Audio Tool), wb(distributed White Board)

  -S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다.
  -t : 출력되는 각각의 라인에 시간을 출력하지 않는다.
  -tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다.
  -v : 좀 더 많은 정보들을 출력한다.
  -vv : '-v'보다 좀 더 많은 정보들을 출력한다.
  -w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다.
  -x : 각각의 패킷을 헥사코드로 출력한다.

 Tcpdump의 사용 예제들

  security라는 호스트로부터 날아오고, 날아가는 패킷들을 출력


  # tcpdump host security
  security mazinga, getarobo 사이에 날아다니고 있는 패킷들을 출력

  # tcpdump host security and \( mazinga or getarobo \)
  security에서 elgaim을 제외한 모든 호스트로 날아다니는 IP 패킷들을 출력


  # tcpdump ip host security and not elgaim
  gateway amurorei를 거치는 ftp에 관련된 패킷들을 출력

  # tcpdump 'gateway amurorei and ( port ftp or ftp-data )'
   local호스트가 아닌 호스트와 로컬호스트가 맺는 TCP 커넥션의 시작과 마지막 패 킷들을
   출력한다(SYN, FIN 패킷).

  # tcpdump 'tcp[13] & 3 != 0 and not src and dst net non-local'
  gateway amurorei를 지나는 576Byte보다 큰 패킷들을 출력한다

  # tcpdump 'gateway amurorei and ip[2:2] > 576'
   Ethernet boradcast 혹은 multicast를 통해서 보내진 것이 아닌, IP broadcast 혹 은
   multicast 패킷들을 출력한다.

  # tcpdump 'ehter[0] & 1 = 0 and ip[16] >= 224'
  Echo request/reply가 아닌 ICMP 패킷들을 모두 출력한다.

  # tcpdump 'icmp[0] != 8 and icmp[0] != 0'


--------------------------------------------------------------------------------------------------

TCPDUMP<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

tcpdump는 네트워크 인터페이스 상에 있는 패킷 중에서 보고자하는 패킷의 헤더 정보를

   보여주는 툴임.

○ 이 프로그램은 ftp://ftp.ee.lbl.gov/ 에 있으며, 이외에도 많은 사이트에서 구할 수 있음.

tcpdump를 컴파일하여 설치하기 위해서는 libpcap(packet capture library)가 먼저 설치

   되어야 함. libpcap 역시 ftp://ftp.ee.lbl.gov/에서 구할 수 있음.

○ 현재 tcpdump의 버전은 3.4 .

○ 사용법

   Linux에서 root로 로그인해서 사용함.

   Syntax

 

         [root@localhost /root]# tcpdump -h      

          tcpdump version 3.4

          libpcap version 0.4

          Usage: tcpdump [-adeflnNOpqRStvxX] [ -b protocol] [ -c count]

       [ -i interface ] [ -r file ] [ -s snaplen ]

       [ -T type ] [ -w file ] [ -F file ]

       [ -u username ] [ expression ]

         [root@localhost /root]#

 

○ 옵션 1

   -a : Ascii 코드로 출력함.

   -d : 컴파일된 코드를 사람이 읽을 수 있는 형태로 출력한 후 종료.

   -dd : 출력을 C 프로그램 형태로 출력.

   -ddd: 출력을 10진수로 출력.

   -e : 각각의 출력 라인에 링크 레벨의 헤더를 출력.

   -f : 외부 주소를 가능하면 심볼이 아닌 숫자로 출력.

   -l : 출력 결과를 표준 에러로 출력. 이는 출력 결과를 회면으로 보면서 동시에 파일

          에 저장하고자 할 때 사용.

          Ex) #tcpdump -l > data & tail -f data

   -n : 주소(호스트 주소와 포트번호)를 이름으로 바꾸지 않음.

   -N : 호스트 이름에서 도메인 주소를 출력하지 않음.

   -O : 출력을 최적화하여 출력하지 않음.

   -p : 인터페이스가 promiscuous 모드로 될 수 없도록 함.

   -q : 프로토콜 정보를 보통보다 줄여서 출력.

   -R : raw 소켓 인터페이스를 사용함.

   -S : TCP 절대(상대적이 아님) sequence number를 출력.

   -t : 출력 라인에 time stamp를 출력하지 않음.

   -v : verbose 모드. 출력 정보를 좀 더 상세히 출력함.

   -vv : -v 모드보다 더 자세한 정보를 출력함.

   -x : 패킷을 16진수로 출력함.

   -X : 패킷 소켓 인터페이스를 사용함.

○ 옵션 2

   -b protocol : 지정된 데이터 링크 계층의 프로토콜을 사용하는 패킷을 수집함. 여기

      의 프로토콜로는 ip, ipv6, 802.2, 802.3, arp, rarp, dec, lat, atalk, x.25, ipx 등이 있음.

   -c count : count 만큼의 패킷을 수집한 후 종료함.

   -i interface : 패킷을 수집하는 인터페이스를 지정함. 만약 아무런 입력이 없으면

      시스템에서 가장 번호가 작은 이용 가능한 인터페이스로 자동 설정됨.

   -r file : -w' 옵션으로 만들어진 파일로부터 패킷을 읽음.

   -s snaplen : 수집할 패킷의 길이(바이트 단위)를 지정함. 디폴트값은 68.

   -T type : expression을 만족하는 패킷을 지정된 type으로 해석함.

   -w file : 수집된 패킷을 file에 저장함. -r' 옵션으로 나중에 읽을 수 있음.

   -F file : expression이 많을 때 별도의 파일을 사용하여 expression이 들어 있는

      파일을 지정할 경우에 사용됨.

   -u username : root 권한을 지정된 사용자 계정에서 사용할 수 있도록 함.

 

Expression

   expression 부분은 패킷을 선택적으로 캡쳐하기 위한 조건을 적는 부분임.

   expression이 없으면 네트워크 상의 모든 패킷을 캡쳐링하며, expression을 참으로

      하는 패킷만 수집하게 됨.

   expression은 하나 이상의 primitives로 구성되며, primitives는 일반적으로 qualifier

      id(이름이나 숫자)로 구성됨.

   Qualifier(한정자)의 세종류

      - type : id가 어떠한 의미를 갖는지를 알려줌. 가능한 type으로는 host, net, port

        이 있음.

      - dir : 전송 방향을 나타냄. 가능한 방향으로는 src, dst, src or dst, src adn dst

        있음.

      - proto : 특정한 프로토콜의 패킷만을 받아들이도록 함. 가능한 proto로는 ether,

        fddi, ip, arp, rarp, decnet, lat, sca, moprc, tcp, udp 등이 있음.

   Primitives

      - dst host <host> : 패킷의 목적지 필드에 있는 IP 주소와 <host>가 일치하면 참이

        . 여기서 호스트는 주소와 이름 모두 가능함.

      - src host <host> : 패킷의 송신지 필드에 있는 IP 주소와 <host>가 일치하면 참이

        . 여기서 호스트는 주소와 이름 모두 가능함.

      - host <host> : 패킷의 목적지나 송신지 IP 주소중 어느 하나라도 <host>와 일치하

        면 참이 됨.

      - ether dst <ehost> : 패킷의 목적지 이더넷 주소가 <ehost>와 일치하면 참이 됨.

      - ether src <ehost> : 패킷의 송신지 이더넷 주소가 <ehost>와 일치하면 참이 됨.

      - ether host <ehost> : 패킷의 목적지 또는 송신지 이더넷 주소가 <ehost>와 일치

        하면 참이 됨.

      - dst net <net> : 패킷의 목적지 필드에 있는 IP 주소가 <net>가 일치하는 네트워

        크 번호를 가지면 참이 됨.

      - src net <net> : 패킷의 송신지 필드에 있는 IP 주소가 <net>가 일치하는 네트워

        크 번호를 가지면 참이 됨.

      - net <net> : 패킷의 송신지 또는 목적지 필드에 있는 IP 주소가 <net>가 일치하는

        네트워크 번호를 가지면 참이 됨.

      - net <net> mask <mask> : IP 주소가 지정된 netmask를 통하여 네트워크 번호가

        <net>과 일치하면 참이 됨.

      - net <net>/<len> : IP 주소가 네트워크 번호 <net> netmask <len> 비트만큼

        일치하면 참이 됨.

      - dst port <port> : 패킷이 ip/tcp 혹은 ip/udp 이면서 목적지 port 값으로 <port>

        가지고 있으면 참이 됨. <port>는 숫자나 /etc/services 파일에 있는 포트 이름을

        사용할 수 있음.

      - src port <port> : 패킷이 ip/tcp 혹은 ip/udp 이면서 송신지 port 값으로 <port>

        가지고 있으면 참이 됨.

      - port <port> : 패킷이 ip/tcp 혹은 ip/udp 이면서 송신지나 목적지 port 값으로

        <port>를 가지고 있으면 참이 됨.

      - less <length> : 패킷의 길이가 <length> 바이트 보다 작거나 같으면 참이 됨.

      - greater <length> : 패킷의 길이가 <length> 바이트 보다 크면 참이 됨.

      - ip proto <protocol> : 패킷이 <protocol> 형태의 ip 패킷이면 참이 됨. 여기서

        icmp, igrp, udp, tcp 등의 이름을 적을 수 있음. , tcp, udp, icmp는 키 워드로도

        사용되므로 항상 ‘\’를 적어야 됨.

        ) #tcpdump ip proto \\tcp

      - ether broadcast : 패킷이 이더넷 방송 패킷이면 참이 됨.

      - ip broadcast : 패킷이 ip 방송 패킷이면 참이 됨.

      - ether multicast : 패킷이 이더넷 multicast 패킷이면 참이 됨.

      - ip multicast : 패킷이 ip multicast 패킷이면 참이 됨.

      - ether proto <protocol> : 이더넷 패킷의 프로토콜이 <protocol> 형태면 참이 됨.

        여기의 프로토콜로는 ip, arp, rarp 등이 있음.

      - 간단한 expression

        ? !, not

        ? &&, and

        ? ||, or

 

○ 사용 예

   ▷ 패킷의 발신지가 apple이고 목적지는 banana가 아닌 패킷을 수집

      # tcpdump src host apple and not dst host banana

 

   echo request/reply가 아닌 모든 ICMP 패킷을 출력

      # tcpdump 'icmp[0] != 8 and icmp[0] != 0'

[출처] 와룡의 네트워크 강좌 - http://cafe.naver.com/netsmaster.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=15732

Posted by @dmin @dmin

댓글을 달아 주세요

시스템/TCP_IP Network2010. 6. 13. 00:10


[출처1] http://www.cyworld.com/kenur/3045050
[출처2] http://blog.naver.com/yhpeople?Redirect=Log&logNo=20015672048
Posted by @dmin @dmin

댓글을 달아 주세요

시스템/TCP_IP Network2010. 5. 10. 16:47

# tcpdump -q \( dst net 1.2.3.0/24 or 1.2.4.0/25 \) and dst port 80
목적지 주소가 1.2.3.x/24 와 1.2.4.x/25 이고 80번포트인 패킷 캡쳐

# tcpdump host A
A 호스트로/부터의 모든 도착/출발 패킷 출력

# tcpdump host A and \( B or C \)
A 호스트와 B 또는 C 사이의 모든 트래픽 출력

# tcpdump ip host A and not B
A호스트와 B를 제외한 호스트 간의 모든 IP 패킷 출력

# tcpdump net ucb-ether
로컬호스트와 Berkeley의 호스트들 간의 모든 트래픽 출력

# tcpdump 'gateway A and (port ftp or ftp-data)'
게이트웨이 A를 통한 모든 ftp 트래픽 출력

# tcpdump ip and not net
로컬네트워크로/부터가 아닌 모든 트래픽 출력

# tcpdump 'tcp[13] & 3 != 0 and not src and dst net '
로컬네트워크가 아닌 TCP 시작과 마지막 패킷 출력

# tcpdump 'gateway A and ip[2:2] > 576'
게이트웨이 A를 통해 보내지는 576 Bytes보다 긴 IP 패킷 출력

# tcpdump 'ether[0] & 1 = 0 and ip[16] >= 224'
이더넷이 아닌 IP 브로드 또는 멀티 캐스트 패킷 출력

# tcpdump 'icmp[0] != 8 and icmp[0] != 0'
echo 요청/응답이 아닌 모든 ICMP 패킷 출력 (ping 아닌 패킷)

# tcpdump src net 1.2.3 or 1.2.4 and not dst net 1.2.3 or 1.2.4
1.2.3 과 1.2.4 IP주소 (내부) 패킷을 제외한 모든 패킷 출력

# tcpdump -i br1
br1 인터페이스의 모든 패킷 출력

#tcpdump -i eth1 -vv ip6
eth1으로 오가는 IPv6패킷을 자세히(vv) 검사

출처 : 이지빌 - 무료웹호스팅- www.ezvil.net

1. Tcpdump란?
 tcpdump는 Lawrence Berkley Nation Lab의 Network Rearch Gruop에서 만든 것으로 네트워크의 패킷
을 출력해주는 프로그램이다. 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 
헤더들을 출력해 주는 프로그램이다. 주로 쓰임은 지정된 상대방 호스트로부터 들어오는 패킷을 체크
하는 데 있다.

2. tcpdump의 사용법
 (1) 사용법
   tcpdump [options] [host]
(2) tcpdump의 결과보기 [root@www root]# tcpdump 01:37:09.744959 203.xxx.xxx.10.4847 > linux.co.kr.ftp: S 2082495566:2082495566(0) win 16384 <mss 460,nop,nop,sackOK> (DF) => (결과설명) 01:37:09.744959 : Timestamp로 보통 '시간.특정한숫자값'형태로 부여된다. 203.xxx.xxx.10.4847 : Source_address.source_port로 소스의 IP주소와 Port번호를 나타낸 다. > : Traffic direction으로 방향을 나타낸다. linux.co.kr.ftp : destination_address.destination_port로 도착지 IP주소와 Port번호를 나타낸다. S : TCP flag로 특정한 표시문자를 일컫는다. 2082495566:2082495566(0) : sequence number이다. win 16384 : window size이다. <mss 460,nop,nop,sackOK> : various options 이다. (DF) : Don't fragment
3. tcpdump 플래그(flags)
 
TCP 플래그 TCPDUMP 플래그 플래그의 의미
SYNS SYN패킷, 접속요청을 할 때 보내는 패킷을 말한다.
TCP접속시에 가장먼저 보내는 패킷이다.
ACKack ACK패킷, 상대방으로부터 패킷을 받은 뒤에 알려주는
패킷을 말한다. 다른 플래그와 같이 출력되는 경우도
있다.
FINF 접속종료를 위한 플래그로 이 패킷을 보내는 곳이
현재 접속하고 있는 곳과 접속을 끊고자 할 때 사용한다.
RESETR 이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시
연결을끊고자 할 때 사용한다.
PUSHP 데이터를 즉시 목적지로 보내라는 의미이다. 텔넷과
같이 상호작용이 중요한 프로그램의 경우 빠른 응답
이 중요한다. 이때 사용하는 플래그이다.
UGENTURG 긴급한 데이터는 다른 데이터에 비해 우선순위가
높아야 한다. 예를 들어 ftp로 자료를 받고 있는 도중
[CTRL]+[C] 를 받으면 즉시 자료받기를 중단해야 하는
것처럼 이 때 사용하는 플래그이다.
Placeholder. 패킷이 SYN, FINISH, RESET, PUSH등의 플래그가 없는
경우이 플래그가 세팅된다. 이 플래그는 ACK플래그와
함께 사용되는 경우도 있다.
4. tcpdump의 옵션 -h: 버전 및 기본 사용법을 보여준다. -a : Network & Broadcast 주소들을 이름들로 바꾼다. -c Number : 제시된 수의 패킷을 받은 후 종료한다. -d : compile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로 출력하고, 종료한다. -dd : packet-matching code를 C program의 일부로 출력한다. -ddd : packet-matching code를 숫자로 출력한다. -e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다. -f : 외부의 internet address를 가급적 심볼이 아닌 숫자로 출력한다.(Sun의 yp server와의 사용은 가급적 피한다.) -F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은 모두 무시된다. -i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면 시스템의 인터페이스 리스트를 검색하여 가장 낮은 번호를 가진 인터페이스를 선택한다.(이 때 loopback은 제외된다.) 예) tcpdump -i eth0 -l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서 tcpdump로부터 데이 터를 받고자 할 때 유용하다. 보통 'tcpdump -l | tee dat' 나 'tcpdump -l < dat & tail -f dat' 명령으로 연계해서 사용하면 편리하다. -n : 모든 주소들을 번역하지 않는다(port,host address 등등) -N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다. -O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에 있는 버그를 찾을 때나 쓰인다. -p : 인터페이스를 promiscuous mode로 두지 않는다. -q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다. -r file : 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면 표준 입력을 통해서 받아들인다. -s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때 사용한다.(Sun OS의 NIT에서는 최소가 96Byte이다). 68Byte는 IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는 프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할 때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하 나하나를 처리하는데 시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도 자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. 또, 작게 잡으면 그만큼의 정보를 잃 게되는 것이다. 따라서 가급적 캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아 주어야 한다. -T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과 같은 것들이 올 수 있다. rpc(Remote Procedure Call), rtp(Real-Time Applications protocol), rtcp (Real-Time Application control protocal), vat(Visual Audio Tool), wb(distributed White Board) -S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다. -t : 출력되는 각각의 라인에 시간을 출력하지 않는다. -tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다. -v : 좀 더 많은 정보들을 출력한다. -vv : '-v'보다 좀 더 많은 정보들을 출력한다. -vvv : 16진수값 형태로 정보를 보여준다. 보통 -X옵션과 사용되어 -w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다. -x : 각각의 패킷을 헥사코드로 출력한다. -X : 헥사코드와 ascii형태 모두 출력해준다. 보통 -x 옵션과 같이 사용된다. -조건식(expression) 옵션의 제일 마지막인 조건식은 어떤 패킷들을 출력할 지를 선택하는 데 쓰인다. 조건식이 주어지지 않는다면 모든 패킷들이 대상이 된다. 조건식들은 하나 또는 여러 개의 primitive들로 구성되어 있고 primitive들은 다시 하나 또는 여러 개의 qualifier들 다음에 오는 하나의 값으로 이루어진다. *qualifier type : 주어진 값의 종류가 무엇인지를 나타낸다. 가능한 type들은 'host', 'net', 'port'가 있다. type이 없는 값들은 type을 host라 가정한다. dir : id로 부터의 어떤 특정한 전송 방향을 나타낸다. 가능한 방향은 'src', 'dst', 'src or dst', 'src and dst'이다. 만약 방향이 정해지지 않았다면, src or dst라 가정한다. "For `null' link layers (i.e. point to point protocols such as slip) the inb ound and out bound qualifiers can be used to specify a desired direction." proto : 매칭을 특정 프로토콜에 한해서 수행한다. 가능한 프로토콜들은 ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp이다. 만약 프로토콜이 명시되지 않았다 면, 해당하는 값의 type에 관련된 모든 프로토콜들이 그 대상이 된다. *위의 패턴을 따르지 않는 primitive : gateway, broadcast, less, greater, 산술식이 있으며 참고 로 더 정교한 조건식을 사용하려면 'and(&&)','or(||)','not(!)' 을 사용할 수 있다. *사용가능한 primitive들 dst host HOST => packet의 IP destination 항목이 HOST일때 참이 된다. src host HOST => packet의 IP source 항목이 HOST일때 참이 된다. host HOST => IP source, IP destination 항목 중 어느 하나라도 HOST이면 참이다. ether dst ehost => ethernet destination 주소가 ehost일 때 참이다. ether src ehost => ethernet source 주소가 ehost일 때 참이다. ether host ehost => ethernet source, destination 항목들 중 어느 하나라도 ehost이면 참이다. gateway host => 패킷이 host를 게이트웨이로 사용하면 참이다. 이 말의 의미는 ethernet sour ce나 destina tion 항목은 host이지만, IP source와 destination은 host가 아닐 때를 말한다. dst net NET => 패킷의 IP destination 주소가 NET의 network number를 가지고 있을 때 참이다. src net NET => 패킷의 IP source 주소가 NET의 network number를 가지고 있을 때 참이다. net NET => 패킷의 IP source 주소 혹은 destination 주소가 NET의 network number를 가 지고 있을 때 참이다. net netmask mask => IP 어드레스가 지정된 netmask를 통해서 net과 매칭되면 참이다. net net/len => IP 어드레스가 netmask와 len 비트만큼 매치되면 참이다. dst port PORT => 패킷이 ip/tcp, ip/udp 프로토콜의 패킷이고 destination port의 값이 PORT일 때 참이다. port는 /etc/services에 명시된 이름일 수도 있고 그냥 숫자일 수도 있다. 만약 이름이 사용 됐다면 port 번호와 프로토콜이 같이 체크될 것이다. 만약 숫자나 불 확실한 이름이 사용됐을 경우에는 port 번호만이 체크될 것이다. src port PORT => 패킷의 source port의 값으로 PORT를 가지면 참이다. port PORT => 패킷의 source, destination port 중에 하나라도 PORT이면 참이다.
less length => 패킷이 length보다 짧거나 같으면 참이다.(len <= length) greater length => 패킷이 length보다 짧거나 같으면 참이다.(len >= length) ip proto protocol => 패킷이 지정된 종류의 프로토콜의 ip패킷이면 참이다. Protocol은 icmp, igrp, udp, nd, tcp 중의 하나 혹은 몇 개가 될 수 있다. 주의할 점은 tcp, udp, icmp들은 '\'로 escape되어야 한다. ehter broadcast => 패킷이 ethernet broadcast 패킷이라면 참이다. ehter는 생략 가능하다. ip broadcast => 패킷이 IP broadcast 패킷이라면 참이다. ether multicast => 패킷이 IP multicast 패킷이라면 참이다. ether proto protocol => 패킷이 ether type의 protocol이라면 참이다. protocol은 ip, arp, rarp 중에 하나 혹은 몇 개가 될 수 있다. ip proto protocol에서와 마찬가지로 ip, arp, rarp는 escape 되어야 한다. decnet src host => 만약 DECNET의 source address가 host이면 참이다. 이 어드레스는 '10.123'이 나 DECNET의 host name일 수 있다. DECNET host name은 DECNET에서 돌아가도록 설정된 Ultrix 시스템에서 만 사용 가능하다. decnet dst host => DECNET destination address가 host이면 참이다. decnet host HOST => DECNET source, destination address중의 하나라도 HOST이면 참이다. ip, arp, rarp, decnet => ether proto [ip|arp|rarp|decnet]의 약어 lat, moprc, mopdl => ether proto [lat|moprc|mopdl]의 약어 tcp, udp, icmp => ip proto [tcp|udp|icmp]의 약어 expr relop expr => EXPR proto [expr:size]의 형식을 띤다. proto, expr, size에 올 수 있는 것들은 다음과 같다. proto : ether, fddi, ip, arp, rarp, tcp, udp, icmp expr : indicate Byte offset of packet of proto size : optional. indicate the size of bytes in field of interest default is one, and can be two or four => RELOP !=, =, <=, >=, etc. 이 조건식을 사용하기 위해서는 먼저 해당하는 Protocol(proto)의 헤더에 관련된 것들을 자세 히 알아야만 한다. proto에는 대상이 될 프로토콜을 지정한다. expr에는 프로토콜 헤더의 처음 부터의 Byte Offset을 지정하는 식이 들어가게 된다. Size는 Option이며 지정이 안 되어 있을 경우에는 자동으로 1byte를 지칭한다. 따라서 이 조건식을 사용하게 되면 헤더에 포함된 정보 를 Bitmask를 사용하여 직 접 원하는 패킷인지를 가려낼 수 있기 때문에, 보다 정밀한 사용이 가능하게 된다.
5. tcpdump 기본사용예
(1) [root@www root]# tcpdump => 현재 서버의 모든 패킷을 보여준다. (2) [root@www root]# tcpdump port 21 tcpdump: listening on eth0 01:25:43.833276 203.xxx.xxx.100.4828 > xxx.com.ftp: S 1910472596:1910472596(0) win 16384 <mss ) 01:25:43.833339 xxx.com.ftp > 203.247.40.244.4828: S 4108025962:4108025962(0) ack 1910472597 ) => 21번 포트로 들어온 패킷만 보여준다. (3) [root@nanajjang /root]# tcpdump -c 2 host neuro.hannam.ac.kr Kernel filter, protocol ALL, datagram packet socket tcpdump: listening on all devices 11:09:44.576419 eth0 B arp who-has 203.247.40.247 tell neuro.hannam.ac.kr 11:09:44.576507 eth0 > arp reply 203.247.40.247 (0:c0:26:1:11:77) is-at 0:c0:26) => neuro.hannam.ac.kr의 패킷 2개만 보여준다. (4) tcpdump -v -e broadcast => broadcast 의 정보를 자세히 출력하고 출력되는 각각의 행에 대해서 link-level헤더를 출력 한다.
6. tcpdump로 패스워드 알아내기
(1) 설명: telnet을 이용하여 서버에 접속을 하면 패킷전송시에 암호화하지 않기 때문에 쉽게 내용 을 볼 수 있다. tcpdump를 이용하여 패스워드를 알아낼 수 있다. (2) 사용예 1) 실행명령 [root@www root]# tcpdump port telnet -l -vvv -x -X >dumpdata & tail -f dumpdata 2) 패킷분석: 패킷의 양이 많으므로 잘 찾아야 한다. 먼저 연결된 포트를 확인한다. 20:38:22.395281 xxx.com.telnet > 210.xxx.xxx.100.35383: P [tcp sum ok] 175:182(7) ack 81 win 5792 <nop,nop,timestamp 80867670 35878949> (DF) [tos 0x10] (ttl 64, id 59193, len 59) 0x0000 4510 003b e739 4000 4006 ca41 cbf7 28fc E..;.9@.@..A..(. 0x0010 d27b c1c2 0017 8a37 2992 16d8 2041 b972 .{.....7)....A.r 0x0020 8018 16a0 5fec 0000 0101 080a 04d1 f156 ...._..........V 0x0030 0223 7825 6c6f 6769 6e3a 20 .#x%login:. => 서버(xxx.com)에서 클라이언트(210.xxx.xxx.100에게 'login'이라는 것을 보여줌을 알 수 있다. 또한 연결된 클라이언트의 포트번호가 35383임을 알 수 있다. 이 포트번호를 확인해 야 패킷을 찾아갈 수 있다. ---중략--- 20:38:23.979306 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 81:82(1) ack 182 win 5840 <nop,nop,timestamp 35879107 80867670> (DF) [tos 0x10] (ttl 56, id 49475, len 53) 0x0000 4510 0035 c143 4000 3806 f83d d27b c1c2 E..5.C@.8..=.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b972 2992 16df ..(..7...A.r)... 0x0020 8018 16d0 5130 0000 0101 080a 0223 78c3 ....Q0.......#x. 0x0030 04d1 f156 70 ...Vp => 클라이언트에서 서버로 전송하는 부분만을 확인하면 된다. P 다음에 존재하는 81:82와 ack 다음에 182라는 번호를 꼭 확인한다. 다음 패킷번호는 82:83이 되고 ack 183번이 되므로 ack 183이라는 부분을 찾아가면 된다. 여기서 클라이언트에서 서버로 전송한 글자는 맨 마지막에 표시된다. 즉 'p'이다. ---중략--- 20:38:24.162490 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 82:83(1) ack 183 win 5840 <nop,nop,timestamp 35879126 80868481> (DF) [tos 0x10] (ttl 56, id 49477, len 53) 0x0000 4510 0035 c145 4000 3806 f83b d27b c1c2 E..5.E@.8..;.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b973 2992 16e0 ..(..7...A.s)... 0x0020 8018 16d0 4ef0 0000 0101 080a 0223 78d6 ....N........#x. 0x0030 04d1 f481 6f ....o ---중략--- 20:38:24.322785 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 83:84(1) ack 184 win 5840 <nop,nop,timestamp 35879142 80868575> (DF) [tos 0x10] (ttl 56, id 49479, len 53) 0x0000 4510 0035 c147 4000 3806 f839 d27b c1c2 E..5.G@.8..9.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b974 2992 16e1 ..(..7...A.t)... 0x0020 8018 16d0 4a80 0000 0101 080a 0223 78e6 ....J........#x. 0x0030 04d1 f4df 73 ....s ---중략--- 20:38:24.445142 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 84:85(1) ack 185 win 5840 <nop,nop,timestamp 35879154 80868657> (DF) [tos 0x10] (ttl 56, id 49481, len 53) 0x0000 4510 0035 c149 4000 3806 f837 d27b c1c2 E..5.I@.8..7.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b975 2992 16e2 ..(..7...A.u)... 0x0020 8018 16d0 5820 0000 0101 080a 0223 78f2 ....X........#x. 0x0030 04d1 f531 65 ...1e ---중략--- 20:38:24.532360 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 85:86(1) ack 186 win 5840 <nop,nop,timestamp 35879163 80868720> (DF) [tos 0x10] (ttl 56, id 49483, len 53) 0x0000 4510 0035 c14b 4000 3806 f835 d27b c1c2 E..5.K@.8..5.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b976 2992 16e3 ..(..7...A.v)... 0x0020 8018 16d0 53d6 0000 0101 080a 0223 78fb ....S........#x. 0x0030 04d1 f570 69 ...pi ---중략--- 20:38:24.624350 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 86:87(1) ack 187 win 5840 <nop,nop,timestamp 35879172 80868764> (DF) [tos 0x10] (ttl 56, id 49485, len 53) 0x0000 4510 0035 c14d 4000 3806 f833 d27b c1c2 E..5.M@.8..3.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b977 2992 16e4 ..(..7...A.w)... 0x0020 8018 16d0 4e9f 0000 0101 080a 0223 7904 ....N........#y. 0x0030 04d1 f59c 6e ....n ---중략--- => posein이라는 글자를 알 수 있다. 즉 사용자 ID가 posein이다. 20:38:24.932380 xxx.com.telnet > 210.xxx.xxx.100.35383: P [tcp sum ok] 190:200(10) ack 89 win 5792 <nop,nop,timestamp 80868969 35879203> (DF) [tos 0x10] (ttl 64, id 59201, len 62) 0x0000 4510 003e e741 4000 4006 ca36 cbf7 28fc E..>.A@.@..6..(. 0x0010 d27b c1c2 0017 8a37 2992 16e7 2041 b97a .{.....7)....A.z 0x0020 8018 16a0 d40b 0000 0101 080a 04d1 f669 ...............i 0x0030 0223 7923 5061 7373 776f 7264 3a20 .#y#Password:. => 서버에서 클라이언트에서 Password라는 글을 보내어 출력시킨다. ---중략--- 20:38:25.300524 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 89:90(1) ack 200 win 5840 <nop,nop,timestamp 35879239 80868969> (DF) [tos 0x10] (ttl 56, id 49490, len 53) 0x0000 4510 0035 c152 4000 3806 f82e d27b c1c2 E..5.R@.8....{.. 0x0010 cbf7 28fc 8a37 0017 2041 b97a 2992 16f1 ..(..7...A.z)... 0x0020 8018 16d0 557f 0000 0101 080a 0223 7947 ....U........#yG 0x0030 04d1 f669 66 ...ip ---중략--- 20:38:25.454778 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 90:91(1) ack 200 win 5840 <nop,nop,timestamp 35879255 80869177> (DF) [tos 0x10] (ttl 56, id 49491, len 53) 0x0000 4510 0035 c153 4000 3806 f82d d27b c1c2 E..5.S@.8..-.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b97b 2992 16f1 ..(..7...A.{)... 0x0020 8018 16d0 489e 0000 0101 080a 0223 7957 ....H........#yW 0x0030 04d1 f739 72 ...9a ---중략--- 20:38:25.659340 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 91:92(1) ack 200 win 5840 <nop,nop,timestamp 35879275 80869236> (DF) [tos 0x10] (ttl 56, id 49492, len 53) 0x0000 4510 0035 c154 4000 3806 f82c d27b c1c2 E..5.T@.8..,.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b97c 2992 16f1 ..(..7...A.|)... 0x0020 8018 16d0 554e 0000 0101 080a 0223 796b ....UN.......#yk 0x0030 04d1 f774 65 ...ts ---중략--- 20:38:25.777475 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 92:93(1) ack 200 win 5840 <nop,nop,timestamp 35879287 80869341> (DF) [tos 0x10] (ttl 56, id 49493, len 53) 0x0000 4510 0035 c155 4000 3806 f82b d27b c1c2 E..5.U@.8..+.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b97d 2992 16f1 ..(..7...A.})... 0x0020 8018 16d0 54d8 0000 0101 080a 0223 7977 ....T........#yw 0x0030 04d1 f7dd 65 ....s ---중략--- 20:38:26.049208 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 93:94(1) ack 200 win 5840 <nop,nop,timestamp 35879314 80869402> (DF) [tos 0x10] (ttl 56, id 49494, len 53) 0x0000 4510 0035 c156 4000 3806 f82a d27b c1c2 E..5.V@.8..*.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b97e 2992 16f1 ..(..7...A.~)... 0x0020 8018 16d0 887f 0000 0101 080a 0223 7992 .............#y. 0x0030 04d1 f81a 31 ....w ---중략--- 20:38:26.243634 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 94:95(1) ack 200 win 5840 <nop,nop,timestamp 35879334 80869541> (DF) [tos 0x10] (ttl 56, id 49495, len 53) 0x0000 4510 0035 c157 4000 3806 f829 d27b c1c2 E..5.W@.8..).{.. 0x0010 cbf7 28fc 8a37 0017 2041 b97f 2992 16f1 ..(..7...A..)... 0x0020 8018 16d0 86df 0000 0101 080a 0223 79a6 .............#y. 0x0030 04d1 f8a5 32 ....o ---중략--- 20:38:26.442302 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 95:96(1) ack 200 win 5840 <nop,nop,timestamp 35879353 80869640> (DF) [tos 0x10] (ttl 56, id 49496, len 53) 0x0000 4510 0035 c158 4000 3806 f828 d27b c1c2 E..5.X@.8..(.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b980 2992 16f1 ..(..7...A..)... 0x0020 8018 16d0 8768 0000 0101 080a 0223 79b9 .....h.......#y. 0x0030 04d1 f908 31 ....r ---중략--- 20:38:26.540930 210.xxx.xxx.100.35383 > xxx.com.telnet: P [tcp sum ok] 96:97(1) ack 200 win 5840 <nop,nop,timestamp 35879363 80869742> (DF) [tos 0x10] (ttl 56, id 49497, len 53) 0x0000 4510 0035 c159 4000 3806 f827 d27b c1c2 E..5.Y@.8..'.{.. 0x0010 cbf7 28fc 8a37 0017 2041 b981 2992 16f1 ..(..7...A..)... 0x0020 8018 16d0 80f7 0000 0101 080a 0223 79c3 .............#y. 0x0030 04d1 f96e 37 ...nd ---이하생략--- => 패스워드가 password라는 것을 알 수 있다.출처 : http://www.attikorea.com/secuutil/tcpdump.html
TCPDUMP User Guide

Date : January 1999

written by Kwon, YongChul

-. 이 문서의 저작권은 저자(권용철:godslord@sparcs.kaist.ac.kr)에게 있습니다. 본문의 무단 인용, 복사는 저자와의 협의 없이 절대 불가능합니다.


Table of Contents


  • 이 문서를 보기 전에 알아야 할 사전 지식

    이 문서는 네트워크의 패킷들을 잡아내는 Tcpdump라는 프로그램에 대해서 설명하고 있다. 프로그램의 특성상, 네트워크에 관련된 많은 용어들과 특히 TCP/IP에 대한 내용 이 많이 나온다. 따라서 보다 잘 이해하기 위해서는 네트워크 설비 자료나, 네트워크 프로그래밍 가이드, 혹은 네트워크 프로토콜(TCP/IP)에 관련된 책들을 참조하는 것이 좋을 것이다.


  • Tcpdump란?

    Tcpdump는 주어진 조건식을 만족하는 네트워크 인터페이스를 거치는 패킷들의 헤더들 을 출력해 주는 프로그램이다. 프로그램의 특성상, 네트워크 인터페이스를 아주 심도 있게 사용하기 때문에, 실행하는 사람은 반드시 네트워크 인터페이스에 대한 읽기 권 한이 있어야만 한다.
    OS dependent)
    위에서 말하는 읽기 권한을 가지고 있어야 하는 파일, 혹은 Tcpdump의 퍼미션 이다.

    • SunOS : /dev/nit, /dev/bpf*
    • Solaris(SunOS 5.x) : /dev/le 등
    • HP-UX & IRIX & Linux : root에서 실행하거나, root로 setuid를 설정해야 함
    • Ultrix & Digital UNIX : root가 pfconfig를 이용하여, promiscuous-mode를 가능하게 설정하면 어떤 유저라도 사용할 수 있다.
    • BSD : /dev/bpf*


  • Tcpdump의 패키지 구하기

    Tcpdump는 ftp://ftp.ee.lbl.gov/tcpdump.tar.Z에서 최신 버전을 구할 수 있다. 유명 한 프로그램이기 때문에, 시스템소프트웨어를 패키지형태로 제공해 주는 OS들의 경우 Vendor에서 패키징된(컴파일된) 버전으로도 구할 수 있을 것이다.


  • Tcpdump의 설치

    Tcpdump는 libpcap(Protocol Capture Library)라는 것을 사용한다. 이 라이브러리는 Platform에 상관없이 동일한 방법으로 사용자 레벨에서 패킷들을 캡춰할 수 있게 해 준다. 따라서 이 라이브러리가 없다면, ftp://ftp.ee.lbl.gov/libpcap.tar.Z에서 구하 여 설치하도록 한다.

    ANSI C 컴파일러는 아마 대부분의 시스템에서 구비하고 있을 것이다. 만약 없다면 ftp://prep.ai.mit.edu/pub/gnu/gcc.tar.gz를 받아서 설치하기 바란다.

    libpcap라이브러리가 완벽하게 설치되었다는 가정하에서 다음의 절차에 따라 설치를 시작한다.

    • Makefile.in의 BINDEST와 MANDEST 항목에 각각, tcpdump 실행파일과 메뉴얼 페이 지가 설치될 디렉토리들을 입력해 준다.
    • Tcpdump 패키지와 함께 제공되는 ./configure 스크립트를 실행시킨다. 이 스크립트는 현재 시스템의 환경들을 검사하고 이에 맞추어서 Makefile을 생성해 준다.
    • make를 실행한다.
    • 컴파일이 다 됐으면, make install을 수행하여 실행파일을 설치하고, make install-man을 실행하여 메뉴얼 페이지도 설치한다.
    • tcpdump의 퍼미션이 제대로 되었는지를 검사한다. setgid가 설정되어 있기 때문에, 원하지 않는 사람이 실행하게 된다면 위험하다.
    위에서 설명한 절차를 그대로 옮겨 본다.
    # vi Makefile.in
    # ./configure
    # make
    # make install
    # make install-man
    
    OS dependent)
    • DEC/OSF and BSD/386, etc : tcpdump가 OS와 함께 제공되는 경우가 있다. 이럴 경우 tcpdump를 업그레이드 하기 전에 반드시 기존의 tcpdump를 백업해 두도록 하자.
    • Linux : libpcap 라이브러리는 2.0.25 커널에서 테스트 됐다. 2.0.x 대 커널 에서 25이하의 버전에서는 실행이 아마 가능할 것이다. 그러나 1.x대의 커널에서는 동작 여부가 입증되지 않았으므로 주의해야 한다.
    • OSF 4 : OSF4에서는 stack C 컴파일러에 치명적인 버그가 있다. 이 버그를 피해가려면, ./configure를 실행한 후 컴파일 하기 전에 Makefile에서 다음의 문장을 삭제한 후 컴파일해 주면 된다.
                -DETHER_HEADER_HAS_EA=1 -DETHER_ARP_HAS_EA=1
    


  • Tcpdump Source의 간략한 설명


  • Tcpdump의 옵션들

    • -a : Network & Broadcast 주소들을 이름들로 바꾼다.
    • -c Number : 제시된 수의 패킷을 받은 후 종료한다.
    • -d : comile된 packet-matching code를 사람이 읽을 수 있도록 바꾸어 표준 출력으로 출력하고, 종료한다.
    • -dd : packet-matching code를 C program의 일부로 출력한다.
    • -ddd : packet-matching code를 숫자로 출력한다.
    • -e : 출력되는 각각의 행에 대해서 link-level 헤더를 출력한다.
    • -f : 외부의 internet address를 가급적 심볼로 출력한다(Sun의 yp server와의 사용은 가급적 피하자).
    • -F file : filter 표현의 입력으로 파일을 받아들인다. 커맨드라인에 주어진 추가의 표현들은 모두 무시된다.
    • -i device : 어느 인터페이스를 경유하는 패킷들을 잡을지 지정한다. 지저되지 않으면 시스템의 인터페이스 리스트를 뒤져서 가장 낮은 번호를 가진 인터페이스를 선택한다(이 때 loopback은 제외된다).
    • -l : 표준 출력으로 나가는 데이터들을 line buffering한다. 다른 프로그램에서 tcpdump로부터 데이터를 받고자 할 때, 유용하다.
    • -n : 모든 주소들을 번역하지 않는다(port,host address 등등)
    • -N : 호스트 이름을 출력할 때, 도메인을 찍지 않는다.
    • -O : packet-matching code optimizer를 실행하지 않는다. 이 옵션은 optimizer에 있는 버그를 찾을 때나 쓰인다.
    • -p : 인터페이스를 promiscuous mode로 두지 않는다.
    • -q : 프로토콜에 대한 정보를 덜 출력한다. 따라서 출력되는 라인이 좀 더 짧아진다.
    • -r file : 패킷들을 '-w'옵션으로 만들어진 파일로 부터 읽어 들인다. 파일에 "-" 가 사용되면 표준 입력을 통해서 받아들인다.
    • -s length: 패킷들로부터 추출하는 샘플을 default값인 68Byte외의 값으로 설정할 때 사용한다(SunOS의 NIT에서는 최소가 96Byte이다). 68Byte는 IP,ICMP, TCP, UDP등에 적절한 값이지만 Name Server나 NFS 패킷들의 경우에는 프로토콜의 정보들을 Truncation할 우려가 있다. 이 옵션을 수정할 때는 신중해야만 한다. 이유는 샘플 사이즈를 크게 잡으면 곧 패킷 하나하나를 처리하는데 시간이 더 걸릴 뿐만아니라 패킷 버퍼의 사이즈도 자연히 작아지게 되어 손실되는 패킷들이 발생할 수 있기 때문이다. 또, 작게 잡으면 그만큼의 정보를 잃게되는 것이다. 따라서 가급적 캡춰하고자 하는 프로토콜의 헤더 사이즈에 가깝게 잡아주어야 한다.
    • -T type : 조건식에 의해 선택된 패킷들을 명시된 형식으로 표시한다. type에는 다음과 같은 것들이 올 수 있다. rpc(Remote Procedure Call), rtp(Real-Time Applications protocol), rtcp(Real-Time Application control protocal), vat(Visual Audio Tool), wb(distributed White Board)
    • -S : TCP sequence번호를 상대적인 번호가 아닌 절대적인 번호로 출력한다.
    • -t : 출력되는 각각의 라인에 시간을 출력하지 않는다.
    • -tt : 출력되는 각각의 라인에 형식이 없는 시간들을 출력한다.
    • -v : 좀 더 많은 정보들을 출력한다.
    • -vv : '-v'보다 좀 더 많은 정보들을 출력한다.
    • -w : 캡춰한 패킷들을 분석해서 출력하는 대신에 그대로 파일에 저장한다.
    • -x : 각각의 패킷을 헥사코드로 출력한다.

    조건식(expression)

    옵션의 제일 마지막인 조건식은 어떤 패킷들을 출력할지를 선택하는데 쓰인다. 조건식이 주어지지 않는 다면 모든 패킷들이 그 대상이 될 것이다. 일단 주어지면, 아무리 패킷들이 많아도 조 건식에 부합하는 패킷만을 출력한다.

    조건식들은 하나 또는 몇 개의 primitive들로 구성되어 있다. primitive들은 보통 하나 혹은 몇개의 qualifier들 다음에 오는 하나의 값으로 이루어진다. Qualifier들은 모두 3 종류이며 다음과 같다.

    • type : 주어진 값의 종류가 무엇인지를 나타낸다. 가능한 type들은 'host', 'net', 'port'가 있다. type이 없는 값들은 type을 host라 가정한다.
    • dir : id로 부터의 어떤 특정한 전송 방향을 나타낸다. 가능한 방향은 'src', 'dst', 'src or dst', 'src and dst'이다. 만약 방향이 정해지지 않았다면, src or dst라 가정한다. "For `null' link layers (i.e. point to point protocols such as slip) the inb ound and out bound qualifiers can be used to specify a desired direction."
    • proto : 매칭을 특정 프로토콜에 한해서 수행한다. 가능한 프로토콜들은 ether, fddi, ip, arp, rarp, decnet, lat, sca, moprc, mopdl, tcp, udp이다. 만약 프로토콜이 명시되지 않았다면, 해당하는 값의 type에 관련된 모든 프로토콜들이 그 대상이 된다.

    이 밖에도 위의 패턴을 따르지 않는 Primitive들이 존재한다(gateway, broadcst, less, greater, 산술식).

    좀 더 정교한 조건식들을 사용하려면, 'and(&&)', 'or(||)', 'not(!)'들을 사용하여 여러 primitive들을 연결하면 된다. 같은 표현들은 생략될 수 있다.

    사용 가능한 Primitive들

    • dst host HOST
      packet의 IP destination 항목이 HOST일때 참이 된다.
    • src host HOST
      packet의 IP source 항목이 HOST일때 참이 된다.
    • host HOST
      IP source, IP destination 항목 중 어느 하나라도 HOST이면 참이다.
    • ether dst ehost
      ethernet destination 주소가 ehost일 때 참이다.
    • ether src ehost
      ethernet source 주소가 ehost일 때 참이다.
    • ether host ehost
      ethernet source, destination 항목들 중 어느 하나라도 ehost이면 참이다.
    • gateway host
      패킷이 host를 게이트웨이로 사용하면 참이다. 이 말의 의미는 ethernet sour ce나 destination 항목은 host이지만, IP source와 destination은 host가 아닐 때를 말한다.
    • dst net NET
      패킷의 IP destination 주소가 NET의 network number를 가지고 있을 때 참이 다.
    • src net NET
      패킷의 IP source 주소가 NET의 network number를 가지고 있을 때 참이다.
    • net NET
      패킷의 IP source 주소 혹은 destination 주소가 NET의 network number를 가 지고 있을 때 참이다.
    • net netmask mask
      IP 어드레스가 지정된 netmask를 통해서 net과 매칭되면 참이다.
    • net net/len
      IP 어드레스가 netmask와 len 비트만큼 매치되면 참이다.
    • dst port PORT
      패킷이 ip/tcp, ip/udp 프로토콜의 패킷이고 destination port의 값이 PORT일 때 참이다. port는 /etc/services에 명시된 이름일 수도 있고 그냥 숫자일 수도 있다. 만약 이름이 사용됐다면 port 번호와 프로토콜이 같이 체크될 것이다. 만약 숫자나 불 확실한 이름이 사용됐을 경우에는 port 번호만이 체크될 것이다.
    • src port PORT
      패킷의 source port의 값으로 PORT를 가지면 참이다.
    • port PORT
      패킷의 source, destination port 중에 하나라도 PORT이면 참이다.
    • less length
      패킷이 length보다 짧거나 같으면 참이다.(len <= length)
    • greater length
      패킷이 length보다 짧거나 같으면 참이다.(len >= length)
    • ip proto protocol
      패킷이 지정된 종류의 프로토콜의 ip패킷이면 참이다. Protocol은 icmp, igrp, udp, nd, tcp 중의 하나 혹은 몇 개가 될 수 있다. 주의할 점은 tcp, udp, icmp들은 '\'로 escape되어야 한다.
    • ehter broadcast
      패킷이 ethernet broadcast 패킷이라면 참이다. ehter는 생략 가능하다.
    • ip broadcast
      패킷이 IP broadcast 패킷이라면 참이다.
    • ether multicast
      패킷이 IP multicast 패킷이라면 참이다.
    • ether proto protocol
      패킷이 ether type의 protocol이라면 참이다. protocol은 ip, arp, rarp 중에 하나 혹은 몇개가 될 수 있다. ip proto protocol에서와 마찬가지로 ip, arp, rarp는 escape 되어야 한다.
    • decnet src host
      만약 DECNET의 source address가 host이면 참이다. 이 어드레스는 '10.123'이 나 DECNET의 host name일 수 있다. DECNET host name은 DECNET에서 돌아가도록 설정된 Ultrix 시스템에서만 사용 가능하다.
    • decnet dst host
      DECNET destination address가 host이면 참이다.
    • decnet host HOST
      DECNET source, destination address중의 하나라도 HOST이면 참이다.
    • ip, arp, rarp, decnet
      ether proto [ip|arp|rarp|decnet]의 약어
    • lat, moprc, mopdl
      ether proto [lat|moprc|mopdl]의 약어
    • tcp, udp, icmp
      ip proto [tcp|udp|icmp]의 약어
    • expr relop expr
      • EXPR
        proto [expr:size]의 형식을 띤다. proto, expr, size에 올 수 있는 것들은 다음과 같다.
        • proto : ether, fddi, ip, arp, rarp, tcp, udp, icmp
        • expr : indicate Byte offset of packet of proto
        • size : optional. indicate the size of bytes in field of interest
        • default is one, and can be two or four
      • RELOP
        !=, =, <=, >=, etc.

      이 조건식을 사용하기 위해서는 먼저 해당하는 Protocol(proto)의 헤더에 관련된 것들을 자세히 알아야만 한다. proto에는 대상이 될 프로토콜을 지정한다. expr에는 프로토콜 헤더의 처음부터의 Byte Offset을 지정하는 식이 들어가게 된다. Size는 Option이며 지정이 안 되어 있을 경우에는 자동으로 1byte를 지칭한다. 따라서 이 조건식을 사용하게 되면 헤더에 포함된 정보를 Bitmask를 사용하여 직 접 원하는 패킷인지를 가려낼 수 있기 때문에, 보다 정밀한 사용이 가능하게 된다.


  • Tcpdump의 사용 예제들

    • security라는 호스트로부터 날아오고, 날아가는 패킷들을 출력
      # tcpdump host security
    • security와 mazinga, getarobo 사이에 날아다니고 있는 패킷들을 출력
      # tcpdump host security and \( mazinga or getarobo \)
    • security에서 elgaim을 제외한 모든 호스트로 날아다니는 IP 패킷들을 출력
      # tcpdump ip host security and not elgaim
    • gateway amurorei를 거치는 ftp에 관련된 패킷들을 출력
      # tcpdump 'gateway amurorei and ( port ftp or ftp-data )'
    • local호스트가 아닌 호스트와 로컬호스트가 맺는 TCP 커넥션의 시작과 마지막 패 킷들을 출력한다(SYN, FIN 패킷).
      # tcpdump 'tcp[13] & 3 != 0 and not src and dst net non-local'
    • gateway amurorei를 지나는 576Byte보다 큰 패킷들을 출력한다
      # tcpdump 'gateway amurorei and ip[2:2] > 576'
    • Ethernet boradcast 혹은 multicast를 통해서 보내진 것이 아닌, IP broadcast 혹 은 multicast 패킷들을 출력한다.
      # tcpdump 'ehter[0] & 1 = 0 and ip[16] >= 224'
    • Echo request/reply가 아닌 ICMP 패킷들을 모두 출력한다.
      # tcpdump 'icmp[0] != 8 and icmp[0] != 0'


  • Tcpdump의 평가

    TCPDUMP는 여러모로 좋은 툴이다. libpcap을 거의 100% 활용한 프로그램의 예이며, 실제로 많은 툴들이 TCPDUMP와 병행하여 돌아가거나, TCPDUMP를 기반으로 제작되었다. TCPDUMP의 막강한 packet filter는 현재 로컬 네트워크 상에서 날아다니고 있는 특정한 패킷들을 실시간으로 기록해 줄 수 있으며, 이를 이용하여 네트워크에서 벌어지는 일들을 네트워크 관리자가 원하는 대로 뽑아 볼 수 있게 해 준다. 또한, 시스템 관리자들에게는 로컬 유저의 외부로의 커넥션들을 감시하고, 또 특정 침입자가 침투 경로로 자주 이용하는 호스트, 혹은 원하지 않는 호스트로부터의 커넥션을 실시간으로 감시할 수 있게 해 준다. libpcap을 이용하여 비슷한 툴을 제작하고자 하는 사람들에게도 TCPDUMP는 가장 훌륭한 예제가 될 것이다.

    [출처] http://kotda.tistory.com/183

Posted by @dmin @dmin

댓글을 달아 주세요