Ich habe einen Windows-Dienst 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-Vorgänge durch, liest die Dateien, erstellt Unterverzeichnisse usw. Dieser Dienst verwendet auch die Datenbankkonnektivität, um eine Verbindung zu einem anderen Server herzustellen. Mein Plan ist es, den Dienst als Standardkonto für "Lokale Dienste" auszuführen. Da ich Schreib- / Leseberechtigungen zulassen muss, die anscheinend vom Konto "Lokaler Dienst" nicht standardmäßig ausgeführt werden, werde ich explizit die Berechtigungen "Vollzugriff" für das Konto "Lokaler Dienst" für den von mir verwendeten Ordner festlegen Lesen / Schreiben von und zu.
Ich glaube, das oben Genannte ist gut. Meine Frage ist, ob ich für den Ordner, in den ich lese und schreibe, eine "Netzwerkdienst" -Rolle mit Vollzugriff einrichten muss. Ich frage mich, ob mein Dienst die Datenbankverbindung zu einem anderen Server verwendet, wenn ich das Konto "Netzwerkdienst" einrichten muss.
Möglicherweise habe ich ein Missverständnis darüber, was das Konto "Netzwerkdienst" bewirkt.
quelle
LocalService
gefährdet ist, hat er Zugriff auf alles, für das Sie sich geöffnet habenLocalService
, wohingegen er normalerweise Zugriff auf nichts hat. Dies ist seit den 70er Jahren das Standardverfahren für die Computersicherheit .LocalSystem
es mehr Rechte und Privilegien als normale Administratorkonten gibt.Die vorherige Antwort schien die Fragen nicht direkt zu beantworten, daher dachte ich, ich würde sie ergänzen.
Persönlich sehe ich kein großes Problem mit diesem Plan. Bei BUILTINs haben Sie die Wahl zwischen:
Es ist wahrscheinlich vorzuziehen, ein paar zusätzliche ACLs hinzuzufügen, um die zweite Option verwenden zu können. Ja, die sicherste Option für einen Dienst mit geringen Rechten, der jedoch sehr sicherheitsrelevant ist, ist die Ausführung unter einem benutzerdefinierten Dienstkonto mit geringen Rechten. Wenn Sie jedoch nicht für jeden Dienst, den Sie bereitstellen, ein neues Konto erstellen / Kennwörter verwalten möchten, ist es nicht so schlimm, LocalService für kleinere, nicht vertrauliche Aufgaben zu verwenden. Sie müssen lediglich eine verantwortungsbewusste Entscheidung treffen, die auf diesen Überlegungen basiert, z. B. was sich in diesem Verzeichnis oder in dieser Datenbank befindet, Auswirkungen auf Verstöße usw.
Auch hier gilt das Prinzip der geringsten Berechtigung, Sie sollten jedoch nur festlegen,
Full Control
ob diesModify
wirklich nicht ausreicht.Wenn für Ihre Datenbank eine Windows Integrated / SSPI-Anmeldung erforderlich ist, müssen Sie NetworkService (oder ein Domänendienstkonto) überall verwenden, dh RunAs und Verzeichnisberechtigungen. Angenommen, Sie haben auch Ihrem Computernamen $ oder Ihrem Domänenkonto Zugriff auf diese Datenbank gewährt. Ich bezweifle, dass Sie das tun. Wenn Sie also die normale Benutzername / pwd-Authentifizierung verwenden, sollten Sie in der Lage sein, alles mit LocalService zu tun. Sie müssen nur ein Konto für dieses Verzeichnis berechtigen, unabhängig davon, was Sie in Ihren RunAs verwenden, nicht für beide.
LocalService / NetworkService sind 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 sie im Netzwerk als echtes (Computer-) Konto angezeigt werden. Da LS jedoch als ANONYMOUS angezeigt wird, wird fast alles im Netzwerk verweigert.
Übrigens sollten Sie für diesen Zweck einen geplanten Task verwenden, keinen Dienst.
* Von Vista ab, aufgrund Service Isolation kann man kompromittiert LocalService- Prozess andere nicht leicht angreifen. Im Gegensatz zu Windows 2003 erhält jeder LocalService- / NetworkService-Dienstprozess / jede Instanz eine eigene eindeutige Anmeldesitzungs-SID (Unique Owner). 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 Token mit Schreibbeschränkung werden in diesem Zusammenhang erwähnt.
quelle
Die anderen Antworten bestätigen, was Sie über die Verwendung des lokalen Dienstes sagen. Zusammenfassend ist Lokaler Dienst das empfohlene Konto für Ihren Dienst, es sei denn, Sie benötigen die zusätzlichen Active Directory-SSPI-Funktionen des Netzwerkdienstes.
Um den Lese- / Schreibzugriff auf einen bestimmten Ordner einzuschränken, können Sie jedoch besser als nur Zugriff auf das allgemeine lokale Dienstkonto gewähren. Das Problem ist, wie andere darauf hingewiesen haben, dass dies auch den Lese- / Schreibzugriff auf alle anderen Dienste ermöglichen würde, die als lokaler Dienst ausgeführt werden. Wenn alle Dienste dies tun würden, würde der lokale Dienst nach und nach Zugriff auf immer wichtigere Ressourcen erhalten.
Die Lösung besteht darin, stattdessen Ihren Ordner mit Ihrer spezifischen Service-SID zu verknüpfen. Nur Ihrem eigenen Serviceprozess ist Ihre Service-SID zugeordnet, wodurch Ihre Ressource noch weiter gesperrt wird. Sie können die Service-SID anzeigen, indem Sie verwenden
sc showsid <service name>
. Die Dienst-SID wird aus dem Dienstnamen generiert, sodass sie auf allen Computern gleich ist.Verwenden Sie
ChangeServiceConfig2
dieSERVICE_SID_INFO
festzulegende Struktur, um die Verwendung der Service-SID durch Ihren Service zu aktivierenSERVICE_SID_TYPE_UNRESTRICTED
. Sie können auchSERVICE_SID_TYPE_RESTRICTED
eine noch eingeschränktere SID festlegen , die nur den Schreibzugriff auf Ressourcen ermöglicht, die mit Ihrer Service-SID explizit zulässig sind.Dieser Link enthält die allgemeinen Beschreibungen der Service-SIDs und der 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)
quelle