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/26 21:45]
ewald dontlog-Datei heißt anders
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). +  CustomLog ​${APACHE_LOG_DIR}/access.log vhost_combined env=!dontlog
-  CustomLog ​/​var/​log/​apache2/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:+        # 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 ===== 
 + 
 +[[http://​www.startssl.com|StartSSL]] bietet kostenlose Server-Zertifikate an, das Root-Zertifikat ist bei den meisten Browsern schon installiert. 
 + 
 +  * 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:​ 
 + 
 +  # openssl genrsa -out disorganized.de.key 4096 
 + 
 +  * CSR (//​certificate signing request//) erzeugen: 
 + 
 +  # openssl req -new -key disorganized.de.key -out disorganized.de.csr 
 +  Country Name (2 letter code) [AU]:DE 
 +  State or Province Name (full name) [Some-State]:​Baden-Wuerttemberg 
 +  Locality Name (eg, city) []:​Karlsruhe 
 +  Organization Name (eg, company) [Internet Widgits Pty Ltd]:​Disorganized Web Services 
 +  Organizational Unit Name (eg, section) []:<​leer>​ 
 +  Common Name (eg, YOUR name) []:​disorganized.de 
 +  Email Address []:​hostmaster@disorganized.de 
 + 
 +  * Über die "​Express Lane" des Start-SSL-Control-Panels das Server-Zertifikat beantragen. 
 + 
 +  * Keinen privaten Schlüssel erzeugen lassen, sondern CSR hochladen. 
 + 
 +  * Im Schritt "Add Domains"​ muss eine Subdomain angegeben werden, ''​www''​ bietet sich da an. 
 + 
 +  * Zertifikat über Control Panel/​Toolbox/​Retrieve Certifikate runterladen. 
 + 
 +  * Im Verzeichnis ''/​etc/​apache2/​ssl''​ den bisherigen privaten Schlüssel und das Zertifikat gegen die StartSSL-Exemplare austauschen. 
 + 
 +  * Intermediate-Zertifikat runterladen:​ 
 + 
 +  # curl -o /​etc/​apache2/​ssl/​sub.class1.server.ca.pem http://​www.startssl.com/​certs/​sub.class1.server.ca.pem 
 + 
 +  * Zertifikat einrichten:
  
   # vi /​etc/​apache2/​sites-available/​disorganized   # vi /​etc/​apache2/​sites-available/​disorganized
   [...]   [...]
-  <​VirtualHost ​*:443> +  <​VirtualHost ​_default_:443> 
-      ​SSLEngine On +  [...] 
-      SSLCertificateFile /​etc/​apache2/​ssl/​nilpferd.disorganized.de.cert +      SSLCertificateFile /​etc/​apache2/​ssl/​disorganized.de.cert 
-      ​SSLCertificateKeyFile ​/​etc/​apache2/​ssl/​nilpferd.disorganized.de.key +      ​SSLCertificateChainFile ​/​etc/​apache2/​ssl/​sub.class1.server.ca.pem 
-   +      ​SSLCertificateKeyFile ​/etc/apache2/ssl/​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:+  * [[Monit]] überprüft den MD5-Fingerprint des Zertifikats und muss deshalb angepasst werden:
  
-  # /etc/init.d/apache2 force-reload +  # openssl x509 -in /etc/apache2/​ssl/​disorganized.de.cert ​-fingerprint -md5 
-  ​# less /​var/​log/​apache2/​error.log+  ​MD5 Fingerprint=38:​71:​0A:​E6:​62:​C3:​3E:​41:​40:​A7:​96:​C8:​63:​71:​20:​7C
   [...]   [...]
-  [infoLoading certificate & private key of SSL-aware server+  ​# 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
   [...]   [...]
-  [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 
server/apache.1267217153.txt.gz · Zuletzt geändert: 2010/02/26 21:45 von ewald