Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Access, Assert, Act. La sécurité à l'échelle avec Falco 🦅

Eric Briand
September 10, 2021

Access, Assert, Act. La sécurité à l'échelle avec Falco 🦅

La sécurité traditionnelle consiste à s’enfermer dans une forteresse pour se protéger. Mais dans un SI moderne, les flux sont dynamiques, les instances d’applications se multiplient. Cette approche n’est plus viable. Comment tout sécuriser sans tout bloquer ?

En se basant sur eBPF, Falco est un projet de la Cloud Native Computing Foundation qui analyse en temps réel tous les événements (création de fichier, ouverture de shell, etc) qui surviennent sur vos serveurs ou dans vos conteneurs. Falco détecte et trace les anomalies, vous permettant de réagir en cas d’attaque.

Durant cette présentation, nous allons expliquer les principes d’eBPF et Falco et ensuite utiliser quelques scénarios d’attaque pour montrer comment y réagir automatiquement.

Eric Briand

September 10, 2021
Tweet

More Decks by Eric Briand

Other Decks in Technology

Transcript

  1. Access, Assert, Act.
    La sécurité à l'échelle avec Falco 🦅
    Speakers : Pierre-Yves Aillet - @pyaillet
    Eric Briand - @eric_briand

    View Slide

  2. Pierre-Yves Aillet
    Consultant formateur
    Leader communauté Devops Z
    Nantes
    Security Engineer + Official Trainer
    @pyaillet
    @pyaillet

    View Slide

  3. Éric Briand
    Directeur technique Nantes
    GDE Cloud + Official Trainer
    Orga CNCF Meetup Nantes
    @eric_briand
    @ebriand

    View Slide

  4. View Slide

  5. Avant - 🐈

    View Slide

  6. Maintenant - 🐄🐄🐄🐄🐄🐄🐄🐄🐄

    View Slide

  7. Et la sécurité ? 🔐

    View Slide

  8. C’est plus possible maintenant 󰢄

    View Slide

  9. Plusieurs approches - Enforcement ❌✅
    - SELinux
    - Seccomp

    View Slide

  10. Plusieurs approches - Audit 🔍

    View Slide

  11. Falco 🦅
    Detect abnormal behavior in applications,
    containers, and hosts. Audit orchestrator
    activity.

    View Slide

  12. Présentation du projet 🎉
    - Créé par en 2016
    - Open source et en incubation @ CNCF
    🥚🐥
    - Codé en C/C++ 🤕
    - 107 contributeur·trice·s󰠁󰳕
    - 4.1k ⭐

    View Slide

  13. View Slide

  14. View Slide

  15. Trailmap
    CNCF

    View Slide

  16. Architecture 🗺
    Falco
    Userspace
    Kernel
    Kernel module /
    Program eBPF
    Falco-sidekick
    Response Engine
    Application
    Syscall
    Hook
    Logs...
    Socket eBPF Map
    HTTP
    ?
    Falco rules
    ...

    View Slide

  17. Falco sidekick
    ...

    View Slide

  18. Falco sidekick-ui 📺

    View Slide

  19. Syscall 📣
    Kernel
    Disque
    Programme
    Syscall
    (open, read, write, …)

    View Slide

  20. Modes d’installation 📦
    - Kernel module
    - À privilégier
    - Outillage fourni par le projet pour construire le module pour la version de kernel
    visée
    - eBPF probe
    - À utiliser lorsqu’il n’est pas possible de charger un module kernel
    - Exemple : GKE
    - ptrace userspace program: pdig
    - Lent (utilisation de ptrace)
    - En dernier recours, lorsque les 2 autres solutions sont impossibles

    View Slide

  21. Module - Kernel Tracepoints 🔍

    View Slide

  22. eBPF - Historique 📄
    $ tcpdump tcp port 80
    $ tcpdump net 1.1.1.0/24 or net 2.2.2.0/24 and tcp port 80
    tcpdump libpcap BPF program
    Kernel
    Userspace

    View Slide

  23. eBPF

    View Slide

  24. eBPF
    Falco

    View Slide

  25. pdig
    Parfois vous n’êtes pas en mesure d’installer vos propres modules kernel ou
    sondes eBPF.
    Dans ce cas, vous pourrez tout de même utiliser une solution moins performante
    basée sur ptrace : pdig
    https://github.com/falcosecurity/pdig

    View Slide

  26. Règles de Falco 🎛
    Des règles sont fournies par le projet Falco :
    ● 60 règles au niveau O.S.
    ● 39 règles d’audit k8s
    ● 15 règles spécifiques à des applications (ex
    elasticsearch) mais pas activée par défaut
    ● Règles spécifiques à des CVEs

    View Slide

  27. Security Hub

    View Slide

  28. Format d’une règle (1/2)
    rule: shell_in_container
    desc: notice shell activity within a container
    condition: container.id != host and proc.name = bash
    output: shell in a container (container=%container.id)
    priority: WARNING

    View Slide

  29. Format d’une règle (2/2)
    ● Macros
    - macro: in_container
    condition: container.id != host
    ● Lists
    - list: userexec_binaries
    items: [sudo, su]
    ● On peut aussi étendre des règles
    - rule: shell_in_container
    append: true
    condition: and not user.name=root

    View Slide

  30. Démo de falco avec une VM
    Attaque

    View Slide

  31. View Slide

  32. Intégration avec Kubernetes
    ● Falco peut s’installer en mode Daemonset
    (une instance par noeud)
    ● Grâce à falco-sidekick, on peut utiliser une
    fonction qui va réagir à un événement Falco
    (avec Knative par exemple)
    ● ⚠ Par contre l'instanciation de Falco sous
    forme de Pod dans Kubernetes n’est pas
    recommandée : c’est un Pod qui a
    beaucoup de droits sur les hosts

    View Slide

  33. La démo
    Attaque

    View Slide

  34. View Slide

  35. La suite ?
    Encore en incubation à la CNCF
    👍 Chart Helm
    󰠻 Architecture en cours d’évolution
    🚀 Le projet progresse rapidement
    😅 Documentation pas toujours à jour
    🤔 A quand la 1.0 ?

    View Slide

  36. La suite ?
    https://twitter.com/kelseyhightower/status/1326610296530563073?s=20

    View Slide

  37. Merci ! Des questions ?

    View Slide

  38. Références
    - https://falco.org/
    - https://sysdig.com/blog/sysdig-and-falco-now-powered-by-ebpf/
    - https://ebpf.io/
    - https://github.com/ebriand/falco-demo

    View Slide