Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:web_c7:apache_2 [28.11.2016 20:08. ] – [ssl.conf] djangocentos:web_c7:apache_2 [02.02.2018 09:39. ] (aktuell) – Löschen von falschen HPKP-Daten beim Browser Firefox django
Zeile 263: Zeile 263:
 ===== Dokumentation ===== ===== Dokumentation =====
 ==== Fachliteratur ==== ==== Fachliteratur ====
-Das Buch **[[https://www.feistyduck.com/books/bulletproof-ssl-and-tls/|Bulletproof SSL and TLS]]** von **[[http://blog.ivanristic.com/|Ivan Ristić]]** bringt viele wertvoller Erklärungen und kann jedem interessierten Webmaster wärmstens empfohlen werden! Neben den Grundlagen zu SSL/TLS und PKI finden sich dort auch weiterführende Konfigurationsbeispiele unter anderem zu unserem **//Apache-Webserver 2.4//**. Außerdem erhält man als registrierter Leser wervolle aktulisierte News in Form von regelmäßigen eMails, in denen aktuellste Enticklungen und Schwachstellen beleuchtet werden. Also alles in allem sehr gut angelegte 55€ - das Buch **978-1-907117-04-6** (ISBN) ist in jedem gut sortierten Buchhandel vor Ort erhältlich sein sollte.  +<WRAP center round tip 90%> 
 +Das Buch **[[https://www.feistyduck.com/books/bulletproof-ssl-and-tls/|Bulletproof SSL and TLS]]** von **[[http://blog.ivanristic.com/|Ivan Ristić]]** bringt viele wertvoller Erklärungen und kann jedem interessierten Webmaster wärmstens empfohlen werden! Neben den Grundlagen zu SSL/TLS und PKI finden sich dort auch weiterführende Konfigurationsbeispiele unter anderem zu unserem **//Apache-Webserver 2.4//**. Ausserdem erhält man als registrierter Leser wertvolle aktualisierte News in Form von regelmässigen eMails, in denen aktuellste Entwicklungen und Schwachstellen beleuchtet werden.  
 + 
 +Also alles in allem sehr gut angelegte 55€ - das Buch **978-1-907117-04-6** (ISBN) ist in jedem gut sortierten Buchhandel vor Ort erhältlich sein sollte.  
 +</WRAP> 
 + 
  
 ==== Seiten im WWW ==== ==== Seiten im WWW ====
Zeile 2074: Zeile 2079:
 ==== vHost.conf ==== ==== vHost.conf ====
  
 +   # vim  /etc/httpd/conf.d/forum.conf
 +<file apache /etc/httpd/conf.d/forum.conf>#
 +# Django : 2015-10-30
 +#          vHost hk-forum
 +#
 +
 +# Variablen der Hostvariablen
 +Define vhost hk-forum
 +Define errors_log logs/${vhost}_error.log
 +Define access_log logs/${vhost}_access.log
 +Define ssl_log logs/${vhost}_ssl_request.log
 +
 +<VirtualHost 10.0.0.97:80>
 +    ServerAdmin webmaster@nausch.org
 +    ServerName ${vhost}.nausch.org
 +
 +    RewriteEngine on
 +    RewriteCond %{HTTPS} off
 +    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 +
 +    # Welche Logdateien sollen beschrieben werden
 +    SetEnvIf Remote_Addr "10\.0\.0\.20" dontlog
 +    ErrorLog  ${errors_log}
 +    CustomLog ${access_log} combined env=!dontlog
 +</VirtualHost>
 +<VirtualHost 10.0.0.97:443>
 +    ServerAdmin webmaster@nausch.org
 +    ServerName ${vhost}.nausch.org
 +    ServerPath /
 +
 +    # Wer soll Zugriff auf die Webseite(n) bekommen?
 +    #<Location />
 +    #    Options +FollowSymLinks +Multiviews -Indexes
 +    #    AllowOverride None
 +    #    AuthType Basic
 +    #    AuthName "Fuer den Zugriff auf den Webserver bitte Anmeldedaten eingeben!"
 +    #    AuthBasicProvider ldap
 +    #    AuthLDAPUrl ldaps://openldap.dmz.nausch.org:636/ou=People,dc=nausch,dc=org?uid
 +    #    AuthLDAPBindDN cn=Technischeruser,dc=nausch,dc=org
 +    #    AuthLDAPBindPassword "M52wFn0r0w95z5bn/\EU64FE!" 
 +    #    AuthLDAPBindAuthoritative on
 +    #    Require ldap-user accessuser
 +    #</Location>
 +
 +    # Welcher Inhalt soll angezeigt bzw. auf welchen Server sollen die HTTP-Requests 
 +    #weitergeleitet werden?
 +    DocumentRoot   "/srv/www/html/${vhost}/"
 +    DirectoryIndex index.php
 +
 +    <Directory /srv/www/html/${vhost}/>
 +        Options none
 +        AllowOverride Limit
 +        Require all granted
 +    </Directory>
 +
 +    <LocationMatch "/(config.inc.php|configs|scripts|tests|users|VIRTUALVACATIONS)/">
 +        Require all denied
 +    </LocationMatch>
 +
 +    # Welche Logdateien sollen beschrieben werden
 +    SetEnvIf Remote_Addr "10\.0\.0\.20" dontlog
 +    ErrorLog  ${errors_log}
 +    CustomLog ${access_log} combined env=!dontlog
 +    CustomLog ${ssl_log} "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
 +
 +    # Absicherung der Übertragung mit Hilfe von TLS
 +    # Django : 2015-10-04 - TLS-Verschlüsselung mit Hilfe von mod_ssl
 +    SSLEngine on
 +    # Definition der anzubietenden Protokolle
 +    SSLProtocol All -SSLv2 -SSLv3
 +    # Definition der Cipher
 +    SSLCipherSuite "AES256+EECDH +AEAD"
 +    # Schlüsseldatei, mit der der CSR erstellt wurde
 +    SSLCertificateKeyFile /etc/pki/tls/private/${vhost}.nausch.org.serverkey.pem
 +    # Zertifikatsdatei , die von der CA signiert wurde
 +    SSLCertificateFile /etc/pki/tls/certs/${vhost}.nausch.org.certificate.pem
 +    # Zertifikatsdatei des bzw. der Intermediate-Zertifikate(s)
 +    SSLCertificateChainFile /etc/pki/tls/certs/Intermediate.certificate.pem
 +    # Änderung der Cipherorder der Clienets verneinen 
 +    SSLHonorCipherOrder on
 +    # TLS 1.0 Kompremmierung deaktivieren (CRIME attacks)
 +    SSLCompression off
 +    # Online Certificate Status Protocol stapling zum Prüfen des
 +    # Gültigkeitsstatus des Serverzertifikats.
 +    SSLUseStapling      on
 +    SSLStaplingResponderTimeout 5
 +    SSLStaplingReturnResponderErrors off
 +    # ist in der ssl.conf 
 +    # SSLStaplingCache        shmcb:/var/run/ocsp(128000)
 +
 +    # special stuff ###
 +
 +    # HTTP Strict Transport Security (HSTS), bei dem der Server dem Client im HTTP-Header 
 +    # mitteilt, dass dieser nur noch verschlüsselt mit dem Server kommunizieren soll.
 +    Header always set Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"
 +
 +    # This header enables the Cross-site scripting (XSS) filter built into most recent 
 +    # web browsers. It's usually enabled by default anyway, so the role of this header 
 +    # is to re-enable the filter for this particular website if it was disabled by the 
 +    # user. https://www.owasp.org/index.php/List_of_useful_HTTP_headers
 +    Header set X-XSS-Protection "1; mode=block"
 +
 +    # when serving user-supplied content, include a X-Content-Type-Options: nosniff 
 +    # header along with the Content-Type: header, to disable content-type sniffing on 
 +    # some browsers. https://www.owasp.org/index.php/List_of_useful_HTTP_headers
 +    # currently suppoorted in IE > 8 
 +    # http://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx
 +    # http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx
 +    # 'soon' on Firefox https://bugzilla.mozilla.org/show_bug.cgi?id=471020
 +    Header set X-Content-Type-Options nosniff
 +
 +    # config to don't allow the browser to render the page inside an frame or iframe
 +    # and avoid clickjacking http://en.wikipedia.org/wiki/Clickjacking
 +    # if you need to allow [i]frames, you can use SAMEORIGIN or even set an uri with 
 +    # ALLOW-FROM uri https://developer.mozilla.org/en-US/docs/HTTP/X-Frame-Options
 +    header set X-Frame-Options DENY
 +
 +    # hide server header (apache and php version)
 +    Header unset Server
 +
 +    # Only allow JavaScript from the same domain to be run.
 +    # don't allow inline JavaScript to run.
 +    Header set X-Content-Security-Policy "allow 'self';"
 +
 +    # Add Secure and HTTP only attributes to cookies
 +    Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
 +
 +    # prevent Clickjacking Attack
 +    #Header always append X-Frame-Options SAMEORIGIN
 +    Header set Content-Security-Policy "default-src 'self';"
 +</VirtualHost>
 +
 +
 +</file>
 FIXME FIXME
  
Zeile 2358: Zeile 2497:
  
 https://mozilla.github.io/server-side-tls/ssl-config-generator/ https://mozilla.github.io/server-side-tls/ssl-config-generator/
 +
 +==== HSTS ====
 +
 +
 +In der vHost-Definition unseres Apache-vHOST ergänzen wir folgende Zeile ''Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"''.
 +   # vim /etc/httpd/conf.d/forum.conf
 +
 +<code bash>...
 +
 +# HTTP Strict Transport Security (HSTS), bei dem der Server dem Client im 
 +# HTTP-Header mitteilt, dass dieser nur noch verschlüsselt mit dem Server 
 +# kommunizieren soll.
 +Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
 +
 +...</code>
 +
 +==== OCSP Stapling ====
 +
 +In der //**/etc/httpd/conf.d/ssl.conf**// folgende Konfigurationszeile nachtragen ''SSLStaplingCache "shmcb:/var/run/httpd/stapling_cache(128000)"''.
 +   # vim /etc/httpd/conf.d/ssl.conf
 +<code bash>...
 +
 +# Django : 2015-11-11
 +# Chache-Definition für Online Certificate Status Protocol stapling
 +SSLStaplingCache "shmcb:/var/run/httpd/stapling_cache(128000)"
 +
 +...</code>
 +
 +In der vHost-Definition unseres Apache-vHOST ergänzen wir folgende drei Zeilen.
 +   # vim /etc/httpd/conf.d/forum.conf
 +
 +<code bash>...
 +
 +    # Online Certificate Status Protocol stapling zum Prüfen des Gültigkeitsstatus 
 +    # des Serverzertifikats.
 +    SSLUseStapling      on
 +    SSLStaplingResponderTimeout 5
 +    SSLStaplingReturnResponderErrors off
 +
 +...</code>
 +
 +
 +   $ openssl s_client -connect forum.nausch.org:443 -servername forum.nausch.org -status < /dev/null
 +<code>CONNECTED(00000003)
 +depth=2 C = BE, O = GlobalSign nv-sa, OU = Root CA, CN = GlobalSign Root CA
 +verify return:1
 +depth=1 C = BE, O = GlobalSign nv-sa, CN = AlphaSSL CA - SHA256 - G2
 +verify return:1
 +depth=0 OU = Domain Control Validated, CN = forum.nausch.org
 +verify return:1
 +OCSP response: 
 +======================================
 +OCSP Response Data:
 +    OCSP Response Status: successful (0x0)
 +    Response Type: Basic OCSP Response
 +    Version: 1 (0x0)
 +    Responder Id: EE5EFFFE85DB26C626FBD3698410AD1D0DD3EF58
 +    Produced At: Nov 29 18:16:05 2016 GMT
 +    Responses:
 +    Certificate ID:
 +      Hash Algorithm: sha1
 +      Issuer Name Hash: 84D56BF8098BD307B766D8E1EBAD6596AA6B6761
 +      Issuer Key Hash: F5CDD53C0850F96A4F3AB797DA5683E669D268F7
 +      Serial Number: 6922D213277B49AC169E77A9
 +    Cert Status: good
 +    This Update: Nov 29 18:16:05 2016 GMT
 +    Next Update: Dec  3 18:16:05 2016 GMT
 +
 +...
 +</code>
 +
 +Werden **__keine__** OCSP-Response Daten angezeigt, ist dies ein Hinweis, dass die OCSP_Konfiguration nnoch nicht richtig abgeschlossen wurde!
 +
 +Zum Testen kann man alternativ auch den Test bei [[https://www.ssllabs.com/ssltest/|Qualys SSL Labs]] oder [[https://observatory.mozilla.org/|Observatory by Mozilla]] nutzen.
 +
 +==== Secure Cookie mit HttpOnly ====
 +
 +In der vHost-Definition unseres Apache-vHOST ergänzen wir folgende Zeile ''Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
 +''.
 +   # vim /etc/httpd/conf.d/forum.conf
 +
 +<code bash>...
 +
 +# Add Secure and HTTP only attributes to cookies
 +Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
 +
 +...</code>
 +
 +https://tools.geekflare.com/web-tools/http-header-analyzer
 +
 +| set-cookie:   | Forum=rtg65np1t1cvnrg7n30l8mad67; path=/; secure; \\ HttpOnly;HttpOnly;SecureDW7fa065a06cb74b536c124cfbe56ac6d3=deleted; \\ expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/; secure; httponly;HttpOnly;Secure |
 +
 +**HttpOnly** und **Secure** kennzeichnen die erfolgreiche Änderung!
 +
 +
 +
 +
 +
 +
 +
 +
 +==== HPKP ====
 +[[https://tools.ietf.org/rfc/rfc7469.txt|RFC 7469]]
 +   # openssl rsa -pubout -in /etc/pki/tls/private/forum.nausch.org.serverkey.pem \
 +                 -outform der | openssl dgst -sha256 -binary | base64
 +
 +  writing RSA key
 +  nMiOpb6vUnjCoWCkPkDaG4ND8SNWzFTsQf2ZfruLno0=
 +
 +pin-sha256="nMiOpb6vUnjCoWCkPkDaG4ND8SNWzFTsQf2ZfruLno0="
 +
 +   # openssl rsa -pubout -in /etc/pki/tls/private/forum.nausch.org._BACKUP_serverkey.pem \
 +                 -outform der | openssl dgst -sha256 -binary | base64
 +
 +  writing RSA key
 +  INhxSQ38nCS6ijaAAyo4xAhAZj9xeL3Xaak+GGiM2fo=
 +
 +Zum Löschen von outdated bzw. falschen key-hashes beim Firefox zuerst einam den Browser stoppen. Anschließend bearbeiten wir die Einträge in der Datei **SiteSecurityServiceState.txt** im profile-Pafd unserer Installation.
 +   # vim ~/.mozilla/firefox/[unique-id].default/SiteSecurityServiceState.txt
 +
 +Nach dem Speichern unserer Änderungen starten wir den Browser neu und können wieder auf die zuvor blockierten Seiten zugreifen.
 +
 +===== Tests =====
 +
 +Artikel auf [[http://www.golem.de|golem]] [[http://www.golem.de/news/observatory-mozilla-bietet-sicherheitscheck-fuer-websites-1608-122923.html|Mozilla bietet Sicherheitscheck für Websites]]. \\
 +[[https://observatory.mozilla.org/|Observatory by Mozilla]] \\
 +[[https://www.ssllabs.com|Qualys SSl Labs SSL Server Test]] \\
 +[[https://securityheaders.io|SecurityHeaders.io by Scott Helme]] \\
 +
  • centos/web_c7/apache_2.1480363689.txt.gz
  • Zuletzt geändert: 28.11.2016 20:08.
  • von django