Secrets, identitet och runtime

Säkerhet under körning

Hur du ser avvikande beteende när mjukvara körs och kan agera innan små problem blir incidenter.

Körningssäkerhet fokuserar på att detektera och reagera på hot medan arbetsbelastningar körs aktivt i produktion. Till skillnad från statisk analys eller kontroller före driftsättning tillhandahåller körningssäkerhet ett sista försvarslager som fångar attacker som sluppit igenom tidigare kontroller.

Lärandemål

Det här ska du kunna efter genomläsning.
  • Förklara vad körningsövervakning fångar upp och varför det spelar roll.
  • Skilja mellan händelser i körning, granskningsloggar och hälsokontroller.
  • Beskriva en praktisk väg från larmtriage till incidenthantering.

I korthet

En snabb mental modell innan du går på djupet.
Detektion
  • Körningsövervakning
  • Falco
  • Händelser i körning
Bevislager
  • Granskningsloggar
  • Hälsokontroller
  • Systemsammanhang
Respons
  • Larmtriage
  • Inneslutning
  • Incidenthantering

Hotdetektion vid körning

Hotdetektion vid körning övervakar beteendet hos körande arbetsbelastningar efter tecken på kompromiss. Oväntade processopens, ovanliga systemanrop, nätverksanslutningar till nya destinationer, filskrivningar i känsliga kataloger och privilegieeskaleringsförsök. Till skillnad från statisk analys eller kontroller före driftsättning fungerar körningsdetektion på vad arbetsbelastningar faktiskt gör.

Moderna körningsdetektionsverktyg använder eBPF (extended Berkeley Packet Filter), en Linux-kärnteknik som säkert kör övervakningskod i kärnan, och observerar varje systemanrop med minimal overhead. Falco, Tetragon och liknande verktyg bygger på eBPF och kan instrumentera all containeraktivitet på en nod utan att modifiera containerarna.

Varningströtthet är den primära operativa utmaningen i körningshotdetektion. En upptagen container genererar miljontals systemanrop per minut, bara en liten del är säkerhetsrelevant. Effektiv detektion kräver investering i regelinställning, undertryckning av kända säkra baslinjemönster och fokusering av varningar på signaler med hög säkerhet.

Säkerhet för containerkörning

Containers körs på en delad kärna, vilket gör kärnattackytan till ett verkligt bekymmer. Säkerhetsprofiler som seccomp (systemanropsfiltrering), AppArmor och SELinux begränsar vad en containerprocess kan göra på kärnivå. En container som bara behöver servera HTTP-trafik bör inte kunna anropa mount() eller skapa råa socketar, seccomp-profiler verkställer detta.

Ytterligare körningshärdning inkluderar att köra containers som icke-root-användare, att ställa in rotfilsystemet som skrivskyddat, att ta bort alla Linux-kapaciteter utöver det minimum som krävs, att inaktivera privilegieeskalering och att undvika delning av värdnamnrymder. Dessa inställningar specificeras i Kubernetes pod-säkerhetskontexten.

Detektion av containerrymning är en viktig komponent i körningssäkerhet. En rymning inträffar när en process inuti en container flyr namnrymsgränsen och får åtkomst till värdsystemet. Detektionssignaler inkluderar processer som får åtkomst till värdfilsystemmappar utanför deras förväntade monteringar och ovanlig interaktion med containerruntimesocketen.

Oföränderlig infrastruktur

Oföränderlig infrastruktur är praxis att driftsätta containers och virtuella datorer som aldrig modifieras efter driftsättning. När en förändring behövs byggs en ny avbildning, testas och driftsätts för att ersätta den gamla. Den körande instansen lappas aldrig direkt, loggas aldrig in i för felsökning och uppdateras aldrig med direkta konfigurationsändringar.

Filintegritetövervakning (FIM) kompletterar oföränderlig infrastruktur genom att detektera när filer i containern eller VM:en modifieras vid körning. Om en containers filsystem ändras efter driftsättning på sätt som inte förväntades är detta en stark signal om kompromiss. Körningssäkerhetsverktyg kan varna om oväntade filsystemsmodifieringar i känsliga kataloger.

Den praktiska innebörden av oföränderlig infrastruktur för incidenthantering är betydande. Om en container misstänks vara komprometterad är rätt åtgärd att bevara containern för rättsmedicin och sedan avsluta och ersätta den med en ren instans. Att försöka lappa eller rensa en potentiellt komprometterad körande container är riskabelt och opålitligt.

