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

0
1143
핫 스왑 트레이에서 하드 드라이브 열기
Biehler Michael / Shutterstock.com

오래된 종이 문서를 파쇄 한 것과 같은 이유로 오래된 데이터 파일을 파쇄합니다. Linux 파일을 안전하게 삭제하는 방법에 대해 알아야 할 사항이 있습니다. 이 튜토리얼은 shred 명령과 secure-delete 유틸리티 제품군.

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

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

파일을 삭제하면 rm파일 시스템은 적절한 inode를 비우고 디렉토리 파일을 조정합니다. 이것은 파일이 사용했던 하드 드라이브의 공간을 사용하지 않은 것으로 표시합니다. 도서관에 들어가서 카드 색인을 살펴보고 책의 카탈로그 카드를 찾아 찢어 낸다고 상상해보십시오. 책은 여전히 ​​선반 위에 있습니다. 찾기가 더 어려워요

다시 말해, 파일이 사용한 공간은 이제 다른 파일이 자유롭게 사용할 수 있습니다. 그러나 이전 파일의 내용은 여전히 ​​그 공간에 있습니다. 해당 공간을 덮어 쓸 때까지 파일을 검색 할 수 있습니다.

그러나 파일을 완전히 제거하는 것은 단순히 파일을 덮어 쓰는 것만 큼 간단하지 않습니다. 우리가 볼 수 있듯이.

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

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

관련 : 리눅스 터미널에서 파일과 디렉토리를 삭제하는 방법

파쇄 명령

shred 삭제 된 파일을 복구 할 수 없도록 덮어 쓰기를 수행하도록 설계되었습니다. 이 문서는 Ubuntu, Fedora 및 Manjaro를 포함하여이 기사의 조사 중에 테스트 된 모든 Linux 배포판에 포함되어 있습니다.

이 예에서는 많은 텍스트 파일이 포함 된 ~ / research 디렉토리에서 작업합니다. 또한 다른 파일을 포함하는 다른 디렉토리도 포함합니다. 이러한 파일은 민감한 것으로 간주되며 하드 드라이브에서 완전히 삭제해야합니다.

다음을 사용하여 디렉토리 트리 구조를 볼 수 있습니다. tree 다음과 같이 명령하십시오. 그만큼 -d (디렉토리) 옵션 원인 tree 디렉토리 만 나열하고 모든 파일을 나열하지는 않습니다. 디렉토리 트리 구조는 다음과 같습니다.

tree -d

터미널 창의 디렉토리 트리 구조

단일 파일 파쇄

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

  • : 덮어 쓴 후 파일의 할당을 해제하고 제거하십시오.
  • V: 자세한 옵션을 사용하여 shred 그것이 무엇을하고 있는지 알려줍니다.
  • : 0으로 최종 덮어 쓰기를 수행합니다.
shred -uvz Preliminary_Notes.txt_01.txt

터미널 창에서 -uvz Preliminary_Notes.txt_01.txt 파쇄

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

네 패스를 만드는 조각

덮어 쓰기 패스 수 설정

우리는 요청할 수 있습니다 shred 를 사용하여 덮어 쓰기 패스를 더 많거나 적게 사용하려면 -n (숫자) 옵션. shred 항상 하나 이상의 패스를 사용합니다. 여기에 우리가 제공하는 숫자는 특별한 우리가 요구하는 패스 shred 수행합니다. 그래서 shred 요청한 수보다 항상 한 번 더 패스합니다. 총 3 번의 패스를 얻으려면 추가로 2 번의 패스를 요청합니다

shred -uvz -n 2 Preliminary_Notes.txt_02.txt

shred -uvz -n 2 터미널 창의 Preliminary_Notes.txt_02.txt

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

터미널 창에서 세 패스를 만드는 조각

패스가 적을수록 (원하는 경우 파쇄가 더 적음) 분명히 빠릅니다. 그러나 덜 안전합니까? 흥미롭게도 세 번의 패스만으로도 충분합니다.

관련 : 디스크를 안전하게 지우려면 디스크를 한 번만 닦아야합니다.

여러 파일 파쇄

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

shred -uvz -n 2 Preliminary_Notes_*.*

터미널 창에있는 -uvz -n 2 예비 _ 참고 _ *. *

나머지 파일은 각각 shred 차례로.

