Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:apache

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
server:apache [2010/02/27 13:30]
ewald Privaten Schlüssel und Zertifikat in Apache austauschen
server:apache [2015/05/24 17:23] (aktuell)
ewald [SSL] SSL-Konfiguration entsprechend weakdh.org-Empfehlungen
Zeile 1: Zeile 1:
-====== Apache 2.2 unter Debian ​5.0 ======+====== Apache 2.2 unter Debian ​6.0 ======
  
-Apache 2.2 unter Debian ​5.0 einrichten:+Apache 2.2 unter Debian ​6.0 einrichten:
  
 ===== Installation ===== ===== Installation =====
Zeile 7: Zeile 7:
   * Pakete einspielen (''​apache2-mpm-prefork''​ wegen [[server::​PHP]]):​   * Pakete einspielen (''​apache2-mpm-prefork''​ wegen [[server::​PHP]]):​
  
-  # aptitude ​install apache2 apache2-mpm-prefork+  # apt-get ​install apache2 apache2-mpm-prefork
  
   * Apache anhalten:   * Apache anhalten:
Zeile 27: Zeile 27:
  
   # vi /​etc/​apache2/​conf.d/​security   # vi /​etc/​apache2/​conf.d/​security
-  ServerTokens ​Minimal ​   # war: Full+  ServerTokens ​Prod    # war: Full
   ServerSignature Off     # war: On   ServerSignature Off     # war: On
  
Zeile 37: Zeile 37:
   #   #
   <​FilesMatch "​(^~$|\.bak$|\.BAK$)">​   <​FilesMatch "​(^~$|\.bak$|\.BAK$)">​
 +      Order allow,deny
 +      Deny from all
 +  </​FilesMatch>​
 +  ​
 +  #
 +  # Deny access to sensitive files.
 +  #
 +  <​FilesMatch "​(^wp-config.php$|^config.php$)">​
       Order allow,deny       Order allow,deny
       Deny from all       Deny from all
Zeile 61: Zeile 69:
   * Logging konfigurieren:​   * Logging konfigurieren:​
  
