Webanwendungsserver sind häufig öffentlich zugänglich, was sie vielfältigen Gefahren aussetzt.
Viele dieser Risiken lassen sich vorhersehen und leicht eliminieren, während andere unerwartet auftreten können. Um das Risiko unvorhergesehener Ereignisse zu minimieren, präsentieren wir eine Liste mit wichtigen Tipps, wie Sie Webanwendungsserver optimal absichern können.
Bevor wir uns den Tipps widmen, ist es wichtig zu verstehen, dass ein Webanwendungsserver nicht isoliert agiert. Er ist das Herzstück einer Webanwendungsumgebung, die das Hosting und den Betrieb ermöglicht. Daher ist es unabdingbar, alle Komponenten und die gesamte Umgebung der Webanwendung bei der Absicherung zu berücksichtigen.
Eine typische Umgebung zum Hosten und Betreiben von Webanwendungen umfasst das Betriebssystem (Linux, Windows), die Webserver-Software (Apache, Nginx) und einen Datenbankserver. Ein Einbruch in eine dieser Komponenten könnte Angreifern Tür und Tor für unbefugte Aktionen öffnen.
Ein erster grundlegender Schritt zur Absicherung einer solchen Umgebung ist das sorgfältige Studium der Sicherheitsrichtlinien und Best Practices für jede einzelne Komponente. Wir werden uns jedoch einige grundlegende Sicherheitsrichtlinien ansehen, die auf fast alle Webanwendungsumgebungen anwendbar sind.
Die Firewall: Mehr als nur ein Schutzwall
Es mag verlockend sein, diesen Punkt schnell abzuhaken, mit dem Gedanken: „Eine Firewall schützt mein Netzwerk ja bereits.“ Doch Vorsicht ist geboten.
Ihre Firewall mag zwar das Netzwerk abschirmen und unbefugten Zugriff verhindern, aber sie könnte Angreifern dennoch eine Hintertür zum Webanwendungsserver offenlassen.
Wie das?
Ganz einfach: Ihre Netzwerk-Firewall muss eingehenden Datenverkehr auf den Ports 80 und 443 (also HTTP und HTTPS) zulassen, ohne zu wissen, wer oder was sich dahinter verbirgt.
Was Sie zum Schutz Ihrer Anwendung benötigen, ist eine Web Application Firewall (WAF). Diese analysiert den Webverkehr gezielt und blockiert Angriffsversuche, wie beispielsweise Cross-Site-Scripting oder Code-Injection. Eine WAF arbeitet ähnlich wie ein Antivirusprogramm: Sie sucht nach bekannten Mustern im Datenstrom und blockiert bösartige Anfragen.
Um effektiv zu sein, muss die Datenbank der WAF kontinuierlich mit neuen Bedrohungsmustern aktualisiert werden. Das Problem der musterbasierenden Abwehr liegt darin, dass Ihre Webanwendung eines der ersten Ziele einer neuen Bedrohung sein kann, die der WAF noch unbekannt ist.
Aus diesem Grund benötigt Ihre Webanwendung zusätzlich zur Netzwerk-Firewall weitere Schutzebenen.
Suchen Sie nach spezifischen Schwachstellen im Web
Verlassen Sie sich nicht darauf, dass Ihr Webanwendungsserver frei von Schwachstellen ist, nur weil Ihr Netzwerk-Sicherheitsscanner das bestätigt.
Netzwerkscanner können anwendungsspezifische Schwachstellen nicht erkennen. Um diese Schwachstellen zu identifizieren und zu beheben, müssen Sie die Anwendungen einer Reihe von Tests und Audits unterziehen, wie beispielsweise Penetrationstests, Blackbox-Scans und Quellcode-Audits. Keine dieser Methoden ist jedoch perfekt. Im Idealfall sollten Sie so viele wie möglich durchführen, um alle Schwachstellen zu eliminieren.
Sicherheitsscanner, wie beispielsweise Invicti, stellen sicher, dass kein ausnutzbarer Code in der Produktionsumgebung landet. Es kann jedoch logische Schwachstellen geben, die nur durch manuelle Code-Audits erkannt werden können. Manuelle Audits sind nicht nur kostenintensiv, sondern auch fehleranfällig. Eine gute Möglichkeit, diese Art von Audit durchzuführen, ohne viel Geld auszugeben, ist, sie in den Entwicklungsprozess zu integrieren, insbesondere durch Schulungen für Ihre Entwickler.
Schulung Ihrer Entwickler
Entwickler neigen dazu, zu glauben, dass ihre Anwendungen in einer idealen Welt funktionieren, in der Ressourcen unbegrenzt sind, Benutzer keine Fehler machen und es keine bösartigen Akteure gibt. Leider müssen sie sich irgendwann den realen Problemen stellen, insbesondere denen, die mit der Informationssicherheit verbunden sind.
Bei der Entwicklung von Webanwendungen müssen Programmierer Sicherheitsmechanismen kennen und implementieren, um sicherzustellen, dass sie keine Schwachstellen aufweisen. Diese Sicherheitsmechanismen sollten Teil der Best-Practices-Richtlinien sein, die das Entwicklungsteam einhalten muss.
Softwarequalitätsprüfungen dienen der Sicherstellung der Einhaltung der Best Practices. Best Practices und Audits sind die einzigen Möglichkeiten, logische Schwachstellen aufzudecken, wie z. B. das Übergeben unverschlüsselter Parameter innerhalb einer URL, die ein Angreifer problemlos manipulieren könnte, um seine Ziele zu erreichen.
Deaktivieren Sie unnötige Funktionen
Angenommen, die Webanwendungen sind fehlerfrei und die Webfarm ist gesichert, sehen wir uns an, was auf dem Server selbst getan werden kann, um ihn vor Angriffen zu schützen.
Ein grundlegender, sinnvoller Tipp ist, die Anzahl der potenziell gefährdeten 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 nur für den Betrieb Ihrer Webanwendungen verwendet werden. Erwägen Sie daher, alle zusätzlichen Funktionen auf andere Server in Ihrem Netzwerk zu verlagern.
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 durchsickern und in unerwünschte Hände gelangen.
Neben Passwörtern und Berechtigungen enthalten Entwicklungs- und Testumgebungen oft Hintertüren, Protokolldateien, Quellcode oder andere Debugging-Informationen, die sensible Daten, wie Benutzernamen und Passwörter für die Datenbank, offenlegen könnten. Der Bereitstellungsprozess der Webanwendung sollte von einem Administrator durchgeführt werden, der sicherstellt, 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 bevorzugen zwar das Arbeiten mit echten Daten, aber es ist keine gute Idee, ihnen Zugriff auf die Produktionsdatenbank oder auch nur auf eine Kopie davon zu geben. Abgesehen von den offensichtlichen Datenschutzbedenken könnte die Datenbank auch Konfigurationsparameter enthalten, die interne Servereinstellungen offenlegen – wie Endpunktadressen oder Pfadnamen, um nur einige zu nennen.
Halten Sie Ihre Serversoftware auf dem neuesten Stand
So offensichtlich es erscheinen mag, dies ist eine der Aufgaben, die am häufigsten vernachlässigt werden. Laut SUCURI waren 59 % der CMS-Anwendungen veraltet, was ein erhebliches Risiko darstellt.
Jeden Tag tauchen neue Bedrohungen auf, und die einzige Möglichkeit, Ihren Server davor zu schützen, ist die Installation der neuesten Sicherheitspatches.
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 typischen Cybersicherheitsbedrohungen, wie DDoS-Angriffen, zu schützen. Achten Sie also darauf, dass diese Anwendungen immer auf dem neuesten Stand sind und Ihre Geschäftsanwendung wirksam schützen.
Beschränken Sie Zugriffe und Berechtigungen
Eine grundlegende Sicherheitsmaßnahme besteht darin, Fernzugriffe wie RDP und SSH verschlüsselt und über Tunnel zu realisieren. Es ist auch ratsam, eine eingeschränkte Liste von IP-Adressen zu definieren, von denen der Fernzugriff gestattet ist, und jeden unbefugten Anmeldeversuch von einer anderen IP-Adresse zu blockieren.
Administratoren erteilen Dienstkonten gelegentlich alle erdenklichen Privilegien, um sicherzustellen, dass „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 übernehmen.
Ein ausgewogenes Verhältnis zwischen Sicherheit und Praktikabilität erfordert, dass jedes Konto – sowohl Anmelde- als auch Dienstkonten – über die Berechtigungen verfügt, die es zur Ausführung seiner Aufgaben benötigt, und nicht mehr.
Beispielsweise können Sie verschiedene Konten für einen Administrator definieren, der verschiedene Aufgaben ausführt: eines zum Erstellen von Backups, ein anderes zum Bereinigen von Protokolldateien, andere zum Ändern der Konfiguration von Diensten usw. Das Gleiche gilt für Datenbankkonten: Eine Anwendung benötigt normalerweise nur Berechtigungen zum Lesen und Schreiben von Daten, nicht aber zum Erstellen oder Löschen von Tabellen. Daher sollte sie mit einem Konto ausgeführt werden, dessen Berechtigungen auf die Ausführung der erforderlichen Aufgaben beschränkt sind.
Überwachung der Serverprotokolle
Protokolldateien haben ihren Zweck.
Administratoren sollten sie regelmäßig überwachen, um verdächtiges Verhalten zu erkennen, bevor es zu Schäden kommt. Die Analyse von Protokolldateien kann viele Informationen liefern, die Ihnen helfen, die Anwendung besser zu schützen. Im Falle eines Angriffs können die Protokolldateien Ihnen zeigen, wann und wie er begann, was zu einer besseren Schadensbegrenzung beiträgt.
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 informiert
Im Internet finden Sie viele kostenlose und nützliche Informationen, die Sie für Ihre Webanwendung verwenden können. Verpassen Sie keine neuen Beiträge 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. Nehmen Sie sich ein oder zwei Stunden pro Woche Zeit, um sich über die aktuellen Branchenneuigkeiten auf dem Laufenden zu halten – so können Sie sicher sein, dass Sie alles tun, um Ihre Anwendungen zu schützen.