대상 OS: Rocky Linux 9

보안 사고는 늘 “로그가 없어서” 커진다.
서버 한 대가 털렸을 때, 로컬 로그만 믿는 순간 공격자가 흔적을 지울 여지가 생긴다.
중앙 로그 수집은 탐지(Detection)보다 먼저, 증거 보존(Evidence preservation)부터 해결한다.
특히 Rocky Linux 9처럼 systemd-journald + rsyslog를 조합하기 좋은 환경에서는 구축 난이도 대비 효과가 크다.
이 글은 TLS로 안전하게 로그를 원격 전송하고, 방화벽/권한/운영 루틴까지 한 번에 잡는 실전 가이드를 정리한다.

---

목표 아키텍처(아주 단순하게)

- 클라이언트(수집 대상 서버): journald/rsyslog가 이벤트를 **TLS로** 중앙 로그 서버로 전송
- 로그 서버(집계 서버): 6514/tcp(TLS syslog)를 받아서 호스트별로 파일 분리 저장

이 글에서는 로그 서버도 Rocky Linux 9라고 가정한다(동일 OS가 가장 설정이 깔끔하다).

---

1) 사전 점검: 현재 로깅 스택 확인

1.

rsyslog 설치 여부 확인.

rpm -q rsyslog || true
systemctl status rsyslog --no-pager 2>/dev/null || true

2.

journald 상태 확인(기본은 systemd-journald).

systemctl status systemd-journald --no-pager
journalctl -n 20 --no-pager

3.

시간 동기화 확인(중앙 로그에서 타임라인이 생명).

timedatectl status
chronyc tracking 2>/dev/null || true

---

2) 로그 서버 구축: rsyslog TLS 리스너 열기(6514/tcp)

먼저 로그 서버에서 패키지 설치.

sudo dnf -y install rsyslog rsyslog-gnutls
sudo systemctl enable --now rsyslog

# 2-1. TLS 인증서 준비(간단 버전)

운영에서는 사내 CA/ACME/PKI를 쓰는 게 이상적이다. 여기서는 “구동 확인용 최소 구성”으로 self-signed를 만든다.

1.

로그 서버에서 키/인증서 생성.

sudo mkdir -p /etc/pki/rsyslog
sudo openssl req -x509 -newkey rsa:4096 -nodes -days 825 \
  -keyout /etc/pki/rsyslog/server.key \
  -out /etc/pki/rsyslog/server.crt \
  -subj "/CN=logserver.example.internal"
sudo chmod 600 /etc/pki/rsyslog/server.key

2.

클라이언트가 검증할 CA(여기서는 server.crt를 CA처럼 사용) 파일을 배포할 계획을 세운다.
(진짜 운영에선 별도 CA를 만들고 서버/클라이언트에 체계적으로 배포하자.)

---

3) 로그 서버 설정: 입력(Input) + 저장 템플릿

1.

rsyslog에 TLS 입력을 추가한다.

sudo tee /etc/rsyslog.d/10-tls-receiver.conf >/dev/null /dev/null