=== Bastora Security Audit ===
Contributors: mathiasva
Tags: security, firewall, malware, brute force, hardening
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 2.3.17
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: bastora-security-audit

62-Punkte-Sicherheits-Check mit Firewall, Schadcode-Scanner, URL-Reputation, Captcha, Schwarm-Schutz und Auto-Reparatur der WordPress-Kerndateien.

Unterstützungszeitraum: Diese Version erhält Sicherheitsupdates bis mindestens 10/2031.
Hersteller: Mathias Grothe, Coburger Straße 17c, 14612 Falkensee · Nutzerinformationen: https://www.bastora.de/cra/free

== Description ==

**Bastora** prüft Deine WordPress-Installation gegen einen festen Katalog aus **62 Sicherheitspunkten**, härtet sie automatisch und wehrt laufende Angriffe ab. Installieren, aktivieren, einmal „Sicherheitsprüfung starten" klicken. Mehr ist nicht zu tun.

Drei Dinge macht Bastora anders:

1. **Ehrliche Außensicht.** Bastora prüft Deine Seite so, wie ein Bot sie sieht: Versionslecks im HTML, offene Verzeichnisse, fehlende Security-Header, sichtbare Endpoints. Die meisten anderen Plugins prüfen nur ihre eigene Konfiguration.
2. **Konflikt-erkennend.** Läuft schon Wordfence, Sucuri, Solid Security, All-In-One WP Security, MalCare, WP Cerber, Limit Login Attempts, Really Simple SSL oder ein vergleichbares Plugin, tritt Bastora in den überlappenden Bereichen zur Seite, statt einen Konflikt zu bauen. Im Dashboard steht pro Härtung im Klartext, warum sie aktiv oder inaktiv ist.
3. **Null Konfiguration.** Härtungen sind ab Werk aktiv, jede Verbindung nach außen ist ab Werk aus.

= Was Bastora tut =

* **Firewall.** Prüft den ganzen Aufruf: Adresszeile, Formulardaten, Roh-Inhalt, hochgeladene Dateien und Kopfzeilen. Die Regeln gegen kritische Lücken im WordPress-Kern greifen in jedem Modus.
* **Login-Schutz.** Fehlversuche zählen je Adresse, je Konto und für die ganze Website: fünf Fehlversuche sperren 30 Minuten, bei Wiederholung 4 und dann 24 Stunden. Dazu Honeypot, ein einmal gültiges Sicherheitswort im Formular und eine Rechenaufgabe, wenn es eng wird. Cloudflare- und Proxy-IPs werden korrekt erkannt, IPv6 auf dem /64-Präfix gesperrt. Feste Adressen wie das Büro stehen auf einer Whitelist, bekannte Geräte werden nie ausgesperrt.
* **Datei-Wache mit Auto-Reparatur.** Täglicher Abgleich von Kern, Plugins und Themes gegen die Originale auf wordpress.org. Manipulierte Kerndateien ersetzt Bastora nach doppelter Hash-Prüfung selbst, die vorgefundene Fassung wandert in die Quarantäne.
* **Schadcode-Scanner.** PHP, JavaScript, HTML und Server-Regeldateien, alle vier Stunden, neue und geänderte Dateien zuerst. Ein Fund nennt Plugin oder Theme beim Namen, dazu Pfad und Zeile.
* **Bot- und Scanner-Abwehr.** Wer Adressen abfragt, die es auf einer WordPress-Website nie gibt, sperrt sich selbst aus. Das Dashboard zeigt, wie viel Deines Bot-Verkehrs von Marktforschungs-Crawlern und KI-Sammlern kommt, und weist sie auf Klick ab. Suchmaschinen und Linkvorschauen bleiben zugelassen.
* **Kommentar-Wache.** Spam hält WordPress zurück, räumt ihn aber nicht weg: die Einträge bleiben in der Datenbank stehen. Bastora zählt sie und löscht sie auf Klick endgültig. Dazu lässt sich die Kommentarfunktion schließen, ganz oder nur dort, wo noch keine Kommentare stehen. Jede Seite ist einzeln entscheidbar, und der Weg zurück steht in den Einstellungen.
* **Nachbarn auf demselben Webspace.** Liegen mehrere WordPress-Installationen in einem Hosting-Paket, laufen sie unter demselben Benutzerkonto des Servers. Bastora sagt Dir, welche davon von Deiner Installation aus erreichbar sind. Gemessen wird nur von der eigenen Seite aus, eine fremde Installation fasst Bastora dabei nicht an.
* **Datenbank-Prüfung.** Läuft täglich im Hintergrund und meldet untergeschobene Konten, geänderte Adressen und Code in den Einstellungen, ohne dass jemand das Backend öffnen muss.
* **Härtung.** Versionslecks, RSD- und WLW-Verweise, XML-RPC, Pingbacks, REST-API-Benutzer, Application Passwords, X-Powered-By, Author-Enumeration, Security-Header, PHP-Sperre im Uploads-Verzeichnis, Revisions-Limit und HTTPS-Umstellung auf einen Klick.
* **Dashboard im Klartext.** Score, jeder Prüfpunkt mit Erklärung, Tagesprofil der letzten 24 Stunden und alle ausgesperrten Adressen mit Grund und Restlaufzeit, einzeln wieder freizugeben.

= Was Bastora bewusst nicht macht =

* **Kein erzwungenes TOTP.** Solopreneure sperren sich regelmäßig mit Authenticator-Apps aus. Bastora setzt stattdessen auf Brute-Force-Schutz, Rate-Limit und Anomalie-Erkennung.
* **Kein Verstecken der Login-URL.** Eine umbenannte Login-URL macht den Passwort-Reset-Link kaputt, sobald das Plugin deaktiviert wird. Rate-Limit plus Honeypot ist die saubere Lösung.
* **Verbindungen nach außen nur mit Deiner Freigabe.** Bastora fragt nach dem Zweck: Die Schutzdienste (Versions-Abgleich gegen wordpress.org, Bastora-Schwarm, Schad-URL-Feed, Passwort-Leck-Check) gibst Du mit einem Haken frei, die Sicherheitsforschung mit einem zweiten. Ab Werk ist alles aus, in den Einstellungen schaltest Du jeden Dienst auch einzeln.

= Einwilligung zur Sicherheitsforschung (Opt-in) =

Mit Deiner Einwilligung schickt Bastora täglich eine kurze Zählung und alle 28 Tage eine Zusammenfassung an bastora.de (Server in Deutschland). Zweck: Angriffe und Bots über viele Websites erkennen, Firewall-Regeln, Signaturen und Sperrlisten für alle Bastora-Websites anpassen, Fehlalarme verringern und die Wirkung der Härtung messen. Keine Werbung, keine Profile, keine Weitergabe.

Nie übertragen werden IP-Adressen, Deine Domain, Benutzernamen, E-Mail-Adressen, Inhalte und alles, was jemand in ein Formular Deiner Website eingibt. Die Einwilligung ist ab Werk aus, freiwillig und jederzeit in den Einstellungen widerrufbar. Alle Einzelheiten stehen unter „Privacy".

== Installation ==

1. Installiere das Plugin aus dem WordPress-Plugin-Verzeichnis oder lade den ZIP-Ordner nach `/wp-content/plugins/`.
2. Aktiviere das Plugin im Menü „Plugins".
3. Öffne das neue Menü „Bastora" und klicke einmal auf „Sicherheitsprüfung starten".

Mehr ist nicht zu tun. Bastora richtet sich selbst ein.

== Frequently Asked Questions ==

= Brauche ich technisches Wissen, um Bastora zu nutzen? =

Nein. Bastora braucht keine Konfiguration. Installieren, aktivieren, scannen, fertig.

= Funktioniert Bastora neben Wordfence, Sucuri oder Solid Security? =

Ja. Bastora erkennt diese Plugins und tritt in den überlappenden Bereichen zur Seite. Das Dashboard zeigt, welche Härtungen deshalb inaktiv sind. Die Regeln gegen kritische Kern-Lücken bleiben in jedem Fall aktiv.

= Überträgt das Plugin Daten von meiner Seite? =

Ab Werk nichts. Im Einrichtungs-Assistenten gibst Du je Zweck frei, in den Einstellungen jeden Dienst auch einzeln: Versions-Abgleich gegen api.wordpress.org, Bastora-Schwarm, Schad-URL-Feed, Passwort-Leck-Check und die Einwilligung zur Sicherheitsforschung. Vor Deinem Häkchen geht kein einziger Request raus.

= Wie widerrufe ich die Einwilligung zur Sicherheitsforschung? =

Bastora → Einstellungen → Schalter aus → speichern. Ab da geht kein Datensatz mehr an bastora.de. Bereits übertragene Datensätze hängen an einer zufälligen Installationskennung, nicht an Deiner Domain. Willst Du sie löschen lassen, schreib Bastora die Kennung, sie steht in den Einstellungen hinter dem „i" der Einwilligung.

