fail2ban für Wordpress

  • Die Angriffe auf Wordpress Installationen begannen mich immer mehr zu nerven. Wenn ich selbst mit wordpress was mache, installiere ich stets "Wordfence", das macht einen ganz guten Job. Aber bei nicht direkt betreuten Kunden hab ich das natürlich nicht unter Kontrolle. Daher hab ich mir mit fail2ban was gebaut und zwar wie folgt (Ziel waren die Angriffe auf das login sowie auf die xmlrpc zu minimieren):


    File: /etc/fail2ban/jail.d/wordpress.conf

    Code
    1. [wordpress]
    2. enabled = true
    3. port = http,https
    4. filter = wordpress
    5. action = iptables-multiport[name=wordpress, port="http,https", protocol=tcp]
    6. logpath = /usr/local/pd-admin2/logs/access_log
    7. maxretry = 10
    8. findtime = 600


    File: /etc/fail2ban/filter.d/wordpress.conf

    Code
    1. [Definition]
    2. failregex = ^[-/\w]+.*(?:[a-z]{2,6}) <HOST> .*/xmlrpc\.php.*
    3. ^[-/\w]+.*(?:[a-z]{2,6}) <HOST> .*POST.*/wp-login\.php HTTP.*
    4. ignoreregex =


    Arbeitet bis jetzt ganz gut und blockt permanent irgendwen.


    Freu mich über eure Meinungen bzw. vielleicht hilft es mal jemand.

  • Wordpress Logins werden bei mir ebenfalls geloggt und bei zu vielen Fehlschlägen per fail2ban gesperrt. Dabei nutze ich folgendes Plugin:


    https://de.wordpress.org/plugins/wp-fail2ban/


    Bei der xmlrpc.php habe ich folgendes in die httpd.conf eingefügt:

    Code
    1. <Files xmlrpc.php>
    2. Order Deny,Allow
    3. Deny from all
    4. Allow from 192.0.64.0/18
    5. Satisfy All
    6. </Files>

    Damit wird der Zugriff auf die xmlrpc.php nur aus dem WordPress Subnetz gestattet.

  • Dieses wp-fail2ban Plugin ist mir bei meiner Recherche auch untergekommen. Aber auch hier wieder das selbe Problem wie beim "Wordfence" Plugin (das ich wie gesagt sehr empfehlen kann): Ich hab nicht unter Kontrolle, ob die Kunden die nicht direkt von mir betreut werden, das auch installieren.


    Daher wollte ich einen Ansatz bauen, der ohne Wordpress Plugin auskommt und daher direkt auf die access_log los geht.

  • Hab es jetzt nicht getestet, aber bei mir matched

    Code
    1. ^[-/\w]+.*(?:[a-z]{2,6}) <HOST> .*POST.*/wp-login\.php HTTP.*

    bei jedem Login? Könnte also zu Problemen bei regulären Logins bei Kunden führen.


    Aus meiner Sicht ist die Absicherung der xmlrpc.php wichtig. Dort kann ich regelmäßig Zugriffsversuche feststellen.


    Ansonsten hat Wordpress selbst etliche Tipps zum absichern der Login Seite:


    https://codex.wordpress.org/Brute_Force_Attacks