Apa itu apparmor?

93

Saya mendengar banyak pembicaraan tentang apparmor, saya ingin tahu yang berikut:

  • Apa itu apparmor?
  • Bagaimana cara kerja apparmor?
Alvar
sumber

Jawaban:

92

Apa itu

Apparmor adalah sistem Kontrol Akses Wajib (atau MAC). Ia menggunakan peningkatan kernel LSM untuk membatasi program untuk sumber daya tertentu. AppArmor melakukan ini dengan profil dimuat ke dalam kernel ketika sistem dimulai. Apparmor memiliki dua jenis mode profil, penegakan dan keluhan. Profil dalam mode penegakan menegakkan aturan profil dan melaporkan upaya pelanggaran di syslogatau auditd. Profil dalam mode pengaduan tidak memberlakukan aturan profil apa pun, cukup catat upaya pelanggaran.

Di Ubuntu Apparmor diinstal secara default. Ini membatasi aplikasi ke profil untuk menentukan file dan izin apa yang perlu diakses oleh suatu program. Beberapa aplikasi akan datang dengan propertinya sendiri dan lebih banyak lagi dapat ditemukan dalam apparmor-profilespaket.

Anda dapat menginstal apparmor-profilesdengan menjalankan sudo apt-get install apparmor-profiles.

Saya menemukan contoh Apparmor di forum Ubuntu yang saya tulis ulang untuk posting ini.

Apparmor adalah kerangka kerja keamanan yang mencegah aplikasi dari mengubah kejahatan. Sebagai contoh: Jika saya menjalankan Firefox dan mengunjungi situs yang buruk yang mencoba menginstal malware yang akan menghapus homefolder saya , Apparmor memiliki batasan pada Firefox meskipun mencegahnya melakukan apa pun yang tidak saya inginkan (seperti mengakses musik, dokumen, dll). Dengan cara ini bahkan jika aplikasi Anda dikompromikan, tidak ada salahnya dapat dilakukan.

Bagaimana itu bekerja

The apparmor-utilspaket berisi alat baris perintah untuk mengkonfigurasi AppArmor. Dengan menggunakannya Anda dapat mengubah mode eksekusi Apparmor, menemukan status profil, membuat profil baru, dll.

Ini adalah perintah yang paling umum:

Catatan: Profil disimpan di/etc/apparmor.d/

  • Anda dapat memeriksa status Apparmor dengan sudo apparmor_status. Anda akan mendapatkan daftar semua profil * dimuat, semua profil dalam mode menegakkan, semua profil dalam mode komplain, proses apa yang didefinisikan dalam menegakkan / mengeluh, dll.
  • Untuk menempatkan profil dalam mode keluhan yang Anda gunakan sudo aa-complain /path/to/bin, di mana folder /path/to/binprogram bin. Misalnya, menjalankan: sudo aa-complain /usr/bin/firefoxakan membuat Firefox dalam mode keluhan.
  • Anda menggunakan sudo aa-enforce /path/to/binuntuk menegakkan profil program.
  • Anda dapat memuat semua profil ke mode keluhan / menegakkan dengan sudo aa-complain /etc/apparmor.d/*dan sudo aa-enforce.d/*masing - masing.

Untuk memuat profil ke dalam kernel yang akan Anda gunakan apparmor_parser. Anda dapat memuat ulang profil menggunakan -rparameter.

  • Untuk memuat penggunaan profil: cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a,, yang secara efektif mencetak konten profile.nameke parser Apparmor.
  • Untuk memuat ulang profil, Anda menggunakan -rparameter, seperti:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • Untuk memuat ulang semua profil Apparmor, gunakan: sudo service apparmor reload

Untuk menonaktifkan profil Anda menghubungkan ke /etc/apparmor.d/disable/menggunakan lnseperti ini: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/kemudian jalankan: sudo apparmor_parser -R /etc/apparmor.d/profile.name.

Catatan: Jangan bingungapparmor_parser -rdenganapparmor_parser -R MEREKA BUKANLAH HAL YANG SAMA!

  • Untuk mengaktifkan kembali profil, hapus tautan simbolis ke dalam /etc/apparmor.d/disable/lalu muat menggunakan -aparameter.sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • Anda dapat menonaktifkan Apparmor dengan sudo service apparmor stopdan menghapus modul kernel menggunakansudo update-rc.d -f apparmor defaults
  • Mulai Apparmor dengan sudo service apparmor startdan muat modul kernel dengansudo update-rc.d apparmor defaults

Profil

Profil disimpan dalam /etc/apparmor.d/dan diberi nama setelah path lengkap ke profil yang dapat dieksekusi, menggantikan '/' dengan '.'. Misalnya /etc/apparmor.d/bin.pingadalah profil untuk pingdi /bin.

Ada dua jenis entri utama yang digunakan dalam profil:

  1. Entri Path menentukan file apa yang dapat diakses aplikasi.

  2. Entri kemampuan menentukan hak istimewa apa yang dapat digunakan oleh proses.

Mari kita lihat profil untuk ping, terletak di etc/apparmor.d/bin.ping, sebagai contoh.

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}  

#include <tunables/global>Termasuk file globaldalam direktori tunables, ini memungkinkan pernyataan yang berkaitan dengan beberapa aplikasi untuk ditempatkan di file umum.

/bin/ping flags=(complain)menetapkan jalur ke program yang diprofilkan dan mengatur mode untuk mengeluh.

capability net_rawmemungkinkan akses aplikasi ke CAP_NET_RAW Posix.1ekapabilitas.

/bin/ping mixr memungkinkan aplikasi membaca dan mengeksekusi akses ke file.

/etc/modules.conf r,The rmemberikan aplikasi membaca hak istimewa untuk/etc/modules.conf

Catatan: Setelah membuat / mengedit profil, Anda perlu memuat ulang profil agar perubahan diterapkan.

Berikut adalah daftar izin yang dapat Anda gunakan:

  • r - Baca
  • w - menulis
  • ux - Jalankan Unconstrained
  • Ux - Eksekusi Tanpa Batas - gosok lingkungan
  • px - Eksekusi profil diskrit
  • Px - Eksekusi profil diskrit - gosok lingkungan
  • ix - Mewarisi eksekusi
  • m - memungkinkan PROT_EXECdengan mmap(2)panggilan
  • l - tautan

Sumber

Seth
sumber
Jadi ini seperti program yang bertindak sebagai pengguna, dan tidak memiliki izin untuk memodifikasi sebagian besar file pada sistem?
Izkata
Iya dan tidak. Anda mengatur profil yang menentukan apa yang dapat dilakukan aplikasi tertentu. Anda kemudian menambahkan program ke profil itu dan yang membatasi apa yang boleh dilakukan oleh program dalam profil itu. Jadi itu seperti pengguna karena mereka hanya dapat mengakses apa yang admin (Anda) katakan bisa di profil.
Seth
Ah, jadi profil seperti grup pengguna untuk program;)
Izkata
Ya banyak seperti itu;)
Seth
Apakah Anda pikir, apparmor dapat digunakan untuk memblokir setiap koneksi internet dan mengatakan siapa yang mencoba mengaksesnya? dan berdasarkan log itu kami membuat izin untuk setiap aplikasi? idenya adalah untuk membuatnya bekerja seperti Zonalarm di jendela $, dan seperti "firewall per aplikasi" lama di linux seperti LeopardFlower dan ProgramGuard (ini sepertinya tidak dapat dikompilasi lagi saya pikir), dan ada juga yang baru bernama Douane dan menggunakan modul kernel untuk membuat semuanya berfungsi.
Aquarius Power
6

AppArmor adalah sistem Kontrol Akses Wajib (MAC) yang merupakan peningkatan kernel (LSM) untuk membatasi program pada sumber daya terbatas. Model keamanan AppArmor adalah untuk mengikat atribut kontrol akses ke program dan bukan kepada pengguna. Pengurungan AppArmor disediakan melalui profil yang dimuat ke dalam kernel, biasanya saat boot. Profil AppArmor dapat dalam satu dari dua mode: penegakan dan pengaduan. Profil yang dimuat dalam mode penegakan akan menghasilkan penegakan kebijakan yang ditentukan dalam profil serta melaporkan upaya pelanggaran kebijakan (baik melalui syslog atau auditd). Profil dalam mode keluhan tidak akan memberlakukan kebijakan tetapi melaporkan upaya pelanggaran kebijakan.

AppArmor berbeda dari beberapa sistem MAC lain di Linux karena ia berbasis jalur, memungkinkan untuk menggabungkan profil mode penegakan dan keluhan, penggunaan termasuk file untuk memudahkan pengembangan dan memiliki penghalang yang jauh lebih rendah untuk masuk daripada sistem MAC populer lainnya.

AppArmor adalah teknologi mapan pertama kali terlihat di Immunix, dan kemudian diintegrasikan ke Ubuntu, Novell / SUSE, dan Mandriva. Fungsionalitas Inti AppArmor ada di kernel Linux utama dari 2.6.36 dan seterusnya; pekerjaan sedang dilakukan oleh AppArmor, Ubuntu dan pengembang lainnya untuk menggabungkan fungsionalitas AppArmor tambahan ke dalam kernel mainline.

Saya mendapat beberapa Tautan yang lebih membantu untuk Anda: Wiki.Ubuntu.com Ubuntuforums.org

Panduan Apparmor untuk Ubuntu 12.04 & Ubuntu 12.10

Semoga itu bisa membantu Anda.

rɑːdʒɑ
sumber
3

Berikut ini kutipan dari wiki Apparmor :

AppArmor adalah sistem keamanan aplikasi Linux yang efektif dan mudah digunakan. AppArmor secara proaktif melindungi sistem operasi dan aplikasi dari ancaman eksternal atau internal, bahkan serangan zero-day, dengan menegakkan perilaku yang baik dan mencegah bahkan kekurangan aplikasi yang tidak diketahui untuk dieksploitasi. Kebijakan keamanan AppArmor sepenuhnya menentukan sumber daya sistem apa yang dapat diakses oleh setiap aplikasi, dan dengan hak istimewa apa. Sejumlah kebijakan default disertakan dengan AppArmor, dan menggunakan kombinasi analisis statis lanjutan dan alat berbasis pembelajaran, kebijakan AppArmor untuk aplikasi yang sangat kompleks dapat digunakan dengan sukses dalam hitungan jam.

Adeline Dale
sumber