All Projects → elastic → ebpf

elastic / ebpf

Licence: other
Elastic's eBPF

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
Roff
2310 projects
M4
1887 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to ebpf

Ebpf
eBPF Library for Go
Stars: ✭ 1,177 (+2515.56%)
Mutual labels:  ebpf
Weaver
Trace Go program execution with uprobes and eBPF
Stars: ✭ 174 (+286.67%)
Mutual labels:  ebpf
Tcptracer Bpf
eBPF program using kprobes to trace TCP events without run-time compilation dependencies
Stars: ✭ 240 (+433.33%)
Mutual labels:  ebpf
Hubble
Hubble - Network, Service & Security Observability for Kubernetes using eBPF
Stars: ✭ 1,245 (+2666.67%)
Mutual labels:  ebpf
P4c Xdp
Backend for the P4 compiler targeting XDP
Stars: ✭ 130 (+188.89%)
Mutual labels:  ebpf
Ipftrace2
A packet oriented Linux kernel function call tracer
Stars: ✭ 193 (+328.89%)
Mutual labels:  ebpf
Bpf Iptables
An #eBPF and #XDP iptables firewall
Stars: ✭ 58 (+28.89%)
Mutual labels:  ebpf
perf-monitor
Kernel profiler based on perf_event and ebpf
Stars: ✭ 28 (-37.78%)
Mutual labels:  ebpf
Skydive
An open source real-time network topology and protocols analyzer
Stars: ✭ 2,086 (+4535.56%)
Mutual labels:  ebpf
Ebpf
eBPF Utilities, Maps, and more
Stars: ✭ 238 (+428.89%)
Mutual labels:  ebpf
Libbpf Rs
Minimal and opinionated eBPF tooling for the Rust ecosystem
Stars: ✭ 116 (+157.78%)
Mutual labels:  ebpf
Xdp Project
XDP project collaboration through a git-repo
Stars: ✭ 127 (+182.22%)
Mutual labels:  ebpf
Libebpfflow
Container traffic visibility library based on eBPF
Stars: ✭ 194 (+331.11%)
Mutual labels:  ebpf
Kubectl Trace
Schedule bpftrace programs on your kubernetes cluster using the kubectl
Stars: ✭ 1,194 (+2553.33%)
Mutual labels:  ebpf
Ingraind
Data first monitoring agent using (e)BPF, built on RedBPF
Stars: ✭ 251 (+457.78%)
Mutual labels:  ebpf
Awesome Ebpf
A curated list of awesome projects related to eBPF.
Stars: ✭ 1,102 (+2348.89%)
Mutual labels:  ebpf
Tracepkt
Trace a ping packet journey across network interfaces and namespace on recent Linux. Supports IPv4 and IPv6.
Stars: ✭ 176 (+291.11%)
Mutual labels:  ebpf
rbbcc
BCC port for MRI - this is unofficial bonsai project.
Stars: ✭ 45 (+0%)
Mutual labels:  ebpf
bpfbox
🐝 BPFBox 📦 Exploring process confinement in eBPF
Stars: ✭ 93 (+106.67%)
Mutual labels:  ebpf
Polycube
eBPF/XDP-based software framework for fast network services running in the Linux kernel.
Stars: ✭ 217 (+382.22%)
Mutual labels:  ebpf

elastic-loves-ebpf

CI

This repository contains eBPF code as well as associated userspace tools and components used in the Linux build of Elastic Endpoint Security.

Elastic Endpoint on Linux currently leverages eBPF for two use-cases: host isolation and event sourcing, with all code pertaining to the two being hosted here. At a high level, this repository is divided up on licensing grounds. eBPF code, which must be GPL-licensed for the kernel to accept and load it, is located under the GPL/ directory while all non-GPL code is located under the non-GPL directory.

Event Sourcing

On newer kernels (5.10.16+), Elastic endpoint uses eBPF to source the various security events it ultimately sends up to an Elasticsearch cluster (e.g. process execution, file creation, file rename). On older kernels, this data is sourced via tracefs instead.

Event sourcing eBPF code is found under GPL/Events and associated userspace tools can be found under non-GPL/Events. See docs/events.md for detailed information on the event sourcing code.

Host Isolation

Host isolation is essentially an incredibly strict firewall that allows only Elastic Endpoint to communicate with the outside world. It can be manually enabled in Kibana and is meant be used in cases where a host is known or suspected to be compromised, allowing security teams more time to locate the threat at hand.

Host isolation eBPF code is found under GPL/HostIsolation and associated userspace tools can be found under non-GPL/HostIsolation. See docs/hostisolation.md for detailed information on the host isolation code.

Building

To build all artifacts in the repository, run:

make build ARCH=<arch>

Where arch is one of x86_64 or aarch64. The build is run in a docker container with all required dependencies bundled inside.

Repository Layout

.
|-- GPL                              # Dual BSD/GPLv2-licensed sources (mainly eBPF code)
|   |-- Events                       # Event sourcing eBPF code
|   |   |-- File                     # Code to source file events
|   |   |-- Network                  # eBPF code to source network events
|   |   `-- Process                  # eBPF code to source process events
|   `-- HostIsolation                # Host isolation eBPF code and tests
|       |-- KprobeConnectHook
|       `-- TcFilter
|-- cmake
|   `-- modules                      # CMake modules to build third party dependencies
|-- contrib                          # Third party dependency sources
|   |-- elftoolchain
|   |-- googletest
|   |-- kernel_hdrs                  # Kernel headers used in HostIsolation eBPF code (copied from kernel)
|   |-- libbpf
|   `-- vmlinux                      # bpftool-generated vmlinux.h (see contrib/vmlinux/README.md)
|       |-- aarch64
|       `-- x86_64
|-- docker                           # Dockerfiles used to build/test
|-- licenses                         # Licenses used in the codebase
|-- non-GPL                          # Elastic-2.0 licensed code (userspace tools and libraries)
|   |-- Events                       # Userspace tools and libraries related to event sourcing
|   |   |-- EventsTrace              # Simple command-line utility to load and use event probes
|   |   |-- Lib                      # Userspace library to load and use event probes used by EventsTrace
|   `-- HostIsolation                # Userspace tools and libraries related to host isolation
|       |-- Demos                    # Demo binaries for the various, granular parts of host isolation
|       `-- Lib                      # Userspace library that allows for use of host isolation functionality
`-- testing                          # Infrastructure to test eBPF code on many kernels (see testing/README.md)

Testing

This repository contains infrastructure to test our eBPF code against a wide array of kernels. See testing/README.md for more information. For more details on kernels that are excluded from testing, see EXCLUSIONS.md

Licensing

Various licenses are used in this repository, see the LICENSE.txt file for details.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].