Lancer nginx dans Docker
Versus dans Kubernetes
L'histoire récente regorge de failles et d'exploits sur des interfaces de management ouvertes sur Internet
phpMyAdmin
tomcat-manager
webmin
...
The hackers had infiltrated Tesla’s Kubernetes console which was not password protected / Source : redlock.io
Vraiment.
N'exposez pas la console.
Si vous ne l'utilisez pas, ne la déployez même pas.
kubectl
ou des UIs locales (octant, lens)zdnet - Un gang de crypto détourne des clusters K8s / bleeping computer - cryptominers on K8s via Argo Workflows
Kubernetes implémente le RBAC (Role-based access control)
Appliquez le principe de moindre privilège
Ex. alice a le droit de lister les containers dans le namespace default, mais pas de les supprimer ni les créer.
Si un compte utilisateur/application est compromis, les accès de l'attaquant seront limités à un périmètre donné :
kubectl auth can-i
kubectl who-can
Pas de gestion des (vrais) utilisateurs. Les applications/démons ont des ServiceAccounts authentifiés par :
Ajouter une authentification tierce de type OIDC + RBAC
Tous les flux devraient être chiffrés, en particulier ceux de Kubernetes lui-même (api-server, etcd, ...)
Point Captain Obvious : Si les flux ont été chiffrés, il sera plus difficile de récupérer des identifiants
Plus difficile de faire du MITM
2000 Docker engines are insecurely exposed to the Internet unit42 : Docker API + Graboid
[...] but it was possible to connect from….the Internet 4armed : etcd + Digital Ocean
our coworker’s server was also publicly exposing the kubelet ports Handy + kubelet
Par défaut, Kubernetes autorise tout container à se connecter à n'importe quel autre #OpenBar
Monzo Bank a mis en place des Network Policies pour la totalité de ses 1500 microservices :
Déléguer beaucoup d'aspects réseau+sécu au Service Mesh :
It's secure, because it's in a container
Siloscape : Premier Malware à viser des workloads Kubernetes sur des serveurs Windows
Microsoft originally didn't consider this issue a vulnerability, based on the reasoning that Windows Server containers are not a security boundary...
Kubernetes utilise (pour l'instant) la table des users ID de l'hôte
binaire lancé en tant que root = binaire lancé en root sur l'hôte k8s
Weave Scope (supervision) avait été créé avec des privilèges et accessible depuis le net
Our deployment was missing the annotation to make the load balancer internal
Theweave-scope
container is running with the--privileged
flag
Files on the root file system were mounted onto the container
Containers are run as theroot
user.
Kubernetes permet "trop" de choses
Blog zwindler - Vos politiques de conformité sur Kubernetes avec OPA et Gatekeeper
Des CVE sortent sur NodeJS, .Net et autre JVM toutes les semaines
Les images de bases de vos containers sont bourrées de failles
...
Affiche les failles détectées pour chaque image Docker
Rajouter des quality gates (bloquants) côté Intégration Continue
Limiter l'impact d'une compromission :
ping
, traceroute
, gcc
, ...kubectl debug
Il existe aussi des Intrusion Detection System pour Kubernetes
Falco is an open source project for intrusion and abnormality detection for Cloud Native platforms
Cilium: eBPF-based Networking, Observability, and Security
Programmes BPF pour détecter des comportements anormaux
Cilium Uncovering a Sophisticated Kubernetes Attack in Real-Time
Comme tout logiciel, Kubernetes a des failles !
Août 2019 : la CNCF a commandé un audit du code de Kubernetes
... en vrai, c'est pas forcément simple
Kubecon EU 2018 - Zalando Continuously Deliver your K8s Infra
K8s single pane of glass, including risk analysis, security compliance, RBAC visualizer and image vulnerabilities scanning
Ne déployez pas Kubernetes pour de mauvaises raisons
(aka. si vous n'en avez pas besoin !)
Il y a beaucoup de choses à sécuriser dans Kube