8 wichtige Tipps zum Sichern von Webanwendungsservern

In den meisten Fällen müssen Webanwendungsserver öffentlich zugänglich sein, was bedeutet, dass sie allen Arten von Bedrohungen ausgesetzt sind.

Viele dieser Bedrohungen sind vorhersehbar und leicht vermeidbar, während andere unbekannt sind und Sie unvorbereitet treffen können. Um die Wahrscheinlichkeit dieses letzteren Falls zu minimieren, bieten wir eine Liste mit wichtigen Tipps, um Webanwendungsserver so sicher wie möglich zu halten.

Bevor Sie mit der Tippliste beginnen, müssen Sie verstehen, dass ein Webanwendungsserver keine Insel ist. Der Server ist die zentrale Komponente in der Webanwendungsfarm, die das Hosting und den Betrieb einer Webanwendung ermöglicht. Daher müssen Sie zur Sicherung alle Komponenten berücksichtigen, die sie umgeben, und die gesamte Umgebung der Webanwendung sichern.

Eine grundlegende Umgebung zum Hosten und Ausführen von Webanwendungen umfasst das Betriebssystem (Linux, Windows), die Webserver-Software (Apache, Nginx) und einen Datenbankserver. Wenn in eine dieser Komponenten eingebrochen wird, könnten sich Angreifer Zugang verschaffen und alle böswilligen Aktionen ausführen, die sie wollen.

Ein erster und grundlegender Tipp zum Sichern einer Umgebung wie der oben beschriebenen ist das Lesen der Sicherheitsrichtlinien und der Best-Practice-Liste für jede der Komponenten. Sehen wir uns dennoch einige vernünftige Sicherheitsrichtlinien an, die für fast alle Webanwendungsumgebungen gelten.

Die Firewall entmystifiziert

Sie könnten versucht sein, diesen Punkt schnell zu überprüfen und zu denken: „Zum Glück habe ich bereits eine Firewall, die mein Netzwerk schützt.“ Aber du hältst besser deine Pferde.

Ihre Firewall kümmert sich vielleicht um die Grenzen Ihres Netzwerks und hält die Bösen draußen und die Guten drinnen, aber sie lässt Angreifern mit Sicherheit eine Tür weit offen, um in Ihren Webanwendungsserver einzudringen.

Wie?

Ganz einfach: Ihre Netzwerk-Firewall muss mindestens eingehenden Datenverkehr auf den Ports 80 und 443 (dh HTTP und HTTPS) zulassen und weiß nicht, wer oder was diese Ports passiert.

Was Sie zum Schutz Ihrer Anwendung benötigen, ist eine Web Application Firewall (WAF), die den Webverkehr speziell analysiert und jeden Versuch blockiert, Schwachstellen wie Cross-Site-Scripting oder Code-Injection auszunutzen. Eine WAF funktioniert wie eine typische Antiviren- und Antimalware: Sie sucht nach bekannten Mustern im Datenstrom und blockiert sie, wenn sie eine böswillige Anfrage erkennt.

Um effektiv zu sein, muss die Datenbank der WAF ständig mit neuen Bedrohungsmustern aktualisiert werden, um sie blockieren zu können. Das Problem bei der musterbasierten Angriffsabwehr besteht darin, dass Ihre Webanwendung eines der ersten Ziele einer neuen Bedrohung sein kann, die Ihrer WAF noch nicht bekannt ist.

Aus diesen Gründen benötigt Ihre Webanwendung neben der Netzwerk-Firewall zusätzliche Schutzschichten.

Suchen Sie nach webspezifischen Schwachstellen

Denken Sie auch hier nicht, dass Ihr Webanwendungsserver frei von Schwachstellen ist, nur weil Ihr Netzwerksicherheitsscanner dies sagt.

Netzwerkscanner können keine anwendungsspezifischen Schwachstellen erkennen. Um diese Schwachstellen zu erkennen und zu beseitigen, müssen Sie die Anwendungen einer Reihe von Tests und Audits unterziehen, wie z. B. Penetrationstests, Blackbox-Scans und Quellcode-Auditing. Keine dieser Methoden ist jedoch kugelsicher. Idealerweise sollten Sie so viele davon wie möglich ausführen, um alle Schwachstellen zu beseitigen.

