Linux에서 파일을 안전하게 삭제하는 방법

오래된 종이 문서를 파쇄하는 것과 같은 이유로 오래된 데이터 파일을 파쇄하십시오. Linux 파일을 안전하게 삭제하기 위해 알아야 할 사항을 알려드립니다. 이 튜토리얼에서는 shred 명령과 보안 삭제 유틸리티 제품군을 다룹니다.

삭제된 파일은 일반적으로 복구 가능

파일을 삭제한다고 해서 실제로 하드 드라이브에서 제거되는 것은 아닙니다. 파일 시스템이 inode를 사용하는 방식에 달려 있습니다. 이들은 파일에 관한 메타데이터를 보유하는 파일 시스템 내의 데이터 구조입니다. 파일 이름, 하드 드라이브에서의 위치, 파일의 속성 및 권한 등은 모두 inode에 저장됩니다. 디렉토리는 파일 자체에 불과합니다. 디렉토리에 포함된 파일의 이름과 inode 번호를 보유하는 것입니다.

rm으로 파일을 삭제하면 파일 시스템이 적절한 inode를 해제하고 디렉토리 파일을 조정합니다. 이것은 파일이 차지하는 데 사용된 하드 드라이브 공간을 사용하지 않은 것으로 표시합니다. 도서관에 들어가서 카드 색인을 뒤지고 책의 카탈로그 카드를 찾아 찢는다고 상상해 보십시오. 책은 아직 책장에 있습니다. 단지 찾기가 더 어렵습니다.

즉, 파일에서 사용한 공간이 이제 다른 파일에서 사용할 수 있습니다. 그러나 이전 파일의 내용은 여전히 ​​그 공간에 있습니다. 해당 공간을 덮어쓸 때까지 파일을 검색할 수 있는 좋은 기회가 있습니다.

그러나 파일을 완전히 제거하는 것은 단순히 덮어쓰는 것만큼 간단하지 않습니다. 우리가 보게 될 것입니다.

SSD로 이 작업을 수행하지 마십시오.

이러한 기술은 기존의 전자 기계식 하드 디스크 드라이브(HDD)용이며 솔리드 스테이트 드라이브(SSD)와 함께 사용해서는 안 됩니다. 작동하지 않으며 SSD에 추가 쓰기 및 불필요한 마모가 발생합니다. SSD에서 데이터를 안전하게 지우려면 SSD 제조업체에서 제공하는 유틸리티를 사용해야 합니다.

파쇄 명령

조각은 다음과 같이 설계되었습니다. 당신을 위해 덮어 쓰기를 수행 따라서 삭제된 파일은 복구할 수 없습니다. Ubuntu, Fedora 및 Manjaro를 포함하여 이 기사의 연구 중에 테스트된 모든 Linux 배포판에 포함되어 있습니다.

이 예에서 우리는 많은 텍스트 파일을 포함하는 ~/research라는 디렉토리에서 작업할 것입니다. 또한 다른 파일을 포함하는 다른 디렉토리도 포함합니다. 이러한 파일은 중요하므로 하드 드라이브에서 완전히 지워야 한다고 가정합니다.

다음과 같이 tree 명령어를 사용하여 디렉토리 트리 구조를 볼 수 있다. -d(디렉토리) 옵션은 트리가 모든 파일을 나열하지 않고 디렉토리만 나열하도록 합니다. 디렉토리 트리 구조는 다음과 같습니다.

tree -d

단일 파일 파쇄

단일 파일을 파쇄하려면 다음 명령을 사용할 수 있습니다. 우리가 사용하는 옵션은 다음과 같습니다.

  Alexa 루틴으로 아침을 개선하세요

u: 덮어쓰기 후 파일 할당을 해제하고 제거합니다.
v: Verbose 옵션으로 shred가 수행하는 작업을 알려줍니다.
z: 0으로 최종 덮어쓰기를 수행합니다.

shred -uvz Preliminary_Notes.txt_01.txt

shred는 기본적으로 파일을 네 번 덮어씁니다. 처음 세 패스는 임의의 데이터를 사용하고 마지막 패스는 우리가 요청한 대로 0을 사용합니다. 그런 다음 파일을 제거하고 inode의 일부 메타데이터를 덮어씁니다.