터미널 창에서 파쇄 결과

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

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

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

파일이 조금 더 철저하게 삭제되었다는 확신이 든다면 rm 그랬다면 shred 아마 괜찮을 것입니다. 그러나 데이터가 완전히 사라져서 완전히 복구 할 수 없다고 생각하는 실수를 저 지르지 마십시오. 아마 가능할 것입니다 아니 경우.

관련 : 파일을 “안전하게 삭제”할 수없는 이유 및 대신 수행 할 작업

보안 삭제 스위트

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

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

  • 1은 0xFF 값 바이트로 덮어 씁니다.
  • 5는 임의의 데이터로 덮어 씁니다.
  • 27은 Peter Gutmann이 정의한 특수 값으로 덮어 씁니다.
  • 임의의 데이터로 5 번 더 덮어 씁니다.
  • 파일 이름을 임의의 값으로 바꾸십시오.
  • 파일을 자릅니다.

그 모든 것이 당신에게 과도하게 보인다면, 당신은 좋은 회사에 있습니다. 그것은 오클랜드 대학교 (University of Aukland)의 교수 인 Peter Gutmann에게는 지나친 것 같습니다. 그는 1996 년에이 기법들에 관한 논문을 발표했는데,이 논문에서 한 번에 그 논문에서 논의 된 모든 기법을 사용해야한다는 도시 신화가 생겼습니다.

Peter Gutmann은 병 속으로 지니를 되 찾으려고 시도했습니다. “임의의 데이터로 잘 닦으면 예상 할 수있는만큼의 효과가 있습니다.”

그러나 우리는 우리가있는 곳에 있으며, 이들은 secure-delete 명령. 그러나 먼저 설치해야합니다.

보안 삭제 설치

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

sudo apt-get install secure-delete

터미널 창에서 sudo apt-get install secure-delete

에 포함 된 네 가지 명령이 있습니다 secure-delete 묶음.

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

srm 명령

당신은 srm 당신이 사용할만큼 명령 rm 명령. 단일 파일을 제거하려면 다음 명령을 사용하십시오. 그만큼 -z (0) 옵션의 원인 smr 임의의 데이터 대신 최종 와이프에 0을 사용합니다. 그만큼 -v (자세한) 옵션은 srm 진행 상황을 알려주십시오.

srm -vz Chapter_One_01.txt

터미널 창에서 srm -vz Chapter_One_01.txt

가장 먼저 눈에 띄는 것은 srm 느리다. 작동하는 동안 시각적 피드백을 제공하지만 명령 프롬프트가 다시 표시되면 안심입니다.

터미널 창에서 srm에서 출력

당신이 사용할 수있는 -l (보안 강화) 옵션으로 패스 수를 2로 줄이면 작업 속도가 크게 향상됩니다.

srm -lvz Chapter_One_02.txt

터미널 창에서 srm -lvz Chapter_One_02.txt

srm 이는 보안이 덜 안전하지만 파일을 삭제하고 덮어 씁니다.

터미널 창의 srm에서 출력

-l (보안 강화) 옵션을 두 번 사용하여 패스 수를 1로 줄이십시오.

srm -llvz Chapter_One_03.txt

터미널 창에서 srm -llvz Chapter_One_03.txt

여러 파일에 srm 사용

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

srm -vc Chapter_One_0?.txt

터미널 창에서 srm -vc Chapter_One_0? .txt

파일은 srm 차례로.

터미널 창에서 여러 파일을 지우는 srm

srm을 사용하여 디렉토리 및 내용 삭제

그만큼 -r (재귀) 옵션은 srm 모든 서브 디렉토리 및 내용을 삭제하십시오. 첫 번째 디렉토리의 경로를 전달할 수 있습니다 srm.

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

srm -vz *

터미널 창에서 srm -vz *

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

터미널 창에서 처리를 시작하는 srm

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

터미널 창에서 srm complete

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

sfill 명령

rm을 사용하여 삭제 한 파일이 염려되면 어떻게하면 이전 버전으로 넘어 가서 덮어 쓸 수 있습니까? 그만큼 sfill 명령은 하드 드라이브의 모든 여유 공간을 덮어 씁니다.

