Iako Linux jezgra pruža dobru izolaciju korisnika i snažnu kontrolu dozvola datoteka, MAC poput AppArmor pruža preciznije dozvole i zaštitu od mnogih nepoznatih prijetnji. Ako se u jezgri Linuxa ili drugom demonu sustava pronađe sigurnosna ranjivost, dobro konfigurirani sustav AppArmor može spriječiti pristup kritičnim stazama koje bi mogle biti osjetljive na problem.
AppArmor može učinkovito raditi u dva načina - provoditi i žaliti se. Enforce je zadani proizvodni status AppArmor-a, dok je žalba korisna za razvoj skupa pravila koji se temelji na stvarnim obrascima rada i za kršenje evidentiranja. Konfiguriran je putem običnih tekstualnih datoteka u relativno prijateljskom formatu i ima kraću krivulju učenja od većine ostalih obveznih sustava kontrole pristupa.
Montaža
Da biste instalirali AppArmor na Debian, pokrenite (kao root):
apt instalirati apparmor apparmor-utils auditdAudit možete izostaviti ako vam nisu potrebni alati za stvaranje profila.
Ako želite instalirati starter i dodatne profile, pokrenite:
apt instalirati apparmor-profile apparmor-profile-extraBudući da je AppArmor modul jezgre Linuxa, morate ga omogućiti sljedećim naredbama:
mkdir -p / etc / default / grub.dStvorite datoteku / etc / default / grub.d / apparmor.cfg sa sljedećim sadržajem:
GRUB_CMDLINE_LINUX_DEFAULT = "$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 1 sigurnost = apparmor"Spremite i izađite, a zatim pokrenite:
update-grubZatim ponovno pokrenite.
Raspravlja se treba li to učiniti automatski. Možda ćete htjeti pogledati kraj ovog izvještaja o greškama da biste vidjeli je li to promijenjeno od vremena ovog pisanja.
Nakon ponovnog pokretanja možete provjeriti je li AppArmor omogućen pokretanjem:
aa-statusOva naredba će prikazati učitane profile AppArmor i njihovo trenutno stanje usklađenosti (prisiljeni, žaliti se, itd.)
Ako trčite:
ps auxZ | grep -v '^ neograničeno'Vidjet ćete popis programa koji su ograničeni AppArmor profilom. Ograničeni program je onaj na koji AppArmor utječe i ograničava ga (pasivno, u načinu žalbe ili aktivno u prisilnom načinu).
Promjena načina rada / onemogućavanje AppArmor
Ako želite onemogućiti AppArmor jer program ne radi, možda biste trebali razmisliti o postavljanju profila u način žalbe umjesto u prisilnom načinu. Da biste to učinili, pokrenite (kao root ili putem sudo):
aa-prigovor / put / do / programaNa primjer, ako ping neće raditi ispravno, upotrijebite:
aa-prigovor / usr / bin / pingJednom kada je profil u načinu za žalbu, možete pregledati bilježenje putem / var / log / syslog ili pomoću journalctl -xe na systemd sustavima (Debian 8.x, Jessie i više).
Nakon što uredite profil da biste uklonili ili prilagodili ograničenje, možete ponovo uključiti način prisile za binarni sustav s:
aa-prisiliti / put / do / programaU gornjem primjeru zamijenite / path / to / program punim putem do binarne datoteke na koju utječe dotični profil.
Ako imate problem s programom i on je u načinu žalbe, zapisnici će pružiti određene informacije o tome koja je radnja odbijena. Polje operacije objasnit će što je program pokušao učiniti, polje profila specifični profil na koji se to odnosi, ime će odrediti cilj radnje (i.e. koja je datoteka zaustavljena iz operacije čitanja ili pisanja), a tražene i odbijene maske ukazuju na to je li operacija, kako zahtijevana od programa, tako i odbijena po profilu, pročitana ili pročitana-napisana.
Profil možete u potpunosti onemogućiti pokretanjem:
aa-onemogući / put / do / programaIli možete potpuno onemogućiti AppArmor uređivanjem datoteke: / etc / default / grub.d / apparmor.cfg sadržavati:
GRUB_CMDLINE_LINUX_DEFAULT = ”$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 0”Zatim trčanje:
update-grubI ponovno podizanje sustava.
Rad s profilima AppArmor
Profili AppArmor nalaze se u / etc / apparmor.d / direktorij. Ako instalirate paket paketa apparmor-profile i apparmor-profiles-extra, profile ćete pronaći u / usr / share / doc / apparmor-profile i / usr / share / doc / apparmor-profile / extra. Da biste ih aktivirali, kopirajte datoteke u / etc / apparmor.d, a zatim ih uredite kako biste osigurali da sadrže vrijednosti koje želite, spremite i pokrenite:
ponovno učitavanje usluge apparmorAko želite ponovo učitati samo jedan profil, pokrenite:
apparmor_parser -r / etc / apparmor.d / profilGdje je "profil" naziv dotičnog profila.
Ne preporučuje se samo kopiranje profila i dodatnih profila u / etc / apparmor.d direktoriju bez ručnog uređivanja. Neki su profili možda stari, a neki zasigurno neće sadržavati vrijednosti koje želite. Ako ih sve kopirate, barem ih podesite da se žale kako biste mogli nadzirati kršenja bez prekida programa u produkciji:
cd / etc / apparmor.dza f u *.*; učiniti aa-prigovor / etc / apparmor.d / $ f; gotovo
Naredbu aa-force možete koristiti pojedinačno da omogućite profile koje želite zadržati, podesite one koji uzrokuju probleme i provode ih ili uklonite one koji vam nisu potrebni pokretanjem aa-disable ili uklanjanjem datoteke profila iz / etc / apparmor.d.
Izrada profila AppArmor
Prije nego što stvorite prilagođeni profil, poželjet ćete pretražiti / etc / apparmor.d i / usr / share / doc / apparmor-profiles direktoriji za postojeći profil koji pokriva dotični binarni zapis. Da biste ih pretražili, pokrenite:
pronađi / usr / share / doc / apparmor-profile | grep “program” -iZamijeniti program s programom koji želite zaštititi s AppArmor. Ako ga pronađete, kopirajte ga u / etc / apparmor.d, a zatim uredite datoteku u omiljenom uređivaču teksta.
Svaki se profil sastoji od tri glavna odjeljka: uključuje, mogućnosti i staze. Korisnu referencu možete pronaći u SuSE-ovoj dokumentaciji.
Uključuje
Uključuje pružanje sintakse koju možete koristiti unutar datoteke. Koriste sintaksu C / C ++ #include <> i obično upućuju na apstrakcije pronađene u / etc / apparmor.d / imenik apstrakcija.
Mogućnosti
Odjeljak s mogućnostima, koji se obično nalazi nakon uključuje, navodi određene mogućnosti koje program može izvesti. Na primjer, možete dopustiti programu da izvrši setuid operaciju sa:
sposobnost setuidSposobnost net_bind_service omogućuje programu da se veže na mrežni priključak. Ako to ne odobrite, demon poslužitelja poput Apachea ne može otvoriti priključak 80 i slušati. Međutim, izostavljanje ove mogućnosti može pružiti izvrsnu sigurnost za procese kojima ne vjerujete na mreži.
Staze
Možete navesti putove koje program može čitati (i možda pisati). Na primjer, ako želite dopustiti programu pristup datoteci / etc / passwd, dodajte:
/ etc / passwd rU profilu. Obratite pažnju na “r” - to znači samo za čitanje. Ako ovo promijenite u "w", pisanje na ovu stazu ili datoteku bit će dopušteno.
Čak i ako dopustite put u AppArmor, on i dalje podliježe ograničenjima Linux datotečnog sustava (tj.e. postavljeno s chmod, chgrp i chown). Međutim, AppArmor će i dalje pružati dodatni sloj zaštite ako se ti mehanizmi ugroze.
Zaključak
Ključ uspješnog postavljanja AppArmor je postavljanje profila za žalbu, a zatim provođenje. Pažljivo ispitivanje dnevnika pružit će vam minimalne putove i mogućnosti potrebne za uspješan rad programa. Dodjeljivanjem ovih i više nećete dramatično povećati sigurnost vašeg sustava.