Linux 로그 경로 정리 · 35/50 · Part 4. journald / rsyslog / auditd
선행 학습 → 34. rsyslog 구조 이해 · 08. Syslog의 Facility와 Severity
이번 글 → rsyslog 설정 파일 분석
이어서 → 36. 원격 Syslog와 중앙 로그 서버
"이 로그는 왜 이 파일에 있는가?"의 답은 언제나 rsyslog 설정에 있습니다. 설정을 읽는 능력은 두 가지에 쓰입니다. 첫째, 처음 보는 서버의 로그 경로를 찾는다. 둘째, 공격자가 바꾼 규칙을 찾아낸다.
핵심 요약
- 전통 문법:
facility.severity action/ 새 문법:action(type="omfile" file="...")- 연산자:
*전체,none제외,=info정확히,!info이하 제외,;조건 결합,,facility 나열- 파일 앞
-= 비동기 기록 / 설정 변경은 백업 → 수정 →rsyslogd -N1→ 재시작 → 테스트 로그
| 표현 | 의미 | 예 |
|---|---|---|
authpriv.* | authpriv의 모든 severity | → secure |
*.info | 모든 facility의 info 이상 | |
mail.none | mail 제외 | *.info;mail.none |
kern.=warning | warning 만 | |
kern.!err | err 이상 제외 (warning 이하만) | |
auth,authpriv.* | 두 facility | Ubuntu auth.log |
-/var/log/syslog | 비동기(sync 안 함) | 성능 우선 |
@host:514 / @@host:514 | UDP / TCP 전송 | 36편 |
:omusrmsg:* | 모든 로그인 사용자에게 | *.emerg |
stop (구 ~) | 이후 규칙 처리 중단 (버림) | 은폐 악용 가능 |

메시지 (facility=authpriv, severity=info, programname=sshd)
↓ 규칙을 위에서 아래로 모두 평가 (stop 이 없으면 여러 규칙에 동시 매칭)
[1] *.info;mail.none;authpriv.none;cron.none → messages ✗ (authpriv.none)
[2] authpriv.* → secure ✓
[3] (rsyslog.d/90-forward.conf) authpriv.* → 원격 전송 ✓
↓
결과: secure 와 중앙 서버 두 곳에 기록
| 배포판 | 메인 | 규칙 위치 | 포함 순서 |
|---|---|---|---|
| Rocky 9 | /etc/rsyslog.conf | 메인 파일 본문 (#### RULES ####) | include(file="/etc/rsyslog.d/*.conf") 가 규칙 앞에 위치 |
| Ubuntu 24.04 | /etc/rsyslog.conf | /etc/rsyslog.d/50-default.conf | $IncludeConfig /etc/rsyslog.d/*.conf, 파일명 숫자순 |
파일명 숫자가 작을수록 먼저 평가됩니다. 공격자가 /etc/rsyslog.d/00-xxx.conf 에 stop 규칙을 넣으면 기본 규칙보다 먼저 로그를 버릴 수 있습니다.
# 유효 규칙만 (주석·빈 줄 제거) — 파일명 순서대로
for f in /etc/rsyslog.conf /etc/rsyslog.d/*.conf; do echo "## $f"; grep -vE '^\s*#|^\s*$' "$f" 2>/dev/null; done
# 로그를 버리는 규칙 탐지
grep -nE '\bstop\b|~$|\.none|omfwd|@' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null
# 설정 파일 변경 시각 (사고 시간대와 비교)
stat -c '%y %n' /etc/rsyslog.conf /etc/rsyslog.d/*.conf
# 패키지 원본과 비교 (RHEL)
rpm -V rsyslog # 5(checksum) 표시 = 원본과 다름
# (Ubuntu) dpkg --verify rsyslog
# 규칙 경로 테스트 (운영 서버는 사전 공지)
logger -p authpriv.info -t cfgtest "rule path test $(date +%s)"
grep cfgtest /var/log/secure /var/log/auth.log 2>/dev/null | tail -1

위 이미지는 Rocky Linux 9.8 실습 환경에서 rsyslog 규칙을 실제로 조회한 결과입니다.
실습 환경에서 확인한 Rocky 9.8 기본 규칙(실제 파일 내용):
*.info;mail.none;authpriv.none;cron.none action(type="omfile" file="/var/log/messages")
authpriv.* action(type="omfile" file="/var/log/secure")
mail.* action(type="omfile" file="/var/log/maillog" sync="on")
cron.* action(type="omfile" file="/var/log/cron")
*.emerg action(type="omusrmsg" users="*")
uucp,news.crit action(type="omfile" file="/var/log/spooler")
local7.* action(type="omfile" file="/var/log/boot.log")
아래는 은폐 규칙을 설명하기 위한 예시 설정(공격 기법 설명용, 실제 서버에 적용 금지):
[예시] /etc/rsyslog.d/00-cache.conf
if $fromhost-ip == '127.0.0.1' and $msg contains '203.0.113.45' then stop
| 규칙 요소 | 확인 질문 |
|---|---|
| selector | 인증(authpriv) 로그가 최소 한 곳에 기록되는가? |
none | 의도된 제외인가? (기본 규칙과 비교) |
stop | 기본 설정에 없는 stop이 있는가? |
| action | 파일 경로·권한(FileCreateMode)이 적절한가? |
| 파일명 순서 | 00- 처럼 앞 순서 파일이 새로 생겼는가? |
| 정상 | 의심 |
|---|---|
rpm -V rsyslog 결과 없음 또는 알려진 변경 | 설명 없는 rsyslog.conf 변경 |
rsyslog.d 에 배포·관리 도구 파일만 | 처음 보는 00-*.conf |
| 원격 전송 규칙 존재 | 전송 규칙 삭제 |
/etc/rsyslog.conf, /etc/rsyslog.d/), audit 파일 감시, 로그 유입량 급감 모니터링.stop 규칙 발견 시 해당 조건에 맞는 로그를 저널·중앙 서버에서 복원.[ ] 배포판별 규칙 위치 확인
[ ] selector 연산자(*, none, =, !, ;, ,) 해석
[ ] 한 메시지가 여러 규칙에 매칭되는 흐름 추적
[ ] stop / none / 전송 규칙 탐지
[ ] rpm -V / dpkg --verify 로 원본 비교
[ ] 변경 절차(백업→수정→-N1→재시작→테스트) 이해
stop 이 있으면 중단된다.rsyslog.d 의 파일명 순서가 평가 순서를 결정한다.stop·none 규칙은 로그 은폐 신호다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 34. rsyslog 구조 이해 |
| ▶ 다음 글 | 36. 원격 Syslog와 중앙 로그 서버 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |