LLM WikiAccess-protected knowledge portal
← 스터디 홈
6편 · 약 22분

백업 보안: immutable backup, ransomware 대응, restore 권한 분리

백업이 공격 대상이 된 시대

랜섬웨어 공격자는 더 이상 운영 데이터만 암호화하지 않는다. 공격이 정교해지면서 백업 시스템을 먼저 탐색하고, 접근 가능한 백업을 삭제하거나 암호화한 뒤, 운영 DB를 공격한다. 피해자가 복구 수단을 잃고 나면 몸값 협박이 시작된다.

2024년 이후 DB 랜섬웨어 사고의 상당수에서 "백업도 함께 암호화되었다"는 보고가 반복된다. 이는 기술적 문제가 아니라 구조 문제다. 백업 스토리지가 프로덕션 네트워크와 같은 자격증명을 공유하거나, 백업 파일을 읽기/쓰기로 마운트해두면, 운영 계정이 침해된 순간 백업도 함께 잃는다.

이 장은 백업 자체를 보호하는 설계인 immutable backup, 랜섬웨어 대응 절차, 복구 권한 분리를 다룬다.


1. 3-2-1-1 규칙: 현대화된 백업 원칙

전통적인 3-2-1 규칙(3개 사본, 2개 미디어 유형, 1개 오프사이트)은 랜섬웨어 이전의 설계다. 오프사이트 사본도 네트워크로 접근 가능하면 공격자가 삭제할 수 있다.

3-2-1-1 규칙은 여기에 하나를 더 추가한다.

숫자의미
3최소 3개의 사본
22개 이상의 서로 다른 미디어 유형(디스크, 오브젝트 스토리지, 테이프)
11개는 오프사이트(물리적 분리)
+11개는 변조 불가능(immutable)한 사본

마지막 +1이 핵심이다. 공격자가 관리자 계정을 탈취하더라도 immutable 사본은 삭제하거나 덮어쓸 수 없어야 한다.

운영 DB MySQL / PostgreSQL Primary source 사본 1: 로컬 디스크 빠른 복구 (RTO 우선) 네트워크 공유 — 삭제 가능 ⚠ 랜섬웨어 취약 사본 2: 오브젝트 스토리지 S3 / GCS / Azure Blob Versioning + lifecycle ★ WORM 설정 권장 사본 3: Immutable 사본 Object Lock Compliance 또는 물리 air-gap 테이프 ✔ root도 삭제 불가 분리 원칙 • 프로덕션과 다른 계정/구독 • 다른 IAM 자격증명 • 네트워크 접근 제한 • 복구 계정 별도 보관 • 변경 알림 활성화 프로덕션 계정이 침해되어도 immutable 사본은 살아남는다 공격 시나리오 랜섬웨어가 관리자 계정 탈취 → 사본1 삭제 ✗ → 사본2 버전 삭제 시도 → 사본3 삭제 실패 ✔ Object Lock이 보호함 → immutable 사본으로 복구
3-2-1-1 백업 구조

2. Immutable Backup: 기술 구현

2.1 S3 Object Lock

AWS S3 Object Lock은 객체를 WORM(Write Once, Read Many) 모드로 보호한다. 버킷 생성 시 활성화해야 하며, 활성화 후 비활성화할 수 없다.

두 가지 모드:

모드특징사용 사례
Governance Modes3:BypassGovernanceRetention 권한을 가진 계정은 잠금 해제 가능내부 운영 유연성이 필요한 경우
Compliance Mode보존 기간 만료 전 누구도(root 포함) 삭제/수정 불가PCI DSS, SEC 17a-4, 금융 규정
# 버킷 생성 시 Object Lock 활성화 (생성 이후 변경 불가)
aws s3api create-bucket \
  --bucket db-backups-immutable \
  --object-lock-enabled-for-bucket

