원래 이 문서는 Sun Microsystems의 Dan Farmer 씨의 글을 번역한 내용이며, 한국어 번역은 (주)아이즈랩의 김상우씨에게

저작권이 있습니다. <swlive [at] cais [dot] kaist [dot] ac [dot] kr>또는 <webmaster [at] iznet [dot] net> 

로그 분석하기

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

Log란 무엇인가
Log란 나중을 위해 각 사용자들의 행위에 대한 기록이다. 따라서 외부에서 침입을 해온 attacker가 시스템에 무슨 일을 행했는지 알려주므로 보안적으로 큰 의미를 갖는다

Log 파일의 종류(/var/log/)
lastlog (/var/log/lastlog)
lastlog명령어는 로그인한 사용자 이름과 포트, 접속한 IP주소, 로그인 시간등의 데이터를 포함합니다.

# lastlog
Username Port From Latest
root ttyp1 :0.0 Mon May 15 11:08:28 2000
bin ***Never logged in***
ftp ***Never logged in***
MaZonna 0 143.248.220.10 Sun Jul 23 12:21:02 2000
thisstar 1 dor20688 Thu Jun 11 22:54:32 2000
guest **Never logged in**
위의 데이터는 리눅스에서의 기록이며 일부 기록만을 나열하였다.

last
/var/log/wtmp파일을 검색하여 이 파일이 생성된 이후에 일어난 사용자들의 login과 logout을 모두 출력해준다. Login-name,

port, IP, login - logout time, 작업시간을 출력해서 보여준다.

last만 사용할 수도 있고, last login-name의 형태로 사용할 수도 있다.

# last
ftp ftp 210.222.254.3 Thu Jul 6 14:13 - 14:13 (00:00)
ftp ftp 210.222.254.3 Thu Jul 6 14:12 - 14:12 (00:00)
ftp ftp extek.cnu.ac.kr Thu Jul 6 10:07 - 10:07 (00:00)
ftp ftp dor202113.kaist. Wed Jul 5 23:27 - 23:27 (00:00)
ftp ftp minjok.kaist.ac. Tue Jul 4 21:54 - 21:55 (00:00)
evol ttyp0 211.62.246.200 Tue Jul 4 20:09 - 20:10 (00:00)
ftp ftp dor202113.kaist. Tue Jul 4 18:57 - 18:58 (00:00)
ftp ftp dor202113.kaist. Tue Jul 4 18:57 - 18:57 (00:00)
this ttyp0 dor202113.kaist. Tue Jul 4 18:57 - 18:57 (00:00)
evol ftp dor22095.kaist.a Tue Jul 4 14:14 - 14:15 (00:00)
evol ttyp0 dor22095 Tue Jul 4 14:13 - 14:15 (00:02)
evol ttyp0 dor22160 Sun Jul 2 20:43 - 20:43 (00:00)
babo ttyp0 adsl-dongjak-210 Sun Jul 2 16:07 - 16:07 (00:00)
ftp ftp a-te4-31.tin.it Sat Jul 1 09:49 - 09:49 (00:00)
wtmp begins Sat Jul 1 09:49:34 2000
위의 예는 한 리눅스 시스템의 예이며 마지막 라인에 wtmp파일이 생성된 시간을 출력한다.

xferlog
이 파일은 ftp를 이용하여 전송된 파일에 대해 기록한 log파일이다. 이 파일에는 current time, transfer time, remote host,

file size, filename, transfer type, special action flag, direction, access mode, username, Service name,

authentication-method,authenticated user id, completion status를 포함한다.

# more xferlog
Sun Feb 27 20:40:31 2000 6 dor224143.kaist.ac.kr 3191923 /home/bebechien/pighouse/mp3/03-실연.mp3 b _ o r bebechien ftp 0 * c
Sun Feb 27 20:40:38 2000 7 dor224143.kaist.ac.kr 4728392 /home/bebechien/pighouse/mp3/05-와.mp3 b _ o r bebechien ftp 0 * c
위의 기록에 대해 상세히 알아보자.

Sun Feb 27 20:40:31 2000 이 파일을 전송한 시간 6 전송 소요 시간 dor224143.kaist.ac.kr 전송한 호스트 네임 3191923 파일 크기 /home/bebechien/pighouse/mp3/03-실연.mp3 파일의 이름 b 전송 방식 _ special action flag o direction r access 방식 bebechien 사용자 이름 ftp Service방식 0 Authentication 방식 * 인증된 사용자 이름 c 완료 상태

Special action flag는 C, U, T, _의 값을 가지며 각 플래그의 의미는 다음과 같다.