= Wo werden die Daten gespeichert? =

Auf deutschen Servern. Bastora arbeitet ausschließlich mit einem deutschen Hoster.

= Was passiert, wenn ich Bastora deinstalliere? =

Bei einfacher Deaktivierung bleiben die Einstellungen erhalten. Beim Löschen entfernt Bastora alle Einstellungen, Audit-Ergebnisse und Kennungen und rollt die Härtungen zurück. Ein aktiver Schwarm-Knoten wird vorher abgemeldet.

= Wie funktioniert der Bastora-Schwarm? =

Erkennt eine teilnehmende Website einen Brute-Force-Angriff oder einen Scanner, meldet sie die Angreifer-IP anonym an einen zentralen Server. Melden mehrere Websites dieselbe IP, wandert sie in einen Sperrkatalog, den alle teilnehmenden Websites abholen und vorbeugend anwenden. Einträge verfallen nach 72 Stunden ohne neue Meldung, bekannte Crawler wie Googlebot oder Bingbot werden nie übernommen. Deine Seite gibt dabei nur einen anonymen Token, die Angreifer-IP, den Angriffs-Typ und die Plugin-Version heraus, keine Domain und keine Nutzerdaten.

= Meine App oder Schnittstelle bekommt bei großen Anfragen einen Fehler 413. Warum? =

Sehr große Anfragen ohne Anmeldung weist die Firewall ab, bevor sie Rechenzeit kosten. Die Grenze liegt bei etwa 4 MB im reinen Anfragekörper; hochgeladene Dateien aus Formularen zählen nicht dazu. Greift eine App oder Schnittstelle auf Deine Website zu, soll sie sich mit einem Anwendungspasswort anmelden (im WordPress-Profil unter „Anwendungspasswörter“). Angemeldete Anfragen prüft Bastora vollständig und lässt sie auch bei großen Datenmengen durch. Für große Uploads nutze die REST-Schnittstelle mit Anwendungspasswort. XML-RPC trägt die Anmeldung erst im Anfragekörper; große XML-RPC-Uploads über der Grenze weist Bastora ab.

= Ich habe eine Sicherheitslücke in Bastora gefunden. Wohin damit? =

Schreib an go@bastora.de. Wie Bastora mit Meldungen umgeht, steht unter https://www.bastora.de/sicherheit-melden: Eingangsbestätigung, feste Reaktionszeiten und ein fairer Umgang mit Findern. Im Plugin findest Du den Meldeweg samt Stückliste und Nutzerinformation im Dashboard im Bereich „CRA“. Bitte gib Bastora Zeit zum Schließen, bevor Du eine Lücke öffentlich machst.

== Screenshots ==

1. Der erste Scan startet, Bastora prüft 62 Sicherheitspunkte in etwa 25 Sekunden.
2. Ergebnis des ersten Scans: Score plus klare Aufteilung in bestanden, Hinweise und offene Punkte.
3. Bastora schaltet die Härtungen scharf, wo ein anderes Sicherheits-Plugin schon zuständig ist, lässt Bastora die Hand davon.
4. Das Dashboard nach Aktivierung: aktueller Sicherheits-Score und jeder Prüfpunkt mit Klartext-Erklärung.

== Changelog ==

= 2.3.17 =
* **Gekaufte Plugins und Themes im Abgleich.** Für gekaufte Plugins und alles andere, wofür wordpress.org kein passendes Original bereitstellt, gibt es nichts zum Vergleichen. Mit Deiner Einwilligung bildet Bastora eine Prüfsumme über die Programmdateien und vergleicht sie mit derselben Version auf anderen Bastora-Websites. In der Prüfung siehst Du, ob Deine Fassung Datei für Datei übereinstimmt oder verändert wurde. Dafür fragt Bastora einmal nach.
* **Weniger Fehlalarme bei gepackten Einstellungen.** Plugins wie WPML oder Slider Revolution legen ihre Einstellungen gepackt in der Datenbank ab. Bastora entpackt solche Einträge jetzt und prüft, was darin steht. Sind es nur Einstellungen, bleibt Bastora still. Steckt Schadcode darin, meldet Bastora ihn.

= 2.3.15 =
* **PHP-Warnung nennt die sichere Version.** Läuft Dein Server auf einer PHP-Version unter 8.2, empfiehlt Bastora jetzt genau 8.2.35 oder neuer, die erste Fassung dieses Zweigs mit dem Sicherheitsupdate vom 21.10.2026.

= 2.3.14 =
* **Warnung zur aktuellen PHP-Lücke.** Bastora zeigt Dir einmal, dass gerade eine Lücke in PHP angegriffen wird, und nennt Deine PHP-Version. Läuft Dein Server auf einer Version unter 8.2, sagt Dir Bastora, dass Du sie in Deinem Webhosting aktualisieren solltest. Mit einem Klick blendest Du die Meldung dauerhaft aus.

= 2.3.13 =
* **Medien-Uploads über App und Schnittstelle laufen durch.** Lädst Du angemeldet mit Anwendungspasswort ein Bild, PDF oder Video über die REST-Schnittstelle hoch, prüft Bastora den Inhalt als Datei und lässt ihn durch. Als Bild getarnter Schadcode fällt beim Hochladen und bei der anschließenden Dateiprüfung auf.
* **Firewall bremst Überlastangriffe aus.** Sehr große Anfragen ohne Anmeldung weist die Firewall sofort ab, bevor sie Rechenzeit kosten. Angemeldete Anfragen über App-Passwort und die REST-Schnittstelle prüft sie vollständig und zügig in Abschnitten, auch bei großen Datenmengen. Für große Uploads ist die REST-Schnittstelle mit Anwendungspasswort der Weg.

= 2.3.6 =
* **Klare Nachfrage zur Abschaltmeldung.** Die Nachfrage zur Sicherheitsforschung nennt jetzt genau, was dazugekommen ist: beim Abschalten geht einmalig eine letzte Meldung mit Kennung und Versionsstand. Deine bisherige Zustimmung gilt weiter; die Abschaltmeldung ist erst erfasst, wenn Du erneut zustimmst.

= 2.3.4 =
* **Eigener Bereich „CRA“.** Stückliste, Nutzerinformation mit Konformitätserklärung und der Meldeweg für Sicherheitslücken stehen jetzt gesammelt im neuen Menüpunkt „CRA“, statt versteckt auf der Feedback-Seite.
* **Schalter für die automatische Aktualisierung von Bastora.** Bastora hält sich ab Werk selbst aktuell. In den Einstellungen schaltest Du das mit einem klaren Schalter ab, wenn Du selbst aktualisieren willst.
* **Stückliste auch als PDF.** Die Komponentenliste dieser Website lädst Du als JSON (CycloneDX) oder als PDF herunter. Das PDF entsteht im Plugin, ohne Fremdbibliothek und ohne Aufruf nach außen. Lange Namen brechen im PDF sauber um.
* **Stückliste trägt die Domain im Dateinamen.** Der Download heißt jetzt bastora-sbom_deine-domain.json beziehungsweise .pdf, damit sich die Dateien mehrerer Websites nicht verwechseln lassen.

= 2.3.0 =
* **Geprüfte Schwarm-Sperrliste.** Die vom Schwarm verteilte Sperrliste ist kryptografisch signiert. Bastora übernimmt nur, was echt von Bastora stammt; eine manipulierte Liste wird verworfen, ohne dass Dein Schutz aussetzt.
* **Klarer Meldeweg für Sicherheitslücken.** Wer eine Schwachstelle in Bastora findet, sieht jetzt im Plugin und in dieser readme, wie und wo er sie meldet.
* **Stückliste (SBOM) zum Download.** Auf der Feedback-Seite lädst Du die maschinenlesbare Komponentenliste dieser Website herunter (CycloneDX).
* **Unterstützungszeitraum ausgewiesen.** Diese Version erhält Sicherheitsupdates bis mindestens 10/2031.

= 2.2.10 =
* **Abschalten kommt sicher an.** Hast Du der Sicherheitsforschung zugestimmt, meldet Bastora jede Abschaltung mit Kennung und Versionsstand. Das gilt auch, wenn Du den Dialog überspringst, über die Sammelaktion abschaltest oder die Kommandozeile nutzt. Ohne Zustimmung bleibt alles wie bisher: Es geht nur raus, was Du im Dialog selbst absendest.

