Wie entferne ich das Benutzersubsystem vollständig von Linux?

7

Ist es möglich, das Benutzersubsystem vollständig von Linux zu entfernen?

Ich spreche NICHT davon, zu verhindern, dass sich Personen anmelden. Ich spreche davon, die Teile des Systems zu entfernen, die sogar die Anmeldung ermöglichen.

Das Ergebnis ist ein Betriebssystem, auf das nach dem Booten niemals zugegriffen werden kann, da es keine Möglichkeit gibt, darauf zuzugreifen, abgesehen von Anwendungen, die bereits darauf ausgeführt werden (z. B. Webserver).

Das Ziel besteht darin, dass das System über keinen Mechanismus gehackt werden kann, für den ein Befehlszeilenzugriff auf Benutzerebene erforderlich ist, da kein Befehlszeilensystem auf Benutzerebene vorhanden ist.

Herzog Dougal
quelle
1
Würde das nicht alles so laufen lassen root, wie es die Antwort von @ Gravy impliziert?
Andrew Henle
@andrewhenle Das Hauptziel besteht darin, ein System zu erstellen, das einfach überhaupt keinen Mechanismus für Benutzer zum Ausführen von Befehlen auf dem System hat und daher keinen Befehlszeilenzugriff erhält. Wenn dies unter Beibehaltung des Benutzerkonzepts im System möglich ist, ist das in Ordnung, aber das Wichtigste ist, dass ich nicht über das Deaktivieren von Dingen spreche, sondern das vollständige Löschen der Teile des Systems, die die Anmeldung ermöglichen, was es unmöglich macht Einloggen.
Duke Dougal
Ich bin mir nicht sicher, wie Sie Muscheln wie effektiv entfernen können bash, da viele Funktionen von ihnen abhängen. Das macht das Verhindern des "Befehlszeilenzugriffs" ziemlich schwierig.
Andrew Henle
@drewbenn Das Ziel ist ein Linux-System, das nicht angemeldet werden kann, nicht weil es richtig konfiguriert ist, um die Anmeldung zu verhindern, sondern weil es nicht angemeldet werden kann, weil es absolut unmöglich ist, sich anzumelden, weil die Software, die die Anmeldung (und die Befehlsausführung) erleichtert, es ist nicht vorhanden. Also frage ich mich, was gelöscht werden muss: sshd, shells, login, pam, getty? Ist das richtig, noch etwas?
Duke Dougal
@drew Ich verstehe nicht wirklich, warum Sie zustimmen müssen, was ich versuche zu tun. Meine Anforderung ist ein System ohne Code zum Anmelden. Bei allem Respekt ist dies meine Anforderung. Warum muss Ihre Genehmigung gültig sein? Was ist an meiner Anforderung ungültig? Sie können sich ohne den entsprechenden Code nicht bei einem System anmelden. Systeme, mit denen Sie sich anmelden können, die jedoch nicht konfiguriert sind, sind anfällig für einen unbekannten Hack, der diese Konfiguration wieder aktiviert. Ich möchte diese Möglichkeit entfernen. Welche weitere Erklärung ist erforderlich?
Duke Dougal

Antworten:

2

Dies ist eine interessante Unterscheidung:

Ich spreche NICHT davon, zu verhindern, dass sich Personen anmelden. Ich spreche davon, die Teile des Systems zu entfernen, die sogar die Anmeldung ermöglichen.

Ich bin mir nicht ganz sicher, ob es tatsächlich etwas anderes als einen semantischen Unterschied gibt. Wenn ich entfernen /bin/loginwürde, könnten Sie sich nicht anmelden (am physischen Terminal), da ich die Anmeldung unmöglich gemacht hätte. Aber ich hätte nicht das gesamte Anmeldesubsystem entfernt.

