จะป้องกันไฟล์ได้อย่างไร


24

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


คุณหมายถึงอะไรโดยการป้องกัน คุณต้องการทำให้การแก้ไขหรือลบไฟล์ยากขึ้นหรือไม่
Zanna

ป้องกันในแง่ที่ไม่มีใครสามารถเข้าถึงได้โดยไม่ได้รับอนุญาตจากฉันหรือแม้แต่การลบการแก้ไขใด ๆ หรือต้องการรหัสผ่านเพื่อเปิดโดยใช้วิธีที่ยุ่งยาก
Avani badheka

คุณหมายถึงอย่างเรียบง่ายchown rootและchmod go-rwx?
njzk2

หากต้องการรหัสผ่านให้ใช้ดิสก์ที่เข้ารหัสหรือไฟล์อิมเมจของดิสก์ที่ไม่ได้เปิดระบบอัตโนมัติ
Joshua

คำตอบ:


32

chattr +i {file}วิธีที่ดีที่สุดที่คุณมีคือ สิ่งนี้ตั้งค่าแอ็ตทริบิวต์ที่ไม่เปลี่ยนรูปได้จากนั้นไฟล์จะไม่สามารถแก้ไขลบเปลี่ยนชื่อหรือสร้างลิงก์ที่สร้างโดยใครก็ได้รวมถึงรูท

บุคคลเดียวที่สามารถแก้ไขไฟล์ได้คือรูท (S) เขาจะต้องยกเลิกการทำสิ่งนี้โดยการลบบิตที่ไม่เปลี่ยนรูปchattr -i {file}และจากนั้นสามารถทำอะไรก็ได้กับไฟล์ การตั้งค่า + i จะล็อคไฟล์อีกครั้งจากการดัดแปลงใด ๆ

การทำเช่นนี้จะไม่ป้องกันการฟอร์แมตพาร์ติชั่นที่จัดเก็บไฟล์ มันจะป้องกันการโจรกรรมไฟล์


คุณสามารถทำได้แม้กระทั่งในจุดเมานท์ที่สมบูรณ์หากคุณต้องการ:

chattr +i -R /discworld

จะทำให้ทั้ง "discworld" และอะไรก็ตามที่อยู่ในนั้นไม่เปลี่ยนรูป ( chattr -i -R /discworldเพื่อเลิกทำ;))



ฉันต้องการแก้ไขลบเปลี่ยนชื่อ ฯลฯ สามารถทำได้โดยรูทเท่านั้น แม้ว่ารากไม่สามารถเปลี่ยนแปลงได้ แต่มันจะอ่านได้สำหรับทุกคนเท่านั้นซึ่งฉันไม่ต้องการในกรณีของฉัน
Avani badheka

@Avanibadheka root สามารถทำ chattr -i ก่อนทำการแก้ไขจากนั้นทำการ chattr + i อีกครั้งเพื่อล็อค
Rinzwind

1
นอกจากนี้คุณยังสามารถอย่างถาวร (จนกระทั่งรีบูต) ลบความสามารถในการปรับเปลี่ยนบิตใด ๆ ที่ไม่เปลี่ยนรูปได้จากระบบ
rackandboneman

มันไม่สามารถคัดลอกได้? ดังนั้นไฟล์ cat> output หรือ dd ไม่ทำงาน?
Konerak

1
สามารถคัดลอกไฟล์ที่ไม่เปลี่ยนรูปแบบได้ (เว้นแต่จะตั้งไว้ที่chmod a-r) ดูบันทึกเทอร์มินัลของฉันสำหรับการทดสอบตัวอย่าง
Ruslan

18

คุณสามารถทำให้ผู้อื่นสามารถอ่านเปลี่ยนหรือลบไฟล์ได้ยากโดยการลบสิทธิ์สำหรับทุกคนยกเว้นเจ้าของ ทำให้ root เป็นเจ้าของไฟล์และวางไว้ในไดเรกทอรีที่ root เท่านั้นที่สามารถเข้าถึง ...

sudo mkdir /home/secret     #this directory will be owned by root, no need to chown
sudo chmod 700 /home/secret

