Windows - Verwenden Sie den lokalen Dienst und / oder das Netzwerkdienstkonto für einen Windows-Dienst

Ich habe einen Fensterdienst erstellt, der Dateien in einem bestimmten Verzeichnis auf unserem Windows-Betriebssystem überwacht. Wenn eine Datei erkannt wird, führt der Dienst einige Datei-E/A durch, liest die Dateien, erstellt Unterverzeichnisse usw. Dieser Dienst verwendet auch die Datenbankverbindung, um eine Verbindung zu einem anderen Server herzustellen. Mein Plan ist, den Dienst als Standardkonto "Lokaler Dienst" ausführen zu lassen. Da ich Schreib - /Leseberechtigungen zulassen muss, was das Konto "Lokaler Dienst" anscheinend standardmäßig nicht tut, bin ich legen Sie explizit die Berechtigungen "Volle Kontrolle" für das Konto "Lokaler Dienst" für den Ordner fest, in den ich lese/schreibe.

Ich glaube, das Obige ist gut . Meine Frage ist, muss ich für den Ordner, in den ich lese und schreibe, eine "Netzwerkdienst" - Rolle mit vollständigem Kontrollzugriff einrichten? Ich frage mich, da mein Dienst die Datenbankverbindung zu einem anderen Server verwendet, ob ich das Konto "Netzwerkdienst" einrichten muss.

Ich kann falsch verstehen, was das " Netzwerk Service" - Konto hat.

Author: user 99572 is fine, 2011-03-08

3 answers

Der NT AUTHORITY\NetworkService account wird nur benötigt, wenn Sie mit anderen Computern in einer Domäne kommunizieren, die die Anmeldeinformationen Ihres Computers für die Zugriffskontrolle benötigen. Es ist nicht für einen einfachen Internet - /Netzwerkzugriff erforderlich. Es ist nur für bestimmte Zwecke in einer Active Directory-Domäne erforderlich.

Auch der gesamte Punkt der NT AUTHORITY\LocalService konto ist, dass es minimale Berechtigungen auf dem System hat. Wenn Sie es privilegierter gestalten, wird die Sicherheit der vielen Dienste auf Ihrem System verringert entwickelt, um auf der Ebene niedriger Privilegien laufen es wurde entwickelt, um proffer. Wenn für Ihren Dienst Berechtigungen erforderlich sind, die darüber hinausgehen, sollten Sie ein neues Konto mit den erforderlichen Berechtigungen erstellen und dieses Konto auf der Registerkarte Anmelden der Eigenschaften des Dienstes festlegen. (Dies kann auch programmatisch erfolgen.)

Sie können es auch mit dem Ausführen NT AUTORITY\LocalSystem konto, das unbegrenzten Zugriff auf Ihr System hat, aber ich nehme an, Sie wollten das Konto LocalService für das erhöhte Sicherheit bietet es.

 22
Author: Patches,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-05-17 23:41:14

Die anderen Antworten bestätigen, was Sie über die Verwendung des lokalen Dienstes sagen. Zusammenfassend ist Local Service das empfohlene Konto für Ihren Dienst, es sei denn, Sie benötigen die zusätzlichen Active Directory-SSPI-Funktionen von Network Service.

Um den Lese - /Schreibzugriff auf einen bestimmten Ordner einzuschränken, können Sie jedoch nicht nur Zugriff auf das generische lokale Dienstkonto gewähren. Das Problem, wie andere darauf hingewiesen haben, ist, dass dies auch Lese - / Schreibzugriff auf alle anderen Dienste geben würde wird als lokaler Dienst ausgeführt, und wenn alle Dienste dies tun, erhält der lokale Dienst Zugriff auf immer wichtigere Ressourcen.

Die Lösung besteht darin, Ihren Ordner stattdessen mit Ihrer spezifischen Service-SID zu ACL. Nur Ihrem eigenen Serviceprozess ist Ihre Service-SID zugeordnet, sodass Ihre Ressource dadurch noch weiter gesperrt wird. Sie können die Service-SID mit sc showsid <service name> anzeigen. Die Dienst-SID wird aus dem Dienstnamen generiert, sodass sie auf allen Computern gleich ist.

Zu aktivieren Sie die Nutzung der Dienst-SID durch Ihren Dienst, verwenden Sie ChangeServiceConfig2 mit dem SERVICE_SID_INFO struktur zu setzen SERVICE_SID_TYPE_UNRESTRICTED. Sie können auch SERVICE_SID_TYPE_RESTRICTED, um eine noch eingeschränktere SID zu erhalten, die nur Schreibzugriff auf Ressourcen zulässt, die explizit mit Ihrer Service SID zulässig sind.

