Bagaimana cara membuat file terlindungi?

24

Bagaimana cara membuat beberapa file yang berisi data penting dilindungi? Sebagai contoh, misalkan saya memiliki beberapa file yang penting, apakah ada metode atau strategi untuk membuat file jenis ini lebih terlindungi di Ubuntu? Saya bahkan ingin membuat beberapa file meminta kata sandi setiap kali seseorang mencoba membukanya. Apakah ini mempengaruhi versi Ubuntu dalam hal kebijakan keamanan? Bolehkah saya menggunakan algoritma enkripsi apa pun secara eksternal? Salam.

Avani badheka
sumber
apa yang kamu maksud dengan pelindung? Anda ingin membuatnya lebih sulit untuk memodifikasi atau menghapus file?
Zanna
protektif dalam arti tidak ada yang dapat mengaksesnya tanpa izin saya atau bahkan tidak mudah menghapus modifikasi apa pun. ATAU butuh kata sandi untuk membukanya dengan cara yang rumit.
Avani badheka
maksud Anda sederhana chown rootdan chmod go-rwx?
njzk2
Untuk meminta kata sandi, gunakan disk yang dienkripsi atau file gambar disk yang tidak diautount.
Yosua

Jawaban:

32

Metode terbaik yang Anda miliki adalah chattr +i {file}. Ini menetapkan atribut yang tidak dapat diubah dan kemudian sebuah file tidak dapat dimodifikasi, dihapus, diganti nama atau hardlink dibuat oleh siapa saja termasuk root.

Satu-satunya orang yang dapat mengedit file adalah root. (S) ia harus membatalkan ini dengan menghapus bit abadi: chattr -i {file}dan kemudian dapat melakukan apa pun dengan file tersebut. Mengatur + i lagi mengunci file dari modifikasi apa pun.

Ini tidak akan mencegah dari memformat partisi tempat file disimpan. Ini akan mencegah pencurian file.


Anda bahkan dapat melakukan ini pada mountpoint lengkap jika Anda ingin:

chattr +i -R /discworld

akan membuat seluruh "dunia" dan apa pun di dalamnya tidak berubah ( chattr -i -R /discworlduntuk membatalkannya)


Rinzwind
sumber
Saya ingin memodifikasi, menghapus, mengganti nama dll hanya dapat dilakukan oleh root. Bahkan jika root tidak dapat berubah maka itu akan membaca hanya untuk semua orang, yang tidak saya inginkan dalam kasus saya.
Avani badheka
@Avanibadheka root dapat melakukan chattr -i sebelum mengedit dan kemudian melakukan chattr + i lagi untuk menguncinya.
Rinzwind
1
Anda juga dapat secara permanen (sampai reboot) menghapus kemampuan untuk memodifikasi bit yang tidak dapat diubah dari sistem.
rackandboneman
Bahkan tidak bisa disalin? Jadi file cat> output atau dd tidak berfungsi?
Konerak
1
File yang tidak dapat diubah dapat disalin (kecuali jika ditetapkan sebagai chmod a-r). Lihat log terminal saya sebagai contoh pengujian.
Ruslan
18

Tanpa melakukan sesuatu yang istimewa, Anda dapat mempersulit orang lain untuk membaca, mengubah, atau menghapus file dengan menghapus izin untuk semua orang kecuali pemiliknya. Jadikan root pemilik file dan letakkan di dalam direktori yang hanya diakses oleh root ...

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

pindahkan ( sudo mv file /home/secret) file Anda di sana dan lakukan

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

chmoddan chownambil beberapa argumen: chmod 600 file1 file2atauchmod 600 file*

selain itu, gunakan enkripsi ...

Zanna
sumber
3
Mungkin lebih mudah dipahami jika Anda menggunakan izin karakter daripada oktal. Jadi itu akan menjadi misalnya "chmod go-rwx" untuk menghapus membaca, menulis, dan mengeksekusi izin dari grup dan lainnya. Lihat halaman manual chmod.
jamesqf
12

