Apakah ada sistem file khusus menulis terenkripsi untuk Linux?

14

Saya sedang mencari sistem file terenkripsi untuk Linux yang dapat dipasang dalam mode tulis saja, maksud saya Anda harus dapat memasangnya tanpa memberikan kata sandi, namun masih dapat menulis / menambahkan file, tetapi Anda juga tidak harus dapat membaca file yang telah Anda tulis atau membaca file yang sudah ada di sistem file. Akses ke file hanya boleh diberikan ketika sistem file dipasang melalui kata sandi. Tujuan dari ini adalah untuk menulis file log atau data serupa yang hanya ditulis, tetapi tidak pernah dimodifikasi, tanpa memiliki file itu sendiri. Izin file tidak membantu di sini karena saya ingin data tidak dapat diakses bahkan ketika sistem sepenuhnya dikompromikan.

Apakah hal seperti itu ada di Linux? Atau jika tidak, apa alternatif terbaik untuk membuat file log terenkripsi?

Solusi saya saat ini terdiri dari hanya memipipkan data gpg --encrypt, yang berfungsi, tetapi sangat rumit, karena Anda tidak dapat dengan mudah mendapatkan akses ke sistem file secara keseluruhan, Anda harus menyalurkan setiap file melalui gpg --decryptmanual.

Grumbel
sumber
3
Saya yakin Anda bisa melakukan apa yang Anda inginkan syslog. Itu memisahkan pembuatan pesan log dari sistem yang menyimpannya, sehingga aplikasi yang menghasilkan pesan tidak memiliki akses ke tempat penyimpanannya. Log bahkan dapat (dan sering) di server terpisah.
mpez0
Saya ingin melangkah lebih jauh dan memiliki data yang tidak dapat diakses sama sekali, tidak hanya untuk proses yang menciptakannya, tetapi bahkan tidak untuk root. Inilah yang dilakukan enkripsi kunci publik dengan gpg, tetapi saya sedang mencari cara untuk melakukannya di tingkat sistem file.
Grumbel

Jawaban:

4

... Saya ingin data tidak dapat diakses bahkan ketika sistem sepenuhnya dikompromikan.

Ini tidak mungkin. Jika sistem sepenuhnya dikompromikan maka "menurut definisi" apa pun di dalamnya dapat diakses - termasuk kunci enkripsi.

Enkripsi tidak berguna dalam melindungi terhadap kompromi sistem, ketika sistem sedang berjalan, JIKA kunci untuk mengenkripsi / mendekripsi data berada pada sistem yang sama dengan data yang dienkripsi. Misalnya, jika Anda memiliki sistem file LUKS yang terpasang, dan seseorang mendapatkan akses root ke sistem Anda, dimungkinkan untuk menarik kunci dari RAM - karena mereka harus tinggal di RAM untuk mendekripsi sistem file. Dalam situasi Anda, jika Anda mengetikkan frasa sandi setiap kali Anda mengenkripsi file, Anda terlindungi (dengan asumsi keylogger tidak ada di sistem Anda), jika tidak, Anda berada dalam situasi yang sama dan seseorang yang berkompromi dengan sistem Anda dapat menemukan bahwa kunci dan batalkan semua enkripsi Anda.

Anda perlu mengirimkan data yang ingin Anda lindungi di luar sistem + JANGAN menulisnya ke media perantara di sistem itu jika Anda benar-benar tidak ingin root mengaksesnya. rsyslogsecara eksplisit mendukung hal ini terkait dengan pencatatan, dan Anda dapat mengenkripsi koneksi antara sumber dan sink dengan OpenVPN stunnel,, atau yang serupa. Saya yakin ada opsi transfer "satu arah" lain di luar sana.

LawrenceC
sumber
"karena mereka harus hidup dalam RAM untuk mendekripsi sistem file" ini mungkin benar dengan LUKS secara khusus, tetapi tidak secara umum: kripto asimetris dirancang untuk tujuan yang tepat (seseorang yang memegang kunci publik dapat mengenkripsi, tetapi tidak mendekripsi)
Clément
3

Kedengarannya bagi saya seperti Anda pergi ke arah yang salah. Jika Anda menginginkan file yang dapat Anda tulis, tetapi tidak dibaca, maka izin file adalah yang Anda cari.


$ touch log
$ chmod 222 log
$ echo test > log
$ cat log
cat: log: Permission denied

Tentu saja, file ini dapat berada di sistem file yang dienkripsi.

gorila
sumber
Anda dapat memasang sistem file dengan umask yang diberikan, tidak memungkinkan pengguna untuk mengubah izin.
no.
Dan hanya pemilik file (atau superuser) yang dapat mengubah izin.
gorilla
Saya pikir OP berusaha untuk melindungi dirinya sendiri bahkan terhadap penyerang yang mendapatkan root.
Clément
1
umask 0477 && touch file && echo test > file && cat file

dapat bermanfaat juga. File apa pun yang dibuat dalam proses saat ini akan memiliki mode 0200.

edk
sumber