Best Practices voor Container Security

Best Practices voor uw Container Security

Containers worden snel geadopteerd door organisaties wereldwijd. Volgens onderzoekers draaien er momenteel meer dan 3,5 miljard applicaties in Docker-containers, en 48% van de organisaties beheert containers op grote schaal met Kubernetes.

Containers hebben aantrekkelijke voordelen ten opzichte van de vorige generatie virtualisatietechnologie. Ze zijn vaak sneller, vereisen minder systeembronnen dan traditionele of hardware virtuele machineomgevingen en zijn eenvoudiger te beheren en te automatiseren dan virtuele machines (VM’s). In veel voorkomende scenario’s zijn containers bezig VM’s uit te faseren.

Wat zijn containers?

Containers zijn op zichzelf staande modules die complete, portable applicatie-omgevingen vertegenwoordigen. Ze bevatten alles wat een applicatie nodig heeft om te draaien. De code van de applicatie, afhankelijkheden, bibliotheek, runtime en systeemtools zijn allemaal “vervat” in de container. Als gevolg hiervan hebben containers het proces van het ontwikkelen van een applicatie lichter, eenvoudiger, sneller en krachtiger dan ooit gemaakt.

Meerdere containers kunnen op een gedeelde infrastructuur draaien en dezelfde kernel van het besturingssysteem gebruiken, maar ze zijn geabstraheerd van die laag en hebben weinig contact met de onderliggende hostingbronnen

Met de opkomst van cloud computing en de verfijning van applicatie-ontwikkelingstechnologieën, zijn ontwikkelaars moe geworden van het omgaan met OS en applicatie-afhankelijkheden van virtuele machines. De adoptie van containers en container platformen, zoals Kubernetes en Docker, is het resultaat van twee factoren: een vraag naar versnelde time-to-market mogelijk gemaakt door DevOps, en een verlangen naar applicatie portabiliteit tussen clouds.

Platform

Kubernetes is een van de belangrijkste platforms die helpt bij het optimaliseren en implementeren van een containergebaseerde infrastructuur. Meer specifiek is het een open-source systeem dat wordt gebruikt voor het beheren van gecontaineriseerde workloads die organisaties in staat stellen processen zoals applicatieontwikkeling, implementatie en beheer te automatiseren.

Als een relatief nieuw open-source platform is er een enorme kans voor het beveiligen van Kubernetes. Het is belangrijk om een veilige omgeving te creëren, vooral wanneer open source code in een applicatie van een derde partij wordt gebracht. Het feit dat Kubernetes een wijdvertakt platform is met zoveel integraties voor het beheren van containers maakt het gemakkelijk om een geautomatiseerde, systematische set van processen te bouwen die beveiliging inbouwt in de kern van het Kubernetes bouw- en implementatieproces.

Beveiliging

Containerbeveiliging is het proces van het implementeren van tools en beleid om ervoor te zorgen dat containerinfrastructuur, apps en andere containercomponenten worden beschermd.

Een van de belangrijkste dingen om te weten over containerbeveiliging is dat het de veranderende aard van de IT-architectuur zelf weerspiegelt. De opkomst van cloud native computing heeft de manier waarop applicaties worden gemaakt fundamenteel veranderd. Daarmee moeten we ook de manier waarop we ze beveiligen wezenlijk aanpassen.

In het verleden betekende cyberbeveiliging het beschermen van een enkele “perimeter”. Containers hebben dit concept onbruikbaar gemaakt door nieuwe lagen van complexiteit toe te voegen. Containeromgevingen hebben veel meer abstractielagen die gespecialiseerde tools vereisen om deze nieuwe applicaties te interpreteren, bewaken en beschermen.

De uitdaging voor organisaties is om eerst te begrijpen hoe de vele lagen van een cloud native computing-omgeving op elkaar inwerken, en vervolgens de juiste tools te vinden om een herhaalbare reeks processen op te bouwen om elke laag te beveiligen.

De meeste voorkomende problemen

Verkeerde configuratie

Als er fouten zitten in de configuratie van een container image, kan zelfs een volledig bijgewerkte en veilige container blootgesteld worden aan kwaadwillenden. Een verkeerde configuratie kan een gebruiker per ongeluk te veel privileges geven voor toegang tot een container. Een ander voorbeeld is de integratie van SSH-mogelijkheden in de container, waardoor hackers toegang kunnen krijgen tot een kwetsbare container.

Het zijn vooral de kleinere bedrijven, die over het algemeen standaard configuratie-instellingen gebruiken versus meer geavanceerde configuratiemogelijkheden. Het zijn deze basis misconfiguraties of het accepteren van standaardinstellingen die veel minder veilig zijn dan aangepaste instellingen.

Slecht gescreende container images van derden

Naast misconfiguratie zijn aangetaste images of layers het op een na belangrijkste risico voor containers. Het is niet ongewoon voor ontwikkelaars om container images van derden uit container registers te gebruiken. Ze kunnen beschikbaar worden gesteld via open-source repositories voor eenvoudige implementatie. Images kunnen niet direct worden gewijzigd. Als de nodige zorgvuldigheid niet wordt betracht en de images niet goed worden doorgelicht, kan een image met malware in een systeem terechtkomen. Zodra de malware zich naast andere containers in de productie bevindt, kan deze zich gemakkelijk verspreiden naar andere containers of naar een hostbesturingssysteem.

Wanneer een kwetsbaarheid in de code wordt gevonden, moet de container worden verwijderd en vervangen door een nieuwe container met een bijgewerkt image. Het belangrijkste probleem hier is hoe lang een kwetsbaarheid onopgemerkt kan blijven totdat een scanner die containers in productie bekijkt, de kwetsbaarheid vindt.

Bugs

Het volgende probleemgebied komt voort uit kwetsbaarheden, zowel bekende als zero-day kwesties. Dit geldt voor containers zelf als ook de platformen die worden gebruikt. Zo konden begin dit jaar hackers een bug in de Linux-kernel misbruiken om Kubernetes-containers te misbruiken en toegang te krijgen tot kritieke bronnen. In 2021 werd een groot probleem gevonden dat heeft geleid tot “Azurescape”.

Onderzoekers ontdekten een keten van exploits waarmee een kwaadwillende Azure-gebruiker kon infiltreren in de cloudinstanties van andere klanten binnen Microsofts multitenant container-as-a-service-aanbod. Deze kritieke crossaccount containerovername werd omschreven als een “nachtmerriescenario voor de publieke cloud.”

Best practices

In het kort zijn containers dus op verschillende manieren kwetsbaar. Zo kunnen slecht geconfigureerde images een aanvaller in staat stellen in te breken in een bedrijfsnetwerk. Images bevatten soms authenticatiesleutels of certificaten die aanvallers kunnen gebruiken bij verdere aanvallen. Opensourcesoftware die in images wordt gebruikt, bevat vaak kwetsbaarheden. Toepassingen die in containers worden uitgevoerd, kunnen verouderd, ongepatcht of onveilig zijn. Ze kunnen zelfs verborgen malware bevatten.

Als een hacker in slechts één container inbreekt of toegang krijgt tot de host, kan hij mogelijk de controle krijgen over elke container die in een onderneming draait. Hou de volgende zaken goed in het oog:

  1. Images beveiligen
    Container images worden gebruikt om containers te maken. Een verkeerde configuratie of kwaadaardige activiteit in container images kan kwetsbaarheden introduceren in containers die in productie worden ingezet. Om de gezondheid van uw gecontaineriseerde workloads en applicaties te waarborgen, moet u container images beveiligen.
  2. Registers beveiligen
    Container images worden meestal opgeslagen in private of publieke registries. Het is cruciaal om deze registers te beveiligen om er zeker van te zijn dat alle teamleden en medewerkers images gebruiken die zo vrij mogelijk zijn van kwetsbaarheden.
  3.  Deployment beveiligen
    Beveilig de doelomgeving door het onderliggende host-besturingssysteem te beschermen. Voeg zo weinig mogelijk toe – Verwijder alle componenten die de applicatie niet nodig heeft. Gebruik betrouwbare images – Als u het image niet vanaf nul aanmaakt, moet u images kiezen die betrouwbaar zijn.
  4. Runtime beveiligen
    Maak aparte virtuele netwerken voor je containers – Dit introduceert een niveau van isolatie dat het aanvalsoppervlak kan verkleinen. Pas het principe van de minste privileges toe – Sta alleen connectiviteit toe tussen containers die het echt nodig hebben. Stel alleen de poorten open die de applicatie dienen – Stel geen andere poorten open, behalve SSH. Pas dit principe toe op zowel containers als de onderliggende machines.
  5. Gebruik tijdelijke containers.
    Containers zijn ontworpen om vluchtig en lichtgewicht te zijn. Ze zijn niet bedoeld om als servers te worden gebruikt. Je moet niet voortdurend bestanden toevoegen aan de container of slechts om de paar weken of maanden updaten. Deze aanpak kan de beveiliging verzwakken, omdat je in wezen een groter aanvalsoppervlak creëert dat niet regelmatig wordt onderhouden.
  6. Containerbeveiligingstools gebruiken
    Container platformen, zoals Kubernetes, bieden native beveiligingsmogelijkheden. Deze controles zijn echter niet voldoende om de veiligheid en gezondheid van gecontaineriseerde applicaties te garanderen. Een bijzondere uitdaging is ervoor te zorgen dat geen van de softwarecomponenten van derden kritieke kwetsbaarheden bevat. U kunt beveiligingsrisico’s beperken door beveiligingshulpmiddelen voor containers te gebruiken, die u kunnen helpen bij het beheren van toegang, het testen van beveiliging en het beschermen van uw infrastructuur. U kunt tools gebruiken die u helpen inzicht te krijgen in de activiteit van uw gecontaineriseerde applicaties. Testfuncties kunnen u helpen beveiligingsbeleid te ontwikkelen, aanvallen van veelvoorkomende bedreigingsbronnen te simuleren en zero-day kwetsbaarheden te ontdekken.
  7. Containeractiviteit bewaken
    Gecontaineriseerde workloads zijn zeer dynamisch. Eén container image heeft vaak meerdere draaiende instanties. Bovendien worden nieuwe images en nieuwe versies in hoog tempo geïmplementeerd. Problemen kunnen zich daarom snel verspreiden over meerdere containers en applicaties. Daarom is het van groot belang om deze problemen snel te identificeren en bij de bron op te lossen.

Meer vragen dan antwoorden?

Meer weten over welke specifieke cloud beveiligingsoplossingen beschikbaar zijn? Lees verder op onze Cloud securitypagina. Of neem contact op met SolidBE en laat u persoonlijk informeren door één van onze beveiligingsspecialisten.

Vragen?

U kunt altijd contact met SolidBE opnemen mocht u een vraag hebben over een van de besproken onderwerpen (Cloud, Open Source, Software ) of wanneer u assistentie nodig heeft om netwerk- of security vraagstukken op te lossen. Wij helpen u graag bij de beheren van een veilige en solide ICT omgeving!

Auteur

Maarten Schouten is Digital Specialist bij SolidBE. Hij doet onderzoek en schrijft artikelen over de meest uiteenlopende onderwerpen binnen het netwerk en security domein. Ook houdt hij het nieuws bij op ons blog. Claude en Gemini worden ingezet als tools voor het factchecken van teksten, het verifiëren van bronnen en het controleren van gegevens.

Scroll naar boven