블로그 홈

Veeam Hardened Repository 구축 가이드 - Ubuntu·XFS·Immutable Storage 구성

Ubuntu 기반 Veeam Hardened Repository 구성 가이드. 디스크/XFS, 권한, SSH, Single-use credentials, Repository 등록과 운영 점검을 실제 GUI 구성 과정에 맞춰 정리했습니다.

운영자15분 읽기3회
Veeam Hardened Repository 구축 가이드 - Ubuntu·XFS·Immutable Storage 구성

Veeam Hardened Repository는 백업 파일을 일정 기간 동안 변경·삭제하지 못하도록 보호하는 Linux 기반 백업 저장소입니다. 랜섬웨어 공격을 대비해 백업 서버와 저장소를 분리할 때 자주 사용하는 방식이기도 합니다.

이번에는 Ubuntu Linux에 저장소용 디스크를 구성한 뒤 Veeam Console에서 Hardened Repository로 등록하는 흐름을 정리해 보겠습니다. 먼저 실제 GUI 구성 기록에 등장하는 화면을 따라가고, 현재 Veeam 13.1.1.18 기준으로 변경됐거나 반드시 추가해야 할 설정도 함께 설명하겠습니다.

구성 범위: Linux 저장소 준비 → XFS → 관리용 계정 → Veeam Managed Server → Hardened Repository → 운영 점검. 원본에는 최종 Repository 목록 등록 성공 화면까지 있으며, 실제 백업 파일의 불변성 삭제 테스트나 복원 성공 결과는 포함돼 있지 않습니다.

1. Immutable Repository는 어떻게 동작할까?

Hardened Repository는 단순히 Linux 디스크에 백업을 저장하는 것과 다릅니다. Veeam이 정해 둔 보존 기간 동안 특정 백업 파일에 Linux immutable 속성을 적용하며, 이 동안 일반적인 백업 관리 작업이나 저장소 접근으로 파일을 삭제·수정하지 못하게 합니다.

Linux 서버의 Veeam Transport Service(veeamtransport)는 백업 서버와 통신하고, Immutability Service(veeamimmureposvc)가 보호 속성을 관리합니다. 초기 등록 때의 Single-use credentials는 Data Mover 배포에 사용하고 Veeam 구성 DB에 저장하지 않습니다. 다만 물리 콘솔 또는 root 권한이 탈취되는 위험까지 제거하는 것은 아니기 때문에 운영체제와 관리 인터페이스 접근 통제가 여전히 중요합니다.

Veeam 13.1에서는 별도 Linux Hardened Repository와 일반 Linux Repository의 governance-mode immutability, Veeam Infrastructure Appliance 기반의 인증서 방식이 구분됩니다. 여기서는 별도 Linux 호스트를 이용하는 Hardened Repository를 구성합니다.

2. 준비 환경과 고려사항

구분

이번 구성의 기준

비고

백업 솔루션

Veeam Backup & Replication

화면은 기존 구성 기록, 검토 기준은 Veeam 13.1.1.18

Repository OS

Ubuntu Linux

기존 기록은 Ubuntu 20.04 이상을 전제로 했으나, 최신 지원 배포판/버전은 별도 확인

스토리지

Linux에 연결된 블록 디스크

디스크 16GB는 기존 GUI 도구의 테스트 조건이며 운영 저장소 공식 최소 용량으로 볼 수 없음

파일시스템

XFS, 가능하면 reflink 활성화

Veeam Fast Clone 사용 가능

설치 보조 도구

veeamhubrepo v0.3.2

커뮤니티/서드파티 프로젝트. Veeam 공식 설치 도구가 아님

권한

전용 non-root 사용자

초기 배포용 일회성 인증, 등록 후 승격 권한 제거

백업 데이터 경로 예

/backup/immutable

실제 장치/경로에 맞게 변경

운영 환경에서 확인할 점: Veeam 공식 요구사항에는 저장소의 immutable 파일 속성 및 extended attributes 지원, 저장소 경로 소유자·그룹, 0700 권한, 지원되는 로컬/원격 블록 스토리지, 포트, 배포판 조건 등이 포함됩니다. NFS/SMB로 마운트된 공유 경로는 전용 Hardened Repository 저장소로 사용할 수 없습니다. 실제 운영에서는 별도 물리 서버와 독립 관리 경로를 권장합니다.

네트워크 포트

포트

용도

운용 주의

TCP 22

초기 SSH 연결 및 구성

