GNU/Linux >> Belajar Linux >  >> Linux

Bukankah sistem Ubuntu meminta kata sandi saya dapat dipalsukan?

Poin Anda semuanya bagus, dan Anda benar, tetapi sebelum kami marah karenanya, kami perlu mengingatkan diri sendiri tentang cara kerja model keamanan linux dan apa yang dirancang untuk dilindunginya.

Ingatlah bahwa model keamanan Linux dirancang dengan mempertimbangkan terminal multi-pengguna saja atau server SSH. Windows dirancang dengan mempertimbangkan workstation pengguna akhir (tetapi saya pernah mendengar bahwa generasi terbaru Windows lebih ramah terminal). Secara khusus, konvensi Linux melakukan pekerjaan yang lebih baik dari aplikasi kotak pasir ke pengguna, sementara di Windows apa pun yang penting berjalan sebagai Sistem, sementara GUI Linux (Server X) payah dalam keamanan, dan GUI Windows memiliki hal-hal mewah seperti built-in UAC. Pada dasarnya, Linux adalah (dan selalu menjadi) server terlebih dahulu dan workstation kedua, sedangkan Windows sebaliknya.

Model Keamanan

Sejauh menyangkut "OS" (yaitu kernel), Anda memiliki 7 konsol tty dan sejumlah koneksi SSH (alias "sesi login") - kebetulan ubuntu dikirimkan dengan skrip untuk memulai GUI secara otomatis tty7 sesi, tetapi untuk kernel itu hanyalah aplikasi lain.

Sesi login dan akun pengguna di-sandbox dengan cukup baik satu sama lain, tetapi Linux menerapkan pola pikir keamanan bahwa Anda tidak perlu melindungi pengguna dari diri mereka sendiri. Dalam model keamanan ini, jika akun Anda disusupi oleh perangkat lunak perusak, itu akan hilang, tetapi kami tetap ingin mengisolasinya dari akun lain untuk melindungi sistem secara keseluruhan.

Misalnya, aplikasi Linux cenderung membuat pengguna dengan hak istimewa rendah seperti apache atau ftp bahwa mereka berjalan seolah-olah tidak perlu melakukan hal-hal yang mendasar. Jika penyerang berhasil mengendalikan apache yang sedang berjalan proses, itu dapat merusak apache lainnya proses, tetapi akan mengalami masalah saat melompat ke ftp proses.

Perhatikan bahwa Windows mengambil pendekatan yang berbeda secara mendasar di sini, sebagian besar melalui konvensi bahwa semua hal penting dijalankan sebagai Sistem sepanjang waktu. Layanan jahat di Linux memiliki cakupan yang lebih kecil untuk melakukan hal buruk daripada proses jahat yang berjalan sebagai Sistem, jadi butuh Windows untuk melakukan upaya ekstra untuk melindungi seseorang dengan hak admin dari "mereka sendiri".

Lingkungan GUI dan Server X yang tidak dirancang untuk keamanan membuat kunci pas ke dalam model keamanan ini.

Gnome gksudo vs Windows UAC, dan keylogger

Di Windows, ketika proses pengguna meminta eskalasi hak istimewa, kernel menampilkan prompt yang dilindungi khusus yang memori dan bus keyboard / mouse diisolasi dari lingkungan desktop lainnya. Itu bisa melakukan ini karena GUI sudah terpasang di OS. Di Linux, GUI (server X) hanyalah aplikasi lain, dan oleh karena itu permintaan kata sandi termasuk dalam proses yang memanggilnya, berjalan seperti Anda, berbagi izin memori dan bus input dengan setiap jendela lain dan proses berjalan seperti Anda.

Prompt root tidak dapat melakukan hal-hal UAC yang mewah seperti mengunci keyboard karena keduanya harus sudah di-root, atau memerlukan desain ulang server X sepenuhnya (lihat Wayland di bawah). Tangkapan-22 yang dalam hal ini merupakan kelemahan memisahkan GUI dari kernel. Tapi setidaknya itu sesuai dengan model keamanan Linux.