덮어쓰기 패스 수 설정

-n(숫자) 옵션을 사용하여 shred에 더 많거나 적은 덮어쓰기 패스를 사용하도록 요청할 수 있습니다. shred는 항상 하나 이상의 패스를 사용합니다. 여기에서 제공하는 숫자는 수행하기 위해 파쇄가 필요한 추가 패스의 수입니다. 따라서 shred는 항상 우리가 요청한 수보다 한 번 더 패스합니다. 총 3개의 패스를 얻으려면 추가로 2개의 패스를 요청합니다.

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

예상대로 shred는 세 번 통과합니다.

더 적은 수의 패스(원하는 경우 더 적은 파쇄)는 분명히 더 빠릅니다. 그러나 덜 안전합니까? 흥미롭게도 세 번만 통과하면 충분할 것입니다.

여러 파일 파쇄

와일드카드는 shred와 함께 사용하여 지울 파일 그룹을 선택할 수 있습니다. *는 여러 문자를 나타내고 ? 단일 문자를 나타냅니다. 이 명령은 현재 작업 디렉토리에 있는 나머지 “Preliminary_Notes” 파일을 모두 삭제합니다.

shred -uvz -n 2 Preliminary_Notes_*.*

나머지 파일은 각각 shred에서 차례로 처리됩니다.

shred에는 재귀 옵션이 없으므로 중첩된 디렉토리의 디렉토리 트리를 지우는 데 사용할 수 없습니다.

파일을 안전하게 삭제하는 문제

조각이 좋은 만큼 문제가 있습니다. ext3 및 ext4와 같은 최신 저널링 파일 시스템은 데이터가 손상되거나 손상되거나 손실되지 않도록 엄청난 노력을 기울입니다. 그리고 저널링 파일 시스템을 사용하면 삭제된 파일이 사용하는 하드 드라이브 공간에 덮어쓰기가 실제로 발생한다는 보장이 없습니다.

파일이 rm보다 조금 더 철저하게 삭제되었다는 사실에 안심하고 싶다면 파쇄해도 괜찮을 것입니다. 그러나 데이터가 확실히 사라졌고 완전히 복구할 수 없다고 생각하는 실수를 하지 마십시오. 그렇지 않을 가능성이 큽니다.

보안 삭제 스위트

secure-delete 명령은 파일 시스템을 저널링하는 최선의 노력을 극복하고 파일을 안전하게 덮어쓰는 데 성공합니다. 그러나 정확히 동일한 주의 사항이 적용됩니다. 관심 파일을 지우는 데 필요한 하드 드라이브 영역에서 덮어쓰기가 실제로 발생한다는 보장은 아직 없습니다. 더 많은 기회가 있지만 보장은 없습니다.

secure-delete 명령은 다음과 같은 일련의 덮어쓰기 및 작업을 사용합니다.

1은 0xFF 값 바이트로 덮어씁니다.
5 임의의 데이터로 덮어씁니다.
27은 Peter Gutmann이 정의한 특수 값으로 덮어씁니다.
무작위 데이터로 5번 더 덮어씁니다.
파일 이름을 임의의 값으로 바꿉니다.
파일을 자릅니다.

그 모든 것이 당신에게 과도하게 보인다면 당신은 좋은 회사에 있는 것입니다. 오클랜드 대학의 교수인 Peter Gutmann에게도 이는 과도하게 보입니다. 그는 1996년에 논문을 발표했다. 이러한 기술에 대해 논의, 그 논문에서 논의된 모든 기술을 한 번에 사용해야 한다는 도시 신화가 생겨났습니다.

  iOS에서 키보드의 더 큰 키를 얻는 방법

Peter Gutmann은 이후 “임의의 데이터를 사용한 좋은 스크러빙은 예상한 만큼 잘 수행될 것입니다.”라고 말하면서 지니를 병에 다시 넣으려고 했습니다.

그러나 우리는 우리가 있는 곳에 있으며 이것이 보안 삭제 명령에 사용되는 기술의 배열입니다. 그러나 먼저 설치해야 합니다.

