No description
Find a file
loki5512344 6863249ad4
feat: HTTP protocol plugin + XDP globals patching from config
protocol-http (compile-time feature):
- HttpHandler: incremental HTTP/1.1 request parse (fragment-safe),
  header size/timeout limits, method whitelist, Host required,
  blocked_paths, optional User-Agent requirement
- [protocol.http] config section; registry wiring behind feature

XDP globals:
- src/xdp/globals.rs: XdpGlobals + build_rodata_image() mirroring
  xdp/core/config.h layout; set via OpenMapMut::set_initial_value()
  before load ([xdp] section: ports, udp policy, throttle, challenge)
- wire set_globals into rampart binary startup

fix: gate preflight() behind xdp feature (dead code without it)
2026-08-24 12:18:22 +02:00
.github/workflows feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
deploy feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
docs feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
src feat: HTTP protocol plugin + XDP globals patching from config 2026-08-24 12:18:22 +02:00
tests feat: HTTP protocol plugin + XDP globals patching from config 2026-08-24 12:18:22 +02:00
xdp fix: universal default protected port range (was Minecraft 25565-25570) 2026-08-24 11:18:57 +02:00
.dockerignore fix: clippy byte_char_slices lint, Docker java artifact path 2026-07-21 16:34:30 +02:00
.gitignore feat: traffic intel hot path, SYN RST-challenge, XDP environment diagnostics 2026-08-24 10:11:10 +02:00
build.rs feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
Cargo.lock feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
Cargo.toml feat: HTTP protocol plugin + XDP globals patching from config 2026-08-24 12:18:22 +02:00
clippy.toml feat: velocity routing, server registry and RampartVelocity tests 2026-08-03 10:54:28 +02:00
deny.toml feat: velocity routing, server registry and RampartVelocity tests 2026-08-03 10:54:28 +02:00
docker-compose.yml feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
Dockerfile v0.3: 6-layer architecture complete 2026-07-21 15:47:36 +02:00
LICENSE Initial commit: Rampart v0.2.0 2026-07-20 20:53:32 +02:00
Makefile feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
README.md feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00
rustfmt.toml Initial commit: Rampart v0.2.0 2026-07-20 20:53:32 +02:00
TODO.md feat!: universal redesign — drop Minecraft stack, single-crate architecture 2026-08-24 01:50:22 +02:00

⚠️ UNDER DEVELOPMENT — All performance data, benchmarks, and specifications shown are approximate and subject to change.

⚠️ В РАЗРАБОТКЕ — Все показатели производительности, тесты и характеристики являются примерными и могут измениться.

Rampart

Universal network protection platform (L3/L4/L7 DDoS filtering framework)

Rust eBPF License Version Status

English | Русский


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), 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

# 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/ Knowledge base: attack anatomy, defense levels, practice guides
docs/research/architecture.md Layered architecture, ADRs, migration notes
docs/research/load-test-report.md VDS stress test report (2026-08-04)
docs/research/ Research notes: eBPF, anti-bot, DDoS vectors, networking
docs/deployment.md Deployment guide
docs/configuration.md Configuration reference
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

Русский

Обзор

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), edge-only на loopback, 2 vCPU:

Сценарий Результат
Raw L7 пропускная способность ~4k conn/s проксировано
Маскированный flood с 100 IP (default 5 pps/IP) 99.6% заблокировано, легитимные клиенты в порядке
SYN flood без XDP 0 влияния — обрабатывается ядром

Полный набор бенчмарков в процессе подготовки.

Быстрый старт

# Сборка
cargo build --release

# Создание конфига
rampart config init > /etc/rampart/config.toml

# Запуск edge ноды
./target/release/rampart-core --config /etc/rampart/config.toml

Документация

Путь Описание
docs/kb/ База знаний: анатомия атак, уровни защиты, практические руководства
docs/research/architecture.md Слоистая архитектура, ADR, миграционные заметки
docs/research/load-test-report.md Отчёт по VDS stress test (2026-08-04)
docs/research/ Research-заметки: eBPF, антибот, векторы DDoS, сети
docs/deployment.md Руководство по деплою
docs/configuration.md Справочник конфигурации
docs/runbook.md Операционный runbook

Roadmap

  • Стабилизация API протокол-плагинов
  • BPF hook модули для глубокого парсинга протоколов в XDP
  • Терминальный интерфейс (ratatui TUI)
  • HTTP протокол-плагин

License

GNU General Public License v3.0