= 2.2.9 =
* **Firewall-Schutz.** Die Firewall prüft jede Anfrage an Deine Website. Den Hintergrundtakt Deines Backends lässt sie zügig durch.
* **Flott auch bei großen Datenpaketen.** Die Firewall prüft große Datenlieferungen vollständig und zügig in Abschnitten, damit Deine Website schnell antwortet.
* **Anmeldung über Apps und Shop geschützt.** Wird ein Benutzername gerade durchprobiert, nimmt Bastora Anmeldungen über Apps, Schnittstellen und das Kundenkonto im Shop von Geräten und Anschlüssen an, die dieses Konto schon kennt. Über die WordPress-Anmeldung kommst Du jederzeit hinein. Die Login-Sperre gilt für den Anschluss, von dem die falschen Passwörter kommen. Du meldest Dich von Deinem eigenen Anschluss jederzeit ganz normal an, auch während jemand Deinen Benutzernamen durchprobiert.
* **Login-Sperre für moderne Anschlüsse.** Bei Anschlüssen mit neuer Adresstechnik fasst Bastora den ganzen Anschluss zusammen, sodass die Sperre auch bei wechselnder Geräteadresse hält.
* **HTTPS-Umstellung gehärtet.** Beim Umstellen auf HTTPS behandelt Bastora Kommentare und Beiträge als reinen Text und gespeicherte Einstellungen als reine Daten.
* **Gründliche Erkennung.** Der Schadcode-Scanner durchsucht alle Plugin-Ordner. Seine eigenen Suchmuster erkennt Bastora daran, dass sie reine Daten sind.
* **Auch Werkzeug-Ordner im Blick.** Bastora durchsucht auch Werkzeug- und Entwickler-Ordner nach Programmdateien, in Deinen Uploads vollständig.
* **Flott auch mit langer Sperrliste.** Bastora schlägt eine gesperrte Adresse gezielt nach und merkt sich den Namen einer Adresse eine Stunde lang. Deine Seiten laden so schnell wie gewohnt.
* **Sauber deinstalliert.** Beim Entfernen von Bastora verschwindet auch der Quarantäne-Ordner in wp-content.
* **Bereinigen mit Sicherung.** Verdächtige Dateien im Zwischenspeicher des Servers legt Bastora in die Quarantäne. Bastora räumt dabei nur Dateien Deiner eigenen Website auf.
* **WordPress bleibt startklar.** Dateien, die WordPress zum Starten braucht, etwa wp-config.php, bleiben immer an ihrem Platz. Steckt darin fremder Code, zeigt Dir Bastora, wie Du ihn entfernst.
* **Firewall für jede Rolle.** Nachsicht bei einem Treffer gilt für Redakteure und Administratoren, die Inhalte mit eigenem Code pflegen. Alle anderen Konten schützt die Firewall in vollem Umfang.
* **Einrichtung nach Zweck.** Der Assistent fragt jetzt zwei Dinge: ob Du die Schutzdienste einschaltest und ob Du der Sicherheitsforschung zustimmst. Bei jedem Zweck steht, mit welchen Stellen Deine Website dafür spricht. In den Einstellungen schaltest Du jeden Dienst weiterhin einzeln.
* **Deine Antworten im Assistenten zählen.** Ob Live-Website oder Testumgebung und Deine Wahl zu KI- und Marktforschungs-Crawlern übernimmt Bastora direkt aus der Einrichtung.
* **Klarere Bezeichnung.** Der Schalter „SEO-Crawler aussperren“ heißt jetzt „Marktforschungs-Crawler aussperren (Ahrefs, Semrush …)“. Google und Bing bleiben immer zugelassen.
* **Schutz-Schwarm aus Bastora Zentral.** Schaltest Du den Schwarm in Zentral ein oder aus, meldet Bastora Deine Website dort an oder ab. Bastora prüft das regelmäßig und bringt es von selbst in Ordnung.
* **Firewall-Status in Zentral.** Zentral zeigt den tatsächlichen Stand Deiner Firewall, auch in der Grundeinstellung.
* **Gleiches Verhalten auf jedem Server.** Groß- und Kleinschreibung behandelt Bastora überall gleich, unabhängig von der Spracheinstellung des Servers. Umlaute in Namen bleiben erhalten.

= 2.2.8 =
* **Eine Einwilligung für einen klaren Zweck.** Statt einzelner Datengruppen gibt es eine Zustimmung zur Sicherheitsforschung, mit fester Liste, was gesendet wird und was nie. Wer bisher zugestimmt hat, wird einmal auf den Bastora-Seiten gefragt und sendet bis dahin genau das, was er bisher gesendet hat. Jede Entscheidung legt Bastora mit Zeitpunkt und Textfassung auf Deiner Website ab.
* **Bots nach Art und Uhrzeit.** Mit Deiner Einwilligung zählt Bastora je Stunde, welche Art von Bots kam und ob Bastora sie gesperrt hat. Daraus entsteht ein Tagesverlauf über alle Bastora-Websites, an dem sich ungewöhnliche Lagen früher erkennen lassen.
* **Datenschutz-Baustein ergänzt.** Der Textbaustein für Deine Datenschutzerklärung nennt bei eingeschalteter Sicherheitsforschung jetzt auch die gesäuberten Angriffsmuster samt Rechtsgrundlage.
* **Original-Dateien zuverlässig erkannt.** Bastora erkennt Dateien von wordpress.org jetzt auch dann als Original, wenn sie mit anderen Zeilenenden ausgeliefert wurden, wie bei älteren Fassungen der Standard-Themes. Weicht fast ein ganzes Paket ab, greift Bastora nicht ein, denn das ist ein Versionsunterschied und kein Angriff.
* **Kein Eingriff ohne Beleg.** Theme-Dateien setzt Bastora nur noch von selbst zurück, wenn sie Spuren eines Angriffs tragen. Beim ersten Abgleich nach der Installation verändert Bastora nichts.
* **Einmal Bescheid, dann Ruhe.** Setzt Bastora Dateien auf das Original zurück, sagt es Dir einmal, um welches Theme es ging, und die Meldung verschwindet nach einem Klick. Fragen, die Du nicht beantworten kannst, stellt Bastora nicht mehr.
* **Anmeldeprotokolle sind kein Schadcode.** Bastora hält die Protokolle anderer Sicherheits-Plugins nicht mehr für Schadcode, etwa den Eintrag limit_login_logged von Limit Login Attempts. Bei jedem Datenbankfund steht jetzt, zu welchem Plugin er gehört und ob es noch aktiv ist. Gehört ein Eintrag zu Deiner Website, blendest Du ihn mit „Gehört hierher“ aus. Ändert er sich später, meldet Bastora ihn wieder.
* **Von wordpress.org entfernte Plugins.** Bastora erkennt Plugins, die wordpress.org geschlossen hat. Sie bekommen nie wieder ein Update, auch nicht bei einer Sicherheitslücke. Bastora nennt Dir Datum und Grund, statt sie als gepflegt zu zählen.
* **Vergessene Wartungsdateien.** Dateien, die Dein Hoster für eine Wartung angelegt und liegen gelassen hat, zeigt Bastora Dir zum Aufräumen an, etwa den Installatron Worker.
* **Ruhigere Übersicht.** Ein kurzer Farbstrich über jeder Zahl zeigt den Zustand auf einen Blick. Die Meldung zu abgewehrten Angriffen über die wp2shell-Lücke erscheint nur noch, wenn wirklich etwas zu tun ist.
* **Whitelist und Sperrliste passen zusammen.** Adressen auf Deiner Whitelist stehen nicht mehr unter „Zurzeit ausgesperrt“.
* **Anmeldeseite ohne Versionsangabe.** Die Dateien, die Bastora auf der Anmeldeseite einbindet, verraten Angreifern keine Versionsnummer.
* **Bastora Free verträgt sich mit Bastora Pro** auf derselben Website.
* **Schad-Link-Prüfung mit kleinem Fußabdruck.** Die Liste bekannter Schad-Domains liegt jetzt als kompakte Datei auf Deiner Website und wird beim Prüfen gezielt gelesen. Bastora prüft damit gegen die volle Liste mit über 200.000 Einträgen und braucht dafür weniger als 1 MB Arbeitsspeicher, auch auf kleinen Hosting-Paketen.
* **Nur Neues wird übertragen.** Ist die Liste seit dem letzten Abruf unverändert, lädt Bastora sie nicht erneut.
* **Beiträge und Kommentare bleiben schnell.** Die Prüfung neuer Links kostet beim Speichern eines Beitrags und beim Absenden eines Kommentars Bruchteile einer Millisekunde.
* **Jede Liste wird geprüft, bevor sie zählt.** Bastora übernimmt eine neue Liste erst, wenn Größe, Aufbau und Prüfsumme stimmen. Bis dahin arbeitet die bisherige weiter.

