메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

한빛랩스 - 지식에 가능성을 머지하다 / 강의 콘텐츠 무료로 수강하시고 피드백을 남겨주세요. ▶︎

IT/모바일

보안 도구 분석 - 2부

한빛미디어

|

2001-08-18

|

by HANBIT

13,689

by 칼 콘스탄틴(Carl Constantine), 역 포항공대 PLUS 손민구 이 글은 3부에 걸쳐 리눅스 보안도구에 관해 소개를 하는 글 중에 제 2부에 해당하는 글이다. 이 글에서는 여러분이 운영하고 있는 시스템의 보안 구멍이나, 잠재적인 위험성을 찾아낼 수 있고, 결과적으로 시스템의 보안 레벨을 한층 높일 수 있도록, 여러 가지 보안 도구를 소개할 것이다. 1부에서는, 허니팟(honey pots), 이더리얼(Ethereal), nmap에 관해 대략적인 소개를 하였다. 이번 글에서는 tcpdump와 트립와이어(Tripwire)에 관해 살펴보기로 하자. tcpdump tcpdump는 Lawrence Berkley National Lab.의 Network Research Group에서 만든 것으로, 네트워크의 패킷을 분석할 때 쓰는 도구이다. 이름에서 알 수 있듯이 tcpdump는 TCP 패킷을 화면이나 파일로 출력(dump)해준다. 사실 tcpdumpsnortshadow와 같은 다른 네트워크 분석 도구의 보조 역할을 하기도 한다. tcpdump에 포함되어 있는 libcap이라는 패킷 캡처 라이브러리는 이더리얼(Ethereal)을 비롯한 다른 도구들에 의해 사용되기도 한다 (이더리얼에 관해서는 1부에서 설명했다). tcpdump 웹사이트에 가면 보다 자세한 설명을 볼 수 있다. tcpdump는 대부분의 리눅스 배포판에 기본으로 깔려 있으므로, 굳이 tcpdump를 구하러 다닐 필요는 없을 것이다. tcpdump는 루트(root)만이 사용할 수 있다. tcpdump보다 좀더 깔끔하고, 알아보기 쉬운 결과를 내놓는 다른 많은 도구들(상용 제품들도 있다)이 있지만, tcpdump는 네트워크를 저수준에서 분석할 때 훨씬 유용한 도구이다. 아무 옵션을 주지 않고 tcpdump를 실행시키면, 네트워크 인터페이스(보통 이더넷)로부터 모든 패킷을 읽어 들여서, 그 결과를 몽땅 화면으로 출력해 준다. 보통 네트워크로 데이터가 많이 이동하는 시스템에서 tcpdump의 결과를 화면으로 출력하면, 걷잡을 수 없을 만큼 많은 내용이 화면에 출력된다. 그래서 tcpdump는 많은 옵션을 제공함으로써, 시스템 관리에 도움을 준다. 자, tcpdump로 캡처할수 있는 전형적인 패킷을 한번 살펴보자. 아래의 결과는 아무런 옵션도 주지 않은 상태로 tcpdump를 실행시킨 결과다.

13:37:11.950966 Mallard.36872 > archive.progeny.com.www: . ack 1259760 win 376
48  (DF)
이 패킷은 웹 서버로부터 온 것이다. 필자는 경험으로 알 수 있다. 하지만 독자 여러분의 이해를 돕기 위해 좀더 자세히 분석을 해보자.

