Rollen- / befehlsbasierte privilegierte Eskalation auf Betriebssystemebene für die Verwendung mit Automatisierung über einen Front-End / Back-End-Prozess mit zusätzlicher Authentifizierung
Ich möchte eine LAMP-Web-App / -Lösung entwickeln, und nach einiger Suche beginnt ich zu glauben, dass es nicht möglich ist, das zu tun, was ich will. Ich bin mir nicht sicher, wie ich das kurz erklären soll, also entschuldige ich mich für die Ausführlichkeit.
Und bevor ich anfange, möchte ich mich von teuren Enterprise-Grade-Lösungen fernhalten. Ich hoffe auf etwas, das ich entweder selbst entwickeln kann (wenn jemand mit der Logik / dem Algorithmus des benötigten Codes helfen kann) oder etwas, das frei / Open-Source ist. Im schlimmsten Fall ist es auch gut, wenn ich eine Lizenz für den persönlichen Gebrauch bezahlen muss. Grundsätzlich auf der Suche nach etwas für den persönlichen Gebrauch.
Lassen Sie mich das gewünschte Endergebnis erläutern:
- Benutzerkonten (die keinem OS-Konto zugeordnet sind) werden in der Web-App erstellt
- Typische Authentifizierung / Autorisierung der Web-App (mit 2FA / MFA)
- Benutzerkonten werden zugeordnet, um Dateisystemberechtigungen zu lesen / schreiben, die an ein Betriebssystemkonto gebunden sind
- Diese Zuordnung sollte auf dem Server außerhalb der Web-App verwaltet und verwaltet werden
- Dies ist etwas, das ein Serveradministrator irgendwo auf dem Betriebssystem ausführen würde
- Die Idee ist, dass Benutzer Dateien auf dem Server lesen / schreiben können, als wären sie das zugehörige Betriebssystemkonto
- Die Hoffnung ist, dass der Benutzer zwei Sicherheits-Gates hat, über die er autorisieren muss: die Web-App und das Betriebssystem ( etwas, das die Web-App nicht kennt )
Hier ist ein detaillierteres Beispiel:
- OS hat zwei interaktive Benutzerkonten:
osuser1
undosuser2
- Das Betriebssystem verfügt über ein nicht-menschliches, nicht interaktives Konto, das von Apache folgendermaßen ausgeführt wird:
www-data
- Web - App verfügt über drei menschliche interaktive Konten, die Benutzer mit anmelden wird (ihre Web - Browser):
webuser3
,webuser4
,webuser5
- Die Konten in der Web-App sind auf Betriebssystemebene wie folgt berechtigt:
webuser3
können:- Dateien lesen
/home/osuser1
alsosuser1
- Lesen und Schreiben von Dateien
/home/osuser2
alsosuser2
- Dateien lesen
webuser4
können:- Lesen und Schreiben von Dateien
/home/osuser1
alsosuser1
- Lesen und Schreiben von Dateien
webuser5
können:- schreibe Dateien
/home/osuser2
alsosuser2
- schreibe Dateien
- Diese Zuweisung von Benutzern zu Benutzern von Betriebssystemen zu Betriebssystemen sollte außerhalb des Betriebssystems auf dem Betriebssystem verwaltet werden
Wie ich es gerne hätte:
- Benutzer bei Web app (
webuser3
,webuser4
,webuser5
) - Benutzer interagiert mit der Benutzeroberfläche, um Dateien aufzulisten oder eine Datei in einem Ordner zu erstellen
- Die Web-App fragt nach zusätzlichen Authentifizierungs- / Autorisierungsinformationen, beispielsweise nach einem PW- und / oder 2FA / MFA-Code
- Die Web-App sendet Informationen an das Betriebssystem:
- die zusätzlichen Authentifizierungs- / Autorisierungsinformationen
- die ID des Web-App-Benutzers
- was sie machen wollen (lesen oder erstellen)
- Das Betriebssystem autorisiert die Aktion und sendet sie an die Web-App zurück
Jetzt wird Apache so ausgeführt, www-data
dass er nicht standardmäßig Zugriff hat und ohne sich mit den Berechtigungen für Dateien / Ordner zu beschäftigen /home/osuser#
. Eine Möglichkeit, die oben genannten Ziele zu erreichen, besteht darin, www-data
kennwortlose sudo
Privilegien (entweder als root
oder die Betriebssystemkonten osuser1
und osuser2
) zu erteilen, damit sie als Betriebssystemkonten fungieren können. Das gefällt mir nicht, denn wenn das System kompromittiert ist und ein schlechter Akteur Zugang zu einem www-data
Konto erhält, können diese auch sudo
als OS-Konten verwendet werden /home/osuser#
. Auf diese Weise müsste die Web-App den Benutzer der Web-App auf OS-Benutzerberechtigungen aufrechterhalten.
Offensichtlich ist das O ist nicht bekannt, die Web - App - Konten ( webuser3
, webuser4
, webuser5
) und ich will nicht passende Konten auf dem O zu erstellen habe. Die Hoffnung besteht darin, ein OS-Tool / eine Bibliothek zum Mapping zu verwenden. Etwas, das eine interne Konfiguration externer Konten hätte (die von der Web-App stammen). Vielleicht über Rollen oder Profile. Auf dem Betriebssystem wird in diesem Tool / dieser Bibliothek eine Rolle / ein Profil / Konto erstellt, das den Web-App-Konten entspricht und dann Berechtigungen erteilt.
Das Tool / die Bibliothek sollte zusätzliche Authentifizierung / Autorisierung unterstützen. Etwas, das sicher über eine API oder über Befehlszeilenparameter übergeben werden konnte. Dadurch wird die Autorisierung / Authentifizierung an zwei Stellen aufgeteilt: das Betriebssystem und die Web-App, die jeweils den halben Schlüssel haben.
Ich weiß, dass dies eine verdammt absurde Frage ist, aber ich möchte die Idee nicht aufgeben, ohne die Möglichkeit vollständig zu prüfen.
0 Antworten auf die Frage
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4