Kunskapsbank

AppArmor och SELinux – två vägar till Mandatory Access Control

AppArmor och SELinux begränsar vad en process får göra även när traditionella Unix-behörigheter annars skulle tillåta operationen.

Ämnesspecifik teknisk illustration för artikeln AppArmor och SELinux – två vägar till Mandatory Access Control

För mig blir AppArmor och SELinux värdefullt först när resultatet går att testa med både positiva och negativa kontrollfall. AppArmor och SELinux begränsar vad en process får göra även när traditionella Unix-behörigheter annars skulle tillåta operationen.

AppArmor och SELinux i praktiken

Första byggstenen: AppArmor arbetar huvudsakligen med sökvägsbaserade profiler. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

En annan viktig del: SELinux bygger på etiketter och policyregler mellan säkerhetskontexter. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

Det tekniska ankaret: Enforcement ska kombineras med logganalys så att nekanden kan förstås. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

Det som ofta avgör kvaliteten: Policyundantag bör vara så smala som möjligt. Det behöver kopplas till ett tydligt syfte och kunna observeras i den miljö där kontrollen faktiskt ska användas.

Arbetsgång utan genvägar

  1. Börja med att identifiera den faktiska processen och dess dataflöden.
  2. Kör i permissive eller complain-läge när en ny policy observeras.
  3. Samla legitima nekanden och justera policyn.
  4. Växla till enforcement först efter funktionstest.
  5. Behåll policyn i versionskontroll.

För AppArmor och SELinux håller jag därför införandet i små steg. Då går det att skilja ett säkerhetsproblem från ett rent driftfel och att rulla tillbaka just den ändring som gav ett oväntat resultat.

Ett testbart exempel

Om en tjänst plötsligt inte kan läsa sin datakatalog kontrollerar jag först MAC-loggarna. Att ändra chmod till 777 kan dölja den verkliga orsaken och samtidigt skapa ett nytt säkerhetsproblem.

När en bra idé blir fel i drift

  • Att stänga av MAC helt när en applikation kräver ett litet undantag.
  • Att generera bred policy direkt från allt som råkar ske under ett test.
  • Att glömma att filers etiketter kan vara en del av problemet i SELinux.

Efterkontroll

För AppArmor och SELinux vill jag avsluta med mätbara efterkontroller i stället för att nöja mig med att en statusruta visar ”enabled”. De viktigaste kontrollerna här är:

  • Förväntade operationer tillåts.
  • Otillåtna fil- eller nätverksoperationer nekas.
  • Policyändringen kan återskapas på en ny host.

Ett negativt test hör också till AppArmor och SELinux: den väg, identitet eller operation som inte ska vara tillåten ska misslyckas på ett förutsägbart sätt. Då kan nästa tekniker upprepa kontrollen och förstå både avsikten och gränsen.

Slutsats

AppArmor och SELinux – två vägar till Mandatory Access Control handlar därför inte om att samla fler säkerhetsinställningar. Det handlar om att minska en konkret risk med en kontroll som har tydligt scope, tydlig ägare och ett verifierbart resultat. När före-läge, förändring och eftertest dokumenteras blir säkerhetsarbetet både säkrare och lättare att förvalta.