Frühjahrsputz Apache 2: aufräumen, Performance verbessern & absichern (Update)
Als quelloffenes und freies Produkt stammt Apache von der Apache Software Foundation. Apache darf sich damit rühmen, zu den meist genutzten Webservern im Internet zu gehören. Mit seinem modularen Aufbau erlaubt Apache Server verschiedene Einsatzgebiete: Sie können Apache als Proxy-Server (mod_proxy) einsetzen, eine Verschlüsselung für die Kommunikation zwischen Browser und Webserver einrichten (mod_ssl) oder auch HTTP-Kopfdaten (mod_headers) sowie URLs (mod_rewrite) sehr umfassend manipulieren. Für den Produktiveinsatz ist die Version Apache 2.4.x aktuell, jedoch versorgt die Apache Software Foundation auch die stabile Vorversion 2.2.x mit Updates. Im Folgenden befassen wir uns mit der aktuellen Version Apache 2.4.12.
Apache Server aufräumen
Viele seiner bekannten Funktionen erhält der Apache Webserver erst durch die verschiedenen Module. Beim Aufräumen Ihres Apache Servers ist es also wichtig, zu wissen, welche Module Sie verwenden und welche in Ihrem System womöglich ungenutzt schlummern. Nun kann es gar nicht funktionieren, jedes Modul auswendig zu kennen – zu umfangreich ist Apache. Deshalb lohnt sich ein Blick in die Dokumentation, die Sie auf der Website der Apache Software Foundation finden.
Apache 2.4.x: Module aufräumen
Je mehr Module Sie nutzen, umso höher ist die Auslastung Ihres Speichers. Bedenken Sie: Module, die Sie nicht verwenden, sind zum einen überflüssig, zum anderen gehen sie unnötig zu Lasten des Arbeitsspeichers, was zur Folge haben kann, dass sich die Antworten auf Anfragen erheblich verzögern. Performance-Wunder dürfen Sie nicht erwarten, wenn Sie unnütze Module deaktivieren, eine gute Idee ist es dennoch. Wie Sie wissen, ist ein aufgeräumter Server ein sichererer und schnellerer Server.
In einem ersten Schritt gilt es, herauszufinden, welche Module aktuell überhaupt geladen sind. Geben Sie dafür bitte den Befehl „apachectl -M“ ein. In aller Regel werden die meisten Module in der Datei /etc/httpd/conf/httpd.conf geladen. Möchten Sie sich nicht darauf verlassen, finden Sie mit dem Befehl „grep“ heraus, wo die Module geladen werden: grep -ir LoadModule /etc/httpd/conf/* /etc/httpd/conf.d/*/etc/httpd/vhosts/*
Je nachdem, in wie viele Verzeichnisse Sie Ihre Konfiguration verteilt haben, können hier unterschiedliche Pfade erscheinen.
Eine pauschale Antwort auf die Frage, welche Module Sie deaktivieren können, können wir Ihnen leider nicht geben, da Webserver viele verschiedene Funktionen erfüllen können. Sie können zwei Ansätze verfolgen: Nehmen Sie sich entweder oben verlinkte Dokumentation vor und prüfen Sie Modul für Modul, ob Sie es überhaupt nutzen. Oder Sie betrachten die Anforderungen an Ihren individuellen Server und suchen Ihre Module dementsprechend aus. Da die Module sehr vielfältig sind, ist das Durchgehen der Dokumentation insbesondere für noch nicht allzu versierte User empfehlenswert.
Lassen Sie uns als Beispiel die Datei /etc/httpd/conf/httpd.conf nutzen: sie zeigt aktivierte Proxy-Module. Wissen Sie nicht genau, ob Sie diese benötigen, durchsuchen Sie Ihre Konfiguration mit diesem Befehl: grep -ir proxy /etc/httpd/conf/* /etc/httpd/conf.d/*/etc/httpd/vhosts/*
Werden keine auskommentierten Zeilen ausgegeben, verwenden Sie das Proxy-Modul mit hoher Wahrscheinlichkeit nicht. Kommentieren Sie die entsprechenden Zeilen in der httpd-conf-Datei aus, prüfen Sie mittels Config-Test und starten Sie den Server neu:
service httpd configtest
service httpd graceful
Schlägt der Config-Test fehl, aktivieren Sie das kürzlich deaktivierte Modul bitte wieder. Im Schnellverlauf aktivieren oder deaktivieren Sie Module auch mit a2dismod $modulname bzw. a2enmod $modulname. Zum weiteren Aufräumen Ihres Apache-Servers gehen Sie bitte die Schritte durch, die wir bereits in unserer Frühjahrsputzserie beschrieben haben. Im Sicherheitsbereich dieses Artikels weiter unten finden Sie im Absatz „Apache unterstützt zahlreiche Betriebssysteme“ eine Aufstellung unserer Artikel nach Betriebssystemen.
Die Leistung unter Apache optimieren
Früher oder später gerät jeder Server an seine Performance-Grenzen: Zugriffe scheinen schleppend langsam zu werden. Eine Universallösung zum Tunen der Performance Ihres Apache-Servers existiert leider nicht, da die Gründe für die Performance-Einbußen sehr vielseitig sein können. Bevor Sie nun also über Hardware-Upgrades nachdenken, werfen Sie bitte einen Blick in unsere komplette Frühjahrsputz-Serie; unten finden Sie eine Aufstellung nach Betriebssystemen. Übernehmen Sie bitte die für Sie passende Anleitung.
top: So finden Sie Systembremsen
Bereits in unserem Ubuntu-Server-Beitrag haben wir Ihnen Performance-Tipps gegeben, die Sie als Linux-User hier ebenfalls anwenden können, und den Befehl „top“ vorgestellt. Wenden Sie diesen bitte an, wie im Artikel beschrieben. Möchten Sie im Anschluss etwas über die Festplattenzugriffe herausfinden, eignet sich iotop. Mit diesem Befehl sehen Sie sämtliche Lese- und Schreibraten, aber auch die Raten der einzelnen Prozesse. Auch iotop -o ist ein praktischer Befehl, da er ausschließlich IO-aktive Prozesse ausgibt. Große Überraschungen dürften sich mit diesem Befehl nicht einstellen – insbesondere das Lesen und Schreiben in Datenbanken erzeugt eben etwas IO. Bei dieser Gelegenheit können Sie sich auch etwas mit iostat befassen: Der Befehl zeigt ohne weitere Parameter die Anzahl der gelesenen und geschriebenen Blöcke seit Systemstart an.
Zurück zu top: Mit iftop können Sie die Auslastung des Netzwerks darstellen, um hier etwaige Performance-Bremsen aufzuspüren. Erwähnenswert ist außerdem der Befehl lsof, der Ihnen offene Dateien ausgibt. Jedoch gäbe es ohne das Setzen weiterer Parameter eine Flut an Informationen, die Sie ohnehin nicht benötigen. Angenommen, Sie konnten httpd als Lastenverursacher ausfindig machen, lohnt es sich nun, zu erfahren, welche Dateien denn geöffnet sind. Geben Sie lsof -u apache -c httpd ein (also lsof -User apache -Prozess httpd), um eine Liste der Dateien zu erhalten. Hier werden Sie auch viele Log-Dateien und Module erkennen, die momentan geöffnet sind.
Extra-Tipp: Sind Sie „top“ und „ps“ Leid und möchten Sie die RAM-Auslastung sowie CPU-Load auf einem Blick betrachten, ist „htop“ eine gute Möglichkeit. Sehen Sie htop als Task-Manager für die Linux-Shell. Mit apt-get install htop installieren Sie; anschließend geben Sie zum Öffnen „htop“ in die Shell ein. In der Ausgabe werden Ihnen am unteren Bildschirmrand Tastenkürzel vorgestellt. So erreichen Sie wichtige Funktionen des Programms ohne Umwege. Das Setup rufen Sie mit F2 auf; hier haben Sie auch die Option, die Ausgaben von htop Ihren Bedürfnissen anzupassen. Wählen Sie mit den Pfeiltasten einen Wert aus, den Sie sich anzeigen lassen möchten, und fügen Sie ihn optional einer Spalte hinzu. Mit F5 fügen Sie die Parameter der linken Spalte, mit F6 der rechten Spalte hinzu. Per F3 erreichen Sie die Suche, mit der Sie nach Prozessnamen suchen können. Dafür hat sich in der unteren Leiste ein Eingabefeld geöffnet.
Mittels „renice“ als Feature von htop können Sie Prozessprioritäten festlegen: Sämtliche Prozesse haben in der Unix-Welt sogenannte Nice-Werte. Dieser Nice-Wert verrät die Priorität eines Prozesses – und diese Priorität bestimmt das Recht eines Prozesses auf die Prozessorzeit. Je höher also der Nice-Wert ist, umso umfassender darf der Prozess die CPU-Leistung nutzen. Den Nice-Wert des ausgewählten Prozesses in der geöffneten Liste passen Sie mit F7 und F8 an. Ihre Änderungen werden sofort übernommen.
Sicherheit unter Apache
Einen Server abzusichern, ist das erste, das Anwender machen sollten. Als Server-Eigentümer können Sie im Falle eines Hackerangriffs haftbar gemacht werden! Ziel sollte es also sein, Ihr System so anzupassen, dass Angreifer schwer, idealerweise gar nicht darauf zugreifen können. Lassen Sie uns starten:
Apache härten
Um Ihren Apache-Webserver abzusichern, passen Sie die Parameter innerhalb der Apache-Konfiguration „/etc/apache2/sites-available/default-ssl.conf“ wie folgt beschrieben an:
- Blockieren von SSLv3: Erinnern Sie sich an Poodle? Diese Sicherheitslücke kann dann ausgenutzt werden, wenn Ihr Server einen Fallback auf SSLv3 erlaubt. Dies unterbinden Sie mit „SSLProtocol All -SSLv2 -SSLv3“. Alternativ können Sie sämtliche Protokolle bis auf TLS deaktivieren. Ein Minus vor dem Parameter blockiert zunächst alle, das Plus vor dem jeweils gewünschten Protokoll erlaubt dann eben dieses: „SSLProtocol -All +TLSv1 +TLSv1.1 +TLSv1.2“
- SSL-Kompression: Um Schutz vor Angriffen wie der CRIME-Attacke zu erfahren, können Sie die SSL-Kompression deaktivieren: „SSLComression off“
- Verschlüsselungsvorgaben: Eigentlich entscheidet der Client darüber, welche Verschlüsselung verwendet werden darf. Möchten Sie, dass Ihr Server die Vorgabe trifft, nutzen Sie diesen Befehl: „SSLHonorCipherOrder On“
- Cipher-Suites: Sie haben die Möglichkeit, Cipher-Suites konkret vorzugeben und ungewollte zu blockieren. Lesen Sie dafür bitte unseren PFS-Konfigurationsartikel, in dem Sie auch Copy&Paste-Vorlagen für Apache Server finden.
- HTTPS aktivieren: Aktivieren Sie HTTP Strict Transport Security, kurz: Mit HSTS ist es beispielsweise nicht mehr möglich, Anwender auf unsichere HTTP-Seiten umzuleiten, um Session Cookies abzufischen. Sie teilen Ihrem Apache Server dafür mit, dass er über einen fest definierten Zeitraum hinweg (max-age; die Angabe geschieht in Sekunden) ausschließlich HTTPS-Verbindungen zulässt. Installieren Sie dafür zunächst das Apache-Modul „a2enmod headers“. Tragen Sie nun in die default-ssl.conf-Datei Ihre Parameter ein. In unserem Beispiel beziehen wir mögliche Subdomains mit ein und teilen dem Server mit, dass er in den folgenden fünf Jahren ausschließlich HTTPS-Verbindungen zulässt: „Header always set Strict-Transport-Security „max-age=31536000; includeSubDomains“
- OCSP aktivieren: Das Online Certificate Status Protcol, kurz: OCSP, verfolgt den Zweck, Zertifikate während des Aufbaus der SSL-/TLS-Verbindung auf ihre Echtheit zu überprüfen. Diese Sicherheitsfunktion macht jedoch nur bei offiziellen Zertifikaten von CAs Sinn, nicht bei selbstsignierten Zertifikaten. Dieses Sicherheitsfeature nützt nicht jedem Server-Admin, weshalb Sie sich vorher mit den Vor- und Nachteilen befassen sollten. Möchten Sie das Feature anschließend aktiveren, funktioniert das mit diesem Befehl:
„SSLUseStapling on
SSLStaplingCache „shmcb:logs/stapling-cache(150000)“
Unabhängig davon, für oder gegen welche Features Sie sich entscheiden: Nach jeder Anpassung in der Konfiguration ist es unabdingbar, die Funktionen vor Inbetriebnahme zu testen. Verwenden Sie dafür:
apache2ctl -t
sudo service apache2 restart
Apache unterstützt zahlreiche Betriebssysteme
Apache unterstützt Unix, Linux, NetWare, Win32 und zahlreiche weitere Betriebssysteme. Je nachdem, mit welchem Sie arbeiten, richten Sie sich beim Absichern und Reinigen Ihres Servers gerne nach den bisherigen Anleitungen, die wir für Sie erstellt haben. Sie finden in unserer Frühjahrsputz-Serie …
Antivirus für Apache Server
Eine Antiviren-Lösung Ihres Apache Servers richtet sich danach, welches Betriebssystem Sie verwenden. Wenn Sie bedenken, dass Cyberkriminelle jedwede Komponenten einer Website angreifen können, wird schnell klar, dass Sie Schutz benötigen: CM-Systeme wie WordPress und Joomla sind genauso anfällig wie Anwendungsumgebungen wie PHP und eben die allgegenwärtigen Apache Webserver. Jeder Webserver muss mit einer Antiviren-Software ausgestattet sein, darüber hinaus idealerweise auch mit einer Firewall. Vergleichen Sie bitte verschiedene Security-Suites für Webserver und achten Sie bei Ihrer Auswahl insbesondere auf den Einsatzzweck und die angebotenen Features der Suite. Eine preiswerte Security-Suite bringt Ihnen gar nichts, wenn sie nicht genau die Funktionen abdeckt, die Sie benötigen. Achten Sie nicht nur auf den Preis, sondern vorrangig auf die Ausstattung Ihrer Antiviren-Lösung. Gerne beraten wir Sie diesbezüglich auch.
Fazit zu dem Aufräumen eines Apache Servers
Die Apache Software Foundation hat mit Apache ein quelloffenes Produkt entwickelt, das sich für den Webservereinsatz größter Beliebtheit erfreut. Der modulare Aufbau der Serversoftware ist zweifelsohne maßgeblich an diesem Erfolg beteiligt, denn Sie können Ihren Apache Server sehr individuell konfigurieren und einsetzen. Damit Sie sich nicht verzetteln, haben wir Ihnen eine Anleitung an die Hand gegeben, wie Sie für Ordnung sorgen und die Performance Ihres Servers optimieren. Im Bereich der Sicherheit müssen Sie aktiv werden: Passen Sie die Konfigurationen an, befassen Sie sich auch mit dem OS, das Sie verwenden, und suchen Sie sich eine umfassende, effiziente Security-Suite, um gegen Malware, Spyware und Cyberkriminelle gerüstet zu sein.
Update 05/2017
Wie bereits in 2015 liegt Apache derzeit in der Version 2.x vor: Version 2.2.32 ist älter, wird jedoch noch unterstützt, Version 2.4.25 ist seit 20.12.2016 die aktuelle Version. Damit haben unsere Anleitungen aus diesem Ursprungsbeitrag nach wie vor Bestand.
Schreibe einen Kommentar