ISPConfig Panel für Mail und FTP mit Lets Encrypt Zertifikat absichern

Installiert ist ISPConfig in Version 3.x. Ziel ist es das Control Panel, FTP (PureFTPd), Monit und Mail (Dovecot oder Courier) mittels SSL Lets Encrypt Zertifikat abzusichern.

Das Panel von ISPConfig wird nach einer Grundinstallation über http://domain.tld:8080 aufgerufen. Nachfolgend wird der FQDN server1.domain.tld als Beispiel verwendet.

Wird statt Apache2 Webserver ein nginx verwendet, kann das Wort nachfolgend einfach getauscht werden. Wird der Mailserver Courier statt Dovecot verwendet, kann entsprechender Schritt ausgelassen werden.

Vorbereitungen

Zuvor sollte der Server soweit konfiguriert sein, dass er im DNS per FQDN abgefragt werden kann, also auch SSL mit Lets Encrypt für Webseiten funktioniert.

  • per SSH am Server anmelden
  • per SSH auf dem Server den FQDN abfragen: # hostname -f
  • sollte während der Installation von ISPConfig kein SSL für den Port 8080 (eigenes Zertifikat) konfiguriert worden sein, muss dies zunächst mittels: # ispconfig_update.sh erfolgen
  • danach prüfen ob das Panel nun mittels https://fqdn:8080 mit dem Self-Sign-Cert aufrufbar ist, der Browser fragt in der Regel nach einer erneuten Bestätigung bzw. nach dem hinzufügen einer Ausnahme

Erstellen einer Webseite für den Server

Als nächstes wird eine neue Webseite im Control Panel mit dem FQDN des Servers erstellt:

  • am Panel als Administrator anmelden
  • im Menü auf Webseiten klicken und eine neue Webseite erstellen, ggf. zuvor über das Menü die Domain mit dem FQDN hinzufügen
  • als Optionen muss lediglich Lets Encrypt SSL aktiviert werden
  • nun das Panel erneut aufrufen, wobei nun das Zertifikat von Lets Encrypt verwendet werden sollte
  • hier nun auch nochmal die eben erstellte Webseite aufrufen und den “Document Root” Pfad merken

Bis hier sollte alles wie oben beschriebene funktionieren. Die Serverseite ist per Lets Encrypt Zertifikat erreichbar, das Panel über den FQDN mit dem Port 8080 und selbst Sign Cert aufrufbar. Nun kann es mit foglenden Schritten weiter gehen.

ISPConfig – Control Panel mit Lets Encrypt Zertifikat

Als nächstes wird das selbstsignierte Zertifikat gegen das von Lets Encrypt für das Panel getauscht. Als Symlink wird der Pfad der Webseite verwendet, kann aber auch der Pfad für das Letsencrypt Live Verzeichnis sein.. Dafür wie folgt vorgehen:

  • SSL Verzeichnis vom Panel aufrufen:
    • # cd /usr/local/ispconfig/interface/ssl/
  • Backup des Self-Sign Cert
    • # mv ispserver.crt ispserver.crt-$(date +"%y%m%d%H%M%S").bak
    • # mv ispserver.key ispserver.key-$(date +"%y%m%d%H%M%S").bak
    • # mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
  • Symlink zum Lets Encrypt Zertifikat des Webverzeichnisses setzen (bessere Option)
    • # ln -sf <Document_Root_der_obigen_Weseite>/ssl/$(hostname -f).crt ispserver.crt
    • # ln -sf <Document_Root_der_obigen_Weseite>/ssl/$(hostname -f).key ispserver.key
  • Symlink zum Lets Encrypt Zertifikat im Live-Folder erstellen (Achtung Ordner und Dateien werden von Lets Encrypt verwaltet und können sich ändern, daher lieber den Pfad vom WWW setzen, da der immer richtig ist):
    • # ln -sf /etc/letsencrypt/live/$(hostname -f)/fullchain.pem ispserver.crt
    • # ln -sf /etc/letsencrypt/live/$(hostname -f)/privkey.pem ispserver.key
  • Key und CRT Datei zur PEM kombinieren:
    • # cat ispserver.{key,crt} > ispserver.pem
  • Anpassen der Dateimodusbits
    • # chmod 600 ispserver.pem
  • Neustart des Webservers Apache2
    • # /etc/init.d/apache2 reload
      [ ok ] Reloading apache2 configuration (via systemctl): apache2.service.

Damit ist nun das Panel mittels Lets Encrypt Zertifikat unter https://fqdn:8080 erreichbar. Achtung die automatische Aktualisierung des Zertifikats wird bis hier nicht gemacht, dazu eine Lösung weiter unten in der Anleitung.

Lets Encrypt SSL Zertifikat für Postfix

