gen0sec/synapse

GitHub: gen0sec/synapse

基于 eBPF/XDP 的 Rust 高性能 Linux 服务器防护方案,集成反向代理、防火墙和威胁检测能力。

Stars: 101 | Forks: 8

![Gen0Sec logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/8ce2de393e003705.svg)

License - Elastic 2.0   Release   GitHub Downloads (all assets, all releases)   Static Badge   Discord   X (formerly Twitter) Follow

Join us on Discord Substack

## 概述 Synapse 是一个使用 Rust 构建的高性能反向代理和防火墙,具有以下特点: - **基于 XDP 的数据包过滤**,在内核级别提供超低延迟保护 - **多后端防火墙**,支持自动回退 (XDP > nftables > iptables > 用户态) - **动态访问规则**,通过 Gen0Sec API 自动更新 - **JA4+ 指纹识别** 完整套件:JA4, JA4H, JA4T, JA4L, JA4S, JA4X - **自动 TLS 证书管理**,支持 ACME/Let's Encrypt (HTTP-01 和 DNS-01) - **威胁情报集成**,结合 Gen0Sec API 和 Threat MMDB - **内容扫描**,集成 ClamAV 进行恶意软件检测 - **高级上游路由**,支持服务发现 (file, Consul, Kubernetes) - **加权负载均衡**,支持热重载配置 ## 快速开始 ``` # Ubuntu 安装 curl -fSL https://raw.githubusercontent.com/gen0sec/synapse/refs/heads/main/install.sh | sh ``` ``` # 使用 config 文件运行 synapse -c /etc/synapse/config.yaml # 通过 environment variable 设置 mode (默认: agent) export MODE="proxy" # or "agent" ```
更多安装方式 ### Ansible ``` git clone https://github.com/gen0sec/synapse.git cd synapse/moat/ansible cp hosts.example hosts # 编辑 hosts 并添加您的服务器详情 ansible-playbook playbook.yml -e gen0sec_api_token=your_key_here ``` 特性:支持 Debian/Ubuntu + RedHat/CentOS/Fedora,可选 ClamAV/Redis/Fail2Ban。[更多详情。](./ansible/README.md) ### Kubernetes ``` helm repo add gen0sec https://helm.gen0sec.com helm install synapse-stack ``` [更多详情。](./docs/OPERATOR_README.md) ### Killercoda Playground ``` curl -sSL https://raw.githubusercontent.com/gen0sec/synapse/main/scenarios/synapse-operator/synapse.sh | bash -s -- --api-key ``` ### Docker ``` # 所需 capabilities --cap-add=SYS_ADMIN --cap-add=BPF --cap-add=NET_ADMIN ```
## 模式 Synapse 以两种模式运行:**Agent**(默认)和 **Proxy**。 | 特性 | Proxy | Agent | |---------|:-----:|:-----:| | **HTTP/HTTPS 反向代理** | ✅ | ❌ | | **TLS 与 ACME 证书** | ✅ | ❌ | | **上游与负载均衡** | ✅ | ❌ | | **WAF, 速率限制, CAPTCHA** | ✅ | ❌ | | **内容扫描 (ClamAV)** | ✅ | ❌ | | **XDP 防火墙与访问规则** | ✅ | ✅ | | **威胁情报与 GeoIP** | ✅ | ✅ | | **JA4+ 指纹识别** | ✅ 完整 | ✅ 网络级别 | | **BPF 统计与 TCP 指纹识别** | ✅ | ✅ | | **文件/Syslog 日志** | ✅ | ✅ |
详细功能对比 | 特性 | Proxy 模式 | Agent 模式 | |---------|-------------------|------------| | **HTTP/HTTPS 反向代理** | ✅ 完全支持 | ❌ 不可用 | | **TLS 证书管理** | ✅ ACME 和自定义证书 | ❌ 不可用 | | **上游与负载均衡** | ✅ 文件, Consul, Kubernetes | ❌ 不可用 | | **热重载上游** | ✅ 零停机更新 | ❌ 不可用 | | **XDP 数据包过滤** | ✅ 内核级过滤 | ✅ 内核级过滤 | | **多后端防火墙** | ✅ XDP/nftables/iptables/用户态 | ✅ XDP/nftables/iptables/用户态 | | **访问规则执行** | ✅ IP 允许/阻止列表 | ✅ IP 允许/阻止列表 | | **动态访问规则** | ✅ 从 Gen0Sec API 自动更新 | ✅ 从 Gen0Sec API 自动更新 | | **BPF 统计收集** | ✅ 数据包处理指标 (仅 XDP) | ✅ 数据包处理指标 (仅 XDP) | | **TCP 指纹识别** | ✅ SYN 数据包分析 | ✅ SYN 数据包分析 | | **JA4+ 指纹识别** | ✅ JA4, JA4H, JA4T, JA4L, JA4S, JA4X | ✅ JA4T, JA4L (网络级别) | | **Wirefilter 表达式 (WAF)** | ✅ 高级请求过滤 | ❌ 不可用 | | **速率限制** | ✅ 每规则速率限制 | ❌ 不可用 | | **内容扫描 (ClamAV)** | ✅ 恶意软件检测 | ❌ 不可用 | | **CAPTCHA 防护** | ✅ hCaptcha, reCAPTCHA, Turnstile | ❌ 不可用 | | **威胁情报** | ✅ 实时 MMDB + HTTP 级别 | ✅ 智能列表 (网络级别) | | **GeoIP 数据库** | ✅ 国家, ASN, 城市查询 | ⚠️ 仅通过智能列表 | | **内部服务服务器** | ✅ ACME, CAPTCHA 端点 | ❌ 不可用 | | **Redis 缓存** | ✅ 证书, 威胁情报, 验证 | ❌ 不可用 | | **访问日志发送** | ✅ 发送到 Gen0Sec API | ❌ 不可用 | | **文件/Syslog 日志** | ✅ 轮转日志 | ✅ 轮转日志 | | **多网络接口** | ✅ 高可用性设置 | ✅ 高可用性设置 | | **多线程运行时** | ✅ 默认 | ⚠️ 默认单线程 |
Agent 模式 (默认) 独立 Agent 专注于执行访问规则,不包含 HTTP/HTTPS 代理。适用于不需要请求代理的网络级防护。 ``` mode: "agent" # default, can be omitted ``` ``` # 通过 environment variable 设置 export MODE="agent" ``` 用例: - 无需代理的网络级防火墙防护 - 边缘访问规则执行 - 无 HTTP 开销的内核级 IP 阻断 - 与现有反向代理或负载均衡器集成
Proxy 模式 功能齐全的反向代理,支持 HTTP/HTTPS,将请求转发到上游服务器,同时在内核级别应用访问规则和威胁情报。 ``` mode: "proxy" proxy: address_http: "0.0.0.0:80" address_tls: "0.0.0.0:443" upstream: conf: "/etc/synapse/upstreams.yaml" ``` ``` # 通过 environment variable 设置 export MODE="proxy" ```
## 配置 Synapse 支持三种配置方式(优先级从高到低): 1. **YAML 配置文件** - 通过 `config.yaml` ([示例](./config_example.yaml)) 2. **命令行参数** - 通过 CLI 标志覆盖特定设置 3. **环境变量** - `export API_KEY="your-key"` ### CLI 选项 | 标志 | 描述 | 默认值 | |------|-------------|---------| | `-c`, `--config ` | 配置文件路径 (YAML) | - | | `--security-rules-config ` | 安全规则文件 (无 API key 时的回退) | `security_rules.yaml` | | `-i`, `--iface ` | XDP 网络接口 | `eth0` | | `--ifaces ` | 附加接口 (逗号分隔,覆盖 `--iface`) | - | | `--log-level ` | 日志级别 (error, warn, info, debug, trace) | `info` | | `--disable-xdp` | 禁用 XDP 数据包过滤 | `false` | | `--redis-url ` | Redis 连接 URL | `redis://127.0.0.1/0` | | `--redis-prefix ` | Redis 命名空间前缀 | `ax:synapse` | | `--captcha-site-key ` | CAPTCHA 站点密钥 | - | | `--captcha-secret-key ` | CAPTCHA 密钥 | - | | `--captcha-jwt-secret ` | CAPTCHA token 的 JWT 密钥 | - | | `--captcha-provider ` | CAPTCHA 提供商 (hcaptcha, recaptcha, turnstile) | - | | `--captcha-token-ttl ` | CAPTCHA token TTL | `7200` | | `--captcha-cache-ttl ` | CAPTCHA 缓存 TTL | `300` | | `--proxy-protocol-enabled` | 启用 PROXY protocol | `false` | | `--proxy-protocol-timeout ` | PROXY protocol 超时 | `1000` | | `-d`, `--daemon` | 以守护进程运行 | `false` | | `--daemon-pid-file ` | PID 文件路径 | `/var/run/synapse.pid` | | `--daemon-working-dir ` | 守护进程工作目录 | `/` | | `--daemon-stdout ` | 守护进程 stdout 日志 | `/var/log/synapse.out` | | `--daemon-stderr ` | 守护进程 stderr 日志 | `/var/log/synapse.err` | | `--daemon-user ` | 以指定用户运行守护进程 | - | | `--daemon-group ` | 以指定组运行守护进程 | - | | `--clear-certificate ` | 从文件系统和 Redis 清除证书 | - | ### 功能开关 | 功能 | YAML 路径 | 环境变量 | 默认值 | |---------|-----------|---------------------|---------| | **BPF 统计** | `logging.bpf_stats.enabled` | `BPF_STATS_ENABLED` | `true` | | **TCP 指纹识别** | `logging.tcp_fingerprint.enabled` | `TCP_FINGERPRINT_ENABLED` | `true` | | **内容扫描** | `proxy.content_scanning.enabled` | `CONTENT_SCANNING_ENABLED` | `false` | | **CAPTCHA 防护** | (设置密钥时启用) | `CAPTCHA_SITE_KEY`, `CAPTCHA_SECRET_KEY` | 禁用 | | **ACME (自动 TLS)** | `proxy.acme.enabled` | `ACME_ENABLED` | `false` | | **内部服务** | `proxy.internal_services.enabled` | `INTERNAL_SERVICES_ENABLED` | `true` | | **PROXY Protocol** | `proxy.protocol.enabled` | `PROXY_PROTOCOL_ENABLED` | `false` | | **文件日志** | `logging.file_logging_enabled` | `LOGGING_FILE_ENABLED` | `false` | | **Syslog** | `logging.syslog.enabled` | `LOGGING_SYSLOG_ENABLED` | `false` | | **日志发送 (API)** | `platform.log_sending_enabled` | `LOG_SENDING_ENABLED` | `true` | | **XDP 防火墙** | `firewall.disable_xdp` | `FIREWALL_DISABLE_XDP` | `false` (启用 XDP) |
环境变量参考 ``` # Application mode export MODE="proxy" # or "agent" # Redis 配置 export REDIS_URL="redis://127.0.0.1/0" export REDIS_PREFIX="ax:synapse" # Network 配置 export NETWORK_IFACE="eth0" export NETWORK_IFACES="eth0,eth1" # Multiple interfaces (comma-separated) export NETWORK_IP_VERSION="both" # ipv4, ipv6, or both export FIREWALL_MODE="auto" # auto, xdp, nftables, iptables, none export FIREWALL_DISABLE_XDP="false" # Gen0Sec Platform 配置 export API_KEY="your-api-key" export BASE_URL="https://api.gen0sec.com/v1" export LOG_SENDING_ENABLED="true" # CAPTCHA 配置 export CAPTCHA_SITE_KEY="your-site-key" export CAPTCHA_SECRET_KEY="your-secret-key" export CAPTCHA_JWT_SECRET="your-jwt-secret" export CAPTCHA_PROVIDER="turnstile" export CAPTCHA_TOKEN_TTL="7200" export CAPTCHA_CACHE_TTL="300" # 内容扫描 export CONTENT_SCANNING_ENABLED="true" export CLAMAV_SERVER="localhost:3310" export CONTENT_MAX_FILE_SIZE="10485760" export CONTENT_SCAN_CONTENT_TYPES="text/html,application/x-www-form-urlencoded,multipart/form-data" export CONTENT_SKIP_EXTENSIONS=".jpg,.png,.gif" export CONTENT_SCAN_EXPRESSION="http.request.method eq \"POST\" or http.request.method eq \"PUT\"" # Internal services 配置 export INTERNAL_SERVICES_ENABLED="true" export INTERNAL_SERVICES_PORT="9180" export INTERNAL_SERVICES_BIND_IP="127.0.0.1" # PROXY protocol 配置 export PROXY_PROTOCOL_ENABLED="true" export PROXY_PROTOCOL_TIMEOUT="1000" # Daemon mode export DAEMON_ENABLED="false" export DAEMON_PID_FILE="/var/run/synapse.pid" export DAEMON_WORKING_DIRECTORY="/" export DAEMON_USER="root" export DAEMON_GROUP="root" export DAEMON_CHOWN_PID_FILE="true" # 日志 export LOGGING_LEVEL="info" export LOGGING_FILE_ENABLED="true" export LOGGING_DIRECTORY="/var/log/synapse" export LOGGING_MAX_FILE_SIZE="104857600" export LOGGING_FILE_COUNT="10" export LOGGING_SYSLOG_ENABLED="false" export LOGGING_SYSLOG_FACILITY="daemon" export LOGGING_SYSLOG_IDENTIFIER="synapse" ``` 完整列表请参见 [ENVIRONMNET_VARS.md](./docs/ENVIRONMNET_VARS.md)。
功能配置示例
BPF 统计 - 内核级数据包处理统计 (需要 XDP) ``` logging: bpf_stats: enabled: true log_interval_secs: 60 enable_dropped_ip_events: true dropped_ip_events_interval_secs: 30 ``` ``` BPF_STATS_ENABLED=true BPF_STATS_LOG_INTERVAL=60 ```
TCP 指纹识别 - 用于行为分析的 TCP SYN 数据包指纹 ``` logging: tcp_fingerprint: enabled: true log_interval_secs: 60 enable_fingerprint_events: true fingerprint_events_interval_secs: 30 min_packet_count: 3 min_connection_duration_secs: 1 ``` ``` TCP_FINGERPRINT_ENABLED=true TCP_FINGERPRINT_LOG_INTERVAL=60 ```
内容扫描 - 基于 ClamAV 的恶意软件检测 ``` proxy: content_scanning: enabled: true clamav_server: "localhost:3310" max_file_size: 10485760 # 10MB ``` ``` CONTENT_SCANNING_ENABLED=true CLAMAV_SERVER=localhost:3310 ```
CAPTCHA 防护 - hCaptcha, reCAPTCHA, 或 Turnstile ``` proxy: captcha: site_key: "your-site-key" secret_key: "your-secret-key" jwt_secret: "your-jwt-secret" provider: "turnstile" # hcaptcha, recaptcha, turnstile token_ttl: 7200 cache_ttl: 300 ``` ``` CAPTCHA_SITE_KEY=... CAPTCHA_SECRET_KEY=... CAPTCHA_PROVIDER=turnstile ```
ACME (自动 TLS) - 自动 Let's Encrypt 证书 ``` proxy: acme: enabled: true port: 9180 email: "admin@example.com" storage_path: "/var/lib/synapse/acme" storage_type: "redis" # or "file" development: false ``` ``` ACME_ENABLED=true ACME_EMAIL=admin@example.com ACME_STORAGE_TYPE=redis ```
GeoIP 数据库 - 国家、ASN 和城市级地理定位 ``` proxy: geoip: refresh_secs: 28800 # 8 hours country: { url: "https://git.io/GeoLite2-Country.mmdb", path: "/var/lib/synapse" } asn: { url: "https://git.io/GeoLite2-ASN.mmdb", path: "/var/lib/synapse" } city: { url: "https://git.io/GeoLite2-City.mmdb", path: "/var/lib/synapse" } ``` ``` GEOIP_COUNTRY_URL=... GEOIP_COUNTRY_PATH=/var/lib/synapse GEOIP_REFRESH_SECS=28800 ```
威胁情报 - 用于实时防护的 Threat MMDB ``` platform: threat: url: "https://download.gen0sec.com/v1" path: "/var/lib/synapse" refresh_secs: 300 # 5 minutes ``` ``` THREAT_MMDB_URL=https://download.gen0sec.com/v1 THREAT_MMDB_PATH=/var/lib/synapse ```
防火墙与网络 - 后端模式和接口配置 ``` firewall: mode: "auto" # auto, xdp, nftables, iptables, none disable_xdp: false network: iface: "eth0" ifaces: ["eth0", "eth1"] # overrides iface ip_version: "both" # ipv4, ipv6, both ``` ``` FIREWALL_MODE=auto NETWORK_IFACE=eth0 NETWORK_IP_VERSION=both ```
日志 - 文件和 Syslog 配置 ``` logging: level: "info" # error, warn, info, debug, trace file_logging_enabled: true log_directory: "/var/log/synapse" max_log_size: 104857600 # 100MB log_file_count: 10 syslog: enabled: false facility: "daemon" identifier: "synapse" ``` ``` LOGGING_LEVEL=info LOGGING_FILE_ENABLED=true LOGGING_DIRECTORY=/var/log/synapse ``` 生成的日志文件:`error.log`, `app.log`, `access.log` (自动轮转和 gzip 压缩)。
Platform (Gen0Sec API) - API 集成和日志发送 ``` platform: api_key: "your-api-key" base_url: "https://api.gen0sec.com/v1" log_sending_enabled: true include_response_body: true max_body_size: 1048576 # 1MB ``` ``` API_KEY=your-api-key LOG_SENDING_ENABLED=true ```
内部服务 - CAPTCHA 验证,ACME 挑战服务器 ``` proxy: internal_services: enabled: true port: 9180 bind_ip: "127.0.0.1" ``` ``` INTERNAL_SERVICES_ENABLED=true INTERNAL_SERVICES_PORT=9180 ``` 端点: - `GET /health` - 健康检查 - `POST /cgi-bin/captcha/verify` - CAPTCHA 验证 - `GET /.well-known/acme-challenge/*` - ACME HTTP-01 挑战 - `GET /cert/expiration` - 检查所有证书过期状态 - `GET /cert/expiration/:domain` - 检查特定证书状态 - `POST /cert/renew/:domain` - 手动触发证书续订
上游配置 Synapse 支持通过单独的配置文件进行高级上游路由,并支持热重载。完整文档请参见 [UPSTREAM_CONFIG.md](./UPSTREAMS_CONFIG.md)。 特性:多种服务发现提供商 (file, Consul, Kubernetes),全局配置,内部路径,每路径速率限制/headers/超时,加权负载均衡,以及零停机更新。 **基础示例 (file provider):** ``` provider: "file" config: https_proxy_enabled: false sticky_sessions: true global_rate_limit: 100 global_request_headers: - "X-Proxy-From:Synapse" global_response_headers: - "Access-Control-Allow-Origin:*" internal_paths: "/cgi-bin/captcha/verify": rate_limit: 200 servers: - "127.0.0.1:9180" upstreams: example.com: certificate: "example.com" acme: challenge_type: "dns-01" # or "http-01" (default) email: "admin@example.com" wildcard: true paths: "/": rate_limit: 200 force_https: true ssl_enabled: true request_headers: - "Host: api.example.com" connection_timeout: 30 read_timeout: 120 write_timeout: 30 idle_timeout: 60 servers: - "127.0.0.1:8000" - address: "127.0.0.1:8001" weight: 3 - address: "127.0.0.1:8002" weight: 2 ```
Kubernetes 服务发现 ``` provider: "kubernetes" config: sticky_sessions: true global_rate_limit: 300 kubernetes: servers: - "https://k8s-api.example.com:6443" tokenpath: "/var/run/secrets/kubernetes.io/serviceaccount/token" services: - upstream: "http://my-service.default.svc.cluster.local:8080" hostname: "api.example.com" path: "/" rate_limit: 500 ```
Consul 服务发现 ``` provider: "consul" config: sticky_sessions: true global_rate_limit: 200 consul: servers: - "consul1.example.com:8500" - "consul2.example.com:8500" token: "your-consul-token" services: - upstream: "http://service-name.service.consul:8080" hostname: "api.example.com" path: "/" rate_limit: 500 ```
示例文件:[file](./upstreams_example.yaml) | [kubernetes](./upstreams_example_kubernetes.yaml) | [consul](./upstreams_example_consul.yaml)
SIGHUP 配置重载 Synapse 支持通过 `SIGHUP` 信号进行运行时配置重载: ``` kill -HUP $(cat /var/run/synapse.pid) ``` **支持热重载的设置:** | 设置 | 配置路径 | 备注 | |---------|-------------|-------| | 日志级别 | `logging.level` | 立即切换日志详细程度 | | 日志发送 | `platform.log_sending_enabled` | 启用/禁用 API 日志发送 | | API key | `platform.api_key` | 更新 platform 凭证 | | Base URL | `platform.base_url` | 更改 API endpoint | | 包含响应体 | `platform.include_response_body` | 切换访问日志中的 body 捕获 | | 最大 body 大小 | `platform.max_body_size` | 调整日志的 body 大小限制 | | 上游 | `proxy.upstream.conf` | 重新读取 upstreams YAML 文件 | | 安全规则 | 本地文件或 API | 重新获取访问规则和 WAF 规则 | | GeoIP 数据库 | `proxy.geoip.*` | 重新下载 MMDB 文件 | **需要重启的设置:** | 设置 | 配置路径 | 原因 | |---------|-------------|--------| | 监听地址 | `proxy.address_http`, `proxy.address_tls` | 端口绑定在启动时设置 | | 网络接口 | `network.iface`, `network.ifaces` | XDP 在启动时附加 | | 防火墙模式 | `firewall.mode`, `firewall.disable_xdp` | BPF 程序在启动时加载 | | 运行时线程 | `multi_thread`, `worker_threads` | Tokio 运行时创建于启动时 | | 守护进程设置 | `daemon.*` | 进程守护化是一次性的 | | Redis 连接 | `proxy.redis.*` | 连接池创建于启动时 | | CAPTCHA 配置 | `proxy.captcha.*` | 提供商初始化一次 (只写) | | 内容扫描 | `proxy.content_scanning.*` | 扫描器初始化一次 (只写) | | 证书路径 | `proxy.certificates` | 在启动时加载 | | ACME 设置 | `proxy.acme.*` | ACME 管理器创建于启动时 | | 内部服务 | `proxy.internal_services.*` | 服务器在启动时绑定 | | BPF 统计间隔 | `logging.bpf_stats.*` | 任务计时器设置于生成时 | | TCP 指纹间隔 | `logging.tcp_fingerprint.*` | 任务计时器设置于生成时 | | 文件日志配置 | `logging.file_logging_enabled`, `logging.log_directory` | 日志 appender 构建于启动时 | | Syslog 配置 | `logging.syslog.*` | Syslog appender 构建于启动时 | | IP 版本 | `network.ip_version` | BPF 过滤器编译于启动时 | | PROXY protocol | `proxy.protocol.*` | 监听器配置于启动时 |
## 功能特性
多后端防火墙 - **自动回退** - XDP/BPF > nftables > iptables > 用户态 - **动态访问规则** - 通过 Gen0Sec API 自动更新的允许/阻止列表 - **BPF map 执行** - 通过 XDP 在内核级别执行规则 - **IPv4/IPv6 双栈** - 独立的规则集,零停机更新 - **BPF 统计** - 数据包计数器,被阻断 IP 跟踪 (仅 XDP)
威胁情报 - **IP 信誉评分** - 通过 Gen0Sec API 自动评分 - **Threat MMDB** - 用于离线查询的本地 MaxMind 数据库 (自动更新) - **GeoIP MMDB** - 国家、ASN 和城市级地理定位 (自动更新) - **Bot 检测** - 高级检测和缓解 - **Redis 缓存** - 缓存威胁数据以提高性能
JA4+ 指纹识别 - **JA4** - 从 ClientHello 进行 TLS 客户端指纹识别 - **JA4H** - HTTP header 指纹识别 - **JA4T** - 从 SYN 数据包选项进行 TCP 指纹识别 - **JA4L** - 从数据包时序进行延迟指纹识别 - **JA4S** - 从 ServerHello 进行 TLS 服务器指纹识别 - **JA4X** - X.509 证书指纹识别
WAF (Wirefilter 表达式) - **表达式引擎** - 根据请求方法、路径、headers 等进行过滤 - **动作** - 根据表达式匹配进行允许、阻止或挑战 - **集中管理** - 从 Gen0Sec API 获取表达式 - **内容扫描触发器** - 根据请求特征定义何时扫描
TLS 管理 - **ACME/Let's Encrypt** - 支持 HTTP-01 和 DNS-01 挑战的自动证书 - **通配符检测** - 对通配符域自动使用 DNS-01 - **自定义证书** - 自带 TLS 证书 - **HTTPS 强制** - 通过 HTTP 升级响应强制 HTTPS - **过期监控** - 自动续订和通过 API 手动触发
内容扫描 - **ClamAV 集成** - 实时恶意软件检测 - **Multipart/form 扫描** - 扫描上传和表单数据 - **Wirefilter 触发器** - 用于决定何时扫描的高级规则 - **扩展名过滤** - 跳过特定文件扩展名
## 系统要求 | 要求 | 最低 | 推荐 | 备注 | |-------------|---------|-------------|-------| | **内核** | 4.18+ | 5.4+ | 需要 XDP 支持 | | **glibc** | 2.31+ | 2.35+ | 用于二进制发布版本 | | **架构** | x86_64 | x86_64, aarch64 | 支持 ARM64 | | **内存** | 128 MB | 512 MB+ | 取决于流量 | | **磁盘** | 100 MB | 500 MB+ | 用于日志和 MMDB 文件 | | 依赖 | 是否必需 | 用途 | |------------|----------|---------| | **libbpf** | 是 | eBPF 程序加载 | | **Redis** | 是 | 缓存,证书存储 | | **ClamAV** | 可选 | 内容扫描 |
已测试的发行版 | 发行版 | 版本 | 状态 | 备注 | |--------------|---------|--------|-------| | **Ubuntu** | 24.04 LTS | ✅ 已测试 | 推荐 | | **Ubuntu** | 22.04 LTS | ✅ 已测试 | 完全支持 | | **Ubuntu** | 20.04 LTS | ✅ 已测试 | 所有功能, glibc 2.31 | | **Ubuntu** | 18.04 LTS | ✅ 已测试 | 所有功能, 内核 4.15→5.4 HWE | | **Ubuntu** | 16.04 LTS | ⚠️ 有限 | 仅 iptables 后端 (无 XDP) | | **Debian** | 12 (Bookworm) | ✅ 已测试 | 完全支持 | | **Debian** | 11 (Bullseye) | ✅ 兼容 | glibc 2.31 | | **RHEL/Rocky/Alma** | 9.x | ✅ 已测试 | 完全支持 | | **RHEL/CentOS** | 8.x | ⚠️ 兼容 | 内核 4.18 | | **Fedora** | 39+ | ✅ 兼容 | 最新内核 | | **Amazon Linux** | 2023 | ✅ 兼容 | AWS 优化 |
内核功能要求 | 功能 | 用于 | 检查命令 | |---------|--------------|---------------| | **XDP** | 数据包过滤 | `grep XDP /boot/config-$(uname -r)` | | **BPF** | eBPF 程序 | `grep BPF /boot/config-$(uname -r)` | | **BTF** | BPF 类型格式 | `ls /sys/kernel/btf/vmlinux` |
## 架构 - **多后端防火墙** - XDP/nftables/iptables/用户态数据包过滤 - **HTTP/TLS 服务器** - HTTP 流量处理和 HTTPS 连接管理 - **内部服务服务器** - 用于 CAPTCHA, ACME 和证书管理的统一服务器 - **反向代理** - 将请求转发到上游服务 - **上游管理器** - 支持服务发现、加权负载均衡和热重载的路由 - **威胁情报** - Gen0Sec API 和 Threat MMDB 集成 - **GeoIP 管理器** - 通过 MMDB 进行国家、ASN 和城市级地理定位 - **访问规则引擎** - 具有周期性 API 更新的动态 IP 允许/阻止列表 - **BPF 统计收集器** - 内核级数据包处理跟踪 - **TCP 指纹收集器** - SYN 指纹提取和分析 - **指纹引擎** - 完整的 JA4+ 套件 (JA4, JA4H, JA4T, JA4L, JA4S, JA4X) - **CAPTCHA 引擎** - 多提供商 CAPTCHA 验证 - **内容扫描器** - ClamAV 恶意软件检测 - **ACME 管理器** - HTTP-01 和 DNS-01 证书管理 - **文件/Syslog 记录器** - 轮转的文件记录和集中式 syslog 日志 - **事件队列** - 用于日志、统计和事件的统一批处理 - **Redis 缓存** - 证书、威胁情报、CAPTCHA 和内容扫描结果 ### 性能 - **超低延迟** - XDP 过滤在内核空间运行 - **高吞吐量** - 基于 Rust 的实现,采用异步 I/O - **内存高效** - 最小占用,高效缓存 - **可扩展** - 多网络接口和并发连接 ## 致谢! [Cloudflare](https://github.com/cloudflare) 提供 Pingora 和 Wirefilter [Aralaz](https://github.com/sadoyan/aralez) 提供 Aralez
标签:CISA项目, Docker镜像, IP 地址批量处理, JA4指纹, JSONLines, Linux服务器安全, Rust, TLS证书管理, XDP, 入侵防御, 内核级安全, 包过滤, 反向代理, 可视化界面, 威胁情报, 子域名突变, 开发者工具, 开源安全工具, 搜索引擎查询, 服务器防护, 系统提示词, 网络安全, 网络流量审计, 请求拦截, 逆向工程平台, 通知系统, 防火墙, 隐私保护, 零信任