이번글에서는 리눅스에서 shred를 사용하여 파일을 안전하게 복구 불가능정도로 삭제 시키는 기능을 테스트 하겠습니다.
rm 명령어와 삭제 기능은 같으나 차이점이라면 rm 명령어는 리눅스 상에서는 삭제가 되지만 하드웨어 상에서는 정보가 남아있지만 shred 에서는 모두 삭제된다는 점에서 더 완벽하게 데이터를 삭제할 수 있게 됩니다.
shred 는 파일의 데이터를 여러 번 덮어써서 원래 데이터를 복구할 수 없도록 만듭니다. 이는 보안상 중요한 데이터를 안전하게 삭제할 때 유용합니다.
[테스트 환경]
OS: Rocy Linux
주요 옵션
-n, –iterations=N: 파일을 덮어쓰는 횟수를 지정합니다. 기본값은 3입니다.
-z, –zero: 마지막 덮어쓰기 시 모든 비트를 0으로 설정합니다. 이는 덮어쓰기가 감지되지 않도록 합니다.
-u, –remove: 파일을 덮어쓴 후 삭제합니다.
-v, –verbose: 진행 상황을 자세히 출력합니다.
-f, –force: 읽기 전용 파일의 쓰기 권한을 변경하여 덮어씁니다.
-s, –size=N: 덮어쓰는 크기를 지정합니다.
[옵션 테스트]
파일을 3번 덮어쓰고 삭제
# shred -u test 파일 삭제
파일을 5번 덮어쓰고 마지막에 0으로 덮어쓰기
# shred -n 5 -z test
진행 상황을 출력하면서 파일을 덮어쓰고 삭제
# shred -v -u test
주의 사항
– 저널링 파일 시스템 : shred 는 파일 시스템이 저널링을 사용하는 경우 (예: ext3, ext4, XFS 등) 덮어쓰기 효과가 제한될 수 있습니다. 저널링 파일 시스템에서는 파일의 메타데이터를 기록하므로 파일이 완전히 덮어쓰여지지 않을 수 있습니다.
– SSD 와 플래시 메모리 : SSD 와 플래시 메모리 장치는 내부적으로 쓰기 동작을 최적화하므로, shred 명령이 모든 데이터를 덮어쓰지 않을 수 있습니다. 이러한 장치에서는 장치 자체의 보안 삭제 기능을 사용하는 것이 좋습니다.
– 디렉터리 : shred 명령은 디렉터리 자체를 삭제할 수 없습니다. 디렉터리 내의 파일을 개별적으로 삭제해야 합니다.
마지막으로 shred 명령은 파일을 영구적으로 삭제하여 데이터 복구를 어렵게 만들 때 유용하지만, 사용 환경에 따라 제한이 있을 수 있으므로 주의해서 사용해야 합니다.