CI / changes (push) Successful in 15s
CI / commitlint (push) Has been skipped
CI / openapi (push) Has been skipped
CI / web (push) Successful in 1m0s
CI / go (push) Successful in 1m0s
CI / bird2 (push) Successful in 16s
CI / release (push) Successful in 3m39s
Added public HTTPS endpoints for firewall installation and enrollment scripts, allowing access without API keys. Updated the URL handling in the firewall code to ensure all suggested control plane URLs are served over HTTPS. Enhanced documentation to reflect the new public endpoints and their usage. Updated tests to verify the correct behavior of the new URL handling logic.
41 lines
2.3 KiB
Markdown
41 lines
2.3 KiB
Markdown
# Firewall blocklist
|
||
|
||
Подсистема синхронизации blocklist на произвольные Linux-серверы через bash-скрипт и HTTP API.
|
||
|
||
## Авторизация
|
||
|
||
1. **Enroll** — `POST /v1/firewall/enroll` с заголовком `X-EvoBGP-Seed` (значение `EVOBGP_BUNDLE_SEED_HEX` на CP). Клиент генерирует токен `evobgp_fw_*` локально.
|
||
2. **Approve** — operator в Web UI (`/firewall` → Запросы).
|
||
3. **Sync** — `GET /v1/firewall/blocklist` с `Authorization: Bearer <client_token>`.
|
||
|
||
## Политика block/accept
|
||
|
||
- **`block`** — добавить префиксы выбранного BGP community в kernel blocklist.
|
||
- **`accept`** — не блокировать префиксы этого community.
|
||
- **Community** — правило применяется к префиксам с этим `community_id` в опубликованной revision; пустое значение («Все») — ко всем communities.
|
||
- **Default** — accept (пустой blocklist без явных `block`).
|
||
|
||
Порядок: сначала per-server overrides клиента, затем tenant-default. Для каждого community берётся первое подходящее правило по приоритету.
|
||
|
||
Справочник communities: Web UI → Справочники, или модули с привязкой community к префиксам.
|
||
|
||
## Установка на сервер
|
||
|
||
Публичные URL (без API-ключа, вне `WEBUI_IP_WHITELIST` Traefik): `GET /v1/firewall/install.sh`, `GET /v1/firewall/sync-script`, `POST /v1/firewall/enroll`. Всегда **HTTPS**.
|
||
|
||
```bash
|
||
curl -fsSL https://<api>/v1/firewall/install.sh | \
|
||
EVOBGP_CP_URL=https://<api> \
|
||
EVOBGP_SEED=<bundle_seed_hex> \
|
||
EVOBGP_CLIENT_NAME="web-01" \
|
||
bash
|
||
```
|
||
|
||
Файлы: `/etc/evobgp/firewall.conf`, `/usr/local/sbin/evobgp-firewall.sh`, systemd timer `evobgp-firewall.timer`.
|
||
|
||
## Failover через speaker
|
||
|
||
При `EVOBGP_FIREWALL_FAILOVER_ENABLED=1` на speaker-agent CP реплицирует состояние через `POST /v1/agent/firewall-replicate`. Клиенты используют тот же DNS-домен.
|
||
|
||
См. также [access.md](access.md), [remote-speakers.md](remote-speakers.md).
|