Apakah mungkin untuk mencegah pengguna untuk tidak menggunakan perintah seperti ls, rm dan perintah sistem lainnya yang dapat membahayakan sistem. Tetapi para pengguna harus dapat menjalankan program shell.
ls
perintah berbahaya !
Apakah mungkin untuk mencegah pengguna untuk tidak menggunakan perintah seperti ls, rm dan perintah sistem lainnya yang dapat membahayakan sistem. Tetapi para pengguna harus dapat menjalankan program shell.
ls
perintah berbahaya !
Jawaban:
Pertanyaan Anda seharusnya:
Saya tidak mempercayai pengguna saya. Yang bodoh melihat sesuatu di internet dan mencobanya tanpa memahami apa yang dilakukannya. Yang licik suka mengintip dan melihat file orang lain dan mencuri ide-ide mereka. Dan yang malas, jangan mulai saya yang malas.
Bagaimana cara melindungi sistem saya dan pengguna saya dari pengguna saya?
Pertama, unix memiliki sistem perizinan filesystem yang sangat komprehensif. Ini tampaknya menjadi tutorial yang layak tentang izin sistem file unix . Inti dari hal ini adalah direktori dapat diatur sedemikian rupa sehingga pengguna dapat masuk ke direktori dan dapat menjalankan program dari direktori tersebut tetapi tidak dapat melihat isi direktori tersebut. Jika Anda melakukan ini, misalnya, di / home, jika pengguna menjalankan ls on / home, mereka akan mendapatkan izin yang ditolak kesalahannya.
Jika Anda benar-benar takut pada pengguna Anda dan ingin memasukkan mereka ke dalam jenis lingkungan terbatas supermax , gunakan sesuatu seperti penjara freebsd atau zona solaris - setiap pengguna mendapatkan lingkungan buatan mereka sendiri. Untuk poin tambahan gunakan ZFS sehingga Anda dapat mengambil snapshot dari lingkungan saat mereka masuk sehingga jika mereka menghapus file mereka, Anda bisa menariknya keluar dari snapshot.
Ada tiga hal yang perlu dilakukan untuk sepenuhnya melakukan apa yang Anda minta:
Belt, suspender, dan staple-gun untuk ukuran yang baik. Sulit salah di sana.
AppArmor menarik karena MAC untuk executable tertentu diwarisi oleh semua anak-anaknya. Atur login pengguna menjadi /bin/bash-bob
, atur profil AppArmor untuk hak biner spesifik itu, dan satu-satunya cara mereka keluar dari penjara izin itu adalah melalui eksploitasi kernel. Jika beberapa skrip pemasangan malas dibiarkan /var/opt/vendor/tmp
dapat ditulisi secara global karena alasan bodoh, pengguna yang menggunakan /bin/bash-bob
shell tidak akan dapat menulis di sana . Atur profil bash-bob hanya mengizinkan penulisan ke direktori home mereka dan /tmp
, dan kesalahan izin tersebut tidak dapat ditingkatkan. Bahkan jika mereka entah bagaimana menemukan kata sandi root, profil AppArmor untuk /bin/bash-bob
akan tetap berlaku bahkan setelah mereka su
bangun su
dan bash
proses yang ditimbulkannya adalah anak-anak /bin/bash-bob
.
Bagian yang sulit adalah membangun profil AppArmor itu.
Menurut pendapat saya, Anda hanya perlu langkah 2 dan 3, karena dalam kombinasi keduanya mencegah kemampuan untuk melakukan sesuatu yang berbahaya di luar kotak yang dibangun dengan hati-hati yang Anda siapkan di kedua langkah itu.
Nah, Anda dapat mengatur shell pengguna ke program yang Anda tulis yang hanya memungkinkan mereka menjalankan skrip shell tertentu.
Tentu saja ini hanya akan seaman program dan skrip shell; dalam praktiknya, shell terbatas semacam ini biasanya tidak aman terhadap penyerang pintar.
Jika Anda ingin pengguna hanya dapat menjalankan skrip / binari tertentu, Anda dapat menggunakan shell terbatas . Ini (seperti yang disebutkan dalam artikel Wikipedia) tidak sepenuhnya aman, tetapi jika Anda dapat menjamin bahwa tidak ada aplikasi yang diizinkan untuk menjalankan dapat mengeksekusi shell baru maka itu adalah alternatif yang baik.
Untuk mengatur shell yang dibatasi pengguna, atur /bin/rbash
(atau yang serupa, kebanyakan shell memasuki mode terbatas ketika biner bernama r *** *) sebagai shell pengguna. Kemudian, edit **. Bashrc (atau yang setara) dan atur $PATH
ke direktori tempat semua binari / skrip yang diizinkan disimpan.
Ya, itu mungkin, tetapi dalam praktiknya akan membutuhkan banyak pekerjaan dan perencanaan. Anda dapat membuat skrip dan menjalankannya sebagai penggunaan khusus, lalu hapus semua hak istimewa dari pengguna yang dimaksud. Atau, Anda dapat mengatur shell pengguna ke sesuatu buatan Anda sendiri yang memungkinkan mereka melakukan apa yang Anda izinkan secara eksplisit.
Namun, izin standar di linux membuatnya hampir mustahil bagi pengguna normal untuk "membahayakan sistem". Jenis kerusakan apa yang Anda coba cegah? Ini sepele untuk mencegah pengguna menginstal perangkat lunak atau menjalankan program di luar direktori home mereka, dan Anda dapat menggunakan chroot untuk mengunci sistem lebih jauh.
Anda mungkin ingin mencoba [lshell] [1] (shell terbatas).
lshell adalah shell yang dikodekan dalam Python, yang memungkinkan Anda membatasi lingkungan pengguna ke set perintah terbatas, memilih untuk mengaktifkan / menonaktifkan perintah apa pun di atas SSH (mis. SCP, SFTP, rsync, dll.), mencatat perintah pengguna, mengimplementasikan pembatasan waktu, dan lainnya.
[1]: http://lshell.ghantoos.org/Overview lshell
Cara saya biasanya menerapkan pembatasan semacam ini mengharuskan beberapa kondisi terpenuhi, jika tidak, pembatasan dapat dengan mudah dielakkan:
wheel
grup, satu-satunya yang diizinkan untuk menggunakan su
(diberlakukan melalui PAM).Pengguna diberikan pengamanan yang benar rbash
dengan read-only yang PATH
menunjuk ke pribadi ~/bin
, ~/bin/
direktori ini berisi tautan ke utilitas sederhana:
$ ll ~/bin
total 0
lrwxrwxrwx. 1 root dawud 14 Sep 17 08:58 clear -> /usr/bin/clear*
lrwxrwxrwx. 1 root dawud 7 Sep 17 08:58 df -> /bin/df*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 egrep -> /bin/egrep*
lrwxrwxrwx. 1 root dawud 8 Sep 17 08:58 env -> /bin/env*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 fgrep -> /bin/fgrep*
lrwxrwxrwx. 1 root dawud 9 Sep 17 08:58 grep -> /bin/grep*
lrwxrwxrwx. 1 root dawud 10 Sep 17 08:58 rview -> /bin/rview*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 rvim -> /usr/bin/rvim*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 sudo -> /usr/bin/sudo*
lrwxrwxrwx. 1 root dawud 17 Sep 17 08:58 sudoedit -> /usr/bin/sudoedit*
lrwxrwxrwx. 1 root dawud 13 Sep 17 08:58 tail -> /usr/bin/tail*
lrwxrwxrwx. 1 root dawud 11 Sep 17 08:58 wc -> /usr/bin/wc*
pengguna diberikan terbatas, read-only lingkungan (memikirkan hal-hal seperti LESSSECURE
, TMOUT
, HISTFILE
variabel).
staff_u
dan diberikan hak untuk mengeksekusi perintah sebagai pengguna lain sebagaimana disyaratkan melalui sudo
.pengguna /home
, /tmp
dan mungkin /var/tmp
dipolisi melalui /etc/security/namespace.conf
:
/tmp /tmp/.inst/tmp.inst-$USER- tmpdir:create root
/var/tmp /tmp/.inst/var-tmp.inst-$USER- tmpdir:create root
$HOME $HOME/$USER.inst/ tmpdir:create root
Juga, /etc/security/namespace.init
buat semua file kerangka hanya dibaca untuk pengguna dan dimiliki oleh root
.
Dengan cara ini Anda dapat memilih apakah $USER
dapat menjalankan perintah apa pun atas namanya sendiri (melalui tautan di ~/bin
direktori pribadi , disediakan melalui /etc/skel
, sebagaimana dijelaskan di atas), atas nama pengguna lain (via sudo
) atau tidak sama sekali.