Server-Härtung

„Wir haben jetzt die Netzwerk-Infrastruktur für die E-Mail-Kommunikation aufgebaut, die Transportverschlüsselung konfiguriert und die Domain-Authentifizierung eingerichtet. Aber der Mailserver selbst? Wie sicher ist der eigentlich?“

„Eine ausgezeichnete Frage! Ein Mailserver, der nicht gehärtet ist, wird schnell zu einem System, mit dem Angreifer beliebig Spam verschicken können – Stichwort: Open Relay. Schauen wir uns das mal an!“

Ein Open Relay ist ein Mailserver, der E-Mails von beliebigen Absendern an beliebige Empfänger weiterleitet, auch ohne Authentifizierung. Stell dir das so vor: Dein persönliches Postfach steht offen auf der Straße und jeder kann es benutzen, um Post unter deinem Namen abholen und verschicken zu lassen. Genau das passiert bei einem Open Relay.

Open Relay heißt: Dein Mailserver wird zur Spam-Schleuder für Fremde. Die Folge: Der Server landet auf Blacklists und kann keine legitimen E-Mails mehr zustellen.

Das lässt sich aber durch eine Konfiguration schnell ändern. In Postfix z.b. wird ein Open Relay in der Direktive smtpd_relay_restrictions verhindert. Dazu kannst du die folgende Zeile in der /etc/postfix/main.cf einfügen:

# Nur authentifizierte Benutzer und bekannte Netzwerke dürfen E-Mails senden
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination

Die Parameter haben folgende Bedeutung:

  • permit_mynetworks – erlaubt allen Clients aus den festgelegten „vertrauenswürdigen Netzwerken“, Mails zu weiterzuleiten. Die Subnetze werden in mynetworks = festgelegt.
  • permit_sasl_authenticated – erlaubt SMTP-Relay für Clients, die sich erfolgreich per SASL authentifiziert haben. Bei SASL (Simple Authentication and Security Layer) handelt es sich um ein Framework zur Authentifizierung eines E-Mail Clients gegenüber dem MTA über verschiedene Authentifizierungsverfahren.
  • reject_unauth_destination – lehnt E-Mails ab, wenn der Postfix-Server für die Ziel-Domain nicht zuständig ist und der Client nicht berechtigt ist, E-Mails über diesen Server an andere Domains weiterzuleiten (Relay). Beide Bedingungen müssen zutreffen.

Der Server leitet die Mails mit dieser Regel also nur weiter, wenn entweder das Ziel die eigenen Domain ist, die Clientadresse in mynetworks ist oder der Client authentifiziert ist.

Um einen Server auf sein Verhalten als „Open Relay“ zu testen (natürlich nur mit Erlaubnis), kann das „Schweizer Taschenmesser“ für E-Mails genutzt werden: swaks (https://jetmore.org/john/code/swaks/). Der Befehl lautet z.B. sinngemäß folgendermaßen:

swaks --server mail.deinserver.tld --port 25 \
  --from attacker@extern.tld --to victim@anderedomain.tld

So testest du, ob der Server unauthentifiziert eine Mail von einer externen Absenderdomain (@extern.tld) an eine externe Empfängerdomain (anderedomain) akzeptiert. Wenn ja, kann ein Angreifer deinen Mailserver als „kostenlosen Versanddienst“, also als Open Relay missbrauchen.

Authentifizierung über SMTP (SMTP AUTH) sollte ausschließlich über verschlüsselte Verbindungen erlaubt sein. Andernfalls werden Benutzername und Passwort im Klartext über das Netzwerk übertragen. Wie du das in Postfix konfigurierst, hast du bereits im vorigen Praxis-Lab gelernt:

# Postfix: AUTH nur über TLS erlauben
smtpd_tls_auth_only = yes

Rate Limiting begrenzt die Anzahl der E-Mails, die ein einzelner Benutzer oder eine IP-Adresse in einem bestimmten Zeitraum senden darf. Das schützt vor:

  • kompromittierten Konten, die massenhaft Spam versenden
  • Brute-Force-Angriffen auf die Authentifizierung
  • Denial-of-Service-Angriffen auf den Mailserver

In Postfix könnte ein Basis-Setup mit Hilfe von anvil z.B. folgendermaßen aussehen:

anvil_rate_time_unit = 60s

smtpd_client_connection_count_limit = 10
smtpd_client_connection_rate_limit = 20
smtpd_client_message_rate_limit = 60
smtpd_client_recipient_rate_limit = 120

Anvil ist ein interner Dienst von Postfix, der Verbindungs- und Aktivitätsraten von Clients überwacht.

Ohne Logs ist ein Mailserver eine Blackbox und du weißt nicht, was passiert. Im Ernstfall kannst du nichts nachvollziehen. Detailliertes Logging ist daher Pflicht:

  • Alle Zustellversuche (erfolgreich und fehlgeschlagen)
  • Authentifizierungsversuche (besonders fehlgeschlagene)
  • TLS-Verbindungsinformationen (welche Version, welche Cipher Suite)
  • Verbindungen von unbekannten oder verdächtigen IP-Adressen

Die Logs müssen zentral gesammelt und regelmäßig ausgewertet werden. Idealerweise passiert das automatisiert über ein SIEM-System.

Der Mailserver Postfix protokolliert auf Debian-Systemen standardmäßig in das Systemd-Journal. Du kannst Postfix-spezifische Einträge mit journalctl -u postfix -f anzeigen lassen. Allerdings gibt es viele Tuning-Möglichkeiten, um mehr Details für Security-relevante Ereignisse zu erhalten, die du nutzen solltest. Hier verweisen wir auf die Postfix-Dokumentation.

Veraltete Protokolle und Funktionen müssen konsequent deaktiviert werden, um eine sichere Mailserver-Konfiguration zu gewährleisten:

  • VRFY und EXPN: SMTP-Befehle, mit denen Angreifer gültige E-Mail-Adressen auf dem Server enumerieren können
  • Unverschlüsselte Ports: POP3 (110/tcp) und IMAP (143/tcp) deaktivieren, nur POP3S (995/tcp) und IMAPS (993/tcp) anbieten
  • SSLv3, TLS 1.0, TLS 1.1: Deaktivieren, nur TLS 1.2 und 1.3 zulassen
  • Schwache Cipher Suites: RC4, 3DES, NULL, EXPORT-Cipher entfernen

Praxis-Beispiel: Ein Angreifer verbindet sich per SMTP und testet die Existenz von Benutzernamen durch. Wenn der Server mit 250 User exists antwortet bei VRFY alice oder bei EXPN sales eine Liste wie „alice@firma.de, bob@firma.de …“ usw. zurück gibt, kann der Angreifer daraus gültige Adressen und Verteiler ableiten und gezieltes Phishing vorbereiten.

Prüfe, ob du die wichtigsten Maßnahmen zur Härtung für Mailserver einordnen kannst.

Nach oben scrollen