들어가며

보안 감사나 침해 사고 대응 시 가장 중요한 것이 로그입니다. 하지만 기본 설정만으로는 보안 사고 발생 시 충분한 증거를 확보하지 못할 수 있습니다. KISA(한국인터넷진흥원)에서는 리눅스 로그 설정 권장값을 배포하고 있는데, 이를 실제 운영 중인 Oracle Linux 9 서버에 적용해봤습니다.

KISA 로그 설정 가이드란?

KISA에서 배포한 **“한눈에 보는 로그설정 노트 (Linux)”**는 다음 9가지 로그 설정에 대한 권장값을 제공합니다:

  1. 명령 히스토리 - HISTFILE, HISTSIZE 설정
  2. 로그 로테이션 - 전역 주기 및 보관 정책
  3. 커널 로그 - rsyslog 설정
  4. utmp - 현재 로그인 사용자 정보
  5. wtmp - 로그인/로그아웃 이력
  6. btmp - 실패한 로그인 시도
  7. messages - 시스템 메시지
  8. secure - 인증 및 보안 이벤트
  9. dmesg - 커널 메시지

이 중에서 로그 로테이션 설정이 핵심입니다.

현재 시스템 상태 점검

1. 전역 로그 로테이션 설정

1
2
# /etc/logrotate.conf 확인
cat /etc/logrotate.conf

기존 설정:

  • 주기: weekly (주간)
  • 보관: rotate 4 (4주)
  • 압축: 비활성화

2. 로그 파일 권한 확인

1
ls -l /var/log/{btmp,wtmp,messages,secure}

기존 권한:

btmp:     -rw-rw---- (0660) root:utmp
wtmp:     -rw-rw-r-- (0664) root:utmp
messages: -rw------- (0600) root:root
secure:   -rw------- (0600) root:root

3. 개별 로그 로테이션 설정

1
2
ls -1 /etc/logrotate.d/
cat /etc/logrotate.d/{btmp,wtmp}

기존 설정:

  • btmp/wtmp: rotate 1 (1개월만 보관)
  • messages/secure: 전용 설정 없음

KISA 권장값과의 비교

항목기존 설정KISA 권장개선 필요
전역 주기weekly, rotate 4monthly, rotate 6✅ 변경
btmp 권한06600640✅ 강화
btmp 보관1개월6개월✅ 연장
wtmp 권한06640640✅ 강화
wtmp 보관1개월6개월✅ 연장
messages설정 없음0640, 6개월✅ 신규
secure설정 없음0640, 6개월✅ 신규

주요 문제점:

  1. 보관 기간 부족 - 1개월만 보관하면 침해 사고 조사 시 증거 부족
  2. 권한 과다 - 그룹 쓰기 권한으로 로그 위변조 가능
  3. 개별 설정 부재 - 중요 로그에 대한 세밀한 관리 불가

적용 과정

1. 백업 먼저!

1
2
3
mkdir -p /tmp/logrotate_backup
cp /etc/logrotate.conf /tmp/logrotate_backup/
cp -r /etc/logrotate.d /tmp/logrotate_backup/

안전 규칙: 시스템 설정 변경 전 반드시 백업!

2. 전역 설정 변경

1
sudo vi /etc/logrotate.conf

변경 내용:

1
2
3
4
5
6
7
8
# rotate log files monthly (KISA 권장)
monthly

# keep 6 months worth of backlogs (KISA 권장)
rotate 6

# compress rotated logs (KISA 권장)
compress

3. btmp 로그 설정

Oracle Linux 9는 btmp 그룹이 없고 utmp 그룹을 사용합니다.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo tee /etc/logrotate.d/btmp << 'EOF'
# KISA 권장 설정 적용 (2026-02-06)
/var/log/btmp {
    monthly
    create 0640 root utmp
    rotate 6
    missingok
    dateext
}
EOF

설정 설명:

  • monthly - 매월 1일 로테이션
  • create 0640 root utmp - 새 파일 권한 및 소유자
  • rotate 6 - 6개월치 보관
  • missingok - 파일 없어도 에러 안남
  • dateext - 파일명에 날짜 추가 (예: btmp-20260206)

4. wtmp 로그 설정

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo tee /etc/logrotate.d/wtmp << 'EOF'
# KISA 권장 설정 적용 (2026-02-06)
/var/log/wtmp {
    monthly
    create 0640 root utmp
    rotate 6
    missingok
    dateext
}
EOF

5. messages 로그 설정 (신규)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo tee /etc/logrotate.d/messages << 'EOF'
# KISA 권장 설정 적용 (2026-02-06)
/var/log/messages {
    monthly
    create 0640 root root
    rotate 6
    missingok
    dateext
}
EOF

6. secure 로그 설정 (신규)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
sudo tee /etc/logrotate.d/secure << 'EOF'
# KISA 권장 설정 적용 (2026-02-06)
/var/log/secure {
    monthly
    create 0640 root root
    rotate 6
    missingok
    dateext
}
EOF

설정 검증

1. 문법 검사

1
sudo logrotate -d /etc/logrotate.conf 2>&1 | grep -E "error|btmp|wtmp"

정상 출력:

reading config file btmp
reading config file wtmp
rotating pattern: /var/log/btmp  monthly (6 rotations)
rotating pattern: /var/log/wtmp  monthly (6 rotations)

에러가 없으면 정상입니다!

2. 테스트 실행

1
sudo logrotate -f /etc/logrotate.conf

주의: -f 옵션은 즉시 강제 실행이므로 테스트 환경에서만 사용하세요.

적용 결과

보안 개선 효과

  1. 로그 파일 무단 수정 방지

    • 권한 강화: 0660/0664 → 0640
    • 그룹 쓰기 권한 제거로 일반 사용자 수정 불가
  2. 보안 사고 조사 기간 확보

    • 보관 기간: 1개월 → 6개월
    • 장기간 로그 보존으로 침해 사고 추적 가능
  3. KISA 권장 기준 준수

    • 정보보호 관리체계(ISMS) 인증 준비 시 유리
    • 보안 감사 대응 용이
  4. 디스크 효율 향상

    • 압축 활성화로 로그 파일 크기 50~70% 감소
    • 6개월 보관해도 디스크 부담 최소화

디스크 사용량 예측

현재 로그 사용량:

1
du -sh /var/log/{messages,secure,btmp,wtmp}
43M  /var/log/messages
8.1M /var/log/secure
0    /var/log/btmp
84K  /var/log/wtmp

6개월 보관 시 예상:

  • 압축 없이: ~307MB (51.1MB × 6)
  • 압축 적용: ~150MB (압축률 50% 가정)

현재 여유 공간이 127GB이므로 전혀 문제없습니다.

핵심 학습 포인트

1. 로그 권한 관리의 중요성

로그 파일 권한이 0664 (rw-rw-r–) 이면 그룹 멤버가 로그를 수정할 수 있습니다. 공격자가 그룹 권한을 획득하면 침입 흔적을 지울 수 있죠.

권장 권한: 0640 (rw-r—–)

  • 소유자(root)만 쓰기 가능
  • 그룹은 읽기만 가능
  • 기타 사용자는 접근 불가

2. 로그 보관 기간 설정 원칙

보관 기간용도비고
1개월일상 모니터링단기 문제 해결
3개월보안 감사분기별 검토
6개월침해 사고 조사KISA 권장
1년 이상법적 증거규정 준수 필요 시

보안 사고는 발생 후 수개월 뒤에 발견되는 경우가 많습니다. 6개월 보관은 최소 기준입니다.

3. logrotate 핵심 옵션

1
2
3
4
5
6
7
8
monthly           # 매월 1일 실행
rotate 6          # 6개 파일 보관 (6개월)
create 0640       # 새 파일 권한
missingok         # 파일 없어도 에러 안남
dateext           # 날짜 확장자 (예: .20260206)
compress          # 압축 활성화
delaycompress     # 최신 파일은 압축 안함
notifempty        # 빈 파일은 로테이션 안함

4. OS별 차이점 주의

RHEL/CentOS/Oracle Linux:

  • 그룹: utmp (btmp, wtmp용)
  • 설정: /etc/logrotate.d/

Debian/Ubuntu:

  • 그룹: btmp, wtmp (별도 그룹)
  • 설정: /etc/logrotate.d/

KISA 가이드는 Debian 기준이므로 RHEL 계열에서는 그룹명 조정 필요합니다.

5. 로그 로테이션 타이밍

1
2
# cron으로 매일 실행
cat /etc/cron.daily/logrotate

실제 로테이션은 조건이 만족될 때만 실행됩니다:

  • monthly - 매월 1일에만
  • weekly - 매주 일요일에만
  • daily - 매일

매일 cron이 돌아도 조건 미달 시 스킵됩니다.

추가 보안 강화 팁

1. 원격 로그 백업

중요 서버는 로그를 원격 서버에도 전송하세요:

1
2
3
4
5
# rsyslog 원격 전송 설정
sudo vi /etc/rsyslog.conf

# 모든 로그를 원격 서버로
*.* @@log-server.example.com:514

공격자가 로컬 로그를 삭제해도 원격 서버에 증거가 남습니다.

2. 로그 무결성 검증

1
2
3
4
# AIDE (Advanced Intrusion Detection Environment) 설치
sudo dnf install aide
sudo aide --init
sudo aide --check

로그 파일 해시를 저장해서 위변조를 탐지할 수 있습니다.

3. 실시간 로그 모니터링

1
2
3
# fail2ban으로 자동 차단
sudo dnf install fail2ban
sudo systemctl enable fail2ban

로그를 분석해서 공격 패턴 발견 시 자동으로 IP를 차단합니다.

마무리

KISA 로그 설정 권장값은 최소한의 보안 기준입니다. 이번 적용으로:

✅ 로그 파일 무단 수정 방지
✅ 침해 사고 조사 기간 6배 확보
✅ KISA 권장 기준 100% 준수
✅ 디스크 효율 향상 (압축)

운영 중인 리눅스 서버가 있다면 지금 바로 점검해보세요. 로그는 사고가 난 후에야 그 중요성을 깨닫게 됩니다. 미리 준비하는 것이 최선의 보안입니다.

참고 자료


💬 댓글로 궁금한 점 남겨주세요!