Skip to content

Übersicht wichtiger und praktischer Postfix Befehle und Sicherheitseinstellungen

Zum Wochenende eine kleine Übersicht praktischer Postfix Befehle, damit es mit dem eigenen Mailserver oder Mailrelay besser klappt.

postfix

Übersicht Postfix Befehle

Installierte Version anzeigen

sudo postconf mail_version

Eigene Konfiguration anzeigen

sudo postconf -n

Standard Konfiguration anzeigen

sudo postconf -d

Mailwarteschlage anzeigen

sudo mailq

Anzahl der Mails in der Warteschlange anzeigen

sudo mailq | tail -1

Mailqueue abarbeiten

sudo postqueue -f

Einzelne Mails löschen

sudo postsuper -d QueueID

Alle Mails aus der Queue löschen (Vorsicht walten lassen)

sudo postsuper -d ALL

Mails in tabellenform anzeigen

sudo qshape

Einzelne Mail ansehen

sudo postcat -q QueueID

Bestimmte Mails einer Adresse löschen

postqueue -p|grep 'email@beispiel.de'|awk {'print $1'} | grep -v "(host"|tr -d '*!'|postsuper -d -

Postfix Logs ansehen (Ubuntu)

sudo tailf /var/log/mail.log

Mail Queue in Textdatei umleiten

sudo mailq > /tmp/mailtext.txt

Postfix Konfiguration neu laden

sudo systemctl reload postfix

Mails auswerten und Statistiken erstellen

Hier Verweise ich auf den Pflogsumm Artikel, welcher immer noch Gültigkeit hat.

sudo apt install pflogsumm 

qshape

Sicherheit und Härtung der Postfix Einstellungen

Damit die Konfiguration passt, hier eine Übersicht sinnvoller Einträge für die main.cf.

#SMTP daemon absichern - Mailempfang
 smtpd_tls_security_level = may
 smtpd_tls_mandatory_ciphers = high
 smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
 smtpd_tls_protocols = !SSLv2 !SSLv3
 smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC3-SHA, KRB5-DES, CBC3-SHA
#SMTP absichern - Mailsender
 smtp_tls_protocols = !SSLv2, !SSLv3
 smtp_tls_security_level = may
 smtp_tls_mandatory_ciphers = high
 smtp_tls_mandatory_protocols = !SSLv2 !SSLv3
#Einstellungen für relaying
  smtp_sasl_auth_enable = yes
  smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
  smtp_sasl_security_options = noanonymous
#Verify wird nicht benötigt
  disable_vrfy_command=yes
#Interface auf lokal schalten
  inet_interfaces=127.0.0.1
#Ipv6 abschalten wenn nicht benötigt
  inet_protocols = ipv4
#Serverbegrüßung einschalten
  smtpd_helo_required=yes


 Logjam in Postfix verhindern

Um die Logjam Lücke zu schließen, muss der Diffie Hellmann Key Exchange neu konfiguriert werden. Dazu wird folgendes generiert.

sudo openssl dhparam -out /etc/postfix/dhparams.pem 2048

Danach muss der Parameter nur noch in die main.cf eingetragen werden.

smtpd_tls_dh1024_param_file = /etc/postfix/dhparams.pem

Sind alle Einstellungen gesetzt und die Konfiguration neu geladen kann getestet werden.

posttls-finger

Verschlüsselte Verbindung eines Postfix Servers testen

Um eine Verbindung zu überprüfen bietet sich das Tool posttls-finger an, damit erspart sich ein Admin eventuell das Anpassen von Logeinstellungen oder die Verwendung von Telnet.

sudo posttls-finger smtp.testserver.de

 

LAMP Server mit SSL - Linux, Apache, MySQL, PHP unter Ubuntu 14.04 in 10min installieren

Im Prinzip hatte ich bereits ein fast komplette Anleitung für einen LAMP Server unter Ubuntu verfasst. Zu finden ist sie im Artikel "Wordpress Installation in 5 Minuten".

Dennoch möchte ich heute eine etwas ausführlichere Anleitung niederschreiben, die als Grundlage für weitere Installationen dienen kann.

1. Apache Server installieren

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install apache2

Der Server startet direkt nach der Installation und ist unter http://localhost zu erreichen.

lamp-apache2-server

Weitere Konfigurationen wie bzw. das Härten sind in anderen Anleitungen zu finden. Siehe beispielsweise den Artikel "Hardening Apache".

Hier geht es nun mit dem MySQL Server weiter.

2. MySQL Server installieren

sudo apt-get install mysql-server