Dieser Link enthält die hochrangigen Beschreibungen von Service-SIDs und eingeschränkten Service-SIDs: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/hh125927(v=ws.10)

 4
Author: zhuman - MSFT,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-07-24 08:55:47

Die vorherige Antwort schien die Fragen nicht direkt anzusprechen, also dachte ich, ich würde sie hinzufügen.

  1. Mein Plan ist es, den Dienst als Standardkonto "Lokaler Dienst" ausführen zu lassen. Ich werde explizit "Volle Kontrolle" Privilegien für die Konto" Lokaler Dienst " in dem Ordner, in den ich lese/schreibe, und von. Ich glaube, das obige ist ein guter plan.

Persönlich sehe ich kein großes Problem mit diesem Plan. Mit BUILTINs ist die Wahl zwischen:

  1. Als LOCALSYSTEM ausgeführt - wenn dieser Dienst kompromittiert ist, der Angreifer besitzt Alles, und sofort.
  2. Als LOCALSERVICE ausführen-Wenn dieser Dienst oder einer der vielen anderen Dienste, die unter diesem Konto ausgeführt werden, kompromittiert sind, hat der Angreifer Zugriff auf ein zusätzliches Verzeichnis.*

Es ist wohl vorzuziehen, einige zusätzliche ACLs hinzuzufügen, um die zweite Option verwenden zu können. Ja, die sicherste Option für ein niedriges Privileg, aber hoch der sicherheitsrelevante Dienst würde unter einem maßgeschneiderten Dienstkonto mit niedrigen Berechtigungen ausgeführt. Wenn Sie jedoch nicht für jeden bereitgestellten Dienst ein neues Konto erstellen/Kennwörter verwalten möchten, ist die Verwendung von LocalService für kleinere, nicht sensible Aufgaben nicht so schlimm. Sie müssen nur eine verantwortungsvolle Entscheidung treffen, die auf diesen Überlegungen basiert, z. B. was sich in diesem Verzeichnis oder in dieser Datenbank befindet, Auswirkungen, wenn sie verletzt werden usw.

Obwohl Sie wiederum nach dem Prinzip der geringsten Privilegien sollten setzen Sie nur Full Control, wenn Modify wirklich nicht ausreicht.

2.My die Frage ist, muss ich für den Ordner, in den ich lese und schreibe, eine "Netzwerkdienst" - Rolle mit vollständigem Kontrollzugriff einrichten? Ich bin fragen Sie sich, da mein Dienst die Datenbankverbindung zu einem anderen verwendet server, wenn ich das Konto "Netzwerkdienst" einrichten muss.

Wenn für Ihre Datenbank eine Windows Integrated/SSPI-Anmeldung erforderlich ist, müssen Sie den NetworkService (oder ein Domänendienstkonto) überall verwenden, dh RunAs und Verzeichnisberechtigungen. Angenommen, Sie haben Ihrem Computername$ oder Domänenkonto auch Zugriff auf diese Datenbank gewährt. Ich bezweifle, dass Sie das tun, also, wenn es normale Benutzername/PWD-Authentifizierung verwendet, sollten Sie in der Lage sein, alles mit LocalService zu tun. Sie müssen nur einem Konto Rechte auf diesem Verzeichnis gewähren, je nachdem, was Sie in Ihren RunAs verwenden, nicht beide.

3.Ich kann falsch verstehen, was der" Netzwerkdienst " Konto tun.

LocalService/NetworkService fast identische Konten auf dem lokalen computer. Der Unterschied besteht hauptsächlich darin, was sie im Netzwerk tun können. NS kann auf einige Netzwerkressourcen zugreifen, da es im Netzwerk als echtes (Computer -) Konto angezeigt wird. Aber LS wird als ANONYM erscheinen, so dass es meistens alles im Netzwerk verweigert wird.

Übrigens sollten Sie dafür eine geplante Aufgabe verwenden, keinen Dienst.

*Ab Vista, aufgrund der Service-Isolation kann ein kompromittierter LocalService-Prozess einen anderen nicht einfach angreifen. Jeder LocalService/NetworkService-Dienstprozess / jede LocalService / NetworkService-Instanz erhält im Gegensatz zu Windows 2003 ihre eigene eindeutige Anmeldesitzungs-SID (eindeutiger Eigentümer). Ich bin mir jedoch nicht sicher, ob dies perfekt ist und die DACL-Sicherheitsanfälligkeit für Dateien und Ressourcen vollständig verringert. Eingeschränkte SIDs und schreibbeschränkte Token werden in diesem Zusammenhang erwähnt.

 3
Author: Amit Naidu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-11-13 00:59:28