Warum wird die Betriebssystemauthentifizierung als unzureichende Sicherheit für Oracle-Datenbanken eingestuft?

29

Oracle ist ironische OS - Authentifizierung gemäß der Oracle Database Security Guide , das besagt ,

Beachten Sie, dass der Parameter REMOTE_OS_AUTHENT in Oracle Database 11g Release 1 (11.1) veraltet ist und nur aus Gründen der Abwärtskompatibilität beibehalten wird.

Darüber hinaus betrachten die meisten Sicherheitsinformationen und -tools die (externe) Betriebssystemauthentifizierung als Sicherheitsproblem. Ich versuche zu verstehen, warum dies der Fall ist. Hier sind einige Vorteile der Betriebssystemauthentifizierung:

  1. Anwendungen ohne Betriebssystemauthentifizierung müssen Kennwörter in einer Vielzahl von Anwendungen mit jeweils eigenem Sicherheitsmodell und eigenen Sicherheitslücken speichern.
  2. Die Domänenauthentifizierung muss bereits sicher sein. Andernfalls verlangsamt die Datenbanksicherheit den Zugriff auf die Datenbank, kann ihn jedoch nicht verhindern.
  3. Benutzer, die sich nur ein Domänenkennwort merken müssen, können sicherere Domänenkennwörter erstellen als weniger sichere Datenbankkennwörter, wenn die Anzahl der verschiedenen Datenbanken, zu denen sie eine Verbindung herstellen müssen, zunimmt.
Leigh Riffel
quelle
Wo haben Sie gesehen, dass Oracle die externe Authentifizierung ablehnt?
Justin Cave
1
@ Justin Cave Ich werde die Frage mit diesen Informationen aktualisieren.
Leigh Riffel
2
Danke für das Update. Aus Gründen der Übersichtlichkeit wird die externe Authentifizierung von Oracle jedoch nicht abgelehnt, sondern die externe Remote- Authentifizierung, die im Allgemeinen viel weniger sicher ist (wie Gaius weiter unten erläutert)
Justin Cave,

Antworten:

16

Stellen Sie sich das folgende Szenario vor:

  1. Auf gaiusdem Oracle-Server ist ein Unix-Benutzer mit externer Authentifizierung angegeben, sodass in Oracle ein entsprechender Benutzer angegeben ist ops$gaius. Wenn ich bei einer Shell angemeldet bin, kann ich mich auch direkt bei meinem Oracle-Schema anmelden, und meine Cron-Jobs benötigen auch kein im Skript eingebettetes Kennwort.
  2. Remote OS Authentifizierung erlaubt ist, unter der Annahme , dass das LAN 100% sicher ist und die Clients vertraut werden kann ( das gleiche wie rlogin/ rshverwendet normalerweise zugelassen werden)
  3. Ein Angreifer bringt seinen Laptop auf irgendeine Weise in das LAN, weiß, dass ich dort arbeite, erstellt auf seinem Laptop einen lokalen Benutzer mit dem Namen gaiusund führt SQL * Plus als diesen Benutzer aus
  4. Oracle sieht (dh OSUSERin V$SESSION) ist gaiusund meldet diesen Remote-Benutzer an alsops$gaius

Das ist nicht nur lächerlich leicht zu fälschen, aber setzen auf Hut meine Zyniker ist, Oracle kann nicht mehr Geld verdienen Sie ihr Verkauf Phantasie Single - Sign-On - Produkt ... die übrigens nicht alle Punkte erfüllen Sie als Vorteile von OS erhöhen Auth. Zwei Passwörter, die besser sind als eines, sind völlig falsch. Die meisten Leute werden sie sowieso gleich einstellen (es gibt keinen Mechanismus in Oracle, der dies verhindert).

Das allgemeine Prinzip ist, dass es extrem schwierig ist, Software zu verteidigen, wenn ein Angreifer physischen Zugriff hat. Und vertraue niemals dem Kunden.

