Sécurité des infrastructures de virtualisation

Timothée Ravier (@siosm) - https://tim.siosm.fr/cours

5e année cycle ingénieur, filière STI

Option Sécurité des Systèmes Ubiquitaires

2021-2022

Infrastructures ?

Infrastructure de type Cloud

Ensemble de services qui fournissent aux utilisateurs un environnement pour déployer des applications sous différentes formes (machines virtuelles, conteneurs, fonctions, etc.).

Self service

Chaque utilisateur peut choisir ce dont il a besoin parmis les services proposés (stockage, réseau, base de données, gestion de charge, etc.).

Responsabilités séparées

Les services fournis par l'infrastructure ne sont pas administrés par les utilisateurs de l'infrastructure.

Besoins en automatisation et orchestration

  • Automatisation essentielle pour les grands déploiements
  • Gestion organisée et planifiée :
    • de l'infrastructure
    • de la disponibilité
    • des applications
    • de la répartition des ressources
  • Objectifs :
    • Déléguer les tâches ingrates à des services
    • Minimiser les temps de panne et augmenter la réactivité

Quels logiciels pour une infrastrucutre de virtualisation ?

Openstack

OpenStack

  • Projet lancé en 2010 par Rackspace et la NASA
  • Ensemble de composant pour gérer automatiquement le déploiement de machines virtuelles ou de conteneurs
  • Nombreux services disponibles
  • Intégration avec le matériel réseau, stockage, etc.

Kubernetes

Kubernetes

  • Projet lancé par des ingénieurs de chez Google en 2014
  • Inspiré de Borg, le gestionnaire de conteneur interne Google
  • Basé sur le concept de Pods (groupe de conteneurs partageant certains namespaces)
  • Repose sur etcd (base de données clé valeur distribuée)

center

https://kubernetes.io/docs/concepts/overview/components/

center

https://platform9.com/blog/kubernetes-enterprise-chapter-2-kubernetes-architecture-concepts/

Distributions Kubernetes

  • Kubernetes : Projet upstream

  • Plus de 90 distributions certifiées par la CNCF

  • Distributions « majeures » :

    • Red Hat OpenShift & OKD (Red Hat)
    • Rancher Kubernetes (SUSE/Rancher Labs)
    • k3s (SUSE/Rancher Labs)
    • Typhoon (communautaire)
    • VMware Tanzu (VMware)
    • etc.

Kubernetes & Cloud providers

  • Versions de Kubernetes hébergés ou gérées par une entreprise ou un cloud provider :
    • Amazon Elastic Container Service for Kubernetes (EKS)
    • Azure Kubernetes Service (AKS)
    • Google Kubernetes Engine (GKE)
    • OVH Managed Kubernetes Service
    • Scaleway Kubernetes Kapsule
    • Red Hat OpenShift Dedicated (AWS & GCP)
    • etc.
  • Plus ou moins intégrées dans les offres de chaque Cloud provider
  • Déploiement et configuration initiale plus ou moins automatisés

Serverless

Serverless ou « Fonctions »

Concept

Exécuter des petites portions de code en réaction à un événement et sans avoir à gérer ou mettre en place une infrastructure complète.

Exemples chez les Cloud providers :

  • AWS Lambda, Google Cloud Functions, Azure Functions, Fastly Terrarium, Cloudflare Workers

Exemples d'implémentations open source :

  • Knative, Kubeless, Fission, Apache OpenWhisk, IronFunctions, OpenFaaS, Fn Project

Cloud Native Computing Foundation

Sécurité

Sécurité des infrastructures de virtualisation

  • Sécurité des éléments de base de l'infrastructure :
    • Sécurité des hôtes
    • Sécurité des machines virtuelles & conteneurs
    • Voir les chapitres précédents
  • Sécurité des services composant l'infrastructure :
    • Interfaces d'administration
    • Interactions entre les services et gestion des réseaux
    • Indicateurs, visibilité et inventaire
    • Intégration avec les Cloud provider & matériels
    • Déploiement, mises à jour

Fournisseur de Cloud et sécurité

  • Pas d'accès direct à l'infrastructure
  • Cloud provider responsable de la sécurité de l'infrastructure mise à disposition des utilisateurs
  • Utilisateurs responsable de la bonne configuration des mécanismes de contrôle d'accès
  • Risques principaux : financier (!) et perte de données

Authentification à plusieurs facteurs

  • Priorité : protection des comptes administrateurs
  • Utiliser l'authentification à deux facteurs (2FA, MFA)
  • Préférer les méthodes :
    • Token hardware U2F (Standards FIDO 1 & 2 : Yubikey, NitroKey, etc.)
    • TOTP hardware ou software
  • Eviter l'usage du SMS, très vulnérable face à un attaquant déterminé

Isolation des interfaces d'administration

  • Isolation réseau des interfaces d'administrations des hôtes de l'infrastructure
  • Séparer les communications liées à l'administration des autres interactions
  • Utiliser des protocoles éprouvés (SSH)
  • Utiliser un réseau physique distinct (ou à minima un réseau logique distinct)

Isolation des services de l'infrastructure

  • La compromission d'un service peut entraîner la compromission de toute l'infrastructure
  • Séparer les communications entre les services des communications effectuées par les machines virtuelles, conteneurs et applications déployées par les utilisateurs sur l'infrastructure
  • Utiliser des protocoles éprouvés (HTTPS avec TLS 1.2+)
  • Utiliser un réseau physique distinct (ou à minima un réseau logique distinct)

