사용하면 어떻게 되나요
sudo dd if=/dev/zero of=/dev/sda
에서 실행중인 우분투 설치 에서/dev/sda
?
VM에서 시도했지만 디스크를 올바르게 닦은 것으로 보입니다 . 매번 이런 경우입니까? 이것이 우분투 설치와 모든 데이터를 "닦아내는"안전한 방법입니까?
내 질문은 다소 영감을 얻었습니다.
사용하면 어떻게 되나요
sudo dd if=/dev/zero of=/dev/sda
에서 실행중인 우분투 설치 에서/dev/sda
?
VM에서 시도했지만 디스크를 올바르게 닦은 것으로 보입니다 . 매번 이런 경우입니까? 이것이 우분투 설치와 모든 데이터를 "닦아내는"안전한 방법입니까?
내 질문은 다소 영감을 얻었습니다.
답변:
실제로 파일 시스템은 여전히 마운트되어 있으며 일부 쓰기는 버퍼링되어 디스크에 쓰기를 기다리고있는 RAM에 있습니다. dd
모든 것을 올바르게 덮어 쓰고, 그 바로 뒤에 버퍼가 플러시되고 잠재적으로 민감한 일부 데이터가 디스크에 다시 쓰여지고 있다고 가정 해 봅시다 . 따라서 디스크를 지우는 안전한 방법은 아닙니다.
먼저 읽기 전용 모드에서 루트 파일 시스템과 디스크에있는 다른 파일 시스템을 다시 마운트하거나 (또는 완전히 마운트 해제하지만 루트 파일 시스템에서는 사용할 수 없음)이 문제를 피할 수 있습니다. 파일 시스템에 더 많은 쓰기가 허용되어야하므로 버퍼가 플러시되지 않아야하므로 오랜 시간이 걸리기 때문에 당황한 경우 여전히 나쁜 생각이지만 명령이 안전해야합니다.
일종의 패닉 삭제 기능을 원한다면 LUKS로 디스크를 암호화하고 (Ubuntu 설치 관리자가 수행 할 수 있음) Security Stack Exchange에서 대답 을 따르는 것이 좋습니다 . 여기에는 크기가 2MB에 불과하고 덮어 쓰기하는 데 1 초도 걸리지 않는 cryptheader를 지우는 것이 포함됩니다. 그런 다음 시스템을 다시 시작하면 디스크 암호화 키가 메모리에서 사라지고 cryptheader 자체가 없어서 복원 할 수 없습니다.
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을 빚지고 있습니다 :)
참고 문헌 :
dd
및 pv
하세요?
pv
(파이프 뷰어)를 통해 그것을 파이프, 그래서dd if=/dev/zero | pv | dd of=/dev/sdX
짧은 대답 : 그것은 당신이 원하는 것을 대략 할 것이고 아무것도 작동하지 않을 것입니다. 사용하여 dd
적용됩니다 어떤 제약 조건이 더 이상 관련이 있다는 것을 의미 파일 시스템 아래 수준에서 당신에게있는 거 운영을 (-하지만하지 않습니다이 커널이이 일을 방지 할 수 있다는 것을 의미하지는 않습니다). 파일 시스템의 일부 내용 (예 : 커널 및 dd
프로그램 자체) 은 이미 메모리 에 있으며 일부는 캐시에 있습니다. 시스템이 다중 사용자 모드 인 경우 일부 파일은 dd
실제로 변경되었다는 가정하에 진행중인 동안 다시 기록 될 수 있으며 , 메모리가 부족한 경우 일부 페이지가 스왑 아웃 될 수 있습니다. (암호화해야하므로 재부팅 후 사용할 수 없습니다).
다음을 포함하여이 문제를 발생시키는 대부분의 명령 reboot
은 캐시에 없으므로 작동하지 않습니다. 따라서 단일 사용자 모드에 있으면 매우 잘 작동합니다. 다중 사용자 모드에 있으면 대부분의 데이터가 지워집니다. 이상적으로는 모든 매체가 어디에서 왔는지 확신 할 수 있도록 다른 매체에서 부팅해야합니다 (initrd에서 중지 될 수도 있음).
안전한 와이프를 원할 경우 원래 데이터를 0으로 남겨두면 여전히 남아있는 흔적이 남아 있기 때문에이 작업은 수행되지 않습니다. 일반적으로 최대 3 개의 무작위 쓰기를 원할 것입니다. 이는 훨씬 느리지 만 안전한 /dev/urandom
대신에 복사하는 것을 의미 /dev/zero
합니다. 일부는 /dev/random
의사 랜덤이 아닌 "순수한"랜덤 데이터를위한 장치를 사용할 것을 제안 할 수도 있지만,이를 위해 누군가 PRNG 시드를 크랙하고 데이터를 성공적으로 마스킹 할 가능성은 본질적으로 무시할 만합니다.
당신이 정말로 편집증 이라면 저장 장치를 퍼니스에 던져서 자기 / 방전되도록해야합니다.
VM에서와 마찬가지로 디스크를 지우고 시스템을 사용할 수 없게 만듭니다.
그러나 일종의 '공황 삭제'를 염두에두면 dd
충분히 빠르지 않을 수 있으며 그 경우 더 빠른 명령이나 프로그램이 있는지 확실하지 않습니다.
작동해야하며 실행중인 프로세스는 Ram에 보관되며 디스크가 필요하지 않습니다. 어쨌든 cd 또는 usb에서 실행되는 라이브 시스템을 사용합니다. 디스크 와이 핑을위한 전문 라이브 리눅스 인 dban도 있습니다.
디스크를 0으로 덮어 쓰는 것은 저장되지만 편집증이 충분하거나 법적인 규칙이 있으면 임의의 데이터로 여러 번 덮어 쓸 수 있습니다.
ssd 덮어 쓰기를 사용할 때 마모 레벨링으로 인해 모든 데이터가 삭제되는 것은 아닙니다.
전체 디스크 암호화 (luks)를 사용하는 경우 전체 디스크를 삭제할 필요가 없으며 luks 헤더를 삭제하는 것으로 충분합니다.