Linux 로그 경로 정리 · 36/50 · Part 4. journald / rsyslog / auditd
선행 학습 → 35. rsyslog 설정 파일 분석
이번 글 → 원격 Syslog와 중앙 로그 서버
이어서 → 37. auditd 구조 이해
로컬 로그의 가장 큰 약점은 root를 가진 공격자가 지울 수 있다는 점입니다. 로그가 생성되는 즉시 다른 서버로 복사해 두면, 로컬 로그가 지워져도 중앙 서버에 사본이 남습니다. 이것이 중앙 집중형 로그 수집의 핵심 목적이며, 44편 실습에서 실제로 지워진 로그를 중앙 사본으로 복원합니다.
핵심 요약
- 목적: 무결성(변조 대비) · 가용성(서버 장애 대비) · 상관분석(여러 서버 통합)
- 전송: UDP
@(유실 가능) < TCP@@< RELP (애플리케이션 수준 확인) / 민감 로그는 TLS- 원격 서버 장애 대비: 액션 큐 + 디스크 보조 + 무한 재시도
| 방식 | 문법 | 장점 | 단점 |
|---|---|---|---|
| UDP | *.* @192.0.2.10:514 | 단순, 부하 적음 | 유실·순서 뒤바뀜, 위조 쉬움 |
| TCP | *.* @@192.0.2.10:514 / omfwd protocol="tcp" | 연결 기반 | 연결 끊김 시 버퍼 필요 |
| RELP | omrelp | 수신 확인 → 유실 최소 | 양쪽 모듈 필요 |
| TLS | gtls 드라이버 (StreamDriver) | 기밀성·서버 인증 | 인증서 관리 |

Linux Server (web01)
rsyslog ── authpriv.*;cron.*;*.warning ── action queue (LinkedList + disk) ──┐
│ │ TCP 514 (TLS 권장 6514)
└─ 로컬 파일 (/var/log/secure …) ▼
Central Log Server (192.0.2.10)
imtcp ── /logs/%HOSTNAME%/secure
└──▶ SIEM (Wazuh / ELK)
| 위치 | 경로 |
|---|---|
| 송신 설정 | /etc/rsyslog.d/90-forward.conf (별도 파일로 관리) |
| 송신 큐 파일 | /var/lib/rsyslog/fwd_central* (원격 장애 시 생성) |
| 수신 설정 | 중앙 서버 /etc/rsyslog.d/10-receive.conf |
| 수신 저장 | 중앙 서버 /var/log/remote/<host>/<program>.log 등 템플릿으로 지정 |
송신 측 설정 (Rocky Linux 9.8 실습 환경에 실제로 작성해 검증한 파일):
# /etc/rsyslog.d/90-forward.conf
# 인증/권한 + 경고 이상 이벤트를 중앙 로그 서버로 TCP 전송 (디스크 큐로 유실 방지)
authpriv.*;cron.*;*.warning action(
type="omfwd" target="192.0.2.10" port="514" protocol="tcp"
queue.type="LinkedList" queue.filename="fwd_central"
queue.maxDiskSpace="1g" queue.saveOnShutdown="on"
action.resumeRetryCount="-1"
)
수신 측 설정 예시 (중앙 서버, 예시 구성):
module(load="imtcp")
input(type="imtcp" port="514" ruleset="remote")
template(name="PerHost" type="string" string="/var/log/remote/%HOSTNAME%/%PROGRAMNAME%.log")
ruleset(name="remote") { action(type="omfile" dynaFile="PerHost") }
# 문법 검증 → 재시작 → 연결 확인
rsyslogd -N1
systemctl restart rsyslog
ss -tnp | grep ':514'
logger -p authpriv.notice -t fwdtest "forward test $(hostname)" # 중앙 서버에서 수신 확인
# 방화벽 (수신 측)
firewall-cmd --add-port=514/tcp --permanent && firewall-cmd --reload # Rocky
# ufw allow from 10.0.0.0/24 to any port 514 proto tcp # Ubuntu

위 이미지는 Rocky Linux 9.8 실습 환경의 원격 전송 설정 파일입니다(전송 대상 서버는 문서용 IP 192.0.2.10이므로 실제 수신은 없는 예시 구성).
같은 실습 환경에서 실제로 실행한 문법 검증 결과입니다. 정상 설정과, 파라미터 이름에 일부러 오타를 낸 사본을 비교했습니다.
[실제 실행 결과 · Rocky Linux 9.8 · rsyslog 8.2510]
$ rsyslogd -N1
rsyslogd: version 8.2510.0-2.el9_8.2, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
$ rsyslogd -N1 -f /tmp/test.conf # protocol= 을 protocl= 로 바꾼 사본
rsyslogd: error during parsing file /tmp/bad.conf, on or before line 7: parameter 'protocl' not known -- typo in config file?
| 설정 | 의미 | 없으면 |
|---|---|---|
protocol="tcp" | 연결 기반 전송 | UDP로 유실 가능 |
queue.type="LinkedList" + queue.filename | 메모리 큐 + 디스크 보조 | 원격 장애 시 로그 유실 |
queue.saveOnShutdown="on" | 종료 시 큐 저장 | 재부팅 시 미전송분 소실 |
action.resumeRetryCount="-1" | 무한 재시도 | 몇 번 실패 후 포기 |
selector authpriv.*;cron.*;*.warning | 전송 범위 | 범위 밖 로그는 로컬에만 |
| 정상 | 의심 |
|---|---|
| 중앙 서버에 모든 서버 로그가 연속 수신 | 특정 서버 수신 중단 (전송 설정 삭제·방화벽 변경) |
$fromhost-ip 와 $hostname 일치 | 불일치 → 위조 로그 주입 |
| 큐 파일 없음(정상 전송) | 큐 파일 누적 → 전송 장애 |
중앙 서버는 로그 원본 보관소이므로 일반 서버보다 강한 접근통제가 필요합니다(관리자 분리, 쓰기 전용 수집 계정, 불변 스토리지 43편).
[ ] 중앙 수집 3가지 목적 설명
[ ] UDP / TCP / RELP / TLS 차이 설명
[ ] omfwd + 디스크 큐 설정 작성
[ ] rsyslogd -N1 으로 검증 (오타 탐지 확인)
[ ] 수신 측 호스트별 저장 템플릿 이해
[ ] 수신 중단 헬스 모니터링 설계
rsyslogd -N1 로 검증하며 오타도 여기서 잡힌다.| 구분 | 글 |
|---|---|
| ◀ 이전 글 | 35. rsyslog 설정 파일 분석 |
| ▶ 다음 글 | 37. auditd 구조 이해 |
| 시리즈 | Linux 로그 경로 정리 전체 보기 |
| 선행 시리즈 | 리눅스 시스템 기초 · 파일 · 권한 · 사용자 관리 · 서비스 · 프로세스 관리 · Linux 시스템 보안 기초 |