# 기본 보존 정책 설정 (Compliance 모드, 365일)
aws s3api put-object-lock-configuration \
  --bucket db-backups-immutable \
  --object-lock-configuration '{
    "ObjectLockEnabled": "Enabled",
    "Rule": {
      "DefaultRetention": {
        "Mode": "COMPLIANCE",
        "Days": 365
      }
    }
  }'

2.2 GCS와 Azure의 동등 기능

클라우드서비스기능명
AWSS3Object Lock (Compliance/Governance)
GCPCloud StorageRetention Policy + Bucket Lock
AzureBlob StorageImmutable Blob Storage (Time-based retention)

GCS에서는 버킷에 Bucket Lock을 적용하면 retention policy 자체를 단축하거나 삭제할 수 없게 된다.

# GCS: 버킷에 180일 retention policy 설정 후 lock
gcloud storage buckets update gs://db-backups-immutable \
  --retention-period=180d

# lock: 이후 retention 기간 단축 불가 (불가역적)
gcloud storage buckets update gs://db-backups-immutable \
  --lock-retention-policy

2.3 MinIO와 온프레미스 WORM

클라우드를 사용하지 않는 환경에서는 MinIO가 S3 호환 WORM 기능을 제공한다. 온프레미스 NAS/오브젝트 스토리지에 immutable 백업을 구현할 때 활용한다.

# MinIO: 버킷 생성 + Object Locking 활성화
mc mb --with-lock myminio/db-backups-immutable

# 기본 보존 정책 설정
mc retention set --default COMPLIANCE 365d myminio/db-backups-immutable

3. Air-Gap: 네트워크 분리

Air-gap은 백업 스토리지가 프로덕션 네트워크나 인터넷에서 완전히 단절된 상태를 말한다. 공격자가 네트워크 경로를 통해 도달할 수 없으므로 가장 강력한 보호 방법이다.

구현 방법별 수준:

수준방법강도
물리적 air-gapLTO 테이프를 물리 금고에 보관최강
논리적 air-gap복제 완료 후 네트워크 연결 차단
크로스 계정 격리별도 AWS 계정 + 제한된 IAM + no delete policy중상
읽기 전용 엔드포인트백업 스토리지에 쓰기 경로가 없는 계정만 보유

대부분의 조직에서 현실적인 선택은 크로스 계정 격리 + Object Lock Compliance의 조합이다. 테이프 air-gap은 복구 시간이 길기 때문에, 장기 보관이나 규정 준수용으로는 적합하지만 빠른 복구에는 제약이 있다.


4. 복구 권한 분리 (Restore Access Control)

백업 생성 권한과 복구 실행 권한을 분리하는 것은 보안과 운영 모두에서 중요하다.

4.1 왜 분리해야 하는가

  • 내부자 위협 방지: 복구 권한을 가진 사람이 데이터를 무단으로 복원해 이전 상태로 되돌리거나 민감 정보를 추출할 수 있다.
  • 실수 방지: 운영 중인 DB에 실수로 복구를 실행해 현재 데이터를 덮어쓰는 사고를 방지한다.
  • 감사 추적: 복구 작업에 별도 승인과 감사 로그가 남아야 컴플라이언스 요건을 충족한다.

4.2 권한 구조

백업 에이전트 계정
✔ 백업 쓰기 권한
✔ 백업 상태 조회
✗ 복구 실행 불가
✗ 백업 삭제 불가
분리
복구 실행 계정
✔ 복구 실행 권한
✔ 백업 읽기 권한
✗ 백업 삭제 불가
✗ 프로덕션 직접 쓰기 ✗
감독
복구 승인자 계정
✔ 복구 승인/거부
✔ 감사 로그 열람
✗ 복구 직접 실행 ✗
✗ 백업 수정 ✗
복구 절차: 복구 요청 → 승인자 2명 이상 승인 → 복구 실행 → 결과 감사 로그 기록
복구 권한 분리 구조

4.3 AWS IAM 정책 예시

