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

 

ssh_scan – Sicherheits- und Konfigurationsscanner für SSH Einstellungen

Mit SSH Audit hatte ich bereits vor einiger Zeit ein Tool im Programm, welches SSH auf Einstellungen und Konfiguration testet (Artikel).

Mozilla hat mit ssh_scan ein ähnliches Tool im Portfolio. Das Tool bezieht sich auf die eigenen SSH Guidelines und prüft hinterlegte Ciphers, MACs, und Kex Algorithmen.

Laut eigener Aussage zählt zu den Vorteilen des Tools die einfache Installation ohne allzu viele Abhängigkeiten. Das Programm ist portabel, lässt sich mit eigenen Regeln konfigurieren und wirft am Ende einen Report im JSON Format aus.

Zunächst muss ssh_scan aber erst einmal den Weg auf die Festplatte finden.

Installation unter Ubuntu 16.04 LTS

Für die Installation steht neben einem ssh_scan gem Paket auch ein Docker Container zur Verfügung.

sudo apt-get install ruby gem
sudo gem install ssh_scan

oder via Docker

docker pull mozilla/ssh_scan
docker run -it mozilla/ssh_scan /app/bin/ssh_scan -t example.com

oder froM Source

git clone https://github.com/mozilla/ssh_scan.git
cd ssh_scan

gem install bundler
bundle install

./bin/ssh_scan

SSH Scan im Einsatz

Die SSH-Prüf-Anwendung ist denkbar einfach zu bedienen, es lassen sich einzelne Host scannen, ganze Ranges oder weitere Parameter angeben.

Eine IP scannen

ssh_scan -t ip-addresse

Mehrere IPs scannen

ssh_scan -t ip-addresse1,ip-addresse2,ip-addresse3

ssh_scan

Adressen aus einer Datei scannen

ssh_scan -f ip-addressen.txt

IP Adressen mit bestimmten Port scannen

ssh_scan -t ip-addresse -p 666

Eigene Policy verwenden

ssh_scan -P intermediate -t ip-addresse

In den Standardeinstellungen wird die Mozilla Modern Policy als Prüfvorlage verwendet. Es lässt sich aber mit der oben erwähnten Option P auch auf Intermediate oder andere Richtlinien prüfen.

Hier als Beispiel die Intermediate Richtlinie:


cat intermediate

# Host keys the client accepts - order here is honored by OpenSSH
HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa,ecdsa-sha2-nistp256-cert-v01@openssh.com,ecdsa-sha2-nistp521-cert-v01@openssh.com,ecdsa-sha2-nistp384-cert-v01@openssh.com,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256

Alle SSH_scan Befehle lassen sich über die Hilfe einsehen

ssh_scan -h

 

Fazit

Mozilla bietet mit ssh_scan eine praktische Methode um SSH Einstellungen zu prüfen und zu härten. Dank eigener Policies und vieler weiterer Optionen, wie Reports würde ich das Tool vorziehen, alleine weil das eingangs erwähnte SSH-Audit seit 2016 nicht mehr aktualisiert wurde.

Allerdings empfinde ich die Masse an Paketen, welche mit ruby gem auf dem System landen nicht unerheblich, da ist ein einfaches Python Script schon handlicher. 
Zusätzlich setzt ssh_scan wohl weiterhin auf NIST Kurven wie ecdh-sha2-nistp521,ecdh-sha2-nistp384 und ecdh-sha2-nistp256 welchen ich eher kritisch gegenüber stehe.

Schlussendlich sollte bei solchen Tests immer das Ergebnis genau hinterfragt werden. Das Prüfen von SSH Konfigurationen vereinfachen beide Programme dennoch merklich.

 

ssh_scan

ssh-audit - OpenSSH Sicherheit testen, konfigurieren und härten

Secure Shell (SSH) dürfte fast jeder schon einmal gehört haben, nicht nur wegen der vielen Updates in letzter Zeit.

Das Netzwerkprotokoll, welches häufig zur Wartung oder zum Datenaustausch mit entfernten Geräten verwendet wird, ist aus dem Alltag kaum wegzudenken.

SSH ermöglicht eine sichere Verbindung in unsicherer Umgebung, dank Verschlüsselung und Authentifizierung.

