Di artikel sebelumnya , kita sudah membahas tentang SELinux. Kesan saya tentang sistem keamanan ini ada dua. Di satu sisi, tidak pernah ada terlalu banyak keamanan di TI, dan SELinux berisi semua yang Anda butuhkan untuk melindungi OS dan aplikasi dari akses yang tidak sah. Di sisi lain, ini terlihat terlalu rumit dan tidak perlu rumit, yang membuatnya tidak praktis. Lebih dari satu atau dua kali dalam manual pengguna untuk menginstal perangkat lunak komersial, saya telah melihat rekomendasi untuk menjalankan setenforce 0 sebelum memulai instalasi.
Solusi yang memiliki separuh fungsionalitas SELinux, tetapi jauh lebih mudah dikonfigurasi dan dioperasikan, dapat menjadi perlindungan yang lebih andal, jika hanya karena tidak menakutkan untuk mempelajari semua domain, kebijakan, dan peran ini. Inilah yang ditawarkan AppArmor.
Seperti SELinux, AppArmor adalah implementasi Mandatory Access Control (MAC) berdasarkan arsitektur Linux Security Modules (LSM). Model keamanan Apparmor adalah tentang mengikat atribut kontrol akses bukan untuk pengguna, tetapi untuk program. AppArmor menyediakan isolasi melalui profil yang dimuat ke kernel, biasanya saat boot.
AppArmor berbeda dari implementasi MAC Linux lainnya karena berbasis jalur, dan juga memungkinkan Anda untuk menggabungkan profil penegakan dan peringatan. Selain itu, AppArmor menggunakan lampiran file untuk memfasilitasi pengembangan dan memiliki penghalang masuk yang jauh lebih dangkal daripada SELinux itu sendiri.
DAC dan MAC
Arsitektur Discretionary Access Control (DAC) membatasi akses ke sumber daya penting berdasarkan atribut subjek atau grup tempat mereka berada. Atribut ini menentukan hak akses ke sumber daya sistem file. Setiap admin sangat menyadari pentingnya hak istimewa untuk membaca (Baca), merekam (Menulis), dan mengeksekusi (eXecute).
Atribut ini berlaku untuk tiga kategori pengguna: pengguna (pemilik), grup (grup), lainnya (lainnya). Kategori pemilik mengacu pada satu pengguna OS, sedangkan grup dapat berisi banyak pengguna OS. Kategori lainnya mencakup para pengguna yang tidak termasuk dalam dua kategori pertama.
Model DAC memberikan hak kepada pemilik sumber daya untuk menentukan jenis akses untuk kategori pengguna tertentu. Diferensiasi akses seperti itu cocok untuk melindungi dari tindakan pengguna yang tidak disengaja dan memungkinkan Anda menjawab pertanyaan berikut:
- Sumber daya FS apa yang tersedia bagi pengguna OS tertentu untuk membaca, menulis, dan menjalankan?
- Sumber daya FS apa yang tersedia untuk kelompok ini untuk membaca, menulis dan melaksanakan?
- Sumber daya FS apa yang tersedia bagi pengguna lain untuk membaca, menulis, dan menjalankan?
- Pengguna mana yang memiliki hak yang memadai untuk menjalankan proses ini?
Angka: 1 sistem keamanan DAC dan MAC.
Sistem keamanan Mandatory Access Control (MAC) mengasumsikan kontrol terpusat atas aturan kebijakan akses, di mana pengguna biasa tidak memiliki kemampuan untuk membuat perubahan apa pun terhadapnya. Perancang kebijakan menentukan program atau proses mana yang dapat melakukan tindakan tertentu pada sumber daya sistem. MAC lebih berfokus pada program daripada pada pengguna dan memecahkan masalah pembatasan akses proses ke sumber daya OS.
Intinya, desain MAC mencoba meniru penggambaran hak akses ke dokumentasi di dunia fisik. Jika karyawan tertentu memiliki hak untuk membaca dokumen bertanda "sangat rahasia", maka ia juga memiliki akses ke dokumen rahasia dan internal standar. Namun kebalikannya tidak benar. Hal yang sama juga berlaku dalam konteks hak akses proses OS dalam arsitektur MAC. Jadi, jika sebuah program dapat membaca file / etc / sudoers, maka program tersebut juga memiliki akses ke / etc / hosts, tetapi kebalikannya juga tidak benar.
Menginstal dan mengonfigurasi AppArmor
Elemen AppArmor dasar sudah diinstal sebelumnya di Server Ubuntu, sedangkan untuk alat manajemen dan sekumpulan profil aplikasi, mereka harus diinstal secara terpisah.
[admin@server ~]$ sudo aptitude install apparmor-utils apparmor-profiles
Memeriksa status sebelum mengatur.
[admin@server ~]$ sudo apparmor_status
apparmor module is loaded.
31 profiles are loaded.
31 profiles are in enforce mode.
/snap/snapd/10492/usr/lib/snapd/snap-confine
/snap/snapd/10492/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/bin/man
/usr/lib/NetworkManager/nm-dhcp-client.action
/usr/lib/NetworkManager/nm-dhcp-helper
/usr/lib/connman/scripts/dhclient-script
/usr/lib/snapd/snap-confine
/usr/lib/snapd/snap-confine//mount-namespace-capture-helper
/usr/sbin/tcpdump
...
0 profiles are in complain mode.
0 processes have profiles defined.
0 processes are in enforce mode.
0 processes are in complain mode.
0 processes are unconfined but have a profile defined.
Baris terakhir menunjukkan mode penegakan dan pengaduan. Singkatnya, apa rezim ini?
- Dalam mode Berlakukan , kernel memberlakukan aturan yang tertulis di file profil. Pelanggaran tidak diperbolehkan dan entri terkait masuk ke log.
- Dalam mode Keluhan , AppArmor hanya mendaftarkan pelanggaran tanpa memblokir tindakan itu sendiri.
Isi paket apparmor-profiles terletak di folder
/usr/share/apparmor/extra-profiles/
, ada lebih dari seratus profil yang sudah jadi di sana.
[admin@server ~]$ ll /usr/share/apparmor/extra-profiles/ |head total 484 -rw-r--r-- 1 root system 1724 May 19 2020 README drwxr-xr-x 3 root system 4096 Dec 8 10:14 abstractions/ -rw-r--r-- 1 root system 1319 May 19 2020 bin.netstat -rw-r--r-- 1 root system 1815 May 19 2020 etc.cron.daily.logrotate -rw-r--r-- 1 root system 948 May 19 2020 etc.cron.daily.slocate.cron -rw-r--r-- 1 root system 722 May 19 2020 etc.cron.daily.tmpwatch -rw-r--r-- 1 root system 2623 May 19 2020 sbin.dhclient [admin@server ~]$ ll /usr/share/apparmor/extra-profiles/ |wc -l 118
Sebelum profil menjadi aktif, Anda perlu mentransfernya dari folder
/usr/share/apparmor/extra-profiles/
ke
/etc/apparmor.d/
. Sekarang bisa dipelajari dan, jika diinginkan, diubah. Mari kita ambil sesuatu yang lebih sederhana, misalnya
/etc/apparmor.d/bin.ping
.
...
#include <tunables/global>
profile ping /{usr/,}bin/{,iputils-}ping flags=(complain) {
#include <abstractions/base>
#include <abstractions/consoles>
#include <abstractions/nameservice>
capability net_raw,
capability setuid,
network inet raw,
network inet6 raw,
/{,usr/}bin/{,iputils-}ping mixr,
/etc/modules.conf r,
# Site-specific additions and overrides. See local/README for details.
#include <local/bin.ping>
}
Semuanya cukup jelas, kecuali untuk flag mixr. Deskripsi arti bendera di bawah ini:
- r - baca;
- w - record
- a - penulisan tambahan ke akhir file, dari lampiran bahasa Inggris;
- k - mengunci file;
- l - membuat tautan simbolis ke file yang dapat dieksekusi;
- m - memuat file yang dapat dieksekusi ke dalam memori;
- cx - transisi ke profil level yang lebih rendah selama eksekusi;
- Cx - transisi ke profil tingkat yang lebih rendah saat dijalankan dengan variabel lingkungan pembersihan;
- ix - warisan eksekusi;
- px - membutuhkan definisi profil keamanan terpisah untuk sumber daya;
- Px - profil keamanan terpisah untuk sumber daya diperlukan, variabel lingkungan dihapus;
- ux - jangan periksa peluncuran proses baru;
- Ux - jangan memeriksa peluncuran proses baru dan membersihkan variabel lingkungan;
Anda juga dapat menentukan
Capabilities
kernel Linux yang prosesnya diizinkan untuk digunakan. Daftar lengkap mereka ada di halaman manual yang sesuai.
Untuk beralih dari mode belajar ke mode paksa, Anda perlu menjalankan perintah
aa-enforce <prog_name>, - aa-complain <prog_name>
. Jika sekarang, setelah mengaktifkan mode paksa, ping mencoba melakukan sesuatu, AppArmor akan memblokirnya.
[admin@server ~]$ sudo aa-enforce ping
Setting /usr/bin/ping to enforce mode.
[admin@server ~]$ sudo cp /usr/bin/man /usr/bin/ping
[admin@server ~]$ /usr/bin/ping ping
/usr/bin/ping: can't open the manpath configuration file /etc/manpath.config
Jika Anda perlu membuat profil baru, maka itu tidak sulit. Pertama, Anda perlu membuat template menggunakan perintah
aa-autodep
, lalu mengisinya dengan menjalankan
aa-genprof
. Contoh dialog interaktif aa-genprof gratis di tautan .