In een indirecte interpretatie van het principe van Kerckhoff in cryptografie – moet een cryptografisch systeem veilig blijven, zelfs als alles over het systeem, behalve de sleutel, bekend is bij de aanvaller.
Dit principe vormt de basis van een belangrijke waarheid over moderne beveiliging, namelijk dat onbekendheid niet noodzakelijkerwijs bescherming biedt. Op dezelfde manier kan containerisatie, een krachtig hulpmiddel bij moderne software-implementatie, laterale bewegingen binnen een netwerk voorkomen als het correct wordt geïmplementeerd, maar het voorkomt niet dat een app binnen de container wordt gecompromitteerd.
Containers bieden gemak, maar zonder sterke beveiliging brengen ze ook risico's met zich mee. Het is dan ook niet verwonderlijk dat 60% van de containerimages die in productieomgevingen worden uitgevoerd, vol zitten met bekende kwetsbaarheden, waardoor cyberdreigingen vrij spel hebben.
Hoe beschermt u uw containers tegen mogelijke inbreuken? Het antwoord begint met een uitgebreide checklist voor containerveiligheid die kwetsbaarheden op elk niveau aanpakt, zodat er geen gaten blijven bestaan.
In dit bericht delen we een checklist voor containerveiligheid en enkele best practices die u helpen een ondoordringbare vesting te creëren om uw containers te beveiligen.
Wat is containerveiligheid?
Containerveiligheid is het proces waarbij gecontaineriseerde applicaties, samen met de infrastructuur die ze ondersteunt, gedurende hun hele levenscyclus worden beschermd tegen kwetsbaarheden en bedreigingen.
Dit omvat het beveiligen van de volledige stack, van de containermotor, het hostbesturingssysteem en het orchestrationplatform (zoals Kubernetes) tot de containers zelf.
Een belangrijk onderdeel van containerbeveiliging is continu scannen, beginnend bij de basisimages tot aan de applicatiecode binnen containers.
U moet actief controleren op runtime-risico's die kunnen duiden op een aanval, terwijl u ervoor zorgt dat de gebruikte containerimages afkomstig zijn van betrouwbare bronnen en vrij zijn van bekende kwetsbaarheden.
U moet ook de isolatie van de container feilloos uitvoeren. Controleer nogmaals op zwakke plekken, zoals privilege-escalatie, verkeerd geconfigureerde netwerken, enzovoort.
Er zijn verschillende andere maatregelen die u kunt nemen om uw omgeving actief te ontdoen van bedreigingen. Met een sterke set containerbeveiligingsprotocollen of checklists die een reeks praktijken, tools en beleidsregels omvatten, kunt u de hele levenscyclus van containers beveiligen, van ontwikkeling en implementatie tot runtime en buitengebruikstelling.
Het belang van een checklist voor containerveiligheid
Containeromgevingen zijn een doolhof van bewegende delen. Als u de beveiliging ervan wilt beheren, hebt u een systeem nodig. Door richtlijnen of checklists bij de hand te houden, kunt u de tijd verkorten die nodig is om een volledig beveiligde Docker- of Kubernetes-container succesvol te implementeren.
Behalve tijdwinst heeft een beveiligingschecklist nog verschillende andere voordelen:
- Standaardisatie: Het standaardiseren van elke stap in de levenscyclus van een container is essentieel om uniformiteit te garanderen en kritieke fouten te voorkomen. Wanneer mensen samenwerken, is er altijd kans op menselijke fouten. Duidelijke richtlijnen voor taken zorgen ervoor dat iedereen op één lijn zit en dat alles soepel verloopt.
- Uitgebreide dekking: Gecontaineriseerde omgevingen bestaan uit meerdere bouwstenen, zoals images, registers, netwerken en runtime. Het uitvoeren van een controle voordat deze elementen in het systeem worden opgenomen, moet verplicht zijn. Dit kan onder meer bestaan uit het scannen van images, toegangscontroles, netwerksegmentatie en runtime-monitoring.
- Efficiëntie en consistentie: Een checklist is slechts een extra stap om een veilige container te garanderen, waardoor uw activiteiten nog efficiënter en consistenter worden. Bovendien hebben uw teams een referentiepunt voor best practices op het gebied van beveiliging, waardoor de kans dat ze een stap overslaan kleiner wordt.
- Naleving: Gezien het toenemende aantal cyberdreigingen en datalekken hebben overheden en regelgevende instanties strenge wettelijke eisen vastgesteld. Een goed gedefinieerde checklist voor containerveiligheid helpt bij het waarborgen van compliance door het afdwingen van best practices zoals rolgebaseerde toegangscontrole (RBAC), beeldscanning en naleving van CIS-benchmarks voor Docker en Kubernetes. Het zorgt ook voor logboeken en monitoring voor audits en voldoet aan de vereisten van kaders zoals GDPR, HIPAA of PCI-DSS.
- Proactieve dreigingsbeperking: Het is altijd een goed idee om de volledige levenscyclus van een container twee keer door te nemen voordat u deze implementeert, en een checklist helpt u daarbij. De eerste keer zorgt ervoor dat alle beveiligingsmaatregelen zijn geïmplementeerd, terwijl de tweede keer dient als een validatiestap om gemiste configuraties of opkomende dreigingen op te sporen voordat ze kritieke problemen worden.
De 10 belangrijkste checklists voor containerveiligheid
Nu we het belang van de checklist voor containerveiligheid hebben vastgesteld, is het tijd om dieper te graven en te begrijpen welke veiligheidscontroles u moet implementeren.
Hier is een Docker- en Kubernetes-beveiligingschecklist die beknopt alle stappen opsomt die uw beveiligingsprotocol moet bevatten:
-
Beveiliging van afbeeldingen
- Gebruik vertrouwde en geverifieerde basisimages uit officiële repositories.
- Beperk wie images naar/uit het register kan pushen/pullen
- Scan containerimages regelmatig op kwetsbaarheden.
- Blokkeer de implementatie van kwetsbare images of beperk hun netwerktoegang
- Detecteer gevoelige gegevens zoals sleutels of tokens voordat u afbeeldingen pusht
- Zorg ervoor dat afbeeldingen minimaal zijn en alleen de noodzakelijke afhankelijkheden bevatten.
- Implementeer geautomatiseerde patching en updates van afbeeldingen.
-
Toegang en machtigingen
- Vermijd het gebruik van containers met root-rechten.
- Voorkom dat containers buitensporige rechten krijgen of onnodige systeemaanroepen doen.
- Implementeer het principe van minimale rechten voor containers en gebruikers.
- Bepaal welke containers specifieke bestanden of mappen kunnen wijzigen.
- Gebruik PodSecurity Admission om de toegang tot gevoelige mogelijkheden en bronnen te beperken.
- Gebruik op rollen gebaseerde toegangscontrole (RBAC) om de toegang tot kritieke API-eindpunten en containerbronacties zoals
`get`, `list`, `watch`, of `
secrets.
` - Gebruik multi-factor authenticatie (MFA) voor toegang tot containeromgevingen.
-
Netwerkbeveiliging
- Isoleer containers met behulp van netwerksegmentatie (bijv. Docker-netwerkbeleid).
- Bescherm openbare diensten door verkeer op verschillende poorten en protocollen te filteren.
- Gebruik versleutelde communicatie (bijv. TLS) voor gegevens die worden verzonden.
- Gebruik Layer 7-controles met een servicemesh en diepgaande pakketinspectie om HTTP/HTTPS-beleid af te dwingen.
- Beperk Layer 3- en 4-verkeer met behulp van op IP en poorten gebaseerde toegangscontrole om de toegang te beperken.
- Certificeer dat de gekozen Container Network Interface (CNI)-plug-in Kubernetes-netwerkbeleid ondersteunt.
- Pas inkomend en uitgaand netwerkbeleid toe op alle workloads, met standaardbeleid dat al het verkeer weigert.
- Zorg ervoor dat kritieke componenten (Kubernetes API, Kubelet API, enz.) niet openbaar worden gemaakt.
- Versleutel verkeer en gebruik Mutual TLS (mTLS) om de communicatie tussen workloads binnen clusters te authenticeren.
-
Runtime-beveiliging
- Controleer het runtime-gedrag van containers op verdachte activiteiten.
- Beperk de toegang van containers tot hostbronnen met behulp van Linux-beveiligingsmodules.
- Implementeer bronbeperkingen (CPU, geheugen) om denial-of-service-aanvallen te voorkomen.
- Beperk de toegang tot de runtime-API en daemon om manipulatie van live containers te voorkomen.
- Log en controleer alle containeractiviteiten in realtime.
-
Beheer van kwetsbaarheden en patches
- Scan containers en hostsystemen regelmatig op kwetsbaarheden.
- Scan configuratiebestanden op naleving in uw continue integratiepijplijn en neem geautomatiseerde controles op voor verkeerde beveiligingsconfiguraties.
- Gebruik beeldondertekening (Docker Content Trust) om de integriteit van de containerbeelden te verifiëren.
- Voer statische codeanalyse uit om kwetsbaarheden in een applicatiecode en de afhankelijkheden ervan te identificeren.
-
Beheer van geheimen
- Sla gevoelige gegevens (API-sleutels, wachtwoorden) op in tools voor geheimenbeheer.
- Vermijd het hardcoderen van geheimen in containerimages of omgevingsvariabelen.
- Voer periodieke audits uit en controleer wie toegang heeft tot de Secrets API en wissel encryptiesleutels af.
- Versleutel gegevens in rust door de Kubernetes API-server te configureren om geheime gegevens in etcd te versleutelen, voor een extra beschermingslaag.
- Configureer tokens met kortere vervalperiodes om de impact van een gecompromitteerd token te verminderen.
-
Orchestration Security
- Beveilig containerorkestrators (bijv. Docker) met strenge toegangscontroles.
- Schakel op rollen gebaseerde toegangscontrole (RBAC) in en zorg voor zo min mogelijk rechten voor gebruikers en serviceaccounts.
- Implementeer versiebeheer (zoals Git) voor servicedefinities en configuraties van orchestrators.
- Schakel logboekregistratie in voor alle API-verzoeken aan het control plane van de orchestrator (bijvoorbeeld auditlogboeken in Kubernetes).
-
Beveiligde configuratie
- Schakel onnodige services of poorten in containers uit.
- Gebruik alleen-lezen bestandssystemen voor containers die geen schrijftoegang vereisen.
- Zorg ervoor dat containers waar mogelijk stateless en onveranderlijk zijn.
-
Back-up en noodherstel
- Maak regelmatig back-ups van containerconfiguraties en applicatiegegevens.
- Zorg ervoor dat back-ups consistent zijn door gebruik te maken van etcd snapshot save-opdrachten om een back-up op een bepaald moment te maken.
- Voer rampsimulaties uit waarbij u opzettelijk een clustercomponent laat falen en controleer of het herstelproces naar verwachting werkt.
-
Naleving en auditing
- Zorg ervoor dat u voldoet aan de beveiligingsnormen van de sector (bijv. GDPR, PCI-DSS).
- Controleer regelmatig het beveiligingsbeleid voor containers, logboeken en configuraties voor toegangscontrole.
- Voer regelmatig penetratietests uit op containeromgevingen.
CNAPP Marktgids
Krijg belangrijke inzichten in de staat van de CNAPP-markt in deze Gartner Market Guide for Cloud-Native Application Protection Platforms.
LeesgidsBest practices voor containerveiligheid
Hoewel we u een checklist voor containerveiligheid hebben gegeven, volgen hier enkele best practices voor containerveiligheid die uw gecontaineriseerde omgevingen versterken:
- Gebruik vertrouwde basisimages: De basis van uw container is gebouwd op de images. Zorg er dus voor dat u ze van een betrouwbare bron haalt. Kies ook voor een geautomatiseerde tool voor het scannen van images en het regelmatig toepassen van patches. Gebruik tools die rechtstreeks in uw CI/CD-pijplijn kunnen worden geïntegreerd om basisimages te controleren terwijl ze door elke fase gaan.
- Implementeer het principe van minimale rechten: Houd de rechten van containers strikt in de hand. Voorkom dat containers als root worden uitgevoerd en beperk de toegang tot systeembronnen om potentiële bedreigingen voor te blijven. Gebruik CIS-benchmarks om het host-besturingssysteem te versterken door ervoor te zorgen dat er zo min mogelijk services worden uitgevoerd en overweeg tools zoals SentinelOne om het aanvalsoppervlak op systeemniveau te verkleinen. Dit is belangrijk omdat containers de host-kernel delen.
- Beveilig Infrastructure as Code (IaC): Om te voorkomen dat risicovolle configuraties in productie terechtkomen, kunt u IaC-sjablonen zoals Kubernetes-manifesten gebruiken die vóór de implementatie scannen op beleidsschendingen en verkeerde configuraties (zoals te permissieve IAM-rollen of blootgestelde poorten).
- Versterking van de cloudconfiguratie: Zorg voor isolatie van cloudresources via VPC's en privé-netwerken en versterk clouddiensten met behulp van toegangscontrole met minimale rechten. Implementeer continue monitoring voor verkeerde cloudconfiguraties (zoals open S3-buckets of blootgestelde beheerinterfaces).
- Externe kwetsbaarheden verminderen: Kwetsbaarheden in afhankelijkheden van derden (meestal gevonden tijdens builds) kunnen zwakke plekken in uw applicaties veroorzaken. U kunt het scannen van afhankelijkheden op bekende CVE's in zowel OS- als applicatieafhankelijkheden automatiseren. Werk bibliotheken en pakketten regelmatig bij.
- Orchestrator- en runtime-benchmarkcontroles: Gebruik orchestrator-beveiligingscontroles zoals Kubernetes-toegangscontrollers om beveiligingsbeleid af te dwingen vóór de implementatie. Implementeer runtime-benchmarkcontroles (bijv. Kubernetes CIS-benchmarks) om zowel orchestrators als actieve containers regelmatig te controleren.
- Netwerksegmentatie: Creëer en pas beleid toe om het containerverkeer te controleren en het aanvalsoppervlak te verkleinen. Microsegmentatie van gecontaineriseerde workloads beperkt de impact van een inbreuk en verbetert de netwerkbeveiliging.
- Beperking van resources: Door resourcebeperkingen toe te passen op de CPU, het geheugen en de opslag van elke container, kunt u voorkomen dat een container de systeembronnen uitput. Als de systeembronnen opraken, kunt u te maken krijgen met problemen met de servicevoorwaarden en andere operationele kwesties.
- Activiteiten monitoren en loggen: U moet in realtime reageren op beveiligingsrisico's. Zorg voor tools die inzicht geven in het gedrag van containers, zodat u bedreigingen snel kunt identificeren en beperken.
- Beveiligde CI/CD-pijplijn: Zorg ervoor dat uw CI/CD-pijplijn veilig is door beveiligingscontroles in te bouwen in elke fase van de levenscyclus van containers, van het vastleggen van code tot de implementatie. Dit helpt voorkomen dat er tijdens het ontwikkelingsproces kwetsbaarheden ontstaan.
- Beveiligingsupdates automatiseren: Gebruik automatiseringstools om beveiligingspatches en updates toe te passen op containers en orchestrators zonder downtime te veroorzaken.
- Naleving en handhaving van beleid: Controleer containers regelmatig om te voldoen aan het beleid van de organisatie en de regelgeving. Gebruik tools voor beleidsafdwinging om beveiligingsbeleid toe te passen in alle omgevingen en consistente beveiligingsnormen en naleving te handhaven.
Veelvoorkomende fouten op het gebied van containerveiligheid die u moet vermijden
In februari 2019 maakte het Docker-team de CVE-2019-5736 kwetsbaarheid. Door deze zwakke plek konden aanvallers de binaire code van de host overschrijven, toegang krijgen tot het hostsysteem en als root commando's uitvoeren binnen een container.
Verschillende organisaties, waaronder AWS, RedHat en Microsoft Azure, ontdekten deze kwetsbaarheid ook en pasten patches toe op hun producten.
In 2021 maakte de kwetsbaarheid CVE-2021-3490 misbruik van een fout in de Linux-kernel met betrekking tot de extended Berkeley Packet Filter (eBPF).
Door deze zwakke plek konden aanvallers willekeurige code uitvoeren op de host vanuit gecompromitteerde containers die toegang hadden tot eBPF via de standaard seccomp profielen van Kubernetes. Deze profielen beperkten de vereiste syscalls niet, waardoor bepaalde opstellingen kwetsbaar bleven.
Deze incidenten laten zien dat één klein overzicht in uw containerveiligheid de integriteit van uw applicaties in gevaar kan brengen en uw omgeving aan risico's kan blootstellen.
Andere veelvoorkomende fouten op het gebied van containerveiligheid waar u op moet letten, zijn:
- Ervan uitgaan dat openbare afbeeldingen veilig zijn, kan leiden tot gecompromitteerde implementaties. Vertrouw nooit externe afbeeldingen zonder een grondige beoordeling door ervaren ontwikkelaars.
- Door containers bloot te stellen aan te veel open kanalen vergroot u het aanvalsoppervlak. Laat containers niet blootgesteld staan met root-rechten en controleer netwerkinteracties op mogelijke zwakke punten.
- Het niet controleren en scannen van codebibliotheken op kwetsbaarheden voordat ze in containers worden geïntegreerd.
- Het niet bijhouden van nauwkeurige logboeken kan het moeilijk maken om beveiligingsproblemen snel op te sporen.
- Het negeren van CI/CD-pijplijnbeveiliging, zoals het overslaan van beveiligingscontroles tijdens het bouwen en implementeren, kan in een vroeg stadium van de ontwikkeling kwetsbaarheden introduceren.
SentinelOne Cloud Workload Security voor containers
U hebt een uniforme strategie voor alle knooppunten nodig om al uw gecontaineriseerde omgevingen effectief te beveiligen. Q2 is een toonaangevende financiële dienstverlener voor meer dan 1200 banken, vakbonden en financiële instellingen. Met meer dan 22 miljoen eindgebruikers en 65.000 containers in de openbare cloud, heeft Q2 SentinalOne's Cloud Workload Security for Containers geïmplementeerd in al zijn omgevingen geïmplementeerd. Net als Q2 kunt ook u profiteren van verschillende functies en voordelen van deze oplossing, op de hoogte blijven van eventuele afwijkingen en een sterke beveiligingspositie handhaven.
Belangrijkste functies en voordelen
- Uitgebreide hybride cloudworkloadbeveiliging in multi-cloudomgevingen, waaronder AWS, Azure, GCP en lokale datacenters
- Blokkeert ransomware, zero-day-exploits, cryptomijners en bestandsloze aanvallen
- Op eBPF gebaseerde agentarchitectuur biedt realtime zichtbaarheid op procesniveau van het besturingssysteem en biedt diepgaande telemetrie zonder afhankelijk te zijn van kernelmodules
- Statische AI-engine die bestandsarchitecturen analyseert op basis van een dataset van meer dan 500 miljoen malware-signaturen
- Gedrags-AI-engine die gebruikmaakt van temporele analyse en patronen in de loop van de tijd evalueert om kwaadaardig gedrag te detecteren dat statische detectie kan omzeilen
- Realtime detectie van aanvallen op machinesnelheid op servers, VMS, containers en Kubernetes
- Geautomatiseerd herstel, voor maximale beschikbaarheid van workloads
- Versnel onderzoeken en IR, en verbeter het opsporen van bedreigingen.
- Workload Flight Data RecorderTM.
- Versnel innovatie met runtime-beveiliging die niet in de weg staat.
- Geen kernelafhankelijkheden. Lage CPU- en geheugenoverhead.
- eBPF-architectuur, voor stabiliteit en prestaties
- Ondersteunt Docker, containers en cri-o-runtimes
- Bescherming tegen automatische schaalvergroting
- Real-time CWPP
- Ondersteunt zelfbeheerde en beheerde K8s-services
- Ondersteunt 14 toonaangevende Linux-distributies, waaronder Amazon Linux 2023
- Integratie met Snyk (apart aan te schaffen)
Bovendien helpt SentinelOne's Cloud-Native Application Protection Platform (CNAPP) u de containerbeveiliging te verbeteren met functies zoals Kubernetes Security Posture Management (KSPM) en Cloud Security Posture Management (CSPM), zodat uw cloud-native applicaties compliant en veilig blijven.
SentinelOne in actie zien
Ontdek hoe AI-gestuurde cloudbeveiliging uw organisatie kan beschermen in een één-op-één demo met een SentinelOne productexpert.
Vraag een demo aanFAQs
Om de veiligheid van containers te waarborgen, moet u een brede aanpak hanteren die vele lagen omvat. Begin met:
- Gebruik vertrouwde basisimages en scan deze regelmatig op kwetsbaarheden. Houd de images minimaal om het aanvalsoppervlak te verkleinen.
- Pas het principe van minimale rechten toe door containers te beperken tot alleen de rechten die ze nodig hebben en ze nooit als root uit te voeren.
- Monitor continu de containeractiviteit in realtime om verdacht gedrag te detecteren en voer kwetsbaarheidsscans uit in elke fase, van bouw tot runtime.
- Zorg er ten slotte voor dat uw host en orchestrator goed zijn beveiligd met beveiligingspatches en netwerkbeleid om de communicatie tussen containers te beperken en potentiële bedreigingen te verminderen.
Het Container Security Initiative (CSI) bestaat uit zeven hoofdonderdelen. Deze zijn:
- Beelden scannen
- Runtime beveiligen
- Toegang controleren
- Netwerken beveiligen
- Compliance beheren
- Bewaken
- Reageren op incidenten.
SentinelOne Singularity Cloud Workload Security (CWS) platform speelt een grote rol in containerveiligheid. Het beveiligt gecontaineriseerde apps gedurende hun hele levensduur. Het platform zorgt voor automatische bescherming tijdens runtime, behandelt kwetsbaarheden en dwingt naleving af. Het werkt samen met Kubernetes en andere systemen om containers in realtime te bekijken en te beveiligen, zowel in publieke als private clouds.
De levenscyclus van containerveiligheid bestaat uit vijf belangrijke stappen:
- Beveiliging van images: Begin met veilige, gecontroleerde images en controleer deze regelmatig op zwakke plekken.
- Beveiliging van de build: Zorg ervoor dat het buildproces van de container veilige regels en methoden volgt.
- Beveiliging van de implementatie: Gebruik veiligheidsregels, geef zo min mogelijk rechten en zet veilige netwerken op wanneer u containers implementeert.
- Beveiliging tijdens runtime: Houd containers in de gaten op vreemde acties, gebruik veiligheidsregels voor runtime en houd netwerken gescheiden.
- Buiten gebruik stellen: Haal containers uit gebruik en zorg ervoor dat alle privégegevens worden gewist.