강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

마지막 로그인(접속)정보 확인하는법: lastlog

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

마지막 로그인(접속)정보 확인하는법: lastlog

 

 

 

 

lastlog/etc/passwd파일에 정의되어있는 모든 계정의 최근 접속정보를 확인하는 명령어이다.

 

 

 

 주로 시스템의 보안점검을 위하여 필수적으로 확인해 보아야하는 명령어이다.

 

 

 

 간단히 lastlog라고만 하면 모든 계정들에 대한 마지막 접속정보를 출력한다.

 

 

 



시스템관리자라면 출력되는 정보만을 확인하는 것도 필수적으로 해야할 사항이지만 이 정보가 어떤 환경에서 출력되었고 또한 그 결과를 어떤 의미로 해석해야하는가?라는 부분까지  분석할 수 있어야만 능력있는 시스템관리자가 될 수 있다.

 

 

 

 다음은 lastlog의 사용형식과 그에 대한 실제 예들이다.

 

 

 

 

 

사용형식   : lastlog [-u 계정명] [-t 일자]

 

유용한 옵션들에는 다음과 같은 것들이 있다.

 

 

 

 

 

-b, --before <날짜> : <날짜>일 이전의 최근 기록을 표시함.

       -t, --time <날짜>   : <날짜>일 내의 최근 기록만 표시함.

       -u, --user <로그인> : <로그인> 사용자의 최근 기록만 표시함.

 

 

 

lastlog /var/log/lastlog파일의 정보에 저장된 정보를 참조하여 결과를 출력한다.

 

 

 

 /var/log/lastlog파일은 바이너리파일로 되어있기 때문에  cat이나 vi등의 일반적인 방법으로는 확인할 수 없다.

 

 

 

 따라서 lastlog라는 명령어를 이용하여 확인한다.

 

 

 

 

 

참고로 /var/log/lastlog파일에는 각 계정의 최근 접속정보가 기록되는 파일이다.

 

 

 

  또한 /usr/include/lastlog.h 파일에 정의된 포맷(format)으로 /var/log/lastlog에 저장된다.

 

 

 

 /usr/include/lastlog.h파일을 잠깐 살펴보면 다음과 같다.

 

 

 

 

 

[root@RockyLinux ~]# cat /usr/include/lastlog.h

/* This header file is used in 4.3BSD to define `struct lastlog',

   which we define in <bits/utmp.h>.  */

 

#include <utmp.h>

[root@RockyLinux ~]#

 

 

 

 

위의 파일내용에서도 알 수 있듯이 /var/log/lastlog파일에 저장되는 포맷(format) /usr/include/utmp.h파일에 지정된 포맷을 사용한다는 것을 알 수 있다.

 

 

 

 

 

[root@RockyLinux ~]# cat /usr/include/utmp.h

/* Copyright (C) 1993-2021 Free Software Foundation, Inc.

   This file is part of the GNU C Library.

 

   The GNU C Library is free software; you can redistribute it and/or

   modify it under the terms of the GNU Lesser General Public

   License as published by the Free Software Foundation; either

   version 2.1 of the License, or (at your option) any later version.

 

   The GNU C Library is distributed in the hope that it will be useful,

   but WITHOUT ANY WARRANTY; without even the implied warranty of

   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU

   Lesser General Public License for more details.

 

   You should have received a copy of the GNU Lesser General Public

   License along with the GNU C Library; if not, see

   <https://www.gnu.org/licenses/>.  */

 

#ifndef _UTMP_H

#define _UTMP_H 1

 

#include <features.h>

 

#include <sys/types.h>

 

 

__BEGIN_DECLS

 

/* Get system dependent values and data structures.  */

#include <bits/utmp.h>

 

/* Compatibility names for the strings of the canonical file names.  */

#define UTMP_FILE       _PATH_UTMP

#define UTMP_FILENAME   _PATH_UTMP

#define WTMP_FILE       _PATH_WTMP

#define WTMP_FILENAME   _PATH_WTMP

이하생략..

 

 

 

 

다음은 시스템에 존재하는 각 개별 계정들에 대한 최근 접속정보를 lastlog로 확인하는 예이다.

 

 

 

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

 

 

 

 아래의 결과에서 rootsspark, sulinux라는 사용자들이 최근에 접속한 날짜와 시간정보 및 접속장치명, 그리고 접속한 곳의 IP주소를 알 수 있다.

 

 

 

 

 

“**Never logged in**” 또는 “**한번도 로그인한 적이 없습니다**”라는 것은 해당계정이 생성 이후부터 지금까지 한번도 서버에 접속한 적이 없다는 것을 의미한다.

 

 

 

 만약 이런 계정이 어느날 접속했다는 정보로 표시가 된다면 한번쯤 의심해봐야 한다.

 

 

 

 

 

 

[root@RockyLinux ~]# lastlog

Username         Port     From                                       Latest

root             pts/0    192.168.19.111                              6 28 09:45:51 +0900 2023

bin                                                          **한번도 로그인한 적이 없습니다**

daemon                                                       **한번도 로그인한 적이 없습니다**

adm                                                          **한번도 로그인한 적이 없습니다**

sync                                                         **한번도 로그인한 적이 없습니다**

shutdown                                                     **한번도 로그인한 적이 없습니다**

halt                                                         **한번도 로그인한 적이 없습니다**

mail                                                         **한번도 로그인한 적이 없습니다**

operator                                                     **한번도 로그인한 적이 없습니다**

games                                                        **한번도 로그인한 적이 없습니다**

ftp                                                          **한번도 로그인한 적이 없습니다**