// 백업 쓰기 계정: 업로드만 허용, 삭제 불가
{
  "Effect": "Deny",
  "Action": [
    "s3:DeleteObject",
    "s3:DeleteObjectVersion",
    "s3:PutObjectRetention"
  ],
  "Resource": "arn:aws:s3:::db-backups-immutable/*"
}
// 복구 실행 계정: 읽기만 허용
{
  "Effect": "Allow",
  "Action": [
    "s3:GetObject",
    "s3:GetObjectVersion",
    "s3:ListBucket"
  ],
  "Resource": [
    "arn:aws:s3:::db-backups-immutable",
    "arn:aws:s3:::db-backups-immutable/*"
  ]
}

5. 랜섬웨어 대응 절차

① 격리 감염 시스템 네트워크 차단 프로덕션 읽기 전용 복구 채널 확보 ② 범위 파악 암호화된 데이터 범위 최초 침입 시각 추정 백업 상태 확인 immutable 사본 무결성 ③ 복구 준비 안전한 복구 시점 선택 격리 환경에서 테스트 복구 모든 자격증명 교체 복구 승인 획득 ④ 복구 실행 immutable 백업에서 복원 binlog/WAL로 PITR 데이터 정합성 검증 서비스 점진적 재개 ⑤ 사후 조치 침입 경로 패치 백업 구조 재점검 복구 리허설 스케줄 사고 보고서 작성 주의: 복구 전 모든 자격증명(DB 계정, 서비스 계정, 클라우드 IAM) 교체 필수 — 복구한 환경에 공격자가 남긴 자격증명이 살아있을 수 있다
랜섬웨어 대응 단계

5.1 복구 시점 선택의 함정

랜섬웨어가 실행된 시각 이전으로 복구하더라도 공격자가 언제 최초 침입했는지 파악해야 한다. 침입 후 수주 또는 수개월을 잠복한 뒤 랜섬웨어를 실행하는 패턴이 늘고 있다. 최초 침입 시각을 모른다면 복구한 환경에도 공격자의 백도어가 포함될 수 있다.

  • 감사 로그(앞 장에서 다룬 내용)가 최초 침입 시각 추정에 결정적이다.
  • 가능하면 격리 환경(별도 VPC/계정)에서 먼저 복구한 뒤, 침입 흔적을 제거한 후 프로덕션으로 전환한다.

5.2 자격증명 교체 체크리스트

복구 완료 후 반드시 다음을 교체해야 한다.

  • DB 관리자 계정 비밀번호
  • 애플리케이션 서비스 계정 비밀번호
  • 클라우드 IAM 액세스 키 (backup agent 계정 포함)
  • SSL/TLS 인증서 (인증서 저장소가 침해된 경우)
  • KMS 키 접근 정책 검토

6. 복구 리허설: 백업이 실제 작동하는지 검증

"백업은 테스트하기 전까지는 백업이 아니다." 백업이 있어도 실제 복구를 해보지 않으면 복구 시간과 성공 여부를 알 수 없다.

리허설 주기별 목표:

주기대상목표
매주자동화된 복구 검증 스크립트백업 파일 무결성, 복구 성공 여부
분기별실제 DB 복구 훈련RTO/RPO 측정, 절차 검증
연 1회전체 장애 시나리오 시뮬레이션랜섬웨어 시나리오 포함
# 간단한 MySQL 복구 검증 스크립트 예시
#!/bin/bash
BACKUP_FILE="$1"
TEST_PORT=33061

# 격리된 MySQL 인스턴스에서 복구 테스트
docker run -d --name mysql-restore-test \
  -e MYSQL_ROOT_PASSWORD=testpass \
  -p $TEST_PORT:3306 mysql:8.0

sleep 10

# xtrabackup으로 복구
xtrabackup --prepare --target-dir=$BACKUP_FILE
xtrabackup --copy-back --target-dir=$BACKUP_FILE \
  --datadir=/tmp/restore-test-data

