029. Linux 서버 보안 — rsyslog 설정 점검과 원격 전송

changseop lee·3일 전

시스템 보안 · 취약점 › A. Linux 서버 보안 설정 · 29/50편 (전체 029/450)
학습 단계: 2단계 · 설정 및 점검
실습 표기: 이 글의 명령어·출력·로그는 로컬 VMware 테스트 VM(Rocky Linux 9 / Ubuntu 22.04) 기준의 「실습 예시」이며, IP·계정·호스트명은 가상의 값입니다.

선행 학습

1. 개념

rsyslog는 로그를 규칙(selector)에 따라 파일·원격 서버로 보내는 라우터입니다. 기존 「Linux 로그 경로 정리」에서 구조와 기본 설정을 배웠다면, 여기서는 "로그가 빠짐없이, 끊기지 않고 SIEM까지 가는가"를 점검합니다.

journald ──(imjournal)──┐
커널/앱 ──(imuxsock)────┼──→ rsyslog 규칙 처리 ──┬─→ /var/log/secure, messages ...
                        │                        └─→ omfwd (TCP 514) ──→ 로그 수집 서버 / SIEM
                        └ 필터: ":msg, contains, ..." stop  ← 여기서 버려지면 아무 데도 안 감

2. 왜 중요한가

  • 로컬 로그는 침입자가 지울 수 있지만, 이미 원격으로 보낸 로그는 지울 수 없습니다. 원격 전송은 로그 무결성의 핵심 장치입니다.
  • UDP 전송은 손실돼도 알 수 없고, 큐가 없으면 수집 서버가 잠깐 멈춘 사이 로그가 사라집니다.
  • 공격자는 로그 파일을 지우는 대신 특정 IP·문자열이 포함된 로그만 버리는 필터를 추가할 수 있습니다. 파일은 정상처럼 보여 눈에 띄지 않습니다.

3. 핵심 명령어 / 설정

항목확인 / 설정
문법 검사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)

4. 실습 (실습 예시)

# 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) 검증을 합니다.

5. 정상 상태

$ 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 상태이며 필터 점검 결과가 비어 있는 상태가 정상입니다.

6. 이상 상태

$ 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'
$
  • 파일명은 "노이즈 제거"처럼 보이지만, 공격자 IP가 포함된 로그를 로컬 파일과 원격 전송 모두에서 버림
  • 원격 연결이 없음 → 전송 설정 삭제 또는 수집 서버 차단 가능성
  • 01-로 시작해 다른 규칙보다 먼저 처리되도록 배치한 점도 의도적입니다.

7. 로그 분석 (분석 방법)

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영역 「로그 변조 의심」에서 확장).

8. SOC 관제 포인트

  • /etc/rsyslog.d/ 신규 파일, 특히 stop/discard 포함 설정은 즉시 확인합니다.
  • 호스트별 로그 수신이 N분 이상 끊기면 Alert를 발생시킵니다(무소식이 가장 위험한 신호).
  • 전송 방식은 TCP + 디스크 큐를 기본으로 하고, 가능하면 TLS를 적용합니다.

9. 탐지 규칙

<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 수신 공백을 교차 확인하면 단순 네트워크 장애와 의도적 차단을 구분하는 데 도움이 됩니다.

10. 대응 방법

  1. 초기 확인 — rsyslog 실효 설정(rsyslogd -N1, /etc/rsyslog.d/)과 원격 연결 상태를 확인합니다.
  2. 범위 확인 — 수집 서버에서 해당 호스트의 수신 공백 구간과 버려진 로그 유형을 파악합니다.
  3. 증거 확보 — 설정 파일 사본, 로컬 로그, 수집 서버의 마지막 수신 기록을 보존합니다.
  4. 차단/조치 — 비인가 필터를 제거하고 전송 설정을 복원, 큐에 쌓인 로그 전송을 확인합니다.
  5. 재발 방지 — rsyslog 설정 FIM과 호스트별 수신 공백 감시를 상시 운영합니다.

11. 핵심 정리

구분핵심 내용
원격 전송TCP + LinkedList 디스크 큐 + resumeRetryCount=-1
검증rsyslogd -N1, ss -tnp | grep 514, logger 테스트
은밀한 변조:msg, contains, "IP" stop 필터
탐지/etc/rsyslog.d 변경, omfwd suspended, SIEM 수신 공백
면접 포인트"로그가 없는 것도 탐지 대상"

12. 다음 편 예고

다음 편 030. Linux 서버 보안 — auditd 감사 정책 설계 에서는 시스템 콜 수준의 기록을 남기는 auditd 감사 정책 설계를 다룹니다.


이전 편: 028. Linux 서버 보안 — journald 보존·저장 설정 점검
📚 시리즈 전체 보기: 시스템 보안 · 취약점

profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글