Das verlangte root Passwort vergeben und zwingend merken.

sudo apt-get install libapache2-mod-auth-mysql php5-mysql

lamp-mysql-server

Um die Installation abzurunden und eine erste Härtung vorzunehmen, sollte folgendes Skript ausgeführt werden.

sudo /usr/bin/mysql_secure_installation

Remove anonymous users? [Y/n] y ... Success!

Disallow root login remotely? [Y/n] y ... Success!

Remove test database and access to it? [Y/n] y

- Dropping test database...

- Removing privileges on test database... ... Success!

Reload privilege tables now? [Y/n] y ... Success!

Falls keine Testdatenbank existiert, kann diese auch nicht gelöscht werden, es erscheint die Meldung "Failed Database doesn't exists".

Der MySQL Server ist nun fertig eingerichtet.

Mit dem Befehl "mysql -u root -p" könnt ihr euch auf die SQL Konsole einloggen, um Datenbanken anzulegen.

Sollte eine andere IP als 127.0.0.1 verwendet werden, so muss "sudo nano /etc/mysql/my.cnf" editiert werden:

bind-address = 127.0.0.1

3. PHP5 installieren

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

Neben dem bereits weiter oben installierten php5-mysql Paket gibt es weitere Pakete, die installiert werden können, je nach Anforderung.

Eine Liste der bereits installierten Module kann mit Hilfe einer "info.php" abgerufen werden. Hierzu ist noch etwas Konfigurationsaufwand nötig:

sudo nano /var/www/html/info.php

lamp-php-info

Danach kann unter http://localhost/info.php eine Übersicht der Installation abgerufen werden.

Weitere Module lassen sich mit "apt-cache search php5" auflisten und mit "sudo apt-get install modulname" nachinstallieren.

lamp-php5

Abschluss

Die Installation des LAMP Servers ist nun abgeschlossen. Jedoch ist es sinnvoll den Server weiter zu härten.

Es empfiehlt sich ein Umstellung auf HTTPS, sowie das Abschalten unsicherer Protokolle wie SSL 3.0.

Die Umstellung auf HTTPS werde ich noch einmal kurz erläutern.

4. LAMP Server auf HTTPS umstellen

Zunächst muss das SSL Modul installiert werden.

sudo a2enmod ssl

sudo service apache2 restart

Danach sollte ein Zertifikat erzeugt werden. Um die etwas kryptische Zeile zu verstehen, gebe ich eine eine kurze Erklärung zu dem Befehl.

  • Es wird ein selbstsigniertes Zertifikat erzeugt, dieses ist 1 Jahr gültig ("-days 365") und hat einen 4096bit RSA Schlüssel ("-newkey rsa:4096").
  • Die Option "-x509" sorgt für ein selbstsigniertes Zertifikat und keine Anfrage für einen CA (csr).
  • Indem der Wert "-nodes" verwendet wird, fällt die Abfrage nach einer Passphrase für den Schlüssel weg.

sudo mkdir /etc/apache2/crypt

sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/apache2/crypt/srv.key -out /etc/apache2/crypt/srv.crt

Bitte darauf achten den richtigen CN zu vergeben.

Nachdem das Zertifikat erstellt wurde, muss dem Apache Server beigebracht werden, auf HTTPS zu lauschen.

Hierzu müssen ein paar Werte angepasst werden.

sudo nano /etc/apache2/sites-available/default-ssl.conf

SSLCertificateFile /etc/apache2/crypt/srv.crt

SSLCertificateKeyFile /etc/apache2/crypt/srv.key

Folgende Werte sollten zusätzlich eingefügt werde, um unsichere Protokolle zu deaktivieren:

SSLProtocol All -SSLv2 -SSLv3

SSLCompression off

Die neue Konfiguration muss abschließend aktiviert werden

sudo a2ensite default-ssl.conf

sudo service apache2 restart

Zur Erklärung: Durch den Befehl “a2ensite” wird ein symbolischer Link im sites-enabled Verzeichnis auf die .conf Datei des virtuellen Hosts im sites-available Verzeichnis gesetzt.

lamp-apache2-server-https

5. Ende

Nun ist der LAMP Server unter einer HTTPS Adresse zu erreichen. Für eine produktive Nutzung müssen natürlich noch weitere Schritte unternommen werden, auf die ich hier nicht weiter eingehe.

Die Grundinstallation ist jedoch geschafft und der Server kann zu Testzwecken verwendet werden.

Poodle - SSL 3.0 im Internet Explorer, Chrome oder Firefox deaktivieren

