/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 |
polkit | GUI/서비스 권한 승인/거부 |
계정 관리 | 잠금/해제, 비밀번호 변경 |
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 명령 로그에서 비정상 실행 패턴 점검
- 여러 노드 운영 시 중앙집중 로그 수집 필수
- 디스크 용량 고려하여 로테이션 보관 주기 설정