티스토리 뷰

Intrusion detection

 

언제까지 해커에게 당하고만 있을 것인가? 해커가 들어왔다면 추적을 해서 잡아내는 일 또한 중

요하다고 할 수 있다. 이제 해커를 추적하 는 방법에 대해 알아보기로 하자. 처음 시스템에 로그

인하게 되면 다음과 같은 메시지를 보낼 것이다.

 

 

login: sakai

password:

Last login: Fri Mar 3 02:05:42 on console

SunOS Release 4.1.3-KLE1.1.3 (BARAM_KOR) #2: Sun Sep 26 10:16:21 KST 1993

You have mail.

1995년03월03일(금) 03시10분34초 KST

 

 

여기에 나타나는 Last login을 확인하고 자신이 로그인한 시간대가 아닌 때에 로그인이 됐는가를

확인해 본다. 침입자가 들어온 것 같은 의심이 들 때 관리자에게 연락해 그 시간대의 로그와 프

로세스를 확인해 추적을 하도록 한다. 혹은 위와 같이 자신의 시스템 로그인 메시지를 확인하는

방법도 있지만, 다른 방법으로, last라는 명령을 이용, 자신의 시스템에 자신의 이름으로 들어온 유

저를 찾을 수도 있다. 다음은 last의 예이다.

 

 last | more

 

ksh ttyqd casaturn.kaist.a Thu Mar 16 16:52 still logged in

chkim ttyr9 dal1.kaist.ac.kr Thu Mar 16 16:50 still logged in

hjha ttyqd danso.kaist.ac.k Thu Mar 16 16:49 - 16:51 (00:01)

hjha ttyra danso.kaist.ac.k Thu Mar 16 16:47 - 16:47 (00:00)

solee ttyra dangun.kaist.ac. Thu Mar 16 16:46 - 16:46 (00:00)

yjkim ttyr9 gaea.kaist.ac.kr Thu Mar 16 16:44 - 16:50 (00:05)

chkim ttyr9 dal1.kaist.ac.kr Thu Mar 16 16:42 - 16:43 (00:01)

drunken ttyra chagall.kaist.ac Thu Mar 16 16:40 - 16:40 (00:00)

shhong ttyra dbserver.kaist.a Thu Mar 16 16:39 - 16:39 (00:00)

jhlee ttyr9 paradise.kaist.a Thu Mar 16 16:38 - 16:39 (00:01)

hjha ttyra danso.kaist.ac.k Thu Mar 16 16:36 - 16:37 (00:00)

 

위의 예에서, last | grep myloginname을 입력하면, 자신의 ID로 언제 어디서, 누가 로그인했는지를

알 수 있게 된다. 숙련된 해커는 위의 last 정보가 유지된 시스템 파일을 지우고 가지만, 여기서는

비숙련 해커를 가정하고 명령을 쳐볼 수 있다. 또는 약 간은 먼 이야기이지만, 해커가 들어와서

어떤 일을 하고 갔는지를 알아내기 위해서는 lastcomm이 라는 명령어가 있다. lastcomm은 지금 이

시간까지 시스템에서 수행되었던 명령어들을 보여주게 된다. 만약에 lastcomm이 작동되지 않는다