= 2.2.4 =
* **IP-Adresse Whitelist.** In den Einstellungen unter „Aktiver Schutz“ trägst Du feste Adressen ein, etwa den Büroanschluss, einen Standort oder das Netz eines Dienstleisters. Jede Adresse bekommt eine Bezeichnung, damit auch nach Monaten klar ist, wozu sie gehört. Die Liste klappt auf, wenn Du sie brauchst, und bleibt auch mit vielen Einträgen übersichtlich.
* **Befristet freigeben.** Ein Eintrag gilt dauerhaft oder für 1, 7, 30 oder 90 Tage, praktisch für einen Dienstleister oder eine Messe. Danach wirkt er nicht mehr und bleibt ausgegraut stehen.
* **Zuletzt aktiv.** Zu jeder Adresse steht, wann sie zuletzt auf der Website war. Ist sie seit 90 Tagen still, weist Bastora darauf hin, denn eine Adresse, die niemand mehr nutzt, kann inzwischen jemand anderem gehören.
* **Bekannte Geräte werden nie ausgesperrt.** Ein Gerät, mit dem sich ein Administrator angemeldet hat, erkennt Bastora wieder, auch wenn sich seine IP-Adresse zu Hause, im Mobilfunk oder unterwegs ständig ändert. Beim Login-Schutz gilt das nur für das eigene Konto. Die Geräte Deines Kontos vergisst Du mit einem Klick, etwa wenn ein Laptop weg ist, und ein neues Passwort räumt sie ebenfalls ab.
* **Eingetragene Adressen und bekannte Geräte kommen durch.** Die Scanner-Sperre, die Login-Sperre nach Fehlversuchen, die Sperrliste aus dem Schwarm und die Netzsperre der Konto-Wache lassen sie aus. Bastora meldet sie nie als Angreifer an andere Websites. Die Firewall prüft trotzdem jede einzelne Anfrage.
* **Mit einem Klick aus der Sperrliste.** Unter „Zurzeit ausgesperrt“ steht neben „Freigeben“ jetzt „Immer vertrauen“. Die Bestätigung erscheint direkt auf der Seite, auf der Du geklickt hast.
* **Klare Meldung bei einer Sperre.** Wer nach zu vielen Fehlversuchen oder über den Schwarm gesperrt ist, liest das jetzt beim Anmelden, samt Wartezeit. Bisher stand dort „Login-Daten ungültig“, auch bei richtigem Passwort, und wer es daraufhin weiter versuchte, verlängerte die Sperre.
* **Hinweis bei einem vorgeschalteten Server.** Kommen viele Besucher mit derselben Adresse an, weist Bastora darauf hin, denn ein Eintrag dieser Adresse würde für alle gelten. Eingetragen wird, was Du einträgst: jede gültige IPv4- oder IPv6-Adresse und jedes Netz.
* **Datenschutz vollständig beschrieben.** Der Abschnitt „Privacy“ beschreibt jetzt auch alles, was Bastora auf Deiner Website selbst verarbeitet: Anmeldeschutz, Protokolle, Sperrliste, Gerätekennzeichen und Whitelist, jeweils mit Frist. Für Deine eigene Datenschutzerklärung liefert Bastora einen Textbaustein unter Einstellungen, Datenschutz.

= 2.2.0 =
* **Bastora urteilt über das Gesamtbild.** Jede Auffälligkeit wird gegen die Lage der Website gewogen: Läuft gerade ein Update, ist die Website umgezogen, liegt die Datei in einer Sicherungskopie, entspricht sie dem Original? Gemeldet wird, was belegt ist. Ein einzelnes verdächtiges Muster reicht dafür nicht.
* **Updates laufen ungestört.** Bastora erkennt ein laufendes WordPress-Update und Dateien aus einer anderen offiziellen WordPress-Version. Die Kerndateien prüft Bastora, sobald das Update abgeschlossen ist.
* **Umzüge erkennt Bastora selbst.** Arbeitest Du nach einem Umzug unter der neuen Adresse, übernimmt Bastora sie als neuen Normalzustand.
* **Klare Ergebnisse.** Die Prüfung endet mit einer von drei Aussagen: alles in Ordnung, etwas instand gesetzt oder Angriff festgestellt und beseitigt. Wo Bastora eine Stelle nicht selbst bereinigen darf, steht dabei, warum, und was zu tun ist.
* **Sicherungskopien bleiben Sicherungskopien.** Die Rücksicherungen, die WordPress bei Plugin-Updates anlegt, und Bastoras eigene Dateien fließen in keine Bewertung ein.

= 2.1.2 =
* **Der Dialog beim Abschalten geht wieder auf.** Wer Bastora deaktiviert, wird nach dem Grund gefragt. Bisher blieb die Nachfrage aus, weil Bastora den falschen Teil der Plugin-Liste angesprochen hatte. Die Antwort bleibt freiwillig, überspringen geht weiterhin mit einem Klick, und ohne Absenden wird nach wie vor nichts übertragen.

= 2.1.1 =
* **Bastora fasst gekaufte Erweiterungen nicht mehr an.** Beim Abgleich mit wordpress.org hat Bastora bisher jede Installation gegen das dortige kostenlose Paket gemessen. Bei einer bezahlten Ausgabe ist das der falsche Maßstab: Sie trägt denselben Namen und dieselbe Versionsnummer, enthält aber anderen Code. Bastora hielt diesen Unterschied für eine Manipulation und bot an, die Dateien zu "reparieren", also die bezahlte Fassung durch die kostenlose zu ersetzen. Genau das ist auf Kundenseiten passiert. Bastora erkennt solche Pakete jetzt und lässt sie unangetastet.
* **Mitgelieferte Bibliotheken werden nicht mehr bewertet.** Was in `vendor/`, `freemius/` oder `node_modules/` liegt, stammt aus einem Paketwerkzeug. Welche Version einer Bibliothek eine Erweiterung mitbringt, ist keine Frage der Sicherheit der Website. Eine Abweichung dort ist deshalb kein Befund mehr.
* **Keine zweite Runde an derselben Datei.** Wurde eine Datei einmal auf das Original zurückgesetzt und weicht danach erneut ab, schreibt sie eine laufende Software neu. Bastora fasst sie dann nicht noch einmal an, statt in ein endloses Hin und Her zu geraten.
* **Bastora räumt in bezahlten Erweiterungen nichts mehr von selbst weg.** Ein Fund dort bleibt sichtbar und lässt sich mit einem Klick behandeln, aber die Entscheidung trifft der Betreiber, nicht das Plugin.

