Spam und UCE - gültige Empfänger
Warum nehmen Sie Nachrichten für Mailadressen an, die es in ihrem System gar nicht gibt ? Die Frage hört sich so leicht an und trotzdem gibt es massenhaft Firmen, die erst mal JEDE Mail annehmen und dann mit einem NDR antworten. Vermutlich wissen viele Administratoren gar nicht, dass Sie damit zu einer "NDR-Schleuder" werden können, wie z.B. auf NDR-Filter und NDR-Spamming gut ersichtlich wird.
Beachten Sie dazu auch die Seite: EXO Antispam-Support zu Exchange Online und SPF, DKIM, DMARC, ARC, SRS, u.a.
So funktioniert es
Sehr viele moderne Mailserver können mittlerweile Empfänger schon bei der SMTP-Verbindung überprüfen und bei Bedarf mit einem "Mailbox does not exist" ablehnen. Das ist ganz einfach und muss bei den meisten Mailservern nur konfiguriert werden.
Wenn ihr Mailserver dies nicht unterstützt oder Sie ihren Mailserver nicht direkt an das Internet hängen wollten, dann müssen Sie ein System zwischen Internet und ihrem Mailserver einsetzen, welches eben ihren gewünschten Schutz sicherstellt, vielleicht noch Viren entsprechend erkennt und blockiert und irgendwie eine Liste der Benutzer vom internen Mailsystem erhält.
Einen anderen Ansatz habe ich mit NoSpamProxy, welcher als SMTP-Proxy agiert und damit die internen Funktionen zum Ablehnen unerwünschter Nachrichten weiterhin nutzbar macht.
Empfänger prüfen
Damit das erste System, welches die Mails annimmt überhaupt die Gültigkeit der Adressen prüfen kann, muss es natürlich eine vollständige Liste der gültigen internen Empfänger haben. Hierzu gibt es gleich mehrere Ansätze, wie ein Hersteller dies lösen kann.
Verfahren | Vorteil | Nachteil |
---|---|---|
Lernen der ausgehenden Nachrichten |
|
|
LDAP nach intern |
|
|
Die gültigen Adressen werden nach außen publiziert, z.B. kleinen SQL/LDAP-Server, der vom Gateway gefragt wird |
|
|
Statische Listen |
|
|
SMTP PassThough |
|
|
Kein Verfahren ist in der Hinsicht optional und es ist letztlich eine individuelle Betrachtung nach Sicherheit, Aufwand, Aktualität und Funktion erforderlich.
Lösungen nach Produkt
Auch wenn das Ablehnen von ungültigen Empfängern ein sehr einfacher Prozess ist, so haben erst neuere Versionen der verschiedenen Mailserver diese Funktion eingebaut. Sehr viele kommerzielle SMTP-Relays haben selbst im Jahr 2007 immer noch nicht diese einfache Funktion implementiert.
Exchange
Microsoft Exchange 5.5 und Exchange 2000 unterstützen noch keine Überprüfung von Empfängern. Erst Exchange 2003 konnte mit der Einführung von IMF V1 und V2 auch auf ungültige Empfänger prüfen und entsprechend ungültige Empfänger auf Ebene des SMTP-Protokolls gleich ablehnen. Exchange 2007 geht sogar noch weiter und lehnt die Empfänger nicht nur ab, sondern aktiviert noch ein "Tarpitting", d.h. die Meldung über die Ablehnung wird per Default um 5 Sekunden verzögert und nach 10 Protokollfehlern beendet, so dass es für Spammer schwerer ist, die Adressen zu erraten. Beide Einstellungen müssen aber aktiviert werden.
- Exchange 2003
Hier muss IMF (Exchange 2003 SP2) installiert werden, damit Sie auf der Organisation die Empfängerfilterung einschalten und auf dem annehmenden virtuellen SMTP-Server binden können.
- Exchange 2007
Installation der AntiSpam Add-ons auf dem Hub/Transport (oder Installation von Exchange 2007 Edge). Der Recipient Filter Agent ist die relevante Komponente, die auf der Organisation. aktiviert werden muss
[PS] C:\Program Files\Microsoft\Exchange Server\Scripts>& 'D:\Program Files\Micr osoft\Exchange Server\Scripts\install-AntispamAgents.ps1' Identity Enabled Priority -------- ------- -------- Connection Filtering Agent True 4 Content Filter Agent True 5 Sender Id Agent True 6 Sender Filter Agent True 7 Recipient Filter Agent True 8 Protocol Analysis Agent True 9
- Exchange Online
Directory Based Edge Blocking
Mit der richtigen Einstellung lehnt Exchange Online auch ungültige Empfänger direkt ab.
Bei all diesen Optionen ist es natürlich erforderlich, dass der Exchange SMTP-Stack direkt aus dem Internet erreichbar ist. Sobald ein Relay (z.B. Virenscanner o.ä.) installiert wird, kann die Funktion nicht mehr genutzt werden. Eine kleine Ausnahme sind nur die Zwischenstationen, welche als Proxy arbeiten oder eine Empfängerprüfung per SMTP vorziehen.
Postfix als Interimslösung
Besonderer Dank geht nach Berlin an Ralf Hildebrandt für die vielen Tipps und Hinweise zu Postfix.
Achtung
Ich bin kein Postfix Experte. Bitte verifizieren Sie ihre Konfiguration
erst auf einem Testsystem.
Wenn Sie kein Problem mit dem Einsatz eines Unix-Mailrelays haben, dann ist Postfix nach meiner bisherigen Erfahrung das ideale Programm, um als erstes System vom Internet her die Nachrichten anzunehmen und ungültige Empfänger zurückzuweisen. Die Konfiguration ist denkbar einfach
# etc/postfix/main.cf # mydestination = ip.des.exchange.server/32 das darf nicht drin sein relay_domains = firma.de transport_maps = hash:/etc/postfix/transport mynetworks = ip.des.exchange.server/32 relay_recipient_maps = hash:/etc/postfix/validrecipients.txt
Nun müssen Sie nur noch die Datei "validrecipients.txt" anlegen. Die Datei enthält alle gültigen Empfänger Zeit für Zeile gefolgt von dem Statuscode, z.B.: Alle Empfänger die hier enthalten sind, sind gültig. Ungültige oder ausgeschiedene Empfänger müssen daher auskommentiert oder entfernt werden.
User1@firma.tld OK User2@firma.tld OK #User3@firma.tld 500 No longer valid.
An vielen Stellen sieht man die dritte Zeile ohne Kommentar, was aber falsch ist.
Quelle:
http://www.postfix.org/postconf.5.html#relay_recipient_maps
"Technically, tables listed with $relay_recipient_maps are used as lists:
Postfix needs to know only if a lookup string is found or not, but it does
not use the result from table lookup."
Den Export aus Exchange 5.5 oder dem Active Directory können Sie per LDAP einfach selbst machen. Sie können dazu das Script VBS:SMTPList als Ausgangspunkt nehmen und im Quelltext die auskommentierte Zeile aktivieren.
- http://www.postfix.org/ADDRESS_VERIFICATION_README.html
- http://postfix.state-of-mind.de/patrick.koetter/mailrelay/
- http://www.postfix.org//
- Exporting MS Exchange 5.5 Users to Postfix
http://www.unixwiz.net/techtips/postfix-exchange-Users.html - Exportiert Active Directory Benutzer in einem PostFix format.
http://www-personal.umich.edu/~malth/gaptuning/postfix/ - http://www2.origogeneris.com:4000/relay_recipients.html
Interessant könnte natürlich auch eine LDAP-Abfrage sein. Ergebnisse kann ich hierzu aber nicht vorweisen
- http://www.postfix.org/LDAP_README.html
- http://postfixwiki.org/index.php?title=Relay_ recipient_maps_using_LDAP_against_Active_Directory
Angeblich soll folgendes funktionieren:
relay_recipient_maps = ldap:/etc/postfix/relay_maps.cf
Und der Inhalte der relay_maps.cf wäre ähnlich zu
server_host = ldap://xx.xx.xx.xx:389 search_base = cn=Users,ou=msxfaq,o=local query_filter = (|(mail=%s)(otherMailbox=smtp:%s)) result_attribute = mail version = 3 bind = ser,cn=Recipients,ou=DOMAIN,o=DOMAIN bind_pw = password
Diese Interimslösung sollte nur dann als Dauerlösung eingesetzt werden, wenn es in ihr Konzept passt und Sie mit den Produkten umgehen können. Prüfen Sie daher erst, ob ihre bestehende Produktauswahl nicht auch Empfänger schon am ersten Gateway ablehnen kann oder wählen Sie zukünftig ihre Produkte entsprechend aus.
Eine letzte aber ebenso pfiffige Lösung bietet Postfix, wenn ihr interner Mailserver auf ein RCPT TO eine Fehlermeldung generieren kann. Mit der Einstellung "address_verify_relayhost" kann Postfix angewiesen werden, für jede eingehende Mail erst einmal eine Verbindung zu einem vorgegebenen internen Mailserver aufzubauen und die Gültigkeit der Adresse zu prüfen.
address_verify_relayhost = [IP-Adresse des SMTP Servers)
Zusätzlich muss in der Datei "main.cf" noch die SMTP-Prüfung aktiviert werden.
smtpd_recipient_restrictions = reject_unverified_recipient
Mit folgendem Eintrag kann man diese Ergebnisse dann sogar in einem Cache vorhalten, so dass der interne Server nicht jedes mal mit der gleichen falschen Adresse geprobt wird.
address_verify_map = btree:/var/lib/postfix/verify
Ungeschickt ist dies aber dann, wenn jemand eine Mail an einen neuen Benutzer sendet, eher der SMTP-Server diese neue Daten auch schon weiss. Allerdings sollten Sie hier natürlich nicht den Postfix selbst als Testgegenstelle eintragen, sondern z.B.: den internen ExchangeServer, auf welchem Sie natürlich auch die Empfängerfilterung aktivieren müssen.
Hier noch ein paar Links zum Thema
- http://www.postfix.org/postconf.5.html#relay_recipient_maps
- http://www.postfix.org/ADDRESS_VERIFICATION_README.html#recipient
- http://www.arschkrebs.de/postfix/
-
Postfix Buch von Ralf Hildebrandt
http://www.postfix-book.com/ bzw. http://www.postfix-buch.com/
Sendmail als Relay
Wenn Sie z.B. SENDMAIL als Mailrelay zwischen dem Internet und ihrem Exchange Server betreiben, dann können Sie auch hier entsprechende Filter und Konfigurationen vornehmen, so dass Sendmail als annehmendes System nur die Mails passieren lässt, die an gültige Empfänger gehen. Folgende Schritte sind dazu auf SENDMAIL erforderlich:
- sendmail.mc sichern
Sichern Sie zuerst die aktuelle Konfiguration des SENDMAIL, z.B. durch
cp /etc/mail/sendmail.mc /etc/mail/sendmail.mc.<datum>
- Aktivierung der Empfängerprüfung gegen eine Datenbank
In der Konfigurationsdatei "/etc/mail/sendmail.mc" muss dazu das LDAP-Feature erweitert werden.
FEATURE(`Blocklist_recipients')dnl LDAPROUTE_DOMAIN(`firma1.tld') LDAPROUTE_DOMAIN(`firma2.tld') FEATURE(`ldap_routing', `hash -o /etc/mail/validUsers.db', `null', `bounce') EXPOSED_User(`root')dnl
- Als nächsten Schritt sind natürlich die gültigen Adressen in der Datenbank (z.B.: in der Datei /etc/mail/validUsers) zu addieren in der Form, dass die Mailadresse auf die IP-Adresse des Exchange Servers verweist, z.B.:
User@firma1.tld [ExchangeIP] User@firma2.tld [ExchangeIP]
- Datenbank erstellen
Über den Aufruf von "Makemap" wird die Datei für SENDMAIL entsprechend vorbereitet
makemap hash /etc/mail/validUsers < /etc/mail/validUsers
- Sendmail neu starten
nach einem Neustart von Sendmail sollte er dann nur Mails für in der Datenbank angegebenen Benutzer annehmen. Dies können Sie recht einfach mit einem Telnet testen
Achtung
Ich bin kein Sendmail Experte. Bitte verifizieren Sie ihre Konfiguration
erst auf einem Testsystem.
Die Liste der Empfänger aus dem Exchange Server bzw. dem Active Directory können Sie sehr einfach mit einem VBScript oder CSVDE exportieren.
Also laut Postfix-Buch kann man die gewünschten Adressen mit folgender Zeile exportieren.
REM Umbruch zur Lesbarkeit csvde -m -n -g -f "C:\ADUsers.txt \ -r "(|(&(objectClass=User)(objectCategory=person))(objectClass=groupOfNames)(objectClass=msExchDynamicDistributionList))" -l proxyAdresses
Dieser Aufruf exportiert alle "ProxyAddresses" von den Benutzern, Verteilern und dynamischen Verteilern aber z.B.: nicht die öffentlichen Ordner. Sie können natürlich auch ein VBScript als Ausgangspunkt nehmen. Siehe dazu VBS:SMTPList.
Probleme
Das frühe Ablehnen macht es natürlich für Spammer auch möglich, gültige Adressen einfach zu "probieren". Wenn Sich ihr Mailserver daher nicht entsprechend schützt, z.B.: durch Tarpitting oder temporäre Blockade der IP-Adresse, dann ist es tatsächlich für einen Angreifer damit ein leichtes, ihr Adressbuch zu erraten.
Andere Probleme sind nicht zu erwarten. Das Ablehnen von ungültigen Empfängeradressen am ersten Gateway hat nur Vorteile, weil sie dadurch Bandbreite, Speicherplatz und Rechenleistung sparen und vor allem keine NDRs versenden müssen, die im Falle eines Missbrauchs Sie selbst zum Störer machen. Wenn Sie hingegen diese NDRs nicht versenden, dann erkennen Absender nicht, wenn diese sich bei der Eingabe der Adresse vertippt haben. Das Abschalten dieser NDRs, um den Störfaktor zu verhindern, ist daher keine gute Idee.
Weitere Links
-
EXO Antispam-Support zu Exchange Online und SPF, DKIM, DMARC, ARC, SRS, u.a.
- Directory Based Edge Blocking (DBEB) Mit der richtigen Einstellung lehnt Exchange Online auch ungültige Empfänger direkt ab.
- DBEB mit Hybrid Internal Relay macht OnPremises Empfänger erreichbar aber deaktiviert DBEB
- Unzustellbarkeiten
- SMTPList.VBS
- NDR-Filter
- NDR-Spamming
- Spam und NDR
- Bounce-Filter
- Catchall vs. Check recipients
http://blogs.technet.com/dlemson/archive/2004/01/19/60388.aspx - http://msmvps.com/blogs/wstein/archive/2009/09/28/warum-braucht-man-eine-empf-228-ngerpr-252-fung.aspx