시스템 보안 · 취약점 › A. Linux 서버 보안 설정 · 29/50편 (전체 029/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.
rsyslog는 로그를 규칙(selector)에 따라 파일·원격 서버로 보내는 라우터입니다. 기존 「Linux 로그 경로 정리」에서 구조와 기본 설정을 배웠다면, 여기서는 "로그가 빠짐없이, 끊기지 않고 SIEM까지 가는가"를 점검합니다.
journald ──(imjournal)──┐
커널/앱 ──(imuxsock)────┼──→ rsyslog 규칙 처리 ──┬─→ /var/log/secure, messages ...
│ └─→ omfwd (TCP 514) ──→ 로그 수집 서버 / SIEM
└ 필터: ":msg, contains, ..." stop ← 여기서 버려지면 아무 데도 안 감
| 항목 | 확인 / 설정 |
|---|---|
| 문법 검사 | sudo rsyslogd -N1 |
| 설정 위치 | /etc/rsyslog.conf, /etc/rsyslog.d/*.conf |
| 원격 전송(TCP) | action(type="omfwd" target="IP" port="514" protocol="tcp" ...) |
| 디스크 큐 | queue.type="LinkedList" queue.filename="fwdq" queue.saveOnShutdown="on" |
| 무한 재시도 | action.resumeRetryCount="-1" |
| 연결 상태 | ss -tnp | grep ':514' |
| 레거시 문법 | *.* @@IP:514(TCP), @IP:514(UDP) |
# 1) 원격 전송 설정 (수집 서버 192.168.56.100 예시)
sudo tee /etc/rsyslog.d/90-forward.conf <<'EOF'
*.* action(type="omfwd" target="192.168.56.100" port="514" protocol="tcp"
queue.type="LinkedList" queue.filename="fwdq"
queue.maxDiskSpace="1g" queue.saveOnShutdown="on"
action.resumeRetryCount="-1")
EOF
sudo rsyslogd -N1 && sudo systemctl restart rsyslog
# 2) 전송 확인
logger -p authpriv.notice "SYSSEC-TEST forward check"
ss -tnp | grep ':514'
# 3) 로그를 버리는 필터(stop/discard)가 있는지 점검
sudo grep -rnE 'stop|~$|discard' /etc/rsyslog.conf /etc/rsyslog.d/
수집 서버 측에서는 SYSSEC-TEST 문자열이 도착했는지 확인해 양 끝단(end-to-end) 검증을 합니다.
$ sudo rsyslogd -N1
rsyslogd: version 8.2102.0, config validation run (level 1), master config /etc/rsyslog.conf
rsyslogd: End of config validation run. Bye.
$ ss -tnp | grep ':514'
ESTAB 0 0 192.168.56.10:49822 192.168.56.100:514 users:(("rsyslogd",pid=1301,fd=12))
문법 오류 없음, 수집 서버와 TCP 연결이 ESTAB 상태이며 필터 점검 결과가 비어 있는 상태가 정상입니다.
$ sudo grep -rnE 'stop|discard' /etc/rsyslog.d/
/etc/rsyslog.d/01-noise.conf:1::msg, contains, "192.168.56.77" stop
$ ss -tnp | grep ':514'
$
01-로 시작해 다른 규칙보다 먼저 처리되도록 배치한 점도 의도적입니다.rsyslog 자체 로그와 SIEM 측 관찰을 함께 봅니다(가상의 예시 로그).
[서버 /var/log/messages]
Oct 1 03:12:00 rocky9-web01 rsyslogd[9001]: [origin software="rsyslogd" swVersion="8.2102.0" x-pid="9001" x-info="https://www.rsyslog.com"] start
Oct 1 03:12:05 rocky9-web01 rsyslogd[9001]: action 'action-0-builtin:omfwd' suspended (module 'builtin:omfwd'), retry 0. There should be messages before this one giving the reason for suspension.
[수집 서버 관점]
마지막 수신: rocky9-web01 2026-10-01 03:11:58 → 이후 수신 없음
| 관찰 | 해석 |
|---|---|
rsyslog start | 재시작(설정 변경 적용 시점) |
omfwd suspended | 원격 전송 실패 상태 |
| 수집 서버의 수신 공백 | 서버 측 로그가 지워져도 공백 자체가 증거 |
로그가 "없는 것"을 탐지하려면 SIEM 측에서 호스트별 최종 수신 시각을 감시해야 합니다(G영역 「로그 변조 의심」에서 확장).
/etc/rsyslog.d/ 신규 파일, 특히 stop/discard 포함 설정은 즉시 확인합니다.<rule id="100350" level="11">
<if_sid>550,554</if_sid>
<field name="file">^/etc/rsyslog</field>
<description>rsyslog 설정 변경: 전송·필터 규칙 확인 필요</description>
</rule>
<rule id="100351" level="8">
<match>builtin:omfwd' suspended</match>
<description>rsyslog 원격 전송 중단</description>
</rule>
Wazuh 에이전트를 함께 쓰는 경우, 에이전트 연결 끊김 Alert(기본 룰셋의 agent disconnected 계열)와 rsyslog 수신 공백을 교차 확인하면 단순 네트워크 장애와 의도적 차단을 구분하는 데 도움이 됩니다.
rsyslogd -N1, /etc/rsyslog.d/)과 원격 연결 상태를 확인합니다.| 구분 | 핵심 내용 |
|---|---|
| 원격 전송 | TCP + LinkedList 디스크 큐 + resumeRetryCount=-1 |
| 검증 | rsyslogd -N1, ss -tnp | grep 514, logger 테스트 |
| 은밀한 변조 | :msg, contains, "IP" stop 필터 |
| 탐지 | /etc/rsyslog.d 변경, omfwd suspended, SIEM 수신 공백 |
| 면접 포인트 | "로그가 없는 것도 탐지 대상" |
다음 편 030. Linux 서버 보안 — auditd 감사 정책 설계 에서는 시스템 콜 수준의 기록을 남기는 auditd 감사 정책 설계를 다룹니다.
이전 편: 028. Linux 서버 보안 — journald 보존·저장 설정 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점