개요
이 문서는 Linux의 shred 유틸리티를 사용해 하드 드라이브나 파티션의 데이터를 영구적으로 덮어써서 복구를 방지하는 방법을 설명합니다. 여기서는 파일이 아닌 블록 장치(/dev/sdX, /dev/mdX 등)에 적용하는 절차에 초점을 맞춥니다.
중요 용어 1줄 정의:
- 블록 장치: 운영체제가 바이트가 아닌 블록 단위로 읽고 쓰는 저장장치의 추상화(예: /dev/sda).
shred란 무엇인가
shred는 파일 또는 장치의 데이터를 여러 번 무작위 및/또는 고정 패턴으로 덮어써서 물리적 복구(예: 디스크 마그네틱 잔존물 조사)를 어렵게 만드는 GNU coreutils 도구입니다. 기본 동작은 파일 시스템의 파일을 덮어쓰는 것이지만, 블록 장치 전체를 대상으로도 동작합니다.
중요: shred는 파일 시스템이 “제자리(overwrite in place)”로 덮어쓰기를 수행한다는 전제에 의존합니다. 많은 현대 파일 시스템(저널링, 복제, 스냅샷, 캐시, 압축 파일시스템)은 이 전제를 만족하지 않을 수 있어, 파일 단위 삭제에는 제한이 있습니다. 반면 파티션이나 디스크의 블록 장치를 직접 대상으로 하면 효과가 더 확실합니다.
언제 shred가 효과적이지 않은가
- 저널링 또는 로그 기반 파일시스템(JFS, ReiserFS, XFS, ext3 데이터=journal 등)에서 파일 단위 덮어쓰기는 실패할 수 있습니다.
- RAID나 중복 쓰기를 하는 파일시스템은 일부 복사본에 덮어쓰기가 반영되지 않을 수 있습니다.
- 스냅샷을 유지하는 스토리지(NFS 서버, 스토리지 어플라이언스)는 원본 데이터의 스냅샷을 남길 수 있습니다.
- 임시 위치에 캐시하는 클라이언트(NFS v3 등)와 압축 파일시스템에서도 완전한 삭제가 불가능할 수 있습니다.
- SSD는 웨어 레벨링과 오버프로비저닝 때문에 논리적 덮어쓰기로 모든 플래시 셀을 직접 덮어쓰지 못합니다.
준비 및 전제 조건
- 시스템 파티션을 삭제할 경우 라이브 환경(예: Ubuntu Live CD, Knoppix, 호스팅 제공자의 리커버리 환경)로 부팅해야 합니다.
- shred가 설치되어 있는지 확인:
which shred
- Debian/Ubuntu 기반에서 설치가 필요하면 coreutils를 설치합니다(일반적으로 기본 포함):
sudo apt-get update
sudo apt-get install coreutils
중요: 대상 디스크/파티션이 마운트되어 있으면 안 됩니다. 항상 정확한 장치명을 재차 확인하세요. 잘못된 장치에 실행하면 데이터를 되돌릴 수 없습니다.
주요 옵션과 의미
- -v : 진행 상황 출력(verbose)
- -f : 필요하면 파일 권한을 변경하여 쓰기 허용
- -z : 마지막에 0으로 덮어써서 shred 흔적을 숨김
- -n N : N번 덮어쓰기 (기본 3회)
예: 10회 덮어쓰고 마지막에 0으로 채우기:
shred -vfz -n 10 /dev/sda5
파티션 및 디스크를 지우는 실제 예
파티션 지우기 예:
shred -vfz -n 10 /dev/sda5
RAID 디바이스 지우기 예:
shred -vfz -n 10 /dev/md1
디스크 전체 지우기 예:
shred -vfz -n 10 /dev/sda
중요: 명령은 대상 디바이스의 크기와 -n 값에 따라 오래 걸립니다. 몇 시간에서 수십 시간이 걸릴 수 있습니다.
SSD와 플래시 기반 저장장치에 대한 주의
SSD와 일부 플래시 장치는 웨어 레벨링과 오버프로비저닝 때문에 shred로 모든 물리 셀을 덮어쓰지 못합니다. SSD에서 데이터 파기를 원하면 다음 대안을 고려하세요:
- 제조사가 제공하는 ATA Secure Erase 명령 사용(유틸: hdparm)
- 전체 디스크 암호화 후 키를 파기(가장 실용적인 경우가 많음)
- 물리적 파괴(데이터 보안 요구가 매우 높을 때)
대체 방법 비교(간단히)
- dd: 특정 패턴(예: /dev/urandom)으로 디스크를 덮어쓰기. shred와 유사하지만 랜덤 패턴만 적용.
- blkdiscard: SSD/TRIM 지원 장치에서 블록을 해제하지만 물리적 데이터 제거를 보장하지 않음.
- hdparm –security-erase: ATA Secure Erase로 SSD에서 권장되는 방법.
- 암호화 + 키 파기: 즉시 빠르고 신뢰성이 높음(특히 SSD에서).
간단한 의사결정 모델: HDD이면 shred/ dd가 실용적, SSD이면 Secure Erase나 암호화, 매우 민감한 데이터이면 물리적 파괴.
단계별 미니 방법론
- 대상 장치 식별: lsblk, fdisk -l 등으로 정확한 장치명 확인.
- 부팅 환경: 시스템 디스크를 지우려면 라이브 환경으로 부팅.
- 마운트 해제: 대상 파티션이 마운트되어 있지 않은지 확인.
- 백업: 필요한 데이터는 백업(되돌릴 수 없음).
- 실행: 적절한 옵션으로 shred 실행.
- 검증: 완료 후 장치가 정상적으로 초기화되었는지 확인(예: 파티션 테이블 보기).
예시 체크리스트(판매자용):
- 디바이스 식별 완료
- 라이브 미디어로 부팅(시스템 드라이브일 경우)
- 백업 완료
- shred 실행
- 파티션/데이터가 제거되었는지 확인
테스트와 검증(수용 기준)
- shred가 성공적으로 완료되어 exits 0을 반환.
- 파티션 테이블에 기존 데이터가 보이지 않음(fdisk -l 또는 lsblk)
- 복구 도구(예: photorec)로 주요 파일이 복구되지 않음(실무에서 실행해 확인 가능).
참고: 위 검증은 도구의 한계 및 사용 환경에 따라 달라집니다.
위험과 완화
- 실수로 잘못된 장치를 지정해 데이터 영구 손실: 항상 장치명 재확인, lsblk 결과 스크린샷 저장.
- 장시간 실행에 따른 전원 장애: UPS 사용 권장.
- SSD에서의 불완전한 삭제: Secure Erase 또는 암호화 권고.
FAQ
shred는 파일 단위로도 사용할 수 있나요?
네. 파일을 지정하면 덮어쓰기를 시도합니다. 다만 많은 파일시스템에서 파일 단위 덮어쓰기가 효과적이지 않을 수 있습니다. 블록 장치를 직접 지정하면 더 확실합니다.
기본 덮어쓰기 횟수는 얼마인가요?
shred의 기본 덮어쓰기 횟수는 3회입니다. -n 옵션으로 변경할 수 있습니다.
shred로 SSD를 안전하게 지울 수 있나요?
대체로 권장되지 않습니다. SSD는 웨어 레벨링으로 인해 논리적 덮어쓰기가 모든 물리 셀을 덮지 못할 수 있으므로 ATA Secure Erase나 전체 암호화+키파기를 사용하세요.
요약
- shred는 HDD/블록 장치에 대해 유효한 여러 번 덮어쓰기 도구입니다.
- 파일시스템 특성(저널링, 스냅샷 등) 때문에 파일 단위 삭제에는 제한이 있습니다.
- SSD는 별도 방법(ATA Secure Erase, 암호화, 물리 파괴)을 고려해야 합니다.
중요: 잘못 사용할 경우 데이터 복구 불가한 손실이 발생하므로 명령 실행 전 대상 장치를 반드시 확인하세요.