목적지 포트는 archive.progeny.com의 80번 포트이다(보통 TCP 포트 80번은 웹 서버가 사용한다). 즉, 이 패킷은 "Mallard"라는 필자의 머신에서 웹 서버로 보내 졌다는 것을 알 수 있다. 또한 IP 주소 대신 호스트네임이 출력되었다는 것도 볼 수 있다. 결과를 출력할 때 호스트네임 대신 IP 주소로 출력하게 할 수 있고(-n 옵션을 사용), 시간이 출력되지 않게 할 수도 있다(-t 옵션을 사용). TCP 플래그(flags) tcpdump를 사용할 때 여러 가지 TCP 플래그(flags)를 사용할 수 있는데, 이에는 s, ack, f, r, p, urg, .(마침표) 등이 있다. 아래에 간단히 소개하겠다.
TCP 플래그tcpdump에서 쓰는 플래그플래그의 의미
SYNsSyn 패킷, 접속요청을 할 때 보낸다. TCP 접속을 할 때 가장 먼저 보내는 패킷이다.
ACKackAck 패킷, 상대방으로부터 패킷을 받았음을 알려주기 위해 보낸다. 다른 플래그와 함께 출력되는 경우도 있다.
FINf접속 종료를 위한 플래그로, 이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 접속을 끊고자 할 때 사용한다.
RESETr이 패킷을 보내는 곳이 현재 접속하고 있는 곳과 즉시 연결을 끊고자 할 때 사용한다.
PUSHp데이터를 즉시 목적지로 보내라는 의미이다. 텔넷(telnet)과 같이 상호작용이 중요한 프로그램의 경우, 빠른 응답이 생명이다. 그래서 "push" 플래그를 사용한다.
URGENTurg긴급한 데이터는 다른 데이터에 비해 우선 순위가 높아야 한다. 예를 들어 ftp로 자료를 받고 있는 도중 Ctrl-C를 받으면 즉시 자료 받기를 중단해야 한다.
Placeholder.패킷이 syn, finish, reset, push 등의 플래그가 없는 경우, placefolder 플래그가 세팅된다. 이 플래그는 ack 플래그와 함께 사용되는 경우도 있다.
tcpdump 결과를 완전히 이해하기 까지는 약간의 시간과 노력이 든다. 리차드 스티븐슨(Richard Stevens) 박사의 TCP/IP Illustrated 1권은 TCP에 관한 지식을 쌓기에 도움이 될 것이다. tcpdump의 다른 세션 다른 예를 분석하면서 설명을 하겠다. 1부에서는 이더리얼을 사용해서 TCP 패킷을 분석해 보았다. tcpdump로 비슷한 예들 들어보자. 이번에는 특별히 다음과 같은 옵션을 사용해서 패킷을 덤프(dump)했다. tcpdump -l -vvv -x -X > tcpdat & tail -f tcpdat. 이 명령은 8진법과 2진법으로 결과를 출력하도록 한다(그것도 매우 자세하게).
15:55:37.842404 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 107:110(3) ack 88 win 5840 Telnet: 0x0000 fffd 01 DO ECHO (DF) [tos 0x10] (ttl 64, id 45160, len 55) 0x0000 4510 0037 b068 4000 4006 05e1 c0a8 0119 E..7.h@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4eec 744a ed10 .....3..u$N.tJ.. 0x0020 8018 16d0 2035 0000 0101 080a 0eec fef0 .....5.......... 0x0030 1f61 d752 fffd 01 .a.R... 15:55:37.843792 192.168.1.254.telnet > Mallard.36915: P [tcp sum ok] 88:107(19) ack 110 win 32120 (DF) (ttl 64, id 6922, len 71) 0x0000 4500 0047 1b0a 4000 4006 9b3f c0a8 01fe E..G..@.@..?.... 0x0010 c0a8 0119 0017 9033 744a ed10 7524 4eef .......3tJ..u$N. 0x0020 8018 7d78 2b8d 0000 0101 080a 1f61 d752 ..}x+........a.R 0x0030 0eec fef0 0d0a 6c6f 6361 6c68 6f73 7420 ......localhost. 0x0040 6c6f 6769 6e3a 20 login:.
네트워크를 통해 다른 머신으로 접속을 하였다. 마지막 라인을 보라! 로그인 아이디가 비어 있다. 텔넷(telnet) 예제를 통해서 우리는 모든 키보드 입력이 상대방 머신으로 각기 다른 패킷으로 보내진다는 것을 알 수 있다. 주의: 어떤 패킷은 서버로부터 클라이언트로 그저 반사되어 돌아온 것(echo packets)이므로 제거했다.
15:55:37.879456 Mallard.36915 > 192.168.1.254.telnet: . [tcp sum ok] 110:110(0) ack 107 win 5840 (DF) [tos 0x10] (ttl 64, id 45161, len 52) 0x0000 4510 0034 b069 4000 4006 05e3 c0a8 0119 E..4.i@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4eef 744a ed23 .....3..u$N.tJ.# 0x0020 8010 16d0 2124 0000 0101 080a 0eec fef4 ....!$.......... 0x0030 1f61 d752 .a.R 15:55:38.672320 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 111:112(1) ack 108 win 5840 (DF) [tos 0x10] (ttl 64, id 45164, len 53) 0x0000 4510 0035 b06c 4000 4006 05df c0a8 0119 E..5.l@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef0 744a ed24 .....3..u$N.tJ.$ 0x0020 8018 16d0 b18a 0000 0101 080a 0eec ff43 ...............C 0x0030 1f61 d791 6f .a..o 15:55:38.798130 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 112:113(1) ack 109 win 5840 (DF) [tos 0x10] (ttl 64, id 45166, len 53) 0x0000 4510 0035 b06e 4000 4006 05dd c0a8 0119 E..5.n@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef1 744a ed25 .....3..u$N.tJ.% 0x0020 8018 16d0 b168 0000 0101 080a 0eec ff4f .....h.........O 0x0030 1f61 d7a5 6f .a..o 15:55:38.922395 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 113:114(1) ack 110 win 5840 (DF) [tos 0x10] (ttl 64, id 45168, len 53) 0x0000 4510 0035 b070 4000 4006 05db c0a8 0119 E..5.p@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef2 744a ed26 .....3..u$N.tJ.& 0x0020 8018 16d0 ac4c 0000 0101 080a 0eec ff5c .....L.........₩ 0x0030 1f61 d7b2 74 .a..t
앗! 이럴 수가! 누군가가 루트(root)로 로르인하려 하고 있다. 한가지 알아야 할 것은, 루트(root)로는 절대로 로그인하면 안 된다. 일반 사용자로 로그인 하고, su 명령을 사용하여 루트 권한을 얻도록 하라! (역자주: 텔넷은 어떤 환경에서도 위험하다. 물론, 그렇다고 해서 텔넷을 결코 사용하면 안된다는 것은 아니지만, 스니핑(sniffing)의 위험이 도사리고 있기 때문에 보안 셸(secure shell, ssh)을 권하는 바이다. 본인도 실제로 스니핑을 당해보기도 하였고, 해보기도 하였다.) 나머지 패킷들도 살펴보자.
15:55:39.175941 192.168.1.254.telnet > Mallard.36915: P [tcp sum ok] 113:123(10) ack 116 win 32120 (DF) ( ttl 64, id 6928, len 62) 0x0000 4500 003e 1b10 4000 4006 9b42 c0a8 01fe E..>..@.@..B.... 0x0010 c0a8 0119 0017 9033 744a ed29 7524 4ef5 .......3tJ.)u$N. 0x0020 8018 7d78 d18f 0000 0101 080a 1f61 d7d7 ..}x.........a.. 0x0030 0eec ff74 5061 7373 776f 7264 3a20 ...tPassword:.
패스워드를 기다리는 프롬프트가 떴다. 각 패킷의 마지막 글자를 잘 살펴보자.
15:55:40.290932 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 116:117(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45173, len 53) 0x0000 4510 0035 b075 4000 4006 05d6 c0a8 0119 E..5.u@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef5 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 b78e 0000 0101 080a 0eec ffe5 ................ 0x0030 1f61 d7d7 68 .a..h 15:55:40.382285 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 117:118(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45174, len 53) 0x0000 4510 0035 b076 4000 4006 05d5 c0a8 0119 E..5.v@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef6 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 b012 0000 0101 080a 0eec ffee ................ 0x0030 1f61 d849 6f .a.Io 15:55:40.485134 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 118:119(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45175, len 53) 0x0000 4510 0035 b077 4000 4006 05d4 c0a8 0119 E..5.w@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef7 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 b1fe 0000 0101 080a 0eec fff8 ................ 0x0030 1f61 d852 6d .a.Rm 15:55:40.611048 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 119:120(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45176, len 53) 0x0000 4510 0035 b078 4000 4006 05d3 c0a8 0119 E..5.x@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef8 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 b9e6 0000 0101 080a 0eed 0005 ................ 0x0030 1f61 d85c 65 .a.₩e 15:55:40.918409 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 120:121(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45177, len 53) 0x0000 4510 0035 b079 4000 4006 05d2 c0a8 0119 E..5.y@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4ef9 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 bcba 0000 0101 080a 0eed 0023 ...............# 0x0030 1f61 d869 62 .a.ib 15:55:41.080038 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 121:122(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45178, len 53) 0x0000 4510 0035 b07a 4000 4006 05d1 c0a8 0119 E..5.z@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4efa 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 bd89 0000 0101 080a 0eed 0034 ...............4 0x0030 1f61 d888 61 .a..a 15:55:41.221580 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 122:123(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45179, len 53) 0x0000 4510 0035 b07b 4000 4006 05d0 c0a8 0119 E..5.{@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4efb 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 ab6a 0000 0101 080a 0eed 0042 .....j.........B 0x0030 1f61 d898 73 .a..s 15:55:41.312177 Mallard.36915 > 192.168.1.254.telnet: P [tcp sum ok] 123:124(1) ack 123 win 5840 (DF) [tos 0x10] (ttl 64, id 45180, len 53) 0x0000 4510 0035 b07c 4000 4006 05cf c0a8 0119 E..5.|@.@....... 0x0010 c0a8 01fe 9033 0017 7524 4efc 744a ed33 .....3..u$N.tJ.3 0x0020 8018 16d0 b952 0000 0101 080a 0eed 004b .....R.........K 0x0030 1f61 d8a6 65 .a..e
이 머신의 루트(root) 패스워드는 "homebase" 라는 것을 알게 되었다. 아래의 패킷은 로그인에 성공했을 때 화면에 출력되는 메시지가 담겨있다.
15:55:41.876090 192.168.1.254.telnet > Mallard.36915: P 125:195(70) ack 126 win 32120 (DF) (ttl 64, id 6938, len 122) 0x0000 4500 007a 1b1a 4000 4006 9afc c0a8 01fe E..z..@.@....... 0x0010 c0a8 0119 0017 9033 744a ed35 7524 4eff .......3tJ.5u$N. 0x0020 8018 7d78 2034 0000 0101 080a 1f61 d8e5 ..}x.4.......a.. 0x0030 0eed 007a 5468 696e 4c69 6e75 7820 6c6f ...zThinLinux.lo 0x0040 6361 6c68 6f73 7420 322e 322e 3134 2d74 calhost.2.2.14-t 0x0050 6869 hi 15:55:41.964197 192.168.1.254.telnet > Mallard.36915: P [tcp sum ok] 195:206(11) ack 126 win 32120 (DF) (ttl 64, id 6939, len 63) 0x0000 4500 003f 1b1b 4000 4006 9b36 c0a8 01fe E..?..@.@..6.... 0x0010 c0a8 0119 0017 9033 744a ed7b 7524 4eff .......3tJ.{u$N. 0x0020 8018 7d78 7705 0000 0101 080a 1f61 d8ee ..}xw........a.. 0x0030 0eed 0083 6c6f 6361 6c68 6f73 7423 20 ....localhost#.
아~ 정말 쉬운 내용이다. tcpdump에 조금 더 익숙해 지면, 네트워크를 지나다니는 패킷을 분석할 때 훨씬 더 많은 일을 할 수 있다. 텔넷 대신에 보안 셸(SSh)을 사용하면, 비슷한 결과가 나올 것이다. 하지만 공격자가 얻은 결과는 암호화된 내용이라서 무용지물이다. 지금까지 여러분에게 네트워크에서 패킷을 이해하는 게 얼마나 쉬운 것인지 보여 주려 했다. 필자가 여기에서 보여준 것 이상의 것들이 얼마든지 있지만, 이러한 필자의 노력이 여러분이 계속 배워 나갈 수 있는 계기가 되길 바란다. 트립와이어(Tripwire) 트립와이어는 크래커의 공격으로부터 머신을 보호하지 못하는 유일한 도구이다. 하지만 크래커의 공격으로 인해 어떤 파일이 변조되었고, 생성되었고, 삭제되었는지 보고해 준다. 트립와이어와 같은 도구는 허니팟(Honey Pot)과 같은 곳에서 쓰인다. 로그 기록을 보고, 공격자가 어떤 파일을 건드렸는지 쉽게 알 수 있다. 트립와이어는 설정에 따라 변화 여부를 알고자 하는 파일의 목록을 데이터베이스화 해놓는다. 이 테이터베이스는 트립와이어를 처음으로 실행할 때 생성된다. 그 이후에는 계속해서 파일의 변화 여부를 관찰할 수 있다. 사용자의 홈디렉토리와 같이 파일의 내용이 항상 변할 수 있는 곳은 트립와이어로 지켜볼 필요가 없다. 하지만 /usr /sbin /bin과 같이 파일 내용이 자주 변하지 않는 곳에 있는 파일들은 트립와이어로 지켜봐야 한다. 하지만 이것은 각자의 필요에 따라 달라질 수 있다. 트립와이어 설치하기 트립와이어를 설치하는 데는 소스 코드를 받아와서 컴파일하는 방법과 RPM이나 데비안 패키지를 가져다 까는 방법이 있다. 지금 이 글을 쓰는 시점에서 트립와이어 최신버전은 2.3.1-2이다. 소스 코드는 /usr/local/src에 놓도록 하자. 그리고선 다음과 같이 압축을 풀도록 한다.