Jika kami merevisi model keamanan untuk menekan ini dengan menambahkan kotak pasir antara permintaan kata sandi dan proses lain yang berjalan sebagai pengguna dalam sesi GUI yang sama, kami harus menulis ulang banyak hal. Paling tidak, kernel perlu menyadari GUI sedemikian rupa sehingga mampu membuat prompt (tidak benar hari ini). Contoh masuk lainnya adalah bahwa semua proses dalam sesi GUI berbagi bus keyboard.

Lihat saya menulis keylogger lalu tekan beberapa tombol di jendela lain :

➜  ~ xinput list  
⎡ Virtual core pointer                      id=2    [master pointer (3)]
⎜   ↳ Virtual core XTEST pointer            id=4    [slave  pointer  (2)]
⎜   ↳ Logitech K400 Plus                    id=9    [slave  pointer  (2)]
⎜   ↳ ETPS/2 Elantech Touchpad              id=13   [slave  pointer  (2)]
➜  ~ xinput test 9
key release 36 
key press   44 
hkey release 44 
key press   40 
ekey release 40 
key press   33 
lkey release 33 
key press   33 
lkey press   39 
okey release 33 
key release 39 
key press   66 
key press   31

Proses apa pun yang berjalan karena Anda dapat mengendus kata sandi di prompt atau terminal proses lain dan kemudian memanggil sudo sendiri (ini mengikuti langsung dari pola pikir "tidak perlu melindungi Anda dari Anda"), sehingga meningkatkan keamanan permintaan kata sandi tidak berguna kecuali kami secara mendasar mengubah model keamanan dan melakukan penulisan ulang besar-besaran untuk segala macam hal.

(perlu dicatat bahwa Gnome tampaknya setidaknya mem-sandbox bus keyboard di layar kunci dan sesi baru melalui "Ganti Pengguna" karena hal-hal yang diketik di sana tidak muncul di bus keyboard sesi saya)

Wayland

Wayland adalah protokol baru yang bertujuan untuk menggantikan X11. Itu mengunci aplikasi klien sehingga mereka tidak dapat mencuri informasi atau memengaruhi apa pun di luar jendela mereka. Satu-satunya cara klien dapat berkomunikasi satu sama lain di luar IPC eksternal adalah melalui kompositor yang mengontrol semuanya. Namun, ini tidak memperbaiki masalah mendasar, dan hanya mengalihkan kebutuhan akan kepercayaan ke penyusun.

Virtualisasi dan Kontainer

Jika Anda bekerja dengan teknologi cloud, Anda mungkin melompat-lompat mengatakan "Docker adalah jawabannya!!". Memang, poin brownies untuk Anda. Meskipun Docker sendiri sebenarnya tidak dimaksudkan untuk meningkatkan keamanan (terima kasih @SvenSlootweg), Docker menunjuk pada penggunaan containerisasi dan/atau virtualisasi sebagai penerusan yang kompatibel dengan arsitektur Linux saat ini.

Dua distribusi linux terkemuka yang dibuat dengan mempertimbangkan isolasi antar-proses:

Qubes OS yang menjalankan aplikasi tingkat pengguna di dalam beberapa VM yang dipisahkan menjadi "domain keamanan" seperti pekerjaan, perbankan, penjelajahan web.

Android yang menginstal dan menjalankan setiap aplikasi sebagai pengguna dengan hak istimewa rendah yang terpisah, sehingga memperoleh isolasi tingkat proses dan isolasi sistem file (setiap aplikasi dibatasi pada direktori utamanya sendiri) di antara aplikasi.

Intinya: Dari sudut pandang pengguna akhir, tidak masuk akal untuk mengharapkan Linux berperilaku sama seperti Windows, tetapi ini adalah salah satu kasus di mana Anda perlu memahami sedikit tentang cara kerja sistem yang mendasarinya dan mengapa dirancang seperti itu. . Hanya dengan mengubah penerapan permintaan kata sandi tidak akan menghasilkan apa-apa selama itu dimiliki oleh proses yang Anda miliki. Agar Linux mendapatkan perilaku keamanan yang sama seperti Windows dalam konteks workstation GUI pengguna tunggal akan memerlukan desain ulang OS yang signifikan, sehingga tidak mungkin terjadi, tetapi hal-hal seperti Docker dapat memberikan jalan ke depan di Linux yang lebih cara asli.

