'dd'를 사용하여 Ubuntu가 실행중인 디스크를 덮어 쓰면 어떻게됩니까?


9

사용하면 어떻게 되나요

sudo dd if=/dev/zero of=/dev/sda

에서 실행중인 우분투 설치 에서/dev/sda ?


VM에서 시도했지만 디스크를 올바르게 닦은 것으로 보입니다 . 매번 이런 경우입니까? 이것이 우분투 설치와 모든 데이터를 "닦아내는"안전한 방법입니까?

내 질문은 다소 영감을 얻었습니다.

  1. 컴퓨터에서 Ubuntu를 어떻게 제거합니까?
  2. 'rm -rf /'는 시스템의 모든 파일을 어떻게 삭제할 수 있습니까? .

2
아니, 아니. 나쁜 생각. 데이터를 안전하게 지우려면이 방법에 의존하지 마십시오.
André Borie

답변:


16

실제로 파일 시스템은 여전히 ​​마운트되어 있으며 일부 쓰기는 버퍼링되어 디스크에 쓰기를 기다리고있는 RAM에 있습니다. dd모든 것을 올바르게 덮어 쓰고, 그 바로 뒤에 버퍼가 플러시되고 잠재적으로 민감한 일부 데이터가 디스크에 다시 쓰여지고 있다고 가정 해 봅시다 . 따라서 디스크를 지우는 안전한 방법은 아닙니다.

먼저 읽기 전용 모드에서 루트 파일 시스템과 디스크에있는 다른 파일 시스템을 다시 마운트하거나 (또는 ​​완전히 마운트 해제하지만 루트 파일 시스템에서는 사용할 수 없음)이 문제를 피할 수 있습니다. 파일 시스템에 더 많은 쓰기가 허용되어야하므로 버퍼가 플러시되지 않아야하므로 오랜 시간이 걸리기 때문에 당황한 경우 여전히 나쁜 생각이지만 명령이 안전해야합니다.

일종의 패닉 삭제 기능을 원한다면 LUKS로 디스크를 암호화하고 (Ubuntu 설치 관리자가 수행 할 수 있음) Security Stack Exchange에서 대답 을 따르는 것이 좋습니다 . 여기에는 크기가 2MB에 불과하고 덮어 쓰기하는 데 1 초도 걸리지 않는 cryptheader를 지우는 것이 포함됩니다. 그런 다음 시스템을 다시 시작하면 디스크 암호화 키가 메모리에서 사라지고 cryptheader 자체가 없어서 복원 할 수 없습니다.



10

Arch Wiki 페이지dd 에서 빌려지고 약간 수정 된 고급 사용법을 사용하여 VM을 희생했습니다 .

먼저 멋진 진행 측정기를 설치하십시오.

sudo apt-get install pv

그런 다음 '향상된' dd명령 을 실행하십시오.

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null \
| base64)" -nosalt </dev/zero \
| pv -bartpes "$(sudo blockdev --getsize64 /dev/sda)" \
| sudo dd bs=64K of=/dev/sda

그러면 디스크에 AES 암호문이 채워집니다. 완전하고 안전한 디스크 정리? 아마도 당신의 dd예 보다 좋을지 모르지만 완전히 안전하거나 보장되는 것은 없습니다 ...

여기에 이미지 설명을 입력하십시오

그리고 당신은 나에게 하나의 VM을 빚지고 있습니다 :)

참고 문헌 :


당신은 (=는 / dev / 제로의 경우)를 사용해 하나가 아니라 0으로 디스크를 채울 것인지 구문이 될 방법에 대한 예를 들어 줄 수 ddpv하세요?
Stormlord

1
@Stormlord 당신은 pv(파이프 뷰어)를 통해 그것을 파이프, 그래서dd if=/dev/zero | pv | dd of=/dev/sdX
someonewithpc

2
당신이 :-) 완료하면 바로 사전에 스냅 샷을하고, 복원 - 당신은 VM을 희생 할 필요가 없습니다
JonasCz - 분석 재개 모니카

따라서 약간의 쓰기 숨김이 있더라도 전체 결과는 스테 가노 그래피 방식으로 복잡합니다. "쓰레기"가 없으면 0이 아닌 값을 찾기 위해 디스크를 hexdump하는 것이 간단합니다.
mckenzm