= 2.1.0 =
* **Die Anmeldewache sperrt kein Konto mehr aus.** Bisher konnte sie einen Zugang für 24 Stunden schließen, wenn eine Anmeldung ungewöhnlich aussah. Ein Fehlalarm hat damit den Betreiber selbst ausgesperrt. Diese Sperre ist ersatzlos entfallen, offene Sperren werden beim Update aufgehoben. Der Schutz gegen falsche Passwörter bleibt unverändert.
* **Statt der IP-Adresse zählt jetzt das Gerät.** Deutsche Anschlüsse bekommen bei jeder Einwahl eine neue Adresse, im Mobilfunk wechselt sie noch öfter. Eine Liste vertrauter Netze wächst damit endlos und erkennt trotzdem nichts. Bastora merkt sich stattdessen das Gerät und lässt es beim nächsten Mal still durch.
* **Bei einem neuen Gerät bekommst Du eine Nachricht, keine Sperre.** Die Anmeldung geht durch, und an die hinterlegte Adresse geht eine kurze Mail. Beim zweiten Mal von demselben Gerät bleibt es still.
* **Nur bei einem harten Anhaltspunkt fragt Bastora nach.** Etwa wenn kurz zuvor das Passwort dieses Kontos in Serie geraten wurde und der nächste Versuch dann klappt, oder wenn die Anmeldung nicht aus einem Browser kommt, sondern von einem Programm. Dann geht ein Bestätigungslink an das Konto: klicken, erneut anmelden, fertig. Das ist keine Sperre, und wer den Link nicht klickt, bekommt beim nächsten Versuch einfach einen neuen. Ein neues Netz, eine ungewohnte Uhrzeit oder ein Schadcode-Fund auf der Website reichen dafür ausdrücklich nicht mehr, auch nicht zusammen.
* **Lässt sich die Mail nicht zustellen, wird durchgelassen.** Eine Rückfrage ohne Rückweg wäre eine Falle. Der Betreiber bekommt dann stattdessen einen Hinweis.
* **Keine Netzsperre, solange jemand angemeldet ist.** Eine Sperre auf ein ganzes Netz trifft die komplette Website, nicht nur die Anmeldung. Sitzt gerade ein Betreiber im selben Netz, wäre er damit vollständig ausgesperrt.
* **Ein Platzhalter ist keine Herkunft.** Kennt der Server die Adresse des Aufrufers nicht, entstand daraus bisher eine Sperrregel auf ein Scheinnetz. Auf manchen Installationen hätte die jeden Besucher getroffen. Solche Werte werden jetzt abgewiesen.
* **Bastora sieht, wer auf demselben Webspace wohnt.** Liegen mehrere WordPress-Installationen im selben Hosting-Paket, laufen sie alle unter demselben Benutzerkonto des Servers. Dateirechte trennen sie deshalb nicht: Wird eine davon übernommen, kann der Angreifer von dort aus in die anderen schreiben. Genau so kehrt eine bereinigte Infektion zurück. Bastora erkennt solche Nachbarn und sagt, welche von hier aus erreichbar sind. Dabei wird keine fremde Installation angefasst, gemessen wird ausschließlich von der eigenen Seite aus.
* **Bastora greift dabei bewusst nicht ein.** Trennen lassen sich solche Installationen nur auf Server-Ebene, und eine zu eng gesetzte Grenze legt eine Website so still, dass kein Plugin sie wieder aufmachen kann. Bastora meldet die Lage deshalb und nennt den Weg: Dein Hoster kann die Installationen gegeneinander abgrenzen.
* **Spam-Kommentare lassen sich mit einem Klick wegräumen.** WordPress hält Spam zurück, aber es räumt ihn nicht weg: die Einträge bleiben in der Datenbank stehen. Bastora zählt sie, sagt Dir wie viele es sind und löscht sie auf Klick endgültig, in Paketen, damit auch eine übervolle Datenbank nicht ins Zeitlimit läuft. Freigegebene Kommentare bleiben unberührt.
* **Die Kommentarfunktion lässt sich schließen, ganz oder nur dort, wo noch keine Kommentare stehen.** Über ein Kommentarformular ist es möglich, dass jemand ohne Anmeldung etwas direkt in Deine Datenbank schreibt. Wer Kommentare nicht benötigt, schließt damit eine potenzielle Angriffsfläche. Vorhandene Kommentare bleiben in beiden Fällen sichtbar, geschlossen wird nur die Annahme neuer.
* **Der Weg zurück steht in den Einstellungen.** Bastora merkt sich, welche Seiten es geschlossen hat, und öffnet auf Klick genau diese wieder. Was Du selbst geschlossen hattest, bleibt zu.
* **Bots werden auf Server-Ebene abgewiesen.** Wo der Server es zulässt, trägt Bastora die Abweisung in die Serverkonfiguration ein. Sie greift damit, bevor WordPress überhaupt startet, und ein Crawler-Ansturm kostet Deine Website nicht mehr die Arbeit einer ganzen Seitenauslieferung. Suchmaschinen und Linkvorschauen bleiben zugelassen.
* **Der Einrichtungsassistent fragt nach KI- und SEO-Crawlern.** Zwei getrennte Fragen, weil die Folgen verschieden sind: KI-Crawler auszusperren kostet Sichtbarkeit in KI-Antworten, SEO-Crawler auszusperren kostet die eigenen Auswertungen in Ahrefs und Semrush. Beides steht bei der Frage dabei.
* **Angriffswerkzeuge werden an ihrer eigenen Kennung erkannt.** Wer sich als Sicherheits-Scanner ausweist, wird als solcher behandelt, unabhängig davon, welche weiteren Wörter in derselben Kennung stehen.
* **Eine leere Datei mit auffälligem Namen im Hauptverzeichnis wird als Hinweis gemeldet.** Automatisierte Angriffe legen solche Marken ab, um sich zu merken, wo sie schon waren. Der Fund steht ausdrücklich als Hinweis da, nicht als Einbruchsbeleg.
* **Bastoras eigene Werkzeuge werden als solche erkannt.** Ein Notfall-Werkzeug, das nach Schadcode sucht, trägt dessen Merkmale im Klartext. Die Ausnahme dafür hängt an der Prüfsumme: ein einziges verändertes Byte, und die Datei wird ganz normal geprüft.
* **Die Serverkonfiguration bleibt sauber.** Gibt es nichts zu sperren, hinterlässt Bastora dort auch keinen leeren Abschnitt.

= 2.0.0 =
* **Bastora findet jetzt die Hintertür, die eine Neuinstallation überlebt.** Wer WordPress nach einem Einbruch neu aufsetzt und die Datenbank mitnimmt, nimmt den Angreifer oft mit. Bastora sieht deshalb an den Stellen nach, die kein Dateiscanner erreicht: gepackte Nutzlasten, die unter einem Zufallsnamen in der Datenbank liegen, Auslöser, die beim Schreiben eines Kommentars selbsttätig ein Administrator-Konto anlegen, zeitgesteuerte Aufgaben und gespeicherte Routinen der Datenbank, und Code-Schnipsel, die als Einstellung oder Beitrag abgelegt sind.
* **Versteckte Administrator-Konten fallen auf.** Schadsoftware blendet die eigenen Konten aus der Benutzerliste aus, dann sieht im Backend niemand sie. Bastora zählt die Administratoren direkt in der Datenbank und vergleicht das mit dem, was WordPress anzeigt. Stehen dort mehr, blendet jemand aus. Das ist eine Aussage über die Manipulation und überlebt jede Umbenennung.
* **Zwei Merkmale, an denen ein untergeschobenes Konto sich verrät.** Ein Kennwortwert, den WordPress so nie vergibt, weil er per Datenbank direkt hineingeschrieben wurde. Und ein Anlagezeitpunkt, der vom allerersten Konto der Website abgeschrieben ist, damit das fremde Konto in der Liste wie eine Altlast aussieht.
* **Eine hochgeladene Datei mit ausführbarem Code kommt gar nicht erst an.** Bastora prüft jeden Upload, bevor er im Verzeichnis landet, und weist ihn ab, wenn Code darin steckt. Ein Bild bleibt ein Bild, ein Archiv wird durchgelassen, damit Installationen weiter funktionieren.
* **Dateien an Orten, an denen keine sein dürfen.** Eine versteckte Datei mit Zufallsnamen im WordPress-Kernverzeichnis. Dieselbe Datei in mehreren PHP-Endungen nebeneinander, weil der Angreifer sucht, welche der Server ausführt. Eine PHP-Datei im Upload-Ordner. Ein Verzeichnis, das sich betreten und beschreiben, aber nicht auflisten lässt.
* **Wo eine bekannte Lücke sitzt, wird schärfer gehandelt.** Meldet der tägliche Abgleich eine Sicherheitslücke in einer Deiner Erweiterungen, blockt die Firewall Angriffe auf genau diesen Bereich, statt sie nur zu vermerken. Der übrige Verkehr bleibt davon unberührt.
* **Angriffe, die aus echten Vorfällen stammen.** Neun neue Erkennungsmuster und zwölf Prüfsummen kommen aus der Untersuchung eines tatsächlichen Einbruchs, nicht aus einer Liste. Darunter: eine vorgeschaltete Datei in der Serverkonfiguration, das Auslesen der Zugangsdatei über einen Umweg, das Einsammeln der Sicherheitsschlüssel und nachgeladener Code, der vor der Ausführung von seinen Marken befreit wird.
* **Der Angriffszähler trennt jetzt Rauschen von echten Angriffen.** Ein Aufruf der Hinweisdatei oder die Frage nach der Autorenliste ist kein Angriff, auch wenn Bastora ihn vermerkt. Beide Zahlen stehen nebeneinander, die alte bleibt unverändert erhalten.
* **Deine Anmeldedaten werden gesichert, bevor Sitzungen beendet werden.** Sperrt Bastora ein Konto, waren Anmeldezeitpunkt, Adresse und Browserkennung bisher weg. Genau die brauchst Du danach, um zu beurteilen, wer betroffen war. Sie bleiben jetzt 90 Tage auf Deiner Website liegen und werden nirgendwohin übertragen.
* **Behoben: Bastoras eigene Sicherung der Zugangsdatei war lesbar.** Beim Ändern der `wp-config.php` legte Bastora eine Sicherung daneben, die der Server als reinen Text ausgeliefert hätte: mit Datenbank-Kennwort und allen Sicherheitsschlüsseln. Die Sicherung trägt jetzt eine Endung, die nie als Text ausgeliefert wird, und ist zusätzlich per Serverregel gesperrt. Eine Sicherung aus einer früheren Fassung bringt Bastora beim nächsten Prüflauf selbst in diese Form, statt sie Dir als fremden Fund vorzuhalten. Jede andere Kopie der Zugangsdatei im Verzeichnis wird gemeldet.
* **Behoben: Auskommentierte Zeilen in der Zugangsdatei wurden für gültig gehalten.** Stand oberhalb der wirksamen Zeile ein alter, auskommentierter Eintrag, hat Bastora diesen gelesen. Die Datei wird jetzt so ausgewertet, wie PHP sie liest, nicht mit einer Textsuche.
* **Behoben: "Alles grün" stand auch dann da, wenn Bastora nichts messen konnte.** Punkte, die sich nicht prüfen lassen, etwa weil der Versions-Abgleich mit wordpress.org nicht freigegeben ist, galten intern als bestanden. Deshalb zeigte eine Ebene "alles grün", in der nichts gemessen war, und der Hinweis auf die Pro-Version lobte eine Punktzahl, die Deine Website gar nicht erreicht hatte. Beides hängt jetzt am tatsächlichen Ergebnis. Was ungemessen bleibt, steht als "nicht prüfbar" daneben.
* **Behoben: Beim Deinstallieren kam die Abmeldung vom Schwarm nie an.** Sie ging an eine Adresse, die auf die richtige weiterleitet, und einer Weiterleitung folgt dieser Aufruf nicht. Der Eintrag blieb dadurch auf dem Server stehen. Die Adresse ist korrigiert, und beim Entfernen bleibt jetzt nichts mehr zurück: keine Einstellung, keine Tabelle, keine Datei, keine Zeile in der Serverkonfiguration.
* **Verteilte Firewall-Regeln schalten sich ab, wenn sie hier falsch liegen.** Trifft eine zentral verteilte Regel wiederholt eine angemeldete Redaktion, nimmt Bastora sie auf dieser Website aus dem Verkehr und meldet das zurück. Sie kommt durch den nächsten Abruf nicht wieder. Jede neue Regel läuft ohnehin erst im Beobachten mit und wird vor der Verteilung gegen einen Bestand echter, harmloser Aufrufe geprüft.

