Linux 로그 경로 정리 · 34/50 · Part 4. journald / rsyslog / auditd

선행 학습 → 31. systemd-journald 이해 · 08. Syslog의 Facility와 Severity
이번 글 → rsyslog 구조 이해
이어서 → 35. rsyslog 설정 파일 분석

1. 들어가며

journald가 "모으는 곳"이라면 rsyslog는 "나눠서 보내는 곳" 입니다. /var/log/secure 같은 텍스트 파일, 중앙 로그 서버 전송, 필터링이 모두 rsyslog의 일입니다. 구조를 알아야 "왜 파일에 로그가 안 쌓이지?"와 "공격자가 무엇을 바꾸면 로그가 사라지나?"에 답할 수 있습니다.

핵심 요약

  • rsyslog = 입력(im) → 규칙(selector/RainerScript) → 출력(om) 파이프라인
  • RHEL 9: imjournal(저널에서 읽기) + imuxsock 소켓 off / Ubuntu: imuxsock + imklog 중심(환경별)
  • 출력 액션마다 큐를 둘 수 있어 원격 서버 장애 시에도 유실을 줄인다.

2. 핵심 개념

단계모듈역할
입력imjournaljournald 저널을 읽어 가져옴 (RHEL 기본)
입력imuxsock로컬 소켓 /dev/log 수신
입력imklog커널 로그 수신
입력imudp / imtcp / imrelp원격 수신 (중앙 서버 역할)
처리selector (authpriv.*), RainerScript (if $programname == 'sshd')분류·필터
출력omfile파일 기록
출력omfwd원격 전송 (UDP/TCP)
출력omrelpRELP 신뢰 전송
출력omusrmsg로그인 사용자 터미널 알림 (*.emerg)
큐main queue / action queue버퍼링, 디스크 보조 큐

3. 로그 생성 구조

rsyslog 처리 파이프라인

Application
     ↓  syslog() API
/dev/log ──┐                       ┌── imjournal (RHEL 9 기본 입력)
           ├──▶ systemd-journald ──┤
kernel ────┘                       └── (Ubuntu: imuxsock/imklog 등 환경별)
                                          ↓
                               rsyslog main queue
                                          ↓
                          rules (facility.severity / RainerScript)
                     ┌────────────┬───────┴──────┬──────────────┐
                  omfile        omfile         omfwd          omusrmsg
              /var/log/secure /var/log/messages  →중앙 서버      터미널

4. 실제 로그 경로

/etc/rsyslog.conf            메인 설정 (RHEL 은 규칙까지 여기에)
/etc/rsyslog.d/*.conf        추가 설정 (Ubuntu 규칙 50-default.conf, 원격 전송 설정 위치)
/var/lib/rsyslog/            작업 디렉터리 (imjournal.state = 저널 읽기 위치, 큐 파일)
/usr/lib64/rsyslog/ (RHEL), /usr/lib/x86_64-linux-gnu/rsyslog/ (Ubuntu)   모듈

imjournal.state 의미: rsyslog가 저널의 어디까지 읽었는지 저장합니다. rsyslog가 중지됐다가 재시작하면 이 위치부터 이어 읽으므로, 중지 기간의 로그가 나중에 파일에 기록될 수 있습니다(저널이 그 사이 유지된 경우).

5. 명령어 실습

rsyslogd -v | head -2
systemctl status rsyslog --no-pager | head -5

# 입력 모듈 확인
grep -nE 'module\(load="im|\$ModLoad' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null

# 출력 액션 (파일 / 전송)
grep -nE 'omfile|omfwd|omrelp|@@?[a-zA-Z0-9]' /etc/rsyslog.conf /etc/rsyslog.d/*.conf 2>/dev/null

# 설정 문법 검증 (설정 변경 전후 필수)
rsyslogd -N1

# 상태 파일 / 큐 파일
ls -la /var/lib/rsyslog/

6. 로그 예시

실제 실행 결과 — Rocky Linux 9.8 · root@rocky9-lab — rsyslog 상태/문법검사

위 이미지는 Rocky Linux 9.8 실습 환경에서 rsyslog 상태와 문법 검사를 실제로 실행한 결과입니다.

실습 환경의 Rocky 9.8 /etc/rsyslog.conf 에서 확인한 입력 구성(실제 파일 내용 발췌):

module(load="imuxsock" SysSock.Use="off")
module(load="imjournal" UsePid="system" FileCreateMode="0644" StateFile="imjournal.state")
include(file="/etc/rsyslog.d/*.conf" mode="optional")

7. 로그 필드 분석

rsyslog 속성(property)은 규칙·템플릿에서 필드처럼 쓰입니다.

속성의미활용
$programname태그 (sshd)프로그램별 분리
$syslogfacility-textfacility분류
$syslogseverity-textseverity필터
$hostname / $fromhost-ip호스트 / 실제 전송 IP중앙 서버에서 출처 검증
$msg메시지키워드 필터

$hostname 은 메시지 안의 값(위조 가능), $fromhost-ip 는 실제 연결 IP입니다. 중앙 서버에서는 후자로 출처를 검증합니다.

8. 보안관점

정상의심
기본 입력 모듈입력 모듈 주석 처리 → 파일 로그 전면 중단
인증 규칙 존재authpriv 규칙 제거, & stop / ~ (discard) 추가
전송 설정 유지원격 전송 액션 삭제·주석
rsyslogd -N1 정상설정 파일 mtime이 사고 시간대

stop 규칙 예: if $programname == 'sshd' then stop 한 줄이면 sshd 로그가 파일·원격 모두에서 사라집니다(저널에는 남음). 공격자의 로그 은폐 기법으로 쓰일 수 있어 설정 파일 무결성 감시가 필요합니다.

9. SOC 관점

  • Detection: Wazuh FIM으로 /etc/rsyslog.conf, /etc/rsyslog.d/ 감시 + audit -w /etc/rsyslog.d -p wa -k rsyslog_conf.
  • Triage: 파일 로그가 멈춘 Alert → rsyslogd -N1, 설정 변경 시각, 저널 비교.
  • Architecture: 원격 전송 액션에는 디스크 보조 큐 설정(36편).

10. 실습 체크리스트

[ ] 입력 → 규칙 → 출력 → 큐 구조 설명
[ ] RHEL / Ubuntu 입력 모듈 차이 확인
[ ] 출력 액션(omfile/omfwd) 목록 확인
[ ] rsyslogd -N1 문법 검증
[ ] imjournal.state 의 의미 설명
[ ] stop/discard 규칙을 이용한 은폐 위험 설명

11. 핵심 정리

  • rsyslog는 입력 모듈, 규칙, 출력 모듈, 큐로 이루어진 파이프라인이다.
  • RHEL 9는 journald를 imjournal로 읽어 파일로 분배한다.
  • $fromhost-ip 는 위조할 수 없는 실제 출처다.
  • 규칙 한 줄(stop)로 특정 로그를 숨길 수 있으므로 설정 무결성을 감시한다.
  • 설정 변경 전후에는 rsyslogd -N1 로 검증한다.

12. 다음 편 연결

구분글
◀ 이전 글33. journalctl 시간·서비스·우선순위 필터링
▶ 다음 글35. rsyslog 설정 파일 분석
시리즈Linux 로그 경로 정리 전체 보기
선행 시리즈리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글