Gaius
quelle
2
Es ist noch schlimmer als das. Siehe orafaqs "Warum stellen OPS $ -Konten in einer Client / Server-Umgebung ein Sicherheitsrisiko dar?" (Sie beschuldigen Windows, aber Sie haben Recht, es ist alles im Netzwerk)
Joe
3
Wie trägt der Server, der sich auf einer Windows-Domäne befindet, dazu bei? Müsste der Angreifer seinen Computer der Domäne hinzufügen, um ein Konto zu haben, das die Domäne enthält, oder könnte der Angreifer das Vorhandensein der Domäne simulieren, ohne tatsächlich seinem Computer beitreten zu müssen?
Leigh Riffel
Ich vermute, das war ursprünglich zu einer Zeit geschrieben, als alle Server Unix und alle Desktops Windows waren
Gaius
3
@Leigh - Sie können die Remote-Betriebssystemauthentifizierung für Windows-Clients sicherer gestalten, indem Sie OS_AUTHENT_PREFIX als vertrauenswürdige Windows-Domäne festlegen. Dies setzt voraus, dass sich der Remoteclient in dieser vertrauenswürdigen Domäne befindet (oder zu befinden scheint). Das erhöht die Messlatte für einen einfachen "Plug-In" -Computer in einen freien Port erheblich, fügt einen lokalen Benutzer hinzu und Sie sind im Angriff, aber es ist immer noch ziemlich schlagbar.
Justin Cave
1
Vergleichen und Vergleichen mit der tatsächlichen AD / Kerberos-Authentifizierung, dem Entgegennehmen eines Tickets vom Benutzer und dem Überprüfen des Tickets mit dem KDC. Was macht SqlServer wohl, wenn die Windows-Authentifizierung verwendet wird?
Araknid
8

Es erhöht einzelne Fehlerquellen und vergrößert die Risikofläche Ihrer Daten.

Ein Angreifer, der Zugriff auf das System erhält, hat mit der Betriebssystemauthentifizierung Zugriff auf die Datenbank. Da ein sichererer Zugriff auf die Datenbank erforderlich ist, muss der potenzielle Angreifer seine Berechtigungen für das gefährdete System ausweiten, um Root- oder Oracle-Zugriff zu erhalten, und nicht für jeden Benutzer.

Dieses Problem ist eine Funktion des externen Zugriffs auf die Datenbank. Wenn es keinen externen Zugriff gibt und der Computer vollständig gesichert ist, ist die Frage der Berechtigungen umstritten. Wenn Entwickler jedoch Zugriff haben, erhöhen die Benutzerberechtigungen auf Betriebssystemebene den Umfang potenzieller Sicherheitskatastrophen.

Ziehen Sie in Betracht, den Umfang von Sicherheitsverletzungen auf mehrere Ebenen zu beschränken und Benutzern, Anwendungen oder Clients den erforderlichen Zugriff zu gewähren, ohne für jede Instanz ein Konto auf Betriebssystemebene erstellen zu müssen.

Brian Ballsun-Stanton
quelle
Ich verstehe, um es zu vereinfachen - zwei Benutzernamen- / Passwortanforderungen sind sicherer als eine -. Ihre Punkte klingen vernünftig.
Leigh Riffel
Dies ist eine subtil falsche Antwort - das Problem ist nicht die externe Authentifizierung, sondern die externe Remote- Authentifizierung. Ich werde es weiter unten erklären.
Gaius
@Gaius Wäre die externe Betriebssystemauthentifizierung nicht extrem eingeschränkt, wenn sie nicht remote wäre? Wollen Sie damit sagen, dass Oracle die Authentifizierung mit dem Betriebssystem nicht ablehnt, sondern nur die Betriebssystemauthentifizierung von einem Remotecomputer aus ablehnt?
Leigh Riffel
@Leigh - Der Hauptanwendungsfall für die Betriebssystemauthentifizierung lokaler Konten ist für Aufgaben vom Typ DBA, bei denen auf dem Datenbankserver eine Reihe von Shell-Skripts ausgeführt werden, die auf sehr leistungsfähige Konten auf dem Datenbankserver zugreifen müssen. Mit der Betriebssystemauthentifizierung können Sie verhindern, dass in diesen Shell-Skripten unverschlüsselte Kennwörter auf DBA-Ebene enthalten sind.
Justin Cave
@ Justin Batch-Jobs im Allgemeinen, implementiert als Shell-Skripte oder was auch immer, in einzelnen Cron
Gaius
4

