• MMaxPain

      Moolevel 3

    Seit Wochen (3- 4 Wochen) wird meine Mailcow Instanz attackiert mit wahrscheinlich einem Botnet oder tausenden IPs, die IPs ändern sich ständig so das Fail2Ban und Crowdsec kaum wirkung zeigen. Fail2ban habe ich schon auf 1 gestellt so das nach einem Fehlversuch direkt ein ban von 120 min eintritt. Hilft aber nicht da immer neue IPs benutzt werden.

    Habt ihr da vllt noch Ideen zum blocken? Ich habe an Geoblocking gedacht aber muss noch überlegen wie ich das nur fürs Login verfahren scharf stelle.

    • mlcwuser replied to this.
    • Sehr cool @esackbauer, die Seite hatte ich noch nicht auf dem Radar!

      Ich hab mir ein Script gebaut das die IPs via Abuseip API zieht und dann via Mailcow API in Fail2Ban packt. Hier das Script:

      #!/bin/bash
      
      curl -G https://api.abuseipdb.com/api/v2/blacklist \
        -d confidenceMinimum=90 \
        -d plaintext \
        -H "Key: YOUR_ABUSEIP_API_KEY" \
        -H "Accept: application/json" \
        -o /tmp/abuseipdb_blacklist.txt
      
      BLACKLIST=$(awk '{if (index($0, ":") > 0) printf "%s%s/128", sep, $0; else printf "%s%s/32", sep, $0; sep=","} END {print ""}' /tmp/abuseipdb_blacklist.txt)
      
      cat <<EOF > /tmp/abuseip_request.json
      {
        "items":["none"],
        "attr": {
          "blacklist": "$BLACKLIST"
        }
      }
      EOF
      
      curl --include \
           --request POST \
           --header "Content-Type: application/json" \
           --header "X-API-Key: YOUR_MAILCOW_API_KEY" \
           --data-binary @/tmp/abuseip_request.json \
           'https://YOUR.MAIL.SERVER/api/v1/edit/fail2ban'

      (der Umweg über das /tmp/abuseip_request.json file weil curl sonst meckert dass es zu viele Argumente sind wenn man es direkt übergibt)

      Man sieht die IPs komischerweise nicht in der Mailcow Fail2Ban GUI, aber via iptables sind alle drin.

      • esackbauer

        • Community Hero
        Moolevel 365

      Auf was gehen die Los? Welchen Port?

      Have something to say?

      Join the community by quickly registering to participate in this discussion. We'd like to see you joining our great moo-community!

      • MMaxPain

          Moolevel 3
        • Edited

        Die Mailcow Instanz ist hinter Traefik geschaltet, Port 587 nehme ich mal an da SASL-Authentifizierungsversuche darüber laufen meines wissens nach. Es wird versucht Login daten zu knacken. Username wird random probiert und das pw dazu. Hier die Log als Screenshot. Meine kompletten Logs sind voll damit. Seit Wochen steht der Mailserver unter Feuer.

          • bekenz762

              Moolevel 0

            Bei meiner Mailcow genau das gleiche seit einer Woche. Sogar die gleichen IPs.

            • Iitsaw

                Moolevel 3

              Das sieht mir aber nach einem typischen Grundrauschen aus. In meinem Netfilter-Log seh ich nur noch Warnungen seit ich meine Fail2Ban-Parameter so gesetzt habe:

              Bannzeit in Sekunden: 86400
              Maximale Bannzeit in Sekunden: 604800
              Bannzeit erhöht sich mit jedem Bann
              Max. Versuche: 5
              Wiederholungen im Zeitraum von (s): 600
              Netzbereich für IPv4-Banns (8-32): / 32
              Netzbereich für IPv6-Banns (8-128) : / 128

              Und ja, ich sperre einfach gleich mal für 24 Stunden und bis zu 7 Tagen. False-Positives kann ich ja jederzeit händisch herausnehmen.

              Aber gewöhnt euch daran, es wird nicht weniger, so lästig das ist.

              Meine Einstellungen sehen so aus. So klappt das ganz gut:

              Bannzeit in Sekunden: 432000
              Maximale Bannzeit in Sekunden: 172800
              Bannzeit erhöht sich mit jedem Bann
              Max. Versuche: 2
              Wiederholungen im Zeitraum von (s): 1200
              Netzbereich für IPv4-Banns (8-32): / 24
              Netzbereich für IPv6-Banns (8-128) : / 128

                • Iitsaw

                    Moolevel 3

                  Ganzjahresgriller
                  Oha du sperrst gleich ein ganzes /24er aus.
                  Deine Bannzeit ist höher als die maximale Bannzeit oder fehlt da eine oder mehrer Stellen bei der maximalen?

                  Bei mir versuchen Sie es im Moment immer nur einmal, anscheinend lernen die Botbetreiber dazu

                  Ja, /24 weil ich damit gute Erfahrungen habe

                  Da fehlt eine 0

                  • Mmlcwuser

                      Moolevel 35
                    • Edited

                    MaxPain Fail2ban habe ich schon auf 1 gestellt so das nach einem Fehlversuch direkt ein ban von 120 min eintritt.

                    Kann man machen, ist aber imho overkill und erhöht die Gefahr, dass man sich selbst Probleme einhandelt, denn dass man mal irgendwo ein Passwort falsch eingibt, kann ja durchaus vorkommen. 😉

                    MaxPain Seit Wochen steht der Mailserver unter Feuer.

                    Naja, “unter Feuer” würde ich es erst nennen, wenn du hunderte oder tausende Anmeldeversuche pro Minute siehst. 😉 Auf deinem Screenshot sieht es aber eher so aus, als ob alle paar Minuten ein Versuch stattfindet und sich die vielen hundert oder tausend Versuche wohl eher über mehrere Tage oder Wochen angesammelt haben.

                    Ich würde sagen, was du da siehst ist normal, wenn du irgendwelche Dienste über das Internet zugänglich machst und ich sehe das wie @itsaw als normales Grundrauschen und würde mir daher nicht zu viele Gedanken darüber machen. Wie du siehst, macht Fail2Ban ja seinen Job und wenn du halbwegs sichere Passwörter verwendest, kommt da auch niemand rein.

                    Naja, gegen Fehler beim Tippen hilft ein PW Manager

                      • Mmlcwuser

                          Moolevel 35
                        • Edited

                        Ganzjahresgriller Ja klar, trotzdem, bringt 1 Fehlversuch vs. z.B. 3 oder 5 Fehlversuche wenig an zusätzlicher Sicherheit, ausser du nutzt password1 als password, da wäre der Angreifer beim zweiten Versuch drinn. 😉

                        • MMaxPain

                            Moolevel 3

                          Ein generelles Grundrauschen ist für mich auch nachvollziehbar, der MailServer läuft seit ca. 1 Jahr. Ich schaue fast täglich in die Logs und seit 3-4 Wochen laufen die attacken außergewöhnlich oft minütlich was vorher nicht der Fall war. Ich verwalte nicht nur meine eigenen Domains sondern auch mehrere von Drittparteien, da macht man sich natürlich gedanken um die Sicherheit.

                          Eine weiter Optimimierung wäre meines erachtens ein Login Geo-blocking. Ich würde gerne nur Login Versuche aus Deutschland zulassen. Jemand eine Idee wie ich dies konfigurieren könnte für Mailcow?

                          • MMaxPain

                              Moolevel 3
                            • Edited

                            Danke aber das wäre ein genereller GeoBlock, das würde auch eingehende und ausgehende E-Mails blockieren und auch zu anderem Chaos führen. Die Frage ist ob es eine Möglichkeit gibt es nur für den “Login Versuch” scharf zu stellen.

                              und wie bindest Du das ein? In Mailcow sicher nicht oder?

                                • Iitsaw

                                    Moolevel 3

                                  @MaxPain Das ganze IST noch Grundrauschen, die Botnetze kommen mal mehr mal weniger stark durch.
                                  Auch Versuche aus den üblichen Ländern kommen immer mal wieder in Wellen auf.
                                  GeoBlocking kann ich auf meinem Server, der auch von weiteren genutzt wird, auch nicht einsetzen.
                                  Gelegentlich blocke ich bei der Firewall des RZ-Betreibers mal einige IPs wenn es zu viel werden sollte.

                                  Das ganze sind eben Bruteforce Versuche um in die Mailbox zu kommen, solange, wie @mlcwuser bereits schrieb, die Passwörter nicht einfach zu erraten sind, sehe ich da keine größere Gefahr.

                                  Jeder Mailserver ist mal dran.

                                  • Mmlcwuser

                                      Moolevel 35
                                    • Edited

                                    MaxPain Die Frage ist ob es eine Möglichkeit gibt es nur für den “Login Versuch” scharf zu stellen.

                                    Mit Mailcow-Bordmitteln so viel ich weiss nicht, aber mit einer externen Lösung kannst du natürlich pro Port unterschiedliche Regeln und Block-/Allowlisten nutzen. Sprich du kannst z.B. die Ports 443,587,465 etc restrektiver konfigurieren als Port 25.

                                    Wirklich lohnen tut sich aber so ein Aufwand imho nicht, denn gezielte Angriffe wirst du auch mit exessivem Geo Blocking nicht aufhalten, weil ein VPS in einer anderen Region ist schnell aufgesetzt, wenn es jemand wirklich gezielt auf deinen Server abgeshen hat, und die ganzen Bots sind nicht wirklich gefährlich, solange Fail2ban funktioniert und du sichere Passwörter verwendest.

                                    Am Ende des Tages geht es also eher darum die Logs clean zu halten, und da ist, wenn überhaupt, ein “Mittelweg”, wie ihn @esackbauer vorschlägt die beste Lösung.

                                    • Iitsaw

                                        Moolevel 3

                                      Achja.. und zum “Logs clean halten”:

                                      Ich würde eher versuchen die Logs in ein SIEM zu holen und dann dort auich wirklich die Auswertungen zu betreiben.
                                      Denn man kann davon ausgehen dass eben nicht nur der Mailserver so stark besucht wird, sondern bene auhc die Wordpress-, Joomla-, Nextcloud- oder weitere Instanzen.
                                      Dann macht es durchaus Sinn wenn man sehen kann ob die Angreifer gezielt vorgehen oder es eben nur Grundrauschen ist.

                                      • esackbauer

                                        • Community Hero
                                        Moolevel 365

                                      Ganzjahresgriller und wie bindest Du das ein? In Mailcow sicher nicht oder?

                                      Ich kann das direkt in meine Sophos Firewall einbinden, die vorgeschaltet ist.
                                      Müsste aber auch mittels etwas Scripting in mailcow gehen. Die Liste ist ein simples Textfile mit knapp 10000 IP Adressen.