$ cd /usr/local/src
$ tar -xzvf tripwire-2.3.1-2.tar.gz
$ cd tripwire/src
트립와이어 소스코드를 컴파일하는 것은 다른 리눅스 프로그램을 컴파일하는 것과는 사뭇 다르다. 설정을 위한 스크립트가 없기 때문에, makefile을 직접 수정하도록 한다. makefile에는 자세한 설명이 덧붙여져 있기 때문에, 읽어보면 쉽게 이해할 수 있다. gcc(C 컴파일러)는 버전이 2.95.2 보다 높은 버전이 필요하다(낮은 버전에서는 컴파일이 안될 수도 있다). makefile 안에는 gmake를 상당히 많이 사용하게 되어 있다. 대부분의 리눅스 시스템의 make와 동일한 것이다(gmake는 make에 심볼릭 링크되어 있다). 트립와이어는 debug나 release를 설정해서 컴파일한다. debug는 트립와이어에 대해서 좀더 깊이 알고 싶은 개발자나, 머신에 탑재하여 판매되기 전에 테스트 용으로 사용할 때 사용한다. release는 머신에 탑재하여 판매할 때나 다른 일반적인 경우에 사용한다. makefile을 수정했으면, 이제 다음의 명령으로 트립와이어를 컴파일하도록 한다.

