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 full-size slide

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

    View full-size slide

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

    View full-size slide

  4. Avant - 🐈

    View full-size slide

  5. Maintenant - 🐄🐄🐄🐄🐄🐄🐄🐄🐄

    View full-size slide

  6. Et la sécurité ? 🔐

    View full-size slide

  7. C’est plus possible maintenant 󰢄

    View full-size slide

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

    View full-size slide

  9. Plusieurs approches - Audit 🔍

    View full-size slide

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

    View full-size slide

  11. 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 full-size slide

  12. Trailmap
    CNCF

    View full-size slide

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

    View full-size slide

  14. Falco sidekick
    ...

    View full-size slide

  15. Falco sidekick-ui 📺

    View full-size slide

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

    View full-size slide

  17. 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 full-size slide

  18. Module - Kernel Tracepoints 🔍

    View full-size slide

  19. 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 full-size slide

  20. 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 full-size slide

  21. 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 full-size slide

  22. Security Hub

    View full-size slide

  23. 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 full-size slide

  24. 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 full-size slide

  25. Démo de falco avec une VM
    Attaque

    View full-size slide

  26. 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 full-size slide

  27. La démo
    Attaque

    View full-size slide

  28. 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 full-size slide

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

    View full-size slide

  30. Merci ! Des questions ?

    View full-size slide

  31. 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 full-size slide