Untersuchung Von Verschlüsselter E-Mail- Kommunikation Nach Spam
Total Page:16
File Type:pdf, Size:1020Kb
JOHANNES KEPLER UNIVERSITAT¨ LINZ JKU Technisch-Naturwissenschaftliche Fakult¨at Untersuchung von verschl¨usselterE-Mail- Kommunikation nach Spam und Viren MASTERARBEIT zur Erlangung des akademischen Grades Diplom-Ingenieur im Masterstudium Netzwerke und Sicherheit Eingereicht von: Michael Grundmann Bakk.techn., 0656189 Angefertigt am: Institut f¨urInformationsverarbeitung und Mikroprozessortechnik Beurteilung: O.Univ.-Prof. Dr. J¨org R. M¨uhlbacher Assoz.Prof. Mag. iur. Dipl.-Ing. Dr. Michael Sonntag Mitwirkung: Dipl.-Ing. Dr. Rudolf H¨ormanseder Linz, September 2012 Kurzfassung Ohne eine Überprüfung von E-Mail-Nachrichten nach unerwünschten (Spam) oder gefährlichen Inhalten (Viren, Phishing) ist das Betreiben oder Benutzen eines Mail-Dienstes nicht mehr vorstellbar. Da immer mehr und sensiblere Daten übertragen werden, wird auch die Verschlüs- selung des Mail-Transports immer wichtiger. Diese Verschlüsselung ist sicherheitstechnisch eine sinnvolle Entwicklung, die aber der benötigten Überprüfung der Mails entgegenstehen kann, wenn die Mail-Analyse beim »Betreten« oder »Verlassen« des eigenen Netzwerkes erfolgen soll. Diese Arbeit zeigt eine Möglichkeit, eine solche Inhaltsanalyse auch bei Verwendung von Verschlüsselung vorzunehmen. Dabei wird trotz TLS-Verschlüsselung, die zwischen den Mailservern zur Absicherung des SMTP-Transportweges aufgebaut wird, die Inhaltsanalyse mit Hilfe einer vertrauenswürdigen Zertifizierungsstelle ermöglicht. Hierbei werden bestehende SMTP-Proxy-Lösungen auf solche Funktionalität hin untersucht und als Konsequenz der Untersuchung wird eine Eigenentwicklung vorgestellt. Dazu werden die Eigenheiten von SMTP vorgestellt, soweit diese bei der Implementierung eines Proxy und der Verwendung von TLS relevant sind. Bei der Realisierung wurde darauf Wert gelegt, dass der Proxy die Sicherheit erhöht, aber dabei in keinem Fall ein nicht vorhandenes Sicherheitsniveau vortäuscht. Auch soll die Funktionalität und das Verhalten, besonders in Fehlerfällen, genau der Kommunikation ohne Proxy entsprechen. Diese Schwerpunkte ergeben sich aus der Anforderung des Projekts zur Integration des SMTPS-Proxy in die Firewall der Firma Underground_81. 1http://www.underground8.com Abstract Operating or using an electronic mail service is hardly imaginable anymore without checking the electronic mail messages for unwanted (spam) or dangerous (virus, phising) content. Due to the need to transmit more and sensitive data, encryption of the mail transport is becoming increasingly widespread. While this is a reasonable development, it might contradict the necessary checking of the mail messages, if this should happen when they “enter” or “leave” the own network. This thesis shows a way to enable such a checking, even when using TLS encryption. A trusted Certificate Authority (CA) allows for an analysis of the content despite the encryption used by mail servers to secure the SMTP transport. It includes an investigation into existing SMTP proxy solutions and whether they are able to support this functionality which leads to a self-developed solution. Features of the SMTP protocol which are relevant to the implementation of a proxy and the usage of TLS encryption will be presented. The implementation takes care that the proxy increases the security but in no case pretends a non-existing security level. The functionality and behavior, especially in error-cases, should match that of a communication without the proxy. These key aspects arise from the requirements of the project to integrate the SMTPS proxy into the firewall of the company Underground_8. Danksagung An dieser Stelle möchte ich meinen Dank dem Institut für Informationsverarbeitung und Mikroprozessortechnik aussprechen. Im Besonderen danke ich dem Institutsvorstand O.Univ.- Prof. Dr. Jörg R. Mühlbacher und Assoz.Prof. Mag. iur. Dipl.-Ing. Dr. Michael Sonntag für die Betreuung dieser Diplomarbeit. Ebenfalls möchte ich mich bei Dipl.-Ing. Dr. Rudolf Hörmanseder für die fachliche Unterstützung der Masterarbeit bedanken. Ohne die Unterstützung durch meine Kolleginnen und Kollegen bei der Firma Underground_8 wäre diese Arbeit nicht möglich gewesen. Im Speziellen gilt hier mein Dank Dipl.-Ing. Roman Aspetsberger, der mir sowohl technisch als auch inhaltlich eine große Hilfe war. iii Inhaltsverzeichnis 1 Einleitung 1 1.1 Ausgangslage . .1 1.2 Gliederung der Arbeit . .1 2 Das Simple Mail Transfer Protocol 3 2.1 Aufbau des Simple Mail Transfer Protocol . .3 2.1.1 Ablauf einer SMTP-Session . .4 2.1.2 Ende einer SMTP-Session . .5 2.1.3 Behandlung des end of mail-Indikators . .6 2.1.4 SMTP-Kommandos . .6 2.1.5 SMTP Return Codes . 10 2.1.6 Bespiele für den Ablauf von SMTP-Sitzungen . 12 2.1.7 Verlässlichkeit . 13 2.1.8 Mail-Routing . 14 2.1.9 Timeouts . 16 2.2 SMTP-Proxy . 17 2.3 Proxy-Unterstützung für (E-)SMTP-Funktionalität . 18 2.4 SMTP-Proxy vs. Relay . 18 2.4.1 Regelung des Zugriffs . 18 2.4.2 Verantwortlichkeit für Mail-Nachrichten . 19 2.4.3 Verwaltung einer Warteschlange . 19 2.5 STARTTLS-Erweiterung . 19 3 Vorhandene SMTP-Proxy-Lösungen 22 3.1 ProxSMTP/ClamSMTP . 22 3.2 Anti-Spam-SMTP-Proxy-Server (ASSP) . 22 3.3 Hermes . 23 3.4 BarricadeMX . 23 3.5 qpsmtpd . 24 3.6 Evaluation . 25 4 TLS-Proxy-Engine von Underground_8 27 4.1 Aufbau des TLS-Proxy . 27 4.1.1 Multithreading . 27 4.1.2 Anbindung der Content-Filter . 30 4.1.3 Verbindungsablauf . 30 iv Inhaltsverzeichnis v 4.1.4 Zertifikate . 33 4.1.5 Erweiterbarkeit für weitere Protokolle . 34 4.1.6 Der TPROXY-Patch . 35 4.2 Erweiterung des TLS-Proxy . 35 4.2.1 RFC-konforme Fehlermeldungen . 35 4.2.2 Gemeinsam genutzte Zertifizierungsstelle . 36 4.2.3 Relay . 36 4.2.4 Erzwingen von TLS . 36 4.2.5 Hinterlegen von Zertifikaten . 37 5 Entwurf 38 5.1 Aufgabenstellung . 38 5.2 Einsatzszenarien . 39 5.2.1 Interne Clients verwenden beliebige externe Mailserver . 39 5.2.2 Interne Mailserver empfangen Mails von externen Servern . 40 5.2.3 TLS-Sessions trotz fehlender TLS-Unterstützung am Server . 40 5.2.4 Zentraler SMTP-Relay-Server . 40 5.3 Design . 41 5.3.1 Struktur . 41 5.3.2 Zertifizierungsstelle . 41 5.3.3 Anbindung der Content-Filter . 41 5.3.4 TLS-Funktionalität . 43 5.3.5 Relay . 44 5.3.6 Black-/Whitelists . 44 5.3.7 Fehlerbehandlung . 44 5.3.8 Behandlung von Timeouts . 45 6 Implementierung 46 6.1 Entwicklungsumgebung . 46 6.2 Verwendete Bibliotheken . 46 6.3 Einbindung der SMTP-Funktionalität . 47 6.4 Verbindungsablauf im TLS-Proxy . 48 6.4.1 Verwaltung von Sockets und TLS-Session . 48 6.4.2 Threads . 49 6.4.3 Proxy-Objekte . 50 6.4.4 Connection Tracking . 51 6.5 Ausgelagerte Zertifizierungsstelle . 53 6.5.1 Kernfunktionalität der Zertifizierungsstelle . 54 6.5.2 Initialisierung . 55 6.5.3 Signalbehandlung . 56 6.5.4 Threadverwaltung in der Zertifizierungsstelle . 57 6.6 Blocking vs. Non-Blocking I/O . 58 6.6.1 Multiplexing-I/O mit select ........................ 59 6.6.2 OpenSSL und Non-Blocking-Sockets . 59 6.6.3 Verwendung im TLS-Proxy . 60 6.7 Protokollhandler für SMTP . 61 6.7.1 Struktur des SMTP-Handlers . 61 Inhaltsverzeichnis vi 6.7.2 SMTP-Data und SMTP-Dialog . 62 6.7.3 Multiplex-I/O . 62 6.7.4 Limits . 63 6.7.5 Behandlung von Verbindungsabbrüchen . 63 6.7.6 Behandlung von STARTTLS . 64 6.7.7 Relay . 67 6.7.8 Weiterleitung ohne Untersuchung . 68 6.7.9 Behandlung sonstiger Kommandos . 69 6.8 Hinterlegung von Zertifikaten . 70 6.8.1 Verwaltung der hinterlegten Zertifikate . 70 6.8.2 Aufbau einer Zertifikatsdatei . 71 6.8.3 Verwendung . 72 7 Konfigurationsoptionen 75 7.1 Allgemeine Optionen . 75 7.2 SSL/TLS-Optionen . 78 7.3 SMTP Optionen . 81 7.4 Optionen für die Zertifizierungsstelle . 83 8 Tests 85 8.1 Testwerkzeuge . 85 8.1.1 swaks . 85 8.1.2 OpenSSL s_client . 85 8.2 Testumgebung . 86 8.3 Non-TLS-Tests . 87 8.3.1 Grundlegender Test des Mail-Versands . ..