초기 등록 후 콘솔 관리가 확보되면 비활성화 권장

TCP 6162

Veeam Transport/Data Mover 서비스

백업 인프라와의 통신에 사용

TCP 2500–3300

데이터 전송/대체 포트 범위

작업 방식과 세부 Port 매트릭스에 맞게 허용

원본 GUI 설명에는 SSH 비활성화와 6162 포트 허용이 강조되어 있습니다. 다만 6162만 열면 모든 백업 작업이 가능하다는 뜻은 아닙니다. 실제 방향성과 방화벽 규칙은 Veeam 구성 요소별 공식 포트 목록과 대조해야 합니다.

3. GUI 도구 설치 화면 살펴보기

당시 구성에서는 커뮤니티 프로젝트 tdewin/veeamhubrepo의 GUI 도구를 활용했습니다. Python 기반으로 추가 디스크 식별, 파티션/파일시스템 준비, 사용자 생성, 구성 정보 및 모니터링을 지원하는 형태였습니다. 아래 명령은 기존 테스트 기록의 도구 설치 순서를 재현한 참고용입니다. 최신 Ubuntu/보안 정책에서 동작이 보장되는 설치 방법은 아닙니다. 실행 전 릴리스 파일의 출처·유지보수 상태를 확인해야 합니다.

wget -O ./veeamhubrepo.deb \
  https://github.com/tdewin/veeamhubrepo/releases/download/v0.3.2/veeamhubrepo_noarch.deb
sudo apt-get install ./veeamhubrepo.deb
sudo veeamhubrepo

GUI에서는 전용 사용자와 패스워드 입력 → 사용 디스크/파티션 선택 → XFS 포맷 여부 확인 → 파티션 생성 옵션 → Server IP, Username, Repository Path 확인 → 저장소 사용량/로그 확인 → 서버 관리 순으로 진행했습니다.

커뮤니티 GUI 설치 명령

저장소 사용자 생성 화면

XFS 포맷 대상 선택

선택한 디스크 포맷 확인

파티션 분할 여부 확인

Linux 서버 IP·사용자·Repository Path 표시

주의: 도구가 자동으로 수행하는 포맷과 권한 설정은 운영 서버에 그대로 적용하지 마세요. 디스크 선택을 잘못하면 기존 데이터를 잃을 수 있습니다. 운영환경에서는 해당 설정 내용을 CLI로도 확인하는 편이 안전합니다.

GUI에서 확인한 모니터링 정보

GUI 모니터링 메뉴

저장소 디스크 사용량 확인

광고

설정 파일 및 로그 파일 위치 확인

GUI의 서버 업데이트 및 Harden 관리 메뉴

4. Ubuntu에서 디스크 및 XFS 준비하기

GUI 방식과 무관하게, 실제 Veeam 저장소에 붙일 디스크부터 확인하겠습니다. 아래의 /dev/sdb1은 예시 장치입니다. 사용 중인 OS 디스크나 다른 데이터 볼륨에 실행하면 안 됩니다.

lsb_release -a
lsblk -o NAME,SIZE,FSTYPE,UUID,MOUNTPOINT,MODEL
findmnt -T /
sudo blkid

디스크 파티션이 이미 준비되어 있고 포맷해도 되는 것이 확실하다면 XFS로 초기화합니다. 다음 명령은 해당 파티션의 데이터를 모두 삭제합니다.

# ⚠️ 데이터가 없는 새 파티션에만 적용
sudo mkfs.xfs -f -m reflink=1 /dev/sdb1

이후 전용 Mount 경로를 만들고 UUID 기반 마운트를 구성합니다. UUID=<실제_UUID>는 blkid 출력으로 치환해 주세요.

sudo mkdir -p /backup/immutable
sudo blkid /dev/sdb1
sudo nano /etc/fstab

/etc/fstab 예시:

UUID=<실제_UUID> /backup/immutable xfs defaults,noatime 0 0
sudo mount -a
findmnt /backup/immutable
df -hT /backup/immutable
xfs_info /backup/immutable

xfs_info 출력에서 reflink 활성화 여부를 확인합니다. XFS를 사용한다고 자동으로 Fast Clone이 켜지는 것은 아니므로 Veeam 저장소 설정의 Use fast cloning on XFS volumes도 활성화해야 합니다.

5. 전용 계정 및 저장소 권한 설정

