Ich habe eine Anwendung entwickelt, die NTP verwendet, um die Netzwerkzeit zu ändern und zwei meiner Computer zu synchronisieren. Es läuft wie root
folgt: Nur letzteres darf unter Linux Uhrzeit und Datum ändern (denke ich).
Jetzt möchte ich es als Benutzer ausführen. Aber ich muss auf die Zeit zugreifen.
- Ist es empfehlenswert, einen Daemon unter einem Nicht-Root-Benutzerkonto auszuführen?
- Soll ich meiner Anwendung eine Funktion geben wie
CAP_SYS_TIME
? - Führt es keine Sicherheitslücke ein?
- Gibt es einen besseren Weg?
security
daemon
access-control
Anonymous12223
quelle
quelle
ntp
Benutzerkonto ausgeführt werden (zumindest auf Linux-Systemen), sodass Sie diese Änderung nicht vornehmen müssen. Welches NTP-Paket haben Sie installiert?Antworten:
Ja, und das ist üblich. Zum Beispiel startet Apache als root und gibt dann einen neuen Prozess als www-Daten aus (standardmäßig).
Wie bereits erwähnt, erhält der Angreifer beim Hacken Ihres Programms (z. B. Code-Injection) keinen Root-Zugriff, sondern nur die Berechtigungen, die Sie diesem bestimmten Benutzer erteilt haben.
Dies ist eine gute Idee, da Sie die Verwendung von setuid vermeiden und die Berechtigungen auf diese bestimmte Funktion beschränken.
Sie können die Sicherheit erhöhen, zum Beispiel:
quelle
USER
in einem Verzeichnis ausgeführten Prozess zu sperren , verwenden Siechroot
(führen Sie ihn als Root-Benutzer aus). Sie müssen jedoch zuvor ein Gefängnis (Verzeichnis) erstellen und initialisieren . Kurz gesagt, Sie müssen die Bibliotheken und Binärdateien, die Ihr Prozess benötigt, in dieses Gefängnis stellen und dann aufrufenchroot <path/to/jail> <command>
. Ein gutes Tutorial mit einigen Beispielen, die Sie benötigen, finden Sie hierSofern Sie keine starken, unwiderlegbaren Gründe haben, sollten Sie nur das NTP-Paket verwenden, das mit Ihrer GNU / Linux-Distribution geliefert wird. Es hat Jahre gedauert, bis der Standard-NTP-Daemon ausgereift ist. Er verfügt über ausgefeilte Funktionen wie das Verlangsamen oder Beschleunigen der Systemuhr, damit sie mit einem Netzwerk oder einer GPS-Uhr synchronisiert werden kann. Es ist seit sync'ing Uhren zugeschnitten , so dass es sehr wahrscheinlich ist das beste Werkzeug , um für diesen Zweck.
ntpd
wird nach den letzten Updates (zum Zeitpunkt des Schreibens dieses Beitrags) immer noch beibehalten . Wenn Sie weitere Funktionen benötigen, schlagen wir vor, dass Sie sich direkt an die Entwickler wenden. Vertrauen Sie darauf, was sie dazu zu sagen haben.quelle
Wenn Sie ein Programm haben, das in der Lage sein muss, Funktion X auszuführen (z. B. die Uhr zu manipulieren), und Sie ihm das Privileg / die Befugnis erteilen können, Funktion X auszuführen, und nichts anderes, ist dies besser, als ihm die gesamte Dose Alphabet zuzuweisen Suppe. Dies ist als das Prinzip des geringsten Privilegs bekannt . Überlegen Sie, was passiert, wenn Ihr Programm einen Fehler aufweist - entweder einen normalen Programmierfehler oder eine ausnutzbare Sicherheitslücke. Wenn es als "root" ausgeführt wird, können alle Dateien gelöscht oder an einen Angreifer gesendet werden. Wenn das einzige , was das Programm zu tun , können Sie die Uhr ist zu manipulieren (und nicht-privilegierte Funktionen, wie Dateien in einem Locked-Down - Verzeichnis zu manipulieren), dann ist das das Schlimmste, wenn das Programm Schelm geht passieren kann.
quelle