Säkerhetsobservabilitet

Heltäckande observabilitet är en förutsättning för effektiv körningssäkerhet. Loggar, mätvärden och spår måste samlas in från varje arbetsbelastning, centraliseras i ett frågningsbart system och lagras tillräckligt länge för att stödja incidentutredningar. I Kubernetes-miljöer är Kubernetes granskningsloggen en kritisk datakälla.

Säkerhetsobservabilitet kräver att välja rätt loggkällor och säkerställa att de är skyddade. Applikationsloggar avslöjar vad applikationen gör. Kubernetes granskningsloggar avslöjar kontrollplansaktivitet. Körningssäkerhetsloggar avslöjar händelser på kärnivå. Nätverksflödesloggar avslöjar kommunikationsmönster. Tillsammans ger dessa lager en fullständig bild av ett angrepp.

Att skicka säkerhetsloggar till en extern, oföränderlig destination är viktigt för deras tillförlitlighet. En angripare med tillräcklig klusteråtkomst kan modifiera loggar i klustret. Att exportera loggar till en S3-bucket med Object Lock eller en hanterad SIEM säkerställer att loggarna förblir pålitliga bevis för rättsmedicinsk utredning.

Incidenthantering i molnbaserade miljöer

Att reagera på en incident i en Kubernetes-miljö kräver andra metoder än traditionell serverforensik. Containers är efemera. När en varning aktiveras kan containern redan ha ersatts av en ny hälsosam instans, vilket förstör bevis för kompromissen. Incidenthanteringsprocesser måste ta hänsyn till detta genom att samla bevis omedelbart och automatiskt.

Inneslutning i molnbaserad incidenthantering använder plattformens egna kontroller. En misstänkt komprometterad pod kan isoleras genom att tillämpa en NetworkPolicy som blockerar all trafik, genom att avfärda noden den körs på, eller genom att ta bort labeln som inkluderar den i tjänstens lastbalanserare.

Granskning efter en incident i molnbaserade miljöer fokuserar på systemisk förbättring. Nyckelfrågor är. Hur fick angriparen initial åtkomst, vilka kontroller misslyckades eller saknades, vilka kontroller lyckades begränsa skadeverkningarna, och vilka ändringar av detektionsregler, säkerhetspolicyer eller infrastrukturkonfiguration skulle förhindra en upprepning.

Signaler att bevaka

Mönster som är värda att undersöka vidare.
  • En arbetslast startar plötsligt processer, nätverksanslutningar eller filskrivningar som ligger utanför dess normala mönster.
  • Säkerhetslarm blir brusiga eftersom ingen har definierat vad som är förväntat respektive misstänkt.
  • Det finns ingen tydlig rutin för att isolera en container, nod eller tjänst vid en incident.

FÖRDJUPNING

Körningsövervakning

Körningsövervakning är praxis att observera vad arbetsbelastningar faktiskt gör medan de körs i produktion, snarare än att bara analysera vad de förväntas göra utifrån sin källkod eller konfiguration. Målet är att detektera beteende som avviker från en etablerad baslinje. Ovanliga systemanrop, oväntade nätverksanslutningar, filmodifieringar i skyddade kataloger och privilegieeskaleringsförsök.

Modern körningsövervakning använder eBPF, en Linux-kärnteknik som tillåter program att köras säkert inuti kärnan och observera systemanrop, nätverkshändelser och filsystemsoperationer med minimal overhead. eBPF-baserade verktyg instrumenterar kärnan direkt, vilket innebär att de observerar all containeraktivitet på en nod utan att modifiera containerarna, injicera agenter i dem eller kräva avbildningsändringar.

Effektiv körningsövervakning kräver en etablerad beteendebaslinje. Vilka systemanrop gör den här tjänsten normalt? Vilka filer läser eller skriver den? Vilka nätverksanslutningar initierar den? Avvikelser från denna baslinje utlöser varningar. Vissa verktyg lär sig baslinjer automatiskt, andra använder manuellt definierade tillåtningsregler.

Körningsövervakning är den sista försvarslinjen mot attacker efter driftsättning. Även en container som passerade varje säkerhetsskanning, byggdes från en minimal basavbildning och driftsattes med en restriktiv säkerhetskontext kan fortfarande komprometteras om en nolldagssårbarhet upptäcks efter driftsättning. Körningsövervakning detekterar beteende efter utnyttjande.

Falco