Automatisation des mises à jour des hôtes

  • Pour être automatique, une mise à jour doit être non-intéractive, atomique et coordonnée :
    • Systèmes d'exploitation centrés sur l'utilisation de conteneurs
    • Pas ou peu de gestion de paquets
    • Retour en arrière possible après une mise à jour non fonctionnelle
  • Exemples d'OS :
    • Red Hat CoreOS (OpenShift) et Fedora CoreOS (OKD)
    • openSUSE MicroOS (Kubic)
    • Container-Optimized OS (GCP uniquement)
    • Bottlerocket OS (Amazon EKS ou ECS)
    • VMware Photon OS

Mise à jour des logiciels qui composent l'infrastructure ?

  • Logiciel donc inévitabilité de l'existance de vulnérabilités
  • Quel impact sur le fonctionnement du Cloud ?
  • OpenStack : concepts d'UnderCloud et d'OverCloud (TripleO : OpenStack On OpenStack)
  • Kubernetes : Self hosted Kubernetes (« Bootstrap » puis gestion des services de Kubernetes par lui même)

Automatisation de la gestion et de l'administration

Immutable infrastructure & Infrastructure as Code

Immutable Infrastructure

Approche de la gestion des services et logiciels où les composants sont remplacés par une nouvelle version plutôt que modifié directement.

Infrastructure as Code

Décrire l'infrastructure sous forme de code pour pouvoir la déployer, modifier et redéployer automatiquement

  • HashiCorp Terraform (multi-clouds)
  • AWS CloudFormation (AWS uniquement)
  • Ansible, Chef, Puppet, SaltStack

GitOps

What is GitOps?

GitOps = IaC + MRs + CI/CD

  • Gestion de l'infrastructure et des applications à l'aide de Git

  • Utilisation de l'Infrastructure as Code pour décrire les déploiements

  • Merge request pour proposer des changements

  • Chaîne d'intégration continue et de déploiement continu (CI/CD) pour tester et valider les changements avant déploiement

  • Exemples :

    • Argo CD, GitHub Actions, GitLab CI/CD, Jekins X, CircleCI, etc.

Operators (Kubernetes)

  • Logiciel qui se charge de gérer un déploiement dans une infrastructure Kubernetes
  • Objectif : automatiser l'administration, la mise à jour et la maintenance d'un service
  • OperatorHub
  • Exemples et état des lieux sur kubedex : Kubernetes Operators

Gestion du réseau

  • Contrôle des intéractions entre les applications / conteneurs / machines virtuelles à travers le réseau

  • Kubernetes : Container Network Interface (CNI) :

    • flannel (L3, vxlan)
    • Cilium (L3-L7, HTTP, BPF)
    • Contiv (BGP, vxlan)
    • Project Calico (BGP)
    • etc.
  • Kubernetes Cluster Networking

Gestion des secrets & identités

  • Gestion des secrets :
    • Kubernetes Secrets (fonctionnalités « basiques »)
    • HashiCorp Vault : Automatisation de la création, du stockage chiffré, de l'expiration et du renouvellement
  • Gestion des identités et des accès :
    • Kubernetes RBAC
    • Dex

Indicateurs, Visibilité et inventaire

  • Visibilité sur l'état de l'architecture :
    • Métriques : Prometheus
    • Audit : osquery

Sécurité OpenStack

Ressources :

Sécurité Kubernetes

Sécurité Kubernetes

  • Support de « Docker » désormais deprecated : Don't Panic: Kubernetes and Docker
  • Alternatives : containerd & CRI-O;
  • Avantages de CRI-O :
    • Stabilité : une version de CRI-O par version de Kubernetes
    • Sécurité : conçu uniquement pour Kubernetes
    • Compatibilité : Images Dockers et OCI
    • Configuration par défaut sur Red Hat OpenShift

Kubernetes : Docker \Rightarrow containerd

https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/

Kubernetes : CRI-O

https://www.redhat.com/en/blog/why-red-hat-investing-cri-o-and-podman

Sécurité Kubernetes

  • Service proxy :
    • Interface entre l'extérieur et l'intérieur
    • Load balancing, metriques, etc.
    • Exemples: Envoy, Traefik, nginx, etc.
  • Service mesh :
    • Découverte, enregistrement et routage entre les conteneurs
    • TLS automatique pour les communications entre conteneurs
    • Exemples : Linkerd, Istio, Consul, etc.

Sécurité Kubernetes

Red Hat OpenShift

  • Sécurité par défaut (!root, Read Only, etc.)
  • Mises à jour coordonnée de l'intégralité de la plateforme
  • Gestion automatisée à l'aide d'operators
  • Support des conteneurs, machines virtuelles, fonctions, CI/CD, GitOps, etc.
  • Intégration de Red Hat Quay, Data Foundation (Ceph Storage), Advanced Cluster Management, Advanced Cluster Security
  • Red Hat Enterprise Linux CoreOS (basé sur Red Hat Enterprise Linux)
  • Red Hat deuxième contributeur à Kubernetes

center

center

# OpenStack: services

# OpenStack: services

# Kubernetes : Architecture

# Kubernetes : Architecture

# OpenStack - Réseau : OpenStack Neutron - Secrets : Anchor, Barbican - Identité : Keystone - Métriques et performance : Ceilometer ---