Medtem ko jedro Linuxa zagotavlja dobro izolacijo uporabnikov in močan nadzor nad dovoljenji datotek, MAC, kot je AppArmor, ponuja natančnejša dovoljenja in zaščito pred številnimi neznanimi grožnjami. Če v jedru Linuxa ali drugem sistemskem demonu najdemo varnostno ranljivost, lahko dobro konfiguriran sistem AppArmor prepreči dostop do kritičnih poti, ki bi lahko bile ranljive za težavo.
AppArmor lahko deluje v dveh načinih - uveljaviti in se pritožiti. Enforce je privzeti produkcijski status AppArmor, medtem ko je pritožba koristna za razvoj nabora pravil, ki temelji na dejanskih vzorcih delovanja, in za kršenje beleženja. Konfiguriran je z navadnimi besedilnimi datotekami v razmeroma prijazni obliki in ima krajšo učno krivuljo kot večina drugih obveznih sistemov za nadzor dostopa.
Namestitev
Če želite namestiti AppArmor v Debian, zaženite (kot root):
apt namestite apparmor apparmor-utils auditdAuddd lahko izpustite, če ne potrebujete orodij za ustvarjanje profilov.
Če želite namestiti zaganjalnik in dodatne profile, zaženite:
apt namestite apparmor-profile apparmor-profile-extraKer je AppArmor modul jedra Linuxa, ga morate omogočiti z naslednjimi ukazi:
mkdir -p / etc / default / grub.dUstvarite datoteko / etc / default / grub.d / apparmor.cfg z naslednjo vsebino:
GRUB_CMDLINE_LINUX_DEFAULT = "$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 1 varnost = apparmor"Shranite in zapustite, nato zaženite:
update-grubNato znova zaženite.
Razpravlja se o tem, ali je treba to storiti samodejno. Morda boste želeli pregledati konec tega poročila o napakah in preveriti, ali se je to spremenilo od trenutka pisanja.
Po ponovnem zagonu lahko z zagonom preverite, ali je AppArmor omogočen:
aa-statusTa ukaz bo prikazal naložene profile AppArmor in njihovo trenutno stanje skladnosti (uveljavljeno, pritožba itd.)
Če zaženete:
ps auxZ | grep -v '^ brez omejitev'Videli boste seznam programov, ki jih omejuje profil AppArmor. Omejeni program je tisti, na katerega AppArmor vpliva in ga omejuje (bodisi pasivno, v načinu pritožbe bodisi aktivno v prisilnem načinu).
Spreminjanje načinov / onemogočanje AppArmor
Če želite onemogočiti AppArmor, ker program ne deluje, boste morda želeli namesto profila prisiliti profil v način pritožbe. Če želite to narediti, zaženite (kot root ali prek sudo):
aa-pritožba / pot / do / programaČe na primer ping ne deluje pravilno, uporabite:
aa-pritožba / usr / bin / pingKo je profil v načinu za pritožbo, lahko preverite beleženje prek / var / log / syslog ali z journalctl -xe v sistemskih sistemih (Debian 8.x, Jessie in novejši).
Ko uredite profil, da odstranite ali prilagodite omejitev, lahko znova vklopite način prisile za binarno datoteko z:
aa-force / path / to / programV zgornjem primeru zamenjajte / path / to / program s polno potjo do binarne datoteke, na katero vpliva zadevni profil.
Če imate težave s programom in je v načinu za pritožbo, bodo dnevniki ponujali natančne informacije o tem, katero dejanje je bilo zavrnjeno. V operacijskem polju bo razloženo, kaj je program poskušal narediti, v polju profila je zadeven profil, ime bo določalo cilj dejanja (i.e. katera datoteka je bila ustavljena pri operaciji branja ali pisanja), zahtevane in zavrnjene maske pa kažejo, ali je bila operacija, ki jo zahteva program in je bila zavrnjena po profilu, prebrana ali brana-pisana.
Profil lahko v celoti onemogočite tako, da zaženete:
aa-disable / pot / do / programaLahko pa popolnoma onemogočite AppArmor z urejanjem datoteke: / etc / default / grub.d / apparmor.cfg, da vsebuje:
GRUB_CMDLINE_LINUX_DEFAULT = "$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 0"Nato tek:
update-grubIn ponovni zagon sistema.
Delo s profili AppArmor
Profili AppArmor se nahajajo v / etc / apparmor.d / imenik. Če namestite paket paketov apparmor-profile in apparmor-profile-extra, boste profile našli v / usr / share / doc / apparmor-profile in / usr / share / doc / apparmor-profile / extra. Če jih želite aktivirati, kopirajte datoteke v / etc / apparmor.d nato jih uredite, da zagotovite, da vsebujejo želene vrednosti, shranite in nato zaženite:
ponovno nalaganje storitve apparmorČe želite znova naložiti samo en profil, zaženite:
apparmor_parser -r / etc / apparmor.d / profilKjer je "profil" ime zadevnega profila.
Ni priporočljivo samo kopirati profilov in dodatnih profilov v / etc / apparmor.d imenika brez ročnega urejanja. Nekateri profili so lahko stari, nekateri pa zagotovo ne bodo vsebovali želenih vrednosti. Če jih vseeno kopirate, jih vsaj nastavite tako, da se bodo pritožili, da boste lahko spremljali kršitve, ne da bi prekinili programe v produkciji:
cd / etc / apparmor.dza f v *.*; naredi aa-pritožba / etc / apparmor.d / $ f; Končano
Ukaz aa-force lahko uporabite posamezno, da omogočite profile, ki jih želite obdržati, nastavite tiste, ki povzročajo težave, in jih uveljavite ali odstranite tiste, ki jih ne potrebujete, tako da zaženete datoteko profila ali odstranite datoteko profila iz / etc / apparmor.d.
Ustvarjanje profila AppArmor
Preden ustvarite profil po meri, boste želeli poiskati / etc / apparmor.d in / usr / share / doc / apparmor-profile imenika za obstoječi profil, ki zajema zadevno binarno datoteko. Če želite iskati te, zaženite:
najdi / usr / share / doc / apparmor-profile | grep “program” -iZamenjati program s programom, ki ga želite zaščititi z AppArmor. Če ga najdete, ga kopirajte v / etc / apparmor.d in nato uredite datoteko v svojem najljubšem urejevalniku besedil.
Vsak profil je sestavljen iz treh glavnih odsekov: vključuje, zmožnosti in poti. Koristno referenco najdete v dokumentaciji SuSE.
Vključuje
Vključuje zagotavlja sintakso, ki jo lahko uporabite v datoteki. Uporabljajo sintakso C / C ++ #include <> in običajno sklice na abstrakcije, ki jih najdemo v / etc / apparmor.d / abstrakcije imenik.
Zmogljivosti
V razdelku o zmožnostih, ki ga običajno najdete po vključitvi, so navedene posebne zmožnosti, ki jih lahko izvaja program. Na primer, programu lahko dovolite, da izvede nastavitveno operacijo z:
sposobnost setuidSposobnost net_bind_service omogoča programu, da se veže na omrežna vrata. Če tega ne odobrite, strežniški demon, kot je Apache, ne more odpreti vrat 80 in poslušati. Če pa izpustite to možnost, lahko zagotovite odlično varnost za procese, ki jim v omrežju ne zaupate.
Poti
Lahko navedete poti, ki jih program lahko bere (in morda piše). Če želite na primer programu dovoliti dostop do datoteke / etc / passwd, dodajte:
/ etc / passwd rV profilu. Upoštevajte »r« - to pomeni samo za branje. Če to spremenite v "w", bo dovoljeno pisanje na to pot ali datoteko.
Tudi če dovolite pot v AppArmor, zanjo še vedno veljajo omejitve datotečnega sistema Linux (tj.e. nastavljena s chmod, chgrp in chown). Vendar bo AppArmor še vedno zagotovil dodatno plast zaščite, če bodo ti mehanizmi ogroženi.
Zaključek
Ključ do uspešne uvedbe AppArmor je nastavitev profilov za pritožbo in nato uveljavitev. S skrbnim pregledom dnevnika boste dobili minimalne poti in zmožnosti, potrebne za uspešno delovanje programa. Z dodelitvijo le-teh in nič več boste močno povečali varnost sistema.