Files
EvoFirewall/docs/architecture.md
T
DenozordecandCursor 0bed4367c7
Build and Push EvoFirewall Docker Image / build-and-push (push) Successful in 1m44s
Build and Push EvoFirewall Docker Image / create-release (push) Skipped
feat(policy): именованные наборы правил с DNS и M:N привязкой к агентам
Правила живут в policy_sets; evaluate мержит назначенные наборы; источник list|CIDR|hostname с кэшем DNS.

Co-authored-by: Cursor <[email protected]>
2026-07-20 22:11:03 +07:00

1.8 KiB

Архитектура EvoFirewall

Централизованный control plane для firewall-агентов (Linux nft/ipset, MikroTik address-list).

Компоненты

Компонент Путь Роль
Web SPA apps/web ReUI Frame, TanStack Router/Query
API apps/api Fastify 5, JWT + agent tokens
DB packages/db Drizzle + SQLite WAL
Shared packages/shared Zod-контракты, RBAC helpers
UI packages/ui shadcn primitives @evofw/ui
Agents apps/api/src/agent-scripts install.sh, sync, MikroTik RSC

Потоки

  1. EnrollPOST /v1/agent/enroll + X-EvoFW-Seed → pending agent
  2. Approve — UI/API → status approved
  3. PolicyGET /v1/agent/policy → deny/allow CIDRs + mode + hash
  4. Apply — agent пишет kernel rules, POST /v1/agent/apply-report + stats sample
  5. Lists refresh — cron каждые 5 мин (json_url / domains / evobgp_community)

Политика

  • Именованные наборы правил (policy_sets); агенту назначается M:N через agent_policy_sets
  • Правило в наборе: ровно один источник — IP-список (list_id), CIDR или DNS-имя (hostname → A/AAAA, кэш в policy_rule_resolved)
  • Evaluate: правила всех назначенных enabled-наборов (sort + priority) + ip_overrides
  • blacklist — default accept, apply deny set
  • whitelist — default drop, apply allow set (+ lo/established на Linux)
  • Overrides, смена наборов и refresh DNS/lists бампят policy_generation

Auth

  • Portal SSO app id fw, permissions fw:*
  • Agent bearer token (sha256 hash в БД)