Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| 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 |
| [...] | [...] | ||
| - | [info] Loading 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 | ||