Dies ist eine alte Version des Dokuments!


Verschlüsselung von eMails mit Hilfe von Zeyple unter CentOS7

Verschlüsselung vertraulicher Daten dürfte in sensiblen Bereichen kaum mehr weg zu diskutieren sein. Sehr oft werden eMails genutzt, um einen Systemadministrator über Stati, (Fehl-)Funktionen und aussergewöhnliche Situationen zu informieren.

Besser als der Programm-Author Cédric Félizard des Encyption-Daemons ZEYPLE kann man es nicht besser beschreiben:


Why should I care? If you are a sysadmin who receives emails from various monitoring tools like Logwatch, Monit, Fail2ban, Smartd, Cron, whatever - it goes without saying that those emails contain lots of information about your servers. Information that may be intercepted by some malicious hacker sniffing SMTP traffic, your email provider, <insert your (paranoid) reason here>… Why would you take that risk - encrypt them all!

In unserem Anwendungsbeispiel wollen wir alle eMails, die unsere Monitoring-Umgebeung Icinga 2 verschickt automatisch verschlüsseln, sofern die Nachrichten den geschützen Bereich der eigenen Infrastruktur verlässt.

Die wesentlichen Kernaufgaben von Zeyple sind:

  1. Annahme der (unverschlüsselten) Nachrichten vom MTA1) (Postfix)
  2. Verschlüsseln der Nachrichten mit Hilfe des öffentlichen PGP Keys des Systemadministrators.
  3. Übergabe der (verschlüsselten) eMail an den MTA (Postfix)

Nachfolgende Übersichsskizze zeigt diese Verarbeitungsschritte.

<uml width=900 title=„Verarbeitungsschritte einer eMail“> skinparam defaultFontName Courier

state „/usr/bin/sendmail“ as sendmail

  sendmail : Script oder Daemon generiert 
  sendmail : eMail und verschickt diese
  sendmail : via /usr/bin/sendmail

state „Postfix Mail Transfer Agent - Server“ as mhs1 {

  state "Postfix Daemon" as mta1
      mta1 : Annahme der eMail durch das
      mta1 : Postfix-Modul POSTDROP
      mta1 : und Weiterleitung an den
      mta1 : zeyple-Encryption-Daemon
      
  state "zeyple (Mail Encryption Gateway/Daemon)" as zeyple
      zeyple : Annahme der unverschlüsselten Admin-Mails vom Postfix-Daemen (queue);
      zeyple : Verschlüsseln der Nachrichtenen mit dem PGP-Key des Empfängers und anschließend
      zeyple : weiterleiten der verschlüsselten Mail an den Postfix SMTP-Daemon Port 10026
  state "Postfix Port 10026" as mta2
      mta2 : Entgegennahme der verschlüsselten eMail
      mta2 : vom zyple Daemon und weiterleiten an den 
      mta2 : zuständigen Mailserver (next-hop)

}

sendmail --> mta1
mta1 -right-> zeyple
zeyple -right-> mta2
mta2 --> [*]
note left

From: icinga <icinga@nausch.org To: django@mailserver.guru Subject: icinga 2 Service-Notification Date: Friday 17:25:30

Content-Type: multipart/encrypted; boundary=„=_KVUguhHg3_izbRdYCjHHIA2“; protocol=„application/pgp-encrypted“ Content-Description: Mit PGP =?utf-8?b?dW50ZXJ6ZWljaG5ldGUvdmVyc2NobMO8c3NlbHRl?= Daten MIME-Version: 1.0

This message is in MIME format and has been PGP signed and encrypted.

–=_KVUguhHg3_izbRdYCjHHIA2 Content-Type: application/pgp-encrypted

Version: 1

–=_KVUguhHg3_izbRdYCjHHIA2 Content-Type: application/octet-stream Content-Disposition: inline

—–BEGIN PGP MESSAGE—– Version: GnuPG v2.0.14 (GNU/Linux)

