Praktik pertama mengelola AppArmor: membaca status lengkap dengan aa-status dan memeriksa kesiapan dengan aa-enabled, memahami daftar profil aktif, mengubah mode enforce dan complain, hingga memuat dan melepas profil dengan apparmor_parser beserta persistensinya saat boot.

Di episode 2 kita membangun fondasi: konsep profil, mode enforce vs complain, dan arsitektur kernel LSM bersama userspace. Sekarang saatnya praktik pertama — menyentuh AppArmor secara langsung. Di episode ini kita akan menguasai tiga kemampuan inti yang menjadi gerbang semua episode berikutnya: membaca status, mengubah mode, dan memuat/melepas profil.
Bayangkan kalian seorang operator keamanan gedung. Sebelum memasang aturan baru, kalian harus tahu: seberapa banyak penghuni yang sudah diatur? Siapa yang masih dibiarkan bebas? Dan bagaimana cara mengaktifkan atau mencabut aturan untuk satu penghuni tanpa mengganggu yang lain? Itulah persis pekerjaan yang kita pelajari sekarang.
Tools pertama yang harus kalian kuasai adalah aa-status — jendela utama ke kondisi runtime AppArmor. Di episode 0 kita sudah melihat sekilas outputnya; sekarang kita bedah setiap bagiannya:
sudo aa-statusapparmor module is loaded.
51 profiles are loaded.
49 profiles are in enforce mode.
2 profiles are in complain mode.
24 processes have profiles defined.
24 processes are in enforce mode.
0 profiles are in profile mode.
...
51 profiles are loaded:
/sbin/dhclient
/snap/snapd/current/usr/lib/snapd/snap-confine
/usr/bin/firefox
/usr/sbin/nginx
...Tiga informasi kunci dari output ini:
apparmor module is loaded — kernel memuat LSM AppArmor. Jika baris ini hilang, AppArmor tidak aktif sama sekali.Pada beberapa sistem, perintah apparmor_status adalah alias dari aa-status — keduanya identik. Gunakan salah satu yang tersedia di sistem kalian.
Sebelum bekerja, biasakan memeriksa apakah AppArmor aktif di kernel — terutama setelah reboot atau saat bekerja di sistem yang tidak kalian kenal:
aa-enabledOutput Yes berarti aktif; exit code 0 menandakan hal yang sama — berguna dalam script. Jika outputnya No, periksa apakah kernel dimuat dengan parameter apparmor=0 atau apakah LSM lain (misalnya SELinux) mengambil alih. Ini troubleshooting pertama yang sering menyelamatkan kalian.
Dari episode 2 kalian tahu dua mode kerja profil. Sekarang kita belajar mengubahnya secara langsung. Dua tools yang bekerja berpasangan:
sudo aa-complain /usr/sbin/nginxsudo aa-enforce /usr/sbin/nginxKedua perintah ini sebenarnya hanyalah pembungkus yang memanggil apparmor_parser dengan opsi mode yang sesuai. Perhatikan alurnya:
| Perintah | Opsi parser | Efek |
|---|---|---|
aa-complain <profile> | --complain | Denial dicatat tapi tidak diblokir |
aa-enforce <profile> | --enforce | Denial dicatat dan diblokir |
Contoh penggunaannya dalam production: kalian menerima profil baru dari tim. Jalankan dalam complain dulu selama satu atau dua hari, amati log, lalu naikkan ke enforce setelah yakin. Untuk melihat profil yang sedang dalam complain, aa-status menampilkan daftar khususnya di bagian bawah output.
apparmor_parser adalah tools paling fundamental — semua perintah lain di sekitarnya pada akhirnya memanggilnya. Empat operasi intinya:
| Operasi | Perintah | Makna |
|---|---|---|
| Load (tambah) | apparmor_parser -a <file> | Memuat profil baru ke kernel |
| Reload | apparmor_parser -r <file> | Memuat ulang profil yang sudah ada |
| Remove (lepas) | apparmor_parser -R <file> | Melepas profil dari kernel |
| Verify | apparmor_parser -Q <file> | Memeriksa validitas profil tanpa memuatnya |
Contoh lengkap alur kerja load:
sudo apparmor_parser -Q /etc/apparmor.d/nginx
sudo apparmor_parser -a /etc/apparmor.d/nginx
sudo aa-status | grep nginxBaris pertama memvalidasi sintaks profil tanpa memuatnya — selalu lakukan ini sebelum load untuk menghindari kesalahan. Baris kedua memuatnya ke kernel. Baris ketiga mengonfirmasi profil nginx sudah terdaftar. Untuk melepas profil:
sudo apparmor_parser -R /etc/apparmor.d/nginxSetelah -R, profil hilang dari daftar aa-status dan proses nginx kembali tidak dikonfinasi. Melepas profil sering dipakai saat debugging: untuk memastikan denial berasal dari AppArmor, lepas profilnya dan coba lagi — kalau aplikasi bekerja normal, berarti profilnya yang bermasalah, bukan aplikasinya.
Penting untuk memahami lapisan kedua dari sistem file profil: apparmor_parser -R hanya melepas profil dari kernel — ia tidak menghapus file profil di /etc/apparmor.d/. Akibatnya, profil yang sama akan dimuat lagi saat boot berikutnya.
Alur boot-nya seperti ini:
systemd memulai service apparmor
│
▼
service memuat profil dari /etc/apparmor.d/
│
▼
apparmor_parser mengkompilasi dan memuat ke kernelArtinya, ada dua keputusan berbeda yang harus kalian pahami:
apparmor_parser -a/-R secara langsung./etc/apparmor.d/.Kebanyakan kasus production melibatkan keduanya: ubah file profil, lalu reload dengan -r agar perubahan berlaku tanpa reboot. Kebiasaan ini akan kalian pakai terus di episode 4 dan 5.
Important
Hati-hati dengan apparmor_parser -R pada sistem yang bergantung pada profil. Melepas profil docker-default misalnya akan membuat semua kontainer Docker yang sedang berjalan kehilangan konfinasi AppArmor-nya. Selalu pastikan kalian tahu profil apa yang sedang dilepas dan apa dampaknya.
sudo. apparmor_parser, aa-status, dan semua tools modifikasi butuh hak root. Tanpa sudo, perintah akan gagal dengan permission denied.-R tapi mengira pengaruhnya permanen. -R hanya melepas dari kernel; profil di /etc/apparmor.d/ akan dimuat lagi saat boot. Untuk permanen, hapus file profilnya.-Q. Validasi dulu dengan -Q untuk menangkap typo sintaks — kalau profil rusak, load akan gagal dan aplikasi berjalan tanpa proteksi.aa-status. Daftar "profiles in complain mode" adalah sinyal bahwa ada profil yang belum layak enforce. Cek rutin agar tidak ada profil yang diam-diam hanya mencatat.Pada episode 3 ini kita menguasai tiga kemampuan inti: membaca status dengan aa-status dan memeriksa kesiapan dengan aa-enabled; mengubah mode profil dengan aa-complain dan aa-enforce; serta memuat, melepas, dan memvalidasi profil dengan apparmor_parser beserta pemahaman persistensi saat boot.
Inti yang harus kalian bawa:
aa-status adalah jendela utama ke kondisi runtime AppArmor; aa-enabled memeriksa kesiapan kernel.aa-complain mengubah profil ke complain (mencatat tanpa memblokir); aa-enforce mengembalikannya.apparmor_parser punya empat operasi: -a load, -r reload, -R remove, -Q verify.-R hanya melepas dari kernel; profil di /etc/apparmor.d/ dimuat ulang saat boot.-Q dulu, baru load — validasi sebelum mengeksekusi.Di episode 4 selanjutnya, kita masuk ke bagian paling kreatif: menulis profil dasar — mempelajari sintaks profile <nama> { ... }, aturan file r w m k, path globbing, aturan deny, hingga penggunaan include dan abstraksi. Pastikan tetap semangat, karena mulai episode inilah kalian berhenti menjadi pengguna dan mulai menjadi pengarang policy!