root 계정으로 상시 연결하는 방식 대신, 저장소 전용 non-root 계정을 사용합니다. 사용자/그룹은 동일한 전용 이름을 사용하도록 만들겠습니다.

sudo groupadd veeamrepo
sudo useradd -m -g veeamrepo -s /bin/bash veeamrepo
sudo passwd veeamrepo
sudo chown veeamrepo:veeamrepo /backup/immutable
sudo chmod 0700 /backup/immutable
ls -ld /backup/immutable

현재 환경에 이미 veeamrepo 사용자·그룹이 있다면 생성 명령을 다시 실행하지 않습니다. 설치 과정에 필요한 권한 상승은 한시적으로 부여하고, 초기 컴포넌트 배포가 끝난 다음 제거해야 합니다.

# 초기 배포 과정에서 sudo가 필요한 경우에만 임시 부여
sudo usermod -aG sudo veeamrepo
# Veeam 등록과 컴포넌트 배포 완료 후 (Ubuntu sudo 그룹 예시)
sudo gpasswd -d veeamrepo sudo

Veeam Console에서 Single-use credentials for hardened repository를 선택하는 것이 핵심입니다. 해당 계정은 home 디렉터리가 있는 non-root 사용자여야 하며, 저장소 경로 소유자는 해당 계정이고 권한은 0700이어야 합니다. 기존 스크린샷에 일반 Credentials 선택 화면이 나오더라도 최신 Veeam 13 구성에서는 반드시 일회용 인증 경로를 적용해야 합니다.

SSH를 끄기 전에는 물리 콘솔/iDRAC/iLO 등 별도 관리 수단이 작동하는지 확인합니다. SSH 서비스를 비활성화하면 원격 관리가 끊길 수 있습니다.

# 로컬 콘솔 또는 out-of-band 관리 수단이 확보된 경우에만 시행
sudo systemctl disable --now ssh

6. Veeam Console에서 Linux Managed Server 등록

Managed Servers → Add Server → Linux

서버 IP와 SSH 사용자 설정 화면

  1. Backup Infrastructure → Managed Servers → Add Server에서 Linux를 선택합니다.

  2. 서버 DNS 이름 또는 IP 주소를 입력합니다.

  3. SSH Connection에서 Single-use credentials for hardened repository를 선택하고 전용 non-root 계정을 입력합니다.

  4. Review 화면에서 Installer/Transport 등 설치 대상 구성 요소를 확인한 뒤 Apply합니다.

  5. Apply 로그에서 각 작업이 성공으로 끝나고 Managed Servers 목록에 Linux 서버가 표시되는지 확인합니다.

기존 구성 화면에는 Linux 서버 172.22.3.130을 Managed Server에 등록하고 Transport를 설치한 과정이 나옵니다. 이 IP는 당시 환경의 사설 주소 예시이므로 실제 환경에 그대로 사용하면 안 됩니다.

Transport/Installer 구성 확인

Managed Server 구성 Apply 성공

Linux Managed Servers 등록 목록

7. Hardened Repository 추가하기

Backup Repositories → Add Backup Repository

Direct Attached Storage → Linux (Hardened Repository)

Repository Server 및 백업 경로 선택

  1. Backup Infrastructure → Backup Repositories → Add Backup Repository를 클릭합니다.

  2. Direct Attached Storage → Linux (Hardened Repository)를 선택합니다. 단순 Linux 일반 저장소와 구별해야 합니다.

  3. 식별 가능한 Repository 이름을 입력합니다.

  4. Repository Server로 앞에서 등록한 Linux 서버를 선택합니다.

  5. Repository Path를 /backup/immutable처럼 준비한 전용 경로로 지정하고 Populate로 용량을 확인합니다.

  6. 지원 XFS 볼륨이면 Use fast cloning on XFS volumes를 선택합니다.

  7. Make recent backups immutable for 항목에서 보호 기간을 지정합니다. 최신 Veeam 13.1 기준 범위는 7~9,999일입니다.

  8. Mount Server와 Instant Recovery Write Cache 경로를 확인하고 Review → Apply를 진행합니다.

  9. Backup Repositories 목록에 Hardened Repository가 표시되는지 확인합니다.

이때 Mount Server의 Write Cache는 복구 처리용 임시 파일 경로입니다. 실제 불변성 보호를 받는 백업 파일이 저장되는 Repository Path와 혼동하면 안 됩니다.

기존 구성 캡처의 Apply 화면에서는 Backup repository has been saved successfully가 표시되고, 목록에도 Hardened Repository 유형이 등록되어 있습니다. 여기까지가 원본 기록에서 확실하게 확인할 수 있는 최종 상태입니다.