Gaius hat bereits darauf hingewiesen, warum die Remote- Betriebssystemauthentifizierung (im Gegensatz zur Vanilla-Betriebssystemauthentifizierung, bei der lokale Computerbenutzer ohne Angabe eines separaten Kennworts auf die Datenbank zugreifen können) relativ unsicher ist.

Ich würde erwarten, dass sich Oracle in diese Richtung bewegt, weil es die Benutzer dazu ermutigen möchte, Unternehmensbenutzer (oder die vollständige Identitätsverwaltungssuite) anstelle von Benutzern zu verwenden, die vom Remote-Betriebssystem authentifiziert wurden. Unternehmensbenutzer haben die gleichen Vorteile wie Benutzer, die über ein Remote-Betriebssystem authentifiziert wurden. Oracle versucht jedoch, Ihren Active Directory-Server für die Authentifizierung des Benutzers zu aktivieren. Sie erhalten die gleichen Vorteile für einmaliges Anmelden, ohne die Sicherheitsüberprüfung dem Client-Computer zu überlassen.

Justin Cave
quelle
LDAP-Authentifizierung kann eine weitere Dose Würmer öffnen ... Ich werde eine längere Antwort posten.
Joe
+1 Vielen Dank, dass Sie auf Enterprise User Security hingewiesen haben. Wir haben bereits über Advanced Security nachgedacht und dies macht es umso attraktiver.
Leigh Riffel
4

Sie weisen ausdrücklich auf eine Authentifizierung im Identitätsstil hin, möchten jedoch auch darauf hinweisen, dass andere Methoden zum Binden von Datenbanken oder anderen Anmeldungen an die Anmeldungen des Betriebssystems genauso schlecht sind. (sei es lokale Passwortdateien, LDAP oder was auch immer für die tatsächliche Speicherung der Anmeldeinformationen)

Wenn Sie Remoteverbindungen zur Datenbank (oder zum Webserver oder zur Authentifizierung) zulassen, ignorieren einige Betriebssysteme möglicherweise festgelegte Regeln, die das Erzwingen von Konten erschweren (z. B. Blockieren von IP-Adressen, von denen die fehlgeschlagenen Versuche ausgehen; Sperren) Benutzer für einen Zeitraum nach einer festgelegten Anzahl von Fehlern, etc). Normalerweise sind diese Regeln an das gesamte Authentifizierungssystem gebunden sshdund nicht an dieses .

Sollte jemand in der Lage sein, eine Verbindung mit der Datenbank / dem Webserver / irgendetwas aus der Ferne herzustellen, kann er das Passwort brutal erzwingen, da Datenbanken normalerweise nicht die gleichen Mechanismen haben, um Versuche zu verlangsamen.

Joe
quelle
2
Ich bin mir nicht sicher, ob ich den Überlegungen hier folge. Wenn Sie eine Oracle-Authentifizierung gegen LDAP haben, müssen Sie LDAP unterbrechen, um das Kennwort zu erhalten. Es würde keine lokale Kopie des Kennwort-Hashs geben, die brutal erzwungen werden könnte, wie dies für einen regulären Oracle-Benutzer der Fall wäre. Wenn Sie sich Sorgen darüber machen, dass Angreifer Ihre LDAP-Authentifizierung übertreffen, haben Sie wahrscheinlich größere Probleme als die Authentifizierung von Oracle-Benutzern. Und es ist einfach genug, Oracle so zu konfigurieren, dass es Konten nach einer Reihe von fehlgeschlagenen Versuchen sperrt, die zulässigen IP-Adressen einschränkt usw. Vieles davon ist in der Tat das Standardverhalten in 11g.
Justin Cave
@Justin: Es ist nur ein Problem, wenn Sie es binden, sodass die Anmeldeinformationen für die Anmeldung am Betriebssystem mit den Anmeldeinformationen für die Anmeldung an der Datenbank (oder dem Webserver usw.) übereinstimmen. Und es hört sich so an, als wäre Oracle bei der Authentifizierung besser geworden als bei der letzten Verwendung, aber die meisten anderen Datenbanken haben dies nicht getan. (und Apache funktioniert auch nicht, so MacOS X Server Benutzer sollten auslagern mod_auth_appleund mod_auth_digest_appledie Standardversionen für, obwohl ich nicht getestet , ob das Problem in 10.6 noch existiert)
Joe