$ make release
이제 실제로 트립와이어를 설치하면 된다. 이때, 루트(root)권한이 있어야 한다.

$ su
password:

# cd /usr/local/src/tripwire-2.3.1-2/install
# ./install.sh
설치 스크립트는 트립와이어 프로그램, 라이브러리, 맨 페이지를 적절한 장소로 복사한다. 또한 기본 설정파일이 /etc/tripwire/ 아래에 복사된다. 또 설치 스크립트는 관리자에게 site key 패스워드와, local key 패스워드를 묻는다. 이것은 설정 파일을 암호화 하는 데 쓰이는 키 값이므로 결코 잊어서는 안 된다. 패스워드를 잊었을 때 되찾을 수 없기 때문이다. 트립와이어 관련 파일들 트립와이어에는 운영방침에 관한 파일, 설정파일, 데이터베이스 파일, 결과를 저장하는 파일 등 네 개의 파일이 필요하며, 파일은 이진 파일(binary file)과 텍스트 파일(text file)의 두 가지 형태로 존재한다. 텍스트 파일은 수정 가능한 설정파일로서, 트립와이어가 어떻게 동작할 것인지를 결정 및 수정한다. 그런 다음 twadmin을 이용하여 텍스트 파일을 이진 파일로 컴파일하도록 한다. 이제 텍스트 파일은 자기만 아는 곳으로 옮기고(플로피 디스켓이나 CD 같은 곳으로) 시스템에서 지워버린다. 이렇게 함으로써 침입자는 트립와이어가 행적을 남기지 못하도록 설정파일을 조작하지 못하게 된다.