Falco är ett öppen källkods molnbaserat körningssäkerhetsverktyg skapat av Sysdig och nu ett CNCF-avslutat projekt. Det använder en regelmotor för att detektera avvikande beteende i körande containers, Kubernetes-pods och Linux-värdar. Falco levereras med ett omfattande bibliotek av standardregler som täcker de vanligaste attackmönstren.

Falco fungerar genom att konsumera kärnhändelser via eBPF eller en kärnmodul, berika dem med Kubernetes-metadata (poddens namn, namnrymd, containeravbildning, etiketter) och matcha dem mot sin regeluppsättning. När en regel matchar genererar Falco en strukturerad varning som inkluderar all relevant kontext. Vilken container, vilken process, vilket systemanrop och vilken användare.

En kanonisk Falco-regel detekterar ett skal som skapas inuti en container. I en produktionsmiljö bör containers aldrig köra interaktiva skal, om en skalprocess visas inuti en körande container indikerar det nästan alltid antingen en angripare som uppnått kodexekvering, eller en utvecklare som har exec:at in i en container för felsökning.

Att driftsätta Falco effektivt kräver inställning. Standardregeluppsättningen genererar brus i miljöer som gör saker som Falco behandlar som misstänkt som standard (köra privilegierade containers, använda värdnätverksnamnrymden). Inställningsprocessen innebär att inaktivera regler som genererar godtagbara och förståeliga undantag och att lägga till anpassade regler för applikationsspecifika beteenden.

Körningshändelser

Körningshändelser är de individuella observationer som registreras av ett körningssäkerhetssystem. Ett systemanrop som görs av en process, en fil som öppnas eller skrivs, en nätverksanslutning som upprättas, en ny process som skapas, en användare som skapas, ett privilegium som eskaleras. Varje händelse är en datapunkt, säkerhetsvärdet kommer från att korrelera händelser över tid.

Händelser med hög signal kräver omedelbar uppmärksamhet eftersom de har få legitima förklaringar i en produktionsmiljö. Dessa inkluderar. En process som skriver till /etc/passwd, en container som skapar ett skal, en tjänst som gör DNS-frågor till nyligen sedda domäner, en process som försöker ladda en kärnmodul och en container som monterar värdfilsystemet.

Händelsevolym är en grundläggande utmaning i körningssäkerhet. En upptagen container kan generera miljontals systemanrop per sekund, men bara en liten del är säkerhetsrelevant. Körningssäkerhetsverktyg tillämpar aggressiv filtrering, kastar bort händelser som matchar säkra baslinjemönster och vidarebefordrar bara avvikande händelser för varning.

Händelser från körningssäkerhetsverktyg bör integreras med resten av säkerhetsdatapipelinen. Att korrelera en körningsvarning (ett skal som skapas i en container kl. 03:00) med en nätverksvarning (containern skapar en utgående anslutning till en okänd IP kl. 03:01) och en autentiseringslogg skapar en berättelse om angreppet som ingen enskild händelsekälla kan ge.

Granskningsloggar

Kubernetes granskningsloggar registrerar varje API-förfrågan till Kubernetes kontrollplan. Vem som gjorde förfrågan, vilken resurs som nåddes, vilken operation som utfördes och vilket resultatet var. Dessa loggar är åtskilda från applikationsloggar och körningshändelseloggar, de beskriver kontrollplansaktivitet.

Kubernetes granskningspolicy definierar vilka händelser som loggas och på vilken detaljnivå. Säkerhetsrelevanta händelser (ändringar av RBAC-policyer, åtkomst till hemligheter, podskapande, ändringar av nätverkspolicyer) bör loggas på Request- eller RequestResponse-nivå för att fånga hela innehållet i vad som ändrades.

Granskningsloggar är kritiska för att detektera komprometterade tjänstkonton och insiderhot. Om ett tjänstkonto som normalt bara läser från en specifik ConfigMap plötsligt börjar lista alla hemligheter i alla namnrymder, skapa nya pods med förhöjda privilegier eller ändra ClusterRoleBindings, fångar granskningsloggen all denna aktivitet i detalj.

Granskningsloggar måste skickas utanför klustret för att vara tillförlitliga. En angripare med kluster-admin-åtkomst kan modifiera eller radera loggar i klustret. Att exportera loggar till en extern, tilläggsbar destination (en S3-bucket med Object Lock, en hanterad SIEM) säkerställer att de förblir pålitliga bevis. Lagringstider för granskningsloggar bör anpassas till incidenthantering och efterlevnadskrav.

Hälsokontroller

