/etc/apparmor.d/
dan mereka berisi daftar aturan kontrol akses pada sumber daya yang dapat digunakan oleh masing-masing program. Profil dikompail dan dimuat ke kernel dengan perintah apparmor_parser
. Setiap profil dapat dimuat dalam mode pemaksaan atau komplain. Yang pertama memberlakukan kebijakan dan melaporkan upaya pelanggaran, sementara yang kedua tidak menegakkan kebijakan tapi masih mencatat log panggilan sistem yang mestinya ditolak.
apt install apparmor apparmor-profiles apparmor-profiles-extra apparmor-utils
with root privileges.
aa-status
akan mengkonfirmasi dengan cepat:
#
aa-status
apparmor module is loaded. 40 profiles are loaded. 18 profiles are in enforce mode. /usr/bin/man [..] 22 profiles are in complain mode. [..] dnsmasq [..] 0 profiles are in kill mode. 0 profiles are in unconfined mode. 1 processes have profiles defined. 1 processes are in enforce mode. /usr/sbin/dhclient (473) /{,usr/}sbin/dhclient 0 processes are in complain mode. 0 processes are unconfined but have a profile defined. 0 processes are in mixed mode. 0 processes are in kill mode.
aa-enforce
dan aa-complain
yang memberikan sebagai parameter berupa path executable atau path ke berkas kebijakan. Sebagai tambahan profil dapat dinonaktifkan sepenuhnya dengan aa-disable
atau dimasukkan ke dalam modus audit (untuk mencatat log panggilan sistem yang diterima juga) dengan aa-audit
.
#
aa-enforce /usr/bin/pidgin
Setting /usr/bin/pidgin to enforce mode.
#
aa-complain /usr/sbin/dnsmasq
Setting /usr/sbin/dnsmasq to complain mode.
aa-unconfined
untuk menampilkan daftar program yang tidak memiliki profil terkait dan yang mengekspos soket jaringan terbuka. Dengan pilihan --paranoid
Anda mendapatkan semua proses yang tak dibatasi yang memiliki setidaknya satu koneksi jaringan yang aktif.
#
aa-unconfined
473 /usr/sbin/dhclient confined by '/{,usr/}sbin/dhclient (enforce)' 521 /usr/sbin/sshd (sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups) not confined 1206 /usr/sbin/squid not confined 9931 /usr/bin/containerd not confined 11171 /usr/sbin/exim4 not confined
/sbin/dhclient
(sudah ada profil yang dikirimkan oleh apparmor-profiles, sehingga Anda dapat membandingkan hasil Anda dengan yang resmi). Untuk ini kami akan menggunakan aa-genprof dhclient
. Ini akan mengundang Anda untuk menggunakan aplikasi di jendela lain dan ketika selesai untuk kembali ke aa-genprof
untuk memindai peristiwa AppArmor di log sistem dan mengubah log tersebut menjadi aturan akses. Untuk setiap peristiwa yang dicatat, ini akan membuat satu atau beberapa saran aturan yang dapat Anda setujui atau sunting lebih lanjut dengan beberapa cara:
#
aa-genprof dhclient
Updating AppArmor profiles in /etc/apparmor.d. Writing updated profile for /usr/sbin/dhclient. Setting /usr/sbin/dhclient to complain mode. Before you begin, you may wish to check if a profile already exists for the application you wish to confine. See the following wiki page for more information: https://gitlab.com/apparmor/apparmor/wikis/Profiles Profiling: /usr/sbin/dhclient Please start the application to be profiled in another window and exercise its functionality now. Once completed, select the "Scan" option below in order to scan the system logs for AppArmor events. For each AppArmor event, you will be given the opportunity to choose whether the access should be allowed or denied. [(S)can system log for AppArmor events] / (F)inish
S
Reading log entries from /var/log/syslog. Profile: /usr/sbin/dhclient Execute: /usr/sbin/dhclient-script Severity: unknown (I)nherit / (C)hild / (P)rofile / (N)amed / (U)nconfined / (X) ix On / (D)eny / Abo(r)t / (F)inishP
Should AppArmor sanitise the environment when switching profiles? Sanitising environment is more secure, but some applications depend on the presence of LD_PRELOAD or LD_LIBRARY_PATH. [(Y)es] / (N)oY
Writing updated profile for /usr/sbin/dhclient-script. WARNING: Ignoring exec event in /usr/sbin/dhclient//null-/usr/sbin/dhclient-script//null-/usr/bin/systemctl, nested profiles are not supported yet. Complain-mode changes: Profile: /usr/sbin/dhclient Capability: net_raw Severity: 8 [1 - capability net_raw,] (A)llow / [(D)eny] / (I)gnore / Audi(t) / Abo(r)t / (F)inishA
Adding capability net_raw, to profile. Profile: /usr/sbin/dhclient Capability: net_bind_service Severity: 8 [1 - include <abstractions/nis>] 2 - capability net_bind_service, (A)llow / [(D)eny] / (I)gnore / Audi(t) / Abo(r)t / (F)inishA
Adding include <abstractions/nis> to profile. Profile: /usr/sbin/dhclient Path: /etc/dhcp/dhclient.conf New Mode: owner r Severity: unknown [1 - owner /etc/dhcp/dhclient.conf r,] (A)llow / [(D)eny] / (I)gnore / (G)lob / Glob with (E)xtension / (N)ew / Audi(t) / (O)wner permissions off / Abo(r)t / (F)inishA
Adding owner /etc/dhcp/dhclient.conf r, to profile. Profile: /usr/sbin/dhclient Path: /var/lib/dhcp/dhclient.leases New Mode: owner rw Severity: unknown [1 - owner /var/lib/dhcp/dhclient.leases rw,] (A)llow / [(D)eny] / (I)gnore / (G)lob / Glob with (E)xtension / (N)ew / Audi(t) / (O)wner permissions off / Abo(r)t / (F)inishA
Adding owner /var/lib/dhcp/dhclient.leases rw, to profile. [..] Profile: /usr/sbin/dhclient-script Path: /usr/bin/dash New Mode: owner r Severity: unknown [1 - include <abstractions/gvfs-open>] 2 - include <abstractions/ubuntu-browsers.d/plugins-common> 3 - include <abstractions/xdg-open> 4 - owner /usr/bin/dash r, (A)llow / [(D)eny] / (I)gnore / (G)lob / Glob with (E)xtension / (N)ew / Audi(t) / (O)wner permissions off / Abo(r)t / (F)inish2
Profile: /usr/sbin/dhclient-script Path: /usr/bin/dash New Mode: owner r Severity: unknown 1 - include <abstractions/gvfs-open> [2 - include <abstractions/ubuntu-browsers.d/plugins-common>] 3 - include <abstractions/xdg-open> 4 - owner /usr/bin/dash r, (A)llow / [(D)eny] / (I)gnore / (G)lob / Glob with (E)xtension / (N)ew / Audi(t) / (O)wner permissions off / Abo(r)t / (F)inishA
Adding include <abstractions/ubuntu-browsers.d/plugins-common> to profile. [..] Enforce-mode changes: = Changed Local Profiles = The following local profiles were changed. Would you like to save them? [1 - /usr/sbin/dhclient] 2 - /usr/sbin/dhclient-script (S)ave Changes / Save Selec(t)ed Profile / [(V)iew Changes] / View Changes b/w (C)lean profiles / Abo(r)tS
Writing updated profile for /usr/sbin/dhclient. Writing updated profile for /usr/sbin/dhclient-script. Profiling: /usr/sbin/dhclient Please start the application to be profiled in another window and exercise its functionality now. Once completed, select the "Scan" option below in order to scan the system logs for AppArmor events. For each AppArmor event, you will be given the opportunity to choose whether the access should be allowed or denied. [(S)can system log for AppArmor events] / (F)inishF
Setting /usr/sbin/dhclient to enforce mode. Setting /usr/sbin/dhclient-script to enforce mode. Reloaded AppArmor profiles in enforce mode. Please consider contributing your new profile! See the following wiki page for more information: https://gitlab.com/apparmor/apparmor/wikis/Profiles Finished generating profile for /usr/sbin/dhclient.
Kejadian pertama yang terdeteksi adalah eksekusi program lain. Dalam hal ini, Anda memiliki beberapa pilihan: Anda dapat menjalankan program dengan profil proses induk (pilihan "Mewarisi"), Anda dapat menjalankannya sendiri dengan profil khusus (pilihan "Profile" dan "Named", hanya berbeda pada kemungkinan untuk menggunakan nama profil sebarang), Anda dapat menjalankannya dengan profil sub proses induk (pilihan "Child"), Anda dapat menjalankannya tanpa profil (pilihan "Unconfined"), atau Anda dapat memutuskan untuk tidak menjalankannya sama sekali (pilihan "Deny").
Perhatikan bahwa ketika Anda memilih untuk menjalankannya di bawah profil berdedikasi yang belum ada, alat akan membuat profil yang kurang untuk Anda dan akan membuat saran aturan untuk profil itu pada eksekusi yang sama.
| |
Di tingkat kernel, kekuatan khusus pengguna root telah dibagi dalam "capabilities". Ketika panggilan sistem membutuhkan kemampuan tertentu, AppArmor akan memverifikasi apakah profil mengizinkan program untuk memanfaatkan kemampuan ini.
| |
Here the program seeks read permissions for its configuration file /etc/dhcp/dhclient.conf .
| |
Here the program seeks read and write permissions to write the lease into /var/lib/dhcp/dhclient.leases .
| |
Perhatikan bahwa permintaan akses ini bukan merupakan bagian dari profil dhclient tetapi dari profil baru yang kita buat ketika kita mengizinkan /usr/sbin/dhclient-script untuk berjalan dengan profilnya sendiri.
aa-genprof detected that this permission was also granted by multiple “abstractions” and offers them as alternative choices. An abstraction provides a reusable set of access rules grouping together multiple resources that are commonly used together. In this specific case, we opted for selection “2” to first select the “#include <abstractions/ubuntu-browsers.d/plugins-common>” choice and then “A” to allow it.
Setelah setelah melihat semua peristiwa yang dilog, program ini menawarkan untuk menyimpan semua profil yang diciptakan selama berjalan. Dalam kasus ini, kita memiliki dua profil yang kami simpan sekaligus dengan "Save" (tapi Anda dapat menyimpan mereka secara individual juga) sebelum meninggalkan program dengan "Finish".
|
aa-genprof
sebenarnya hanya pembungkus cerdas untuk aa-logprof
: itu menciptakan profil kosong, memuatnya dalam mode komplain dan kemudian menjalankan aa-logprof
yang merupakan alat untuk memperbarui profil berdasarkan pelanggaran profil yang telah dicatat. Jadi Anda dapat kembali menjalankan alat tersebut kemudian untuk meningkatkan profil yang baru Anda buat.
/etc/apparmor.d/usr.sbin.dhclient
yang dekat dengan profil yang dikirim oleh apparmor-profiles di /usr/share/apparmor/extra-profiles/sbin.dhclient
.
/etc/apparmor.d/usr.sbin.dhclient-script
mungkin mirip dengan /usr/share/apparmor/extra-profiles/sbin.dhclient
, yang dikirim dalam apparmor-profiles juga.