CDN & WAF-Integration
Läuft dein Ziel hinter einem CDN oder einer WAF (Web Application Firewall) -- Cloudflare, Bunny CDN, Fastly, Akamai, Sucuri und andere -- kann es passieren, dass LIVCK als Bot erkannt und geblockt wird. Typisches Symptom: Der Service ist im Browser erreichbar, LIVCK meldet ihn aber als Offline, und im Artifact steht eine Block-Seite wie
Sorry, you have been blocked
You are unable to access <deine-domain>
Cloudflare Ray ID: …
Diese Seite erklärt, wie du LIVCK bei deinem CDN-/WAF-Anbieter freigibst -- sicher, ohne die WAF für echte Angreifer aufzuweichen.
Warum das passiert
CDN- und WAF-Anbieter filtern automatisierten Traffic. Sie sehen unbekannte User-Agents, ungewöhnliche IPs oder fehlende Browser-Signale und blocken den Request -- meist mit einem 403 und einer Block-Seite. Das trifft legitime Uptime-Monitoring-Bots genauso wie Angriffe.
LIVCK sendet standardmäßig den User-Agent:
LIVCK-Worker/1.0 (+https://livck.cloud/bot)
Der ist öffentlich dokumentiert -- das ist Absicht (Transparenz für Seitenbetreiber, siehe unsere Bot-Seite), heißt aber auch: eine WAF-Regel, die nur auf diesen UA matcht, kann von Angreifern einfach durch curl -A "LIVCK-Worker/1.0 …" umgangen werden. Für eine echte Allowlist brauchst du etwas, das nur LIVCK kennt.
Der sichere Weg: geheimer Custom Header
Warum nicht einfach den User-Agent allowlisten?
Ein UA-Contains-Check ist unsicher, weil der LIVCK-UA öffentlich bekannt ist. Jeder Angreifer kann denselben UA senden und deine WAF-Regel umgehen. Eine sichere Allowlist braucht ein geheimes Merkmal, das nur LIVCK mit deinem Service teilt.
LIVCK kann pro Service einen individuellen HTTP-Header mitsenden. Diesen Header-Wert matcht du in deiner WAF-Regel. Weil nur LIVCK und du den Wert kennen, kann ein Angreifer ihn nicht erraten und die WAF nicht umgehen.
Schritt 1 -- Header festlegen
- Wähle einen Header-Namen und einen langen, zufälligen Wert. Beispiel:
- Name:
X-LIVCK-Bot - Wert:
9f3c2a1e8b7d4c6a5e2f9b1d8c7a6e3f(mindestens 32 Zeichen, zufällig)
- Name:
- Erzeuge den Wert mit einem Passwort-Generator, KeePassXC,
openssl rand -hex 24oder 1Password. Keine erratbaren Werte wielivckodermonitoring.
Tipp
Behandle den Header-Wert wie ein Passwort. Je länger und zufälliger, desto sicherer. Ein 32-stelliger Hex-String reicht für die meisten Anforderungen.
Schritt 2 -- Header in LIVCK hinterlegen
- Öffne den Service unter Services → Service anklicken → Bearbeiten.
- Im Schritt Konfiguration scrolle zu Custom Headers.
- Trage Name und Wert ein (z.B.
X-LIVCK-Bot→9f3c2a1e8b7d4c6a5e2f9b1d8c7a6e3f). - Speichern.
Werte werden verschlüsselt gespeichert
Header-Werte liegen verschlüsselt vor. Bestehende Werte werden im Formular nicht erneut angezeigt -- Feld leer lassen bedeutet behalten, neuen Wert eingeben ersetzt.
LIVCK sendet ab der nächsten Prüfung deinen Header mit jedem Request an diesen Service.
Schritt 3 -- WAF-Regel beim Anbieter anlegen
Die Regel lautet sinngemäß: Wenn der Header X-LIVCK-Bot gleich <dein Wert> ist, dann erlaube (Skip / Allow) -- und sonst die normale WAF-Logik weiterlaufen lassen. Konkrete Snippets für die häufigsten Anbieter:
Cloudflare
- Cloudflare-Dashboard → Security → WAF → Custom rules → Create rule.
- Feld-Ausdruck als Edit expression (oder via Builder):
(http.req.headers["x-livck-bot"] eq "9f3c2a1e8b7d4c6a5e2f9b1d8c7a6e3f")
- Action: Skip → aktiviere "All remaining custom rules" (damit keine nachfolgenden WAF-Regeln LIVCK-Requests treffen).
- Scope: Hostname gleich deine überwachte Domain.
- Deploy.
Skip, nicht Allow
Mit Skip umgehst du explizit alle nachfolgenden WAF-Regeln für den gematchten Request. Allow allein reicht oft nicht -- spätere Managed Rules oder Rate-Limits können sonst trotzdem zuschlagen. Wenn du nur die Bot-Fight-Mode-Blockade umgehen willst, reicht "Allow" oder "Log" als Action.
Bunny CDN (Shielding)
- Bunny-Dashboard → Shielding (oder Edge Rules je Zone).
- Neue Edge Rule anlegen:
- Match: Request Header
X-LIVCK-Botequals9f3c2a1e8b7d4c6a5e2f9b1d8c7a6e3f. - Action: Allow (oder Bypass Shielding).
- Match: Request Header
- Speichern und publishen.
Bunny Edge Rules sind kostenpflichtig
Edge Rules in Bunny sind ein kostenpflichtiges Add-On. Für einfache Freigaben reicht oft die IP-Allowlist (siehe unten) statt einer Edge Rule.
Andere Anbieter (Fastly, Akamai, Sucuri, AWS WAF)
Das Prinzip ist überall gleich:
- Neue Regel / Custom Rule / Rule Statement anlegen.
- Match-Bedingung auf Request-Header
X-LIVCK-Botequals<dein Wert>. - Action: Allow / Skip / Bypass WAF.
- Ggf. Scope auf den überwachten Host einschränken.
Bei AWS WAF (CloudFront / ALB) nutzt du eine Custom-WebACL-Regel mit ByteMatchStatement auf den Header-Wert und Action Allow.
Schritt 4 -- testen
- Speichere den Service in LIVCK, warte ein Intervall ab.
- Im Service-Detail sollte der Check jetzt Online sein und ein Status
200zeigen. - Bleibt der Service Offline: öffne das jüngste Artifact -- steht dort noch die Block-Seite, greift die WAF-Regel nicht. Prüfe Header-Namen, Wert und Scope (richtiger Host?).
- Kommt der Check durch, ist die Block-Seite verschwunden und du siehst die echte Antwort deines Ursprungs.
Alternative: IP-Allowlist
Wenn du keine Custom Header setzen willst, kannst du stattdessen die LIVCK-Egress-IPs in deiner WAF freigeben. Die IPs sind dynamisch -- du bekommst sie als Liste unter:
https://app.livck.cloud/ips
IP-Listen können sich ändern
LIVCK erweitert und rotiert Prüfstandorte. Allowlist-Einträge können dadurch veralten und müssen regelmäßig synchronisiert werden. Der Custom-Header-Weg ist robuster, weil er nicht von der IP-Adresse abhängt.
Bei Cloudflare legst du dafür eine WAF-Custom-Regel mit Match ip.src in {<IPs aus /ips>} und Action Skip an. Bei Bunny hinterlegst du die IPs in den Shielding-Allowlisten.
Sicherheitsnetz: Conditions für Block-Antworten
Egal welche Freigabe-Methode du nutzt -- lege zusätzlich eine Bedingung an, die eine Block-Antwort als Offline markiert. So bekommst du es sofort mit, falls die WAF-Regel aus Versehen deaktiviert wird oder der Anbieter die Konfiguration ändert:
| Feld | Operator | Wert | Status |
|---|---|---|---|
| Statuscode | gleich | 403 | Offline |
| Antwort-Inhalt | enthält | Sorry, you have been blocked | Offline |
| Antwort-Inhalt | enthält | cf-ray | Beeinträchtigt |
| Antwort-Header | enthält nicht | text/html (dein echter Content-Type) | Beeinträchtigt |
Empfehlung
Mindestens die 403-Bedingung sollte jeder Service hinter CDN/WAF haben. Ohne sie meldet LIVCK die Block-Seite als "erfolgreiche Antwort" und der Service bleibt fälschlich Online -- das ist genau das Szenario, das du vermeiden willst.
Ohne eigene Bedingung gilt: erfolgreiche Antwort = Online. Eine 403-Block-Seite ist technisch eine erfolgreiche HTTP-Antwort und wird ohne explizite Bedingung nicht als Offline erkannt. Siehe Bedingungen für Details.
Was tun, wenn es trotzdem nicht klappt
- Artifact öffnen -- Service-Detailseite → jüngstes Artifact. Steht die Block-Seite noch drin? Dann greift die WAF-Regel nicht.
- Header-Wert prüfen -- exakt gleiche Schreibweise in LIVCK und in der WAF-Regel? Keine Leerzeichen am Anfang/Ende? LIVCK speichert den Header-Wert verschlüsselt, prüfe also in den Service-Einstellungen gegen.
- Scope der Regel -- matcht die Regel den überwachten Host? Oft ist eine Regel versehentlich auf eine andere Subdomain beschränkt.
- Reihenfolge / Priorität -- bei Cloudflare steht die Skip-Regel ganz oben, sonst kann eine frühere Managed Rule den Request schon blocken.
- Cache leeren -- manche CDNs cachen die Block-Antwort. Purge die URL nach Änderung der WAF-Regel.
- Alternative probieren -- wechsle zum IP-Allowlist-Weg, falls der Header-Weg hakt.
Zusammenfassung
| Weg | Sicherheit | Aufwand | Robustheit |
|---|---|---|---|
| Custom Header (empfohlen) | hoch -- geheimer Wert, nicht spoofbar | einmalig: Header setzen + 1 WAF-Regel | sehr robust -- unabhängig von IPs |
| IP-Allowlist | mittel -- IPs öffentlich, aber rotieren | IP-Liste abonnieren, regelmäßig syncen | mittelmäßig -- veraltet bei IP-Rotation |
| User-Agent-Allowlist | niedrig -- nicht empfohlen | minimal | UA ist öffentlich, von Angreifern spoofbar |
Kombiniere den Custom-Header-Weg mit einer 403-Bedingung als Sicherheitsnetz -- so hast du eine saubere Freigabe und merkst sofort, wenn die WAF-Regel aus Versehen kippt.
Weiterführende Themen
- Check-Einstellungen -- Timeout, Wiederholungen, Standorte konfigurieren
- Bedingungen -- Regeln, wann ein Service als Offline oder Beeinträchtigt gilt
- Artifacts -- Diagnose-Daten bei Status-Wechseln einsehen
- Monitoring-Standorte -- Von wo LIVCK deine Services prüft
- Fehlerbehebung -- Lösungen für häufige Probleme