Cara yang cukup aman untuk melindungi dokumen adalah enkripsi (asalkan Anda menghancurkan dokumen asli dan menyimpan versi yang dienkripsi dengan benar).

Izin (seperti yang disarankan oleh jawaban lain) dapat dielakkan (lihat ini ).

Karena itu, saya sarankan Anda mengenkripsi file dengan benar. Begini caranya:

(Untuk metode antarmuka grafis, lihat akhir dari jawaban ini)

Pastikan Anda telah gpgmenginstal.

Misalnya, untuk mengenkripsi file bernama Important_File.txt, gunakan

$ gpg -c Important_File.txt

Sekarang masukkan kata sandi (ini akan digunakan nanti ketika harus membacanya).

Anda sekarang akan mendapatkan file dengan nama asli dan .gpgekstensi, misalnya Important_File.txt.gpg.

Hapus file asli, dan simpan .gpgversinya. Mungkin mudah untuk mendapatkan file asli dari disk jika Anda tidak menggunakan shredutilitas aman (yang masih tidak akan bekerja pada drive SSD atau kartu SD):

$ shred Important_File.txt

Sekarang kita hanya Important_File.txt.gpgbersama kita.

Setiap kali Anda perlu membacanya, cukup

$ gpg Important_File.txt.gpg

Kemudian masukkan kata sandi yang Anda atur di perintah pertama. Anda akan mendapatkan yang asli Important_File.txt.

CATATAN : Ini hanya akan melindungi konten.gpg file yang dienkripsi agar tidak dibaca oleh siapa pun (menggunakan enkripsi), tetapi siapa saja dapat menghapus, menyalin, atau memindahkannya ! Untuk perlindungan dasar dari itu , gunakan metode izin dari jawaban lain pada .gpgfile terenkripsi .

Metode Graphical Interface (GUI)

Instal aplikasi Kuda Laut.

Kemudian Anda dapat melakukan ini dari aplikasi Files:

Cuplikan layar dari File GNOME yang mengenkripsi

Secara universal unik
sumber
1
"Satu-satunya cara aman untuk melindungi dokumen adalah enkripsi" Saya tidak setuju. Tindakan mengenkripsi tidak aman apa yang membuatnya aman. Ini adalah bagian sosial setelah itu. Jika Anda membuat readme di sebelah file yang di-encode dengan "this is the password: 11212324234" Anda dapat mengenkripsi semua yang Anda inginkan aman bukan.
Rinzwind
1
@Rinzwind Diedit. Bagaimanapun, dengan tingkat kebodohan itu, tidak ada yang aman.
UniversallyUniqueID
Terpilih untuk mengantisipasi ;-)
Rinzwind
Perhatikan bahwa mungkin mudah untuk mengambil file yang tidak dienkripsi asli jika Anda menghapusnya ( rmatau menghapus dari pengelola file). Anda perlu menimpanya agar tidak dapat dipulihkan, misalnya menggunakan shred. Itu juga tidak berguna pada SSD dan flash drive ...
Byte Commander
@ByteCommander Terima kasih, saya telah menambahkannya ke jawabannya.
UniversallyUniqueID
9

Cukup atur 600 izin yang sangat ketat, sehingga hanya pemilik yang dapat membaca, dan menulisnya (jika Anda memerlukan izin eksekusi, itu akan menjadi 700).

Anda juga dapat melakukannya secara grafis - cukup klik kanan pada file, pilih Properties > Permissions > Set, dan mengatur semua tapi yang ownerlapangan untuk apa-apa.

Lihat gambar sebagai contoh:

gambar

dadexix86
sumber
Hai, saya pikir jawaban Anda akan mendapat manfaat dari tangkapan layar yang menunjukkan bagaimana melakukannya dengan GUI.
grooveplex
Selesai, terima kasih :) (tapi sistem saya dalam bahasa Italia ...)
dadexix86
@Zanna pengamatan yang baik (saya mengubah jawabannya)
dadexix86
8

