Linux 시스템 보안 기초 · 41/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
탐지와 대응의 모든 것은 로그에서 출발합니다. '증거는 거짓말하지 않는다'는 원칙의 실체가 바로 로그죠. 그런데 리눅스 로그는 journald, rsyslog, auditd가 얽혀 있어 헷갈립니다. 이번 편은 그 관계를 명확히 정리합니다.
세 로그 시스템의 역할:
| 시스템 | 역할 | 저장 |
|---|---|---|
| journald | systemd 통합 로그 수집 | 바이너리(/run, /var/log/journal) |
| rsyslog | 전통적 텍스트 로그·원격 전송 | 텍스트(/var/log/*.log) |
| auditd | 커널 감사(syscall 단위) | /var/log/audit/audit.log |
journald가 대부분을 수집하고, rsyslog가 텍스트 파일·원격 전송을, auditd가 저수준 감사를 담당합니다.
커널 / 서비스 / 애플리케이션
│
┌─────────┼──────────┐
▼ ▼ ▼
journald rsyslog auditd
(systemd (텍스트, (syscall
저널) 원격전송) 감사)
│ │ │
▼ ▼ ▼
journalctl /var/log/* /var/log/audit
systemd 시스템에서는 journald가 커널·서비스 로그를 먼저 받아 저널(바이너리)에 저장하고, 설정에 따라 rsyslog로 전달해 텍스트 파일로도 남깁니다. auditd는 커널 감사 서브시스템에 직접 연결되어, syscall 수준의 상세 이벤트(누가 어떤 파일을 열었나 등, 43편)를 기록합니다.
배포판 차이가 큰 영역입니다:
/var/log/auth.log/var/log/secure이 차이를 모르면 로그를 못 찾아 헤맵니다.
# journald: 서비스/우선순위별
sudo journalctl -u ssh -p warning --since today
# rsyslog 텍스트 로그 (배포판 차이)
sudo tail /var/log/auth.log # Ubuntu/Debian
sudo tail /var/log/secure # RHEL/Rocky
# auditd 상태와 로그
sudo auditctl -s; sudo tail /var/log/audit/audit.log
실습 컨테이너에서 로그 인프라를 실제로 구동해 확인한 결과입니다. (실제 캡처)
$ ls /var/log/ | grep -E 'auth|audit|syslog'
audit
auth.log
syslog
$ sudo auditctl -s
enabled 1
pid 1501
Ubuntu 계열이라 인증 로그는 auth.log이며, auditd가 enabled 1로 동작 중입니다. RHEL 계열이었다면 auth.log 대신 secure를 봐야 합니다 — 이 차이가 실무에서 매우 중요합니다.
공격자는 흔적을 지우려 로그를 조작합니다. 그래서 로그의 원격 전송·보존이 신뢰성의 핵심입니다 — 로컬 로그는 지워질 수 있지만 중앙 서버로 이미 전송된 로그는 남습니다.
SOC의 전제는 '신뢰할 수 있는 로그'입니다. 그래서 로그를 SIEM(중앙)으로 실시간 전송해, 로컬 삭제에도 증거가 남게 합니다. 사용자의 실습 환경(ELK/Wazuh + Suricata)이 바로 이 중앙 수집 구조입니다. journald·rsyslog·auditd를 모두 수집해야 인증·시스템·syscall을 빠짐없이 봅니다.
[ ] journald/rsyslog/auditd 역할 구분
[ ] 배포판별 인증 로그 위치 확인(auth.log vs secure)
[ ] auditd 동작 상태 확인
[ ] 원격 로그 전송 설정 확인
다음 편에서는 42. journalctl 보안 분석 를 다룹니다. journald를 다루는 journalctl로 보안 이벤트를 분석하는 실무 기법을 봅니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.