Zum Beispiel Sicherheitsscanner, wie Invicti, stellen Sie sicher, dass kein ausnutzbarer Code in die Produktionsumgebung gelangt. Aber es könnte logische Schwachstellen geben, die nur durch manuelles Code-Auditing erkannt werden können. Manuelles Auditing ist nicht nur sehr kostenintensiv, sondern auch eine menschliche und daher fehleranfällige Methode. Eine gute Idee, um diese Art von Auditing durchzuführen, ohne viel Geld zu verschwenden, besteht darin, es in den Entwicklungsprozess einzubetten, hauptsächlich durch Schulung Ihrer Entwickler.

Bilden Sie Ihre Entwickler aus

Entwickler neigen dazu zu glauben, dass ihre Anwendungen in idealen Welten laufen, in denen Ressourcen unbegrenzt sind, Benutzer keine Fehler machen und es keine Menschen mit rücksichtslosen Absichten gibt. Leider müssen sie sich irgendwann realen Problemen stellen, insbesondere denen in Bezug auf die Informationssicherheit.

Bei der Entwicklung von Webanwendungen müssen Programmierer Sicherheitsmechanismen kennen und implementieren, um sicherzustellen, dass sie frei von Schwachstellen sind. Diese Sicherheitsmechanismen sollten Teil des Best Practices-Leitfadens sein, den das Entwicklungsteam einhalten muss.

Die Softwarequalitätsprüfung wird verwendet, um die Einhaltung von Best Practices sicherzustellen. Best Practices und Auditing sind die einzigen Möglichkeiten, logische Schwachstellen zu erkennen, wie z. B. das Übergeben unverschlüsselter und sichtbarer Parameter innerhalb einer URL, die ein Angreifer leicht ändern könnte, um das zu tun, was er oder sie will.

Deaktivieren Sie unnötige Funktionen

Unter der Annahme, dass die Webanwendungen so fehlerfrei wie möglich sind und die Webfarm gesichert ist, sehen wir uns an, was auf dem Server selbst getan werden kann, um ihn vor Angriffen zu schützen.

Ein grundlegender, vernünftiger Tipp ist, die Anzahl potenziell gefährdeter Einstiegspunkte zu reduzieren. Wenn Angreifer eine der Komponenten des Webservers ausnutzen können, könnte der gesamte Webserver in Gefahr sein.

Erstellen Sie eine Liste aller offenen Ports und laufenden Dienste oder Daemons auf Ihrem Server und schließen, deaktivieren oder schalten Sie die unnötigen ab. Der Server sollte zu keinem anderen Zweck als zum Ausführen Ihrer Webanwendungen verwendet werden, ziehen Sie daher in Betracht, alle zusätzlichen Funktionen auf andere Server in Ihrem Netzwerk zu verlagern.

Verwenden Sie getrennte Umgebungen für Entwicklung, Tests und Produktion

Entwickler und Tester benötigen Berechtigungen für die Umgebungen, in denen sie arbeiten, die sie auf dem Live-Anwendungsserver nicht haben sollten. Selbst wenn Sie ihnen blind vertrauen, könnten ihre Passwörter leicht durchsickern und in unerwünschte Hände geraten.

Neben Kennwörtern und Berechtigungen gibt es in den Entwicklungs- und Testumgebungen normalerweise Hintertüren, Protokolldateien, Quellcode oder andere Debugging-Informationen, die sensible Daten wie Datenbankbenutzernamen und -kennwörter preisgeben könnten. Der Bereitstellungsprozess der Webanwendung sollte von einem Administrator durchgeführt werden, der sicherstellen muss, dass nach der Installation der Anwendung auf dem Live-Server keine vertraulichen Informationen offengelegt werden.

Das gleiche Trennungskonzept muss auf die Daten der Anwendung angewendet werden. Tester und Entwickler ziehen es immer vor, mit echten Daten zu arbeiten, aber es ist keine gute Idee, ihnen Zugriff auf die Produktionsdatenbank oder sogar auf eine Kopie davon zu gewähren. Neben offensichtlichen Datenschutzbedenken könnte die Datenbank Konfigurationsparameter enthalten, die interne Servereinstellungen offenbaren – wie Endpunktadressen oder Pfadnamen, um nur einige zu nennen.

Halten Sie Ihre Serversoftware auf dem neuesten Stand