Jika Anda adalah pengguna tunggal pada sistem, dan tidak ada yang dapat mengakses komputer Anda secara wajar tanpa izin, maka Anda dapat memblokir akses dengan menggunakan perintah ini, sesuai jawaban Zanna :

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

Dalam hal ini, file hanya dapat dibaca dan / atau ditulis oleh rootpengguna. Ini dianggap "cukup aman" jika tidak ada yang dapat mem-boot komputer Anda tanpa izin Anda, atau mengangkat hard drive Anda. Kami menggunakan rootpengguna dalam hal ini, karena rootpengguna selalu dapat membaca file, bahkan jika mereka tidak memiliki izin. Dengan menggunakan pengguna root, kami menegaskan bahwa hanya satu pengguna yang dapat mengaksesnya.

Jika Anda ingin menandai file sebagai tidak dapat diubah dengan cara, bentuk, atau bentuk apa pun, Anda dapat menggunakan iatribut untuk menandai file sebagai tidak dapat diubah . Dalam hal ini, izin file dikunci dan tidak dapat diubah dalam keadaan apa pun. Dengan demikian, Anda dapat melakukan perintah berikut untuk membuat file tidak dapat diubah, dan melindunginya dari penghapusan dan perubahan izin:

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

Jika Anda ingin mengubahnya, ganti +idengan a -iuntuk membuka kunci file sementara. Lihat jawaban Rinzwind untuk tampilan yang lebih mendalam.

Sekarang, jika orang lain memiliki akses ke komputer Anda (baik sudoakses jarak jauh atau segala bentuk akses fisik), ini berantakan secara instan. Seorang penyerang dapat menggunakan rootkekuatan untuk membaca file Anda, memasukkan Live USB, atau hanya menarik hard drive Anda.

Karena itu, kita perlu mengenkripsi file. Saya pribadi lebih suka menggunakan "wadah file," sehingga Anda dapat lebih banyak menempel di sana dan membuatnya tumbuh sesuai kebutuhan. chattr +imasih disarankan agar file tidak terhapus secara tidak sengaja (atau diubah). Terakhir, jika Anda menggunakan gambar yang dienkripsi, Anda dapat mengatur izin untuk membiarkan orang lain mengakses subset file yang sangat terbatas saat disk dipasang, menjadikannya baik untuk server. Panduan ini awalnya tersedia di sini , dan disesuaikan untuk digunakan di sini.

Pertama, Anda ingin membuat image disk untuk Anda gunakan. Dalam contoh ini, kita akan membuatnya 5 GB.

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

Kemudian, kami perlu membuat gambar Anda dienkripsi:

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

Anda akan memiliki pilihan di sini untuk memasukkan kata sandi enkripsi pilihan Anda. Setelah ini selesai, kita perlu mengekspos perangkat blok mentah:

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

Saat ini, kami memiliki wadah file yang didekripsi, tetapi tidak ada sistem file, dan itu sama baiknya dengan tidak berguna. Mari kita perbaiki itu:

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

Sekarang, kita membutuhkan tempat untuk memasang partisi baru kita. Dalam hal ini, saya akan meletakkannya di /crypt. Saya pengguna 1000, jadi, saya akan mengatur partisi saya hanya mengizinkan saya (dan root) untuk membaca / menulis darinya.

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

Sekarang, saya dapat menggunakan alat file saya untuk menavigasi /cryptdan saya dapat menyimpan semua file sensitif saya di sana. Setelah selesai, saya harus melepas dan mengenkripsi ulang partisi saya.

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

Sekarang, saya akan mengatur partisi yang sesuai pada file gambar saya, sehingga hanya saya dan root yang dapat mengaksesnya, dan itu tidak dapat diubah lagi.

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

Setiap kali saya ingin membuka file ini untuk membaca, saya hanya perlu menjalankan dua perintah ini, yang saya dapat dengan mudah alias:

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

