Edit README.md via Git Manager GUI

This commit is contained in:
2026-04-02 07:10:43 +00:00
parent 4e8bb367ef
commit d10a017a8e

192
README.md
View File

@@ -1,2 +1,192 @@
# Backend-Join-Guard # BackendJoinGuard
![Plugin](https://img.shields.io/badge/Plugin-BackendJoinGuard-0B63CE?style=for-the-badge)
![Platform](https://img.shields.io/badge/Platform-Paper%20%2F%20Spigot-D48700?style=for-the-badge)
![Mode](https://img.shields.io/badge/Mode-Standalone%20or%20StatusAPI%20Sync-6F42C1?style=for-the-badge)
BackendJoinGuard blockiert direkte Joins auf Backend-Servern und erlaubt nur Verbindungen vom Proxy.
Wichtig:
- Dieses Plugin kommt auf jeden Backend-Server.
- Es kommt nicht auf den Proxy.
- Es kann komplett eigenständig genutzt werden.
- Optional kann es seine Regeln zentral von StatusAPI beziehen.
## Zweck
BackendJoinGuard verhindert, dass Spieler einen Unterserver direkt betreten und damit den Proxy-Schutz umgehen.
Das Plugin prüft beim Login die Quell-IP des Spielers.
Nur erlaubte Proxy-IPs oder CIDR-Netze dürfen durchgelassen werden.
Alle anderen Verbindungen werden direkt vor dem Join geblockt.
## Betriebsarten
### Standalone
BackendJoinGuard nutzt nur seine eigene config.yml.
Das ist sinnvoll, wenn du keinen zentralen Sync willst oder das Plugin unabhängig von StatusAPI betreiben möchtest.
### StatusAPI Sync
BackendJoinGuard lädt seine Schutzregeln regelmäßig von StatusAPI.
Wenn der Sync ausfällt, bleiben die lokalen Werte aus der config.yml als Fallback erhalten.
## Installation
1. Die JAR in den plugins-Ordner jedes Backend-Servers kopieren.
2. Server starten, damit die config.yml erzeugt wird.
3. Konfiguration anpassen.
4. Server neu starten oder /backendguard reload ausführen.
## Konfiguration
Datei: config.yml
### Lokale Guard-Werte
- enforcement-enabled
Aktiviert oder deaktiviert den Direktjoin-Schutz.
- log-blocked-attempts
Loggt geblockte Direktjoin-Versuche in die Konsole.
- kick-message
Nachricht für geblockte Spieler.
- allowed-proxy-ips
Liste exakter Proxy-IPs.
- allowed-proxy-cidrs
Liste erlaubter Netze im CIDR-Format.
Beispiel:
```yml
enforcement-enabled: true
log-blocked-attempts: true
kick-message: "&cBitte verbinde dich nur ueber den Proxy-Server."
allowed-proxy-ips:
- "127.0.0.1"
- "::1"
- "185.123.45.67"
allowed-proxy-cidrs:
- "10.0.0.0/24"
```
### StatusAPI Sync
Konfigurationsblock:
```yml
statusapi-sync:
enabled: true
base-url: "http://127.0.0.1:9191"
endpoint-path: "/network/backendguard/config"
api-key: "DEIN_SYNC_KEY"
interval-seconds: 60
log-sync-errors: true
```
Bedeutung:
- enabled
Aktiviert den zentralen Abruf über StatusAPI.
- base-url
Basis-URL deiner StatusAPI auf dem Proxy.
- endpoint-path
Standard-Endpunkt für den Guard-Sync.
- api-key
Optionaler Schutz für den Sync-Endpunkt.
Muss identisch zu backendguard.sync.api_key in StatusAPI sein.
- interval-seconds
Wie oft BackendJoinGuard die Regeln neu abruft.
- log-sync-errors
Loggt Sync-Probleme in die Backend-Konsole.
## Passende StatusAPI-Konfiguration
Wenn du den Sync-Modus nutzen willst, pflegst du die zentralen Werte in StatusAPI über network-guard.properties.
Relevante Schlüssel:
```properties
backendguard.enforcement_enabled=true
backendguard.log_blocked_attempts=true
backendguard.kick_message=&cBitte verbinde dich nur ueber den Proxy-Server.
backendguard.allowed_proxy_ips=127.0.0.1,::1,185.123.45.67
backendguard.allowed_proxy_cidrs=10.0.0.0/24
backendguard.sync.api_key=DEIN_SYNC_KEY
```
## Beispiele
### Alles auf einer Maschine
Nutze in der Regel:
- allowed-proxy-ips: 127.0.0.1, ::1
- base-url: http://127.0.0.1:9191
### Proxy auf einem anderen Host
Nutze die echte Proxy-IP:
- allowed-proxy-ips: 185.123.45.67
- base-url: http://185.123.45.67:9191
### Internes Netzwerk
Nutze interne IP oder CIDR:
- allowed-proxy-ips: 10.0.0.10
- allowed-proxy-cidrs: 10.0.0.0/24
- base-url: http://10.0.0.10:9191
## Befehl
| Command | Beschreibung |
|---|---|
| /backendguard reload | Lädt die Config neu und startet bei aktivem Sync sofort einen neuen Abruf |
## Permission
| Permission | Beschreibung |
|---|---|
| backendguard.admin | Darf BackendJoinGuard verwalten |
## Funktionsweise
BackendJoinGuard prüft beim PreLogin die IP-Adresse des Clients.
- Erlaubte Proxy-IP: Join erlaubt
- Erlaubtes CIDR-Netz: Join erlaubt
- Alles andere: Join wird direkt geblockt
## Troubleshooting
### Spieler werden trotz Proxy geblockt
- Prüfe, ob wirklich die Proxy-IP in allowed-proxy-ips eingetragen ist.
- Prüfe bei mehreren Netzsegmenten, ob ein CIDR-Eintrag sinnvoller ist.
- Prüfe, ob Velocity/Bungee korrekt als vorgeschalteter Proxy arbeitet.
### Sync mit StatusAPI funktioniert nicht
- Prüfe base-url.
- Prüfe, ob StatusAPI auf dem konfigurierten Port erreichbar ist.
- Prüfe, ob api-key identisch zu backendguard.sync.api_key ist.
- Prüfe die Backend-Konsole bei aktiviertem log-sync-errors.
### Standalone oder Sync?
- Wenn du maximale Einfachheit willst: Standalone.
- Wenn du zentrale Verwaltung willst: StatusAPI Sync.
- Wenn StatusAPI ausfällt, bleiben im Sync-Modus die lokalen Werte als Absicherung bestehen.