운영 방침에 관한 파일은 /etc/tripwire/tw.pol로, 시스템을 어떤 식으로 검사할 것인지에 대해 기록되어 있다. 이 파일에는 다양한 규칙을 사용할 수 있다. 어떤 파일을 감시할 것인지, 파일의 어떠한 변화는 침입으로 간주하고, 또 어떠한 변화는 무시할 것인지 등을 결정한다. 설정 파일은 /etc/tripwire/tw.cfg로서, 데이터베이스가 어디에 있는지, 문제가 발생한 경우 메일로 보낼 것인가 하는 등, 관리자의 입맛에 맞게 설정하도록 되어 있는 파일이다. 트립와이어 소스 코드와 함께 제공되는 설정파일은 아주 좋은 예제 파일이다. 처음에는 이를 그대로 사용하다가, 트립와이어에 익숙해 지면 자신에게 맞게 설정을 하나하나 추가하거나 삭제함으로써, 자기 것으로 만들면 된다. 데이터베이스 파일은 /var/lib/tripwire/$(HOSTNAME).twd에 있다. 트립와이어는 /etc/tripwire/tw.pol 을 참고하여 시스템의 상태를 점검해 본다. 이렇게 생성된 데이터베이스 파일은 보안상 안전한 상태를 담고 있다. 이 데이터베이스를 바탕으로 파일의 변화를 감지한다. 결과를 기록한 파일은 /var/lib/tripwire/$(HOSTNAME)-$(DATE).twr에 저장된다. 앞서 설정한 규칙에 위배되는 파일 변조(변경, 생성, 삭제)는 트립와이어가 감지해서 결과파일에 저장한다. 요약된 결과는 그 형태나 내용의 자세한 정도가 각기 다른 레벨로 볼 수 있다.
리소스 웹사이트 HoneyNet Project The SANS Institute Security Portal Linux Administrator"s Security Guide Linux System Administrator"s Guide Network Intrusion Detection, 2nd Ed. (New Riders) ISBN: 0-7357-1008-2 Intrusion Signatures & Analysis (New Riders) ISBN: 0-7357-1063-5 Maximum Linux Security (SAMS) ISBN: 0-672-31670-6 Linux Network Administrator"s Guide, 2nd Edition (O"Reilly) ISBN: 1-56592-400-2 Practical Unix and Internet Security (O"Reilly) ISBN: 1-56592-148-8 러닝 리눅스 3판 (O"Reilly) ISBN: 1-56592-469-X Linux System Security (Prentice Hall) ISBN: 0-13-015897-0
트립와이어 사용하기 트립와이어가 세팅이 되었다면, 준비가 다 된 것이다. 트립와이어는 몇 개의 작은 프로그램으로 구성되어 있는데, twadmin 컴파일러는 텍스트 파일을 이진파일로 변환할 때 사용한다. twprint는 이진 파일로부터 텍스트 파일을 얻을 때 사용한다. 이러한 프로그램은 관리자용이기 때문에, 트립와이어가 한번 세팅이 되었으면 위의 프로그램을 제거해야 한다. 이는 침입자가 위의 프로그램을 이용하여 트립와이어가 어떤 파일을 체크하는지를 살펴보지 못하도록 하기 위함이다. 무엇보다 중요한 프로그램은 tripwire이다. tripwire를 이용하여, 데이터베이스를 초기화하자.

