จะเกิดอะไรขึ้นเมื่อฉันใช้ 'dd' เพื่อเขียนทับดิสก์ที่ Ubuntu กำลังทำงานอยู่


9

จะเกิดอะไรขึ้นถ้าฉันใช้

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

จากการติดตั้ง Ubuntu ที่ใช้งานมาจาก /dev/sdaไหน?


ฉันลองใน VM และดูเหมือนจะเช็ดดิสก์อย่างถูกต้อง จะเป็นกรณีนี้ทุกครั้งหรือไม่ นี่เป็นวิธีที่ปลอดภัยในการ "ลบ" การติดตั้ง Ubuntu และข้อมูลทั้งหมดหรือไม่

คำถามของฉันได้แรงบันดาลใจจาก:

  1. ฉันจะถอนการติดตั้ง Ubuntu ออกจากคอมพิวเตอร์ได้อย่างไร
  2. 'rm -rf /' สามารถลบไฟล์ทั้งหมดในระบบได้อย่างไร? .

2
ไม่ไม่ไม่. ความคิดที่ไม่ดี อย่าพึ่งพาสิ่งนี้หากคุณต้องการลบข้อมูลของคุณอย่างปลอดภัย
André Borie

คำตอบ:


16

ที่จริงแล้วระบบไฟล์ยังคงติดตั้งอยู่และการเขียนบางส่วนถูกบัฟเฟอร์หมายถึงพวกเขายังคงอยู่ใน RAM ที่รอการเขียนลงดิสก์ สมมติว่าddถูกต้องเขียนทับทุกอย่างและเพียงแค่ที่อยู่เบื้องหลังมันบัฟเฟอร์จะได้รับการล้างและบางข้อมูลที่สำคัญที่อาจจะได้รับการเขียนกลับไปยังดิสก์ ดังนั้นไม่ใช่นี่ไม่ใช่วิธีที่ปลอดภัยในการเช็ดดิสก์

คุณสามารถหลีกเลี่ยงปัญหานี้ได้โดยการติดตั้งระบบไฟล์รูทและระบบไฟล์อื่น ๆ ที่อยู่บนดิสก์เป็นครั้งแรกในโหมดอ่านอย่างเดียว (หรือยกเลิกการต่อเชื่อมกับระบบไฟล์ทั้งหมด แต่คุณจะไม่สามารถใช้ระบบไฟล์รูทได้) ควรอนุญาตให้เขียนได้มากขึ้นในระบบไฟล์เลย (ดังนั้นจึงไม่มีบัฟเฟอร์ที่จะลบทิ้ง) ดังนั้นคำสั่งของคุณควรจะปลอดภัยในขณะนี้แม้ว่ามันจะยังเป็นความคิดที่ไม่ดีในกรณีที่ตื่นตระหนกเพราะใช้เวลานาน

หากคุณต้องการที่จะมีการเรียงลำดับของความหวาดกลัวคุณลักษณะลบบางผมขอแนะนำการเข้ารหัสดิสก์ของคุณกับ LUKS (ติดตั้ง Ubuntu สามารถทำเช่นนั้น) และจากนั้นต่อไปนี้คำตอบของฉันมากกว่าการรักษาความปลอดภัยกองแลกเปลี่ยน สิ่งนี้เกี่ยวข้องกับการเช็ด cryptheader ซึ่งมีขนาดเพียง 2MB และใช้เวลาน้อยกว่าหนึ่งวินาทีในการเขียนทับ จากนั้นรีสตาร์ทระบบและคีย์การเข้ารหัสดิสก์จะหายไปจากหน่วยความจำโดยไม่มีวิธีการกู้คืนเนื่องจาก cryptheader เองก็หายไปเช่นกัน


ยังเกี่ยวข้องกับ: security.stackexchange.com/questions/106131/ …
André Borie

10