Hälsokontroller är applikationsendpointarna som rapporterar om en arbetsbelastning fungerar korrekt. Kubernetes använder liveness-prober (som avgör om en container ska startas om), readiness-prober (som avgör om en container ska ta emot trafik) och startup-prober. Ur ett säkerhetsperspektiv tjänar hälsokontroller ytterligare syften. De kan ta bort komprometterade containers från produktionstrafik.

Liveness-prober får Kubernetes att starta om containers som är fastnade eller skadade. Om en angripares exploateringskod gör att hälsokontrollens endpoint slutar svara startar Kubernetes om containern, vilket i en oföränderlig infrastrukturmodell innebär att starta om från den ursprungliga avbildningen. Detta ger ett svagt men verkligt motståndskraft.

Readiness-prober kontrollerar trafikruttning på tjänstenivå. En container som misslyckas med sin readiness-prob tas bort från tjänstens endpoint-uppsättning och slutar ta emot nya förfrågningar. Detta begränsar skadeverkningarna medan utredning och åtgärd pågår.

Ett vanligt misstag är att implementera hälsokontrollsendpointarna som alltid returnerar HTTP 200 utan att inspektera något applikationstillstånd. En trivial liveness-prob som returnerar framgång oavsett faktisk applikationshälsa ger ingen användbar signal och fångar inte fastnade tillstånd, skadade konfigurationer eller saknade beroenden.

Varningstriage

Varningstriage är processen att utvärdera inkommande säkerhetsvarningar, bestämma deras prioritet och besluta om lämpligt svar. I ett körningssäkerhetssammanhang innebär detta att undersöka Falco-händelser, avvikelsedetektionsfynd och granskningslogghändelser för att skilja verkliga hot från falskt positiva, och eskalera säkra signaler för omedelbar incidenthantering.

Effektiv triage kräver kontext. En varning om att ett skal skapades inuti en container betyder olika saker beroende på vilken container det är, när det hände, vilken användare eller tjänstkonto som utlöste det, och om korrelerade varningar föregick det. Säkerhetsteam som investerar i anrikad varning och korrelering minskar dramatiskt medeltiden för triage.

Varningströtthet är den primära fienden till effektiva säkerhetsoperationer. När varningsvolymer är höga och falskt positiva frekvenser är höga lär sig analytiker att ignorera varningar. Lösningen är systematisk inställning. Undertrycka kända säkra mönster, öka varningskvaliteten snarare än kvantiteten och fokusera på de säkraste signalerna.

Triage-spelböcker dokumenterar de förväntade utredningsstegen för varje varningstyp. För en Falco-varning 'skal skapas i container' kan spelboken specificera. Identifiera pod och namnrymd, kontrollera Kubernetes granskningsloggar, granska nätverksflödesloggar och ta en ögonblicksbild av containerns filsystem om den fortfarande körs. Spelböcker minskar den kognitiva belastningen under högtrycks-händelser.

Grundläggande incidenthantering

Incidenthantering (IR) i molnbaserade miljöer skiljer sig från traditionell server-IR på flera grundläggande sätt. Containers är efemera. Bevis för en kompromiss kan vara borta innan en utredning börjar om containern redan har startats om eller ersatts. Infrastrukturen är programmerbar. En angripare med tillräcklig åtkomst kan dölja spår genom att radera loggar eller ta bort pods.

Bevisbevarelse är den första prioriteten när en kompromiss detekteras. Eftersom containers kan avslutas när som helst måste bevisinsamling automatiseras och utlösas omedelbart när en misstänkt händelse detekteras. Detta innebär. Att fånga containerns filsystem, exportera alla tillgängliga loggar och dokumentera Kubernetes resurstillståndet.

Inneslutning i molnbaserad IR använder plattformens kontroller snarare än nätverksbrandväggsregler. En misstänkt komprometterad pod kan isoleras genom att tillämpa en NetworkPolicy som blockerar all trafik, genom att avfärda noden eller genom att ta bort pod:en från tjänstens lastbalanserare. Dessa åtgärder kan automatiseras.

Granskning efter incidenter driver systematisk förbättring. Efter varje incident bör teamet svara på. Hur fick angriparen initial åtkomst, vilka kontroller misslyckades eller saknades, vilka kontroller lyckades begränsa skadan och vilka ändringar skulle förhindra upprepning. Svaren blir åtgärdspunkter i säkerhetsbacklogen. Denna förbättringsloop skiljer mogna säkerhetsprogram från dem som upprepade gånger reagerar på samma typer av incidenter.