
커널 공간에서 실행 파일 수준 접근 정책을 시행하는 eBPF 기반 Linux 에이전트로, LSM 훅을 통해 프로세스를 샌드박싱하고 파일, 네트워크, GPU 접근을 제한합니다.
Bomfather Agent는 커널 공간에서 실행되어 정책에 따라 동작을 차단하는 eBPF 기반 에이전트입니다.
우리는 기존 솔루션들이 가지고 있던 문제를 해결하기 위해 이 에이전트를 만들었습니다.
이 점들은 이 프로젝트 전체의 북극성입니다. 모든 기능과 개발은 이 점들을 충족하는 것을 목표로 합니다.
이 저장소에서는 AI가 생성한 코드를 사용하지 않으려고 노력하며, AI가 생성한 PR은 받지 않습니다.
(시스템에서 LSM을 활성화하는 방법에 대한 가이드는 여기에서 확인할 수 있습니다: https://docs.bomfather.dev/prerequisites)
소스에서 빌드하려면 다음 도구가 설치되어 있어야 합니다:
go 1.26 or higher
make
clang
llvm
llvm-14
protobuf-compiler
git
Debian/Ubuntu에서는 Go가 아닌 빌드 의존성을 다음 명령으로 설치할 수 있습니다:
apt-get update \
&& apt-get install -y --no-install-recommends \
clang \
llvm \
llvm-14 \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*
그런 다음 다음 명령으로 에이전트를 빌드합니다:
make
빠르게 시작하려면 다음 명령을 사용해 기본 정책으로 에이전트를 실행할 수 있습니다:
sudo ./agent run --config config.yaml
이 명령은 구성 파일에 정의된 정책으로 에이전트를 실행합니다.
그런 다음 선택적으로 다음 명령을 사용해 에이전트의 상태를 확인할 수 있습니다:
sudo ./agent status --help
status 명령은 주로 에이전트에서 Prometheus 메트릭을 읽기 위한 것입니다.
정책은 에이전트가 적용하는 규칙을 정의하는 YAML 파일입니다.
구성은 주로 policies와 attributes 두 섹션으로 이루어집니다. policies 섹션은 누가 보호된 리소스에 접근할 수 있는지 정의합니다. policies 섹션은 어떤 실행 파일이 보호된 디렉터리나 IP에 접근할 수 있는지 정의합니다. attributes는 실행 파일의 경계를 정의하므로, 속성을 통해 실행 파일이 단일 IP에만 연결하도록 하고 다른 IP에는 연결하지 못하게 할 수 있습니다.
정책을 만드는 방법은 다양하므로, 각 기능마다 해당 기능에 대한 정책을 만드는 방법을 설명하는 전용 섹션이 문서에 있습니다: https://docs.bomfather.dev/configuration-guide.
하지만 빠른 시작 용도로는 다음 정책 파일을 사용할 수 있습니다:
policies:
- executable: "filepath = [absolute-path]/app/signer"
can_access_dirs:
- "[absolute-path]/secrets/keys : read"
is_allowed_to_access_ip:
- "kms.us-east-1.amazonaws.com:443"
attributes:
- path: "type = executable | filepath = [absolute-path]/app/signer"
can_only_access_ips:
- "kms.us-east-1.amazonaws.com:443"
이 정책은 signer를 샌드박스화하고, 이 프로세스가 시스템에서 해당 데이터에 접근할 수 있는 유일한 프로세스임을 보장합니다.
policies 섹션에서는 실행 파일 signer가 /secrets/keys 디렉터리와 AWS KMS 엔드포인트에 연결된 IP에 접근할 수 있는 유일한 프로세스라고 정의합니다.
attributes 섹션에서는 실행 파일 signer가 AWS KMS 엔드포인트에만 접근할 수 있고 다른 IP에는 접근할 수 없다고 정의합니다.
이 비교적 단순한 구성에서 우리는 단 10줄짜리 구성만으로 signer 프로세스(실제 환경에서는 더 큰 시스템의 일부일 수 있음)를 상당히 강화할 수 있었습니다.
문서에는 더 실제적인 예제가 몇 가지 더 있습니다: https://docs.bomfather.dev/examples/gpu.
선택적으로, 에이전트가 탐지한 위반 사항을 내보내고 싶다면 API 키를 포함할 수 있으며, 그러면 에이전트가 위반 사항을 Bomfather 서버로 전송합니다.
하지만 가장 중요한 것은, 이것은 필수가 아니라는 점입니다. API 키가 없어도 에이전트는 동일하게 작동합니다. API 키를 포함하지 않아도 비활성화되는 기능은 없으며, API 키가 포함되지 않으면 어떤 종류의 데이터도 Bomfather 서버로 전송되지 않습니다.
Bomfather 서버를 사용하고 싶다면 [email protected]로 연락해 주세요.