Damit auch Postfix mittels Lets Encrypt Zertifikat versorgt wird, sind folgende Änderungen durchzuführen:

  • # cd /etc/postfix/
  • # mv smtpd.cert smtpd.cert-$(date +"%y%m%d%H%M%S").bak
  • # mv smtpd.key smtpd.key-$(date +"%y%m%d%H%M%S").bak
  • # ln -s /usr/local/ispconfig/interface/ssl/ispserver.crt smtpd.cert
  • # ln -s /usr/local/ispconfig/interface/ssl/ispserver.key smtpd.key
  • # service postfix restart
  • # service dovecot restart

Log prüfen: # tail /var/log/daemon.log

Lets Encrypt SSL Zertifikat für Dovecot Mailserver

Dovecot sollte nicht zusammen mit Courier laufen. Zuvor prüfen ob SSL bereits eingerichtet wurde:# nano /etc/dovecot/dovecot.conf

  • […]
  • ssl_cert = </etc/postfix/smtpd.cert
  • ssl_key = </etc/postfix/smtpd.key
  • […]

Sine diese Einträge vorhanden, so lassen, ansonsten hinzufügen.

Lets Encrypt SSL Zertifikat für Courier Mailserver

Courier sollte nicht zusammen mit Dovecot laufen.

  • # cd /etc/courier/
  • # mv imapd.pem imapd.pem-$(date +"%y%m%d%H%M%S").bak
  • # mv pop3d.pem pop3d.pem-$(date +"%y%m%d%H%M%S").bak
  • # ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem imapd.pem
  • # ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pop3d.pem
  • # service courier-imap-ssl stop
  • # service courier-imap-ssl start
  • # service courier-pop-ssl stop
  • # service courier-pop-ssl start

Lets Encrypt SSL Zertifikat für pure-FTPd

  • # cd /etc/ssl/private/
  • # mv pure-ftpd.pem pure-ftpd.pem-$(date +"%y%m%d%H%M%S").bak
  • # ln -s /usr/local/ispconfig/interface/ssl/ispserver.pem pure-ftpd.pem
  • # chmod 600 pure-ftpd.pem
  • # service pure-ftpd-mysql restart

Lets Encrypt SSL Zertifikat für monit

Sofern monit verwendet wird, folgendes anpassen:

  • # nano /etc/monit/monitrc
  • nun einen Symlink auf die selbe Datei wie bei pure-ftpd setzen:
    [...]
    set httpd port 2812 and
    SSL ENABLE
    PEMFILE /etc/ssl/private/pure-ftpd.pem
    allow admin:'secretpassword'
    [...]

ISPConfig – Control Panel mit automatisch erneuertem Lets Encrypt Zertifikat

Diese Lösung wird benötigt, wenn man die oben erstellte ispserver.pem automatisch erneuert haben möchte, wenn auch das Lets Encrypt Zertifikat automatisch erneuert wird. Ansonsten muss man, vor bzw. nach Erneuerung, die ispserver.pem von Hand erstellen. Damit dies funktioniert wird das Tool incron verwendet. incron ist ein Daemon der das Dateisystem auf bestimmte Events beobachtet und daraufhin Befehle ausführen kann.

  • installieren von incron unter Debian: # apt-get install incron
  • Script zur Überwachung und Ausführung der Ernerung der ispserver.pem hinzufügen:
    # nano /etc/init.d/ispconfig_letsencrypt_update_pem.sh

#!/bin/sh
### BEGIN INIT INFO
# Provides: Lets Encrypt Auto Updater for ispserver.pem 
# Required-Start: $local_fs $network
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Lets Encrypt Auto Updater for ispserver.pem 
# Description: Update ispserver.pem automatically after ISPC Lets Encrypt SSL Certs are renewed.
### END INIT INF
cd /usr/local/ispconfig/interface/ssl/
mv ispserver.pem ispserver.pem-$(date +"%y%m%d%H%M%S").bak
cat ispserver.{key,crt} > ispserver.pem
chmod 600 ispserver.pem
chmod 600 /etc/ssl/private/pure-ftpd.pem
service pure-ftpd-mysql restart
service monit restart
service postfix restart
service dovecot restart
service apache2 restart

Wer kein Monit verwendet, entfert es. Wer Statt Apache2 nginx verwendet tauscht die Wörter aus. Dieses Script ist für einen Stand-Alone ISPConfig Server. Für Multi-Server muss das Script angepasst werden und per scp Befehl die Datei kopiert werden.

Nun muss das Script ausführbar gemacht werden und der root Benutzer erlaubt werden incrontab auszuführen:

  • chmod +x /etc/init.d/ispconfig_letsencrypt_update_pem.sh
  • echo "root" >> /etc/incron.allow
  • incrontab -e
  • hier das Script hinzufügen:
    /etc/letsencrypt/archive/$(hostname -f)/ IN_MODIFY ./etc/init.d/ispconfig_letsencrypt_update_pem.sh

Bei mir wurde dieser Teil -f)/ nicht korrekt hinzugefügt. Ich habe die Datei dann direkt geöffnet und angepasst. Kontrolle über: # incrontab -l oder # cat /var/spool/incron/root

Abschließend den Webserver neustarten: # service apache2 restart

Thats it – Have Funn …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.