C 압축된 파일 (Compressed file)
U 비압축된 파일 (Uncompressed file)
T 묶인 파일(Tar'ed file)
_ No action was taken
access mode는 a, g, r의 세 가지 값을 가진다. a는 anonymous를 의미하고, g는 guest, r은 real을 의미한다. authentication

방식은 o 또는 l 값을 가지며, 여기서 o는 none을 l은 RFC931의 인증방식을 사용한다는 것을 의미한다. 완료 상태는 c, i의 값을

가지며, c는 완료된 상태, i는 불완료된 상태를 의미한다.

httpd logs
/var/log/httpd 디렉토리 내에는 access_log와 error_log라는 파일을 볼 수 있다. access_log파일은 시스템에 누가 언제 접속했는지를 기록한 파일이며 error_log파일은 access error에 대한 기록들을 저장한다.

# more access_log
143.248.223.37 - - [21/May/2000:12:50:29 +0900] "GET / HTTP/1.1" 200 1020
143.248.250.103 - - [21/May/2000:14:06:26 +0900] "GET / HTTP/1.1" 200 1020
143.248.250.103 - - [21/May/2000"14:06:52 +0900] "GET /physics.jpg HTTP/1.1" 404 295
이 파일의 기록에 대한 정보는 다음과 같다.

143.248.223.37 방문자의 IP 주소
[21/May/2000:12:50:29 +0900] event's 시간과 날짜
"GET / HTTP/1.1" Command나 Request
200 Status Code
Status Code의 값 중 200이 의미 하는 바는 "everything went well"을 의미하고 404는 "document was not found"를 의미한다.

# more error_log
[Sun May 21 04:02:01 2000] [notice] Apache/1.3.12 (Unix) (Red Hat/Linux) configured -- resuming normal operations
[Sun May 21 14:06:52 2000] [error] [client 143.248.230.103] File does not exist: /home/httpd/html/physics.jpg
error_log의 기록은 다음의 정보를 가진다.

[Sun May 21 14:06:52 2000] Date and time
[error] Report Type
[client 143.248.230.103] Client IP
File does not exist: Error가 발생한 이유
messages (/var/log/messages)
이 파일은 System과 Kernel의 메시지를 담고 있다. 이는 Syslogd와 klogd에 의해 기록이 된다.

# more messages
May 21 04:02:00 lacvert syslogd 1.3-3 restart.
May 21 04:09:07 lacvert -- bbs[1393]: LOGIN ON 0 BY bbs FROM chiak
May 21 17:40:27 lacvert ftpd[4774]: USER bebechien
May 21 17:40:29 lacvert ftpd[4774]: PASS password
May 21 17:40:29 lacvert ftpd[4774]: QUIT
많은 내용 중 단지 일부분만을 정리해 놓은 것이다.

secure(/var/log/secure)
# more secure
May 21 04:09:06 lacvert in.telnetd[1392]: connect from 143.248.102.4
May 21 04:41:48 lacvert in.rshd[3988]: connect from 143.248.92.252
May 21 18:23:23 lacvert in.ftpd[4837]: connect from 143.249.92.244
May 21 18:04:15 lacvert in.ipop3d[4837]: error: cannot execute /usr/sbin/ipop3d: No Such file or directory
위의 예에서 마지막 라인은 Port Scan의 흔적이다.

Log와 보안
일반적으로 buffer overflow를 이용한 공격은 다음과 같은 log를 /var/log/messages에 남긴다. imapd를 이용한 공격은

비슷한 것을 /var/log/maillog에서 볼수 있다.

#more messages
May 21 04:20:51 lacvert mounted[6688]: Blocked attempt of 192.168.11.200 to mount
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p~p
~p~p~p3v3A` ^[I~@303A~KU`FI~@DAVo1A ^B1~@EAvbeb^V-<,yT^FDAt^Keo`
T`TB~
물론 이런것들이 남아있다면 이 서버는 공격을 당한 것이며, 그것이 실패했거나 혹은 진행중이라는 것을 의미한다.

log는 attacker가 침입후 가장 먼저 청소하는 목표물이기 때문에 정상적으로 log가 남지 않는다면 이미 공격을 당한 것이라고

할 수 있다.만약 다음과 같은 상황이 발생했다면 의심을 해보아야 할 것이다.

익숙하지 않은 외부에서의 접속 시도
/etc/passwd 파일에 만든 적이 없는 아이디 존재
시스템 로그가 남지 않는 점, process의 상태를 보여주는 ps 가 이상한 경우
사용하지 않고 있는데 하드 디스크가 돌아가고 있는 점.
nmap같은 경우 -sS option을 주면 log가 남지 않는다.
이런 stealth scan 프로그램들을 감지하는 프로그램들을 사용하는 것이 좋다.

또한 log를 안전하게 저장해야 한다. cracker들이 root shell을 얻고 나서 제일 먼저 하는 것은 자신이 들어온 흔적을 지우는

일이기 때문에 그냥 log를 저장해두는 것은 안전하지 못하다. 보안이 매우 중요한 서버라면 log파일을 따로 저장하는

remote log-server를 만들어 두도록 한다.

'Security' 카테고리의 다른 글

openssh 보안 취약점을....  (0) 2002.02.27
당신의 site를 침입으로부터 보호하기 위한 security의 개선  (0) 2002.02.26
Hacking skill analysis  (0) 2002.02.26
Basic Security Tools  (0) 2002.02.26
ethereal 사용하기  (0) 2002.02.24

+ Recent posts