Neben Passwortauthentifizierung kann das Protokoll mit Public Key Verfahren genutzt werden, was durchaus zu empfehlen ist.

Die Einstellungen in der Konfiguration "/etc/ssh/sshd_config" dazu sind schnell gesetzt:

PubkeyAuthentication yes

PasswordAuthentication no

 

Neben der Authentifizierungsmethode gibt es allerdings noch weitere Einstellungsmöglichkeiten.

Um Verbindungen zwischen Client und Server möglichst sicher zu gestalten, können in der Konfiguration verschiedene Einstellungen gesetzt werden.

Unter anderen folgende Werte.

 

  • KexAlgorithms (Key Exchange): Die Schlüsselaustausch-Algorithmen für die symmetrische Verschlüsselung.
  • Ciphers Die Ciphers zur symmetrischen Verschlüsselung der Verbindung.
  • MACs (Message authentication codes): Nachrichten Authentifizierungsverfahren, um die Integrität zu sichern.
  • HostKeyAlgorithms Algorithmus welchen der Client verwendet

 

Durch alte bzw. gebrochene oder mangelhafte Verschlüsselung kann es zu Sicherheitslücken kommen, welche sich durch richtige Einstellungen vermeiden lassen.

Mit Hilfe des Kommandozeilen Tools ssh-audit lassen sich fehlerhafte SSH Einstellungen schnell ausfindig machen.

ssh-audit - OpenSSH Sicherheit testen und richtig konfigurieren

Das Programm liest die Version und Einstellungen von OpenSSH aus und zeigt im Ampelformat an, welche Algorithmen und Ciphers abgeschaltet werden sollten.

ssh-auditDazu werden zusätzliche Infos eingeblendet. Warum genau diese Cipher oder jener Algorithmus nicht mehr verwendet werden sollten.

In der aktuellen Programmversion 1.7.x werden folgende Hauptfeatures unterstützt.

  •     SSH1 and SSH2 protocol server support
  •     grab banner, recognize device or software and operating system, detect compression
  •     gather key-exchange, host-key, encryption and message authentication code algorithms
  •     output algorithm information
    • available since 
    • removed/disabled 
    • unsafe/weak/legacy, etc
  •     output algorithm recommendations
    • append or remove based on recognized software version;
  •     output security information
    • related issues
    • assigned CVE list, etc
  •     analyze SSH version compatibility based on algorithm information
  •     historical information from OpenSSH, Dropbear SSH and libssh
  •     no dependencies, compatible with Python 2.6+, Python 3.x and PyPy

Installation unter Ubuntu 16.04 und Python3

Die Installation ist relativ einfach, allerdings kann es sein, dass mit Ubuntu 14.04 und Python 2.7 und Ubuntu 16.04 mit Python 3 noch ein paar Handgriffe notwendig sind.

wget https://github.com/arthepsy/ssh-audit/archive/v1.7.0.zip

unzip v1.7.0.zip

cd ssh-audit-1.7.0/

Zum Starten des Audits muss Python Script und eine Serveradresse aufgerufen werden. Als ersten Test bietet sich localhost an.

Unter Ubuntu 16.04 muss allerdings darauf geachtet werden, dass Python 3 richtig eingerichtet ist. Darum sollte hier noch ein Symlink gesetzt werden, damit das Script richtig ausgeführt werden kann

$ python -V
-bash: /usr/bin/python: No such file or directory

$ sudo ln -s /usr/bin/python3 /usr/bin/python

$ ls -l /usr/bin/ |grep python
lrwxrwxrwx 1 root   root          16 Oct 29 19:29 python -> /usr/bin/python3

Danach kann das Audit Script den Ubuntu 16.04 Server auf schwache Einstellungen kontrollieren. Hier ein Auszug.

sudo ./ssh-audit.py localhost

# general
(gen) banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
(gen) software: OpenSSH 7.2p2
(gen) compatibility: OpenSSH 7.2+, Dropbear SSH 2013.62+
(gen) compression: enabled (zlib@openssh.com)