Ältere Einträge stehen in der Datei changelog.txt im Plugin-Ordner.

== Upgrade Notice ==

= 2.3.17 =
Gekaufte Plugins und Themes gleicht Bastora jetzt mit anderen Bastora-Websites ab, gepackte Plugin-Einstellungen lösen keinen Fehlalarm mehr aus.

= 2.3.15 =
Die PHP-Warnung nennt jetzt die sichere Mindestversion 8.2.35.

= 2.3.14 =
Dringend empfohlen. Bastora warnt Dich vor der aktuell angegriffenen Lücke in PHP und zeigt Dir, ob Deine PHP-Version aktualisiert werden sollte.

= 2.3.13 =
Medien-Uploads (Bild, PDF, Video) über App und REST-Schnittstelle mit Anwendungspasswort laufen durch, als Bild getarnter Schadcode fällt beim Hochladen und bei der Dateiprüfung auf. Sehr große Anfragen ohne Anmeldung weist die Firewall sofort ab.

= 2.3.6 =
Die Nachfrage zur Sicherheitsforschung nennt jetzt genau, was dazugekommen ist: die einmalige Abschaltmeldung. Deine bisherige Zustimmung gilt weiter.

= 2.3.4 =
Neuer Bereich „CRA“ mit Stückliste (als JSON und PDF, Dateiname mit Domain), Nutzerinformation und Meldeweg an einem Ort. Automatische Aktualisierung von Bastora jetzt mit Schalter in den Einstellungen.

= 2.3.0 =
Empfohlen. Die Schwarm-Sperrliste ist signiert geprüft, eine Stückliste (SBOM) steht zum Download bereit, und der Unterstützungszeitraum ist ausgewiesen.

= 2.2.10 =
Empfohlen. Enthält alle Verbesserungen aus 2.2.9: stärkere Firewall und Schadcode-Erkennung, Dein eigener Zugang bleibt auch unter Beschuss offen. Dazu meldet Bastora mit Deiner Zustimmung zuverlässig, wenn es abgeschaltet wird.

= 2.2.9 =
Empfohlen. Firewall und Schadcode-Erkennung verstärkt, Dein eigener Zugang bleibt auch unter Beschuss offen, und der Schutz-Schwarm lässt sich aus Bastora Zentral schalten.

= 2.2.8 =
Empfohlen. Weniger Fehlalarme beim Abgleich mit wordpress.org und in der Datenbank, keine Rücksetzung ohne Beleg, entfernte Plugins werden erkannt, die Einwilligung zur Sicherheitsforschung gilt für einen klaren Zweck, und die Prüfung auf Schad-Links braucht kaum Arbeitsspeicher.

= 2.2.4 =
Neu: die IP-Adresse Whitelist mit Bezeichnung und Befristung, dazu bekannte Geräte. Das Büro und Deine eigenen Geräte sperrt Bastora nie mehr aus, und eine Sperre ist beim Anmelden klar zu erkennen.

= 2.2.0 =
Empfohlen. Bastora wägt jede Auffälligkeit gegen die Lage der Website ab, bevor es meldet oder eingreift: Updates, Umzüge, Sicherungskopien und Originaldateien fließen in das Urteil ein.

= 2.1.2 =
Behebt die ausgefallene Nachfrage beim Abschalten des Plugins.

= 2.1.1 =
Wichtiges Update. Bastora hat bezahlte Erweiterungen gegen das kostenlose Paket auf wordpress.org gemessen und ihre Dateien für verändert gehalten. Wer daraufhin auf "Dateien reparieren" geklickt hat, bekam die kostenlose Fassung zurückgeschrieben. Das passiert nicht mehr: Bastora erkennt solche Pakete und lässt sie in Ruhe.

= 2.1.0 =
Neu: Bastora räumt Spam-Kommentare endgültig weg und kann die Kommentarfunktion schließen, ganz oder nur dort, wo noch keine Kommentare stehen. Jede Seite bleibt einzeln entscheidbar, vorhandene Kommentare bleiben sichtbar, und der Weg zurück steht in den Einstellungen. Die Bot-Abweisung greift jetzt schon vor dem Start von WordPress; dafür trägt Bastora eine Regel in die Serverkonfiguration ein, die beim Abschalten wieder verschwindet.

= 2.0.0 =
Bastora sieht jetzt auch dort nach, wo ein Dateiscanner nicht hinkommt: gepackte Nutzlasten in der Datenbank, Auslöser, die selbsttätig ein Administrator-Konto anlegen, und versteckte Konten, die in der Benutzerliste fehlen. Hochgeladene Dateien mit ausführbarem Code werden abgewiesen, bevor sie im Verzeichnis landen.

= 1.9.1 =
Behebt eine Falschmeldung, die reguläre Administrator-Konten als untergeschoben meldete. Neu beurteilt Bastora die Umstände einer Konto-Anlage und einer Anmeldung und greift bei klarer Lage selbst ein, statt zu fragen. Rollen mit weitreichenden Rechten werden nur noch bei Änderungen gemeldet.

= 1.9.0 =
Grundschutz greift ab der Aktivierung, die Firewall prüft den kompletten Aufruf, Scanner und unerwünschte Bots sperren sich selbst aus, und die Datenbank wird täglich im Hintergrund geprüft. Aus der bisherigen anonymen Statistik wird die Einwilligung zur Sicherheitsforschung: gleicher Schalter, klarerer Zweck, neue Angaben erst nach Rückfrage.

== Privacy ==

= Auf Deiner Website =

Zum Schutz Deiner Website verarbeitet Bastora die folgenden Daten auf Deinem eigenen Server. Verantwortlich im Sinne der DSGVO bist Du als Betreiber der Website. Rechtsgrundlage ist jeweils Art. 6 Abs. 1 lit. f DSGVO, das berechtigte Interesse am sicheren Betrieb der Website. Einen passenden Textbaustein für Deine Datenschutzerklärung findest Du in WordPress unter Einstellungen, Datenschutz. Normale Seitenaufrufe Deiner Besucher hält Bastora nicht fest.

**Fehlversuche bei der Anmeldung.** Fehlgeschlagene Anmeldeversuche und falsch gelöste Rechenaufgaben zählt Bastora je IP-Adresse, Anmeldeversuche zusätzlich je Benutzername. Die Zähler liegen unter der IP-Adresse und verfallen höchstens 25 Stunden nach dem letzten Versuch.

**Ereignisprotokoll.** Anmeldungen, Fehlversuche, Aufrufe nicht vorhandener Seiten, abgewehrte Angriffe und Treffer der Sperrliste hält Bastora sieben Tage lang fest, höchstens die letzten 1.000 Einträge: Zeitpunkt, Art des Ereignisses, aufgerufene Adresse, Anfrageart, Antwortcode, Browserkennung, verweisende Seite, bei Anmeldungen der eingegebene Benutzername, dazu ein täglich wechselnder Abdruck der IP-Adresse und der Netzbereich (bei IPv4 ohne die letzte Zahl, bei IPv6 die ersten vier Blöcke).

**Firewall-Protokoll.** Zu jeder abgewehrten Anfrage speichert Bastora 30 Tage lang Zeitpunkt, aufgerufene Adresse, Anfrageart, die auslösende Regel, einen gekürzten Ausschnitt der auffälligen Stelle, die Browserkennung, einen täglich wechselnden Abdruck der IP-Adresse und den Netzbereich.

