RAIVN Botban

Kategorie: Allgemein

  • Diese WordPress Sicherheits-Schutzregeln brauchst du unbedingt

    Diese WordPress Sicherheits-Schutzregeln brauchst du unbedingt

    Diese 5 wichtige Sicherheits-Schutzregeln, die in der functions.php deiner WordPress-Seite nicht fehlen sollten, um grundlegende Schwachstellen zu mindern, sind:


    1. Deaktiviere die Bearbeitung von Dateien im WordPress-Admin-Bereich

    Die Bearbeitung von Themes und Plugins direkt im WordPress-Dashboard ist ein hohes Sicherheitsrisiko. Wenn ein Angreifer Zugriff auf das Admin-Konto erhält, kann er schädlichen Code in jede Datei (einschließlich functions.php) einschleusen.

    PHP

    // Deaktiviert den Theme- und Plugin-Editor (empfohlen)
    define( 'DISALLOW_FILE_EDIT', true );
    

    Anmerkung: Diese Zeile wird oft direkt in der wp-config.php eingefügt, da sie eine globale Konfigurationsdirektive ist. Sie dient aber dem gleichen Sicherheitszweck.


    2. Entferne die WordPress-Versionsnummer

    Die Anzeige der genauen WordPress-Versionsnummer kann Angreifern nützliche Informationen liefern, wenn sie gezielt nach bekannten Schwachstellen in dieser Version suchen. Es ist besser, diese Informationen zu verbergen.

    PHP

    // Entfernt die WordPress-Versionsnummer aus Header, RSS und anderen Metadaten
    function remove_wp_version_strings( $src ) {
        global $wp_version;
        parse_str( parse_url( $src, PHP_URL_QUERY ), $query );
        if ( !empty( $query['ver'] ) && $query['ver'] === $wp_version ) {
            $src = remove_query_arg( 'ver', $src );
        }
        return $src;
    }
    add_filter( 'script_loader_src', 'remove_wp_version_strings' );
    add_filter( 'style_loader_src', 'remove_wp_version_strings' );
    
    // Entfernt die Version aus dem <head>
    remove_action( 'wp_head', 'wp_generator' );
    

    3. Deaktiviere die XML-RPC-Schnittstelle (wenn nicht benötigt)

    XML-RPC (xmlrpc.php) ist ein älteres Protokoll, das oft für Brute-Force-Angriffe und DDoS-Attacken missbraucht wird (insbesondere der pingback-Dienst). Wenn du keine mobilen Apps, Jetpack oder andere Dienste nutzt, die XML-RPC benötigen, solltest du es deaktivieren.

    PHP

    // Deaktiviert die XML-RPC-Schnittstelle
    add_filter( 'xmlrpc_enabled', '__return_false' );
    
    // Entfernt den RSD-Link (falls vorhanden)
    remove_action( 'wp_head', 'rsd_link' );
    

    4. Begrenze Login-Versuche

    Um Brute-Force-Angriffe auf die Login-Seite (wp-login.php) zu verhindern, solltest du die Anzahl der möglichen Login-Versuche beschränken. Dies wird zwar oft über ein dediziertes Sicherheits-Plugin (z. B. Limit Login Attempts) gelöst, kann aber auch per PHP Code gesteuert werden.

    PHP

    // --- Konfiguration ---
    define( 'MAX_LOGIN_ATTEMPTS', 5 );          // Max. Fehlversuche
    define( 'LOCKOUT_DURATION', 3600 );        // Sperr-Dauer in Sekunden (1 Stunde)
    define( 'TRANSIENT_PREFIX', 'limit_login_' );
    
    /**
     * 1. Zählt fehlgeschlagene Versuche und setzt die Sperre.
     * Wird NACH dem Fehlschlag ausgeführt.
     */
    function custom_increment_login_attempts( $username ) {
        $user_ip = $_SERVER['REMOTE_ADDR'];
        $transient_key = TRANSIENT_PREFIX . md5( $user_ip );
    
        // Zähler auslesen
        $attempts = (int) get_transient( $transient_key );
        $attempts++;
    
        if ( $attempts >= MAX_LOGIN_ATTEMPTS ) {
            // Sperren: Setze den Lockout-Transient
            set_transient( $transient_key . '_lockout', time() + LOCKOUT_DURATION, LOCKOUT_DURATION );
            // Zähler zurücksetzen/löschen
            delete_transient( $transient_key );
        } else {
            // Zähler erhöhen: Setze den Transient mit Ablaufzeit
            set_transient( $transient_key, $attempts, LOCKOUT_DURATION );
        }
    }
    // Hook zum Hochzählen des Fehlers
    add_action( 'wp_login_failed', 'custom_increment_login_attempts' );
    
    
    /**
     * 2. Prüft VOR der Anmeldung, ob die IP gesperrt ist.
     * Wird VOR der eigentlichen Authentifizierung ausgeführt.
     */
    function custom_check_ip_lockout( $user ) {
        // Wenn die Authentifizierung bereits fehlgeschlagen ist oder erfolgreich war, nichts tun
        if ( is_wp_error( $user ) || ( $user instanceof WP_User ) ) {
            return $user;
        }
    
        $user_ip = $_SERVER['REMOTE_ADDR'];
        $lockout_key = TRANSIENT_PREFIX . md5( $user_ip ) . '_lockout';
    
        $lockout_time = get_transient( $lockout_key );
    
        if ( $lockout_time ) {
            $remaining_time = $lockout_time - time();
    
            if ( $remaining_time > 0 ) {
                // Die IP ist gesperrt
                $minutes = ceil( $remaining_time / 60 );
                return new WP_Error(
                    'too_many_attempts_lockout',
                    sprintf(
                        '<strong>FEHLER</strong>: Zu viele fehlgeschlagene Login-Versuche. Bitte versuche es in %s Minuten erneut.',
                        $minutes
                    )
                );
            } else {
                // Sperre ist abgelaufen, den Lockout-Transient löschen
                delete_transient( $lockout_key );
            }
        }
    
        // Wenn nicht gesperrt, normal fortfahren
        return $user;
    }
    // Hook zum Blockieren der Anmeldung
    add_filter( 'authenticate', 'custom_check_ip_lockout', 1 ); // Hohe Priorität, um sehr früh zu laufen
    

    Zusammenfassung: Der Hook 'wp_login_failed' ist nützlich für das Zählen, und der Filter 'authenticate' ist unerlässlich für das Blockieren und die Ausgabe der Sperr-Meldung. Beide zusammen ergeben eine saubere, nicht-Plugin-basierte Lösung.


    5. Deaktiviere die Enumeration von Benutzernamen

    Standardmäßig ist es Angreifern leicht möglich, alle Benutzernamen deiner Seite zu ermitteln, indem sie spezielle URL-Parameter oder die REST API verwenden (z. B. /?author=1). Mit dem Wissen des Benutzernamens ist nur noch das Passwort für einen Login erforderlich. Das solltest du verhindern.

    PHP

    // Verhindert die Enumeration von Benutzernamen über die Author-URL
    if ( !is_admin() && isset( $_SERVER['REQUEST_URI'] ) ) {
        if ( preg_match( '/author=([0-9]*)/i', $_SERVER['REQUEST_URI'] ) ) {
            wp_die( 'Zugriff verweigert.', 'Sicherheitshinweis', array( 'response' => 403 ) );
        }
    }
    // Blockiert die REST API Endpunkte für Benutzer (wenn nicht benötigt)
    add_filter( 'rest_endpoints', function( $endpoints ) {
        if ( isset( $endpoints['/wp/v2/users'] ) ) {
            unset( $endpoints['/wp/v2/users'] );
        }
        if ( isset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] ) ) {
            unset( $endpoints['/wp/v2/users/(?P<id>[\d]+)'] );
        }
        return $endpoints;
    } );
    

    Wichtiger Hinweis:
    Jede Änderung an der functions.php sollte in einem Child-Theme vorgenommen werden, damit die Änderungen bei einem Theme-Update nicht überschrieben werden! Fehler in dieser Datei können zum Absturz deiner gesamten Webseite führen.

  • Erste Schritte mit .htaccess

    Erste Schritte mit .htaccess

    Eine erste Einleitung in Sachen .htaccess

    Die .htaccess-Datei ist ein mächtiges Werkzeug, um die WordPress-Sicherheit auf Server-Ebene zu verbessern.

    Wichtig vorab! Bevor du die .htaccess bearbeitest, mach immer ein Backup der Datei, da Fehler die gesamte Website lahmlegen können!

    Hier sind die nützlichsten und relativ einfachen Befehle, die du zur ersten Absicherung deines Blogs verwenden kannst:

    1. Schutz der wichtigsten Konfigurationsdateien

    Die Datei wp-config.php enthält die Datenbank-Zugangsdaten und ist daher extrem schützenswert. Auch die .htaccess selbst sollte geschützt werden.

    ZweckCode-Snippet
    wp-config.php sperren (Zugriff von außen komplett verbieten)<files wp-config.php> Order allow,deny Deny from all </files>
    .htaccess und .htpasswd sperren<FilesMatch "^.*\.([Hh][Tt][AaPp])"> Order allow,deny Deny from all Satisfy all </FilesMatch>

    2. Verhindern des Auslesens von Benutzer-IDs (Autor-Scans)

    Hacker versuchen oft, Benutzer-IDs (z.B. ?author=1) auszulesen, um mögliche Admin-Namen für Brute-Force-Attacken zu erhalten.

    ZweckCode-Snippet
    Abfrage von Autor-IDs blockieren/umleiten# Blockiere das Auslesen von Benutzernamen (Author-Scan) <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} author=([0-9]*) [NC] RewriteRule .* - [F,L] </IfModule>
    Alternative (Umleitung)<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} ^author=([0-9]*) RewriteRule .* https://deinewebsite.de/? [L,R=302] </IfModule>

    3. Deaktivieren des Verzeichnis-Browsings

    Wenn jemand einen Ordner aufruft, der keine Index-Datei (wie index.php) enthält, wird normalerweise eine Liste aller Dateien im Verzeichnis angezeigt. Das gibt Angreifern unnötige Informationen.

    ZweckCode-Snippet
    Verzeichnis-Browsing verbietenOptions -Indexes

    4. Beschränkung des Admin-Bereichs (für statische IPs)

    Wenn du immer von derselben IP-Adresse auf das Backend (/wp-admin und wp-login.php) zugreifst, ist dies eine sehr effektive Schutzmaßnahme gegen Brute-Force-Angriffe.

    ZweckCode-Snippet
    Zugriff auf die Login-Datei auf bestimmte IP beschränken<Files wp-login.php> Order Deny,Allow Deny from all Allow from DEINE.ERSTE.IP.ADRESSE Allow from DEINE.ZWEITE.IP.ADRESSE </Files>
    Zugriff auf den wp-admin-Ordner beschränkenAuthUserFile /dev/null AuthGroupFile /dev/null AuthName "Admin Access Control" AuthType Basic <LIMIT GET POST> order deny,allow deny from all allow from DEINE.IP.ADRESSE </LIMIT>
    Hinweis: Ersetze DEINE.IP.ADRESSE durch deine tatsächliche IP. Wenn du eine dynamische IP hast, ist dieser Schutz weniger praktikabel.

    5. XML-RPC abschalten (falls nicht benötigt)

    Die XML-RPC-Schnittstelle (xmlrpc.php) wird oft für Brute-Force-Attacken missbraucht. Wenn du sie nicht für mobile Apps oder bestimmte Plugins benötigst, schalte sie ab.

    ZweckCode-Snippet
    xmlrpc.php sperren<files xmlrpc.php> Order Deny,Allow Deny from all </files>

    6. HTTP Security Headers hinzufügen (Moderner Schutz)

    Diese Header schützen deine Website vor gängigen Angriffen wie Cross-Site Scripting (XSS) oder Click-Jacking.

    ZweckCode-Snippet
    Security Headers setzen<IfModule mod_headers.c> Header set X-XSS-Protection "1; mode=block" Header set X-Content-Type-Options "nosniff" Header always append X-Frame-Options SAMEORIGIN </IfModule>

    Denke daran, die Snippets am besten ans Ende deiner bestehenden .htaccess-Datei zu setzen, um Konflikte zu vermeiden.

    Und wie gesagt: Denke zuerst an ein Backup!

    Dies sind nur die ersten Schritte in Sachen WordPress und .htaccess. Es geht also bald weiter hier im Blog.

  • Was ist alles wichtig, um den eigenen WordPress-Blog abzusichern?

    Was ist alles wichtig, um den eigenen WordPress-Blog abzusichern?

    Eine der wichtigsten Punke zur Absicherung des eigenen WordPress Blogs sind die richtige Nutzung von cleveren Schutzmechanismen wie

    1. RICHTIGE und WICHTIGE .htaccess Regeln einbauen. Welche Regeln, dass erfährst du in einem weiteren Betrag.
    2. functions.php Änderungen vornehmen im eigenen Child-Theme. Details dazu folgen.
    3. Wirklich gute Schutz-Plugins einsetzen.
      Meines Erachtens sind die meisten aktuellen Plugins nicht wirklich gut, sondern machen unnötiges „Tam-Tam“ (also viel Lärm um nichts). Den Punkt PLUGINS werde ich nach und nach hier im Blog erläutern.
    4. Nutzung von externen Schutz-Services. Auch diesen Punkt erläuterte ich demnächst hier.

    WordPress-Sicherheit – Eine erste Übersicht


    Um dir eine vollständige Übersicht zu geben, fasse ich hier die fünf Hauptsäulen der WordPress-Sicherheit zusammen. Wenn du diese Bereiche abdeckst, ist dein Blog sehr gut abgesichert:

    Hinweis!
    Die nachfolgende Erwähnung von Plugins dient als Beispiel und stellt keine endgültige Bewertung dieser Plugins dar!

    1. Die Basis: Updates und Benutzer-Management

    BereichWichtige MaßnahmenWarum?
    Updates (Die wichtigste Regel!)Halte den WordPress-Core, alle Themes und alle Plugins immer aktuell.Die meisten Hacks passieren durch bekannte Sicherheitslücken in veralteter Software.
    Starke PasswörterNutze einzigartige, komplexe Passwörter (mindestens 12 Zeichen, Sonderzeichen, Zahlen) für alle Benutzer, besonders für Admins.Schützt vor Brute-Force-Angriffen.
    Zwei-Faktor-Authentifizierung (2FA)Aktiviere 2FA für alle Admin-Konten.Fügt eine zweite Sicherheitsebene hinzu (z.B. Code über eine App), falls das Passwort gestohlen wird.
    BenutzerrollenNutze den Administrator-Account nur, wenn er wirklich gebraucht wird. Gib Mitarbeitern nur die nötigsten Rechte (z.B. „Autor“ statt „Administrator“).Begrenzt den Schaden, wenn ein weniger wichtiger Account kompromittiert wird.

    2. Absicherung des Zugangs (Login & Brute-Force-Schutz)

    BereichWichtige MaßnahmenWarum?
    Login-LimitierungBeschränke die Anzahl der fehlgeschlagenen Login-Versuche (über Plugin oder .htaccess).Verhindert, dass Bots unendlich viele Passwort-Kombinationen ausprobieren.
    Bot-SchutzSetze Dienste wie Google reCAPTCHA oder Cloudflare Turnstile ein.Filtert automatisierte Login-Versuche und Spam effektiv.
    XML-RPC deaktivierenDeaktiviere XML-RPC, wenn du es nicht nutzt, da es oft für DDoS- und Brute-Force-Angriffe missbraucht wird (z.B. über .htaccess oder Plugin).Entfernt eine bekannte Angriffsfläche.

    3. Server- und Dateisystem-Härtung

    BereichWichtige MaßnahmenWarum?
    BackupsRichte automatische, tägliche Backups der gesamten Website (Dateien und Datenbank) ein und speichere diese extern.Dein Notfallplan. Ermöglicht die schnelle Wiederherstellung nach einem Hack oder einem Fehler.
    Dateibearbeitung verbietenFüge define('DISALLOW_FILE_EDIT', true); in die wp-config.php ein.Verhindert, dass Angreifer, die sich Zugang zum Admin-Bereich verschafft haben, Code direkt in Themes/Plugins einschleusen können.
    Datenbank-PräfixÄndere den Standard-Datenbank-Präfix wp_ in etwas Zufälliges.Erschwert automatisierte SQL-Injection-Angriffe.
    WP-Config-SchutzNutze .htaccess Regeln, um die sensible Datei wp-config.php vor externem Zugriff zu schützen.Verhindert den Zugriff auf wichtige Zugangsdaten (Datenbank).

    4. Code- und Traffic-Filterung (WAF & Scanning)

    BereichWichtige MaßnahmenWarum?
    Web Application Firewall (WAF)Nutze einen Dienst wie Cloudflare oder ein Sicherheits-Plugin mit WAF (z.B. Wordfence, Sucuri), um Traffic zu filtern.Blockiert bekannten bösartigen Traffic (bevor er deine Website erreicht).
    Regelmäßiges ScannenSetze ein Plugin ein, das die WordPress-Dateien und die Datenbank regelmäßig auf Malware, bösartigen Code und unbefugte Änderungen überprüft.Frühzeitige Erkennung, falls sich doch etwas eingeschlichen hat.

    5. Hosting-Umgebung

    BereichWichtige MaßnahmenWarum?
    Guter HosterWähle einen Hoster, der sich auf WordPress spezialisiert hat und serverseitige Sicherheitsmaßnahmen (z.B. Firewall, isolierte Umgebungen, aktuelle PHP-Version) bietet.Die Sicherheit beginnt beim Fundament. Ein guter Hoster nimmt dir viel Arbeit ab.
    Aktuelle PHP-VersionStelle sicher, dass dein Server die neueste unterstützte PHP-Version verwendet.Neuere PHP-Versionen sind nicht nur schneller, sondern enthalten auch Patches für bekannte Sicherheitslücken älterer Versionen.

    Mache Dir am besten gleich grundlegende Gedanken, was du noch in Deinem Blog umsetzen kannst.

  • Hallo Welt!

    Hallo Welt!

    Willkommen bei WordPress. Dies ist der erste Beitrag von RAIVN.de.

    RAIVN wurde ins Leben gerufen, um das Internet sicherer zu machen.

    Es gibt allerlei „Gesindel“ (Bad Bots, Hacker usw.), die Webseitenbeitreibern – Hobbyisten wie Professionals – mit ihren Bot-Attacken, und mit ihrem Spam-Müll regelrecht zur Weißglut bringen.

    Basierend auf den aktuellsten Berichten macht mehr als die Hälfte des gesamten Internet-Traffics mittlerweile Bots aus, und ein großer Teil davon ist bösartig.

    Der Anteil des Internet-Traffics, der von Bots verursacht wird, hat sich in den letzten Jahren rasant entwickelt. Aktuelle Analysen zeigen, dass der automatisierte Traffic im Jahr 2024 zum ersten Mal den menschlichen Traffic überholt hat.

    • Gesamter Bot-Traffic: Mehr als 50 % des Internet-Traffics stammen von Bots.
    • Bösartiger Bot-Traffic: Davon entfallen etwa 32 % bis 37 % auf sogenannte „Bad Bots“.
    • Guter Bot-Traffic: Der restliche Teil, rund 14 % bis 18 %, sind „Good Bots“, wie beispielsweise die Webcrawler von Suchmaschinen (z.B. Googlebot), die Websites für die Indexierung durchsuchen.

    Die Rolle von bösartigem Bot-Traffic


    Bösartige Bots sind Programme, die schädliche Aktivitäten ausführen. Sie sind eine erhebliche Bedrohung für die Cybersicherheit und die Integrität des Internets. Beispiele für ihre Einsatzgebiete sind:

    • DDoS-Angriffe: Überflutung von Servern mit massiven Anfragen, um Websites lahmzulegen.
    • Web Scraping: Systematisches Abgreifen von Inhalten, Preisen oder E-Mail-Adressen.
    • Spamming: Verbreitung von unerwünschten Inhalten, oft über Kommentare oder Formulare.
    • Credential Stuffing: Automatisiertes Testen gestohlener Zugangsdaten.
    • Ad Fraud: Generierung von falschen Klicks oder Impressionen, um Werbestatistiken zu manipulieren.

    Gerade die rasante Entwicklung von Generativer KI und Großen Sprachmodellen (LLMs) hat die Erstellung und den Einsatz dieser Bots vereinfacht und beschleunigt, was den bösartigen Traffic weiter ansteigen lässt.


    Aus diesem Grund gibt es nun RAIVN


    RAIVN wird sich aktuell und primär mit Lösungswegen befassen, um unberechtigte Zugriffe von WordPress auf Apache Servers abzuwehren.

    RAIVN wird versuchen direkte hocheffiziente Schutzmechanismen aufzuzeigen. Zwar betrachten wir auch WordPress Security Plugins, aber unser Ziel ist nicht, dass böse Bots überhaupt irgendwie an WordPress herankommen! Hier versagen die meisten heutigen Plugins auf dem Markt. Warum das so ist, werden wir in einem späteren Beitrag erläutern – dann, wenn wir die auf dem Markt befindliche Plugins und ihre Schwächen betrachten.

    Warum WordPress und Apache?

    WordPress

    WordPress hat einen enorm dominanten Marktanteil im Internet. Aktuelle Zahlen zeigen, dass WordPress etwa 44 % aller Websites weltweit betreibt. Das bedeutet, dass fast jede zweite Website, die besucht wird auf WordPress basiert.

    Anteil am CMS-Markt: Wenn man nur die Websites betrachtet, die ein bekanntes Content-Management-System (CMS) verwenden, ist der Anteil von WordPress noch höher und liegt bei über 60 %. Damit ist es der unangefochtene Marktführer, weit vor Konkurrenten wie Shopify, Wix oder Joomla.

    Dieser Anteil wächst seit Jahren stetig. Die Beliebtheit von WordPress lässt sich durch seine Flexibilität, die riesige Community, die unzähligen Plugins und Themes sowie die Tatsache erklären, dass es eine kostenlose Open-Source-Plattform ist.

    Apache Server

    Aktuelle Statistiken (Stand September 2025) zeigen, dass der Apache HTTP Server einen Marktanteil von etwa 25 bis 30 % aller Websites hat.

    Der Anteil von HTACCESS auf Apache Servern ist zwar nicht direkt messbar, aber man kann davon ausgehen, dass es auf fast allen Websites, die auf einem Apache-Server gehostet werden, potenziell eingesetzt wird.

    Der große Vorteil an HTACCESS ist, dass sehr effiziente Regeln existieren, damit Böse Finger maximal geringe Chancen haben eine WordPress Anwendung zu nahe zu kommen. HTACCESS dient nämlich nicht nur für URL-Weiterleitungen oder Passwortschutz, sondern hat ERSTE SAHNE Zugriffsregeln.


    Unser WordPress wird zu Fort Knox


    Fort Knox Strategie

    Mit diesem Knoff-Hoff machen wir nun unser WordPress zu einem Fort Knox. Fort Knox bleibt ein Symbol für absolute Sicherheit und hat seinen Ruf als unüberwindbare Festung bis heute bewahrt.

    Liebe Grüße, RAIVN