Rollen- / befehlsbasierte privilegierte Eskalation auf Betriebssystemebene für die Verwendung mit Automatisierung über einen Front-End / Back-End-Prozess mit zusätzlicher Authentifizierung

466
IMTheNachoMan

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: osuser1undosuser2
  • 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/osuser1alsosuser1
      • Lesen und Schreiben von Dateien /home/osuser2alsosuser2
    • webuser4 können:
      • Lesen und Schreiben von Dateien /home/osuser1alsosuser1
    • webuser5 können:
      • schreibe Dateien /home/osuser2alsosuser2
  • 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-datadass 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-datakennwortlose sudoPrivilegien (entweder als rootoder die Betriebssystemkonten osuser1und 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-dataKonto erhält, können diese auch sudoals 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

0 Antworten auf die Frage