**Sperrliste.** Sperrt Bastora eine Adresse selbsttätig, etwa weil sie wiederholt Firewall-Regeln auslöst oder Adressen abfragt, die es auf einer WordPress-Website nie gibt, steht die IP-Adresse mit Grund und Ablaufzeit in der Sperrliste. Wird ein Administratorkonto untergeschoben, sperrt Bastora auf dieselbe Weise den Netzbereich der Herkunft. Selbsttätige Sperren laufen nach 15 Minuten bis 24 Stunden ab und werden einmal täglich gelöscht. Wie oft eine Adresse in den letzten 24 Stunden gesperrt wurde, merkt sich Bastora unter einem Abdruck der Adresse. Sperren, die ein Administrator von Hand anlegt, bleiben, bis er sie entfernt.

**Änderungsprotokoll.** Anmeldungen von Administratoren und Änderungen im Backend stehen 90 Tage im Änderungsprotokoll: Zeitpunkt, Konto, betroffenes Objekt, Netzbereich und ein täglich wechselnder Abdruck der IP-Adresse. Muss Bastora bei einem Vorfall die Sitzungen eines Kontos beenden, sichert es vorher deren Anmeldezeitpunkt, IP-Adresse und Browserkennung, ebenfalls 90 Tage, damit sich klären lässt, wer betroffen war. Fällt eine Anmeldung auf, merkt sich Bastora für die Übersicht im Backend den Netzbereich, bis ein neues Passwort gesetzt wird, höchstens für 20 Konten.

**Vorfälle und Bot-Statistik.** Für die Übersicht im Backend zählt Bastora Vorfälle mit Zeitpunkt, aufgerufener Adresse und Einstufung, höchstens die letzten 500, sowie Zugriffe bekannter Bots mit Name, Pfad und einem Abdruck der Browserkennung, 28 Tage lang. IP-Adressen stehen darin nicht.

**Gerätekennzeichen.** Meldet sich ein Administrator an oder wird eine Anmeldung per Link bestätigt, legt Bastora ein zufälliges Kennzeichen als Cookie im Browser ab: ein Jahr gültig und für Skripte nicht lesbar. In der Datenbank steht davon nur ein Abdruck, dazu die Zeitpunkte der ersten und der letzten Anmeldung, höchstens zehn Geräte je Konto. Gerätenamen, Browserdaten oder Standorte erfasst Bastora dafür nicht. Das Kennzeichen dient allein der Sicherheit des Zugangs: Ein bekanntes Gerät wird nicht ausgesperrt, und bei einem neuen Gerät bekommt der Kontoinhaber eine Nachricht. Damit ist es für den vom Nutzer gewünschten Dienst unbedingt erforderlich (§ 25 Abs. 2 Nr. 2 TDDDG). Ein neues Passwort löscht alle Geräte des Kontos. In den Einstellungen lässt sich das Vertrauen in bekannte Geräte abschalten, und jeder Administrator kann die Geräte seines Kontos löschen.

**IP-Adresse Whitelist.** Trägt ein Administrator Adressen ein, speichert Bastora die Adresse, eine selbst gewählte Bezeichnung, eine mögliche Befristung und den Zeitpunkt, zu dem die Adresse zuletzt auf der Website war. Die Einträge bleiben, bis ein Administrator sie entfernt.

**Weitergabe.** Diese Daten bleiben auf Deiner Website. Einzige Ausnahme ist der Schwarm, wenn Du ihn einschaltest: Sperrt Bastora eine IP-Adresse wegen zu vieler Fehlversuche oder eines Angriffs, meldet es diese Adresse an bastora.de (siehe „Externe Verbindungen“, Punkt 2). Adressen auf der Whitelist und bekannte Geräte meldet Bastora nie.

Beim Löschen des Plugins entfernt Bastora alle genannten Protokolle, Listen und Geräteabdrücke aus der Datenbank.

= Externe Verbindungen =

Ab Werk baut Bastora keine einzige Verbindung nach außen auf. Die Verbindungen 1 bis 5 dienen dem Schutz Deiner Website. Im Einrichtungs-Assistenten schaltest Du sie mit einem Haken für diesen Zweck frei, in den Einstellungen jede einzeln, und kannst sie jederzeit wieder abschalten. Verbindung 6 ist eine eigene Einwilligung mit eigenem Haken. Angesprochen werden dabei nur zwei Gegenstellen: **wordpress.org** und **bastora.de**.

**1. Abgleich gegen wordpress.org (Opt-in)**

Bastora fragt die offizielle WordPress-API nach der aktuellen Kern-Version, nach den Datei-Hashes Deiner Version und nach dem Update-Stand der installierten Plugins und Themes. Für den Datei-Abgleich und die Reparatur lädt Bastora zusätzlich die offiziellen Pakete von wordpress.org. Das ist dieselbe Schnittstelle, die WordPress für seine eigenen Update-Prüfungen nutzt.

Übertragen werden nur Name (Slug) und Version von WordPress, Plugins und Themes sowie die Sprache der Installation, keine Domain, keine Nutzerdaten, keine Besucher-IP. Antworten werden 24 Stunden zwischengespeichert, geladene Pakete liegen 7 Tage lokal im Quarantäne-Verzeichnis. Vor dem Ersetzen einer Kerndatei prüft Bastora deren Hash gegen den von wordpress.org gemeldeten Wert. Plugins und Themes, die nicht im offiziellen Verzeichnis liegen (Premium, Eigenentwicklung), werden als „extern, nicht prüfbar" geführt; bei Plugins repariert Bastora bewusst nicht, sondern meldet abweichende Dateien per Mail. Ohne diese Freigabe gelten die betroffenen Prüfpunkte als „nicht prüfbar" und es geht keine Anfrage raus.

**2. Bastora-Schwarm (Opt-in)**

Anonymer Austausch von Angreifer-Adressen mit anderen teilnehmenden Websites, über bastora.de. Beim Aktivieren vergibt der Server einen anonymen Token; übertragen wird dabei nur die Plugin-Version. Bei einem erkannten Angriff meldet Bastora Token, Angreifer-IP, Angriffs-Typ, Schweregrad und Plugin-Version. Im Gegenzug holt Bastora alle paar Minuten die Sperrliste und zweimal täglich die signierten Firewall-Regeln ab, jeweils nur mit dem Token im Header. Beim Abschalten oder Deinstallieren wird der Knoten sofort gelöscht.