Mount Server/Write Cache 및 최종 Review 화면

Repository Apply 성공 및 Hardened 유형 확인

8. 구성 직후 확인할 테스트

1) 저장소 기본 상태

findmnt /backup/immutable
df -hT /backup/immutable
ls -ld /backup/immutable
sudo systemctl status veeamtransport --no-pager

서비스 이름과 설치 방식은 Veeam 버전/플랫폼에 따라 달라질 수 있으므로 실제 서비스 목록과 대조합니다. veeamtransport 상태 확인은 하나의 점검 항목이지 정상 설치를 단독으로 보증하지는 않습니다.

2) 백업 Job 및 보호 기간

  • 테스트용 Backup Job을 만들고 대상 Repository에 백업합니다.

  • Backup Session의 Success 여부, Restore Point 생성 여부를 확인합니다.

  • 설정한 불변성 기간 동안 백업 파일의 삭제가 차단되는지 비파괴적인 방법으로 확인합니다.

  • Restore Point와 실제 파일 복원까지 실행해야 최종 복구 가능성을 판단할 수 있습니다.

# 파일 속성을 조회하는 읽기 전용 확인 예시
sudo lsattr -R /backup/immutable | head -n 50

chattr -i로 실제 백업 파일의 보호 속성을 강제로 해제하는 테스트는 운영 환경에서 권장하지 않습니다. 백업 정책과 불변성 검증은 별도 테스트 환경에서 수행해야 합니다.

9. 구성 시 주의할 점

포맷/스토리지: 원본의 16GB 디스크는 GUI 도구 시험 환경의 최소 조건으로 제시됐을 뿐, Veeam 운영 용량 권장값이 아닙니다. 실제 Backup Retention, Full 주기, 변경 블록량, GFS 정책과 불변성 기간까지 포함해 여유 공간을 산정해야 합니다.

Job 종류와 증분 방식: Hardened Repository에서는 Forward Incremental에 Active Full 또는 Synthetic Full을 포함하는 구성을 사용해야 하며, Reverse Incremental이나 Forever Forward Incremental을 그대로 적용할 수 없습니다. Backup Copy Job의 immutability에는 GFS 보존 정책이 필요합니다.

인증과 권한: 최초 연결 뒤에도 sudo 가능 사용자, SSH 접근 계정, root 접근 경로가 그대로 열려 있으면 공격 표면이 커집니다. 복구·운영 담당자의 접근 방법은 별도로 정하고, 초기 설정에 쓴 임시 승격 권한을 정리합니다.

버전 차이: 본문의 서드파티 GUI 도구와 기존 Veeam 화면은 구성 당시 참고 자료에 해당합니다. Veeam 13.1에는 Infrastructure Appliance의 인증서 방식과 일반 Linux 저장소의 governance-mode 등 추가 선택지가 있습니다. 두 방식은 이 글에서 다룬 Hardened Repository와 동일한 보안 모델로 취급하지 않습니다.

실제 결과 범위: 이번 자료에서 확인된 것은 Linux 서버 연결, Transport 구성과 Hardened Repository 등록 성공입니다. 백업 세션 성공, 정해진 일수 동안 삭제 불가, 파일 복원 성공은 별도의 운영 검증이 필요합니다.

10. 정리

Immutable Repository에서 가장 중요한 것은 기능을 켜는 것만이 아니라 데이터를 저장할 블록 스토리지, 보호 속성을 지원하는 파일시스템, 일회용 인증과 최소 권한, 실제 백업/복원 검증을 함께 구성하는 것입니다.

GUI 도구를 사용하면 저장소 구축 과정을 빠르게 따라갈 수 있지만, 운영 환경에서는 자동 생성된 사용자·디스크·방화벽·SSH 설정을 꼭 확인하는 편이 안전합니다. 무엇보다 Veeam Console에서 일반 Linux 저장소가 아니라 Linux (Hardened Repository)를 선택했는지, 그리고 불변성 기간과 인증 방식이 의도대로 적용됐는지까지 확인해야 합니다.

공식 참고자료

광고

운

운영자

운영자

엔터프라이즈 인프라, 가상화, 백업 솔루션 및 데이터 아키텍처를 연구하고 기록합니다.

이전

다음

관련 게시글

댓글

또는 로그인

첫 번째 댓글을 남겨보세요!