# tripwire -m i
-m 옵션은 트립와이어가 어떤 모드를 사용할 것인지를 알려주는 옵션이다. 위의 예는 초기화(initialization) 모드를 사용했다. 데이터베이스가 만들어 졌으므로, 초기 데이터베이스와 현재 상태를 비교해 보자:

# tripwire -m c
이것을 crontab이나 셸 스크립트 파일로 만들어야 한다. 얼마나 트립와이어를 자주 실행할 것인지는 관리자의 성향에 달렸다. 매 시간마다 실행시킬 수도 있고, 두시간마다 한번씩 실행시킬 수도 있다. 만약 새 프로그램을 시스템에 설치한다고 하자. 이때는 트립와이어가 이것을 침입행위로 간주하고 관리자에게 보고 할 수 있다. 이럴 경우, 데이터베이스를 업데이트하면 된다.

# tripwire -m u
결론 tcpdump나 이더리얼을 무용지물로 만들 수 있는 방법도 많다. 스위치 네트워크를 사용하면 같은 네트워크에 있는 모든 워크스테이션에 사용자의 패킷을 "브로드캐스팅"하지 않게 만들 수 있다. 주의: 이렇게 한다고 해도 사용자의 네트워크에서 인터넷으로 나가는 트래픽과, 사용자의 네트워크로 들어오는 인터넷(원격 사용자와 같은)의 데이터를 캡처하는 것을 막지 못한다. 하지만 이러한 일들이 소스나 목적지 머신(사용자의 서버와 같은)에서 일어나지 않는다고 해서 이러한 도구의 가치가 떨어지는 것은 아니다. 두번째로, 네트워크로 암호화 하지 않은 텍스트(plain text)를 내보내는 것은 위험하다(텔넷, FTP 등이 이에 포함된다). 또한 버클리의 R-계열 명령어들(rdist, rlogin 등)의 사용도 자제해야 한다. 이에 대한 대안으로서 보안 셸(Secure Shell, SSh)의 사용을 권장하는 바이다. 반드시 R-계열 명령어를 사용해야 한다면 암호화된 SSH의 세션 위에서 작업할 권을 권한다. 트립와이어는 시스템 내의 파일 내용 변화를 추적하는 데 아주 유용하다. 트립와이어가 자주 시스템을 체크하도록 하면, 침입자가 시스템에 잠입한 후 트립와이어를 중단시키기거나, 로그 기록을 제거하기 전에 그 사실을 눈치챌 수도 있다. 하지만 이때에는 syslog와 같은 툴을 사용하는 게 낫다. 다음 주에는 유용한 보안 도구인 snort를 살펴볼 것이다.
칼 콘스탄틴(Carl Constantine)은 Open Source Solutions社(www.os-s.com)의 리눅스 강사이자 프로그래머로 일한다.
TAG :
댓글 입력
자료실

최근 본 상품0