보안 삭제 설치

Ubuntu 또는 다른 Debian 기반 배포를 사용하는 경우 apt-get을 사용하여 이 패키지를 시스템에 설치합니다. 다른 Linux 배포판에서는 Linux 배포판의 패키지 관리 도구를 대신 사용하십시오.

sudo apt-get install secure-delete

보안 삭제 번들에는 네 가지 명령이 포함되어 있습니다.

srm은 파일을 삭제하고 하드 드라이브 공간을 덮어써서 파일을 지우는 데 사용되는 보안 RM입니다.
sfill은 하드 드라이브의 모든 여유 공간을 덮어쓰는 도구입니다.
sswap은 스왑 공간을 덮어쓰고 정리하는 데 사용됩니다.
sdmem은 RAM을 정리하는 데 사용됩니다.

srm 명령

rm 명령을 사용하는 것처럼 srm 명령을 많이 사용합니다. 단일 파일을 제거하려면 다음 명령을 사용하십시오. -z(0) 옵션을 사용하면 smr이 최종 삭제에 임의 데이터 대신 0을 사용합니다. -v(verbose) 옵션은 srm이 진행 상황을 알려줍니다.

srm -vz Chapter_One_01.txt

가장 먼저 알 수 있는 것은 srm이 느리다는 것입니다. 작동하는 동안 약간의 시각적 피드백을 제공하지만 명령 프롬프트를 다시 볼 때 안도감이 있습니다.

-l(보안 완화) 옵션을 사용하여 패스 수를 2로 줄여 작업 속도를 크게 높일 수 있습니다.

srm -lvz Chapter_One_02.txt

srm은 이것이 자신의 의견으로는 덜 안전하지만 여전히 파일을 삭제하고 덮어씁니다.

-l(보안 완화) 옵션을 두 번 사용하여 패스 수를 하나로 줄일 수 있습니다.

srm -llvz Chapter_One_03.txt

여러 파일과 함께 srm 사용

srm과 함께 와일드카드를 사용할 수도 있습니다. 이 명령은 1장의 나머지 부분을 지우고 지웁니다.

srm -vc Chapter_One_0?.txt

파일은 srm에 의해 차례로 처리됩니다.

srm으로 디렉토리와 그 내용 삭제하기

-r(재귀적) 옵션은 srm이 모든 하위 디렉토리와 그 내용을 삭제하도록 합니다. 첫 번째 디렉토리의 경로를 srm에 전달할 수 있습니다.

이 예에서는 현재 디렉토리인 ~/research를 모두 삭제합니다. 이것은 ~/research의 모든 파일과 모든 하위 디렉토리가 안전하게 제거되었음을 의미합니다.

srm -vz *

srm은 디렉토리와 파일 처리를 시작합니다.

결국 명령 프롬프트로 돌아갑니다. 이 기사를 연구한 테스트 머신에서 현재 디렉토리와 3개의 중첩 디렉토리 사이에 분산된 약 200개의 파일을 제거하는 데 약 1시간이 걸렸습니다.

모든 파일과 하위 디렉토리가 예상대로 제거되었습니다.

채우기 명령

rm을 사용하여 삭제한 파일이 걱정된다면 어떻게 해야 그 오래된 근거를 덮어쓰게 할 수 있습니까? sfill 명령은 하드 드라이브의 모든 여유 공간을 덮어씁니다.

이렇게 하면 여유 공간이 전혀 없는 지점까지 하드 드라이브에 여유 공간이 점점 줄어들고 있음을 알 수 있습니다. 채우기가 완료되면 모든 여유 공간을 다시 사용자에게 해제합니다. 다중 사용자 시스템을 관리하는 경우 이는 매우 방해가 되므로 시간 외에 수행해야 하는 유지 관리 작업입니다.

  배터리가 연결되어 있고 충전 중이 아닐 때 해야 할 일

단일 사용자 컴퓨터에서도 하드 드라이브 공간의 손실은 sfill이 대부분의 공간을 사용한 후에는 사용할 수 없음을 의미합니다. 이것은 당신이 시작하고 멀리 떠날 것입니다.