이렇게하면 사용 가능한 공간이 전혀없는 시점까지 하드 드라이브에 사용 가능한 공간이 점점 줄어드는 것을 알 수 있습니다. 언제 sfill 모든 여유 공간이 다시 해제됩니다. 다중 사용자 시스템을 관리하는 경우이 작업은 매우 중단되므로 시간이 지나야 수행해야하는 유지 관리 작업입니다.

단일 사용자 컴퓨터에서도 하드 드라이브 공간이 손실되면 한 번 사용할 수 없다는 의미입니다 sfill 대부분의 공간을 사용했습니다. 이것은 당신이 시작하고 떠난 것입니다.

약간의 속도를 높이기 위해 -l (보안 강화) 옵션. 다른 옵션은 -v (자세한 내용) -z 이전에 본 옵션은 0입니다. 여기, 우리는 묻는다 sfill / home 디렉토리의 모든 여유 공간을 안전하게 덮어 씁니다.

sudo sfill -lvz /home

터미널 창에서 sudo sfill -lvz / home

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

터미널 창에 출력물 채우기

몇 시간 동안 이탈합니다. 그리고 이건 그만큼 -l (보안 강화) 옵션. 그러나 결국에는 명령 프롬프트로 돌아갑니다.

sswap 명령

그만큼 sswap 명령은 스왑 파티션의 스토리지를 덮어 씁니다. 가장 먼저해야 할 일은 스왑 파티션을 식별하는 것입니다. 우리는 이것을 할 수 있습니다 blkid 블록 장치를 나열하는 명령입니다.

sudo blkid

터미널 창에서 sudo blkid

“스왑”이라는 단어를 찾아서 연결된 블록 장치를 기록해 두십시오.

터미널 창에서 blkid 출력

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

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

sudo swapoff /dev/sda5

터미널 창에서 sudo swapoff / dev / sda5

우리는 이제 sswap 명령.

우리는 사용할 것이다 /dev/sda5 에 대한 명령 줄의 일부로 sswap 명령. 우리는 또한 -v (자세한) 옵션 및 -ll 이전에 사용했던 (보안 강화) 옵션.

sudo sswap -llv /dev/sda5

터미널 창에서 sudo sswap -llv / dev / sda5

sswap 스왑 파티션을 통해 작업을 시작하고 그 안에있는 모든 것을 덮어 씁니다. 오래 걸리지 않습니다 sfill. 느낌이 듭니다.

완료되면 스왑 파티션을 활성 스왑 공간으로 복원해야합니다. 우리는 이것을 swapon 명령:

sudo swapon /dev/sda5

터미널 창에서 sudo swapon / dev / sda5

sdmem 명령

그만큼 secure-delete 패키지에는 컴퓨터의 RAM (Random Access Memory) 칩을 지우는 도구도 포함되어 있습니다.

콜드 부팅 공격은 컴퓨터를 끈 직후에 컴퓨터에 물리적으로 액세스해야합니다. 이러한 유형의 공격은 RAM 칩에서 데이터를 검색 할 수 있습니다.

이러한 유형의 공격으로부터 자신을 보호해야한다고 생각하는 경우 (대부분의 사람들이 필요하다고 생각하는 경우), 컴퓨터를 끄기 전에 RAM을 지울 수 있습니다. 우리는 -v (자세한 내용) -ll (보안 강화) 옵션을 한 번 더.

sudo sdmem -vll

터미널 창에서 sudo sdmem -vll

터미널 창은 다음과 같은 표시로 별표로 채워집니다. sdmem RAM을 통해 작동하고 있습니다.

터미널 창에서 sdmem의 출력

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

파일을 안전하게 삭제하는 대신 암호화를 사용하여 하드 드라이브 나 홈 폴더를 보호하십시오.

그렇게하면 라이브 파일이든 삭제 된 파일이든 아무도 액세스 할 수 없습니다. 또한 모든 파일이 이미 보호되어 있기 때문에 경계 할 필요가 없으며 중요한 파일을 안전하게 지워야합니다.

대부분의 Linux 배포판은 설치시 암호화를 사용할지 묻습니다. “예”라고 말하면 미래의 많은 악화를 막을 수 있습니다. 비밀 정보 나 민감한 정보를 다루지 않을 수 있습니다. 그러나 컴퓨터를 다 사용할 때 컴퓨터를 다른 사람에게 제공하거나 판매 할 수 있다고 생각되면 암호화도 단순화됩니다.