hQIMA7qTOzFT6dtKAQ/+LGrN28ikLsfChNJ4A+gko5Pxr6OEItdcORT3FPRxbhXg XogSXhi57xIgMF2dY3BlY02JIrJ/3ysnIZOwhy5HstV1kz4M/AEOOCLOxq4NCjAM 4NpQovyw5Yd9OOxGfP49+qNn1MIgWwbOsIPf91qT1RAzdWMwIg25Rkdn63OSMTsE fLquJLPdbrbVZQfb2oTzThwmWZ9LGHB54zQpOSG2Nehq4UYHdCed/ALO8oYHdWbB FwqkZGr9SSUVLQz7VkBUnHfcuMHZ22zliFdsbjhp84Q9ekZqqOBATK99BeF+kZBd FCtKLtpBOlJ03zOz3J7vxgcpVpScnbn9kXJFg3g05Y/3bAqwr1dTlnBI9suP6sEL mul0lY1zMM6TRSWkezuR8y26kNqOUw2y5rOKCq8fjPoqY9SJBSEKiPPukQsZ9W8u WRTxrEQqixGedABrZfKq41uQv+gQyF9iYJpiBSPT6Sws/nK3L4nY8OI01ph7DBPZ 9tUowUkaUao/b1z2FyGm8zDY6AqQG2TfMGkx1uWPkRERmg/1gxCS2eDeghaETR8S Wf+CSD9u/1GGu6aXHO+s/H6iG/DoJ3Fbp6xLbu4nrKeLKPWdJ+uwYXtGguA65bIv s/aZ3e3ZtDtTG5JG0x7ckPGlbq2FOrJNgBemXI5jtoNkUNRqntsLYZ6aF37aNFmF AgwD8mpRdV5KKq0BEACcRFnmcNhfGoM1oql5WWLkJNcaixELxJ/ifILSR5PjVQ/f GySlbYCymO6B3stRzajuBjCVC0+eFluYAFbpVRXlA4jUN7YE41P5JGWf4S6vpOZE /CmFr1WViHj5u3/Yx23APvsb0G/namf9b1NDe+A5kVQjzR5MyGm+btGJ9XC58mb3 jcekTCBroHISAhMec0IYh060a8T4ojlxprp6cpRkJ8ofnVBGBi6w8pan2W9FdNhD 9MxE/gE1zmRikA85j9RfqfrC9T716CEfj06Fjq1VcPZ9Zz+Xbs5htIm5bzQfQoI9 ML8pMGUcjJAlE0w68jnhvznKN1WS82C+s/42q9SYCcVHUVwg5HyDIdVNtl8Bbn+H OpP8pPrV0gaJMNFZB2lHX6p7btFcbYL3wWXT2Rp6QBYSBZx8AYAoERSRNbi9DKSB AtgU0YkAjYnuZcQ3+VasXmHayhayR1l1b22NRHxwfbf8Ls/3zvO29dVsrbJ/vDP3 kV6DcAo7wZmtpazyqKmdU1H8MQ0QOW5UmjWF62A10Qjrg7I2Y3K6k/R3/QiW5+oo FreQ9cWsAMI0GiUvCZMi29wI4GqWvkdL1I1PZxrvGfmz6lL1hK26PzEoWgUqeSdj ws1o9O04IhZkyCeH8sPSoUylIEei/RYgXVp3rmOFlMw/yLsbKwzk5qtevF5RBDgp kB12G4rGASScJYWzCUsuhonj/98YNi9HCrBsIBoXig== =Ydeu —–END PGP MESSAGE—–

–=_KVUguhHg3_izbRdYCjHHIA2–

  end note

note right of sendmail From: icinga <icinga@nausch.org To: django@mailserver.guru Subject: icinga 2 Service-Notification Date: Friday 17:25:30

* nausch.org Icinga2 Service Monitoring *

> alert for System_Users is WARNING! <

When? Service? System_Users Host? vml000017.dmz.nausch.org Address? 10.0.0.17 Info? USERS WARNING - 4 users currently logged in

Comment by :

Have a look: https://orwell.nausch.org/icingaweb2/monitoring/service/show?host=vml000017.dmz.nausch.org&amp;service=System_Users

end note

</uml>

Bevor wir uns nun dieses Projekt auf unseren Rechner clonen, wechseln wir in das Prokekt-Verzeichnis unseres Servers.

 # cd /usr/local/src

Nun clonen wir das Projekt direkt in das Verzeichnis zeyple.

 # git clone https://github.com/infertux/zeyple.git