6

짧은 대답 : 그것은 당신이 원하는 것을 대략 할 것이고 아무것도 작동하지 않을 것입니다. 사용하여 dd적용됩니다 어떤 제약 조건이 더 이상 관련이 있다는 것을 의미 파일 시스템 아래 수준에서 당신에게있는 거 운영을 (-하지만하지 않습니다이 커널이이 일을 방지 할 수 있다는 것을 의미하지는 않습니다). 파일 시스템의 일부 내용 (예 : 커널 및 dd프로그램 자체) 은 이미 메모리 에 있으며 일부는 캐시에 있습니다. 시스템이 다중 사용자 모드 인 경우 일부 파일은 dd실제로 변경되었다는 가정하에 진행중인 동안 다시 기록 될 수 있으며 , 메모리가 부족한 경우 일부 페이지가 스왑 아웃 될 수 있습니다. (암호화해야하므로 재부팅 후 사용할 수 없습니다).

다음을 포함하여이 문제를 발생시키는 대부분의 명령 reboot은 캐시에 없으므로 작동하지 않습니다. 따라서 단일 사용자 모드에 있으면 매우 잘 작동합니다. 다중 사용자 모드에 있으면 대부분의 데이터가 지워집니다. 이상적으로는 모든 매체가 어디에서 왔는지 확신 할 수 있도록 다른 매체에서 부팅해야합니다 (initrd에서 중지 될 수도 있음).

안전한 와이프를 원할 경우 원래 데이터를 0으로 남겨두면 여전히 남아있는 흔적이 남아 있기 때문에이 작업은 수행되지 않습니다. 일반적으로 최대 3 개의 무작위 쓰기를 원할 것입니다. 이는 훨씬 느리지 만 안전한 /dev/urandom대신에 복사하는 것을 의미 /dev/zero합니다. 일부는 /dev/random의사 랜덤이 아닌 "순수한"랜덤 데이터를위한 장치를 사용할 것을 제안 할 수도 있지만,이를 위해 누군가 PRNG 시드를 크랙하고 데이터를 성공적으로 마스킹 할 가능성은 본질적으로 무시할 만합니다.

당신이 정말로 편집증 이라면 저장 장치를 퍼니스에 던져서 자기 / 방전되도록해야합니다.


1
dd 도전을 기억하십니까? 몇 년 전 이었지만 그들은 한 번만 0으로 설정 한 하드 드라이브에서 데이터를 복구 할 수있는 회사에 현상금을 제공했습니다. 그들은 테이커가 없었다.
Casey

1
"세 번"은 전혀 말도 안됩니다. 무작위 데이터 1 회는 확실히 복구 할 수 없습니다. 제로조차도 복구하는 데 엄청나게 비쌉니다 (@Casey의 의견 참조). 현상금이 $ 1b 정도라면 그들이받는 사람이있을 것입니다 ...
R .. GitHub 중지 도움 얼음

예산과 디스크 기술에 따라 다릅니다. 플래터 인 경우 데이터를 얻을 수 있습니다. "수직"자기 기술로도. 메모리가 휘발성 일수록 안전합니다.
mckenzm

4

VM에서와 마찬가지로 디스크를 지우고 시스템을 사용할 수 없게 만듭니다.

그러나 일종의 '공황 삭제'를 염두에두면 dd충분히 빠르지 않을 수 있으며 그 경우 더 빠른 명령이나 프로그램이 있는지 확실하지 않습니다.


1

작동해야하며 실행중인 프로세스는 Ram에 보관되며 디스크가 필요하지 않습니다. 어쨌든 cd 또는 usb에서 실행되는 라이브 시스템을 사용합니다. 디스크 와이 핑을위한 전문 라이브 리눅스 인 dban도 있습니다.

디스크를 0으로 덮어 쓰는 것은 저장되지만 편집증이 충분하거나 법적인 규칙이 있으면 임의의 데이터로 여러 번 덮어 쓸 수 있습니다.

ssd 덮어 쓰기를 사용할 때 마모 레벨링으로 인해 모든 데이터가 삭제되는 것은 아닙니다.

전체 디스크 암호화 (luks)를 사용하는 경우 전체 디스크를 삭제할 필요가 없으며 luks 헤더를 삭제하는 것으로 충분합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.