Mein Vorschlag wäre, so viel wie möglich intakt zu lassen, da es möglicherweise unvorhergesehene Abhängigkeiten gibt. Lassen Sie die Benutzer an Ort und Stelle, damit Ihr Webserver als anderes Konto als ausgeführt wird root. Verhindern Sie interaktive und nicht interaktive Anmeldungen, indem Sie das PAM-Subsystem ändern. Verhindern Sie optional den sudoTypzugriff auf ähnliche Weise.

  1. Bereiten Sie eine "abgelehnte" PAM-Definition vor

    Erstellen Sie /etc/pam.d/deniedmit den folgenden zwei Zeilen:

    auth requisite pam_deny.so
    session requisite pam_deny.so
    
  2. Verhindern Sie Anmeldungen vom Terminal / Bildschirm

    Durch /etc/pam.d/logineine Kopie von ersetzen/etc/pam.d/denied

  3. Verhindern Sie Netzwerkanmeldungen mit ssh

    Durch /etc/pam.d/sshdeine Kopie von ersetzen/etc/pam.d/denied

    Bearbeiten /etc/ssh/sshd_configund sicherstellen, dass UsePam yeseingestellt ist.

  4. Optional deaktivieren Sie beim Versuch sudo

    Durch /etc/pam.d/sudoeine Kopie von ersetzen/etc/pam.d/denied

Anstatt alle Anmeldungen zu verweigern, ist es möglicherweise besser, Root-Anmeldungen vom physischen Terminal / Bildschirm aus zuzulassen und alles andere abzulehnen. Dies könnte auch über PAM erfolgen, liegt jedoch außerhalb des spezifischen Bereichs der Frage.

Roaima
quelle
Ich möchte den Code finden und auslöschen, der Anmeldungen ermöglicht, während die Serveranwendungen (wie ein Webserver) weiterhin ausgeführt werden können. Ich möchte vermeiden, "Dinge aus zu konfigurieren", sondern "Dinge löschen". Wenn sshd auf dem System vorhanden war und der Root-Benutzer Befehle ausführen konnte, wurde das Ziel nicht erreicht, zu verhindern, dass Benutzer jemals Befehle auf dem System ausführen. sshd müsste komplett gelöscht werden.
Duke Dougal
@Duke, mmm, ok. Haben Sie Zeit, alle möglichen Abhängigkeiten zu überprüfen? Ich nicht. Also auf die Halsschlagader (PAM) gehen und das töten. (Löschen Sie die PAM-Dateien jedoch nicht, da es
ausfallsichere Fallbacks
0

Theoretisch könnten Sie den /bin/loginBefehl umbenennen / löschen .

Ich bin mir nicht sicher, ob dies verhindern würde single user modeoder nicht. Auch nicht sicher, ob Sie verhindern wollen single user modeoder nicht.

Sie könnten auch ein paar lustige Dinge damit machen pam.d, die alle Benutzeranmeldungen verhindern würden, aber das würde nur Benutzeranmeldungen verhindern und nicht die Idee von Anmeldungen zerstören.

Wenn ich nach Hause komme, werde ich, wenn ich mich erinnere, eine virtuelle Maschine hochfahren und ausprobieren. Könnte auch die /etc/shadowDatei löschen , aber das könnte auch alles andere auffrischen.

Randnotiz: Sie möchten die Idee der Benutzer nicht vollständig entfernen. Nicht weil es eine schlechte Idee ist, keine Anmeldefähigkeit zu haben (was es ist, aber das ist nicht der Punkt dieses Threads), sondern weil Benutzer aufgrund von Berechtigungen existieren müssen. Ohne Benutzer möchten Sie Erteilung gezwungen werden , rwxauf alle Dateien auf dem System , um für Ihren Dienst zu laufen, die dann auf das Problem der nicht dazu führen würden , um zu Anmelden, um Dinge zu hacken, konnten die Menschen nur Zugang , was sie wollten.

Soße
quelle
Wie im Kommentar zu @andrewhenle erwähnt, bin ich hauptsächlich an einem System interessiert, auf dem keine Software installiert ist, mit der Benutzer sich anmelden und Befehle ausführen können. Ich bin nicht so besorgt über das Konzept der Benutzer, und wie Sie hervorheben, ist das Konzept der Benutzer erforderlich, damit das System funktioniert. Die Frage ist, welcher Code es Benutzern ermöglicht, sich anzumelden und Befehle auszuführen, und wie jeder Teil davon gelöscht werden kann.
Duke Dougal