Dalam hal ini, perbedaan penting adalah bahwa Linux dirancang pada level rendah untuk menjadi server multi-pengguna dan mereka membuat keputusan untuk tidak melindungi pengguna dari dirinya sendiri, sementara Windows dirancang untuk menjadi workstation pengguna tunggal, jadi Anda perlu memiliki perlindungan antar-proses dalam sesi login. Juga relevan bahwa di Windows, GUI adalah bagian dari OS, sedangkan di Linux, GUI hanyalah aplikasi tingkat pengguna lainnya.


Apakah ada mekanisme keamanan di Linux secara umum atau Ubuntu secara khusus yang mencegah aplikasi apa pun menampilkan dialog yang terlihat identik dengan dialog sistem, menanyakan kata sandi saya?

Jawaban cepat:Tidak.

Dari sudut pandang pengguna, tidak ada jaminan bahwa prompt berasal dari sistem operasi; itu bisa berupa program jahat apa pun yang hanya memiliki izin terbatas untuk menampilkan jendela, dan dengan meminta kata sandi saya, akan mendapatkan akses tak terbatas ke seluruh mesin.

Jika program jahat ada di komputer, tidak masalah program apa yang menampilkan dialog.
Jika itu adalah program jahat, seperti yang dijelaskan dalam kalimat berikutnya, itu bahkan tidak perlu menampilkan dialog kepada Anda. Jika itu adalah program yang sah, program jahat dapat "menonton" jendela dan apa yang Anda ketikkan di sana, di lingkungan server X (terminal lebih baik).

Larutan?

Jika Anda memiliki alasan untuk meyakini bahwa beberapa program tidak dapat dipercaya, kotak pasir (VM atau yang lebih kecil).

Selain itu, tidak meminta kata sandi . Dialog itu adalah kenyamanan bagi pengguna non-teknis. Jika Anda mengkhawatirkan keamanan, atau admin organisasi atau yang serupa, sama sekali tidak perlu menampilkan kueri kata sandi GUI. Konfigurasikan izin akun pengguna non-root dengan benar (ya atau tidak, tetapi tidak bertanya), dan jangan gunakan desktop sebagai root (karena itu, dan karena tergoda untuk menggunakan root lebih sering dari yang diperlukan).

Dengan meminta kata sandi pengguna secara teratur, sistem mengajari pengguna bahwa memberikan kata sandi sistemnya setiap kali beberapa aplikasi memintanya adalah hal yang wajar untuk dilakukan.

Seperti yang dijelaskan, jangan tanya mereka. Sebagai admin, pengguna "Anda" seharusnya memiliki izin yang jelas.

Dan, tentang pembaruan otomatis sebagai admin organisasi:Apakah Anda gila :) Serius, jangan biarkan banyak klien Ubuntu memperbarui hal-hal randon secara acak. Bagaimana dengan gambar pusat yang dikelola dan diuji oleh Anda dan kemudian diluncurkan; atau ke arah lain hal-hal seperti Ansible?
Sepenuhnya independen dari keamanan, pembaruan dapat merusak banyak hal. Itu sebabnya.


Ya. Ini tidak aman!

Saya pribadi selalu Membatalkan dialog itu. Bukan karena bisa jadi palsu, tapi karena bisa jadi asli.

Saya seharusnya memberikan hak istimewa yang ditingkatkan untuk "aplikasi" hanya karena diminta? Tidak, saya rasa tidak.

Pembaruan sistem baik-baik saja, saya melakukannya secara manual, tetapi saya merasa terganggu karena sistem pelaporan kesalahan memerlukan ini. Desain yang buruk.


Linux
  1. Buttercup – Pengelola Kata Sandi Modern untuk Linux

  2. Langkah-langkah keamanan lanjutan untuk Linux

  3. Kursus Ubuntu 4 Jam GRATIS untuk Pemula

  1. 10 IPTV Terbaik untuk Sistem Linux/Ubuntu pada tahun 2022

  2. 7-Zip untuk Linux

  3. Haruskah saya mendapatkan antivirus untuk Ubuntu?

  1. Distribusi Linux Populer untuk Pengujian Keamanan

  2. Apa Itu Linux? Panduan untuk Pengguna Non-teknis

  3. Pelatihan dan sertifikasi untuk administrator sistem Linux