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

eBPF & the future of osquery on Linux

eBPF & the future of osquery on Linux

Slides from the talk at osquery@scale 2021.

Avatar for Zach Wasserman

Zach Wasserman

January 25, 2021
Tweet

More Decks by Zach Wasserman

Other Decks in Programming

Transcript

  1. eBPF and the future of osquery on Linux Zach Wasserman

    – CTO, Fleet osquery@scale 2021
  2. Who am I • Co-creator of osquery • Cofounder &

    CTO of FleetDM • (Former) Cofounder & Principal Engineer of Kolide
  3. Audit & Osquery Tables • Audit powers many of the

    event-based tables for osquery on Linux • process_events • process_file_events • socket_events • user_events • apparmor_events • selinux_events
  4. Audit & Osquery Con f i guration • Base con

    f i guration to enable audit • --disable_audit=false • --audit_allow_config=true • --audit_persist=true
  5. Audit & Osquery Con f i guration • Enable each

    feature separately • --audit_allow_apparmor_events • --audit_allow_fim_events • --audit_allow_fork_process_events • --audit_allow_kill_process_events • --audit_allow_process_events • --audit_allow_selinux_events • --audit_allow_sockets • --audit_allow_user_events
  6. Audit Drawbacks There can be only one • Audit’s design

    allows only a single consumer of the generated events • Receiving audit events in osquery means disabling auditd • Disable auditd -> No audit events written to f i le • Some tools expect to be able to retrieve audit events from f i le! Highlander Quote - Linux Audit: Moving Beyond Kernel Namespaces to Audit Container IDs - Richard Guy Briggs (Linux Security Summit 2018)
  7. Audit Drawbacks There can be only one • Many SELinux

    tools rely on audit logs in /var/log/audit/audit.log • sealert • audit2allow
  8. Audit Drawbacks Containers • Audit does actually work with containers

    • Fixed in Red Hat Bug 893751 • Audit is not “aware” of containers • Lack of namespace information hinders usability in container workloads
  9. eBPF Safety • Required privileges • Program veri f i

    cation • Limited size • Limited complexity • Bounded loops • Controlled memory access
  10. eBPF & Osquery State • eBPF functionality released in osquery

    4.6.0 • Built primarily by Alessandro Gario • Implemented on top of github.com/trailofbits/ebpfpub
  11. eBPF & Osquery Compatibility • Targeting Kernels 4.18+ (2018) •

    Possible to extend compatibility back to 4.10+ (2017) • eBPF Probes are generated at runtime • One binary can work on most Kernels
  12. eBPF & Osquery Coming soon… • Support for correlating BPF

    events with containers • Mapping cgroup_ids to Docker containers • process_dns_events
  13. eBPF & Osquery Future • We now have a pattern

    for instrumenting nearly anything on Linux • System calls • Kernel tracepoints • User-space function calls • These can be dynamically con f i gured at osquery runtime
  14. eBPF & Osquery Future - Security • Instrument any and

    all syscalls of interest • Track signals sent to processes • Kernel module loads/unloads • Track LD_PRELOAD
  15. eBPF & Osquery Future - Devops/SRE • Instrument any and

    all syscalls of interest(!) • Measure latency and resource consumption of OS processes • Network stack • Filesystem • Other I/O • Count and measure functions within user-space
  16. eBPF & Osquery Future - Imagine • Let’s look at

    the tools of today • bpftrace • BCC • Which of these use cases map well to osquery’s SQL model? • How can osquery be useful for shipping the aggregated information from hosts?