/var/log/auth.log 에 관해서

/var/log/auth.log 완벽 가이드 (Ubuntu/Debian 기준)

1. 개요

  • 정의: /var/log/auth.log인증·권한 관련 보안 로그를 저장하는 파일입니다.
  • 대상: sshd, sudo, su, polkit, login, cron(PAM), systemd(PAM) 등에서 발생한 이벤트.
  • 목적: 비인가 접속, 권한 상승, 계정 잠금/해제 등 침해사고 탐지의 핵심 소스.

RHEL/CentOS 계열에서는 /var/log/secure 파일이 동일한 역할을 합니다.


2. 주요 기록 항목

구분예시 이벤트
SSH 접속로그인 성공/실패, 키 인증 실패, 접속원 IP, 포트
sudo 사용명령 실행, 권한 상승 시도
su 전환다른 계정/루트 전환
PAM 인증계정 만료, 잠금, 2FA
polkitGUI/서비스 권한 승인/거부
계정 관리잠금/해제, 비밀번호 변경

3. 로그 포맷 구조

기본 구조:

<날짜> <호스트명> <프로세스명>[PID]: <메시지>

SSH 예시

Aug 12 11:23:45 master-node-1 sshd[12345]: Accepted publickey for ubuntu from 203.0.113.10 port 53422 ssh2: RSA SHA256:abc...
Aug 12 11:24:11 master-node-1 sshd[12345]: Failed password for invalid user admin from 203.0.113.99 port 51123 ssh2
Aug 12 11:24:14 master-node-1 sshd[12345]: Connection closed by authenticating user ubuntu 203.0.113.10 port 53422 [preauth]

sudo 예시

Aug 12 11:30:00 master-node-1 sudo:     ubuntu : TTY=pts/0 ; PWD=/home/ubuntu ; USER=root ; COMMAND=/usr/bin/apt update
Aug 12 11:30:01 master-node-1 sudo: pam_unix(sudo:session): session opened for user root(uid=0) by ubuntu(uid=1000)
Aug 12 11:30:05 master-node-1 sudo: pam_unix(sudo:session): session closed for user root

su / polkit 예시

Aug 12 11:35:42 master-node-1 su[22341]: (to root) ubuntu on pts/0
Aug 12 11:36:10 master-node-1 polkitd[987]: Authentication failure for action org.freedesktop.systemd1.manage-units by uid 1000

4. 로그 확인 방법

기본 확인

# 최신 50줄
sudo tail -n 50 /var/log/auth.log

# 실시간 모니터링
sudo tail -f /var/log/auth.log

필터링

# SSH 실패
sudo grep "Failed password" /var/log/auth.log

# 특정 IP/사용자
sudo grep "203.0.113.10" /var/log/auth.log
sudo grep "for ubuntu" /var/log/auth.log

로테이트 포함 검색

zgrep -h "sshd" /var/log/auth.log* | less

journalctl 사용

sudo journalctl -u ssh.service --since "2025-08-12 00:00" --until "2025-08-12 23:59"
sudo journalctl -S yesterday | grep -E "sshd|sudo|pam|polkit"

5. 분석 예시 스니펫

1) SSH 실패 상위 IP

sudo grep "Failed password" /var/log/auth.log* | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head

2) 성공한 SSH 로그인

sudo grep "Accepted" /var/log/auth.log* | awk '{user=$9; ip=$(NF-3); print user, ip}' | sort | uniq -c | sort -nr

3) sudo 실행 명령 타임라인

sudo grep "sudo:" /var/log/auth.log* | grep "COMMAND=" | less

6. 침입 징후 예시

  • Failed password 다수가 짧은 시간에 같은 IP에서 발생 → 브루트포스 공격
  • invalid user 다수 → 무작위 계정 스캔
  • 새벽 시간대 Accepted 접속이 낯선 IP에서 발생
  • 평소 없던 계정의 sudo 사용
  • polkit 인증 실패 반복 → 취약점 스캐닝 가능성

7. 설정 관련

rsyslog 경로 설정

  • /etc/rsyslog.d/50-default.conf:
auth,authpriv.*    /var/log/auth.log
  • 변경 후 적용:
sudo systemctl restart rsyslog

SSH 로그 상세화

  • /etc/ssh/sshd_config:
LogLevel VERBOSE
  • 적용:
sudo systemctl reload ssh

journald 영구 저장

  • /etc/systemd/journald.conf:
[Journal]
Storage=persistent
  • 적용:
sudo systemctl restart systemd-journald

로그 로테이션 설정

  • /etc/logrotate.d/rsyslog:
/var/log/auth.log
{
    rotate 7
    daily
    missingok
    notifempty
    compress
    delaycompress
    postrotate
        invoke-rc.d rsyslog rotate > /dev/null 2>&1 || true
    endscript
}

8. Fail2ban 연동 예시

sudo apt-get install -y fail2ban
  • /etc/fail2ban/jail.d/sshd.local:
[sshd]
enabled = true
port    = 22
filter  = sshd
logpath = /var/log/auth.log
maxretry = 5
findtime = 10m
bantime  = 1h
banaction = ufw
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

9. 중앙집중 수집 (예: Loki + Promtail)

Promtail 예시:

scrape_configs:
  - job_name: authlog
    static_configs:
      - targets: [localhost]
        labels:
          job: auth
          host: ${HOSTNAME}
          __path__: /var/log/auth.log

10. 운영 팁

  • 외부 노출 노드는 LogLevel VERBOSE + Fail2ban 필수
  • 성공한 SSH 접속 기록을 주기적으로 리뷰
  • sudo 명령 로그에서 비정상 실행 패턴 점검
  • 여러 노드 운영 시 중앙집중 로그 수집 필수
  • 디스크 용량 고려하여 로테이션 보관 주기 설정