# 테이블 수 확인
TABLES=$(mysql -h127.0.0.1 -P$TEST_PORT -uroot -ptestpass \
  -e "SELECT COUNT(*) FROM information_schema.TABLES" --skip-column-names)

echo "복구된 테이블 수: $TABLES"

# 정리
docker stop mysql-restore-test
docker rm mysql-restore-test

7. 운영 체크리스트

항목확인 기준
3-2-1-1 규칙을 만족하는가?사본 3개, 미디어 2종, 오프사이트 1개, immutable 1개
Immutable 스토리지에 Compliance Mode가 설정되어 있는가?Object Lock/Bucket Lock + COMPLIANCE 모드 확인
백업 에이전트 계정이 immutable 스토리지를 삭제할 수 없는가?IAM deny 정책 확인
복구 권한이 백업 권한과 분리되어 있는가?별도 역할/계정 확인
복구 실행에 2명 이상의 승인이 필요한가?승인 워크플로 존재 여부
분기별 복구 리허설이 수행되는가?RTO/RPO 측정 기록 존재 여부
최근 30일 내 복구 테스트가 성공했는가?자동화 검증 스크립트 결과
프로덕션과 다른 계정/구독에 백업이 저장되는가?크로스 계정 분리 확인
침입 시 자격증명 교체 절차가 문서화되어 있는가?런북 존재 여부

마무리: 백업은 마지막 방어선이다

운영 DB 보안이 뚫려도 immutable 백업이 살아있으면 복구할 수 있다. 반대로 운영 DB 보안이 완벽해도 백업이 함께 침해되면 복구 수단이 없다.

3-2-1-1 규칙, Object Lock Compliance, 복구 권한 분리, 정기 리허설은 선택이 아니다. 랜섬웨어가 DB 환경을 직접 겨냥하는 지금, 이것들이 운영자의 기본 책임 범위다.

다음 장에서는 SOC 2, PCI DSS 같은 규정 프레임워크에서 실제로 증적을 수집하고, 통제를 매핑하고, 예외를 관리하는 실무를 다룬다.

References

  • SentinelOne, "What Are Immutable Backups? Autonomous Ransomware Protection": https://www.sentinelone.com/cybersecurity-101/cybersecurity/immutable-backups/
  • AWS Documentation, "Amazon S3 Object Lock": https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html
  • Object First, "S3 Object Lock for Ransomware Protection": https://objectfirst.com/guides/immutability/s3-object-lock-for-ransomware-protection/
  • AWS in Plain English, "How to Use Object Lock in Amazon S3 with Compliance Mode": https://aws.plainenglish.io/how-to-use-object-lock-in-amazon-s3-with-compliance-mode-for-immutable-backups-and-worm-regulatory-f1f3bb4006c3
  • SeqOps, "Backup Strategies Against Ransomware — 3-2-1-1 Guide": https://seqops.io/knowledge-hub/ransomware-prevention/backup-strategies-ransomware
  • Object First, "3-2-1 Backup Rule Explained & Why It's No Longer Enough": https://objectfirst.com/guides/data-backup/3-2-1-backup-rule-and-strategy/
  • Impossible Cloud, "The 3-2-1 Backup Rule Modernized": https://www.impossiblecloud.com/en-us/magazine/3-2-1-backup-rule-v2-2-new
  • ComputingForGeeks, "Immutable Backups on Linux: Ransomware-Proof Strategy with MinIO, Restic, and Borg": https://computingforgeeks.com/immutable-backups-ransomware-proof-linux-minio-restic-borg/
  • AvePoint, "What Is an Immutable Backup and Does It Actually Stop Ransomware?": https://www.avepoint.com/blog/backup/immutable-backup
  • AWS, "Protect against Ransomware and Insider Threats with Best Practices on Data Resiliency": https://pages.awscloud.com/rs/112-TZM-766/images/DMWQ1D4S1T3-Protect%20against%20Ransomware%20and%20Insider%20Threats%20with%20Best%20Practices%20on%20Data%20Resiliency.pdf