Zum Abschluss der "Erste Hilfe" Serie über die Poodle Lücke (Windows Server, Apache, Postfix und Nginx) möchte ich kurz zeigen, wie sich das unsichere SSL 3.0 Protokoll in den bekannten Browsern abschalten lässt. Unbedingt nötig ist das nicht, da zum Beispiel Chrome und Firefox in den kommenden Versionen SSLv3 von Haus aus abschalten werden. Dennoch eine kleine Anleitung, soll ja Nutzer geben, die weiterhin ältere Browser nutzen:

Poodle - SSL 3.0 im Internet Explorer deaktivieren

Microsoft bietet seit kurzem eine FixIt Tool (Download) an, welches das unsicherere SSL Protokoll abschaltet. Das Tool ist nicht unbedingt notwendig, da mit wenigen Hangriffen die notwendige Einstellung selbst vorgenommen werden kann:

  1. Internet Explorer öffnen
  2. Einstellungen anzeigen (alt+X)
  3. Internetoptionen
  4. Reiter "Erweitert" anklicken
  5. Den Haken bei "SSL 3.0 verwenden" entfernen

ie-ssl3

Poodle - SSL 3.0 im Firefox abschalten

Mozilla wird das Protokoll, wie schon erwähnt in der kommenden Version des Browsers deaktivieren. Wer dem zuvor kommen möchte, der muss folgendes einstellen:

  1. "about:config" in die Adresszeile eingeben
  2. Den Schlüssel "security.tls.version.min" suchen
  3. Der vorhanden Wert muss auch "1" geändert werden.

firefox-ssl3

Poodle - SSL3 in Chrome deaktivieren

Auch Chrome wir in der neuen Version kein SSL 3 mehr unterstützen. Für den Moment genügt es die Verknüpfung mit einem zusätzlichen Schlüssel zu versehen.

  1. Rechtsklick auf die Chrome Verknüpfung
  2. Eigenschaften auswählen
  3. Im Reiter Verknüpfung unter Ziel am Ende den Wert "--ssl-version-min=tls1" anhängenchrome-ssl3


Nginx auf Ubuntu Server 14.04 - In 5min installieren und härten

Die schnelle Apache Server Alternative Nginx ist auf dem Vormarsch und hat jüngst den guten alten Apache Webserver als Referenzsystem bei den Top 1000 Webseiten weltweit überholt.

Mit ein Grund sich mit diesem System etwas näher auseinanderzusetzen.

Zunächst sollte das System jedoch installiert und im Optimalfall gehärtet werden, um von Anfang an einen sicheren und schnellen Webserver zu haben.

nginx

Nginx auf Ubuntu Server 14.04 installieren

Die Installation geht recht schnell von statten, um die aktuelle stabile Version zu erhalten muss zunächst das richtig Repository hinzugefügt werden

sudo add-apt-repository ppa:nginx/stable

sudo apt-get update

sudo apt-get install nginx

Da der Server nach der Installation automatisch startet, könnt ihr sofort danach unter http://localhost die Standardwebseite des Serversystems aufrufen

nginx-ssl

Nginx SSL aktivieren und härten

Damit der Server unter https://localhost aufgerufen werden kann, muss zunächst ein Zertifikat erstellt werden, um es danach in Nginx einzubinden. In diesem Fall wird das Zertifikat selbst signiert.

cd /etc/nginx/

sudo mkdir ssl

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl/srv.key -out /etc/nginx/ssl/srv.crt

Nun kann mit der Konfiguration begonnen werden, diese ist unter /etc/nginx/sites-available/default zu finden.

Innerhalb der Konfig-Datei einfach nach unten scrollen und die Kommentarzeichen im HTTPS Bereich entfernen.

sudo nano /etc/nginx/sites-available/default

server {

        listen 443;

        server_name localhost;

        root html;

        index index.html index.htm;

        ssl on;

        ssl_certificate /etc/nginx/ssl/srv.crt;

        ssl_certificate_key /etc/nginx/ssl/srv.key;

        ssl_session_timeout 5m;

        ssl_ciphers 'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4';

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        #ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;

        #ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";

        ssl_prefer_server_ciphers on;

        ssl_session_cache  builtin:1000  shared:SSL:10m;0m;

        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains"

        add_header X-Frame-Options DENY;

        location / {

                try_files $uri $uri/ =404;

        }

}

Wie oben zu sehen ist, habe ich für einen sicheren Serverbetrieb, die Bereiche ssl_protocols und ssl_ciphers angepasst.

Zusätzlich wurde HSTS mit dem Befehl add_header Strict-Transport-.... aktiviert.

