GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So sichern Sie Ihre Linux-E-Mail-Dienste mit SSL/TLS

Traditionell senden E-Mail-Dienste Daten auf ungeschützte Weise – egal, ob Sie E-Mails über SMTP senden oder über IMAP oder POP empfangen, die Standardeinstellungen sind Klartext. Da immer mehr Online-Anwendungen eine Verschlüsselung erzwingen und der allgemeine Konsens zum Schutz Ihrer Daten besteht, ist es am besten, Ihre E-Mail-Dienste mit einem SSL/TLS-Sicherheitszertifikat (Secure Sockets Layer/Transport Layer Security) zu sichern.

Weitere Linux-Ressourcen

  • Spickzettel für Linux-Befehle
  • Spickzettel für fortgeschrittene Linux-Befehle
  • Kostenloser Online-Kurs:RHEL Technical Overview
  • Spickzettel für Linux-Netzwerke
  • SELinux-Spickzettel
  • Spickzettel für allgemeine Linux-Befehle
  • Was sind Linux-Container?
  • Unsere neuesten Linux-Artikel

Zunächst ein kurzer Überblick über E-Mail-Dienste und -Protokolle. E-Mails werden über einen Dienst namens Simple Mail Transport Protocol (SMTP) unter Verwendung von TCP-Port 25 gesendet. Dieses Protokoll sendet E-Mails von Server zu Server, basierend auf DNS-Mail-Exchanger (MX)-Eintragssuchen. Sobald sich eine E-Mail auf dem E-Mail-Server befindet, wird sie über einen von zwei Diensten abgerufen:Internet Message Access Protocol (IMAP) über Port TCP 143 oder Post Office Protocol (POP3) über Port TCP 110. Alle diese Dienste verwenden standardmäßig Senden Sie Ihre E-Mail und Authentifizierung an/von diesen Diensten im Klartext – daher ist es sehr ungeschützt!

Um die E-Mail-Daten und die Authentifizierung zu schützen, haben diese Dienste eine Sicherheitsfunktion hinzugefügt, bei der sie ein SSL/TLS-Zertifikat verwenden können, um den Datenfluss und die Kommunikation mit Verschlüsselung zu verpacken. Wie die SSL/TLS-Verschlüsselung Informationen sichert, würde den Rahmen dieses Artikels sprengen, aber der Internetsicherheitsartikel von Bryant Son deckt sie sehr detailliert ab. Auf hoher Ebene ist die SSL/TLS-Verschlüsselung ein öffentlich/privater Verschlüsselungsalgorithmus.

Durch Hinzufügen dieser Sicherheitsfunktionen zu den Diensten können sie neue TCP-Ports abhören:

Dienst Standard-TCP-Port SSL/TLS-Port
SMTP 25 587
IMAP 143 993
POP3 110 995

SSL/TLS-Zertifikate generieren

SSL/TLS-Zertifikate können mit Tools wie OpenSSL kostenlos generiert oder zu verschiedenen Preisen von öffentlichen Zertifizierungsstellen (CAs) erworben werden. In der Vergangenheit war das Generieren eines eigenen Zertifikats einfach und hat in den meisten Fällen funktioniert, aber mit der steigenden Nachfrage nach besserer Sicherheit vertrauen die meisten E-Mail-Clients selbst generierten SSL/TLS-Zertifikaten nicht ohne manuelle Ausnahme.

Handelt es sich bei Ihrem Anwendungsfall um einen privaten oder zum Testen, dann macht das Sparen mit einem selbst erstellten Zertifikat Sinn. Wenn Sie dies jedoch einer großen Gruppe anbieten oder zahlende Kunden haben, sind Sie besser bedient, wenn Sie ein Zertifikat von einem öffentlichen, vertrauenswürdigen Unternehmen kaufen, das es verkauft.

In beiden Fällen besteht der Prozess zum Anfordern eines neuen Zertifikats darin, die OpenSSL-Tools auf Ihrem Linux-System zu verwenden, um eine Zertifikatsignierungsanforderung (CSR) zu erstellen:

$ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr

Dieser Befehl erstellt gleichzeitig eine neue CSR und einen privaten Schlüssel für den Dienst, den Sie sichern möchten. Der Prozess stellt Ihnen eine Reihe von Fragen im Zusammenhang mit dem Zertifikat:Standortdetails, vollständig qualifizierter Domänenname (FQDN) des Servers, E-Mail-Kontaktinformationen usw. Sobald Sie die Informationen ausgefüllt haben, werden der Schlüssel und die CSR generiert.

Wenn Sie Ihr eigenes Zertifikat generieren

Wenn Sie Ihr eigenes Zertifikat generieren möchten, müssen Sie Ihre eigene Stammzertifizierungsstelle erstellen, bevor Sie den obigen CSR-Befehl ausführen. Sie können Ihre eigene Root-CA erstellen mit:

$ openssl genrsa -des3 -out myCA.key 2048

Sie werden aufgefordert, eine Passphrase hinzuzufügen. Bitte geben Sie ihm eine sichere Passphrase und verlieren Sie sie nicht – dies ist Ihr privater Root-CA-Schlüssel, und wie der Name schon sagt, ist er die Wurzel allen Vertrauens in Ihre Zertifikate.

Generieren Sie als Nächstes das Root-CA-Zertifikat:

$ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

Nachdem Sie einige weitere Fragen beantwortet haben, generieren Sie ein Root-CA-Zertifikat mit einer Lebensdauer von fünf Jahren.

Mit der CSR-Datei aus den obigen Schritten können Sie ein neues Zertifikat anfordern, das von der soeben erstellten Stammzertifizierungsstelle generiert und signiert wird:

$ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256

Geben Sie die Passphrase Ihres privaten Root-CA-Schlüssels ein, um das Zertifikat zu erstellen und zu signieren.

Jetzt haben Sie die beiden Dateien, die Sie benötigen, um Ihre E-Mail-Dienste für erhöhte Sicherheit zu konfigurieren:die Datei mit dem privaten Schlüssel, mail.mydomain.key , und die öffentliche Zertifikatsdatei mail.mydomain.pem .

Wenn Sie ein Zertifikat kaufen

Wenn Sie ein Zertifikat von einem Anbieter kaufen, werden Sie aufgefordert, diese CSR in sein System hochzuladen, da sie als Eingabe zum Generieren des SSL/TLS-Zertifikats verwendet wird. Auf das Zertifikat kann als Datei zugegriffen werden (z. B. mail.mydomain.pem ). Viele SSL-Anbieter verlangen außerdem, dass Sie ein Zwischenzertifikat herunterladen. Wenn dies der Fall ist, müssen Sie die beiden Zertifikatsdateien zu einer zusammenführen, damit der E-Mail-Dienst beide zusammen verarbeiten kann. Sie können Ihr Zertifikat mit einem Zwischenzertifikat eines Drittanbieters kombinieren mit:

$ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem

Beachten Sie, dass die Dateierweiterung der Ausgabe .pem ist , was für Privacy-Enhanced Mail steht.

Jetzt haben Sie die beiden Dateien, die Sie benötigen, um Ihre E-Mail-Dienste für erhöhte Sicherheit zu konfigurieren:die Datei mit dem privaten Schlüssel, mail.mydomain.key , und die öffentliche kombinierte Zertifikatsdatei mail.mydomain.pem .

Erstelle ein sicheres Verzeichnis für deine Dateien

Unabhängig davon, ob Sie Ihren eigenen Schlüssel erstellt oder einen von einem Anbieter gekauft haben, erstellen Sie ein sicheres Root-Verzeichnis für die beiden oben erstellten Dateien. Ein Beispiel-Workflow zum Erstellen eines sicheren Spiels wäre:

$ mkdir /etc/pki/tls
$ chown root:root /etc/pki/tls
$ chmod 700 /etc/pki/tls

Stellen Sie sicher, dass Sie die Berechtigungen für Ihre Dateien festlegen, nachdem Sie sie in /etc/pki/tls kopiert haben mit:

$ chmod 600 /etc/pki/tls/*

Konfigurieren Sie Ihre SMTP- und IMAP-Dienste

Konfigurieren Sie als Nächstes sowohl den SMTP- als auch den IMAP-Dienst für die Verwendung der neuen Sicherheitszertifikate. Die in diesem Beispiel verwendeten Programme für SMTP und IMAP sind postfix und Taubenschlag .

Bearbeiten Sie / usw. / postfix/main.cf in Ihrem bevorzugten Texteditor. Fügen Sie die folgenden Zeilen hinzu:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.mydomain.pem
smtpd_tls_key_file = /etc/pki/tls/mail.mydomain.key

Passen Sie Ihre Konfiguration an

Mit den folgenden Optionen können Sie verschiedene Chiffren, Protokolle usw. deaktivieren/aktivieren:

smtpd_tls_eecdh_grade = strong
smtpd_tls_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_security_level=may
smtpd_tls_ciphers = high
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtpd_tls_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

Bearbeiten Sie /etc/dovecot/dovecot.conf indem Sie diese drei Zeilen hinzufügen:

ssl = required
ssl_cert = </etc/pki/tls/mail.mydomain.pem
ssl_key = </etc/pki/tls/mail.mydomain.key

Fügen Sie die folgenden Optionen hinzu, um verschiedene Chiffren, Protokolle und mehr zu deaktivieren/aktivieren (ich überlasse es Ihnen, diese zu verstehen und zu berücksichtigen):

ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SSLv2
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1
ssl_min_protocol = TLSv1.2

Kontext für SELinux festlegen

Wenn Ihre Linux-Distribution SELinux aktiviert hat, legen Sie den richtigen SELinux-Kontext für Ihre neuen Zertifikatsdateien fest.

Für Postfix SELinux:

$ chcon -u system_u -t cert_t mail.mydomain.*

Für Dovecot SELinux:

$ chcon -u system_u -t dovecot_cert_t mail.mydomain.*

Starten Sie beide Dienste neu und verbinden Sie sich mit Ihren aktualisierten E-Mail-Client-Konfigurationen. Einige E-Mail-Clients erkennen die neuen Portnummern automatisch; bei anderen müssen Sie sie aktualisieren.

Testen Sie Ihr Setup

Testen Sie schnell von der Befehlszeile aus mit openssl und der s_client Plugin:

$ openssl s_client -connect mail.mydomain.com:993
$ openssl s_client -starttls imap -connect mail.mydomain.com:143
$ openssl s_client -starttls smtp -connect mail.mydomain.com:587

Diese Testbefehle zeigen eine Fülle von Daten über die Verbindung, das Zertifikat, die Chiffre, die Sitzung und das Protokoll, das Sie verwenden. Dies ist nicht nur ein guter Weg, um zu überprüfen, ob die neue Konfiguration funktioniert, sondern auch, um zu bestätigen, dass Sie die entsprechenden Zertifikat- und Sicherheitseinstellungen verwenden, die Sie im Postfix definiert haben oder Taubenschlag Konfigurationsdateien.

Bleib sicher!


Linux
  1. So sichern Sie ein cPanel-fähiges Konto mit einem SSL-Zertifikat von Lets Encrypt

  2. So sichern Sie ein cPanel-fähiges Konto mit einem Sectigo-SSL-Zertifikat

  3. So verwalten Sie SSL/TLS-Zertifikate von Lets Encrypt mit certbot

  4. So verwalten Sie Systemd-Dienste mit Systemctl unter Linux

  5. So sichern Sie den Plesk-Hostnamen auf Port 8443 mit SSL-Zertifikat

Wie installiere ich das kostenlose SSL/TLS-Zertifikat von Let’s Encrypt auf Ihrer(n) Domain(s) mit cPanel?

So sichern Sie den TCP-Socket von Docker mit TLS

So überprüfen Sie das SSL-Ablaufdatum auf Plesk

So überwachen Sie Ihre Linux-Server mit Checkmk

So sichern Sie Nginx mit dem Let’s Encrypt SSL-Zertifikat

So sichern Sie eine Linux-Firewall mit IPTables-Regeln