Fünf wichtige Tipps, um Webserver und Webanwendungen sicherer zu machen

Wissen Sie, wie es um die Sicherheit Ihrer Website oder Ihres Onlineshops bestellt ist? Wir zeigen Ihnen, mit welchen Schutzmaßnahmen Sie beruhigt Ihrem Onlinebusiness nachgehen können.

Aus unzähligen Analysen von Websites wissen wir: Es gibt bei der Absicherung von Webprojekten oftmals noch Luft nach oben.

Woran sollten Sie also beim Betrieb eines Webservers denken? Was ist beim Setup zu beachten? Wir beschreiben technische und organisatorische Maßnahmen, damit Sie Sicherheitspotenziale ausschöpfen können. 

Tipp 1: Verkehr zwischen Server und Internet kontrollieren – Firewall nutzen und Erreichbarkeit von Ports beschränken

Man mag es nicht glauben: Immer wieder wird vergessen, eine Firewall zu schalten und nicht öffentlich benötigte Ports zu schließen. Das kann man tun:

  • Beschränken Sie die Erreichbarkeit von Webservern von außen: Öffentlich sollten nur Port 80 und 443 erreichbar sein. Sperren Sie alle anderen Ports.</li>

  • Erlauben Sie den Zugriff auf den SSH-Port mithilfe einer Firewall nur für Nutzer mit fest definierten IP-Adressen

  • Lassen Sie nicht jeden auf Datenbanken zugreifen (die dann womöglich noch ohne Passwortschutz daherkommen). Nur die eigentliche Webanwendung darf auf die dazugehörigen  Datenbanken zugreifen.

Tipp 2: Die Haustür absperren – Backend und Zugänge absichern

Um das Backend zur Verwaltung Ihrer Webapplikationen (z. B. Log-in zu einem CMS oder einem Onlineshop) vor unberechtigten Zugriffen zu schützen, sollten diese nicht für jeden erreichbar sein. Dabei gibt es vier einfache Maßnahmen, die dies gewährleisten:

  • Benennen Sie Standardpfade um. „/admin“, „/backend“, „/typo3“ kennen die Angreifer auch. 

  • Gewähren Sie Zugriff auf den Backendpfad (z. B. „/backend“) nur für Nutzer mit einer festen IP-Adresse (z. B. ein Büronetzwerk). In Ihrer Webserverkonfiguration können Sie definieren, wer welche Pfade erreichen darf.

  • Aktivieren Sie zusätzlich eine Zwei-Faktor-Authentifizierung (2FA), wenn Ihre Softwarelösung dies zulässt.

  • Sichern Sie das Backend gegebenenfalls zusätzlich durch eine vorgelagerte HTTP-Authentifizierung ab.

Tipp 3: Durch schnelles Agieren sicher sein – Softwarekomponenten immer aktuell halten

Softwarekomponenten aktuell zu halten, ist manchmal mühsam. Aber es ist eine lohnenswerte Fleißarbeit, denn eine Sicherheitslücke im Content-Management-System wird spätestens, wenn sie öffentlich bekannt wird, meist automatisiert durch Angreifer ausgenutzt.

  • Aktualisieren Sie SOFORT und immer ALLE Komponenten, für die ein Update verfügbar ist – auch wenn die Empfehlung des Herstellers für das Update nur auf ein mittleres Risiko hinweist.

  • Diese Empfehlung bezieht sich sowohl auf alle Softwarekomponenten wie Content-Management-Systeme inklusive aller dazugehörigen Pakete als auch Webserverpakete wie NGINX, Apache, Datenbanken und Skriptsprachen wie PHP oder PHP-FPM. 

Tipp 4: Eingangskontrollen einführen – Systemzugänge passwortschützen und Berechtigungen festlegen

Passwörter für Systemzugänge sind ein Thema, das gerne lax gehandhabt wird: Beispiele hierfür sind Standardpasswörter, die für viele Systeme genutzt werden. Auch beliebt ist es, ein Passwort mit anderen zu teilen. Oder – weil es einfacher zu merken ist – ein recht kurzes Passwort zu verwenden. So geht es besser:

  • Erst einmal: Klären Sie, ob wirklich alle Personen einen Admin-Account, der über sämtliche Rechte zur Verwaltung des Systems verfügt, benötigen. Versuchen Sie hier, den Zugriff auf eine möglichst kleine Anzahl von Personen zu beschränken.

  • Nicht jeder muss alles dürfen: Überlegen Sie gut, wer welche Rechte benötigt. Richten Sie dann dementsprechend sinnvoll die Zugriffsrechte ein, und teilen Sie diese zu. So könnten Sie beispielsweise manchen Nutzern nur Zugriff auf Teile des Systems gewähren oder nicht alle Funktionen des Systems nutzbar machen.

  • Gerne vergessen: Stellen Sie sicher, dass Mitarbeiter, die Ihr Unternehmen verlassen, keine Zugänge mehr haben. Accounts sollten gelöscht werden, gemeinsam genutzte Kennwörter sollten so schnell wie möglich neu gesetzt werden.

  • Erzwingen Sie für Ihre Systeme Mindeststandards bei Passwörtern (ruhig großzügig, mindestens 20 Zeichen Länge). Ein möglichst zufälliges Kennwort wird empfohlen. Sehr wichtig ist vor allem aber auch, dass es nicht bereits in früheren Datenlecks gefunden worden ist. Auf https://haveibeenpwned.com/passwords können Sie testen, ob das Kennwort bereits einmal entwendet wurde.

Tipp 5: Wichtige Einstellungen schützen – Zugriff auf typische Standarddateien verhindern

Beim Release einer Webseite wird gerne übersehen, dass auch Dateien veröffentlicht werden, die eigentlich nicht für jeden zugänglich sein sollten, denn in Standarddateien wie Datenbank-Backups oder Dateien aus Ihrer Versionsverwaltung verstecken sich oft wichtige Informationen oder Dateien, die nicht für jeden bestimmt sind.

Durch entsprechende Einstellungen in NGINX oder Apache können Sie solche Zugriffe verhindern. Dateien und Ordner, die bei NGINX und Apache geschützt sein sollten:

  • .git-Ordner mit der Historie der Entwicklung

  • .env-Dateien mit Zugangsdaten und nicht öffentlichen Informationen zum Setup einer Webseite.  Aus Unachtsamkeit können sich diese überall befinden und durch bestimmte Tools automatisch gefunden werden.

  • Temporäre Dateien oder Backups (SQL-Dateien, tarballs); diese sollten Sie auf keinen Fall in öffentlichen Verzeichnissen speichern.

  • Wenn Sie Amazon S3 Object Storage nutzen, achten Sie auf die Zugriffsrechte. Wer kann hier womöglich Inhalte erreichen? Auch hier sind schon oft aus Versehen Daten „abhanden“ gekommen. Angreifer testen regelmäßig bei Diensten wie Amazon S3, ob der Benutzer ungünstigerweise den „Bucket“ für jeden lesbar eingestellt hat.

Zusammenfassung

Es braucht gar nicht so viele „Hygienefaktoren“, um für mehr Sicherheit für eine Webapplikation zu sorgen. Vielmehr ist ein wenig Fleißarbeit notwendig. Welchen dieser Tipps werden Sie zuerst umsetzen?