GNU/Linux >> Belajar Linux >  >> Linux

Jadikan file hanya dapat dibaca di Linux bahkan untuk root

Taruh di CD atau DVD. Jenis yang bisa ditulis sekali, bukan yang bisa dihapus. Atau beberapa jenis perangkat hanya-baca lainnya.

Oke, saya kira Anda menginginkan solusi perangkat lunak, jadi inilah beberapa idenya:Anda mungkin dapat membuat kumpulan aturan SELinux yang menonaktifkan syscall yang chattr digunakan, bahkan untuk root. Kemungkinan lain adalah dengan menggunakan kemampuan:menyetel +i membutuhkan CAP_LINUX_IMMUTABLE kapabilitas, jadi jika Anda dapat mengatur set pembatas kapabilitas dari semua proses untuk tidak menyertakannya, maka tidak ada yang dapat mengubah flag tersebut. Namun Anda memerlukan dukungan dari init untuk memiliki yang berlaku untuk semua proses. Systemd dapat melakukan itu, tetapi menurut saya ini perlu dilakukan untuk setiap layanan secara terpisah.

Namun, jika Anda melakukannya, ingatlah bahwa root biasa dapat mengubah sistem file dari perangkat mentah (itulah yang debugfs adalah untuk), jadi Anda juga perlu mencegahnya, serta mencegah memodifikasi kernel (memuat modul). Memuat modul dapat dicegah dengan kernel.modules_disabled sysctl, tapi saya tidak yakin tentang mencegah akses ke perangkat mentah. Dan jadikan semua file konfigurasi yang relevan juga tidak dapat diubah.

Lagi pula, setelah itu, Anda juga harus mencegah perubahan cara boot sistem, jika tidak, seseorang dapat mem-boot ulang sistem dengan kernel yang memungkinkan pengesampingan pembatasan di atas.


Tidak ada cara untuk melakukan ini. SESEORANG akan selalu dapat mengembalikan file ke status yang dapat ditulisi, kecuali pada media hanya-baca seperti CD-ROM. Anda dapat secara efektif mencegah root dari melakukannya menggunakan izin SELinux (saya tidak tahu bagaimana melakukannya, atau saya akan memberikan contoh), tetapi kemudian pengguna yang memiliki izin masih dapat membatalkan sesuatu.


Yang Anda inginkan adalah Kontrol Akses Wajib. Ini memungkinkan Anda untuk menentukan satu set izin yang tidak diizinkan oleh kernel untuk ditimpa, bahkan oleh root. SELinux adalah salah satu sistem yang terkenal, Smack adalah contoh lainnya, dan AppArmor adalah sistem ketiga. Di Linux, mereka diimplementasikan sebagai Modul Keamanan Linux, fasilitas tujuan umum untuk mengontrol akses di luar model keamanan mirip UNIX tradisional. Selain sistem tujuan umum yang sudah ada, Anda tentu saja dapat membuatnya sendiri untuk tujuan khusus.

Tentu saja, root memiliki kemampuan untuk menghidupkan atau mematikan seluruh fasilitas atau mengubah izin MAC file, dan beberapa dari sistem ini bahkan memungkinkan kemampuan tersebut diberikan kepada pengguna non-root. Namun, tergantung pada sistemnya, kemampuan ini juga dapat dinonaktifkan. Saya tahu SELinux dan Smack memungkinkan ini; Saya ragu semua LSM melakukannya. Setelah dinonaktifkan, satu-satunya cara untuk mendapatkan kembali kemampuannya adalah dengan mem-boot ulang kernel. Anda kemudian ingin proses boot Anda menonaktifkan kemampuan sebelum akses pengguna diaktifkan. Jika kernel dan proses boot Anda aman, konfigurasi seperti itu (setidaknya secara teori) dapat diubah hanya dengan menghapus media penyimpanan secara fisik untuk mengubahnya.

Sebagai contoh, jika Anda menggunakan SMACK, Anda dapat melakukan:

chsmack -a _ <file>

Ini akan mengatur file untuk memiliki label khusus "_" yang hanya memungkinkan akses baca atau eksekusi, tetapi tidak pernah menulis. Sekarang bahkan root tidak dapat menulis file ini (setelah SMACK diaktifkan dan kemampuan penggantian keamanan telah dinonaktifkan, seperti yang disebutkan di atas).

Namun, Anda juga harus memastikan bahwa kernel Anda aman. Secara default, mudah bagi root untuk menumbangkan kernel, karena kernel mempercayai pengguna root. Jika root hanya dapat menghapus modul keamanan, itu tidak banyak membantu. Daftar metode semacam itu ada di sini, tetapi perhatikan bahwa tidak ada daftar seperti itu yang benar-benar lengkap untuk semua keadaan.

Akhirnya, tergantung pada keadaan Anda, Anda mungkin perlu mengamankan proses boot Anda. Untuk mesin di mana Anda memiliki satu-satunya akses fisik, ini mungkin tidak diperlukan, tetapi untuk keamanan maksimum Anda benar-benar menginginkan sistem file terenkripsi dan cara mem-boot kernel yang aman, seperti UEFI Secure Boot.


Linux
  1. Izin File di Linux – Baca/Tulis/Jalankan

  2. Untuk apa Linux test -a command test?

  3. Di mana file konfigurasi kernel disimpan?

  1. 10 alias Bash yang berguna untuk Linux

  2. Cara Menghapus File Root Mail (Kotak Surat) di Linux

  3. Linux + cara memberikan hanya pengguna tertentu untuk membaca file

  1. Pengujian integrasi berkelanjutan untuk kernel Linux

  2. Cara Membuat File dan Direktori Tidak Dapat Dihapus, Bahkan Dengan Root di Linux

  3. Perintah Linux wc Dijelaskan untuk Pemula (6 Contoh)