## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-DAVIDHAVOC-AYAFLOW
# ayaFlow
ayaFlowは、Aya で構築されたRust + eBPFネットワークトラフィックアナライザです。各Linuxノードで1つのエージェントを実行し、ingressとegressにTC分類器をアタッチし、ライブトラフィックデータ、SQLiteによる履歴データ、およびPrometheusメトリクスを公開します。
## 何をするか
* eBPF TC分類器を使用してIPv4、IPv6、TCP、UDPトラフィックをキャプチャします。
* メモリ内のライブ接続統計とSQLite内の履歴レコードを保持します。
* オプションで、リバースDNS、DNSクエリドメイン、TLS SNIでトラフィックをエンリッチします。
* REST API、WebSocketストリーム、Prometheusの`/metrics`エンドポイントを公開します。
* Docker、Kubernetes、Prometheus、Grafanaの例が同梱されています。
## サポートされている開発フロー
ayaFlowのパケットキャプチャランタイムはLinuxのみです。コントリビュータのワークフローは意図的に分割されています。
* macOSまたはLinuxでのホストセーフチェック:
* `cargo test -p ayaflow-common`
* `cargo test -p ayaflow`
* `cargo xtask build-user`
* `cargo xtask check-host`
* Linuxのみのビルドとランタイム:
* `cargo xtask build-ebpf`
* `cargo xtask build`
* `cargo xtask run -- --deep-inspect`
macOSの場合は、完全なeBPFワークフローにDockerまたはLinux VMを使用してください。両方のパスについてはHOW_TO_USE_LOCAL.mdを参照してください。
## クイックスタート
### 1\. ホストのサポートを確認
root@kitploit:~
cargo xtask check-host
### 2\. Linuxでビルド
root@kitploit:~
cargo xtask build
### 3\. Linuxで実行
root@kitploit:~
sudo ./target/debug/ayaflow --db-path /tmp/traffic.db
`--interface`が省略された場合、ayaFlowは`/proc/net/route`からデフォルトルートインターフェースを自動検出し、検出に失敗した場合のみ`eth0`にフォールバックします。
### 4\. 確認
root@kitploit:~
curl http://localhost:3000/api/health
curl http://localhost:3000/api/stats
curl "http://localhost:3000/api/history?limit=5&row_type=raw"
curl http://localhost:3000/metrics
## CLIオプション
## APIリファレンス
`/api/history`がサポートするパラメータ:
* `limit`, `offset`
* `start_time`, `end_time`
* `protocol`
* `ip`, `src_ip`, `dst_ip`
* `port`, `src_port`, `dst_port`
* `direction`
* `domain`
* `row_type=raw|aggregated`
例:
root@kitploit:~
curl "http://localhost:3000/api/history?limit=20&protocol=TCP&dst_port=443&row_type=raw"
## プロジェクト構造
root@kitploit:~
ayaflow/ Userspace runtime, API, storage, and host-safe tests
ayaflow-common/ Shared packet/event types used by userspace and eBPF
ayaflow-ebpf/ TC classifier and payload capture program
xtask/ Build and workflow helpers
k8s/ Kubernetes manifests
monitoring/ Prometheus and Grafana assets
ルートレベルの重複した`src/`ツリーはレガシーであり、サポートされているビルドパスの一部ではありません。上記の`ayaflow/`クレートと`cargo xtask`コマンドを使用してください。
## デプロイメントガイド
* ローカルLinuxおよびmacOS+VMのワークフロー: HOW_TO_USE_LOCAL.md
* Docker: HOW_TO_USE_DOCKER.md
* Kubernetes: HOW_TO_USE_K8S.md
## 技術ドキュメント
* アーキテクチャ: ARCHITECTURE.md
* フットプリントとパフォーマンスノート: PERFORMANCE.md
## ここでテスト済み
ホストセーフワークフローは現在、このmacOS開発マシンで以下を通過します:
* `cargo test -p ayaflow-common`
* `cargo test -p ayaflow`
* `cargo xtask check-host`
Linuxのみのランタイム検証は、eBPFツールチェーンがインストールされたLinuxホストまたはCIランナーで行う必要があります。
## ライセンス
このプロジェクトは、コンポーネントに応じて3つの異なるライセンスを使用しています:
### ユーザー空間コンポーネント
ユーザー空間エージェントと共通ライブラリ(`ayaflow`および`ayaflow-common`)は、以下のいずれかのデュアルライセンスです:
* Apache License, Version 2.0
* MIT License
お好みで。
### カーネルコンポーネント
eBPFカーネルコンポーネント(`ayaflow-ebpf`)は、Linuxカーネル検証器との互換性を確保するために、厳密にGNU General Public License v2.0 (GPL)の下でライセンスされています。