-  # vi /​etc/​apache2/​apache2.conf +  # vi /​etc/​apache2/​conf.d/​other-vhosts-access-log
-  LogLevel info    # war: warn +
-  [...+
-  #+
   # Define an access log for VirtualHosts that don't define their own logfile   # Define an access log for VirtualHosts that don't define their own logfile
-  #​CustomLog ​/​var/​log/​apache2/​other_vhosts_access.log vhost_combined+  #​CustomLog ​${APACHE_LOG_DIR}/​other_vhosts_access.log vhost_combined
   ​   ​
-  # 
   # Don't log if environment variable dontlog is set (see conf.d/​dontlog.conf).   # Don't log if environment variable dontlog is set (see conf.d/​dontlog.conf).
-  CustomLog ​/​var/​log/​apache2/access.log vhost_combined env=!dontlog+  CustomLog ​${APACHE_LOG_DIR}/access.log vhost_combined env=!dontlog
  
   * Loggen des Zugriffs auf das [[server::​Monit]]-Token verhindern:   * Loggen des Zugriffs auf das [[server::​Monit]]-Token verhindern:
Zeile 81: Zeile 85:
   SetEnvIf Request_URI "​^\/​monit_xxx\/​token$"​ dontlog   SetEnvIf Request_URI "​^\/​monit_xxx\/​token$"​ dontlog
  
-  * Nur auf einer bestimmten IP-Adresse horchen:+  * Falls gewünscht, nur auf einer bestimmten IP-Adresse horchen:
  
   # vi /​etc/​apache2/​ports.conf   # vi /​etc/​apache2/​ports.conf
   [...]   [...]
-  Listen 81.169.132.218:​80+  Listen 81.169.132.218:​80    # war: Listen ​80
   [...]   [...]
-      Listen 81.169.132.218:​443+      Listen 81.169.132.218:​443    # war: Listen ​443
  
   * Apache starten und Lauffähigkeit überprüfen:​   * Apache starten und Lauffähigkeit überprüfen:​
Zeile 100: Zeile 104:
  
   * Quelle: [[http://​www.apachesecurity.net/​|Apache Security]]   * Quelle: [[http://​www.apachesecurity.net/​|Apache Security]]
 +
 ===== Websites ===== ===== Websites =====
  
Zeile 113: Zeile 118:
   # mkdir /​var/​www/​disorganized   # mkdir /​var/​www/​disorganized
   # vi /​etc/​apache2/​sites-available/​disorganized   # vi /​etc/​apache2/​sites-available/​disorganized
-  NameVirtualHost *:80 
-  ​ 
   <​VirtualHost *:80>   <​VirtualHost *:80>
       ServerAdmin webmaster@disorganized.de       ServerAdmin webmaster@disorganized.de
Zeile 147: Zeile 150:
   HTTP/1.1 200 OK   HTTP/1.1 200 OK
   [...]   [...]
 +
 ===== SSL ===== ===== SSL =====
  
-  * SSL-Modul aktivieren:+  * SSL-Modul aktivieren:<​code>​ 
 +# a2enmod ssl 
 +</​code>​ 
 +  * Verzeichnis für Zertifikat und privaten Schlüssel anlegen, Dateien kopieren, Berechtigungen setzen:<​code>​ 
 +# mkdir /​etc/​apache2/​ssl 
 +# chmod 700 /​etc/​apache2/​ssl 
 +# cp disorganized.de.cert disorganized.de.key /​etc/​apache2/​ssl 
 +# chown root:root /​etc/​apache2/​ssl/​* 
 +# chmod 444 /​etc/​apache2/​ssl/​disorganized.de.cert 
 +# chmod 400 /​etc/​apache2/​ssl/​disorganized.de.key 
 +</​code>​ 
 +  * DH-Parameter erzeugen. Bei älteren Apache-Servern (< 2.4.8) muss diese Datei ans Ende des Zertifikats angehangen werden.<​code>​ 
 +openssl dhparam -out dhparams.pem 2048 
 +</​code>​ 
 +  * Starke Verschlüsselung erzwingen:<​code>​ 
 +# vi /​etc/​apache2/​conf.d/​ssl.conf 
 +<​IfModule mod_ssl.c>​
  
-  # a2enmod ​ssl+  # https://​weakdh.org/​sysadmin.html 
 +  SSLProtocol all -SSLv2 -SSLv3 
 +  SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:​ECDHE-ECDSA-AES128-GCM-SHA256:​ECDHE-RSA-AES256-GCM-SHA384:​ECDHE-ECDSA-AES256-GCM-SHA384:​DHE-RSA-AES128-GCM-SHA256:​DHE-DSS-AES128-GCM-SHA256:​kEDH+AESGCM:​ECDHE-RSA-AES128-SHA256:​ECDHE-ECDSA-AES128-SHA256:​ECDHE-RSA-AES128-SHA:​ECDHE-ECDSA-AES128-SHA:​ECDHE-RSA-AES256-SHA384:​ECDHE-ECDSA-AES256-SHA384:​ECDHE-RSA-AES256-SHA:​ECDHE-ECDSA-AES256-SHA:​DHE-RSA-AES128-SHA256:​DHE-RSA-AES128-SHA:​DHE-DSS-AES128-SHA256:​DHE-RSA-AES256-SHA256:​DHE-DSS-AES256-SHA:​DHE-RSA-AES256-SHA:​AES128-GCM-SHA256:​AES256-GCM-SHA384:​AES128-SHA256:​AES256-SHA256:​AES128-SHA:​AES256-SHA:​AES:​CAMELLIA:​DES-CBC3-SHA:​!aNULL:​!eNULL:​!EXPORT:​!DES:​!RC4:​!MD5:​!PSK:​!aECDH:​!EDH-DSS-DES-CBC3-SHA:​!EDH-RSA-DES-CBC3-SHA:​!KRB5-DES-CBC3-SHA 
 +  SSLHonorCipherOrder on 
 +</​IfModule>​ 
 +</​code>​ 
 +  * SSL für Website konfigurieren:<​code>​ 
 +# vi /​etc/​apache2/​sites-available/​disorganized 
 +[...] 
 +<​VirtualHost *:443> 
 +    SSLEngine On 
 +    SSLCertificateFile /​etc/​apache2/​ssl/​nilpferd.disorganized.de.cert 
 +    SSLCertificateKeyFile /​etc/​apache2/​ssl/​nilpferd.disorganized.de.key
  
-  * Verzeichnis für Zertifikat und privaten Schlüssel anlegen, Dateien kopieren, Berechtigungen setzen:+    ServerAdmin webmaster@disorganized.de 
 +    ServerName disorganized.de
  
-  # mkdir /etc/apache2/ssl +    DocumentRoot ​/var/www/​disorganized/​
-  # chmod 700 /​etc/​apache2/​ssl +
-  # cp disorganized.de.cert disorganized.de.key ​/etc/​apache2/​ssl +
-  # chown root:root /​etc/​apache2/​ssl/​* +
-  # chmod 444 /​etc/​apache2/​ssl/​disorganized.de.cert +
-  # chmod 400 /​etc/​apache2/​ssl/​disorganized.de.key+
  
-  * Starke Verschlüsselung erzwingen:+    <​Directory /​var/​www/​disorganized/>​ 
 +        Order allow,​deny 
 +        Allow from all 
 +        AllowOverride none 
 +    </​Directory>​
  
-  # vi /​etc/​apache2/​conf.d/​ssl.conf +    ​<​IfModule ​mod_rewrite.c> 
-  ​<​IfModule ​mod_ssl.c> +        ​RewriteEngine on
-   +
-    # http://​www.securityfocus.com/​infocus/​1820 +
-    SSLProtocol -all +TLSv1 +SSLv3 +
-    SSLCipherSuite HIGH:​MEDIUM:​!aNULL:​+SHA1:​+MD5:​+HIGH:​+MEDIUM +
-   +
-  </​IfModule>​ +
- +
-  * SSL für Website konfigurieren:​ +
- +
-  # vi /​etc/​apache2/​sites-available/​disorganized +
-  [...] +
-  <​VirtualHost *:443> +
-      SSLEngine On +
-      SSLCertificateFile /​etc/​apache2/​ssl/​nilpferd.disorganized.de.cert +
-      SSLCertificateKeyFile /​etc/​apache2/​ssl/​nilpferd.disorganized.de.key +
-   +
-      ServerAdmin webmaster@disorganized.de +
-      ServerName nilpferd.disorganized.de +
-   +
-      DocumentRoot /​var/​www/​disorganized/​ +
-   +
-      <​Directory /​var/​www/​disorganized/>​ +
-          Order allow,​deny +
-          Allow from all +
-          AllowOverride none +
-      </​Directory>​ +
-  </​VirtualHost>​ +
- +
-  * Apache neu starten, SSL-Initialisierung überprüfen:​ +
- +
-  # /​etc/​init.d/​apache2 force-reload +
-  # less /​var/​log/​apache2/​error.log +
-  [...] +
-  [info] Loading certificate & private key of SSL-aware server +
-  [...] +
-  [info] Configuring server for SSL protocol +
-  [info] Server: Apache/​2.2.3,​ Interface: mod_ssl/​2.2.3,​ Library: OpenSSL/​0.9.8c +
-  [notice] Apache/​2.2.3 configured -- resuming normal operations +
- +
-  * CA-Root-Zertifikat im DER-Format zum Download bereitstellen (durch die Endung ''​.crt''​ wird gleich der richtige Content-Type verwendet, der einfachen Import per Browser erlaubt, sonst muss eine "​AddType"​-Zeile zur Apache-Konfiguration hinzugefügt werden): +
- +
-  # openssl x509 -inform PEM -outform DER -in ca-cert.pem -out ca-cert.crt +
-  # cp ca-cert.crt /​var/​www/​disorganized/​downloads+
  
 +        # https://​www.disorganized.de/​... -> https://​disorganized.de/​...
 +        RewriteCond %{HTTP_HOST} ^www.disorganized.de$ [NC]
 +        RewriteRule . https://​disorganized.de%{REQUEST_URI} ​ [R=301,L]
 +    </​IfModule>​
 +</​VirtualHost>​
 +</​code>​
 +  * Apache neu starten, SSL-Initialisierung überprüfen:<​code>​
 +# /​etc/​init.d/​apache2 force-reload
 +# less /​var/​log/​apache2/​error.log
 +[...]
 +[info] Loading certificate & private key of SSL-aware server
 +[...]
 +[info] Configuring server for SSL protocol
 +[info] Server: Apache/​2.2.3,​ Interface: mod_ssl/​2.2.3,​ Library: OpenSSL/​0.9.8c
 +[notice] Apache/​2.2.3 configured -- resuming normal operations
 +</​code>​
 +  * CA-Root-Zertifikat im DER-Format zum Download bereitstellen (durch die Endung ''​.crt''​ wird gleich der richtige Content-Type verwendet, der einfachen Import per Browser erlaubt, sonst muss eine "​AddType"​-Zeile zur Apache-Konfiguration hinzugefügt werden):<​code>​
 +# openssl x509 -inform PEM -outform DER -in ca-cert.pem -out ca-cert.crt
 +# cp ca-cert.crt /​var/​www/​disorganized/​downloads
 +</​code>​
 ===== Zertifikat von StartSSL ===== ===== Zertifikat von StartSSL =====
  
Zeile 215: Zeile 224:
  
   * Anleitung: http://​www.heise.de/​security/​artikel/​SSL-fuer-lau-880221.html   * Anleitung: http://​www.heise.de/​security/​artikel/​SSL-fuer-lau-880221.html
 +  * Noch eine Anleitung: http://​jasoncodes.com/​posts/​startssl-free-ssl
   * Privaten Schlüssel generieren:   * Privaten Schlüssel generieren:
  
-  # openssl genrsa -out disorganized.de.key ​2048+  # openssl genrsa -out disorganized.de.key ​4096
  
   * CSR (//​certificate signing request//) erzeugen:   * CSR (//​certificate signing request//) erzeugen:
Zeile 250: Zeile 259:
   [...]   [...]
   <​VirtualHost _default_:​443>​   <​VirtualHost _default_:​443>​
 +  [...]
       SSLCertificateFile /​etc/​apache2/​ssl/​disorganized.de.cert       SSLCertificateFile /​etc/​apache2/​ssl/​disorganized.de.cert
       SSLCertificateChainFile /​etc/​apache2/​ssl/​sub.class1.server.ca.pem       SSLCertificateChainFile /​etc/​apache2/​ssl/​sub.class1.server.ca.pem
       SSLCertificateKeyFile /​etc/​apache2/​ssl/​disorganized.de.key       SSLCertificateKeyFile /​etc/​apache2/​ssl/​disorganized.de.key
 +
 +  * [[Monit]] überprüft den MD5-Fingerprint des Zertifikats und muss deshalb angepasst werden:
 +
 +  # openssl x509 -in /​etc/​apache2/​ssl/​disorganized.de.cert -fingerprint -md5
 +  MD5 Fingerprint=38:​71:​0A:​E6:​62:​C3:​3E:​41:​40:​A7:​96:​C8:​63:​71:​20:​7C
 +  [...]
 +  # vi /​etc/​monit/​includes/​apache2
 +  [...]
 +      if failed host 81.169.132.218 port 443 type TCPSSL
 +          certmd5 38-71-0A-E6-62-C3-3E-41-40-A7-96-C8-63-71-20-7C
 +  [...]
  
server/apache.1267273823.txt.gz · Zuletzt geändert: 2010/02/27 13:30 von ewald