- remove Java plugins (velocity/paper), dashboard, all MC-specific code
(handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names
cargo build/clippy(-D warnings)/test green (55 tests)
233 lines
12 KiB
Markdown
233 lines
12 KiB
Markdown
<div align="center">
|
||
|
||
> **⚠️ UNDER DEVELOPMENT** — All performance data, benchmarks, and specifications shown are approximate and subject to change.
|
||
>
|
||
> **⚠️ В РАЗРАБОТКЕ** — Все показатели производительности, тесты и характеристики являются примерными и могут измениться.
|
||
|
||
</div>
|
||
|
||
<div align="center">
|
||
|
||
# Rampart
|
||
|
||
Universal network protection platform (L3/L4/L7 DDoS filtering framework)
|
||
|
||

|
||

|
||

|
||

|
||

|
||
|
||
[English](#english) | [Русский](#russian)
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
<a name="english"></a>
|
||
|
||
## English
|
||
|
||
### Overview
|
||
|
||
Rampart filters traffic at three levels before it reaches your service:
|
||
|
||
- **Kernel level** — XDP/eBPF drops unwanted packets before they reach the Linux TCP stack;
|
||
- **Network level** — PoW challenge raises the cost of connection floods for any TCP protocol;
|
||
- **Application level** — Rust userspace core performs L7 handshake analysis, rate limiting and reputation checks.
|
||
|
||
Protocol-specific logic lives in **modular protocol plugins**, so the same platform protects VDS, web services, and game servers alike.
|
||
|
||
### Architecture
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────────┐
|
||
│ Layer 1: Kernel / XDP (C) │
|
||
│ universal TCP state machine · SYN throttle · CIDR black/white │
|
||
│ lists · UDP policy · pluggable BPF protocol hooks │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ Layer 2: Universal PoW Challenge (Rust) │
|
||
│ SHA256 hashcash · dynamic difficulty │
|
||
│ works over any TCP protocol ⚠️ OFF by default │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ Layer 3: Userspace Core (Rust) │
|
||
│ L7 handshake analysis · rate limit · HMAC · death-code patterns │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ Layer 4: Protocol Plugins (feature crates) │
|
||
│ minecraft (first plugin) · http (planned) · grpc (planned) │
|
||
└────────────────────────────────────────────────────────────────────┘
|
||
Traffic Intel (EWMA thresholds, profiling, reputation)
|
||
runs across all layers
|
||
```
|
||
|
||
```
|
||
Attacker → [XDP/eBPF] → [PoW] → [Userspace Core] → [Plugin] → Your Service
|
||
1 2 3 4
|
||
```
|
||
|
||
### Components
|
||
|
||
| Component | Role | Stack |
|
||
|-----------|------|-------|
|
||
| **rampart-core** | Edge engine: XDP loader, PoW challenge, L7 filtering, traffic intel | Rust (tokio, libbpf) + C (XDP) |
|
||
| **rampart-manager** | Management API + Redis sync | Rust (axum, redis) |
|
||
| **rampart-cli** | CLI tool for operators | Rust (clap) |
|
||
| **protocol plugins** | Protocol-aware filtering as feature crates | Rust |
|
||
| ↳ `minecraft` | First plugin (MC handshake analysis) | Rust |
|
||
| ↳ `http`, `grpc` | Planned | Rust |
|
||
| **docs/kb** | Bilingual knowledge base: attack anatomy, defense levels, practice guides | Markdown |
|
||
|
||
### Performance
|
||
|
||
Confirmed numbers only — VDS stress test ([load-test-report.md](docs/research/load-test-report.md)), edge-only setup on loopback, 2 vCPU:
|
||
|
||
| Scenario | Result |
|
||
|----------|--------|
|
||
| Raw L7 throughput | ~4k conn/s proxied |
|
||
| Masked 100-IP handshake flood (default 5 pps/IP) | **99.6% blocked**, legit clients OK |
|
||
| SYN flood without XDP | 0 impact — handled by the kernel |
|
||
|
||
Full benchmark suite in progress.
|
||
|
||
### Quick Start
|
||
|
||
```bash
|
||
# Build
|
||
cargo build --release
|
||
|
||
# Create config
|
||
rampart config init > /etc/rampart/config.toml
|
||
|
||
# Run edge node
|
||
./target/release/rampart-core --config /etc/rampart/config.toml
|
||
```
|
||
|
||
### Documentation
|
||
|
||
| Path | Description |
|
||
|------|-------------|
|
||
| [docs/kb/](docs/kb/) | Knowledge base: attack anatomy, defense levels, practice guides |
|
||
| [docs/research/architecture.md](docs/research/architecture.md) | Layered architecture, ADRs, migration notes |
|
||
| [docs/research/load-test-report.md](docs/research/load-test-report.md) | VDS stress test report (2026-08-04) |
|
||
| [docs/research/](docs/research/) | Research notes: eBPF, anti-bot, DDoS vectors, networking |
|
||
| [docs/deployment.md](docs/deployment.md) | Deployment guide |
|
||
| [docs/configuration.md](docs/configuration.md) | Configuration reference |
|
||
| [docs/runbook.md](docs/runbook.md) | Operations runbook |
|
||
|
||
### Roadmap
|
||
|
||
- Stabilize the protocol plugin API
|
||
- BPF hook modules for deep protocol parsing in XDP
|
||
- Terminal UI (ratatui TUI)
|
||
- HTTP protocol plugin
|
||
|
||
---
|
||
|
||
<a name="russian"></a>
|
||
|
||
## Русский
|
||
|
||
### Обзор
|
||
|
||
Rampart фильтрует трафик на трёх уровнях до того, как он дойдёт до вашего сервиса:
|
||
|
||
- **Уровень ядра** — XDP/eBPF отбрасывает нежелательные пакеты до того, как они попадут в TCP-стек Linux;
|
||
- **Сетевой уровень** — PoW-challenge повышает стоимость флуда соединений для любого TCP-протокола;
|
||
- **Прикладной уровень** — userspace-ядро на Rust выполняет анализ L7-handshake, rate limiting и проверку репутации.
|
||
|
||
Логика, специфичная для протоколов, вынесена в **модульные протокол-плагины** — одна платформа защищает VDS, веб-сервисы и игровые серверы.
|
||
|
||
### Архитектура
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────────┐
|
||
│ Слой 1: Ядро / XDP (C) │
|
||
│ универсальный TCP state machine · SYN throttle · CIDR black/ │
|
||
│ white списки · UDP policy · подключаемые BPF протокол-хуки │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ Слой 2: Универсальный PoW Challenge (Rust) │
|
||
│ SHA256 hashcash · dynamic difficulty │
|
||
│ работает поверх любого TCP-протокола ⚠️ ВЫКЛЮЧЕН по умолчанию │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ Слой 3: Userspace Core (Rust) │
|
||
│ L7 handshake analysis · rate limit · HMAC · death-code паттерны │
|
||
├────────────────────────────────────────────────────────────────────┤
|
||
│ Слой 4: Протокол-плагины (feature crates) │
|
||
│ minecraft (первый плагин) · http (в планах) · grpc (в планах) │
|
||
└────────────────────────────────────────────────────────────────────┘
|
||
Traffic Intel (EWMA thresholds, профилирование, репутация)
|
||
работает поперёк всех слоёв
|
||
```
|
||
|
||
```
|
||
Атакующий → [XDP/eBPF] → [PoW] → [Userspace Core] → [Плагин] → Ваш сервис
|
||
1 2 3 4
|
||
```
|
||
|
||
### Компоненты
|
||
|
||
| Компонент | Роль | Технологии |
|
||
|-----------|------|------------|
|
||
| **rampart-core** | Edge-движок: XDP loader, PoW challenge, L7-фильтрация, traffic intel | Rust (tokio, libbpf) + C (XDP) |
|
||
| **rampart-manager** | Management API + Redis sync | Rust (axum, redis) |
|
||
| **rampart-cli** | CLI для операторов | Rust (clap) |
|
||
| **Протокол-плагины** | Протоколозависимая фильтрация в виде feature crates | Rust |
|
||
| ↳ `minecraft` | Первый плагин (анализ MC-handshake) | Rust |
|
||
| ↳ `http`, `grpc` | В планах | Rust |
|
||
| **docs/kb** | Двуязычная база знаний: анатомия атак, уровни защиты, практические руководства | Markdown |
|
||
|
||
### Производительность
|
||
|
||
Только подтверждённые числа — VDS stress test ([load-test-report.md](docs/research/load-test-report.md)), edge-only на loopback, 2 vCPU:
|
||
|
||
| Сценарий | Результат |
|
||
|----------|-----------|
|
||
| Raw L7 пропускная способность | ~4k conn/s проксировано |
|
||
| Маскированный flood с 100 IP (default 5 pps/IP) | **99.6% заблокировано**, легитимные клиенты в порядке |
|
||
| SYN flood без XDP | 0 влияния — обрабатывается ядром |
|
||
|
||
Полный набор бенчмарков в процессе подготовки.
|
||
|
||
### Быстрый старт
|
||
|
||
```bash
|
||
# Сборка
|
||
cargo build --release
|
||
|
||
# Создание конфига
|
||
rampart config init > /etc/rampart/config.toml
|
||
|
||
# Запуск edge ноды
|
||
./target/release/rampart-core --config /etc/rampart/config.toml
|
||
```
|
||
|
||
### Документация
|
||
|
||
| Путь | Описание |
|
||
|------|----------|
|
||
| [docs/kb/](docs/kb/) | База знаний: анатомия атак, уровни защиты, практические руководства |
|
||
| [docs/research/architecture.md](docs/research/architecture.md) | Слоистая архитектура, ADR, миграционные заметки |
|
||
| [docs/research/load-test-report.md](docs/research/load-test-report.md) | Отчёт по VDS stress test (2026-08-04) |
|
||
| [docs/research/](docs/research/) | Research-заметки: eBPF, антибот, векторы DDoS, сети |
|
||
| [docs/deployment.md](docs/deployment.md) | Руководство по деплою |
|
||
| [docs/configuration.md](docs/configuration.md) | Справочник конфигурации |
|
||
| [docs/runbook.md](docs/runbook.md) | Операционный runbook |
|
||
|
||
### Roadmap
|
||
|
||
- Стабилизация API протокол-плагинов
|
||
- BPF hook модули для глубокого парсинга протоколов в XDP
|
||
- Терминальный интерфейс (ratatui TUI)
|
||
- HTTP протокол-плагин
|
||
|
||
---
|
||
|
||
### Links
|
||
|
||
- [Releases](../../releases)
|
||
- [Issues](../../issues)
|
||
- [License](LICENSE)
|
||
|
||
### License
|
||
|
||
GNU General Public License v3.0
|