Medan Linux-kärnan ger bra isolering av användare och stark filtillståndskontroll, ger en MAC som AppArmor mer detaljerade behörigheter och skydd mot många okända hot. Om det finns en säkerhetsproblem i Linux-kärnan eller annan systemdemon kan ett välkonfigurerat AppArmor-system förhindra åtkomst till kritiska banor som kan vara sårbara för problemet.
AppArmor kan fungera i två olika lägen - genomdriva och klaga. Enforce är AppArmors standardproduktionsstatus, medan klagomål är användbart för att utveckla en regeluppsättning baserad på verkliga driftsmönster och för loggningsöverträdelser. Den konfigureras via vanliga textfiler i ett relativt vänligt format och har en kortare inlärningskurva än de flesta andra obligatoriska åtkomstkontrollsystem.
Installation
För att installera AppArmor på Debian, kör (som root):
apt install apparmor apparmor-utils auditdDu kan utelämna auditd om du inte behöver verktyg för profilgenerering.
Om du vill installera start- och ytterligare profiler, kör:
apt installera apparmor-profiler apparmor-profiler-extraEftersom AppArmor är en Linux-kärnmodul måste du aktivera den med följande kommandon:
mkdir -p / etc / default / grub.dSkapa filen / etc / default / grub.d / apparmor.cfg med följande innehåll:
GRUB_CMDLINE_LINUX_DEFAULT = "$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 1 säkerhet = apparmor"Spara och avsluta och kör sedan:
update-grubStarta sedan om.
Det diskuteras om detta ska göras automatiskt. Du kanske vill konsultera slutet av denna felrapport för att se om detta har ändrats sedan detta skrivs.
När du har startat om kan du kontrollera om AppArmor är aktiverad genom att köra:
aa-statusDet här kommandot listar laddade AppArmor-profiler och listar deras nuvarande tillstånd (följs, klagar etc.).)
Om du springer:
ps auxZ | grep -v '^ unconfined'Du ser en lista över program som begränsas av en AppArmor-profil. Ett begränsat program är ett som påverkas och begränsas (antingen passivt, i klagomål eller aktivt i verkställt läge) av AppArmor.
Ändra lägen / inaktivera AppArmor
Om du vill inaktivera AppArmor eftersom ett program inte fungerar kan du överväga att placera profilen i klagomålsläge istället för tvångsläge. För att göra detta, kör (som root eller via sudo):
aa-klagomål / sökväg / till / programOm ping till exempel inte fungerar korrekt, använd:
aa-klaga / usr / bin / pingNär en profil är i klagomålsläge kan du undersöka loggningen via / var / log / syslog eller med journalctl -xe på systemd-system (Debian 8.x, Jessie och högre).
När du har redigerat profilen för att ta bort eller justera begränsningen kan du aktivera tvångsläge igen för binär med:
aa-enforce / path / to / programI exemplet ovan, ersätt / sökväg / till / program med hela sökvägen till den binära som påverkas av profilen i fråga.
Om du har problem med ett program och det är i klagomålsläge kommer loggarna att ge specifik information om vilken åtgärd som nekades. Operationsfältet kommer att förklara vad programmet försökte göra, profilfältet den specifika profilen som berörs, namnet anger åtgärdens mål (i.e. vilken fil som stoppades från en läs- eller skrivoperation), och de begärda och nekade maskerna indikerar om operationen, både efterfrågad av programmet och nekad per profil, har läst eller läst skriv.
Du kan inaktivera en profil helt genom att köra:
aa-inaktivera / sökväg / till / programEller så kan du inaktivera AppArmor helt genom att redigera filen: / etc / default / grub.d / apparmor.CFG att innehålla:
GRUB_CMDLINE_LINUX_DEFAULT = ”$ GRUB_CMDLINE_LINUX_DEFAULT apparmor = 0”Sedan kör:
update-grubOch starta om ditt system.
Arbeta med AppArmor-profiler
AppArmor-profiler finns i / etc / apparmor.d / katalog. Om du installerar paketet apparmor-profiler och apparmor-profiler-extra hittar du profiler i / usr / dela / doc / apparmor-profiler och / usr / dela / doc / apparmor-profiler / extra. För att aktivera dem, kopiera filerna till / etc / apparmor.d redigera dem så att de innehåller de värden du vill ha, spara och kör sedan:
ladda om service apparmorOm du vill ladda om bara en profil, kör:
apparmor_parser -r / etc / apparmor.d / profilDär ”profil” är namnet på den aktuella profilen.
Det rekommenderas inte att bara kopiera profilerna och extra profilerna till / etc / apparmor.d-katalog utan att handredigera dem. Vissa profiler kan vara gamla och vissa innehåller säkert inte de värden du vill ha. Om du kopierar dem alla, ställ dem åtminstone till att klaga så att du kan övervaka överträdelser utan att bryta program i produktionen:
cd / etc / apparmor.dför f i *.*; gör aa-klagomål / etc / apparmor.d / $ f; Gjort
Du kan använda kommandot aa-enforce individuellt för att aktivera profiler du vill behålla, ställa in de som orsakar problem och genomdriva dem, eller ta bort sådana du inte behöver genom att köra aa-inaktivera eller ta bort profilfilen från / etc / apparmor.d.
Skapa en AppArmor-profil
Innan du skapar en anpassad profil vill du söka i / etc / apparmor.d- och / usr / share / doc / apparmor-profiler kataloger för en befintlig profil som täcker den aktuella binären. För att söka i dessa, kör:
hitta / usr / dela / doc / apparmor-profiler | grep “program” -iByta ut program med programmet du vill skydda med AppArmor. Om du hittar en, kopiera den till / etc / apparmor.d och redigera sedan filen i din favorittextredigerare.
Varje profil består av tre huvudsektioner: inkluderar, funktioner och banor. Du kan hitta en användbar referens i SuSEs dokumentation.
Inkluderar
Inkluderar tillhandahålla syntax som du kan använda i filen. De använder C / C ++ #include <> syntax och refererar vanligtvis till abstraktioner som finns i / etc / apparmor.d / abstraktionskatalog.
Förmågor
Funktionsavsnittet, som vanligtvis hittas efter inkluderar, listar specifika funktioner som programmet kan utföra. Du kan till exempel låta ett program utföra en inställningsoperation med:
kapacitetsinställningFunktionen net_bind_service tillåter ett program att binda till en nätverksport. Om du inte beviljar detta kan en serverdemon som Apache inte öppna port 80 och lyssna. Att utelämna denna funktion kan dock ge utmärkt säkerhet för processer som du inte litar på i nätverket.
Banor
Du kan lista vägar som programmet kan läsa (och eventuellt skriva). Om du till exempel vill tillåta att programmet får åtkomst till filen / etc / passwd, lägg till:
/ etc / passwd rI profilen. Observera “r” - detta betyder skrivskyddad. Om du ändrar detta till “w” är det tillåtet att skriva till den här sökvägen eller filen.
Även om du tillåter en sökväg i AppArmor är den fortfarande föremål för Linux-filsystemrestriktioner (i.e. set med chmod, chgrp och chown). AppArmor kommer dock fortfarande att ge ett extra lager av skydd om dessa mekanismer äventyras.
Slutsats
Nyckeln till en framgångsrik AppArmor-distribution är att ställa in profiler för att klaga och sedan genomdriva. Noggrann loggundersökning ger dig de minimala vägar och funktioner som behövs för framgångsrik programdrift. Genom att tilldela dessa och inte mer kommer du dramatiskt att öka din systemsäkerhet.