Umgang mit ungültigen SMTP-Befehlsangriffen

8

Einer unserer halb ausgelasteten Mailserver (sendmail) hatte in den letzten Tagen viele eingehende Verbindungen von Hosts, die Garbage-Befehle ausgeben.

In den letzten zwei Tagen:

  • eingehende SMTP-Verbindungen mit ungültigen Befehlen von 39.000 eindeutigen IPs
  • Die IPs kommen aus verschiedenen Bereichen auf der ganzen Welt, nicht nur aus wenigen Netzwerken, die ich blockieren kann
  • Der Mailserver bedient Benutzer in ganz Nordamerika, sodass ich nicht nur Verbindungen von unbekannten IPs blockieren kann
  • Beispiel für fehlerhafte Befehle: http://pastebin.com/4QUsaTXT

Ich bin mir nicht sicher, was jemand mit diesem Angriff erreichen will, außer mich zu ärgern.

Irgendwelche Ideen, worum es geht oder wie man effektiv damit umgeht?

Kennzeichen
quelle
1
Da dieser Datenverkehr nichts mit SMTP zu tun hat, frage ich mich, ob eine Layer 7-Firewall ihn löschen könnte, bevor er sendmail erreicht.

Antworten:

4

Hier ist mindestens eine Option zum Planen dieser Verbindungen, nachdem sie anfangen, Fehler auszuspucken. Gültige und gut erzogene Kunden sollten niemals in diese Tarpit fallen.

dnl # New option in v8.14.0
dnl # Override default limit (of 20) NOOPs (invalid or unsupported SMTP
dnl #   commands) before daemon will throttle connection by slowing
dnl #   error message replies (similar to "confBAD_RCPT_THROTTLE")
define(`MaxNOOPCommands', `5')dnl

Sie können auch die GreetPause-Funktion verwenden, mit der diese Clients abgelehnt werden, da sie die Pause wahrscheinlich nicht einhalten. Weitere Informationen finden Sie hier: http://www.deer-run.com/~hal/sysadmin/greet_pause.html

dnl # New feature in v8.13.1 (not listed in Companion)
dnl # Set time in milliseconds before sendmail will present its banner
dnl #   to a remote host (spammers won't wait and will already be
dnl #   transmitting before pause expires, and sendmail will
dnl #   refuse based on pre-greeting traffic) 5000=5 seconds
dnl # NOTE: Requires use of FEATURE(`access_db') and "GreetPause" entries
dnl #       in access table
FEATURE(`greet_pause',`5000')dnl
blueben
quelle
1

Ich würde fail2ban installieren und beim ersten ungültigen Befehl blockieren.

Adamo
quelle