piet: fail2ban blockiert nicht richtig

Hallo,

ich habe fail2ban am laufen.

Wenn ich 5x (wie eingestellt) den richtigen Usernamen mit falschem Passwort wird die ip blockiert.

Wenn ich jedoch einen falschen Usernamen + Passwort eingeben, dann funktioniert das immer, ohne Blockierung der ip.

In meiner error_log steht

user "richtig": password mismatch  -> diese Meldung wird richtig ausgewertet und blockiert

MySQL user "falsch" not found   -> wird nicht blockiert.

Mein "apache-auth.conf" Filter sieht so aus.

failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$  

Hier bin ich kein Spezialist, jedoch sehe ich das "user .* not found" ausgewertet werden sollte.

Gruss
           piet

  1. Mahlzeit,

    Wenn ich jedoch einen falschen Usernamen + Passwort eingeben, dann funktioniert das immer, ohne Blockierung der ip.

    Ähm ..... wenn ein falscher Username eingegeben wird, woher soll der Dienst denn wissen, dass das Passwort falsch ist?
    Wenn der User nicht existiert, gibt es auch kein Passwort zum vergleichen.

    --
    42
    1. Hallo,

      Ähm ..... wenn ein falscher Username eingegeben wird, woher soll der Dienst denn wissen, dass das Passwort falsch ist?
      Wenn der User nicht existiert, gibt es auch kein Passwort zum vergleichen.

      ganz Einfach ... in der error_log steht "MySQL user "falsch" not found

      Dies habe ich aber schon beschrieben. d.h. er findet scho einmal den usernamen nicht.
      Hier noch einmal der Filter für fail2ban (oben auch beschrieben)

      failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$

      ... user ... not found...
      ....user ... password mismatch...

      Dies sollte eigentlich reichen... tut aber nicht. (Ich bin hier kein fail2ban Experte)
      Übrigens der Filter ist nicht von mir, sondern bei der Installation dabei gewesen.

      Jörg Reinholz

      Einen weiteren Filter bzw. am Filter etwas ändern möchte ich nur wenn ich genau weiß warum der bestehende Filter nicht funktioniert. Nach meinem Verständnis müsste es funktionieren und wurde doch schon zig mal von anderen benutzt. Ich bin doch nicht der erste mit diesem Problem.

      Gruß
           piet

      1. failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$
        ganz Einfach ... in der error_log steht "MySQL user "falsch" not found

        Eben war es auch noch der Apache. Was denn nun? So kann das nichts werden, Du musst erstmal den Stoff sortieren.

        Für MySQL:

        Ich zeige mal Konfigurationsabschnitte aus den Dateien.

        /var/log/mysql/error.log habe ich benutzt, weil es von logrotate "behandelt" wird.

        (sehe in /etc/logrotate.d/mysql-server o.ä. nach)

        1.)
        /etc/mysql/my.cnf den Abschnitt unter [mysqld] anpassen um das Logging einzuschalten:

        #  
        # Error log - should be very few entries.  
        #  
        log_error = /var/log/mysql/error.log  
        log-warning = 2
        

        Aktivieren und dabei auf Fehlermeldungen achten:
        sudo service mysql restart

        2.)
        den Abschnitt unter mysqld-auth in /etc/fail2ban/jail.conf anpassen, damit das logfile auch genommen wird:

        [mysqld-auth]  
        enabled  = false  
        filter   = mysqld-auth  
        port     = 3306  
        logpath  = /var/log/mysql/error.log  
        
        

        3.)
        /etc/fail2ban/filter.d/mysqld-auth.conf PRÜFEN:

        failregex = Access denied for user '\w+'@'<HOST>' (to database '[^']*'|\(using password: (YES|NO)\))*\s*$

        4). test:

        ~> sudo service mysql restart  
        ~> mysql -u gibtsnicht -p mysql  
        ~> tail -n10 /var/log/mysql/error.log
        

        Steht da (auch) etwas wie:
        140109 19:49:02 [Warning] Access denied for user 'gibtsnicht'@'localhost' (using password: YES)
        ?

        5.) Dann Feuer:
        sudo service fail2ban restart

        Nach dem 6. gescheitertem Einlogversuch in MySQL von außen(!), also von einem anderen (ggf. virtuellem) Rechner egal ob mit Passwort, ohne Passwort oder mit falschem Benutzername macht fail2ban den Port zu:

        2014-01-09 20:22:48,971 fail2ban.actions: WARNING [mysqld-auth] Ban 192.168.1.52
        (in /var/log/fail2ban.log)

        Auf dem Rechner sieht man in der Konsole als Meldung des MySQL-Clients dann nur das hier:

        ERROR 2003 (HY00): Can't connect to MySQL Server on '192.168.1.2' (111)

        Geht also.

        Jörg Reinholz

        1. Der unter 2. erwähnte Abschnitt muss wie folgt aussehen

          [mysqld-auth]  
          enabled  = true  
          ### Hier war das Versäumnis, mit false wird  
          ### fail2ban für mysql-auth abgeschaltet  
          filter   = mysqld-auth  
          port     = 3306  
          logpath  = /var/log/mysql/error.log  
          
          

          Jörg Reinholz

          1. Hallo,

            sorry, vermutlich habe ich mich nicht richtig ausgedrückt, oder ich verstehe deine Antwort nicht. (mysqld-auth) - > leitungsitzend

            Ich habe einen Apache 2 am laufen, bei dem ich meine Loggindaten (user:passwort) in einem MySQL-Server habe.

            Um nun am Apache anzumelden habe ich zur "Sicherheit" den fail2ban am laufen.

            Dazu habe ich den "apache-auth.conf" Filter benutzt. (wie beschrieben)

            Zu filternde logdatei /var/log/apache2/error_log

            In der Logdatei steht
            [error] [client w.x.y.z] MySQL user not found: /, referer: http://x.y

            bzw.
            [error] [client w.x.y.z] user mustermann: passwort mismatch: /, referer: http://x.y

            Eigentlich müsste der Filter funktionieren.
            failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$

            Wenn nicht anders nötig, will ich nur über die /var/log/apache2/error_log auslesen.
            Ich bin mir sicher ich habe den Filter "apache-auth.conf" schon mal erfolgreich benutzt.
            Damals hatte ich aber keinen MYSQL sondern nur die htaccess mit htusers. Kann es am Wort "MySQL" in der Logdatei liegen... das ist das erste Wort in der Logdatei-Zeile.

            Bitte seid nicht so streng zu mir :-)

            Danke
                       piet

            1. Ich habe einen Apache 2 am laufen, bei dem ich meine Loggindaten (user:passwort) in einem MySQL-Server habe.

              Oha. Die Parteien sind gehalten vollständig und wahrheitsgemäß vorzutragen.

              failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$

              [error] [client w.x.y.z] MySQL user not found: /, referer: http://x.y
              [error] [client w.x.y.z] user mustermann: passwort mismatch: /, referer: http://x.y

              Die erste der Fehlermeldungen matcht nicht.

              Schreib also in /etc/fail2ban/filter.d/apache-auth.conf einen zweiten "Regex" dazu:

              failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$  
                          ^%(_apache_error_client)s MySQL user not found\s*$  
              
              

              Womöglich geht auch mit:

              failregex = ^%(_apache_error_client)s (MySQL |)user.*(authentication failure|not found|password mismatch)\s*$  
              
              

              Testen konnte ich das aber nicht.

              Jörg Reinholz

              1. Abend,

                ich habe den ganzen Tag verplempert um diesen Sch... fail2ban zur Zusammenarbeit mit http zu bekommen.

                1. OS Suse 12.3
                2. apache2
                3. aktuelle fail2ban aus dem repo von Suse installiert
                4. die beiden Überwachungen aktiviert und bei ssh-iptables das logfile umbenannt (Suse)
                5. 2 Überwachungen aktiviert

                [ssh-iptables]  
                enabled  = true  
                filter   = sshd  
                action   = iptables[name=SSH, port=ssh, protocol=tcp]  
                           sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com]  
                logpath  = /var/log/messages  
                maxretry = 2  
                  
                [apache-tcpwrapper]  
                enabled  = true  
                filter   = apache-auth  
                action   = hostsdeny  
                logpath  = /var/log/apache2/error.log  
                maxretry = 2  
                
                

                1. ssh-iptables funktioniert auf Anhieb (brauche ich eigentlich nicht... nur zum testen)
                2. apache-tcpwrapper reagiert gar nicht. Standardmäßig war es auf hostdeny, ich weiß früher lief das auch mit iptables als Standardvorgabe, warum jetzt anders... keine Ahnung.
                Ich habe ein altes (1 Jahr) jail.conf probiert... da startete fail2ban gar nicht. (eventuell andere Filter und Action)

                Ich möchte auf Port 80 den apache2 überwachen ob mehrmals das falsche(kein) user/passwort
                eingegeben wurde.
                Sollte eigentlich keine Aktion sein...aber ich sehe den Fehler nicht.
                Den Filter von Jörg habe ich eingesetzt keine Änderung.
                Standardeinstellungen sollten, wenn auch nicht gut, wenigstens funktionieren.

                gruß
                    "der generfte piet"

                1. [apache-tcpwrapper]

                  Under CentOS / RedHat Enterprise Linux, httpd (Apache) is not compiled with tcpwrappers support. As a result the example in jail.conf called "apache-tcpwrapper" does not work since /etc/hosts.deny does not affect apache.

                  Verstanden? Das kann auch für Deinen Apache gelten.

                  OS Suse 12.3

                  Schön, dass diese WICHTIGE Information jetzt schon kommt. Bitte gib auch immer an, woher Deine Konfigurationen kommen, dass es eben /etc/fail2ban/jail.conf war musste ich auch erst erraten.

                  mit apache2ctl -l bzw. apache2ctl -m siehst Du, welche Module als build-in bzw. nachladbar kompiliert wurden.

                  Vermutlich ist es also der falsche Abschnitt. Nimm den normalen Apache-Abschnitt, blocke ganz normal mit der Firewall.

                  Jörg Reinholz

                  1. Hallo,

                    Vermutlich ist es also der falsche Abschnitt. Nimm den normalen Apache-Abschnitt, blocke ganz normal mit der Firewall.

                    Was ist der normale Abschnitt ? und Firewall bedeutet iptables ?
                    Es gibt nur:
                    1. apache-tcpwrapper
                    2. apache-badhost
                    3. apache-shoerwall

                    das war's. Es gibt keinen anderen Apache Abschnitts

                    Jetzt habe ich einen neuen Abschnitt aus einer alten jail.log (ca. 1 Jahr) genommen.
                    fail2ban startet, jedoch blockt auch nicht.

                    [apache]  
                    enabled  = true  
                    port     = http, https  
                    filter   = apache-auth  
                    action   = iptables[name=ApacheAuth, port=http, protocol=tcp]  
                    maxretry = 3
                    

                    Mein Hauptproblem, ich sehe nicht ob es am Filter oder aber Action liegt.
                    Wie kann ich z.B. erkennen ob der Filter funktioniert ?
                    Auch die debugmeldungen (4) bringen gar nicht's.

                    Hier die gewünschten Ausgaben.

                    apache2ctl -l  
                    core.c  
                    prefork.c  
                    http_core.c  
                    mod_so.c
                    
                    apache2ctl -M  
                      
                    core_module                          (static)  
                     mpm_prefork_module (static)  
                     http_module (static)  
                     so_module (static)  
                     actions_module (shared)  
                     alias_module (shared)  
                     auth_basic_module (shared)  
                     authn_file_module (shared)  
                     authz_host_module (shared)  
                     authz_groupfile_module (shared)  
                     authz_default_module (shared)  
                     authz_user_module (shared)  
                     autoindex_module (shared)  
                     cgi_module (shared)  
                     dir_module (shared)  
                     env_module (shared)  
                     expires_module (shared)  
                     include_module (shared)  
                     log_config_module (shared)  
                     mime_module (shared)  
                     negotiation_module (shared)  
                     setenvif_module (shared)  
                     ssl_module (shared)  
                     userdir_module (shared)  
                     reqtimeout_module (shared)  
                     rewrite_module (shared)  
                     proxy_module (shared)  
                     proxy_http_module (shared)  
                     proxy_connect_module (shared)  
                     mysql_auth_module (shared)  
                    
                    

                    Wie gesagt, "ssh" Blockierung funktioniert ohne Probleme. Das kann sicher nicht wild sein,
                    aber wo liegt der Haken. ;)

                    Danke für die Mühe
                               piet

                    1. Mein Hauptproblem, ich sehe nicht ob es am Filter oder aber Action liegt.
                      Wie kann ich z.B. erkennen ob der Filter funktioniert ?

                      Normalerweise in /var/log/fail2ban wenn das Loglevel in /etc/fail2ban/fail2ban.conf auf 4 steht.

                      Auch die debugmeldungen (4) bringen gar nicht's.

                      Ok...

                      Nimm die /etc/fail2ban/jail.conf

                      schalte

                      [apache-tcpwrapper]  
                      enabled  = false
                      

                      füge einen Abschnitt ein:

                      [apache]  
                      enabled  = true  
                      port     = http, https  
                      filter   = apache-auth  
                      action   = iptables[name=ApacheAuth, port=http, protocol=tcp]  
                      maxretry = 3
                      

                      Wenn nicht existent, lege den genannten Filter an - /etc/fail2ban/filter.d/apache-auth.conf

                      # Fail2Ban configuration file  
                      #  
                      # Author: Cyril Jaquier  
                      #  
                      #  
                        
                      [INCLUDES]  
                        
                      # Read common prefixes. If any customizations available -- read them from  
                      # common.local  
                      before = apache-common.conf  
                        
                      [Definition]  
                        
                      # Option:  failregex  
                      # Notes.:  regex to match the password failure messages in the logfile. The  
                      #          host must be matched by a group named "host". The tag "<HOST>" can  
                      #          be used for standard IP/hostname matching and is only an alias for  
                      #          (?:::f{4,6}:)?(?P<host>[\w\-.^_]+)  
                      # Values:  TEXT  
                      #  
                      # Jörg Reinholz: Original war  
                      failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$  
                      #  
                      # Jörg Reinholz: Zum blockieren wenn Auth via MySQL angepasster Regex  
                      failregex = ^%(_apache_error_client)s (MySQL |)user.*(authentication failure|not found|password mismatch)\s*$  
                      #  
                      # Option:  ignoreregex  
                      # Notes.:  regex to ignore. If this regex matches, the line is ignored.  
                      # Values:  TEXT  
                      #  
                      ignoreregex =  
                      
                      

                      Du brauchst noch die /etc/fail2ban/filter.d/apache-common.conf: (steht hinter before =)

                      Generic configuration items (to be used as interpolations) in other

                      apache filters

                      Author: Yaroslav Halchenko

                      [INCLUDES]

                      Load customizations if any available

                      after = apache-common.local

                      [DEFAULT]

                      Common prefix for [error] apache messages which also would include <HOST>

                      _apache_error_client = [[^]]+] [error] [client <HOST>]

                      wenn in der jail.conf unter [default] etwas steht wie

                      banaction = iptables-multiport

                      dann muss es auch /ect/fail2ban/action.d/iptables-multiport.conf geben:

                        
                      # Fail2Ban configuration file  
                      #  
                      # Author: Cyril Jaquier  
                      # Modified by Yaroslav Halchenko for multiport banning  
                      #  
                        
                      [INCLUDES]  
                        
                      before = iptables-blocktype.conf  
                        
                      [Definition]  
                        
                      # Option:  actionstart  
                      # Notes.:  command executed once at the start of Fail2Ban.  
                      # Values:  CMD  
                      #  
                      actionstart = iptables -N fail2ban-<name>  
                                    iptables -A fail2ban-<name> -j RETURN  
                                    iptables -I <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>  
                        
                      # Option:  actionstop  
                      # Notes.:  command executed once at the end of Fail2Ban  
                      # Values:  CMD  
                      #  
                      actionstop = iptables -D <chain> -p <protocol> -m multiport --dports <port> -j fail2ban-<name>  
                                   iptables -F fail2ban-<name>  
                                   iptables -X fail2ban-<name>  
                        
                      # Option:  actioncheck  
                      # Notes.:  command executed once before each actionban command  
                      # Values:  CMD  
                      #  
                      actioncheck = iptables -n -L <chain> | grep -q 'fail2ban-<name>[ \t]'  
                        
                      # Option:  actionban  
                      # Notes.:  command executed when banning an IP. Take care that the  
                      #          command is executed with Fail2Ban user rights.  
                      # Tags:    See jail.conf(5) man page  
                      # Values:  CMD  
                      #  
                      actionban = iptables -I fail2ban-<name> 1 -s <ip> -j <blocktype>  
                        
                      # Option:  actionunban  
                      # Notes.:  command executed when unbanning an IP. Take care that the  
                      #          command is executed with Fail2Ban user rights.  
                      # Tags:    See jail.conf(5) man page  
                      # Values:  CMD  
                      #  
                      actionunban = iptables -D fail2ban-<name> -s <ip> -j <blocktype>  
                        
                      [Init]  
                        
                      # Default name of the chain  
                      #  
                      name = default  
                        
                      # Option:  port  
                      # Notes.:  specifies port to monitor  
                      # Values:  [ NUM | STRING ]  Default:  
                      #  
                      port = ssh  
                        
                      # Option:  protocol  
                      # Notes.:  internally used by config reader for interpolations.  
                      # Values:  [ tcp | udp | icmp | all ] Default: tcp  
                      #  
                      protocol = tcp  
                        
                      # Option:  chain  
                      # Notes    specifies the iptables chain to which the fail2ban rules should be  
                      #          added  
                      # Values:  STRING  Default: INPUT  
                      chain = INPUT
                      

                      Die Kommentare habe ich zum Lernen drin gelassen.

                      Jörg Reinholz

                      1. eventuell fehlt noch: iptables-blocktype.conf

                        # Fail2Ban configuration file  
                        #  
                        # Author: Daniel Black  
                        #  
                        # This is a included configuration file and includes the defination for the blocktype  
                        # used in all iptables based actions by default.  
                        #  
                        # The user can override the default in iptables-blocktype.local  
                          
                        [INCLUDES]  
                          
                        after = iptables-blocktype.local  
                          
                        [Init]  
                          
                        # Option:  blocktype  
                        # Note:    This is what the action does with rules. This can be any jump target  
                        #          as per the iptables man page (section 8). Common values are DROP  
                        #          REJECT, REJECT --reject-with icmp-port-unreachable  
                        # Values:  STRING  
                        blocktype = REJECT --reject-with icmp-port-unreachable  
                        
                        

                        GANZ WICHTIG:

                        Dazu muss natürlich iptables als Programmaufruf existieren. Prüfe das. Womöglich musst Du nachschauen und alle Befehle, die mit iptables zu schaffen haben auf SuSEfirewall umschreiben.

                        Wenn es gar nicht geht packe Deine gesamte Konfiguration ein (tar -czf fail2ban.config.tar.gz /etc/fail2ban/) und schick sie mir per Mail.

                        Jörg Reinholz

                        1. Mahlzeit,

                          sorry du warst schneller.

                          iptables funktionieren, sonst würde ja

                          [ssh-iptables]  
                          enabled  = true  
                          filter   = sshd  
                          action   = iptables[name=SSH, port=ssh, protocol=tcp]  
                          logpath  = /var/log/messages  
                          maxretry = 2
                          

                          nicht funktionieren.

                          eventuell fehlt noch: iptables-blocktype.conf

                          kann ich testen, aber ich denke nicht... siehe oben.

                          grüsse aus bayern
                               piet

                          1. Hallo,

                            gerne nehme ich dein Angebot an.
                            Ich werde dir die Dateien per email senden.

                            gruss
                             der etwas entspanntere piet

                            1. Das Problem wurde gelöst. Die Lösung ist allerdings sehr individuell.

                              Wer Probleme mit der Einrichtung von fail2ban hat kann sich im Ernstfall auch direkt an mich wenden.

                              Jörg Reinholz

                      2. Morgen,

                        Nimm die /etc/fail2ban/jail.conf

                        schalte

                        [apache-tcpwrapper]

                        enabled  = false

                        
                        >   
                          
                        OK  
                          
                        
                        > füge einen Abschnitt ein:  
                        >   
                        > ~~~apache
                        
                        [apache]  
                        
                        > enabled  = true  
                        > port     = http, https  
                        > filter   = apache-auth  
                        > action   = iptables[name=ApacheAuth, port=http, protocol=tcp]  
                        > maxretry = 3
                        
                        

                        hat default nicht existiert, genau so wie du geschrieben hast, habe ich es schon von einem anderen (funktionierenden) Projekt übernommen und in die jail.conf kopiert.
                        Zusätzlich habe ich noch logpath = /var/log/apache2/error_log einegtragen.

                        Wenn nicht existent, lege den genannten Filter an - /etc/fail2ban/filter.d/apache-auth.conf

                        Filter war vorhanden und ich habe deine Zeile schon eingetragen.
                        Trotzdem habe ich nochmals alles neu ersetzt.

                        Du brauchst noch die /etc/fail2ban/filter.d/apache-common.conf: (steht hinter before =)

                        vorhanden ... trotzdem alles ersetzt.

                        Alles was hier war habe ich probiert.. ssh funktioniert, apache nicht.
                        Ich kann mir das absolut nicht erklären. Ich habe auch schon "port=80" anstatt port=http probiert. Ich habe schon 3 mal fail2ban (ohne mysql) eingesetzt, sofort ohne Probleme gelaufen.

                        Ich müsste feststellen ob überhaupt der Filter angesprochen wird, bzw. die /var/log/apache2/error_log überprüft wird.

                        Ich bin wirklich ratlos.

                        gruß
                            der deprimierte piet

      2. Hallo,

        sorry, vermutlich habe ich mich nicht richtig ausgedrückt, oder ich verstehe deine Antwort nicht. (mysqld-auth) - > leitungsitzend

        Ich habe einen Apache 2 am laufen, bei dem ich meine Loggindaten (user:passwort) in einem MySQL-Server habe.

        Um nun am Apache anzumelden habe ich zur "Sicherheit" den fail2ban am laufen.

        Dazu habe ich den "apache-auth.conf" Filter benutzt. (wie beschrieben)

        Zu filternde logdatei /var/log/apache2/error_log

        In der Logdatei steht

        [error] [client w.x.y.z] MySQL user not found: /, referer: http://x.y  
        
        

        bzw.

        [error] [client w.x.y.z] user mustermann: passwort mismatch: /, referer: http://x.y  
        
        

        Eigentlich müsste der Filter funktionieren.

        failregex = ^%(_apache_error_client)s user .* (authentication failure|not found|password mismatch)\s*$  
        
        

        Wenn nicht anders nötig, will ich nur über die /var/log/apache2/error_log auslesen.
        Ich bin mir sicher ich habe den Filter "apache-auth.conf" schon mal erfolgreich benutzt.
        Damals hatte ich aber keinen MYSQL sondern nur die htaccess mit htusers. Kann es am Wort "MySQL" in der Logdatei liegen... das ist das erste Wort in der Logdatei-Zeile.

        Bitte seid nicht so streng zu mir :-)

        Danke
                   piet

  2. Moin!

    ich habe fail2ban am laufen.

    Mit einer recht uneleganten Konfiguration, denn...

    Wenn ich 5x (wie eingestellt) den richtigen Usernamen mit falschem Passwort wird die ip blockiert.

    Wenn ich jedoch einen falschen Usernamen + Passwort eingeben, dann funktioniert das immer, ohne Blockierung der ip.

    ...man kann jetzt herausfinden, welche Usernamen auf deinem System existieren, indem man sie durchprobiert. Wird man geblockt, war es ein gültiger Name, den man mit seinem Bot-Netz mal hinsichtlich der Passworte durchprobieren sollte - das gibt pro IP und Zeitraum des Blocks 5 Versuche, also durchaus 50.000 oder deutlich mehr Tests auf ein Passwort.

    Ohne Fail2ban würde man diese Info nicht kriegen - wenn der Login nicht funktioniert, kriegt man keinen Hinweis, dass manche Login-Versuche "besser" waren als andere.

    - Sven Rautenberg

  3. Ein Beispiel sagt ja mehr als tausend Worte...

    Wenn Du eine eine weitere Regel brauchst um auch bei falschen Benutzernamen zu blocken, dann schaue mal in der /etc/fail2ban/filter.d/sshd.conf nach. Da steht ein prima Beispiel, wie Du weitere Regeln einfügst:

    failregex = ^%(__prefix_line)s(?:error: PAM: )?[aA]uthentication (?:failure|error) for .* from <HOST>( via \S+)?\s*$  
                ^%(__prefix_line)s(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$
    

    Nämlich einfach eine weitere Zeile anhängen. Natürlich in der mysqld-auth.conf.

    Jörg Reinholz