So offensichtlich es scheinen mag, ist dies eine der am häufigsten übersehenen Aufgaben. SUCURI fand heraus, dass 59 % der CMS-Anwendungen veraltet waren, was ein Risiko darstellt.

Jeden Tag tauchen neue Bedrohungen auf, und die einzige Möglichkeit, sie daran zu hindern, Ihren Server zu gefährden, besteht darin, immer die neuesten Sicherheitspatches zu installieren.

Wir haben bereits erwähnt, dass Netzwerk-Firewalls und Netzwerk-Sicherheitsscanner nicht ausreichen, um Angriffe auf Webanwendungen zu verhindern. Sie sind jedoch notwendig, um Ihren Server vor gängigen Cybersicherheitsbedrohungen wie DDoS-Angriffen zu schützen. Stellen Sie also sicher, dass Sie solche Anwendungen immer auf dem neuesten Stand haben und dass sie Ihre Geschäftsanwendung effektiv schützen.

Beschränken Sie den Zugriff und die Berechtigungen

Eine grundlegende Sicherheitsmaßnahme besteht darin, den Fernzugriffsverkehr – wie RDP und SSH – verschlüsselt und getunnelt zu halten. Es ist auch eine gute Idee, eine reduzierte Liste von IP-Adressen zu führen, von denen aus der Fernzugriff erlaubt ist, und sicherzustellen, dass jeder Versuch, sich von einer anderen IP aus fern anzumelden, blockiert wird.

Administratoren geben Dienstkonten gelegentlich alle möglichen Privilegien, weil sie wissen, dass damit „alles funktioniert“. Dies ist jedoch keine gute Vorgehensweise, da Angreifer Schwachstellen in den Diensten ausnutzen können, um in den Server einzudringen. Wenn diese Dienste mit Administratorrechten ausgeführt werden, können sie den gesamten Server beschlagnahmen.

Ein ausgewogenes Verhältnis zwischen Sicherheit und Praktikabilität erfordert, dass jedes Konto – sowohl Anmeldekonten als auch Dienstkonten – über die Berechtigungen verfügt, die es zur Ausführung seiner Aufgabe benötigt, und sonst nichts.

Beispielsweise können Sie verschiedene Konten für einen Administrator definieren, um verschiedene Aufgaben auszuführen: eines zum Erstellen von Sicherungen, ein anderes zum Bereinigen von Protokolldateien, andere zum Ändern der Konfiguration von Diensten und so weiter. Das Gleiche gilt für Datenbankkonten: Eine Anwendung benötigt normalerweise nur die Berechtigungen zum Lesen und Schreiben von Daten, nicht jedoch zum Erstellen oder Löschen von Tabellen. Daher sollte es mit einem Konto ausgeführt werden, dessen Berechtigungen auf die Ausführung der Aufgaben beschränkt sind, die es ausführen muss.

Behalten Sie die Serverprotokolle im Auge

Protokolldateien gibt es aus einem bestimmten Grund.

Administratoren sollten sie regelmäßig überwachen, um verdächtiges Verhalten zu erkennen, bevor es Schaden anrichtet. Durch die Analyse von Protokolldateien können Sie viele Informationen aufdecken, die Ihnen helfen, die Anwendung besser zu schützen. Wenn ein Angriff stattfinden sollte, können Protokolldateien Ihnen zeigen, wann und wie er begonnen hat, und so zu einer besseren Schadensbegrenzung beitragen.

Sie müssen auch über ein automatisiertes Verfahren verfügen, um alte Protokolldateien zu löschen oder veraltete Informationen zu bereinigen, um zu verhindern, dass sie den gesamten verfügbaren Speicherplatz auf dem Server verbrauchen.

Bonus-Tipp: Bleiben Sie auf dem Laufenden

Im Internet finden Sie viele kostenlose und nützliche Informationen, die Sie für Ihre Webanwendung nutzen können. Verpassen Sie keinen neuen Beitrag in seriösen Sicherheitsblogs (wie diesem) und bleiben Sie auf dem Laufenden, was in der Sicherheits- und Webbranche passiert.

Tutorials, Kurse, Videos und Bücher sind ebenfalls Quellen für nützliches Wissen. Üben Sie es, ein oder zwei Stunden pro Woche damit zu verbringen, über Branchenneuigkeiten auf dem Laufenden zu bleiben – das gibt Ihnen die Gewissheit, dass Sie das Richtige tun, um Ihre Anwendungen zu schützen.