Netzwerkauthentifizierung + Roaming-Ausgangsverzeichnis - Welche Technologie sollte ich verwenden?

9

Ich beschäftige mich mit Software, die einem Benutzer eine einzige Identität auf mehreren Computern bietet. Das heißt, ein Benutzer sollte auf jedem Computer die gleichen Berechtigungen haben, und der Benutzer sollte Zugriff auf alle seine Dateien (Roaming-Ausgangsverzeichnis) auf jedem Computer haben. Es scheint viele Lösungen für diese allgemeine Idee zu geben, aber ich versuche, die beste für mich zu finden. Hier sind einige Details zusammen mit den Anforderungen:

  1. Das Computernetzwerk besteht aus Amazon EC2-Instanzen, auf denen Ubuntu ausgeführt wird.
    • Wir greifen mit SSH auf die Maschinen zu.
    • Einige Computer in diesem LAN haben möglicherweise unterschiedliche Verwendungszwecke, aber ich diskutiere nur Computer für einen bestimmten Verwendungszweck (Ausführen einer mandantenfähigen Plattform).
  2. Das System verfügt nicht unbedingt über eine konstante Anzahl von Maschinen.
    • Möglicherweise müssen wir die Anzahl der laufenden Maschinen dauerhaft oder vorübergehend ändern. Dies ist der Grund, warum ich mich mit zentraler Authentifizierung / Speicherung befasse.
  3. Die Umsetzung dieses Effekts sollte sicher sein.
    • Wir sind uns nicht sicher, ob Benutzer direkten Shell-Zugriff haben, aber ihre Software wird möglicherweise (natürlich unter eingeschränkten Linux-Benutzernamen) auf unseren Systemen ausgeführt, was genauso gut ist wie der direkte Shell-Zugriff.
    • Nehmen wir an, dass ihre Software aus Sicherheitsgründen möglicherweise bösartig sein könnte.

Ich habe von mehreren Technologien / Kombinationen gehört, um mein Ziel zu erreichen, bin mir jedoch nicht sicher, welche Auswirkungen diese haben.

  • In einem älteren ServerFault-Beitrag wurde NFS & NIS empfohlen, obwohl die Kombination gemäß diesem alten Artikel von Symantec Sicherheitsprobleme aufweist . In dem Artikel wird vorgeschlagen, auf NIS + umzusteigen. In diesem Wikipedia-Artikel wurden jedoch Aussagen zitiert, die darauf hindeuten, dass Sun von NIS + abweicht. Der empfohlene Ersatz ist eine andere Sache, von der ich gehört habe ...
  • LDAP. Es sieht so aus, als ob LDAP verwendet werden kann, um Benutzerinformationen an einem zentralen Ort in einem Netzwerk zu speichern. NFS müsste weiterhin verwendet werden, um die Anforderung "Roaming-Home-Ordner" abzudecken, aber ich sehe Referenzen, dass sie zusammen verwendet werden. Gibt es Software, die NFS ersetzt, da in dem Symantec-Artikel auf Sicherheitsprobleme in NIS und NFS hingewiesen wurde, oder sollte ich die Vorschläge dieses Artikels zum Sperren beachten? Ich tendiere zu LDAP, weil ein weiteres grundlegendes Element unserer Architektur, RabbitMQ, ein Authentifizierungs- / Autorisierungs-Plugin für LDAP enthält. RabbitMQ ist für Benutzer im System nur eingeschränkt zugänglich, daher möchte ich die Sicherheitssysteme nach Möglichkeit zusammenbinden.
  • Kerberos ist ein weiteres sicheres Authentifizierungsprotokoll, von dem ich gehört habe. Ich habe vor einigen Jahren in einem Kryptographiekurs etwas darüber gelernt, kann mich aber nicht an viel erinnern. Ich habe online Vorschläge gesehen, dass es auf verschiedene Arten mit LDAP kombiniert werden kann. Ist das notwendig? Was sind die Sicherheitsrisiken von LDAP ohne Kerberos? Ich erinnere mich auch, dass Kerberos in einer anderen Software verwendet wurde, die von der Carnegie Mellon University entwickelt wurde ...
  • Andrew File System oder AFS. OpenAFS steht zur Verfügung, obwohl die Einrichtung etwas kompliziert erscheint. An meiner Universität bietet AFS beide Anforderungen ... Ich kann mich an jedem Computer anmelden und mein "AFS-Ordner" ist immer verfügbar (zumindest wenn ich ein AFS-Token erhalte).

