활성 사용자와 로그인 모니터링: who
, w
, last
명령어
1. 왜 사용자를 모니터링하는 게 중요할까?
Linux는 다른 서버처럼 (또는 웹사이트가 들어있는 이상한 상자처럼), 여러 사용자가 동시에 작업할 수 있는 기능을 제공해. 하지만 만약 네 서버가 침입당했다면? 아니면 동료-악당이 밤에 "우연히" 중요한 파일을 삭제하려 한다면? 사용자 활동 모니터링은 누가, 언제, 어디서 시스템에 접속했고 어떤 프로세스를 실행했는지 파악할 수 있게 도와줘. 이건 마치 네 서버를 위한 CCTV 같은 거야.
모니터링을 위한 주요 도구
서버에서 사용자 활동을 평가하기 위해 Linux에서는 세 가지 주요 명령어를 제공해:
who
— 현재 시스템에서 작업 중인 사용자를 보여줘.w
— 사용자 활동과 시스템 부하 같은 더 많은 정보를 제공해.last
— 시스템 로그인 히스토리를 알려줘.
각 명령어는 고유한 특징이 있고 다양한 시나리오에서 유용해. 예제를 통해 자세히 살펴보자.
2. 명령어 who
who
명령어는 현재 시스템에 로그인한 사용자 목록을 보여줘. 이건 마치 "등록 책" 같은 거야, 서버에 누가 있는지 확인할 수 있는 거지.
who
명령어 출력 예시:
user1 pts/0 2023-10-20 09:10 (192.168.1.100)
root pts/1 2023-10-20 09:15 (192.168.1.101)
여기서 볼 수 있는 것:
- 사용자 이름
user1
,root
. - 사용자가 어떤 터미널을 통해 연결되었는지
pts/0
,pts/1
. - 로그인 시간
2023-10-20 09:10
. - 어디서 접속했는지
192.168.1.100
.
who
의 옵션들:
who -a
: 시스템 부팅 시간, 동작 중인 프로세스 그리고 사용자와 같은 시스템 데이터를 보여줘.who am i
: 명령어를 실행한 사용자에 대한 정보만 보여줘.
3. 명령어 w
who
는 누가 로그인했는지 기록만 한다면, w
는 더 많은 정보를 제공해줘. 현재 사용자가 무엇을 하고 있는지를 알려준단 말이야. 이건 그 사람이 뭔가 유익한 작업을 하고 있는지 아니면 당장 멈춰야 할 일을 하는지를 이해하는 데 유용해.
w
출력 예시:
10:20:42 up 1 day, 5:12, 2 users, load average: 0.00, 0.01, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user1 pts/0 192.168.1.100 09:10 1:00 0.01s 0.01s nano app.py
root pts/1 192.168.1.101 09:15 2:00 0.02s 0.02s htop
여기서 무슨 일이 일어나고 있는지:
- 첫 번째 라인은 시스템 정보를 제공해: 현재 시간, 서버 가동 시간, 사용자 수, 시스템 부하율
load average
. - 표는 다음을 보여줘:
- 사용자 이름
user1
,root
. - 사용자가 연결된 환경
pts/0
,pts/1
. - 사용자의 IP 주소
192.168.1.100
. - 시스템 로그인 시간
09:10
. - 대기 시간
IDLE
. - 현재 사용자가 하고 있는 작업
WHAT
, 예를 들어,nano
를 사용하여app.py
파일을 편집 중.
- 사용자 이름
w
의 옵션들:
w -h
: 표의 헤더를 숨겨.w username
: 특정 사용자에 대한 정보만 표시해줘.
4. 명령어 last
who
와 w
가 현재를 말해준다면, last
는 과거를 들여다볼 수 있게 해줘. 이 명령은 시스템에 로그인한 모든 기록을 보여줘. last
는 사용자의 모든 로그인 기록이 저장된 /var/log/wtmp
파일을 읽어.
last
출력 예시:
user1 pts/0 192.168.1.100 Fri Oct 20 09:10 - 09:30 (00:20)
root pts/1 192.168.1.101 Fri Oct 20 09:15 - down (00:15)
여기에서 볼 수 있는 정보:
- 사용자 이름
user1
,root
. - 터미널
pts/0
,pts/1
. - IP 주소 또는 호스트명
192.168.1.100
,192.168.1.101
. - 로그인 시간
Fri Oct 20 09:10
. - 로그아웃 시간
09:30
과 세션 총 시간00:20
.
last
의 옵션:
last -n 10
: 최근 10개의 기록만 보여줘.last username
: 특정 사용자의 로그인 기록.last reboot
: 서버가 재부팅된 시간.
5. 실전 예제: 사용자 활동 분석
밤중에 서버에서 누가 작업을 했는지 확인해서 뭔가 수상한 일이 있었는지 알아보려 한다고 해보자. 현재 연결된 사용자부터 확인해보자:
who
이제 그들이 무엇을 하고 있는지 확인하자:
w
뭔가 이상한 점(예: 알 수 없는 프로세스)을 발견했다면, 누가 밤에 로그인했는지 확인해야 한다. 이를 위해 다음을 사용한다:
last
주의를 끌었던 특정 사용자의 기록을 확인하자:
last user1
만약 이상한 점, 예를 들어 낯선 IP에서의 로그인이 보이면 조치를 취해야 한다: 접근 제한, 2단계 인증 설정 또는 사용자를 차단하는 등의 방법.
6. 특징 및 일반적인 실수
모니터링 명령어를 사용할 때 다음을 명심해야 해:
로그 파일이 지워질 수 있어. 누군가 악의적으로
/var/log/wtmp
에서 기록을 삭제하면last
명령어는 아무 것도 보여주지 않아. 이게 바로 로그를 정기적으로 백업하거나 원격 서버로 보내는 게 중요한 이유 중 하나야.출력을 이해하기 쉽게 만들기. 때로는 명령어의 출력이 과다할 수 있어 (예: 사용자가 많은 경우).
grep
같은 필터를 사용해서 필요한 정보를 검색해봐:last | grep user1
시스템 설정에 따라 다름. 어떤 시스템은 설정 때문에 로그인 로그를 기록하지 않을 수도 있어.
/var/log/wtmp
가 정기적으로 업데이트되는지 확인해.
이 지식을 실무에서 어떻게 적용할 수 있을까?
- 서버 관리. 예를 들어, 네가 회사 관리자라면 시스템 보안을 감독하고, 아무도 시스템을 실수로 또는 의도적으로 "망치지" 않도록 해야 해.
- 위협 감지. 모니터링 도구를 사용하면 비인가 접근 시도를 탐지할 수 있어.
- 시스템 감사. 서버를 보안 표준에 맞추기 위해 검사할 때, 이런 명령어는 사용자 활동 분석에 자주 사용돼.
- 진단. 만약 서버가 느려졌다면? 누가 뭘 하고 있는지 확인해봐!
이제 너도 전문가처럼 시스템을 모니터링할 준비가 됐어! 시스템 보호는 내부에서 어떤 일이 일어나는지 이해하는 것부터 시작된다는 걸 잊지 마.
GO TO FULL VERSION