Zum Schutz for Clickjacking ist die Variable add_header X-Frame-Options DENY gesetzt worden.

Auch wurde der zuvor erzeugte SSL Schlüssel mit dem richtigen Pfad eingebunden.

Abschließend wurde noch die Variable ssl_session_cache gesetzt.

Wer den Webserver weiter absichern möchte, der kann zusätzlich Variablen wie ssl_stapling on und ssl_stapling_verify on setzen, um OCSP zu aktivieren.

Nginx Konfiguration prüfen und neustarten 

Unabhängig sollte vor einem Neustart die Installation überprüft werden. Wurde alles korrekt konfiguriert, ist die Standardseite unter https://localhost erreichbar. 

sudo service nginx configtest

sudo service nginx restart

Anleitung - Ubuntu 14.04 LTS Server - Tomcat 7 mit Apache Server in 15 Minuten installieren und konfigurieren

Damit mal wieder etwas Leben in die Bude kommt hier eine kurze Anleitung, wie man innerhalb von 10-15 Minuten einen Tomcat Server in Verbindung mit Apache auf einem Ubuntu Server System (14.04) installiert und konfiguriert.

Zunächst müssen die benötigten Pakete installiert werden. Neben Apache 2 und Tomcat 7 wird zusätzlich Java benötigt.

Für den richtigen Betrieb ist ebenfalls mod-jk von Nöten, diese Modul leitet Anfragen an den Apache mit Hilfe des Protokolls AJP an Tomcat weiter.

Installation

sudo apt-get update

sudo apt-get install apache2

sudo apt-get install tomcat7

sudo apt-get install openjdk-7-jre-headless

sudo apt-get install libapache2-mod-jk

Nachdem alle Pakete installiert sind, müssen einige Dateien konfiguriert werden:

Tomcat Konfiguration

Das Arbeitsverzeichnis und den Worker Prozess für Tomcat festlegen:

nano /etc/apache2/workers.properties

workers.tomcat_home=/var/lib/tomcat7
workers.java_home=/usr/lib/jvm/java-7-openjdk-amd64
ps=/
worker.list=worker1
worker.worker1.port=8009
worker.worker1.host=localhost
worker.worker1.type=ajp13
worker.worker1.lbfactor=1

Dem Mod-JK Modul mitteilen wo diese Datei zu finden ist und Wo Fehler und Co gelogt werden sollen:

nano /etc/apache2/mods-enabled/jk.conf

JkWorkersFile /etc/apache2/workers.properties

JkLogFile /var/log/apache2/mod_jk.log

Dem Tomcat Server mitteilen, dass der AJP Prozess verwendet werden soll, dazu muss folgender String aktiviert werden:

nano /etc/tomcat7/server.xml

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

Apache Server konfigurieren

Zunächst erfolgt die Konfiguration für die zukünftige Seite an sich. Natürlich mit SSL. Hierzu werden bereits Schlüsselpfade hinterlegt, welche im nächsten Schritt noch erstellt werden müssen. Wichtig ist das Einbinden von JKMount, damit Tomcat und Apache zusammen arbeiten. FYI: Es wird der Bereich innerhalb von "VirtualHost _default_:443" angepasst.

sudo nano /etc/apache2/sites-available/default-ssl.conf

ServerAdmin
webmaster@localhost
ServerName tomcatsrv:443
DocumentRoot /var/lib/tomcat7/webapps/ROOT/
SSLEngine on
SSLCertificateFile /etc/apache2/crypt/tomcatsrv.crt
SSLCertificateKeyFile /etc/apache2/crypt/tomcatsrv.key
JKMount /ROOT* worker1

Verschlüsselung aktivieren

Damit der Server gleich eine sichere Verbindung verwendet, wird http erst gar nicht konfiguriert, sondern gleich https aktiviert. 

sudo a2enmod ssl

sudo mkdir /etc/apache2/crypt

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/crypt/tomcatsrv.key -out /etc/apache2/crypt/tomcatsrv.crt

Den richtigen CN in unserem Fall "tomcatsrv" vergeben.

Am Ende sollten alle Dienste neu gestartet werden

Neustart der Dienste

sudo service apache2 restart

sudo service tomcat7 restart

Sollte es zu Fehlern bei der Konfiguration gekommen sein, werdet ihr das beim Neustarten der Dienste bemerken. Alternativ kann ein Blick ins Log nie schaden.

Sollte unverhofft alles glatt gehen, müsstet ihr unter https://tomcatserv:443 die Tomcat Startseite finden ("ROOT"). Viel Erfolg.