Überblick |
In Windows kann der Zugriff auf Systemressourcen und systembezogene Aufgaben mit Berechtigungen geregelt werden, die sich in einem Zugriffstoken befinden. Wenn der Wrapper für einen Benutzer ausgeführt wird, erhält der Prozess eine Kopie des Zugriffstokens, das die Nutzerberechtigungen enthält. Die Professional Edition des Wrappers ermöglicht es, diese Berechtigungen auf verschiedenen Ebenen anzupassen:
Aus Sicherheitsgründen empfehlen wir, dass eine Anwendung nur die Berechtigungen aktiviert, die sie benötigt. Wird eine Berechtigung gelegentlich genutzt wird oder wenn sie von manchen ihrer Kindprozesse genutzt werden muss, kann sie deaktiviert werden, damit weiterhin die Möglichkeit besteht, sie zu einem späteren Zeitpunkt zu reaktivieren. Um zu verhindern, dass sie von der Anwendung oder einem ihrer Kindprozesse reaktiviert wird, ist es am sichersten, die Berechtigung vollständig zu entfernen. Wenn keine erforderlichen Berechtigungen für einen Windows-Dienst angegeben sind, ändert der SCM das Zugriffstoken des Dienstes beim Starten nicht, sodass es bei den Standardberechtigungen bleibt, d. h. denjenigen, der Nutzer und Gruppen, denen das Servicekonto gehört. Die folgenden Berechtigungen werden Nutzern häufig zugewiesen, die Dienste anwenden:
Allgemein sind die oben stehenden Berechtigungen für den Wrapper-Prozess angemessen (und manchmal notwendig), daher ist es meistens nicht notwendig, dass Sie etwas daran ändern. Abhängig davon, wie Sie die Anwendung verwenden, kann es für die Sicherheit jedoch besser sein, wenn als Reaktion auf bestimmte Ereignisse, einige Berechtigungen aus dem Zugriffstoken des laufenden Java-Prozesses oder der laufenden Kindprozesse entfernt werden. WARNINGBesondere Beachtung sollte der Berechtigung SeImpersonatePrivilege geschenkt werden. Zwar ist diese Berechtigung für Windows-Dienste standarmäßig aktiviert, sie kann jedoch missbraucht werden, um von einem lokalen Konto auf NT AUTHORITY\SYSTEM eskaliert werden, wenn die Java-Anwendung dem Benutzer die Möglichkeit gibt, willkürliche Befehle auszuführen. In solchen Fällen wird empfohlen, SeImpersonatePrivilege aus dem Java-Prozess zu entfernen. Das gleiche gilt für Ereignisbefehle. Es muss sorgfältig darauf geachtet werden, dass das Zielprogramm oder -Skript angemessene Dateiberechtigungen hat, sodass es nicht modifiziert oder ersetzt werden kann. Wenn der konfigurierte Befehl dem Benutzer die Fähigkeit gibt, seine eigenen Befehle auszuführen oder eine Konsole zu öffnen, muss zusätzlich auch die SeImpersonatePrivilege entfernt werden. NT AUTHORITY\SYSTEM ist ein leistungsstarkes Konto, das noch mehr Berechtigungen hat als das Administratorkonto auf Windows. Zugang dazu zu erlangen ist ein ernstes Sicherheitsproblem, da es beinahe vollständige Kontrolle über das Gerät gewähren würde.
Informationen zur Kontrolle von Identitätswechseln im Wrapper-Prozess finden Sie in der Beschreibung des wrapper. Die folgenden Berechtigungen sind verfügbar, um Berechtigungen zu konfigurieren:
|
Erforderliche Berechtigungen für einen Windows-Dienst |
||||||||||||
|
Laufzeit-Berechtigungen für den Wrapper-Prozess |
||||||||||||||||||||||||||||||||||||||||||||||||
Die folgenden Eigenschaften werden verwendet, um die Berechtigungen für den Wrapper-Prozess anzupassen. Nur Berechtigungen, die im Zugriffstoken des Wrapper-Prozesses existieren, können angepasst werden. Standardmäßig enthält das Zugriffstoken die Berechtigungen, die der Nutzer hat, der den Wrapper bedient, und die Berechtigungen der Gruppen, denen dieser Nutzer angehört. Für Windows-Dienste können die Standardberechtigungen überschrieben werden, indem eine Liste erforderlicher Berechtigungen eingestellt wird. Fehlt eine Berechtigung, kann diese der Liste wrapper.ntservice.required_privileges hinzugefügt werden, um den Dienst neu zu installieren oder zu aktualisieren. Beim nächsten Start sollte das Zugriffstoken des Wrappers die Berechtigung enthalten. Beachten Sie, dass diese Eigenschaften nur wirksam werden, wenn die Konfiguration zum ersten Mal geladen wird und ignoriert werden, wenn die Konfiguration neugeladen wird.
|
Laufzeit-Berechtigungen für den Java-Prozess |
||||||||||||||||||||||||
Die folgenden Eigenschaften werden verwendet, um Berechtigungen für den Java-Prozess anzupassen. Ist eine dieser Eigenschaften eingestellt, wird das Zugriffstoken des Wrapper-Prozesses dupliziert und die angegebenen Berechtigungen werden in der Kopie des Tokens angepasst. Der Java-Prozess wird dann im Sicherheitskontext des neuen Tokens gestartet werden. Nur Berechtigungen, die im Zugriffstoken des Java-Prozesses existieren (und somit auch im Token des Wrapper-Prozesses), können angepasst werden. Denken Sie daran, dass die Liste der Berechtigungen auf zwei Ebenen geändert werden kann, bevor der Java-Prozesss gestartet wird: Wenn ein Windows-Dienst installiert wird, wenn erforderliche Berechtigungen angegeben wurden, oder wenn ein oder mehr Berechtigungen entfernt wurden, wenn der Wrapper gestartet wird. Die Berechtigungen werden jedes Mal angepasst, wenn eine neue JVM gestartet wird. Ist das erneute Laden der Konfigurationsdatei zugelassen, können diese Eigenschaften so geändert werden, dass beim nächsten Aufruf der JVM andere Berechtigungseinstellungen verwendet werden.
|
Laufzeit-Berechtigungen für Ereignisbefehle |
||||||||||||||||||||||||||||||||||||||||||||
Die folgenden Eigenschaften werden verwendet, um Berechtigungen für Befehle zu ändern, die als Antwort auf bestimmte Ereignisse ausgeführt werden. Ist eine dieser Eigenschaften eingestellt, wird das Zugriffstoken des Wrapper-Prozesses dupliziert und die spezifizierten Berechtigungen werden in der Tokenkopie angepasst. Der Ereignisbefehl wird dann in dem Sicherheitskontext ausgeführt, der durch dieses neue Token repräsentiert wird. Nur Berechtigungen, die im Zugriffstoken des Ereignisbefehls existieren (und daher auch im Token des Wrapper-Prozesses existieren) können angepasst werden. Denken Sie daran, dass die Liste der Berechtigungen auf zwei Ebenen geändert werden kann, bevor ein Ereignisbefehl ausgeführt wird: Wenn ein Windows-Dienst installiert wird, wenn erforderliche Berechtigungen angegeben wurden, oder wenn ein oder mehr Berechtigungen entfernt wurden, wenn der Wrapper gestartet wird. NOTEDie Möglichkeit, Berechtigungen auf unterschiedlichen Ebenen zu steuern, wenn Prozesse gestartet werden, ermöglicht Konfigurationen wie die folgenden: Um eine bestimmte Berechtigung für einen Ereignisbefehl zu aktivieren, muss sie auch für den Wrapper-Prozess existieren. Der Java-Prozess kann diese Berechtigung jedoch vollständig entfernen, wodurch sichergestellt wird, dass sie weder von der Java-Anwendung noch von einem ihrer Kindprozesse verwendet wird.
|
Loggen |
||||||||||||
|
Abfragen der Berechtigungen eines Windows-Dienstes |
||||||||||||
Es ist möglich, die erforderlichen Berechtigungen eines Windows-Dienstes sowie die Laufzeit-Berechtigungen des Wrapper-Prozesses und seiner Kindprozesse abzufragen, und das mit einem einzigen Befehl: .\wrapper.exe -qr .
Es ist auch möglich, die Berechtigungen eines anderen Dienstes abzufragen, indem '=' zu der -qr-Option hinzugefügt wird, gefolgt von dem Namen des Dienstes ('-qr=serviceName').
|