Hat jemand neben Vorschlägen, welchen Weg ich suchen sollte, Anleitungen, die besonders hilfreich waren? Wie der fette Text hervorhob, scheint LDAP die beste Wahl zu sein, aber ich bin besonders an den Implementierungsdetails (Keberos? NFS?) In Bezug auf die Sicherheit interessiert.

Brian
quelle

Antworten:

7

Informationen zu Authentifizierung, Autorisierung und Verzeichnis

Dies ist keine vollständige Antwort auf Ihre Frage, aber ich dachte, es könnte hilfreich sein, Ihre Fragen zu NIS vs. LDAP vs. Kerberos zu beantworten.

Beginnen Sie damit , was einen guten Überblick über den Unterschied zwischen Authentifizierung und Autorisierung bietet, der für diese Art von Diskussion wichtig ist.

Kerberos ist, wie Sie sagen, nur ein Authentifizierungsprotokoll. Wenn Sie eine Reihe von Anmeldeinformationen angeben, z. B. einen Benutzernamen und ein Kennwort, erfahren Sie, ob diese gültig sind oder nicht. Das ist alles was es tut.

Im Gegensatz dazu sind sowohl NIS als auch LDAP Verzeichnisdienste. Sie ermöglichen es einem Client, sie nach Informationen über Benutzer abzufragen (wie lautet Ihr Ausgangsverzeichnis? Wie lautet Ihre Benutzer-ID?). Beide können als Authentifizierungsquellen mit unterschiedlichem Grad an Problemen verwendet werden.

NIS führt für sich selbst keine Authentifizierung durch. Vielmehr wird ein Kennwort-Hash für Clientcomputer verfügbar gemacht, und Ihr lokales System führt den eigentlichen Authentifizierungsschritt genauso aus wie für lokale Konten. Das Problem hierbei ist, dass jeder mit einem Konto auf einem Ihrer NIS-Clients alle Ihre Kennwort-Hashes abrufen und sie dann nach Belieben mit Brute-Force-Angriffen angreifen kann.

LDAP ist etwas sicherer, da der Authentifizierungsschritt tatsächlich auf dem Server ausgeführt wird. Sie müssen sicherstellen, dass Sie Ihre LDAP-Sitzungen mit SSL oder TLS verschlüsseln. Andernfalls wird das Kennwort im Klartext auf der Leitung angezeigt, wo es für Paket-Sniffing anfällig ist.

Es ist sehr üblich, Kerberos für die Authentifizierung und dann entweder NIS oder LDAP für die Autorisierung (normalerweise bedeutet dies "Gruppenmitgliedschaft") und Verzeichnisinformationen zu verwenden. Ich würde argumentieren, dass NIS nach dem Entfernen der Kennwort-Hashes (durch Verschieben Ihrer Authentifizierung auf Kerberos) nicht weniger sicher ist als LDAP und den Vorteil hat, dass es auf jeder modernen Linux-Distribution "out of the box" verfügbar ist.

LDAP hingegen ist im Allgemeinen weitaus erweiterbarer, lässt sich besser skalieren, wenn Sie eine große Anzahl von Benutzern (oder anderen Verzeichnisobjekten) haben, bietet umfangreiche Abfragen und ist im Allgemeinen besser zu verwalten. LDAP wird auch nativ in einer Vielzahl von Anwendungen unterstützt, während NIS eine seltsame inzestuöse Beziehung zum Kernbetriebssystem hat, die möglicherweise unerwünscht ist.

Wenn Sie Dinge von Grund auf neu erstellen, würde ich Kerberos für die Authentifizierung und LDAP für Ihren Verzeichnisdienst vorschlagen.

Dateisysteme