속도를 조금 더 높이려면 -l(보안 완화) 옵션을 사용할 수 있습니다. 다른 옵션은 이전에 본 -v(자세한 정보) 및 -z(영) 옵션입니다. 여기에서 /home 디렉토리의 모든 여유 공간을 안전하게 덮어쓰도록 sfill에 요청합니다.

sudo sfill -lvz /home

편히 쉬어. 10GB 하드 드라이브만 있는 테스트 컴퓨터에서 이 작업은 오후 중반에 시작되어 하룻밤 사이에 완료되었습니다.

그것은 몇 시간 동안 휘젓습니다. 그리고 이것은 -l(보안 축소) 옵션을 사용합니다. 그러나 결국에는 명령 프롬프트로 돌아갑니다.

스왑 명령

sswap 명령은 스왑 파티션의 저장소를 덮어씁니다. 가장 먼저 해야 할 일은 스왑 파티션을 식별하는 것입니다. 블록 장치를 나열하는 blkid 명령으로 이 작업을 수행할 수 있습니다.

sudo blkid

“swap”이라는 단어를 찾고 그것이 연결된 블록 장치를 기록해 두어야 합니다.

스왑 파티션이 /dev/sda5에 연결된 것을 볼 수 있습니다.

덮어쓰는 동안 스왑 파티션에 대한 디스크 쓰기를 꺼야 합니다. 우리는 swapoff 명령을 사용할 것입니다:

sudo swapoff /dev/sda5

이제 sswap 명령을 사용할 수 있습니다.

sswap 명령에 대한 명령줄의 일부로 /dev/sda5를 사용합니다. 이전에 사용한 -v(자세한 정보 표시) 옵션과 -ll(보안 완화) 옵션도 사용합니다.

sudo sswap -llv /dev/sda5

sswap은 스왑 파티션을 통해 작업을 시작하여 그 안에 있는 모든 것을 덮어씁니다. 채우는 데 오래 걸리지 않습니다. 그냥 그런 느낌입니다.

완료되면 스왑 파티션을 활성 스왑 공간으로 복원해야 합니다. swapon 명령으로 이 작업을 수행합니다.

sudo swapon /dev/sda5

sdmem 명령

보안 삭제 패키지에는 컴퓨터의 RAM(Random Access Memory) 칩을 지우는 도구도 포함되어 있습니다.

콜드 부트 공격 컴퓨터가 꺼진 직후 컴퓨터에 물리적으로 액세스해야 합니다. 이러한 유형의 공격은 잠재적으로 RAM 칩에서 데이터 검색을 허용할 수 있습니다.

이러한 유형의 공격으로부터 자신을 보호해야 한다고 생각하고 대부분의 사람들이 그렇게 해야 한다고 생각한다면 컴퓨터를 끄기 전에 RAM을 지울 수 있습니다. -v(자세한 정보) 및 -ll(보안 축소) 옵션을 다시 한 번 사용합니다.

sudo sdmem -vll

터미널 창은 sdmem이 RAM을 통해 작동하고 있음을 나타내는 별표로 채워집니다.

쉬운 옵션: 드라이브를 암호화하기만 하면 됩니다.

파일을 안전하게 삭제하는 대신 암호화를 사용하여 하드 드라이브나 홈 폴더를 보호하지 않으시겠습니까?

그렇게 하면 라이브 파일이든 삭제된 파일이든 아무도 액세스할 수 없습니다. 또한 모든 파일이 이미 보호되어 있으므로 방심할 필요가 없으며 민감한 파일을 안전하게 지우는 것을 기억하십시오.

대부분의 Linux 배포판은 설치 시 암호화를 사용할 것인지 묻습니다. “예”라고 말하면 미래의 악화를 많이 줄일 수 있습니다. 비밀 정보나 민감한 정보를 취급해서는 안 됩니다. 그러나 컴퓨터 사용을 마친 후에 다른 사람에게 컴퓨터를 주거나 팔 수 있다고 생각한다면 암호화를 통해 이를 단순화할 수도 있습니다.