SASL Login komplett verbieten/Fail2Ban macht Probleme

  • Folgende Ausgangssituation:


    (V)Root-Server von Netcup mit Debian 8 und installiertem Fail2Ban sowie konfiguriertem SASL-Filter.


    Fail2Ban erkennt fehlerhafte Logins und sperrt die IPs über die IPTable. Aber: Diverse IPs kommen danach weiterhin rein und werden dann im Log von Fail2Ban als "already banned" gekennzeichnet. Irgendwas stimmt mit der Gesamtkonfiguration also noch nicht.


    Ich weiß aber nicht so recht, wo ich da noch ansetzen muss. Eigentlich müsste das doch klappen, sobald eine IP in der IPtable mit rejected gekennzeichnet ist?


    Falls ich auf diesem Weg nicht weiterkomme, wäre meine nächste Idee, SASL Login komplett zu verbieten. Ich nutze den Server nicht für eingehende Mails, das geht alles über einen anderen Anbieter. Der Server muss lediglich Systemnachrichten von Mediawiki und Wordpress verschicken. Nach meinem Verständnis wäre es also doch möglich, sämtlichen eingehenden Verkehr zu sperren und damit auch die Spammer auszuschließen. Wäre das umsetzbar und wie bewerkstellige ich das denn am besten?


    Bye, Mike

  • Fail2Ban sperrt die IPs ja über iptables. Sollten deine Tabellen nun dummerweise so aufgebaut sein, das eine Regel die gesperrten Angreifer durchlässt bevor die Regel zum Sperren greift, dann wäre das eine Erklärung. Man müssten also deine iptables dafür kennen.

    9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die letzte summt ständig die Melodie von Tetris.

  • Fail2Ban sperrt die IPs ja über iptables. Sollten deine Tabellen nun dummerweise so aufgebaut sein, das eine Regel die gesperrten Angreifer durchlässt bevor die Regel zum Sperren greift, dann wäre das eine Erklärung. Man müssten also deine iptables dafür kennen.

    Okay, hier mal meine aktuelle iptables:


  • Wenn du SMTP login nicht brauchst, solltest du den Dienst stoppen. Nur nach außen Anbieten, was auch gebraucht wird.


    Ohne dein Setup zu kennen:

    Bei Postfix lässt du nur lokale Sender zu mit:

    Code
    mynetworks = 127.0.0.0/8, [::1]/128
  • Der Witz ist aber, dass ich gerade merke: Die angeblich schon gebannten IPs finden sich gar nicht in den IPtables.

    Beispiel:


    2017-10-13 11:59:28,615 fail2ban.actions[9649]: INFO [sasl] 92.222.73.194 already banned


    Und warum macht die iptables aus IP-Adressen teilweise richtige URLs??

  • Wenn du SMTP login nicht brauchst, solltest du den Dienst stoppen. Nur nach außen Anbieten, was auch gebraucht wird.


    Ohne dein Setup zu kennen:

    Bei Postfix lässt du nur lokale Sender zu mit:

    Code
    mynetworks = 127.0.0.0/8, [::1]/128

    Hab ich geändert. In der Main.cf stand nur mynetworks = 127.0.0.0/8

  • in dem Fall war postfix von aussen gar nicht erreichbar. Wird fail2ban durch Login-Versuche auf imaps/pop3s getriggert ? Sollte in den Maillogs erkennbar sein ..

    Gruss

    Also gelegentlich sind auch solche Einträge drin:


    Zitat

    Oct 12 07:13:30 v22017104994954015 dovecot: pop3-login: Disconnected (no auth attempts in 10 secs): user=<>, rip=104.236.165.248, lip=xxx.xxx.xxx.xxx., session=<RVPimVJbugBo7KX4>

    Oct 12 07:14:17 v22017104994954015 dovecot: imap-login: Disconnected (no auth attempts in 10 secs): user=<>, rip=104.236.140.84, lip=xxx.xxx.xxx.xxx, TLS handshaking: Disconnected, session=<0EKonFJbrgBo7IxU>

    Oct 12 08:04:06 v22017104994954015 dovecot: pop3-login: Disconnected (no auth attempts in 10 secs): user=<>, rip=104.236.190.198, lip=xxx.xxx.xxx.xxx, TLS handshaking: Disconnected, session=<MdzMTlNbKABo7L7G>

    Oh ich seh grad selber, da scheint auch dovecot zu laufen. Ist das in der Standard-Distribution von Debian mit dabei? Ich hab das nicht bewusst installiert und brauch es eigentlich auch nicht. Mediawiki und Wordpress senden doch über Postfix, oder?


    Mir geht es aber vor allem um die recht häufigen SASL-Login Fehler:

    Zitat

    Oct 12 08:44:16 v22017104994954015 postfix/smtpd[23030]: connect from unknown[115.231.212.82]

    Oct 12 08:44:19 v22017104994954015 postfix/smtpd[23030]: warning: unknown[115.231.212.82]: SASL LOGIN authentication failed: UGFzc3dvcmQ6

    Oct 12 08:44:19 v22017104994954015 postfix/smtpd[23030]: lost connection after AUTH from unknown[115.231.212.82

  • Wenn du iptables mit dem -n Flag aufrufst nicht. Ansonsten wird versucht den PTR-Record für die entsprechende IP zu bekommen.

    Stimmt, wieder was gelernt. Hier nochmal die gesperrten IPs:


    Und da ist dann auch die 92.222.73.194 mit dabei.

  • in dem Fall war postfix von aussen gar nicht erreichbar. Wird fail2ban durch Login-Versuche auf imaps/pop3s getriggert ? Sollte in den Maillogs erkennbar sein ..

    Gruss

    ich hab Mist geschrieben, sorry: mynetworks legt fest, welche Netze berechtigt sind, postfix zu nutzen. Wenn postfix nur lokal laufen soll, dann müsstest du den Paramter inet_interfaces ändern auf loopback-only (oder 127.0.0.1 [::1]) defaultmässig steht der Wert m.E. auf all - daher ist postfix auch von aussen erreichbar.

    HInsichtlich dovecot: wenn nicht gebraucht, Dienst stoppen bzw. deinstallieren.

    Gruss

  • ich hab Mist geschrieben, sorry: mynetworks legt fest, welche Netze berechtigt sind, postfix zu nutzen. Wenn postfix nur lokal laufen soll, dann müsstest du den Paramter inet_interfaces ändern auf loopback-only (oder 127.0.0.1 [::1]) defaultmässig steht der Wert m.E. auf all - daher ist postfix auch von aussen erreichbar.

    HInsichtlich dovecot: wenn nicht gebraucht, Dienst stoppen bzw. deinstallieren.

    Gruss

    Kein Problem. Habe es so geändert. dovecot würde ich deinstallieren. Ich bin mir nur nicht sicher, ob das nicht doch irgendwo gebraucht wird.

    Daher würde mich interessieren, ob das standardmäßig im Image von Debian Wheezy auf 64Bit Basis mit installiertem und vorkonfiguriertem Froxlor bei Netcup auch dovecot mit enthalten ist und irgendwo gebraucht wird.

  • dovecot standardmässig ? Keine Ahnung, ich zieh eine Minimalinstallation vor und ziehe dann "meine" Packageliste nach ;)

    BTW: hast du nun Debian 8 (Jessie) oder Wheezy installiert ? Wheezy ist ziemlich alt, dort endet selbst der LTS-Support im Mai 2018. Wenn nicht spezielle Software ein Update verbietet, dann würde ich durchaus auf Stretch gehen.

    Gruss

  • dovecot standardmässig ? Keine Ahnung, ich zieh eine Minimalinstallation vor und ziehe dann "meine" Packageliste nach ;)

    BTW: hast du nun Debian 8 (Jessie) oder Wheezy installiert ? Wheezy ist ziemlich alt, dort endet selbst der LTS-Support im Mai 2018. Wenn nicht spezielle Software ein Update verbietet, dann würde ich durchaus auf Stretch gehen.

    Gruss

    Sorry, es ist Jessie. Und ich hab das Image von Netcup aufgespielt. Minimal war mir zu riskant, da ich ein funktionierendes System mit Apache2, PHP und Mysql brauchte und da noch nicht so firm bin. Habe aber dovecot erstmal gestoppt und schaue, ob Systemnachrichen weiter durchkommen. Wenn ja, deinstalliere ich das Paket dann im Nachgang. Warum die IPs von Fail2Ban trotzdem durchkommen, versteh ich aber immer noch nicht...

  • Im Image von Debian Wheezy oder Jessie mit Froxlor ist Apache 2.4, mysql, php5, dovecot, postfix, froxlor selbst natürlich, proFTP, bind9 mit installiert. siehst du auch im Admin Interface unter "System > Einstellungen".

    Danke für die Info! Die Benachrichtigungen klappen auch ohne dovecot, da werde ich das schonmal deinstallieren. Postfix selber brauche ich leider für systemseitige Emails an Nutzer. Dennoch bleibt für mich die Verständnisfrage: Warum können über die IPtables gebannte IPs trotzdem wieder über SASL Einloggversuche starten. Das kann ich nicht ganz verstehen...


    Bye, Mike

  • SASL ist ja kein Dienst, der nach aussen "lauscht". Das ist ein Authentifizierungsframework, das von verschiedenen Diensten benutzt wird (SMTP/IMAP/POP/etc...)


    fail2ban benutzt IPtables um anfragen zu blockieren. Bei IPtables gibt man den Port an, der gesperrt werden soll. In der fail2ban wird das über den "port =" gemacht. Welche Regel ausgeführt wird, wenn der fail2ban Algorithmus zuschlägt siehst du in deiner config unter "action ="

    Die Files dazu sollten in

    Code
    /etc/fail2ban/action.d/

    liegen. Meistens ist hier noch iptables-multiport eingestellt, was bedeutet, dass nur die angegebenen Ports gesperrt werden.


    Angaben kannst du z.B. so machen:

    port = 80 (einzelner Port)
    port = 80,443 (Verschiedene Ports mit Kommata)
    port = 8080:8090 (Port Range mit Doppelpunkt)
    port = 80, 8080:8090 (Mischung aus beidem)


    Wenn bei deiner fail2ban-sasl Regel also der Port 4567 angegeben ist, dann wird der Port für die entsprechende IP gesperrt, wenn die Regel zuschlägt. Wenn der "angreifer" aber auf Port 5678 mit deinem Mailserver redet, der eine SASL abfrage macht, die fehlschlägt, wird er zwar nochmal für Port 4567 gesperrt, aber das juckt ihn ja nicht. Du musst also deine Ports im fail2ban an deine Serverkonfiguration anpassen (Wird z.B. bei SSH gerne vergessen, wenn die Nutzer den SSH Port ändern, aber die Regel nicht anpassen.)


    Wenn du willst, dass eine IP für alle ports gesperrt wird, musst du iptables-allports wählen (wenn vorhanden im action.d Verzeichnis). (Vorsicht, damit sperrt man sich ganz gerne mal selbst aus)


    LG,

    Johannes