Sementara kernel Linux menyediakan isolasi pengguna yang baik dan kontrol izin file yang kuat, MAC seperti AppArmor memberikan izin dan perlindungan yang lebih halus terhadap banyak ancaman yang tidak diketahui. Jika kerentanan keamanan ditemukan di kernel Linux atau daemon sistem lainnya, sistem AppArmor yang dikonfigurasi dengan baik dapat mencegah akses ke jalur kritis yang mungkin rentan terhadap masalah tersebut.
AppArmor dapat bekerja secara efektif dalam dua mode - menegakkan dan mengeluh. Enforce adalah status produksi default AppArmor, sementara keluhan berguna untuk mengembangkan seperangkat aturan berdasarkan pola operasi nyata dan untuk pelanggaran logging. Ini dikonfigurasi melalui file teks biasa dalam format yang relatif ramah dan memiliki kurva belajar yang lebih pendek daripada kebanyakan sistem kontrol akses wajib lainnya.
Instalasi
Untuk menginstal AppArmor di Debian, jalankan (sebagai root):
apt install apparmor apparmor-utils auditdAnda dapat menghilangkan auditd jika Anda tidak memerlukan alat pembuatan profil.
Jika Anda ingin menginstal starter dan profil tambahan, jalankan:
apt install apparmor-profiles apparmor-profiles-extraKarena AppArmor adalah modul kernel Linux, Anda harus mengaktifkannya dengan perintah berikut:
mkdir -p /etc/default/grub.dBuat file /etc/default/grub.d/pakaian.cfg dengan isi sebagai berikut:
GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT apparmor=1 keamanan=apparmor"Simpan dan keluar, lalu jalankan:
update-grubKemudian reboot.
Ada perdebatan apakah ini harus dilakukan secara otomatis. Anda mungkin ingin membaca bagian akhir laporan bug ini untuk melihat apakah ini telah diubah sejak saat penulisan ini.
Setelah Anda reboot, Anda dapat memeriksa untuk melihat apakah AppArmor diaktifkan dengan menjalankan:
status aaPerintah ini akan mencantumkan profil AppArmor yang dimuat dan mencantumkan status kepatuhannya saat ini (diberlakukan, mengeluh, dll.)
Jika Anda menjalankan:
ps auxZ | grep -v '^tidak dibatasi'Anda akan melihat daftar program yang dibatasi oleh profil AppArmor. Program terbatas adalah program yang terpengaruh dan dibatasi (baik secara pasif, dalam mode keluhan, atau secara aktif dalam mode yang dipaksakan) oleh AppArmor.
Mengubah Mode / Menonaktifkan AppArmor
Jika Anda ingin menonaktifkan AppArmor karena program tidak berfungsi, Anda mungkin ingin mempertimbangkan untuk menempatkan profil dalam mode keluhan alih-alih mode paksa. Untuk melakukan ini, jalankan (sebagai root, atau melalui Sudo):
aa-keluhan /path/ke/programMisalnya, jika ping tidak berfungsi dengan benar, gunakan:
aa-complain /usr/bin/pingSetelah profil dalam mode keluhan, Anda dapat memeriksa logging melalui /var/log/syslog atau dengan journalctl -xe pada sistem systemd (Debian 8.x, Jessie, dan lebih tinggi).
Setelah Anda mengedit profil untuk menghapus atau menyesuaikan pembatasan, Anda dapat mengaktifkan mode penegakan lagi untuk biner dengan:
aa-menegakkan /path/ke/programPada contoh di atas, ganti /path/to/program dengan path lengkap ke biner yang terpengaruh oleh profil yang dimaksud.
Jika Anda memiliki masalah dengan program dan dalam mode keluhan, log akan memberikan informasi spesifik tentang tindakan yang ditolak. Bidang operasi akan menjelaskan apa yang coba dilakukan program, bidang profil profil spesifik yang terpengaruh, nama akan menentukan target tindakan (i.e. file apa yang dihentikan dari operasi baca atau tulis), dan topeng yang diminta dan ditolak menunjukkan jika operasi, baik yang diminta oleh program dan ditolak per profil, dibaca atau dibaca-tulis.
Anda dapat menonaktifkan profil sepenuhnya dengan menjalankan:
aa-nonaktifkan /path/ke/programAtau, Anda dapat menonaktifkan AppArmor sepenuhnya dengan mengedit file: /etc/default/grub.d/pakaian.cfg berisi:
GRUB_CMDLINE_LINUX_DEFAULT=”$GRUB_CMDLINE_LINUX_DEFAULT apparmor=0”Kemudian berjalan:
update-grubDan me-reboot sistem Anda.
Bekerja dengan Profil AppArmor
Profil AppArmor berada di /etc/apparmor.d/ direktori. Jika Anda menginstal paket apparmor-profiles dan apparmor-profiles-extra, Anda akan menemukan profil di /usr/share/doc/apparmor-profiles dan /usr/share/doc/apparmor-profiles/extra. Untuk mengaktifkannya, salin file ke /etc/apparmor.d kemudian edit untuk memastikannya berisi nilai yang Anda inginkan, simpan, lalu jalankan:
service apparmor reloadJika Anda ingin memuat ulang hanya satu profil, jalankan:
apparmor_parser -r /etc/apparmor.d/profilDi mana "profil" adalah nama profil yang dimaksud.
Tidak disarankan untuk hanya menyalin profil dan profil tambahan ke /etc/apparmor.d direktori tanpa mengeditnya dengan tangan. Beberapa profil mungkin sudah tua dan beberapa pasti tidak akan berisi nilai yang Anda inginkan. Jika Anda menyalin semuanya, setidaknya atur mereka untuk mengeluh sehingga Anda dapat memantau pelanggaran tanpa merusak program dalam produksi:
cd /etc/apparmor.duntuk f dalam *.* ; lakukan aa-complain /etc/apparmor.d/$f; selesai
Anda dapat menggunakan perintah aa-enforce satu per satu untuk mengaktifkan profil yang ingin Anda simpan, menyetel yang menyebabkan masalah dan menerapkannya, atau menghapus yang tidak Anda perlukan dengan menjalankan aa-disable atau menghapus file profil dari /etc/apparmor.d.
Membuat Profil AppArmor
Sebelum Anda membuat profil khusus, Anda perlu mencari /etc/apparmor.d dan /usr/share/doc/apparmor-profiles direktori untuk profil yang ada yang mencakup biner yang dimaksud. Untuk mencari ini, jalankan:
temukan /usr/share/doc/apparmor-profiles | grep "program" -iMenggantikan program dengan program yang ingin Anda lindungi dengan AppArmor. Jika Anda menemukannya, salin ke /etc/apparmor.d dan kemudian edit file di editor teks favorit Anda.
Setiap profil terdiri dari tiga bagian utama: meliputi, kemampuan, dan jalur. Anda dapat menemukan referensi bermanfaat dalam dokumentasi SuSESE.
Termasuk
Termasuk menyediakan sintaks yang dapat Anda gunakan di dalam file. Mereka menggunakan sintaks C/C++ #include <> dan biasanya referensi abstraksi yang ditemukan di /etc/apparmor.direktori d/abstraksi.
Kemampuan
Bagian kemampuan, biasanya ditemukan setelah penyertaan, mencantumkan kemampuan khusus yang dapat dilakukan oleh program. Misalnya, Anda dapat membiarkan program melakukan operasi setuid dengan:
kemampuan setuidKemampuan net_bind_service memungkinkan program untuk mengikat ke port jaringan. Jika Anda tidak memberikan ini, daemon server seperti Apache tidak dapat membuka port 80 dan mendengarkan. Namun, menghilangkan kemampuan ini dapat memberikan keamanan yang sangat baik untuk proses yang tidak Anda percayai di jaringan.
jalan
Anda dapat membuat daftar jalur yang dapat dibaca oleh program (dan mungkin ditulis). Misalnya, jika Anda ingin mengizinkan program untuk mengakses file /etc/passwd, tambahkan:
/etc/passwd rDi profil. Perhatikan "r" - ini berarti hanya baca. Jika Anda mengubah ini menjadi "w", menulis ke jalur atau file ini akan diizinkan.
Bahkan jika Anda mengizinkan jalur di AppArmor, itu masih tunduk pada batasan sistem file Linux (mis.e. diatur dengan chmod, chgrp, dan chown). Namun, AppArmor masih akan memberikan lapisan perlindungan ekstra jika mekanisme tersebut dikompromikan.
Kesimpulan
Kunci keberhasilan penerapan AppArmor adalah mengatur profil untuk dikeluhkan, lalu ditegakkan. Pemeriksaan log yang cermat akan memberi Anda jalur dan kemampuan minimal yang diperlukan untuk operasi program yang sukses. Dengan menetapkan ini dan tidak lebih, Anda akan secara dramatis meningkatkan keamanan sistem Anda.