Sicherer Webserver out of the box mit Caddy

© Michael Borgers, 123RF

HTTPS für alle

,

Mit Caddy gelingt es auch unerfahrenen Anwendern, einen Webserver vernünftig und sicher aufzusetzen. Dabei reduziert er das üblicherweise komplexe Setup von HTTPS auf ein Minimum.

In erster Linie dient ein Webserver dazu, Webseiten und deren Inhalte bereitzustellen und auszuliefern. Er erhält die Anfrage beispielsweise dann, wenn Sie mit Ihrem Webbrowser eine Webseite via HTTP oder HTTPS ansurfen. Der Browser sendet eine Anfrage als HTTP-Request zum Webserver; der nimmt sie entgegen, bereitet die angeforderten Inhalte auf beziehungsweise rendert sie und stellt sie anschließend dem Webbrowser bereit.

Die Statistik der am meisten eingesetzten Webserver führen der Apache HTTP Server, Microsofts Internet Information Services (IIS) sowie Nginx an. Bei den ersten beiden handelt es sich um Veteranen aus den 1990ern, die über vorbereitete Konfigurationen oder Zusatzmodule immer wieder an die sich ändernden, komplexen Bedürfnisse der IT-Infrastruktur angepasst wurden. Die umfangreichen Bücher und Tutorials zu Apache und IIS sprechen Bände über deren Komplexität. Nginx erblickte im Jahr 2004 das Licht der Welt, gilt als modern, leichtgewichtig und flexibel und verrichtet seinen Dienst ebenso zuverlässig und flink wie die Konkurrenten.

Die vielfachen Angriffe auf Webserver und deren Dienste bringen Systemadministratoren immer stärker in Bedrängnis und verunsichern die Nutzer. Um das Vertrauen zu erhalten, gehen mehr und mehr Admins dazu über, ihre Webseiten SSL/TSL-verschlüsselt via HTTPS auszuliefern. Das erfordert üblicherweise mehrere Schritte zum Beantragen, Installieren, Pflegen und regelmäßigen Erneuern der dafür genutzten Zertifikate. Sie gelten nur zeitlich begrenzt, je nach Certification Authority und Budget zwischen 3 Monaten und 10 Jahren.

Die Initiative Let's Encrypt [1] setzt sich zum Ziel, den ganzen Prozess zu vereinfachen, und verbucht damit bereits beachtliche Erfolge (siehe Kasten "Einfach verschlüsselt"). Zum derzeitigen Stand stellte das Projekt bereits für 63 Millionen Domains Zertifikate aus.

Einfach verschlüsselt

Das Projekt Let's Encrypt ist die erste große Initiative der gemeinnützigen Organisation Internet Security Research Group (ISRG). Sie setzt sich zum Ziel, verschlüsselte WWW-Verbindungen zum Standard zu erheben – quasi HTTPS für jedermann. Let's Encrypt setzt bei der Verschlüsselung auf das Ausstellen sogenannter Domainvalidierungszertifikate. Um zu prüfen, ob die Person, die eine Zertifizierungsanfrage stellt, auch tatsächlich Inhaber der Domain ist, erstellt und versendet Let's Encrypt einen Token zu der anfragenden Domain. Danach erfolgt eine Web- oder DNS-Abfrage, bei der sich die Domain durch einen von diesem Token abgeleiteten Schlüssel verifiziert. Das stellt sicher, dass die Inhalte auch tatsächlich vom Betreiber der Webseite stammen. Für die eigene Vertrauenswürdigkeit setzt Let's Encrypt außerdem auf größtmögliche Transparenz. Dafür nutzt das Projekt freie Software und offene Standards in Kombination mit der regelmäßigen Veröffentlichung von Transparenzberichten.

Caddy

An dieser Stelle kommt der Webserver Caddy [2] ins Spiel, der sowohl HTTP/2 (siehe Kasten "Von HTTP 1.1 zu HTTP/2") als auch eine Anbindung an Let's Encrypt von Haus aus mitbringt. Seit seiner Veröffentlichung 2015 gilt er als erster Allzweck-Webserver, der für diese Kombination dem Webmaster nur eine minimale Vorbereitung abfordert. Für Apache [3], Nginx [4] und IIS [5] gibt es zwar zu diesem Zweck ebenfalls Module und Lösungen, doch die befinden sich entweder noch in der Entwicklung oder ihr Setup gestaltet sich deutlich komplexer.

