유닉스/리눅스 시스템 로그 확인, 이것만 알면 끝
로그는 “무슨 일이, 언제, 누구에게서” 일어났는지 남긴 발자국입니다. 배포판·서비스마다 파일 경로와 확인 명령이 조금 다르지만, 점검 흐름은 크게 아래 5단계면 충분해요.
-
어느 시스템인가? (Debian/Ubuntu vs RHEL/CentOS/Alma)
-
무엇을 보려는가? (부팅·커널, 인증, 서비스, 네트워크, 계정활동)
-
어디에 저장되는가? (
/var/log/*,journalctl, 바이너리 로그) -
어떻게 열람/필터링? (
less,tail -f,grep,journalctl -u/-p/-S) -
보존/압축/순환은? (
logrotate,*.gz,zgrep)
필수 명령 한눈 요약
# 최근 부팅부터의 시스템 로그( systemd 기반 )
journalctl -b
# 특정 서비스 유닛 로그
journalctl -u ssh --since "2025-10-01" --until "2025-10-31"
# 중요도(우선순위) 필터: err 이상만
journalctl -p err -r # 최신부터 역순
# 커널 메시지(부팅·드라이버)
dmesg | less
# 텍스트 로그 빠르게 보기
tail -f /var/log/auth.log # Debian/Ubuntu
tail -f /var/log/secure # RHEL 계열
# 과거 압축 로그 검색
zgrep "Failed password" /var/log/auth.log.*.gz
# 로그인 이력(바이너리)
last # /var/log/wtmp 사용
lastb # /var/log/btmp 사용 (루트 권한 권장)
# 로그 로테이션 강제 실행(테스트)
sudo logrotate -f /etc/logrotate.conf
배포판별 주요 로그 위치
-
Debian/Ubuntu 계열
-
/var/log/syslog: 시스템 전반 메시지 -
/var/log/auth.log: 인증/권한 상승 -
/var/log/kern.log: 커널
-
-
RHEL/CentOS/AlmaLinux 계열
-
/var/log/messages: 시스템 전반 -
/var/log/secure: 인증/권한 상승
-
-
공통
-
/var/log/dmesg: 부팅 시 커널 메시지 스냅샷 -
/var/log/wtmp//var/log/btmp: 로그인 성공/실패(바이너리) -
서비스별 디렉터리:
/var/log/nginx/,/var/log/httpd/,/var/log/audit/등
-
참고: 최신 배포판은 대부분
systemd를 사용하며, 로그는 **저널(journald)**에 먼저 적재 → 필요 시 텍스트 파일로 포워딩(rsyslog,syslog-ng) 됩니다.
목적별 빠른 체크 레시피
-
로그인/권한 상승 이상 탐지
journalctl -u ssh -p warning -r또는grep 'Failed password' /var/log/auth.log -
서비스(예: nginx) 장애
journalctl -u nginx -r --since "1 hour ago"→ 재시작 흔적(systemd[1]: Started...)과 에러 확인 -
부팅/하드웨어 문제
journalctl -b -p err+dmesg | grep -i "error\|fail\|timeout" -
네트워크/방화벽
journalctl -k | grep -i drop(커널에서 드롭된 패킷 메시지) -
감사(auditd) 이벤트
ausearch -m AVC,USER_LOGIN -ts today→ SELinux/로그인 감사
비교표: 무엇을, 어디서, 어떻게 볼까
| 목적/상황 | 대표 로그/경로 | 주요 명령 | 자주 보는 키워드 | 해석 포인트 | 보안 팁 |
|---|---|---|---|---|---|
| 부팅·커널 이슈 | journalctl -b, /var/log/kern.log, dmesg |
journalctl -b -p err, `dmesg |
less` | error, fail, timeout, oops | 해당 시점 드라이버/디스크/메모리 오류 연계 |
| 인증 실패/계정 탈취 | Debian:/var/log/auth.log RHEL:/var/log/secure |
grep 'Failed password', journalctl -u ssh -p warning |
Failed password, invalid user, sudo | 원격 IP·계정·시각 패턴(무차별/사전대입) | IP 차단, MFA, PermitRootLogin no, AllowUsers 제한 |
| 서비스 장애(nginx, httpd 등) | 서비스별 로그 디렉터리 + 저널 | journalctl -u <svc> -r, tail -f |
segfault, 502/504, restart | 재시작 루프/리소스 고갈 징후 | 리소스 모니터링, health check, rate limit |
| 시스템 전반 이벤트 | Debian:/var/log/syslog RHEL:/var/log/messages |
tail -f, `grep 'panic |
oom'` | OOM-killer, kernel panic | 메모리 부족/프로세스 종료 추적 |
| 로그인 이력(성공/실패) | /var/log/wtmp, /var/log/btmp |
last, lastb |
pts/tty, reboot, ssh | 비정상 시간대/국가 로그인 | GeoIP 차단, 근무시간 외 알림 |
| 압축·보존·순환 | /etc/logrotate.conf, /etc/logrotate.d/* |
logrotate -d/-f, zgrep |
rotate, compress, dateext | 용량 급증/보존기간 확인 | 장기보존(예: 1년)/중앙수집(SIEM) |
마무리 체크리스트
-
로그 접근 권한은 최소화(파일 권한 600~640, 그룹
adm/systemd-journal). -
journalctl필터링 숙달:-u(유닛),-p(우선순위),-S/-U(기간),-g(grep). -
**압축 로그는
zgrep/zless**로 확인(과거 추적 필수). -
무결성/중앙집중 수집:
rsyslog원격 포워딩, SIEM/Elastic/CloudWatch 등. -
정기 점검 자동화: 실패 로그인 임계치 알림, 서비스 재시작 루프 감지.