ฉันเสียสละ VM โดยใช้การใช้งานเล็กน้อยที่สูงขึ้นของddการยืมและการแก้ไขจากเล็กน้อยหน้า Arch วิกิพีเดีย

ก่อนติดตั้งเครื่องวัดความคืบหน้าดี:

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 ciphertext การล้างดิสก์ที่สมบูรณ์และปลอดภัยหรือไม่ อาจดีกว่าddตัวอย่างของคุณแต่ไม่มีอะไรปลอดภัยหรือรับประกัน ...

ป้อนคำอธิบายรูปภาพที่นี่

และคุณเป็นหนี้ฉันหนึ่ง VM :)

อ้างอิง:


คุณสามารถยกตัวอย่างว่าไวยากรณ์จะเป็นอย่างไรหากมีคนต้องการเติมดิสก์ด้วยศูนย์ (ถ้า = / dev / ศูนย์) โดยใช้ddและpvโปรด?
Stormlord

1
@Stormlord คุณเพียงแค่ไพพ์มันผ่านpv(ไปป์), ดังนั้นdd if=/dev/zero | pv | dd of=/dev/sdX
someonewithpc

2
คุณไม่จำเป็นต้องเสียสละ VM - เพียงแค่ทำการจับภาพล่วงหน้าและเรียกคืนเมื่อคุณทำเสร็จ :-)
JonasCz - Reinstate Monica

ดังนั้นแม้ว่าจะมีการเขียนบางอย่างผลรวมทั้งหมดมีความซับซ้อน steganographically หากไม่มี "ขยะ" จะเป็นการง่ายกว่าที่จะทำ hexdump ดิสก์เพื่อค้นหาค่าที่ไม่เป็นศูนย์
mckenzm

6

คำตอบสั้น ๆ : มันจะทำสิ่งที่คุณต้องการอย่างคร่าวๆแล้วจะไม่มีอะไรทำงาน การใช้งานddคุณอยู่ในระดับที่ต่ำกว่าระบบไฟล์ซึ่งหมายความว่าข้อ จำกัด ใด ๆ ที่จะนำมาใช้จะไม่มีความเกี่ยวข้องอีกต่อไป (ซึ่งไม่ได้หมายความว่าเคอร์เนลไม่สามารถป้องกันคุณได้ - แต่ไม่ได้) เนื้อหาบางส่วนจากระบบไฟล์มีอยู่ในหน่วยความจำแล้วตัวอย่างเช่นเคอร์เนลและddตัวโปรแกรมเองและบางส่วนจะอยู่ในแคช มีความเป็นไปได้ว่าหากระบบอยู่ในโหมดผู้ใช้หลายคนบางไฟล์อาจถูกเขียนกลับมาในขณะที่ddกำลังดำเนินการสมมติว่ามีการเปลี่ยนแปลงจริงและถ้าคุณอยู่ภายใต้แรงกดดันหน่วยความจำบางหน้าจากที่นั่นอาจสลับ (ควรเข้ารหัสและใช้ไม่ได้หลังจากรีบูต)

คำสั่งส่วนใหญ่ที่คุณต้องการใช้ในการติดตามสิ่งนี้ - รวมถึงreboot- จะไม่อยู่ในแคชและจะไม่ทำงาน ดังนั้นหากคุณอยู่ในโหมดผู้ใช้คนเดียวมันจะทำได้ดีมากหากคุณอยู่ในโหมดผู้ใช้หลายคนมันจะลบข้อมูลส่วนใหญ่ออกไป เป็นการดีที่คุณควรทำมันบูทจากสื่ออื่น ๆ (แม้จะหยุดใน initrd บางที) เพื่อให้คุณมั่นใจได้ว่าการเขียนทั้งหมดมาจากไหน