ย้าย ( sudo mv file /home/secret) ไฟล์ของคุณในนั้นและทำ

sudo chown root: /home/secret/file
sudo chmod 600 /home/secret/file

chmodและchownรับหลายอาร์กิวเมนต์: chmod 600 file1 file2หรือchmod 600 file*

นอกเหนือจากนั้นใช้การเข้ารหัส ...


3
อาจจะเข้าใจง่ายกว่าถ้าคุณใช้การอนุญาตให้ใช้อักขระแทนการใช้แปดฐาน ดังนั้นมันจะเป็นเช่น "chmod go-rwx" เพื่อลบการอ่านเขียนและดำเนินการสิทธิ์จากกลุ่มและอื่น ๆ ดูหน้าคน chmod
jamesqf

12

วิธีที่ปลอดภัยในการป้องกันเอกสารคือการเข้ารหัส (ให้คุณทำลายเอกสารต้นฉบับและจัดเก็บรุ่นที่เข้ารหัสอย่างเหมาะสม)

การอนุญาต (ตามคำแนะนำโดยคำตอบอื่น ๆ ) สามารถหลีกเลี่ยงได้ (ดูสิ่งนี้ )

ดังนั้นฉันขอแนะนำให้คุณเข้ารหัสไฟล์อย่างถูกต้อง นี่คือวิธี:

(สำหรับวิธีการอินเทอร์เฟซแบบกราฟิกดูจุดสิ้นสุดของคำตอบนี้)

ให้แน่ใจว่าคุณได้gpgติดตั้ง

ตัวอย่างเช่นหากต้องการเข้ารหัสไฟล์ชื่อImportant_File.txtให้ใช้

$ gpg -c Important_File.txt

ตอนนี้ป้อนรหัสผ่าน (จะใช้ในภายหลังเมื่อต้องอ่าน)

ตอนนี้คุณจะได้รับไฟล์ที่มีชื่อเดิมและได้ขยายตัวอย่างเช่น.gpgImportant_File.txt.gpg

ลบไฟล์ต้นฉบับและเก็บ.gpgเวอร์ชัน อาจเป็นเรื่องง่ายที่จะรับไฟล์ต้นฉบับจากดิสก์หากคุณไม่ได้ใช้shredยูทิลิตี้ที่ปลอดภัย(ซึ่งจะยังไม่สามารถใช้งานได้กับไดรฟ์ SSD หรือการ์ด SD):

$ shred Important_File.txt

ตอนนี้เรามีImportant_File.txt.gpgกับเราเท่านั้น

เมื่อใดก็ตามที่คุณจำเป็นต้องอ่านมันเพียง

$ gpg Important_File.txt.gpg

จากนั้นป้อนรหัสผ่านที่คุณตั้งไว้ในคำสั่งแรก Important_File.txtคุณจะได้รับเดิม

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

วิธีการเชื่อมต่อแบบกราฟิก (GUI)

ติดตั้งแอปพลิเคชั่นซีฮอร์ส

จากนั้นคุณสามารถทำได้จากแอปพลิเคชันไฟล์:

ภาพหน้าจอของการเข้ารหัสไฟล์ของ GNOME


1
"วิธีเดียวที่ปลอดภัยในการป้องกันเอกสารคือการเข้ารหัส" ฉันไม่เห็นด้วย การเข้ารหัสไม่ปลอดภัยสิ่งที่ทำให้ปลอดภัย มันเป็นส่วนทางสังคมหลังจากนั้น หากคุณสร้าง readme ถัดจากไฟล์ที่เข้ารหัสด้วย "นี่คือรหัสผ่าน: 11212324234" คุณสามารถเข้ารหัสทั้งหมดที่คุณต้องการได้อย่างปลอดภัยไม่ใช่
Rinzwind

1
@Rinzwind แก้ไขแล้ว อย่างไรก็ตามด้วยระดับความโง่เขลานั้นไม่มีอะไรปลอดภัย
UniversallyUniqueID


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

@ ByteCommander ขอบคุณฉันได้เพิ่มไว้ในคำตอบแล้ว
UniversallyUniqueID

9

เพียงตั้งค่าการอนุญาตที่เข้มงวดมาก 600 เพื่อให้เจ้าของเท่านั้นที่สามารถอ่านและเขียนได้ (ถ้าคุณต้องการสิทธิ์ดำเนินการนั่นจะเป็น 700)

นอกจากนี้คุณยังสามารถทำมันได้กราฟิก - เพียงแค่คลิกขวาที่ไฟล์เลือกProperties > Permissions > Setและการตั้งค่าทั้งหมด แต่ownerฟิลด์เพื่ออะไร

ดูภาพเป็นตัวอย่าง:

ภาพ


สวัสดีฉันคิดว่าคำตอบของคุณจะได้รับประโยชน์จากสกรีนช็อตที่แสดงวิธีการใช้ GUI
grooveplex

เสร็จแล้วขอบคุณ :) (แต่ระบบของฉันเป็นภาษาอิตาลี ... )
dadexix86

@ Zanna การสังเกตที่ดี (ฉันแก้ไขคำตอบ)
dadexix86

8

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

sudo chown root:root /my/secret/file.txt
sudo chmod 600 /my/secret/file.txt

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

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

sudo chattr +i /my/secret/file.txt

หากคุณต้องการเปลี่ยนให้แทนที่+iด้วย-iเพื่อปลดล็อคไฟล์ชั่วคราว ดูคำตอบของ Rinzwindสำหรับมุมมองเชิงลึกเพิ่มเติม

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

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

ก่อนอื่นคุณต้องการสร้างภาพดิสก์สำหรับการใช้งานของคุณ ในตัวอย่างนี้เราจะทำให้มัน 5 GB

dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img

จากนั้นเราต้องทำให้ภาพของคุณเข้ารหัส:

sudo cryptsetup luksFormat ~/NSA-Data-Dump-20161012.img

คุณจะมีตัวเลือกที่นี่เพื่อป้อนรหัสผ่านการเข้ารหัสที่คุณต้องการ เมื่อดำเนินการเสร็จแล้วเราจำเป็นต้องเปิดเผยอุปกรณ์บล็อกดิบ:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device

ตอนนี้เรามีคอนเทนเนอร์ไฟล์ที่ถอดรหัสแล้ว แต่ไม่มีระบบไฟล์และมันก็ดีเหมือนกัน มาแก้ไขกันเถอะ:

sudo mkfs.ext4 /dev/mapper/my-secret-device

ตอนนี้เราต้องมีสถานที่สำหรับติดตั้งพาร์ทิชันใหม่ของเรา /cryptในกรณีนี้ผมจะวางไว้ที่ ฉันคือผู้ใช้ 1000 ดังนั้นฉันจะตั้งพาร์ติชันของฉันให้อนุญาต (และรูท) เพื่ออ่าน / เขียนจากมันเท่านั้น

sudo mkdir /crypt
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000

ตอนนี้ฉันสามารถใช้เครื่องมือไฟล์ของฉันเพื่อนำทางไปยัง/cryptและฉันสามารถเก็บไฟล์ที่สำคัญทั้งหมดของฉันที่นั่น เมื่อฉันทำเสร็จแล้วฉันจะต้องถอนติดตั้งและเข้ารหัสพาร์ติชันของฉันอีกครั้ง

sudo umount /crypt
sudo cryptsetup luksClose my-secret-device

ตอนนี้ฉันจะตั้งพาร์ทิชันที่เหมาะสมในไฟล์ภาพของฉันเช่นฉันเท่านั้นและรากสามารถเข้าถึงได้และไม่สามารถเปลี่ยนแปลงได้อีกต่อไป

chmod 400 ~/NSA-Data-Dump-20161012.img
sudo chattr +i ~/NSA-Data-Dump-20161012.img

เมื่อใดก็ตามที่ฉันต้องการเปิดไฟล์นี้เพื่ออ่านฉันต้องเรียกใช้สองคำสั่งซึ่งฉันสามารถใช้นามแฝงได้อย่างง่ายดาย:

sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

ข้อมูลที่เข้ารหัสของฉันจะอยู่ที่ /cryptและจะยังคงเป็นแบบอ่านอย่างเดียวและเข้าถึงได้เฉพาะฉันและราก

หากฉันต้องการแก้ไขไฟล์ฉันต้องเปลี่ยนการอนุญาตแล้วติดตั้ง:

sudo chattr -i ~/NSA-Data-Dump-20161012.img
chmod 700 ~/NSA-Data-Dump-20161012.img
sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro

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


TL; DR :

  1. สร้างอุโมงค์:

    dd if=/dev/zero bs=1M count=5000 of=~/NSA-Data-Dump-20161012.img
    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mkfs.ext4 /dev/mapper/my-secret-device
    
  2. เติมหลุมฝังศพ:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. ล็อคหลุมฝังศพ:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. ตรึงห้องนิรภัย:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. เปิดหลุมฝังศพ:

    sudo cryptsetup luksOpen ~/NSA-Data-Dump-20161012.img my-secret-device
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000,ro
    

แน่นอนว่าผู้ใช้ที่มีการเข้าถึงรูทอาจแทนที่cryptsetupด้วยบางสิ่งที่บันทึกรหัสผ่านที่ป้อน ...
Hagen von Eitzen

@HagenvonEitzen ใช่ใช่ไม่มีอะไรเช่น "ปลอดภัยอย่างแท้จริง" บนคอมพิวเตอร์ มีจุดที่คุณวาดเส้น
Kaz Wolfe

7

คุณสามารถใช้EncFS สำหรับการเข้ารหัสไดเรกทอรี

โดยทั่วไปคุณจะต้องสร้าง 2 ไดเรกทอรี 1 ซึ่งข้อมูลที่เข้ารหัสจะถูกจัดเก็บและ 1 ที่คุณจะเข้าถึงข้อมูลนั้น:

mkdir ~/.encrypted
mkdir ~/private

จากนั้นดำเนินการ (คุณต้องดำเนินการบรรทัดนี้ทุกครั้งที่คุณต้องการ 'ติดตั้ง' ไดเรกทอรีของคุณ):

encfs ~/.encrypted/ ~/private/

นอกจากคุณจะรู้มากขึ้นเพียงกดENTERเพื่อไปที่การตั้งค่ามาตรฐาน (ถามเฉพาะครั้งแรกเท่านั้น)

จากนั้นป้อนรหัสผ่านของคุณและมันจะถูกติดตั้ง

ข้อมูลของคุณจะถูกเข้าถึงโดยผู้ใช้ของคุณอย่างปลอดภัยเท่านั้น~/private/(คุณสามารถเพิกเฉยได้~/.encrypted)

ในการเลิกเมานท์:

sudo umount ~/private/

หรือ

fusermount -u ~/private/

เรียบง่ายเหมือนที่


3

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

sudo apt-get update
sudo apt-get install cryptkeeper

โดยทั่วไปฉันแนะนำให้คุณเข้ารหัสโฟลเดอร์ด้วยชื่อที่ขึ้นต้นด้วย. เพราะใส่ไว้ข้างหน้าชื่อไฟล์จะซ่อนไว้ มันเป็นเคล็ดลับเล็กน้อย แต่ก็ใช้งานได้

หากต้องการยกเลิกการซ่อนโฟลเดอร์ให้ใช้Ctrl+ hหรือ vise-versa


1
การกดแป้น Ctrl + h ใช้กับแอปพลิเคชันใด มันจะไม่ทำงานlsแน่นอน
Melebius

อย่างน้อย Ctrl-H ใช้งานได้กับ Nautilus (และส้อมของมันเช่น Nemo) สำหรับผู้จัดการไฟล์คนอื่นฉันไม่สามารถบอกได้ เมื่อใช้lsคุณสามารถใช้-aสวิตช์เพื่อแสดงไฟล์ทั้งหมด (เช่นรวมถึงไฟล์ที่ซ่อนอยู่)
s3lph
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.