# key exchange algorithms
(kex) curve25519-sha256@libssh.org          -- [info] available since OpenSSH 6.5, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp256                    -- [fail] using weak elliptic curves
                                            `- [info] available since OpenSSH 5.7, Dropbear SSH 2013.62
(kex) ecdh-sha2-nistp384                    -- [fail] using weak elliptic curves

# host-key algorithms
(key) ssh-rsa                               -- [info] available since OpenSSH 2.5.0, Dropbear SSH 0.28
(key) rsa-sha2-512                          -- [info] available since OpenSSH 7.2
 

# encryption algorithms (ciphers)
(enc) chacha20-poly1305@openssh.com         -- [info] available since OpenSSH 6.5
                                            `- [info] default cipher since OpenSSH 6.9.
(enc) aes128-ctr                            -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
(enc) aes192-ctr                            -- [info] available since OpenSSH 3.7
(enc) aes256-ctr                            -- [info] available since OpenSSH 3.7, Dropbear SSH 0.52
 

# message authentication code algorithms
(mac) umac-64-etm@openssh.com               -- [warn] using small 64-bit tag size
                                            `- [info] available since OpenSSH 6.2
(mac) umac-128-etm@openssh.com              -- [info] available since OpenSSH 6.2
 

OpenSSH Härtung (ab Version OpenSSH 6.7)

Bei der neuesten OpenSSH Version können verschiedene Sicherheitseinstellungen gesetzt werden.

Im Screenshot seht ihr eine laut Audit optimale Einstellung für einen Server zum jetzigen Zeitpunkt.

ssh-gehaertet


Die Einstellungen kommen wie folgt zu Stande: 

Zunächst zum Key Exchange. Elliptische Kurven vom National Institute of Standards and Technology (Nist) haben nicht den besten Ruf und sind durch Timingangriffe verletzbar. SHA1 zählt auch nicht mehr zu den besten Methoden unserer Zeit und kann ebenfalls deaktiviert werden.

Das heißt von den verfügbaren Möglichkeiten (siehe unten) bleiben nur noch curve25519-sha256 und diffie-hellman-group-exchange-sha256 als Auswahl übrig. 

  • curve25519-sha256: ECDH over Curve25519 with SHA2
  • diffie-hellman-group1-sha1: 1024 bit DH with SHA1
  • diffie-hellman-group14-sha1: 2048 bit DH with SHA1
  • diffie-hellman-group-exchange-sha1: Custom DH with SHA1
  • diffie-hellman-group-exchange-sha256: Custom DH with SHA2
  • ecdh-sha2-nistp256: ECDH over NIST P-256 with SHA2
  • ecdh-sha2-nistp384: ECDH over NIST P-384 with SHA2
  • ecdh-sha2-nistp521: ECDH over NIST P-521 with SHA2
Quelle

Für Mac, HostKeys und Ciphers gelten ähnliche Regeln. Auch hier sollten Einstellungen mit MD5/SHA1 oder CBC entfernt werden. Open SSH Audit hebt diese in roter Schrift hervor. Am Ende bleibt eine sichere Einstellung und folgende Angaben unter /etc/ssh/sshd_config.

Diese beispielhaften Einstellungen wurde so gewählt, dass eine Verbindung via Windows und PuTTY möglich ist.

debianbanner no

KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256

Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr

MACs hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-256

HostKeyAlgorithms ssh-ed25519-cert-v01@openssh.com,ssh-rsa-cert-v01@openssh.com,ssh-ed25519,ssh-rsa

Fazit

open-ssh audit bietet eine einfache und schnelle Möglichkeit SSH Verbindungen zu testen und bei Bedarf auch zu härten. Das Tool erklärt dem Nutzer seine Wahl und ist somit recht verständlich.

Allerdings sollte immer auf die jeweilige Umgebung in Verbindung mit den Einstellungen geachtet werden. Auch sollte nach einer Änderung zwingend eine Testverbindung aufgebaut werden (SSH Dienst neu starten nicht vergessen).

Details zu weiteren Einstellungen und deren Funktion, welche der Audit zurzeit nicht bieten kann, sollten an anderer Stelle nachgelesen werden. Hier empfiehlt sich das Raven Wiki für einen ersten Überblick

ssh audit

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.

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