Data terenkripsi saya akan tersedia di /cryptdan itu akan tetap hanya-baca dan hanya dapat diakses oleh saya dan root.

Jika saya ingin mengubah file, saya perlu mengubah izin dan kemudian me-mount:

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

Sekarang, Anda perlu berhati-hati di sini karena jika pengguna memiliki root pada sistem mereka, mereka dapat memodifikasi / menghancurkan partisi terenkripsi Anda, menjadikannya tidak berguna. Mereka juga dapat mencuri data dari drive, tetapi hanya ketika terbuka. Namun, mereka tidak dapat mencuri data atau bahkan melihat bahwa data ada tanpa Anda membukanya secara eksplisit. Karena itu, tugas Anda adalah memastikan bahwa sistem Anda cukup aman untuk tidak memiliki pengguna root daring saat Anda membuka volume terenkripsi Anda.


TL; DR :

  1. Buat brankas:

    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. Isi lemari besi:

    sudo mkdir /crypt
    sudo mount /dev/mapper/my-secret-device /crypt -o umask=0700,gid=1000,uid=1000
    
  3. Kunci lemari besi:

    sudo umount /crypt
    sudo cryptsetup luksClose my-secret-device
    
  4. Bekukan lemari besi:

    chmod 400 ~/NSA-Data-Dump-20161012.img
    sudo chattr +i ~/NSA-Data-Dump-20161012.img
    
  5. Buka brankas:

    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
    
Kaz Wolfe
sumber
Tentu saja pengguna dengan akses root juga dapat mengganti cryptsetupdengan sesuatu yang mencatat kata sandi apa pun yang dimasukkan ...
Hagen von Eitzen
@HagenvonEitzen Ya, tidak ada yang seperti "benar-benar aman" di komputer. Ada titik di mana Anda menggambar garis.
Kaz Wolfe
7

Anda dapat menggunakan encfs untuk enkripsi direktori .

Pada dasarnya Anda perlu membuat 2 direktori, 1 di mana data terenkripsi akan disimpan dan 1 di mana Anda akan mengakses data itu:

mkdir ~/.encrypted
mkdir ~/private

Kemudian jalankan (Anda perlu mengeksekusi baris ini setiap kali Anda ingin 'me-mount' direktori Anda):

encfs ~/.encrypted/ ~/private/

Kecuali Anda tahu lebih banyak tentang itu, cukup tekan ENTERuntuk pergi dengan pengaturan standar (hanya diminta pertama kali).

Kemudian masukkan kata sandi Anda dan itu akan dipasang.

Data Anda hanya akan diakses oleh pengguna Anda dengan aman ~/private/(Anda dapat mengabaikannya ~/.encrypted)

Untuk melepasnya:

sudo umount ~/private/

atau

fusermount -u ~/private/

Sederhana seperti itu.

lepe
sumber
3

Anda dapat mengenkripsi data menggunakan cryptkeeper yang merupakan aplikasi yang sangat bagus dan dapat memberikan keamanan pada file Anda. Anda dapat menginstalnya dengan:

sudo apt-get update
sudo apt-get install cryptkeeper

Saya biasanya merekomendasikan Anda mengenkripsi folder dengan nama yang dimulai dengan . meletakkannya sebelum nama file menyembunyikannya. Ini sedikit trik tetapi berhasil.

Untuk menyembunyikan folder, gunakan Ctrl+ hatau sebaliknya.

SHUBHRANEEL GHOSH
sumber
1
Ctrl + h keystroke berlaku untuk aplikasi apa? Pasti tidak akan berhasil ls.
Melebius
Ctrl-H setidaknya berfungsi untuk Nautilus (dan garpu itu, seperti Nemo). Adapun manajer file lainnya, saya tidak tahu. Saat menggunakan ls, Anda dapat menggunakan -asakelar untuk menampilkan semua file (termasuk yang disembunyikan).
s3lph