Benutzer-Werkzeuge

Webseiten-Werkzeuge


server:apache

Dies ist eine alte Version des Dokuments!


Apache 2.2 unter Debian 5.0

Apache 2.2 unter Debian 5.0 einrichten:

Installation

  • Pakete einspielen (apache2-mpm-prefork wegen PHP):
# aptitude install apache2 apache2-mpm-prefork
  • Apache anhalten:
# /etc/init.d/apache2 stop

Konfiguration

  • Module aktivieren:
# a2enmod rewrite
  • Default-Einstellungen ändern:
    • Request-Timeout verringern (Timeout).
    • Security through obscurity (ServerTokens und ServerSignature).
# vi /etc/apache2/apache2.conf
Timeout 60              # war: 300
# vi /etc/apache2/conf.d/security
ServerTokens Minimal    # war: Full
ServerSignature Off     # war: On
  • Zugriffsbeschränkungen erweitern:

# vi /etc/apache2/conf.d/security-local

#
# Deny access to various files that should not be present on the server.
#
<FilesMatch "(^~$|\.bak$|\.BAK$|^wp-config.php$)">
    Order allow,deny
    Deny from all
</FilesMatch>

#
# Deny access to complete filesystem.
#
<Directory />
    Order deny,allow
    Deny from all
    Options none
    AllowOverride none
</Directory>

#
# Deny access to directories that should not be present on the server.
#
<DirectoryMatch /CVS/>
    Order allow,deny
    Deny from all
</DirectoryMatch>
  • Logging konfigurieren:
# vi /etc/apache2/apache2.conf
LogLevel info    # war: warn
[...]
#
# Define an access log for VirtualHosts that don't define their own logfile
#CustomLog /var/log/apache2/other_vhosts_access.log vhost_combined

#
# Don't log if environment variable dontlog is set (see conf.d/dontlog.conf).
CustomLog /var/log/apache2/access.log vhost_combined env=!dontlog
  • Loggen des Zugriffs auf das Monit-Token verhindern:
# vi /etc/apache2/conf.d/dontlog.conf
# env=!dontlog zusaetzlich bei Log-Anweisung noetig:
# CustomLog .../access.log vhost_combined env=!dontlog

# Loggen des Zugriffs auf Monit-Token verhindern
SetEnvIf Request_URI "^\/monit_xxx\/token$" dontlog
  • Nur auf einer bestimmten IP-Adresse horchen:
# vi /etc/apache2/ports.conf
[...]
Listen 81.169.132.218:80
[...]
    Listen 81.169.132.218:443
  • Apache starten und Lauffähigkeit überprüfen:
# /etc/init.d/apache2 start
# ps -Naf | grep apache2
root      [...] /usr/sbin/apache2 -k start
www-data  [...] /usr/sbin/apache2 -k start
[...]
# less /var/log/apache2/error.log
[notice] Apache/2.2.3 configured -- resuming normal operations

Websites

  • Websites werden als Name-based Virtual Host realisiert.
  • Die Webseiten eines Virtual Host <vhost> liegen unter /var/www/<vhost>.
  • Der „www“-Prefix kommt weg: http://www.<vhost>.de//irgendwas wird umgeschrieben nach http://<vhost>.de//irgendwas.
  • Website „default“ deaktivieren:
# a2dissite default
  • Website „disorganized“ konfigurieren:
# mkdir /var/www/disorganized
# vi /etc/apache2/sites-available/disorganized
<VirtualHost *:80>
    ServerAdmin webmaster@disorganized.de
    ServerName disorganized.de

    DocumentRoot /var/www/disorganized/

    <Directory /var/www/disorganized/>
        Order allow,deny
        Allow from all
        AllowOverride none
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    ServerName www.disorganized.de
    Redirect permanent / http://disorganized.de/
</VirtualHost>
  • Site „disorganized“ aktivieren:
# a2ensite disorganized
# /etc/init.d/apache2 force-reload
  • Redirect von www überprüfen (vorher /var/www/disorganized/index.html anlegen, sonst gibt es beim zweiten curl-Aufruf den Fehlercode 403):
$ curl -I http://www.disorganized.de/
HTTP/1.1 301 Moved Permanently
Location: http://disorganized.de/
[...]
$ curl -I http://disorganized.de/
HTTP/1.1 200 OK
[...]

SSL

  • SSL-Modul aktivieren:
# a2enmod ssl
  • Verzeichnis für Zertifikat und privaten Schlüssel anlegen, Dateien kopieren, Berechtigungen setzen:
# 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
  • Starke Verschlüsselung erzwingen:
# vi /etc/apache2/conf.d/ssl.conf
<IfModule mod_ssl.c>

  # 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 disorganized.de

    DocumentRoot /var/www/disorganized/

    <Directory /var/www/disorganized/>
        Order allow,deny
        Allow from all
        AllowOverride none
    </Directory>

    <IfModule mod_rewrite.c>
        RewriteEngine on

        # 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>
  • 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

Zertifikat von StartSSL

StartSSL bietet kostenlose Server-Zertifikate an, das Root-Zertifikat ist bei den meisten Browsern schon installiert.

  • Privaten Schlüssel generieren:
# openssl genrsa -out disorganized.de.key 2048
  • 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
[...]
<VirtualHost _default_:443>
[...]
    SSLCertificateFile /etc/apache2/ssl/disorganized.de.cert
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
    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.1278684022.txt.gz · Zuletzt geändert: 2010/07/09 16:00 von ewald