본문
안녕하세요, 저는 길당이라 합니다.
어느새 10월 13일 토요일이군요.
오늘은 네트워크 트래픽 분석에 대한 짧막한
글을 올립니다.
이제나 저제나 여기에 제가 올리는 글은
어디까지나, 제가 공부를 하면서 책의 내용들과 그 과정들을
워드문서에 담아 놓은 내용들입니다.
여전히 모르고 있는 내용들이 많으며, 매일 공부를 하고 있습니다.
===========================================================================
[네트워크 트래픽 분석]
네트워크 관리자라면 네트워크 트래픽을 분석할 수 있어야 한다. 네트워크 트래픽을 분석하기 위해서는 네트워크에 대한 많은 지식이 필요하다. 네트워크 패킷에 대한 많은 지식을 쌓기 전에 일단 네트워크 트래픽을 분석하는 툴의 사용법을 익혀 보도록 하자.
리눅스에서 네트워크 트래픽을 분석하기 위해서 가장 많이 사용되는 툴은 tcpdump이다.
물론 윈도우 2000에서 제공되는 네트워크 모니터만큼 편리한 UI를 제공하지는 않지만 있을 기능은 다 있는 네트워크 트래픽 분석기이다.
파일은 /usr/sbin/tcpdump에 존재한다. 소스를 가져다가 컴파일을 해보고 싶은 독자는 http://www.tcpdump.org/ 사이트에서 소스를 가져올 수 있다.
먼저 libpcap(Protocol Capture Library)을 다운 받아서 설치를 한 다음, tcpdump를 설치하면 된다. 그러나 리눅스 배포판에 기본적으로 있기 때문에 굳이 설치할 필요는 없으리라 생각된다.
일단 어떤 타입의 프로토콜에 대해서 패킷을 모니터링할 것인가를 정할 수 있다.
다음의 예는 arp 타입의 프로토콜에 대해서 모든 패킷을 모니터링하는 명령어이다.
B 옵션은 네트워크 7레이어 중에 데이터 링크 계층에 해당하는 프로토콜만을 필터링하는데 쓰인다.
지원하는 프로토콜은 ip, ipv6, 802.2, 802.3, arp, rarp, dec, lat, atalk, aarp, x25 and ipx이다.
이외에 많은 옵션들이 있으니 독자 여러분들은 man page를 확인하기 바란다. 다음은 tcpdump를 사용한 예제들이다. 만약 필터링한 것을 파일에 저장하고 싶다면 리다이렉션을 사용하면 된다.
이외의 옵션은 다음과 같다.
사실 네트워크에 흐르는 그 많은 데이터들을 모두 모니터링해서 관심이 있는 것만을 걸러 내는 것은 쉬운 일이 아니다.
사용자가 관심이 있는 것만을 모니터링하기 위해서 사용하는 것이 '필터'라는 것이다.
옵션의 한 형식인데, 자신이 원하는 형식의 패킷만을 지정할 수 있다.
다음의 예는 포트번호 80번에 대한 패킷을 모니터링한 결과이다.
패킷을 읽어보면 eth0 네트워크 카드에 211.193.29.127로부터 자신의 IP인 61.75.78.125로 HTTP 프로토콜을 사용해서 접근되었다는 것을 알 수 있다.
61.193.29.127로 오고 가는 모든 패킷을 잡아낸다.
192.168.1.22에서 출발해서 192.168.1.1로 가는 패킷을 모두 잡아낸다.
(이미지의 내용이 글의 내용과 혼동의 여지가 있어서 글의 내용대로 예제를 적습니다.)
( tcpdump src 192.168.1.22 and dst 192.168.1.1 )
(제게 글의 내용의 오류를 지적해 주신 슈크림님 감사드립니다.)
210.219.1.22 컴퓨터 ftp 포트를 사용하는 모든 패킷을 잡아낸다.
(이미지의 내용이 글의 내용과 혼동의 여지가 있어서 글의 내용대로 예제를 적습니다.)
( tcpdump host 210.219.1.22 and port 21 )
(제게 글의 내용의 오류를 지적해 주신 슈크림님 감사드립니다.)
조금만 응용하면 많은 조합을 만들어서 자신이 원하는 패킷을 캡쳐할 수 있다. 여러 가지 조합을 해보면서 tcpdump에 대해서 이해하도록 하자.
[ 이 장을 마치며 ]
[ 시스템이 부팅되면 BIOS 콜은 LILO를 로딩하고 LILO는 커널을 로드한다. 커널이 로드된 후 프로세스 ID 1번인 INIT 프로세스가 로드된다. INIT 프로세스는 모든 프로세스의 부모 프로세스로 시스템을 초기화하고 각종 데몬들을 활성화하는 역할을 맡는다. ]
[ 계정은 일종의 출입증과 같은 역할을 한다. 계정과 비밀번호를 입력함으로써 시스템에 로그인할 수 있고 자신에게 할당된 자원을 사용할 수 있다. 계정은 크게 사용자 계정과 그룹 계정으로 나뉜다. 사용자 계정은 한 사용자에 대한 계정이고 그룹 계정은 사용자 계정을 묶는 역할을 한다. 그룹 계정을 사용하면 개개의 사용자 계정에게 퍼미션을 주지 않고 그룹 계정에게 퍼미션을 줄 수 있기 때문에 시스템 관리를 용이하게 할 수 있다. ]
[ 각각의 파일에는 소유자가 있다. 파일을 소유한다는 것은 그 파일에 대해서 절대적인 권한을 가지고 있다는 의미이다. 또한 퍼미션은 사용자, 그룹, 그 외 사용자 세 개의 옥텍으로 구성되어 각 범위에 맞게 읽기, 쓰기, 실행 권한을 설정할 수 있다. ]
[ 프로세스는 리눅스 시스템의 작업 단위이다. 프로그램을 실행시키면 프로세스가 뜨게 되고 관리자나 사용자는 ps와 kill 명령어를 통해서 프로세스를 모니터링하고 프로세스를 핸들링할 수 있다. ]
[리눅스 시스템은 각 디스크 별로 디스크의 ID를 만드는 규칙이 있다. 확장 IDE인 경우 hd라는 어미가 붙고 스카시인 경우 sd라는 어미가 붙는다. 디스크는 대용량으로 업그레이드를 할 수 있으며 RAID와 같은 기술을 사용해 혹시 있을 수 있는 물리적인 디스크 에러를 막을 수 있다. ]
[리눅스가 다중 사용자 환경이기 때문에 한 사용자가 모든 자원을 사용하도록 방관할 수는 없다. 리눅스에서 디스크 사용량을 제한하기 위한 기능으로 쿼터라는 것이 있다. ]
[ 리눅스를 포함한 유닉스 파일 시스템은 비슷한 구조로 이루어져 있다. 그 이유는 FHS라는 디렉토리 구조 표본을 서로 지키고 있기 때문이다. 각 유닉스 마다 약간의 차이가 있을 수 있으나 FHS를 공부하면 어떤 유닉스든지 쉽게 디렉토리 구조를 파악할 수 있다. ]
[ 리눅스에서 소프트웨어를 쉽게 설치, 제거, 업그레이드, 검증하기 위해 RPM 패키지를 사용한다. 소스를 컴파일해서 설치를 하면 프로그램의 세세한 부분까지 다룰 수가 있다. 하지만 보통의 경우라면 이미 바이너리로 변환된 RPM 패키지를 사용하면 소프트웨어 관리를 할 수 있다. ]
[ 관리자가 해야 하는 번거로운 작업 중에 하나가 바로 시스템을 계속 모니터링해야 하는 일이다. 관리자는 시스템에 산재해 있는 다양한 로그를 모니터링해야 한다. 하지만 그 많은 로그를 관리자가 모두 확인하고 관리하는 것은 불가능하다. 이런 경우 SWATCH, MRTG, Logrotate, 네트워크 모니터와 같은 툴을 사용하여 시스템 모니터링에 효율을 높일 수 있다. ]
=================================================================================
다음에는 DNS에 관한 글을 올리게 됩니다. 일단 기본적인 내용을 먼저 올리게 될 것이구요.
차차로 고급기능 등과 여러 리눅스에서의 셋팅과정 등등 세세한 내용을 공부를 하면서
기록을 해가면서 보충이 되는대로 올리게 될 것입니다.
관련링크
댓글목록
등록된 댓글이 없습니다.