Ich habe auf meinem Redhat-Rechner ein Servicekonto erstellt. Der Zweck des Kontos besteht darin, das von mir erstellte Bash-Skript auszuführen.
Das Bash-Skript überprüft grundsätzlich die Systemeigenschaften wie CPU-Info, Ifconfig, Netzwerkstatus, Ports, Prozesse, Dateiberechtigungen und Gerätestatus usw.
Wie bringe ich mein Dienstkonto nun dazu, nur das von mir erstellte Skript auszuführen? Ansonsten sollte dieses Konto nichts tun. Selbst wenn sich jemand mit den Anmeldeinformationen des Dienstkontos bei meinem Server anmeldet, sollte er außer der Skriptausführung nicht einmal die grundlegenden Befehle wie ls, cp, mv, date usw. ausführen können.
Antwort1
basierend auf Ihrem ThemaSo beschränken Sie den Zugriff auf ein Konto in Linux,
Sie würden dieses Konto sowie eine neue Gruppe dafür erstellen, wobei der Gruppenname beispielsweise derselbe sein könnte wie der Kontoname. Das Ergebnis wäre, dass nur dieses Benutzerkonto in dieser neuen Gruppe wäre und es wäre völlig eindeutig, da nichts anderes auf dem System Eigentümer- oder Gruppenberechtigungen in Bezug auf diesen neuen Dienstkontonamen und diese Dienstkontogruppe hätte. Stellen Sie dann Ihr Bash-Skript so ein, dass es diesem Dienstkonto und diesem Dienstgruppennamen gehört. Stellen Sie außerdem die Anmeldeshell für dieses Konto entweder auf /bin/false
oder ein /bin/nologin
.
Was ist der Unterschied zwischen /sbin/nologin und /bin/false
Denken Sie jedoch daran, dass Sie gerade ein neues Konto mit dem alleinigen Zweck erstellt haben, ein Skript auszuführenDUerstellt. Aus Sicherheitssicht haben Sie gerade einen zusätzlichen Schritt von geringem Wert ausgeführt, und jetzt wird sich jeder außer Ihnen, der dieses neue Dienstkonto ohne Wissen im Hintergrund laufen sieht, am Kopf kratzen und sich fragen, was zum Teufel das ist.
Besser ist es, wenn Sie das Skript behalten, da es Ihr Eigentum ist.Sie sind ein gültiger Benutzer und jeder erkennt Ihr Konto, wenn es mit einem laufenden Prozess verknüpft ist- und verwenden Sie dann das Setuid-Bit in Ihrem Skript, um ihm die Berechtigungen zum Ausführen der Aufgaben zu erteilen, da die meisten der von Ihnen erwähnten Aufgaben zum Überprüfen der Systemeigenschaften Root-Rechte erfordern
Ich hatte erwähnt, dass man SETUID nutzen sollte, aber das war falsch, denn man verwendet einShell-Skript, aus Gründen, die hier erklärt werden können: Erlaube „setuid“ in Shell-Skripten
Wenn Sie jedoch ein Programm schreiben und kompilieren, das die von Ihnen benötigten Dinge tut, und dessen ausführbare Datei Ihnen gehört, können Sie die Vorteile von SETUID für diese ausführbare Datei nutzen: