Ciel ! Mon Kubernetes mine des

width:60 Bitcoins width:60

~$ whoami

Denis GERMAIN

height:40 @zwindler     height:40 denis-germain

#geek 👨‍💻 #SF 🤖👽 #courseAPied 🏃‍♂️


*Les slides de ce talk sont sur le blog

Ciel ! Mon Kubernetes mine des

width:60 Bitcoins width:60

Docker / Kubernetes

height:50 : Outil de gestion d'applications isolées via utilisation de fonctionnalités du kernel Linux + magasin d'images immutables

height:50 : Orchestrateur de containers, inspiré par un outil interne de Google, opensourcé et donné à la Linux Foundation en 2015.
Abstrait l'infra avec du YAML

What could possibly go wrong ?

width:500

Un outil complexe ? Pas grave, il y a une GUI !

Tesla width:50...

The hackers had infiltrated Tesla’s Kubernetes console which was not password protected / Source : redlock.io

Autre exemple : Kubeflow

  • Interface pour planifier des tâches de ML
  • Machine Learning utilisation de GPUs
  • Gains bien plus importants 💸💸💸💸💸




zdnet - Microsoft découvre un gang de cryptomining détournant des clusters Kubernetes

Pas d'interfaces ouvertes sur Internet !!!

  • Les clouds providers les désactivent par défaut
  • Pour la gestion courante : des UIs locales (Lens, k9s, ...)
  • Pour la métrologie : Grafana + Prometheus, outils tiers



height:100 height:100 height:100 height:100

Sécuriser la plateforme

Architecture simplifiée de Kubernetes

center width:700

Pas d'APIs sur Internet !

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

Contrôle d'accès dans Kubernetes

  • RBAC (Role-based access control) par défaut
  • Appliquez le principe de moindre privilège

    height:320   height:320

Failles dans Kubernetes

Août 2019 : la CNCF a commandé un audit du code de Kubernetes

Quelques grosses CVE "récentes"

Sécuriser les workloads

Pas de container exécuté en tant que root !

Kubernetes utilise (pour l'instant) la même table des ID utilisateurs que l'hôte Linux

Container lancé en tant que root == Binaire lancé en root sur l'hôte

Kubecon EU 2018: The route to Rootless Containers

@sylvielorxu

JW Player

Un service de supervision (Weave Scope) avait été créé avec des privilèges et accessible depuis le net

Our deployment was missing the annotation to make the load balancer internal
The weave-scope container is running with the --privileged flag
Files on the root file system were mounted onto the container
Containers are run as the root user.

How A Cryptominer Made Its Way in our k8s Clusters

Pod Security Policy 💥

Imposer des règles pour sécuriser l'utilisation du cluster

# Required to prevent escalations to root.
allowPrivilegeEscalation: false
runAsUser:
  # Require the container to run without root privileges.
  rule: 'MustRunAsNonRoot'

Mon cluster lance des GCC 🤔 ???

Il existe des Intrusion Detection System / runtime scanning

Utilise des programmes BPF dans le kernel pour détecter des comportements anormaux

center width:800

Cilium Uncovering a Sophisticated Kubernetes Attack in Real-Time

Sécuriser vos images Docker

Limitez le risque et l'impact d'une compromission :

  • Le moins de dépendances possibles et des composants à jour !
  • Ne pas ajouter des binaires utiles aux attaquants
    • oubliez ping, traceroute, gcc, ...
  • Pas de shell !

Conclusion

center

Conclusion

  • Ne déployez pas Kubernetes si vous n'en avez pas besoin !

    • Mais si vous en avez l'utilité, allez y !
  • Il y a beaucoup de choses à sécuriser dans Kube

    • Formez vos développeurs, pas seulement les Ops !
    • Sécurisez dès le début

  • Et après tout se passera bien 😉

That's all folks

width:800 center

Backup slides

Kubernetes threat matrix

center width:800

Microsoft Security Blog

There is a lot to Secure

center width:750

Source: Kubernetes Security / Duffie Cooley

La mode des containers

Outil qui permet d'empaqueter une application et ses dépendances. Elle pourra être exécuté sur n'importe quel serveur

  • Il existe de nombreuses implémentations des containers
  • width:200 est très utilisé depuis quelques années
    • utilise des fonctionnalités du kernel Linux
    • fourni une interface "simple" et un magasin d'images

Kubernetes, un outil puissant et complexe pour abstraire l'infrastructure

Décrire l'état souhaité de notre application hautement disponible

height:320 height:320

RBAC dans la pratique

Le principe des moindres privilèges est un vrai chantier

  • à mettre en place dès le début du cycle de développement
  • plus difficile à appliquer a posteriori (sauf à tout bloquer)

Pour auditer le RBAC :

Utilisez une authentification tierce

Pas de gestion des (vrais) utilisateurs. Les applications/démons ont des ServiceAccounts authentifiés par :

  • Tokens JWT
  • Certificats (difficilement révocables 😭)

Ajouter une authentification tierce de type OIDC + RBAC

width:400 center

sac de nouilles Network Policies chez Monzo

Monzo Bank a mis en place des Network Policies pour la totalité de ses 1500 microservices : center

Ajouter des Network Policies

Par défaut, Kubernetes autorise tout container à se connecter à n'importe quel autre #OpenBar

              

Service Mesh !

Mettre en place des Network Policies peut être complexe...

... mais on peut faire encore plus complexe !

Service Mesh

Déléguer beaucoup d'aspects réseau+sécu au Service Mesh :

  • gestion TLS
  • firewalling / ACL
  • analyse temps réel des attaques
    • audit/forensics, DDOS mitigation, ...

Votre cluster respecte les bonnes pratiques ?

center height:250

Exemple d'attaque via Unauthenticated Kubelet

Vérifiez vos applications

center width:800

Sources

Les best practices

Les outils pour durcir Kube (1/2)

Les outils pour durcir Kube (2/2)

Les failles de sécu récentes de K8s (&+)

Les sociétés hackées dans la presse (1/2)

Les sociétés hackées dans la presse (2/2)

Kubernetes Security Audit

Autre (1/2)

Autre (2/2)