หากคุณต้องการการลบที่ปลอดภัยการทำเช่นนี้จะไม่ทำงานเนื่องจากจะมีร่องรอยของข้อมูลต้นฉบับเหลืออยู่หากคุณเป็นศูนย์ โดยปกติคุณต้องการได้ถึงสามสุ่มเขียนซึ่งจะหมายถึงการคัดลอกจาก/dev/urandomแทน/dev/zero- ช้ามาก แต่ปลอดภัยกว่า บางคนอาจแนะนำว่าคุณใช้/dev/randomซึ่งเป็นอุปกรณ์สำหรับข้อมูลแบบสุ่ม "บริสุทธิ์" - ไม่หลอกแบบสุ่ม - แต่เพื่อจุดประสงค์นี้โอกาสของคนที่จัดการเพื่อถอดรหัสเมล็ด PRNG และกำจัดข้อมูลได้สำเร็จนั้นสำคัญมาก

หากคุณหวาดระแวงจริงๆคุณจะต้องโยนอุปกรณ์จัดเก็บข้อมูลลงในเตาเผาเพื่อให้สามารถล้าง / ปล่อยประจุได้


1
คุณจำคำท้า dd ได้ไหม? นี่คือปีที่ผ่านมา แต่พวกเขาเสนอเงินรางวัลให้กับ บริษัท ที่สามารถกู้คืนข้อมูลใด ๆ จากฮาร์ดไดรฟ์ที่ได้รับการ zeroed ครั้งเดียว พวกเขาไม่มีผู้รับ
Casey

1
สิ่งที่ "สามครั้ง" เป็นเรื่องไร้สาระที่สุด ข้อมูลสุ่ม 1 ครั้งไม่สามารถกู้คืนได้อย่างแน่นอน แม้ศูนย์จะมีราคาแพงในการกู้คืน (ดูความคิดเห็น @ Casey) บางทีถ้าความโปรดปรานเป็น $ 1b หรือมากกว่านั้นพวกเขาจะมีผู้รับ ...
.. GitHub STOP ช่วย ICE

ขึ้นอยู่กับงบประมาณของคุณและเทคโนโลยีของดิสก์ หากเป็นแผ่นเสียงคุณอาจได้รับข้อมูล แม้จะมีเทคโนโลยีแม่เหล็ก "แนวตั้ง" ยิ่งหน่วยความจำมีความผันผวนมากเท่าใดคุณก็ยิ่งปลอดภัยเท่านั้น
mckenzm

4

มันจะเป็นเช่นนั้นใน VM ของคุณเช็ดดิสก์และทำให้ระบบของคุณใช้ไม่ได้

อย่างไรก็ตามหากคุณมี 'การลบความตื่นตระหนก' ในใจddอาจไม่เร็วพอสำหรับสิ่งนั้นและฉันไม่แน่ใจว่ามีคำสั่งที่เร็วกว่าหรือโปรแกรมที่ให้ไว้ในกรณีนั้น


1

มันควรจะทำงานกระบวนการทำงานจะถูกจัดขึ้นใน Ram และไม่จำเป็นต้องใช้ดิสก์ ฉันจะใช้ระบบถ่ายทอดสดทำงานจาก cd หรือ usb อยู่แล้ว มีแม้กระทั่ง dban ลินุกซ์สดเฉพาะสำหรับการเช็ดดิสก์

การเขียนทับดิสก์ด้วยค่าศูนย์จะถูกบันทึก แต่ถ้าคุณหวาดระแวงมากพอหรือมีกฎเกณฑ์ทางกฎหมายคุณสามารถเขียนทับข้อมูลสุ่มได้หลายครั้ง

ใช้ความระมัดระวังเมื่อใช้การเขียนทับ ssd ไม่รับประกันการลบข้อมูลทั้งหมดเนื่องจากระดับการสึกหรอ

หากคุณใช้การเข้ารหัสดิสก์เต็มรูปแบบ (luks) คุณไม่จำเป็นต้องลบดิสก์เต็มการลบส่วนหัว luks ก็เพียงพอแล้ว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.