Cloning into 'zeyple'...
remote: Counting objects: 591, done.
remote: Total 591 (delta 0), reused 0 (delta 0), pack-reused 591
Receiving objects: 100% (591/591), 113.99 KiB | 0 bytes/s, done.
Resolving deltas: 100% (315/315), done.

Möchten wir unsere lokale Installation updaten, so gehen wir in folgenden Schritten vor. Als erstes wechseln wir in das Verzeichnis zeyple.

 # cd /usr/local/src/zeyple

Anschließen führen wir einen pull gegen das Projekt bei GitHub durch.

 # git pull

Als erstes holen wir uns nun das

Zum Verschlüsseln der Nachrichten benötigen wir natürlich noch mind. folgende zwei Pakete pygpgme und gnupg2. Falls sich diese beiden Pakete noch nicht auf unserem Server befinden, installieren wir diese nun einfach mit Hilfe von yum.

 # yum install pygpgme gnupg2 -y

Zum Speichern der benötigten PGP-Schlüssel benötigen wir einen eigenen User zeyple, den wir uns nun anlegen.

 # adduser --system --no-create-home --shell /sbin/nologin zeyple

Zum Ablegen benötigen wir nun noch ein Verzeichnis, welches wir wie folgt anlegen.

 # mkdir -p /var/lib/zeyple/keys

Nur der User zeyple soll Zugriff auf das Schlüsselmaterial bekommen. Wir passen also die Verzeichnisrechte entsprechend an und weisen das Verzeichnis dem User zeyple zu.

 # chmod 700 /var/lib/zeyple/keys
 # chown zeyple: /var/lib/zeyple/keys

Nun können wir die öffentlichen PGP-Schlüssel der potentiellen Empfänger importieren. Haben wir den PGP public key in einer Datei lokal auf dem Server benutzen wir folgenden Aufruf.

 # sudo -u zeyple gpg --homedir /var/lib/zeyple/keys --import /tmp/g33k@mailserver.guru.key.asc
gpg: keyring `/var/lib/zeyple/keys/secring.gpg' created
gpg: keyring `/var/lib/zeyple/keys/pubring.gpg' created
gpg: /var/lib/zeyple/keys/trustdb.gpg: trustdb created
gpg: key 637EE91F: public key "Thomas Gelf <thomas@gelf.net>" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

Alternativ können wir den Schlüssel auch von einem öffentlichen PGP-Keyserver laden.

 # sudo -u zeyple gpg --homedir /var/lib/zeyple/keys --keyserver hkp://keys.gnupg.net --search thomas@gelf.net
gpg: searching for "thomas@gelf.net" from hkp server keys.gnupg.net
(1)	Thomas Gelf <thomas@gelf.net>
	  1024 bit DSA key 637EE91F, created: 2008-10-19
Keys 1-1 of 1 for "thomas@gelf.net".  Enter number(s), N)ext, or Q)uit > 1
gpg: requesting key 637EE91F from hkp server keys.gnupg.net
gpg: /var/lib/zeyple/keys/trustdb.gpg: trustdb created
gpg: key 637EE91F: public key "Thomas Gelf <thomas@gelf.net>" imported
gpg: Total number processed: 1
gpg:               imported: 1

Damit nun der zeyple encryption deamon weiß, wo er sein Schlüsselmaterial findet und wie dieser mit dem SMTP-Relayhost kommunizieren soll, müssen wir ihm ein paar Informationen bereitstellen. Hierzu wird die Konfigurationsdatei /tec/zeyple.conf verwendet. Wir kopieren uns daher die Beispielskonfigurationsdatei aus dem GitHUB-Projektverzeichnis nach /etc.

 # cp /usr/local/src/zeyple/zeyple/zeyple.conf.example /etc/zeyple.conf

Änderungen an dieser datei sind in aller Regel nicht nötig.

/etc/zeyple.conf
[zeyple]
log_file = /var/log/zeyple.log
 
[gpg]
home = /var/lib/zeyple/keys
 
[relay]
host = localhost
port = 10026

1)
Mail Transfer Agent
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/mail_c7/zeyple.1470728687.txt.gz
  • Zuletzt geändert: 09.08.2016 07:44.
  • von django