v0.3: 6-layer architecture complete
Layers: Layer 1: XDP/eBPF — TCP state machine, SYN throttle, blacklist, ringbuf Layer 2: PoW Challenge — SHA-256 hashcash, dynamic difficulty, constant-time verify Layer 3: Rust Core — HMAC handshake, rate limit, death code (existing) Layer 4: Velocity — Physics check, CAPTCHA, protocol verification Layer 5: Paper — Heartbeat, auto-registration (existing) Layer 6: Traffic Intel — EWMA, 168h profiling, reputation, alerts Infra: XDP→Prometheus metrics, ClickHouse + Grafana dashboard, Docker Compose Testing: 100-IP DDoS simulation, MHDDoS ref analysis, load test report Fixes: VarInt sign extension UB, pure ACK deadlock, RST/FIN cleanup Ref: MHDDoS, Sonar, LimboFilter, AtomGuard, Infrarust, MC-XDP-eBPF, PowGo
This commit is contained in:
parent
78fc6e00c7
commit
269daa071f
66 changed files with 4529 additions and 1003 deletions
60
deploy/grafana/dashboard.json
Normal file
60
deploy/grafana/dashboard.json
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
{
|
||||
"title": "Rampart — ClickHouse",
|
||||
"uid": "rampart-clickhouse",
|
||||
"panels": [
|
||||
{
|
||||
"title": "Connections per second",
|
||||
"type": "timeseries",
|
||||
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 0 },
|
||||
"datasource": { "type": "grafana-clickhouse-datasource", "uid": "clickhouse" },
|
||||
"targets": [
|
||||
{
|
||||
"query": "SELECT $timeSeries AS t, count() AS v FROM rampart_events WHERE $timeFilter AND event_type IN ('connection_allowed', 'connection_blocked') GROUP BY t ORDER BY t",
|
||||
"rawQuery": true,
|
||||
"format": "time_series"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Bans per minute",
|
||||
"type": "timeseries",
|
||||
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 0 },
|
||||
"datasource": { "type": "grafana-clickhouse-datasource", "uid": "clickhouse" },
|
||||
"targets": [
|
||||
{
|
||||
"query": "SELECT $timeSeries AS t, count() AS v FROM rampart_events WHERE $timeFilter AND event_type = 'ban' GROUP BY t ORDER BY t",
|
||||
"rawQuery": true,
|
||||
"format": "time_series"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Active blacklist size",
|
||||
"type": "stat",
|
||||
"gridPos": { "h": 8, "w": 12, "x": 0, "y": 8 },
|
||||
"datasource": { "type": "grafana-clickhouse-datasource", "uid": "clickhouse" },
|
||||
"targets": [
|
||||
{
|
||||
"query": "SELECT count(DISTINCT ip) AS v FROM rampart_events WHERE event_type = 'ban' AND timestamp > now() - INTERVAL 5 MINUTE",
|
||||
"rawQuery": true,
|
||||
"format": "table"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "PoW pass / fail rate",
|
||||
"type": "timeseries",
|
||||
"gridPos": { "h": 8, "w": 12, "x": 12, "y": 8 },
|
||||
"datasource": { "type": "grafana-clickhouse-datasource", "uid": "clickhouse" },
|
||||
"targets": [
|
||||
{
|
||||
"query": "SELECT $timeSeries AS t, countIf(event_type = 'pow_passed') AS passed, countIf(event_type = 'pow_failed') AS failed FROM rampart_events WHERE $timeFilter AND event_type IN ('pow_passed', 'pow_failed') GROUP BY t ORDER BY t",
|
||||
"rawQuery": true,
|
||||
"format": "time_series"
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"schemaVersion": 39,
|
||||
"version": 1
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue