vpsik-lab/vpsGuard
GitHub: vpsik-lab/vpsGuard
Stars: 0 | Forks: 0
# vpsGuard Agent
**Lightweight intelligent security agent for VPS protection.**
Detects SSH brute-force, enriches with threat intelligence (AbuseIPDB, AlienVault OTX), and blocks attackers via nftables dynamic sets.
**Binary size**: 7.4 MB · **Idle RAM**: ~8 MB · **Block latency**: <100ms
## What is this?
vpsGuard **Agent** is the on-premise component that runs on your VPS.
It monitors SSH logs, scores threat activity using a hybrid model, and blocks attackers.
The **Central Platform** (Phase B — in development) will provide a managed threat intelligence feed that agents can pull from.
See [`docs/AGENT-API-CONTRACT.md`](docs/AGENT-API-CONTRACT.md) for the interface between them.
## Features
- **Real-time monitoring** — auth.log + systemd journal
- **Hybrid scoring** — Behavioral (30%) + AbuseIPDB (25%) + OTX (20%) + Temporal (10%) + Central Feed (15%)
- **Configurable thresholds** — Block, rate-limit, quarantine scores + behavior window/limit + temporal TTL all via `config.yaml`
- **nftables blocking** — Dynamic sets with auto-expire (IPv4 + IPv6 dual-stack)
- **IP Whitelist** — Protect critical IPs from accidental blocking
- **SHA256 verification** — install.sh verifies binary checksums before install
- **Works offline** — Fully functional without internet
- **Telegram + Email alerts** — Rich HTML notifications
- **Tamper alerts** — Watchdog fires immediate Telegram/Email on config checksum mismatch
- **Daily reports** — Optional Telegram report every 24h with security summary
- **Log integrity** — Hash chain for audit log tamper detection
- **Self-protecting** — Watchdog, systemd sandbox, config integrity, AppArmor profile
- **One-command deploy** — Under 30 seconds
- **Full uninstall** — `bash install.sh --uninstall` undoes everything
- **VPS hardening** — Optional `deploy/harden.sh` (SSH, UFW, BBR, sysctl, auditd, AppArmor, Docker, auto-updates, process accounting)
- **Persistent cache** — SQLite IP reputation cache survives service restarts
- **CLI management** — `--list-blocked`, `--unblock `, `--status` commands
- **Metrics endpoint** — `/metrics` in Prometheus text format + JSON (`?format=json`)
- **Secrets via env vars** — API keys and passwords via `VPSGUARD_*` env vars (no plain-text in config)
## Project Status
| Phase | Component | Status | Description |
|-------|-----------|--------|-------------|
| **A** | Agent (this repo) | ✅ **v0.3.0 — Stable** | On-premise SSH protection, hybrid scoring, nftables blocking, VPS hardening, daily reports |
| **B** | Central Platform | 🔜 In development | Managed threat intelligence feed, agent telemetry, geo-targeted blocking |
| **C** | Dashboard & Analytics | 📋 Planned | Web dashboard, multi-agent management, attack visualization |
The Agent is fully functional standalone. Phase B/C are **separate projects** — the Agent's behaviour is unaffected if they never ship.
## License & Editions
vpsGuard is **open-core**: the Agent is free and open-source under **GNU AGPLv3**.
| Feature | Free (AGPLv3) | Paid (Platform) |
|---------|---------------|-----------------|
| SSH brute-force detection | ✅ | ✅ |
| Local hybrid scoring | ✅ | ✅ |
| nftables auto-blocking | ✅ | ✅ |
| Threat intel (AbuseIPDB + OTX) | ✅ | ✅ |
| Telegram + Email alerts | ✅ | ✅ |
| Configurable thresholds | ✅ | ✅ |
| All source code available | ✅ (AGPLv3) | ❌ (proprietary) |
| **Central threat feed** | ❌ (requires Platform) | ✅ (submission-based) |
| Global IP reputation network | ❌ | ✅ |
| Multi-agent dashboard | ❌ | ✅ |
| Priority support | ❌ | ✅ |
**Zero telemetry**: the free Agent never phones home — no outbound connections unless you configure AbuseIPDB/OTX APIs.
## Quick Start
# 1. Build
git clone https://github.com/vpsik-lab/vpsGuard.git
cd vpsGuard
go build -ldflags="-s -w" -o vpsGuard ./cmd/vpsGuard/
# 2. Configure
cp config.yaml /etc/vpsGuard/config.yaml
# Edit: set API keys, notification tokens, etc.
# TIP: use env vars for secrets instead of plain-text
# export VPSGUARD_ABUSEIPDB_KEY=your-key
# export VPSGUARD_TELEGRAM_TOKEN=your-token
# 3. Run
sudo ./vpsGuard -config /etc/vpsGuard/config.yaml
# 4. CLI management (while agent is running)
sudo ./vpsGuard --list-blocked # view all blocked IPs
sudo ./vpsGuard --unblock 1.2.3.4 # unblock an IP
./vpsGuard --status # check agent health
curl http://127.0.0.1:9090/metrics # Prometheus metrics
curl http://127.0.0.1:9090/metrics?format=json # JSON metrics
Or use the install script:
# Requires root/sudo:
curl -sSL https://raw.githubusercontent.com/vpsik-lab/vpsGuard/main/deploy/install.sh | sudo bash
For unattended installation (non-root with sudo):
curl -sSL https://raw.githubusercontent.com/vpsik-lab/vpsGuard/main/deploy/install.sh | sudo bash -s -- --unattended
See [`docs/AGENT-DEPLOYMENT.md`](docs/AGENT-DEPLOYMENT.md) for full installation options.
## Documentation
| Doc | Description |
|-----|-------------|
| [`AGENT-ARCHITECTURE.md`](docs/AGENT-ARCHITECTURE.md) | Internal architecture, components, event flow |
| [`AGENT-SCORING.md`](docs/AGENT-SCORING.md) | Scoring formula, thresholds, edge cases |
| [`AGENT-DEPLOYMENT.md`](docs/AGENT-DEPLOYMENT.md) | Install, configure, manage, troubleshoot |
| [`AGENT-API-CONTRACT.md`](docs/AGENT-API-CONTRACT.md) | Contract between Agent and Central Platform |
| [`THREAT_MODEL.md`](docs/THREAT_MODEL.md) | Threat model, trust boundaries, attack scenarios |
| [`TEST-COVERAGE.md`](docs/TEST-COVERAGE.md) | Unit test inventory (19 files, 136 tests) |
| [`RFC-0001-event-model.md`](docs/RFC-0001-event-model.md) | Event schema specification |
## Quality
| Metric | Status |
|--------|--------|
| **Tests** | 146 test functions across 20 files — all 12 packages pass |
| **Race detection** | `go test -race ./...` ✅ (CI enforces) |
| **Static analysis** | `go vet ./...` ✅ |
| **Build** | `go build ./...` ✅ amd64 / arm64 / arm |
| **Test docs** | [`docs/TEST-COVERAGE.md`](docs/TEST-COVERAGE.md) |
## Requirements
- Ubuntu 20.04+ or Debian 11+
- systemd
- nftables
## Project Structure
├── cmd/vpsGuard/main.go Entry point
├── internal/
│ ├── api/ Central feed pull client
│ ├── bootstrap/ System hardening
│ ├── config/ YAML config + validation
│ ├── engine/ Scorer, decision, memory
│ ├── firewall/ nftables manager
│ ├── monitor/ Log tailing, parsing, behavioral analysis
│ ├── notify/ Telegram + Email
│ ├── pipeline/ Event bus + event types
│ ├── rules/ YAML rules engine
│ ├── selfprotect/ Watchdog + health
│ └── threat/ AbuseIPDB, OTX, cache
├── deploy/
│ ├── install.sh One-command installer
│ ├── vpsGuard.service systemd unit
│ └── vpsGuard.logrotate Log rotation config
└── docs/ Documentation
## License
GNU AGPLv3
标签:EVTX分析