반응형




1. lastlog-계정의 최근 접속정보 확인하는 명령어

 

lastlog는 /etc/passw파일에 정의되어 있는 모든 계정의 최근 접속정보를 확인하는 명령엉이다. 주로 서버의 보안점검을 위하여 필수적으로 확인해 봐야하는 명령어이다. 간단히 lastlog라고만 하면 모든 계정의 마지막 접속정보를 출력해준다.

 

 

  

 

* 사용형식

 lastlog [-u login-name] [-t days]


lastlog는 /var/log/lastlog파일의 정보에 저장된 정보를 참조하여 결과를 출력한다. 이 파일은 바이너리파일로 되어 있기 때문에 lastlog라는 명령어를 이용해야 확인할 수 있다. /var/log/lastlog파일에는 각 계정의 최근 접속정보가 기록되는 파일이다.

 

 

 

 

* 시스템 각 계정의 최근 접속정보 확인하기

간단히 lastlog라고만 하면 다음과 같이 서버의 모든 계정에 대한 최근 접속정보를 확인할 수 있다.

[root@inter-devel log]# lastlog
사용자명        포트        ~로부터            최근정보
root               tty1                                 월  9월  7 16:23:47 +0900 2009
bin                                                     **한번도 로긴한적이 없습니다**
daemon                                              **한번도 로긴한적이 없습니다**
...

webadmin         pts/0    211.35.72.130    수 10월 21 13:32:45 +0900 2009
....

 

 

 

 

 

* 특정 계정사용자의 시스템 최근 접속정보 확인하기

만약 특정 계정만의 최근 접속정보를 확인하고자 한다면 아래와 -u옵션을 입력하면 된다.

[root@inter-devel log]# lastlog -u webadmin
사용자명        포트    ~로부터           최근정보
webadmin     pts/0    211.35.72.130    수 10월 21 13:32:45 +0900 2009
[root@inter-devel log]#

 

 

 

 

 

* 지정한 치근일 까지의 시스템접속정보 확인하기

lastlog는 최근 몇일까지의 마지막접속정보를 확인할 수도 있다. 다음은 최근 30일까지의 최근접속정보를 확인한 것이다.

[root@inter-devel log]# lastlog -t 30
사용자명        포트    ~로부터         최근정보
ncadmin          tty1                      목 10월  8 12:14:34 +0900 2009
webadmin         pts/0    211.35.72.130    수 10월 21 13:32:45 +0900 2009
[root@inter-devel log]#

 


2. wtmp 파일


 다음으로 wtmp에 대해서 알아보자. 이 파일에는 처음부터 접속했던 모든 사용자의 로그인정보와 로그아웃정보를 가지고 있습니다.  이파일은 삭제해주지 않으면 계속 누적이 되므로 정기적으로 백업을 받아 두든지 아니면 불필요한 정보를 삭제하든지 해야합니다.


이 파일에 기록되는 정보는 utmp.h에 있는 내용에 ut_time이추가되어 로그아웃시의 시간이 추가기록됩니다. 물론 이 파일의 정보를 보는 방법은 last라는 명령어로 볼 수있으며 wtmp와 관련된 명령어에는 다음과 같은 것들이 있습니다.


 


login(1), who(1), ac(8), init(8), last(8), lastcomm(8)



3. utmp 파일


먼저 utmp에 대해서 알아보겠습니다. 이 파일은 현재시스템에 접속해 있는 사용자의 정보를 가지고 있습니다. 시스템은 사용자가 remote로 접속을 하면 먼저 이 파일에 기록을 하고 로그아웃을 할 때에 기록해둔 정보를 삭제합니다.


그리고 이 파일의 구성요소를 결정하는 파일은 /usr/include/utmp.h 에 정의되어 있습니다.


struct utmp {

        char    ut_user[32];            /* User login name */

        char    ut_id[14];              /* /etc/inittab id- IDENT_LEN in init */

        char    ut_line[32];            /* device name (console, lnxx) */

        short   ut_type;                /* type of entry */

        pid_t   ut_pid;                 /* process id */

        struct exit_status {

            short       e_termination;  /* Process termination status */

            short       e_exit;         /* Process exit status */

        } ut_exit;                      /* The exit status of a process

                                         * marked as DEAD_PROCESS.

                                         */

        time_t  ut_time;                /* time entry was made */

        char    ut_host[64];       /* host name same as MAXHOSTNAMELEN*/

}; 


이 파일은 보통 바이너리형태로 되어 있기 때문에 strings라는 명령어를 사용하여 다음과 같이 내용을 볼 수 있습니다.


$ strings utmp | more


system boot

run-level 3

sysconfig

update

LOGIN

cons

console

sac -t 300

PM00

root

console

ttyp1

ttyp1

8:0.0

webadmin

ttyp4

ttyp4

168.126.62.90

webadmin

ttyp3

ttyp3


이 파일의 정보를 이용하는 명령어는 다음과 같습니다.


login(1), who(1), ac(8), init(8), last(8), lastcomm(8)



4. lastlog 파일


다음으로 lastlog에 대해서 알아보겠습니다. 이 파일에는 가장최근에 로긴한 정보를 저장하고 있습니다.


이 파일또한 last라는 명령어로 조회를 해 볼 수 있으며 기록되는 정보를 정의하는 파일은 /usr/include/lastlog.h에 다음과 같이 정의되어 있습니다.


struct lastlog {

        time_t  ll_time;

        char    ll_line[LL_LINELEN];

        char    ll_host[LL_HOSTLEN];            /* same as in utmp */

};


 5. 로그파일과 로그기록삭제


자, 그럼 이쯤에서 이파일들의 보안에 대해서 언급해 보도록 하겠습니다. 만약 자기가 다른 시스템에 불법으로 침입했다면 이들 파일에 기록된 자신의 정보를 삭제하고자 할 것입니다. 그런데 이파일에서 일부정보를 삭제하려면 write 퍼미션이 있어야 합니다. 그래서 이들 파일의 퍼미션이 또 문제가 되는 것이며, 대부분의 시스템에는 이들 파일에 다음과 같은 퍼미션을 설정하고 있습니다.


 


[webserver:/var/adm 78 ] ls -l utmp


8 -rw-r--r--   1 root     adm         7332 12월 1일 19:40 utmp


[webserver:/var/adm 79 ] ls -l wtmp


84624 -rwxr-xr-x   1 root     system   86593728 12월 1일 19:40 wtmp*


[webserver:/var/adm 80 ] ls -l lastlog


160 -rw-r--r--   1 root     adm       153132 12월 1일 19:40 lastlog


 


위에서 보시는 바와 같이 utmp와 lastlog는 644로 되어 있기 때문에 root 외에는 파일을 조작할 수 없으며 wtmp에는 755로 설정되어 있기 때문에 당연히 root 외에는 조작이 불가능합니다. 주의할 것은 이들 파일의 펴미션이 혹시 변경되지 않았나를 정기적으로 확인해 봐야한다는 것입니다.


이들 파일속에서 침입한 자신의 로그기록을 삭제해주는 유틸리티가 있는데 zip2라는 프로그램입니다.


수작업으로 이들 파일의 접속정보를 삭제할 수도 있으나 우린 좀더 편리한 것을 사용할 수 있는 방법을 사용해보겠습니다.


위에서 언급한 zap2.c에 대해서 설명을 하려합니다. 이 파일을 컴파일하여 사용하도록 해야합니다.


 


#define WTMP_NAME "/var/adm/wtmp"


#define WTMP_NAME "/var/adm/utmp


#define WTMP_NAME "/var/adm/lastlog


 


이 파일의 처음에 나오는 부분을 해당시스템에 맞게 수정하여야합니다.


 



$./zap2 webmaster



6. lastb


lastb는 last정보와 비슷한 정보를 보여주나 과거에 잘못 접속을 시도한 계정에 대한 정보를 보여줌

/var/log/btmp에서 정보를 참조함



 


반응형

'자격증 > 정보보안기사' 카테고리의 다른 글

Windows IPSEC 설정 방법  (0) 2014.03.21
리눅스 방화벽 프로그램 iptables 설정  (0) 2014.03.21
find 명령어 옵션  (0) 2014.03.21
/etc/fstab 설정 및 옵션  (1) 2014.03.05
라우터 시뮬레이터 프로그램  (0) 2014.03.05

+ Recent posts