HowTo: ispCP inkl. Apache2, Courier und Postfix per SSL sichern.

Um die Weboberfläche von ispCP sowie den Mailverkehr über den Courier Mailserver und Postfix vor dem Abhören Dritter zu schützen kann man diese Verbindungen per SSL sichern, sodass eine Sichere und verschlüsselte Verbindung aufgebaut werden kann.

Zuerst installieren wir ein paar Pakete.

apt-get install courier-pop-ssl amavisd-new spamassassin

Diese Pakete vervollständigen unsere ispCP Installation und werden meist beim Installationsvorgang nicht mit installiert.

apt-get install openssl

Installiert OpenSSL (wenn nicht schon installiert)

apt-get install courier-imap-ssl courier-pop-ssl

Wird nachher benötigt um den Mailserver zu sichern.

Nun sichern wir den apache2 Webserver um uns sicher ins ispCP einloggen zu können.

mkdir /etc/apache2/ssl

openssl req $@ -new -x509 -days 365 -nodes -out /etc/apache2/ssl/apache.crt -keyout /etc/apache2/ssl/apache.key

Es werden ein paar Fragen gestellt, wichtig ist, dass das Land (DE) richtig angegeben wird. Bei Common Name den Hostname des Servers angeben.

Danach aktivieren wir mod_ssl

a2enmod ssl

Nun benötigen wir einen virtuellen Host für ispCP Omega, dafür kopieren wir uns die mitgelieferte 00_master.conf nach 01_ssl_master.conf

cp /etc/apache2/sites-available/00_master.conf /etc/apache2/sites-available/01_ssl_master.conf

Und öffnen diese dann mit einem Texteditor. (In diesem Fall nano)

nano /etc/apache2/sites-available/01_ssl_master.conf

hier ändern wir dann in der 01_ssl_master.conf die folgenden Zeilen:

#
# SSL Master Begin
#
<VirtualHost xxx.xxx.xxx.xxx:443>
#
# SSL Start
#
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
#
# SSL End
#
ServerAdmin admin@yourdomain.com
DocumentRoot /var/www/ispcp/gui
ServerName yourdomain.com
ErrorLog /var/log/apache2/users/ssl.yourdomain.com-error.log
TransferLog /var/log/apache2/users/ssl.yourdomain.comaccess.log
CustomLog /var/log/apache2/ssl.yourdomain.com-traf.log traff
CustomLog /var/log/apache2/ssl.yourdomain.com-combined.log
combined
#
# ... below here, nothing has to be changed
#
</VirtualHost>
#
# SSL Master End
#


Und enabelen wir diesen virtuellen Host:

a2ensite 01_ssl_master.conf

Jetzt noch den Apache2 Webserver neu starten:

/etc/init.d/apache2 restart

Nun solltet Ihr den ispCP login per https://domain.de aufrufen können.

Jetzt ist der Courier Mailserver an der Reihe.

mkdir /etc/courier/ssl
cd /etc/courier/ssl

Zuerst erstellen wir wieder das Zertifikat und den Key

openssl req $@ -new -x509 -days 365 -nodes -out /etc/courier/ssl/courier.crt -keyout /etc/courier/ssl/courier.key

Da der Courier Mailserver Zertifikat und Key in eienr Datei benötigt fügen wir diese zusammen

cat /etc/courier/ssl/courier.key /etc/courier/ssl/courier.crt >> /etc/courier/imapd.pem

Nun öffnen wir die Config /etc/courier/pop3d-ssl mit einem Texteditor

nano /etc/courier/pop3d-ssl

Hier fügen wir nun folgende Zeile ein:

TLS_CERTFILE=/etc/courier/imapd.pem

Nun öffnen wir die /etc/courier/imapd-ssl

/etc/courier/imapd-ssl

Und fügen dort ebenfalls folgende Zeile ein:

TLS_CERTFILE=/etc/courier/imapd.pem

Nun stellen wir noch die Zugriffsrechte sicher

[/sourcecode]chmod 600 /etc/courier/imapd.pem
chown root.root /etc/courier/imapd.pem


Und starten die Dienste neu

/etc/init.d/courier-imap-ssl restart
/etc/init.d/courier-pop3-ssl restart[/sourcecode]

Am Ende sichern wir jetzt noch Postfix, damit alle wichtigen Bereiche geschützt sind.

mkdir /etc/postfix/ssl
cd /etc/postfix/ssl

Wir erstellen wieder das Zertifikat und den Key

openssl req $@ -new -x509 -days 365 -nodes -out /etc/postfix/ssl/postfix.crt -keyout /etc/postfix/ssl/postfix.key

Editieren mit einem Editor die /etc/postfix/main.cf

nano /etc/postfix/main.cf

Hier fügen wir folgende Zeilen ein:

# tls config
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/postfix.key
smtpd_tls_cert_file = /etc/postfix/ssl/postfix.crt
smtpd_tls_loglevel = 1
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
tls_random_prng_update_period = 3600s
myhostname = example.com

Speichern und Postfix neu starten

/etc/init.d/postfix restart

Nun sind die wichtigsten Bereiche per SSL geschützt und der Mailverkehr sowie der Login im Web Fronted können verschlüsselt ablaufen.