Von HTTP 1.1 zu HTTP/2

Nach langer Diskussion der Entwicklergruppen der unterschiedlichen Webbrowser steht seit Februar 2015 die Version 2.0 des Hypertext Transfer Protocols [10] zur Verfügung. Im RFC 7540 [11] beschrieben, löst HTTP/2 nach und nach das aus dem Jahr 1997 stammende HTTP 1.1 ab. Auswertungen des WWW-Datenverkehrs ergaben Ende 2017 bereits einen Anteil von 20 Prozent für HTTP/2. HTTP/2 bringt etliche Neuerungen [12] mit sich, darunter eine Datenkompression der HTTP-Header sowie das parallele Ausführen von Requests über eine einzige TCP-Verbindung ("Pipelining"). Generell zielt das Protokoll darauf ab, die zur Verfügung stehende Rechenleistung besser auszunutzen und die Zeit für die Übermittlung der Anfrage zu minimieren.

Das in der Programmiersprache Go entwickelte Caddy steht für den privaten Einsatz als kostenfreie Community-Version bereit. Möchten Sie den Webserver kommerziell nutzen, freuen sich die Entwickler über eine einmalige Zahlung von 25 US-Dollar. Das Projekt steht unter der Apache-2.0-Lizenz.

Die folgende, auf Debian 9 alias "Stretch" angepasste Beschreibung basiert auf dem Blogbeitrag von Supriyo Biswas [6]. Sie lässt sich komplett auf Raspbian übertragen, das ja bekanntermaßen auf Debian basiert. Darüber hinaus wurden die Entwicklungen seit seiner Veröffentlichung des Beitrags sowie die stärkere Verwendung von Markdown berücksichtigt.

Installation

Für Caddy stehen derzeit noch keine spezifischen Pakete für bestimmte Distributionen bereit. Im Download-Bereich der Projektseite finden Sie jedoch einen Konfigurator, mit dessen Hilfe Sie das für Ihr System passende Binary auswählen. Dazu zählen auch Varianten für ARMv5 bis ARMv7. Darüber hinaus legen Sie hier auch fest, welche Plugins Sie integrieren möchten (Abbildung 1). Abschließend generiert die Software das nach Ihren Wünschen zusammengestellte Paket. Caddy gibt es daneben unter anderem auch für Windows, viele BSD-Varianten und Mac OS.

Abbildung 1: Bereits auf der Projektseite legen Sie fest, welche Erweiterungen die Software enthalten soll.

Möchten Sie Caddy lieber über die Kommandozeile einrichten, etwa für den Einsatz auf einem Headless-System, beziehen Sie dazu als Erstes als Nutzer Root ein Shell-Skript von der Caddy-Projektwebseite (Listing 1, Zeile 1), geben diesem Ausführungsrechte (Zeile 2) und laden über den Aufruf des Skripts das gewünschte Software-Image herunter (Zeile 3). Zusätzliche Plugins geben Sie im Aufruf als durch Kommas separierte Parameter an (Zeile 4). Die Tabelle "Caddy-Plugins" zeigt eine kleine Auswahl der verfügbaren Erweiterungen.

Listing 1

 

# wget https://getcaddy.com -O getcaddy
# chmod +x getcaddy
# ./getcaddy personal
# ./getcaddy personal http.ipfilter,http.cache

Caddy-Plugins

Name des Plugins

Bedeutung

dyndns

Dynamisches DNS, etwa via Cloudflare

http.cache

Caching für HTTP

http.cgi

Erweiterung um CGI-Skripte

http.expires

Setzen eines Verfallsdatums

http.git

Veröffentlichung/Aktualisierung via Git-Kommandos

http.ipfilter

Zugriff ausgewählter IP-Adressen blockieren

http.webdav

Erweiterung um WebDAV

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 6 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Aktuelle Ausgabe

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.

  • Eingebettet

    Funkmodule, Displays und Analysegeräte für den Raspberry Pi: Auf der Embedded World präsentieren sich zahlreiche Unternehmen interessierten Elektronikbastlern und Entwicklern.