Der User-Agent ist statisch („Bastora-Swarm"), damit WordPress die Domain nicht mitschickt. Nicht übertragen werden Domain, URL, Besucher-IPs und Betreiberdaten. Reports werden serverseitig nach 14 Tagen gelöscht, Sperrlisten-Einträge verfallen nach 72 Stunden. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an Angriffsabwehr).

**3. Passwort-Leck-Check (Opt-in, nur Backend-Login)**

Beim Backend-Login schickt Bastora höchstens einmal pro Nutzer und Woche die ersten fünf Hex-Zeichen des SHA-1-Hashes des eingegebenen Passworts an bastora.de. Mehr geht nicht raus: nicht das Passwort, nicht der vollständige Hash, kein Benutzername, keine Domain, keine Kennung. Der Server fragt damit die offizielle haveibeenpwned.com-API ab und liefert die Hash-Endungen zurück, der Abgleich passiert lokal in WordPress. Das Verfahren heißt k-Anonymity und wird auch von 1Password, Firefox und Chrome genutzt. Bei einem Treffer bekommt der Nutzer einen Hinweis, der Login wird nie blockiert. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.

**4. Schad-URL-Feed (Opt-in)**

Einmal täglich holt Bastora eine Liste bekannter Schad-Domains von bastora.de. Mitgesendet werden allein die Bastora-Version in der Programm-Kennung und der Prüfwert der zuletzt geladenen Liste, damit eine unveränderte Liste nicht erneut übertragen wird. Dieser Prüfwert beschreibt nur den Listenstand und ist für alle Websites gleich. Es geht keine Domain, keine Besucher-Daten und keine Kennung raus. Die Antwort ist eine Datendatei ohne ausführbaren Code, rund 2 MB: je Eintrag ein Prüfwert der Schad-Domain (die ersten 8 Byte ihres SHA-256) mit Typ und Schweregrad. Bastora legt sie unter wp-content/uploads/bastora/ ab, gesperrt für Abrufe von außen, und gleicht Links in Beiträgen und Kommentaren ausschließlich auf Deiner Website dagegen ab. Geprüfte Adressen verlassen Deine Website nie. Beim Abschalten der Funktion und beim Löschen des Plugins entfernt Bastora die Datei. Quellen: URLhaus und ThreatFox (abuse.ch, CC0 1.0), der OpenPhish-Community-Feed, Phishing Army (CC BY 4.0) und CERT Polska. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.

**5. Schwachstellen-Liste (Opt-in, zusammen mit Punkt 1)**

Einmal täglich lädt Bastora die Liste der bekannten Sicherheitslücken von bastora.de. Das ist ein reiner Abruf: keine Domain, keine Kennung, keine Liste Deiner Erweiterungen, kein Parameter in der Adresse. Mitgesendet wird allein die Bastora-Version in der Programm-Kennung. Die Antwort ist eine JSON-Liste aus Kennnummer, betroffener Erweiterung, betroffenen Versionen und behobener Version, ohne ausführbaren Code. Welche Deiner Erweiterungen betroffen sind, rechnet Bastora danach ausschließlich lokal aus. Der Abruf hängt an derselben Freigabe wie Punkt 1; ohne sie geht keine Anfrage raus. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO.

**6. Einwilligung zur Sicherheitsforschung (Opt-in, ab Werk aus)**

Empfänger: https://www.bastora.de/api/tmtr/ (Server in Deutschland). Rhythmus: täglich eine kurze Zählung, alle 28 Tage eine Zusammenfassung. Beim Deaktivieren von Bastora geht eine letzte Meldung an https://www.bastora.de/api/rueckmeldung/: die Installationskennung, die Versionsstände von Bastora und WordPress und dass abgeschaltet wurde. Vor Deiner Einwilligung wird kein einziger Aufruf ausgeführt.

Zweck: Angriffe und Bots über viele Websites erkennen, Firewall-Regeln, Signaturen und Sperrlisten anpassen, Fehlalarme verringern, die Wirkung der Härtung messen und gekaufte Plugins und Themes im Abgleich auf Veränderungen prüfen. Keine Werbung, keine Profile, keine Weitergabe.

Kategorien:

* eine zufällige Installationskennung (UUID), lokal beim ersten Start erzeugt. Sie ist pseudonym.
* Versionen und Umgebung: Bastora, WordPress samt Update-Status, PHP, MySQL, Server-Software, Sprache, Zeitzone, Multisite ja oder nein, ein Hosting-Anbieter-Kürzel (z. B. „hetzner", „ionos"), ermittelt aus lokalen Markern und einer lokalen Namensauflösung der eigenen Server-IP. Die Server-IP selbst wird nicht gesendet.
* Härtungs- und Prüfstand: Punktzahl, je Prüfpunkt ein Status-Code, Konfigurations-Flags wie WP_DEBUG, DISALLOW_FILE_EDIT, FORCE_SSL_ADMIN, die Bastora-Härtungen mit Aktiv-Status, einmalig der Stand vor der ersten Härtung
* Verzeichnis der Erweiterungen: je Plugin (max. 200) und Theme (max. 75) Slug, Version, verfügbare Version, Update- und Auto-Update-Status, aktiv oder inaktiv, dazu erkannte andere Sicherheits-Plugins
* Größenangaben: Nutzerzahlen je Rolle, Zahl der Beiträge, Seiten und Kommentare, Umfang der automatisch geladenen Einstellungen. Nur Zahlen, keine Namen, keine Inhalte.
* Nutzungsart: für mich selbst, im Auftrag, für eine Organisation, samt Erstwahl
* Zählwerte zu Sicherheitsereignissen, auch je Stunde: abgewehrte Angriffe, Fehlerseiten, Anmeldeversuche, Bot-Anfragen nach Art (gutartig, feindlich, KI, SEO, unbekannt) und danach, ob Bastora sie gesperrt hat, die Nutzung von Whitelist und Gerätevertrauen (Zahl der Einträge, davon befristet, Zahl der Geräte und Konten, Schalter an oder aus)
* gesäuberte Angriffsmuster: erkanntes Muster aus der Adresszeile und den Kopfdaten der Anfrage, angeschlagene Firewall-Regel, aufgerufener Pfad (bei Plugins, Themes und WordPress-eigenen Pfaden wie wp-admin, wp-includes und wp-json vollständig, bei Uploads nur /wp-content/uploads/, sonst nur der erste Bestandteil), Werkzeug-Kennung, Tageszeit, dazu in derselben Kürzung die Pfade, die Bots am häufigsten aufrufen, und das Muster von Adressen, die massenhaft ins Leere laufen (erster Adressbestandteil, Anzahl, Dateiendung). Browser-Kennungen echter Besucher werden durch das Wort „Browser" ersetzt, Mailadressen und lange Zahlenfolgen unkenntlich gemacht.
* Abgleich gekaufter Plugins und Themes (ab Fassung 6 der Einwilligung): für jedes Plugin und Theme, für das wordpress.org kein passendes Original bereitstellt (max. 150), Slug, Version und eine SHA-256-Prüfsumme über seine PHP-Dateien, einmal täglich an https://www.bastora.de/api/abdruck/. Die Antwort sagt nur, ob dieselbe Version auf anderen Bastora-Websites dieselben Dateien hat. Um unabhängige Websites zu zählen, bildet bastora.de aus dem Netzbereich der Server-IP (die ersten drei Blöcke bei IPv4, die ersten 48 Bit bei IPv6) eine verkürzte, nicht umkehrbare Kennung mit geheimem Schlüssel und speichert nur diese, nie die IP-Adresse.

Nie übertragen werden: IP-Adressen, Domains, URL der Website, Server-IP, E-Mail-Adressen, Benutzernamen, Beitrags-, Datei- und Datenbank-Inhalte sowie alles, was jemand in ein Formular Deiner Website eingibt.

Die Einwilligung gilt für diesen Zweck und diese Kategorien. Neue Zählwerte innerhalb einer Kategorie deckt sie ab. Vor einem neuen Zweck, einer neuen Kategorie oder einer Weitergabe fragt Bastora erneut im Backend. Bis 2.2.4 wurde je Datengruppe einzeln zugestimmt; wer vorher zugestimmt hat, wird einmal gefragt und sendet bis dahin nur den bisherigen Umfang. Bastora legt jede Entscheidung mit Zeitpunkt, Fassung und Prüfsumme des angezeigten Textes lokal ab.

Rechtsgrundlage: Art. 6 Abs. 1 lit. a DSGVO und § 25 Abs. 1 TDDDG. Soweit Angriffsmuster Daten von Besuchern enthalten können, ist die Grundlage das berechtigte Interesse an der Netz- und Informationssicherheit (Art. 6 Abs. 1 lit. f DSGVO, Erwägungsgrund 49). Die Statistik speichert die Absender-IP nicht. Die Zugriffsprotokolle des Webservers bewahren sie höchstens 14 Tage auf. Widerruf jederzeit mit einem Klick in den Einstellungen. Bei Deinstallation wird die lokale Kennung gelöscht. Datenschutzerklärung: https://www.bastora.de/datenschutz

**Einordnung zur Quasi-Eindeutigkeit:** Die Kombination aus Plugin- und Theme-Inventar, Versionen, Hosting-Anbieter und Locale ist statistisch sehr individuell. Auch ohne Domain entsteht damit ein Fingerabdruck der Installation. Bastora wertet die Daten ausschließlich für die Sicherheitsforschung aus (häufigste Lücken, Update-Rückstände, neue Angriffsmuster) und führt sie nie mit anderen Datenquellen zusammen. Wenn das für Dich nicht in Ordnung ist, lass die Einwilligung weg, das Plugin funktioniert ohne sie vollständig.

**7. Rückmeldung an Bastora (nur auf Deinen Klick)**

Der Feedback-Knopf in den Einstellungen schickt Deine Nachricht an bastora.de. Name, Adresse und Website sind freiwillig, wer nur die Nachricht ausfüllt, schreibt anonym. Über ein gesondertes Häkchen lassen sich technische Eckdaten der Installation mitsenden (PHP- und Datenbank-Version, Webserver-Kennung, Sprach-Code, Punktzahl, Anzahl der Erweiterungen); es ist ab Werk leer und gilt nur für die jeweilige Nachricht.

Wer Bastora deaktiviert, bekommt einmalig einen Dialog mit einer Auswahl von Gründen, einem optionalen Zusatzfeld und einem optionalen Adressfeld. Erst der Klick auf „Absenden und abschalten" überträgt Grund, Zusatztext, die freiwillige Adresse und die Versionsstände von Bastora und WordPress. Läuft die Einwilligung zur Sicherheitsforschung, geht die pseudonyme Installationskennung mit, damit sich die Rückmeldung dem Verlauf zuordnen lässt; der Dialog weist darauf hin.

Ohne Einwilligung zur Sicherheitsforschung geht ohne Klick nichts raus, weder beim Feedback noch beim Abschalten. Mit Einwilligung meldet Bastora jede Abschaltung, auch wenn Du den Dialog überspringst oder über die Sammelaktion oder die Kommandozeile abschaltest, und zwar nur mit Kennung und Versionsständen (siehe Punkt 6).

= Datenschutzhinweis =

Vollständige Datenschutzerklärung: https://www.bastora.de/datenschutz
Verantwortliche Stelle laut Impressum: https://www.bastora.de/impressum