NFS hat einen großen Vorteil: Sie haben es bereits, es ist weit verbreitet und im Allgemeinen stabil. NFS hat zwei Hauptnachteile:

  • Es lässt sich nicht gut für parallele E / A skalieren. Wenn Sie eine große Anzahl von Computern haben, die auf dasselbe Dateisystem zugreifen, kann es für Ihren einzelnen NFS-Server schwierig sein, Schritt zu halten. Aus diesem Grund verwenden größere Cluster normalerweise ein Cluster-Dateisystem (wie Lustre, GlusterFS, GPFS, GFS usw.), das für die Unterstützung paralleler E / A ausgelegt ist.

  • Es hat ein schlechtes Sicherheitsmodell. Im Allgemeinen basieren NFS-Sicherheitsentscheidungen vollständig auf Ihrer numerischen Benutzer-ID. Wenn Sie root auf einem System haben, das ein NFS-Dateisystem bereitstellen kann, haben Sie Zugriff auf alle Dateien, da Sie jederzeit einen lokalen Benutzer mit der entsprechenden Benutzer-ID erstellen können. Dies ist nicht unbedingt der Fall, da sowohl NFSv3 als auch NFSv4 die Kerberos-Authentifizierung auf verschiedenen Ebenen unterstützen, aber ich habe noch niemanden getroffen, der dies verwendet ... daher kann Ihre Laufleistung variieren.

Bei kleinen Bereitstellungen verwenden die meisten Benutzer trotz der Einschränkungen nur NFS.

Es gibt eine Vielzahl anderer Lösungen - die oben erwähnten Cluster-Dateisysteme sowie AFS und andere -, aber die meisten dieser Lösungen erfordern einige Arbeiten von Ihrer Seite, damit sie auf der von Ihnen ausgewählten Distribution ausgeführt werden können. Ich habe kürzlich gute Dinge über GlusterFS gehört. Wenn ich also nach einer NFS-Alternative suche, ist dies möglicherweise der erste Ort, an dem ich nachschaue.

Larsks
quelle
Danke, dass du diese Dinge geklärt hast. Ich habe tatsächlich eine gute Grundlage in Bezug auf Autorisierung und Authentifizierung. Ich bin mir nur nicht sicher, welche Funktionen jede Software bietet. Der Speicherteil ist ebenfalls wichtig; Wissen Sie, wie das Sicherheitsmodell von Kerberos / LDAP mit NFS verknüpft ist?
Brian
Ich habe die Antwort mit einigen Informationen zu NFS aktualisiert.
Larsks
In diesem Fall sehe ich keinen Grund, auf einen einzelnen NFS-Server beschränkt zu sein, obwohl einer ausreichend sein kann und später weitere hinzugefügt werden können. help.ubuntu.com/community/AutofsLDAP
84104
Ich habe versucht, diesen AutofsLDAP-Leitfaden sowie andere zu lesen. Es ist entweder schlecht geschrieben oder veraltet, da meine Ergebnisse unterschiedlich sind und ich nicht über einen bestimmten Punkt hinaus fortfahren kann. :(
Brian
Möglicherweise möchten Sie eine neue Frage mit den entsprechenden Details öffnen.
Larsks
0

Dies ist eine teilweise Antwort.

NIS / NIS +
Verwenden Sie kein NIS. Verwenden Sie LDAP mit nis-Schema.

OpenLDAP (auch bekannt als slapd unter Ubuntu)
Stellen Sie sicher, dass Sie die richtigen ACLs und SSF (Sicherheitsstärkefaktoren) einrichten.
Es ist sehr einfach, Passwörter im Klartext zu senden, wenn Sie nicht vorsichtig sind.
http://www.openldap.org/doc/

NFS
NFS ist nicht verschlüsselt.
Es kann mit einigen Tricks in ssl eingewickelt werden.
Ohne Kerberos wird für die Authentifizierung auf ip_addr gesetzt.
Mit Kerberos ist es möglich, dass SASL verwendet wird, um alles zu verschlüsseln.

Kerberos Für
OpenLDAP ist eine SASL-Pass-Through-Authentifizierung für die LDAP-Authentifizierung erforderlich. (Nicht schwierig.)
Sollte DNS-Einträge verwenden. (Nicht erforderlich, aber sehr nützlich).
GSSAPI kann anstelle von SSH-Schlüsseln verwendet werden. (Kann nebeneinander existieren.)
KDC-Maschinen sollten von Ihren Client-Maschinen getrennt sein.

OpenAFS
mit DES verschlüsselt. (
Wird nicht als sicher angesehen.) Erfordert entweder Kerberos oder einen eigenen älteren Authserver.
Hat eigene Dateisystem-ACLs.

84104
quelle