Ist es ein Sicherheitsrisiko, meine Crontab-Jobs als Root auszuführen?

8

Ich habe einige Cron-Jobs, die ich ausführe - hauptsächlich Backup-bezogene Dinge.

Ich muss ein Backup wie / etc / apache2 / sites / available etc sichern, für das Root-Zugriff erforderlich ist.

Ich habe ein paar Fragen:

Bei Ausführung auf einem Headless-Server:

  1. Unter welchem ​​Benutzer wird das Skript ausgeführt (vorausgesetzt, ich gebe im Cron-Jobeintrag keinen Benutzer an)?
  2. Ist es in Ordnung, das Sicherungsskript als Root auszuführen - oder wirft dies eine Sicherheitsfrage auf?

Übrigens läuft auf meinem Server Ubuntu 10.0.4 LTS

user35402
quelle

Antworten:

15

Wenn Sie den Zugriff auf das Skript ausreichend gesichert und sinnvolle Vorsichtsmaßnahmen getroffen haben, ist es normalerweise kein Sicherheitsrisiko, etwas von Roots Crontab aus auszuführen.

Führen Sie jedoch kein Skript als Root aus, das ein Nicht-Root-Benutzer bearbeiten oder überschreiben kann. Dies gilt sowohl für Jobs, die von cron als auch interaktiv ausgeführt werden.

Wenn dieses Skript andere Dateien enthält, gilt dies auch für diese.

Verwenden Sie im Zweifelsfall immer das Prinzip des geringsten Privilegs. Wenn Sie sich immer noch nicht sicher sind, können Sie jederzeit spezifische Fragen in Foren und im IRC stellen.


Es gibt (fast) immer eine Möglichkeit, etwas als Nicht-Root-Benutzer auszuführen. Wenn alles andere nicht mit sudo funktioniert, um einen Benutzer auf bestimmte Befehle zu beschränken, wird auch das Schadenspotential begrenzt.

In dem Beispiel, das Sie für das Sichern von / etc / apache2 / sites-available angegeben haben, ist diese Datei standardmäßig für jedermann lesbar, was bedeutet, dass der Zugriff auf das Ziel nur von root beschreibbar ist.

Sie könnten das durch beheben

  • Erstellen Sie eine Gruppe namens backupadmins (zum Beispiel).
  • Setzen Sie die Gruppe im Zielverzeichnis auf backupadmins
  • Fügen Sie einen Benutzer namens backupuser hinzu (zum Beispiel).
  • Fügen Sie den Benutzer backupuser zur Gruppe backupadmins hinzu.
  • Machen Sie das Verzeichnis für die Gruppe backupadmins beschreibbar
  • Führen Sie den Cron-Job über die Crontab des Sicherungsbenutzers aus.
Richard Holloway
quelle
+1 für die nützliche Schritt-für-Schritt-Anleitung. Ihre Antwort war äußerst hilfreich. Ich hatte sowieso vor, diesen Weg zu gehen, aber da es das erste Mal war, dass ich es tat, ist es beruhigend zu sehen, dass es hier empfohlen wird (und einige Leute scheinen Ihrer Empfehlung zuzustimmen).
user35402
Übrigens, wenn ich die Benutzergruppe und den Benutzer wie von Ihnen vorgeschlagen erstelle, kann ich dann auf / etc / apache / sites-available und andere Ordner zugreifen, die (zu Recht) nur auf den Root-Zugriff beschränkt sind?. Wie komme ich um dieses Problem herum?
user35402
3

Es hängt davon ab, was die Skripte tun. Wenn sie Daten sichern, ist es wahrscheinlich in Ordnung, dass sie root sind. Wenn ein böswilliger Benutzer diese Skripte überschreibt, haben Sie wahrscheinlich sowieso größere Probleme.

Wenn sie dumme Dinge tun, wie das Ausführen von Dateien in Verzeichnissen oder irgendetwas, das durch den Inhalt der Webverzeichnisse beeinflusst werden könnte, müssen Sie wahrscheinlich nach Alternativen suchen.

James L.
quelle
2

Millionen von Cron-Jobs auf der ganzen Welt werden jeden Tag als Root ausgeführt (oder in welchem ​​Zeitraum auch immer).

Wichtig ist, dass die richtigen Berechtigungen festgelegt werden. Wenn Sie etwas ausführen, das von jedem geschrieben werden kann, kann ein böswilliger Benutzer oder Prozess die Funktionsweise ändern.

Cron-Jobs werden im Allgemeinen vom Eigentümer der Crontab ausgeführt. Ein Benutzer crontab könnte sich /var/spool/cron/crontabs/usernamebeispielsweise in befinden. Cronjobs , die in sind /etc/crontab, /etc/cron.d/oder /etc/cron.hourly(täglich, wöchentlich, monatlich) wird von root ausgeführt werden. Es ist wichtig, dass der Besitz und die Berechtigungen auch für diese Crontab-Dateien korrekt sind.

Bis auf weiteres angehalten.
quelle