nobody                                                       **한번도 로그인한 적이 없습니다**

pegasus                                                      **한번도 로그인한 적이 없습니다**

systemd-coredump                                             **한번도 로그인한 적이 없습니다**

dbus                                                         **한번도 로그인한 적이 없습니다**

qemu                                                         **한번도 로그인한 적이 없습니다**

sssd                                                         **한번도 로그인한 적이 없습니다**

polkitd                                                      **한번도 로그인한 적이 없습니다**

rtkit                                                        **한번도 로그인한 적이 없습니다**

saslauth                                                     **한번도 로그인한 적이 없습니다**

dnsmasq                                                      **한번도 로그인한 적이 없습니다**

unbound                                                      **한번도 로그인한 적이 없습니다**

libstoragemgmt                                               **한번도 로그인한 적이 없습니다**

pipewire                                                     **한번도 로그인한 적이 없습니다**

tss                                                          **한번도 로그인한 적이 없습니다**

cockpit-ws                                                   **한번도 로그인한 적이 없습니다**

cockpit-wsinstance                                           **한번도 로그인한 적이 없습니다**

rpc                                                          **한번도 로그인한 적이 없습니다**

rpcuser                                                      **한번도 로그인한 적이 없습니다**

setroubleshoot                                               **한번도 로그인한 적이 없습니다**

clevis                                                       **한번도 로그인한 적이 없습니다**

geoclue                                                      **한번도 로그인한 적이 없습니다**

flatpak                                                      **한번도 로그인한 적이 없습니다**

systemd-oom                                                  **한번도 로그인한 적이 없습니다**

pesign                                                       **한번도 로그인한 적이 없습니다**

sshd                                                         **한번도 로그인한 적이 없습니다**

chrony                                                       **한번도 로그인한 적이 없습니다**

tcpdump                                                      **한번도 로그인한 적이 없습니다**

sspark           tty2                                            6 28 09:40:17 +0900 2023

sulinux          pts/0                                           6 14 14:52:59 +0900 2023

apache                                                       **한번도 로그인한 적이 없습니다**

nginx                                                        **한번도 로그인한 적이 없습니다**

mysql                                                        **한번도 로그인한 적이 없습니다**

avahi                                                        **한번도 로그인한 적이 없습니다**

colord                                                       **한번도 로그인한 적이 없습니다**

gdm              tty1                                            6 28 09:37:28 +0900 2023

gnome-initial-setup                                          **한번도 로그인한 적이 없습니다**

radiusd                                                      **한번도 로그인한 적이 없습니다**

keylime                                                      **한번도 로그인한 적이 없습니다**

dirsrv                                                       **한번도 로그인한 적이 없습니다**

kdcproxy                                                     **한번도 로그인한 적이 없습니다**

ipaapi                                                       **한번도 로그인한 적이 없습니다**

pcp                                                          **한번도 로그인한 적이 없습니다**

bible            pts/0                                           6 21 14:46:35 +0900 2023

mailnull                                                     **한번도 로그인한 적이 없습니다**

smmsp                                                        **한번도 로그인한 적이 없습니다**

postgres                                                     **한번도 로그인한 적이 없습니다**

mongod                                                       **한번도 로그인한 적이 없습니다**

named                                                        **한번도 로그인한 적이 없습니다**

squid                                                        **한번도 로그인한 적이 없습니다**

bible2                                                       **한번도 로그인한 적이 없습니다**

ssaprk1                                                      **한번도 로그인한 적이 없습니다**

bible9                                                       **한번도 로그인한 적이 없습니다**

[root@RockyLinux ~]#

 

 

 

 

그리고 다음은 특정 계정사용자에 대한 최근 접속정보를 확인하는 방법이다.

 

 

 

 즉 특정계정만의 최근 접속정보를 확인하고자 한다면 lastlog사용시에 다음과 같이 -u 옵션과 함께 사용하면 된다.

 

 

 

 아래의 예는 sspark이라는 계정의 최근접속정보를 확인한 예이다.

 

 

 

 

 

[root@RockyLinux ~]# lastlog -u sspark

Username         Port     From                                       Latest

sspark           tty2     192.168.0.251                                           6 28 09:40:17 +0900 2023

[root@RockyLinux ~]#

 

 

 

 

즉 위의 결과에서 sspark이라는 계정은 20236280940분경에 192.168.0.251에서 마지막으로 접속했음을 알 수 있다.

 

 

 

 

 

그리고 다음은 최근 몇일 전부터 현재까지의 마지막 접속정보만을 확인한 것이다.

 

 

 

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

 

 

 

 이를 확인하기 위해서는 "lastlog -t 일자"와 같이 사용하면 지정된 몇일전부터 현재까지에 접속한 각 계정의 마지막 접속정보를 확인할 수 있다.

 

 

 

 

 

[root@RockyLinux ~]# lastlog -t 10

Username         Port     From                                       Latest

root             pts/0    192.168.19.111               6 28 09:45:51 +0900 2023

sspark           tty2                                  6 28 09:40:17 +0900 2023

gdm              tty1                                  6 28 09:37:28 +0900 2023

bible            pts/0                                 6 21 14:46:35 +0900 2023

[root@RockyLinux ~]#

 

 

 

 

 

위의 예는 10일전부터 현재까지의 접속한 기록들 가운데 마지막 접속기록들만 출력한다.

 

 

 

 시스템 보안감사에 매우 유용하다는 것을 알 수 있을 것이다.

 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,150 명
  • 현재 강좌수 :  36,432 개
  • 현재 접속자 :  238 명