Mit den Tipps und Workshops im ADMIN-Magazin 03/2013 sichern Administratoren ihre Webserver und Netze gegen Angriffe ab: gegen Abhören sensibler Informationen, ... (mehr)

Bauteil

Um die verschlüsselten SSL-Verbindungen kümmert sich das Apache-Modul »mod_ssl« . Unter vielen, aber leider nicht allen Linux-Distributionen ist es von Haus aus aktiviert. Der Apache-Server lädt »mod_ssl« , wenn in seinen Konfigurationsdateien irgendwo die folgende Zeile auftaucht:

LoadModule ssl_module modules/mod_ssl.so

Meist findet man sie in der zentralen »httpd.conf« , CentOS lagert die Zeile in die Datei »/etc/httpd/conf.d/ssl.conf« aus. Wer die Standardkonfigurationsdateien verwendet, muss vor der oben genannten Zeile lediglich das Hash-Zeichen entfernen. Alternativ bieten einige Linux-Distributionen, darunter Debian, Ubuntu und Open Suse, das Skript »a2enmod« an, das dynamisch ladbare Apache-Module aktiviert. Der Benutzer Root aktiviert damit »mod_ssl« via:

a2enmod ssl

Unter Open Suse ist zusätzlich noch der Befehl »a2enflag SSL« notwendig. Sofern das Skript »a2enmod« vorhanden ist, sollte man es möglichst auch nutzen. Die Distributionen setzen dann meist mehrere, teilweise sogar automatisiert erzeugte Konfigurationsdateien ein. Debian etwa schaltet einzelne Module über symbolische Links ein und aus.

Anfragen via HTTPS trudeln normalerweise an Port 443 ein. Damit Apache dort lauscht, muss man seine Konfiguration um folgenden Abschnitt ergänzen:

<IfModule mod_ssl.c>
        Listen 443
</IfModule>

In welche Konfigurationsdatei dieser Abschnitt gehört, hängt von der Apache-Installation ab. Unter Debian-basierten Systemen steckt er bereits in der Datei »/etc/apache2/ports.conf« , unter Open Suse 12.3 hingegen in der Datei »/etc/apache2/listen.conf« und bei CentOS in »/etc/httpd/conf.d/ssl.conf« . Gegebenenfalls muss man alle vorangestellten Hash-Zeichen »#« entfernen und so den Abschnitt auskommentieren. Wer die Standardkonfigurationsdatei verwendet, wie sie etwa auch dem Windows-Binärpaket von Apache beiliegt, muss in der »httpd.conf« lediglich in der Zeile

#Include conf/extra/httpd-ssl.conf

das Hash-Zeichen entfernen. Damit liest Apache die Datei »httpd-ssl.conf« im Unterverzeichnis »extra« , die den benötigten Abschnitt enthält.

Neuer Gastgeber

Damit Apache die HTTPS-Anfragen beantwortet, muss ein neuer virtueller Host her. Listing 1 zeigt dafür ein einfaches Beispiel: Nach dem Festlegen von Servernamen und Document Root schaltet »SSLEngine On« die Verschlüsselung ein. Das Document-Root-Verzeichnis sollte man wohlüberlegt wählen: Ist es beispielsweise identisch mit dem global festgelegten Document-Root-Verzeichnis, können Besucher die dortigen Seiten sowohl über eine gesicherte als auch eine ungesicherte Verbindung abrufen. Das ist normalerweise auch der Fall, wenn man beim SSL-Host die »DocumentRoot« -Direktive weglässt. Man sollte daher möglichst verschiedene Document Roots verwenden oder den Zugriff auf die entsprechenden Teile der Website anderweitig reglementieren, etwa über das Rewrite-Module.

Listing 1

Virtueller Host mit TLS

 

»SSLCertificateFile« deutet auf den Speicherort des Zertifikats, »SSLCertificateKeyFile« verrät die Datei mit dem privaten Schlüssel. Sofern man ein Zertifikat verwendet, in das der private Schlüssel eingebettet ist, kann man »SSLCertificateKeyFile« weglassen. Aus Sicherheitsgründen sollte man jedoch den privaten Schlüssel immer wie hier gezeigt in eine eigene Datei auslagern.

Zugriffsversuche via SSL protokolliert die Log-Datei »/var/log/apache2/ssl_request_log« . Fehlermeldungen wandern in die Datei »ssl_error_log« , alle Anfragen sammelt »ssl_access_log« . Den Zugriff auf die Seiten der Domain regelt wie üblich ein »Directory« -Abschnitt.

Listing 1 speichert man am besten in einer eigenen Konfigurationsdatei. In welches Verzeichnis sie gehört, hängt wieder von der Apache-Installation ab. Debian-Admins legen sie unter »/etc/apache2/sites-available« ab und benennen sie so wie »ServerName« . Anschließend muss man die Datei noch explizit mit »a2ensite login.example.com« aktivieren, wobei »login.example.com« für den Namen der neuen Konfigurationsdatei steht. Im Fall von Open Suse spendiert man der Datei aus Listing 1 die Endung ».conf« und platziert sie dann im Verzeichnis »/etc/apache2/vhosts.d« . CentOS und dem Windows-Binärpaket von Apache liegt bereits eine Beispielkonfiguration für einen virtuellen Host bei, die sich einfach gemäß Listing 1 anpassen lässt. In CentOS findet man sie in der Datei »/etc/httpd/conf.d/ssl.conf« , unter Windows liegt sie in der Datei »httpd-ssl.conf« im Ordner »conf\extra« der Apache-Installation.

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023