
Die Sicherheit ihres Datenbankensystems sollte immer höchste Priorität haben. Denn dieses System ist das Herz Ihres Unternehmens und sollte deshalb vor ungewollten Eingriffen geschützt sein. Darum zählt zu einer guten Planung eines solchen Systems ebenfalls ein gutes Sicherheitskonzept. Darin sollten Lösungen enthalten sein, welche Maßnahmen ergreifen, wenn beispielsweise das Eindringen einer fremden Instanz erkannt wird. Es ist aber wichtig hinzuzufügen, dass es nicht die eine initiale Lösung für Sicherheit gibt. Jedes System sollte an seine eigenen Anforderungen und Sicherheitsbedürfnisse angepasst werden. Das übergeordnete Ziel sollte sein, das Sicherheitskonzept so aufzuziehen, dass es einer Ummauerung der Daten gleicht, die Gefahren jeglicher Art aussperrt.
Viele Nutzer vertrauen aus diesem Grund auf Microsoft SQL Server. Hier sind bereits sehr nützliche Tools und Funktionen zum Schutze Ihrer Datenbanken enthalten. Im weiteren Artikel gehen wir darauf ein, wie das Vorgehen eines Eindringlings aussieht und welche Maßnahmen an welcher Stelle getroffenen werden können, um dies zu verhindern oder zu erschweren.
Wie sehen Angriffe aus?
Als erstes muss der Angreifer einen Weg in Ihr Netzwerk finden. Hierfür gibt es mehrere Ansätze, die verfolgt werden können. Der Erste wäre, sich bereits bekannte Sicherheitslücken in alter Software oder Firewalls zu Nutze zu machen. Deswegen sollte darauf geachtet werden, dass verwendete Software und Firewalls auf dem aktuellen Stand sind. Das Internet verändert sich ständig und es werden immer wieder neue Lücken entdeckt. Darum wird es hier immer wieder Updates geben, um diese Lücken zu füllen. Aber wie es häufig der Fall ist, ist ein menschlicher Fehler meistens Grund für das Eindringen eines Angreifers. Bekannte Beispiele sind:
-
Phishing Mails
Hier versucht der Angreifer einen Zugriff über infizierte Mails zu erhalten. -
Schwache Passwörter
Ein einfaches Passwort kann schnell geknackt werden. Somit hätte ein Angreifer einen einfachen Weg ins System -
Geklonte Schein-WLAN-Zugangspunkte
Sobald sich hier angemeldet wird, kann ein Angreifer Informationen abfangen. Darum sollte immer sicher gestellt sein, in einem bekannten Netzwerk zu sein. -
Social Engineering
Wahrscheinlich die trickreichste Art und Weise an Informationen zu gelangen. Hier wir versucht, in Gesprächen mehr über den Aufbau des Systems zu erhalten, um damit vermeintliche Schwachstellen ausnutzen zu können
Damit diese Ansätze für einen Angreifer keine Option darstellen, sollten Mitarbeiter auf genau diese Bedrohungen geschult werden. Denn wenn man weiß, worauf man achten muss, werden diese Fehler weniger verursacht.
Scouting
Aber wir wollen im Weiteren davon ausgehen, dass ein Angreifer sich Zugriff zu dem Netzwerk verschafft hat. Sein nächster Schritt wird sein, mögliche Beute zu identifizieren und einen Überblick zu verschaffen, welche Geräte im Netzwerk sind. Da wir uns auf Datenbanken spezialisieren wollen, besitzt unser System eine Datenbank, auf die es der Angreifer abgesehen hat. Darum wird der erste Schritt in einem neuen Netzwerk sein, einen Portscan durchzuführen. Damit soll herausgefunden werden, wo sich die Datenbank befindet und wie der Server heißt.
Wie kann man das verhindern?
Eine mögliche Option ist die Veränderung des Standard-Ports auf einen beliebig anderen. Zu dieser Thematik gibt es viele Diskussionen. Die beiden Seiten, die sich hier gebildet haben, befinden sich aber eher in einem kleinen Glaubenskrieg. Das eine Lager, ist der Meinung, man verkompliziert nur die Umgebung - denn für jede SQL Instanz muss sich ein anderer Port gemerkt werden. Dagegen behauptet das andere Lager, dass es hierfür Tools gibt, die das vereinfachen können. Wobei auch hier die Sicherheit der Tools wieder in Frage gestellt werden sollte.
Das nächste Argument ist, dass mit einem Portscan auch der zufällig gewählte Port herausgefunden werden kann. Häufig werden Skripte aus dem Internet verwendet, um einen Portscan durchzuführen. Diese Skripte suchen in erster Linie nach dem Standard-Port. Das bedeutet, dass man sich gegen die meisten Angriffe mit solchen Skripten durch das Ändern des Standard-Ports schützen kann.
Ist der Angreifer jedoch hartnäckig und von der erfahrenen Sorte, wird dies für ihn keine große Hürde darstellen.
Abschließend lässt sich sagen, es ist eine kleine und vor allem einfache Änderung, die vor Angriffen aus der breiten Masse schützt und dabei vielleicht auch hartnäckige Angriffe zumindest verlangsamt.
Connecting
Hat der Angreifer trotzdem einen Weg gefunden, den Namen und die IP des Hosts herauszufinden, wäre der nächste Schritt eine erfolgreiche Verbindung mit dem Server herzustellen. Eine große Schwachstelle stellt hier die SQL Authentifikation dar. Denn in Sachen Sicherheit, kommt diese nicht an die von Microsoft heran. Wir empfehlen daher dringend, jeglichen Zugriff nur über die Microsoft Authentifikation laufen und überprüfen zu lassen. Ergänzend dazu sollten Sie sich eine eigene starke Passwortpolicy einrichten und durchführen. Darüberhinaus ist auch eine weitere mögliche Angriffsfläche nicht außer Acht zu lassen. Die Rede ist von der SQL Injection. Es ist möglich, über Eingaben in die Datenbank auch Code einzuspeisen. Wenn dieser ausgeführt wird, kann er Daten verändern oder zerstören und es gibt die Möglichkeit, sensitive Daten auszugeben. Darum sollte unbedingt jede Eingabe kontrolliert und validiert werden, damit es dazu nicht kommt.
Accessing
Gehen wir nun davon aus, dass es dem Angreifer dennoch gelungen ist, sich erfolgreich auf dem Server einzuloggen. Sein nächstes Ziel wird voraussichtlich sein, sich ausreichend Rechte zu verschaffen. Als erstes wird hierbei nach einer TRUSTWORTHY
Datenbank geschaut, deren Besitzer die Rolle sysadmin hat. Damit können stored procedures erstellt werden, die als owner, also als sysadmin, ausgeführt werden. Somit kann man sich über die Prozedur selbst die Rolle des sysadmin zuweisen. Das kann verhindert werden, indem erst keine Datenbank als TRUSTWORTHY
markiert wird. Will man trotzdem Zugriff auf externe Daten haben empfiehlt es sich, dies über Zertifikate zu machen. Hat der Angreifer Glück, hat er einen Login erwischt, der die Rolle securityadmin hat. Die Rolle securityadmin ist dafür gedacht, bestehende Logins zu verwalten. Das kann dann ausgenutzt werden, indem neue Logins mit hohen Rechten vergeben werden. In erster Linie lässt sich das nicht verhindern. Darum sollte man sehr vorsichtig mit der Verteilung einer Rolle sein.
Die Rollenverteilung ist auch für den späteren Fall wichtig, wenn der Angreifer sich einen Login mit vielen Rechten erstellt hat. Es sollte auf jeden Fall mit dem “Principle of Least Privilege” gearbeitet werden. Das bedeutet, jeder User erhält nur so viele Rechte, dass er:sie gerade noch seine:ihre Arbeit erledigen kann. Als Beispiel: Jemand aus Human Ressources braucht keinen Zugriff auf Daten der Produktion, wenn man sich das Beispiel einer AdventureWorks Datenbank anschaut. Es bietet sich an der Stelle natürlich an, eigene Rollen zu erstellen, damit die Verteilung der Rechte vereinfacht wird. Man muss jedoch beachten, dass es bei zu vielen Rollen schnell zu Chaos kommen kann. Wenn man die Übersicht verliert kann es passieren, dass ein User über mehrere Rollen verfügt und Zugriffe hat, die er erst gar nicht haben sollte. Darum sollte dringend auf eine übersichtliche und unkomplizierte Rollenverteilung geachtet werden. Denn auch das macht es schwerer für einen Angreifer, wenn er sich für jeden Bereich einen neuen Login besorgen muss.