면 시스템 관리자가 다음의 명령을 수행하도록 해야 한다.
(제가 리눅스에서 시행해 본 바 lastcomm명령어는 알아먹지도 못하더군요... 유닉스가 아니라서 그런가하는 생각도 듭니다... 아마도  따로 설정법이 있는 것 같은데 알아내면 이 way가 강좌에 꼭 올리겠습니다.
 

/usr/etc/accton /usr/adm/acct

 
lastcomm | more

msgs ksh ttyp2 0.03 secs Thu Mar 16 16:58

less ksh ttyp2 0.06 secs Thu Mar 16 16:58

csh F ksh ttyp2 0.00 secs Thu Mar 16 16:58

csh F ksh ttyp2 0.00 secs Thu Mar 16 16:58

date ksh ttyp2 0.02 secs Thu Mar 16 16:58

stty ksh ttyp2 0.02 secs Thu Mar 16 16:58

stty ksh ttyp2 0.02 secs Thu Mar 16 16:58

biff ksh ttyp2 0.02 secs Thu Mar 16 16:58

hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58

whoami ksh ttyp2 0.03 secs Thu Mar 16 16:58

hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58

hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58

hostname ksh ttyp2 0.02 secs Thu Mar 16 16:58

 

전문된 해커와 이를 막는 보안팀은 항상 여러 가지 파일을 이용해서 보안을 체크하게 되며, last,

lastcomm은 하나의 시작에 불 과하다. 이 절의 내용을 정리하면, 시스템에 로그인하고 로그아웃하

면 그 기록이 어딘가 남는다는 것인데. 다음의 네 가지 파일 이 대표적이다.

 

/usr/adm/lastlog
각 유저마다 가장 최근의 로그인 시간을 기록한다.

finger 나 someone 에 의해 알 수 있다.

/etc/utmp
유저가 로그인할 때마다 시간을 적어둔다.


/usr/adm/wtmp
유저가 로그인/로그아웃할 때 시간을 적어둔다.

last 또는 last someone 의 명령을 쳐서 내용을 알 수 있다.

 

/usr/adm/acct
유저들이 사용하는 명령어를 적어둔다.

lastcomm 을 치면 내용을 알 수 있다.


 

하지만, 실제로 해커들은 이 모든 파일들을 지우고 나가는 것이 보통이며(생각을 보라, 나갈 때

자기가 들어왔다는 증거를 입멸 하고 나가는 것이 해커의 입장으로서는 당연한 것이 아니겠는가),

따라서 일정한 시간 간격마다 혹은 하루의 어느 때에 수행하도록 제어해주는 cron명령을 이용해

계속 위의 파일을 백업을 한다 면 해커를 좀더 어렵게 만들 수 있겠다. 이는 관리자에게 필요한

부분이지만, 안전한 호스트를 선택해 log만을 남기는 호스트를 두면 더욱 확실하다.(이는 물론 장

비에 여유가 있을 때의 이야 기이다) 예를 들면,

/etc/syslog.conf 에서 정의를 하도록 하자.

 

#

# syslog configuration file

#

define LOGHOST eve

*.err;kern.debug;auth.notice;user.none /dev/console

mail.debug ifdef('LOGHOST',/var/log/syslog,@loghost)

mail.debug /var/log/syslog

 

로그 호스트를 설정한 예를 들어보자. 다음 로그는 로그 호스트인 eldar 의 로그 파일에 기록된

것이다. elbereth, luthien, be ren, eru, frodo, sam, aragorn, gandalf, faramir, legolasgimli,
indigo1,3,4,10, applic이 eldar로 로그를 보 내도록 설정돼있다.

 

Mar 17 02:43:28 6C:eldar fingerd[17516]: connect from baikdu.kaist.ac.kr

Mar 17 02:43:42 6D:eldar ftpd[17518]: connection from baikdu.kaist.ac.kr

Mar 17 02:43:54 5E:eldar ftpd[17518]: FTP LOGIN FAILED FROM baikdu.kaist.ac.kr,

chester

Mar 17 02:44:15 6E:eldar ftpd[17518]: FTP LOGIN FROM baikdu.kaist.ac.kr as chester

Mar 17 09:37:16 6C:luthien.seri.re.kr sendmail[10578]: JAA10572: to=sysuh@kigam.re.kr,

ctladdr=news (15/15), delay=00:0 0:09, mailer=smtp, relay=sdp.kigam.re.kr.

[134.75.144.201], stat=Sent (JAA15213 Message accepted for delivery)

Mar 17 13:31:46 6B:frodo.seri.re.kr Xsession: poison: login

Mar 17 13:40:32 6C:gimli.seri.re.kr ftpd[533]: connect from eve.kaist.ac.kr

Mar 17 13:49:32 6D:indigo1.seri.re.kr ftpd[533]: connection from robin.kaist.ac.kr

출처 : Tong - 세인트후님의 ┗━Linux together통