Ich habe eine Anwendung, die als Daemon ausgeführt wird und von einem Skript in /etc/init.d gesteuert wird.
Manchmal müssen wir einige Parameter für den Start / die Steuerung dieser Skripte ändern und dann den Daemon neu starten. Diese Skripte haben nur Schreibrechte für den Root-Benutzer. Wenn ich diese Skripte bearbeite, benötige ich Root-Rechte.
Was ich dachte, ist, dass ich einen Nicht-Root-Benutzer zum Eigentümer dieser Skripte machen sollte. Auf diese Weise können nur root und ein spezieller Benutzer diese Skripte bearbeiten.
Ist es akzeptabel, Dateien in den Verzeichnissen /etc/init.d zu speichern, die sich nicht im Besitz von Root befinden?
Oder ist es absurd, die natürliche Ordnung des Systems zu stören?
Antworten:
Was einem sofort in den Sinn kommt, ist, dass ein unterprivilegierter Benutzer in der Lage ist, Dinge beim Booten als root auszuführen , was für Cracker wünschenswert ist, die:
Dies ist möglich, wenn Ihr unterprivilegierter Benutzer auf irgendeine Weise gefährdet ist, möglicherweise durch einen anderen Dienst (http / etc). Die meisten Angreifer führen schnell ein
ls
oder ein oderfind
mehrere/etc
Aktionen aus, um festzustellen, ob solche Möglichkeiten bestehen. Es gibt Shells, die in verschiedenen Sprachen geschrieben sind, die sie verwenden, was dies einfach macht.Wenn Sie den Server remote verwalten, meistens über SSH, ist die Wahrscheinlichkeit sehr hoch, dass Sie dies erst sehen, wenn Sie das Init-Skript überprüfen, da Sie die Ausgabe beim Booten nicht sehen (Sie sollten jedoch etwas verwenden, das dies betrifft) prüft die Hashes dieser Skripte gegen bekannte Hashes, um festzustellen, ob sich etwas geändert hat, oder ob Versionskontrollsoftware usw. vorhanden ist
Das soll auf keinen Fall passieren, root muss dieses Init-Skript besitzen. Sie könnten die Entwicklung Benutzer in der Liste der sudoers hinzufügen , so dass es bequem genug ist , um das Skript zu aktualisieren, aber ich würde nicht benachteiligten Schreibzugriff auf erlauben rät alles in init.d
quelle
Zusätzlich zu den sehr guten Argumenten von Tim Post möchte ich hinzufügen, dass für ein Setup, bei dem mehrere Personen Änderungen auf einen Server übertragen müssen, die Verwendung eines Konfigurationsverwaltungssystems in Betracht gezogen werden sollte.
Wenn Sie z. B. Puppet, Chef oder Cfengine verwenden, können Sie die entsprechenden Benutzer die Dateien lokal bearbeiten lassen und die Änderungen dann mit der Konfigurationsverwaltung veröffentlichen. Das genaue Einrichten hängt natürlich vom verwendeten System ab. Bei ordnungsgemäßem Einrichten wird jedoch eine Versionsverwaltungssoftware mitgeliefert, mit der Sie problemlos zu einer früheren Version einer Konfigurationsdatei zurückkehren können, wenn (Hinweis: wann , nicht wenn) !) Jemand hat einen Fehler gemacht. Dies erleichtert Ihnen auch das Kopieren der Konfiguration auf ein separates Testsystem usw.
quelle