Bundesamt für Sicherheit in der Informationstechnik

M 4.266 Sichere Konfiguration des SAP Java-Stacks

Verantwortlich für Initiierung: IT-Sicherheitsbeauftragter, Leiter IT

Verantwortlich für Umsetzung: Administrator

Der Java-Stack eines SAP Systems erlaubt es, Java-basierte Technologien einzusetzen. Diese werden vornehmlich in Web-basierten Szenarien genutzt. Im Gegensatz zum ABAP -Stack ist der Java-Stack relativ neu und dessen Funktionen finden sich weniger häufig im Einsatz. Die neuen Java-basierten Technologien ergänzen jedoch die ABAP-Welt, so dass die Bedeutung des Java-Stacks in Zukunft weiter zunehmen wird. Zwar werden viele geschäftsrelevante Funktionen weiterhin im ABAP-Stack ablaufen, aber die Frontend-Komponenten werden in Java implementiert sein. Der Java-Stack wird durch einen Applikationsserver gebildet, der die J2EE (Java 2 Enterprise Edition) Spezifikation umsetzt.

Da Java- und ABAP-Stack im NetWeaver ApplicationServer integriert sind und miteinander über den JavaConnector (JCo) kommunizieren können, muss ein installierter Java-Stack abgesichert werden. Dabei kommen jedoch im Vergleich zum ABAP-Stack völlig unterschiedliche Sicherheitsmechanismen und -konzepte zum Einsatz.

Im Folgenden werden die aus Sicherheitssicht wichtigsten Schritte aufgezeigt, die bei der initialen Konfiguration des Java-Stacks durchzuführen sind. Die Darstellung beschränkt sich auf die Konfiguration des Applikationsservers und geht damit nicht auf sonstige installierte Applikationen ein.

Java-Stack Installation

Der Java-Stack sollte für SAP System Versionen, die eine separate Installation erlauben (Versionen bis 6.40), nur dann installiert werden, wenn Java-basierte Produkte oder Applikationen zum Einsatz kommen.

Kann der Java-Stack nicht separat installiert werden und wird nicht genutzt, so muss die Konfiguration so erfolgen, dass kein Zugriff auf den Java-Stack möglich ist. Dazu sollten alle Dienste des Java-Stacks deaktiviert werden.

Schulung zum Java-Stack

Administratoren, die den Java-Stack administrieren, müssen Kenntnisse in der Architektur und den Sicherheitskonzepten der J2EE-Architektur besitzen. Hier sind insbesondere Kenntnisse bezüglich der statischen Konfiguration der Sicherheit für J2EE-konforme Objekte notwendig, die über das Administrationswerkzeug durch den Administrator durchgeführt wird. Es kommt dabei ein rollenbasiertes Sicherheitskonzept zum Einsatz. Zu beachten ist, dass SAP den J2EE Java Authentication and Authorization Service (JAAS) mit den SAP spezifischen User Management Engine (UME) Funktionalitäten erweitert hat. Damit wurde die statische Konfiguration der Sicherheitseinstellungen um eine dynamische Konfigurationsmöglichkeit durch den Programmcode erweitert, die über die UME steuerbar ist. In der UME können daher beispielsweise erlaubte Aktionen in den Programmen zu Rollen zusammengefasst werden. Benutzern kann dann diese Rolle zugeordnet werden, so dass sie damit die benötigten Berechtigungen erhalten.

Administratoren muss zudem bewusst sein, dass der Java-Stack mit einer separaten Benutzer- und Berechtigungsverwaltung ausgestattet ist, so dass hier immer administrative Aufgaben durchgeführt werden müssen. Empfohlen ist hier der Einsatz der UME (siehe auch M 2.341 Planung des SAP Einsatzes ), da damit die administrativen Tätigkeiten verringert werden.

Nicht benötigte Dienste abschalten

Der Java-Stack bietet eine Fülle von Diensten an. Nicht alle werden zum Betrieb in jedem Szenario benötigt. Daher sollten aus Sicherheitsgründen alle nicht benötigten Dienste deaktiviert werden. Problematisch dabei ist, dass Dienste voneinander abhängig sein können. Es kann zudem zwischen System-Diensten und Nicht-System-Diensten unterschieden werden. Die Verwaltung des Java-Stacks erfolgt über ein eigenes Werkzeug, den so genannten "Visual Administrator". Hier können auch die einzelnen Dienste verwaltet werden. Die Dienste finden sich dabei im "Server"-Abschnitt des Objekt-Baumes, der als Navigationshilfe im Visual Administrator dient. Die Detailinformationen zu einem Dienst werden angezeigt, sobald er selektiert wird.

Folgendes Vorgehen wird empfohlen:

  • Zunächst wird der Dienst festgestellt, der die Technologie zum Ausführen der benötigten Applikation anbietet (z. B. Dienst servlet_jsp für Servlet-basierte Applikationen).
  • Dann müssen die Abhängigkeiten des Dienstes festgestellt werden. Es muss dazu geklärt werden, welche anderen Dienste aktiviert sein müssen, damit der betrachtete Dienst ausgeführt werden kann. Dies ist aus der Registerkarte "Abhängigkeiten" in den Diensteigenschaften zu ersehen. In der Regel werden nur die Dienste mit starkem Abhängigkeitsverhältnis benötigt.
  • Für die gefundenen Dienste muss nach gleichem Verfahren vorgegangen werden, bis sich die Liste der Dienste nicht mehr erweitert.
  • Die Dienste, die nicht in der Liste erscheinen, können deaktiviert werden. Es ist zu beachten, dass bestimmte Dienste für den Betrieb des Java-Stacks benötigt werden.
  • Nicht benötigte Applikationen können gestoppt oder deinstalliert werden. Dies erfolgt über den Dienst "deploy".
  • Nicht benötigte Applikations-"Aliase", die über den Dienst "http" verwaltet werden, können deaktiviert werden.
  • Nachdem Dienste oder Applikationen deaktiviert wurden, ist zu prüfen, ob die benötigten Dienste oder Applikation noch lauffähig sind.
  • Falls die Applikation oder der Java-Stack nicht mehr lauffähig ist, sollten die Java-Stack Protokolle analysiert werden. In der Regel finden sich Fehlermeldungen, die auf den benötigten, aber deaktivierten Dienst hindeuten. Ansonsten kann nur durch Versuche die benötigte Kombination herausgefunden werden.
  • Für Systemdienste muss das Startverhalten "always" über die XML-Konfigurationsdatei "runtime.xml" im Betriebssystem im jeweiligen Dienstverzeichnis oder das GUI-basierte "Configurations"-Werkzeug verändert werden (Wert: "never" oder "manual").

Da sich der Java-Stack mit jeder Version verändert und insbesondere Unterschiede in der Dienstanzahl und -funktion bestehen, kann an dieser Stelle keine verbindliche Liste angegeben werden.

Hinweise auf SAP Dokumentationen zu den Diensten und deren Funktion finden sich in M 2.346 Nutzung der SAP Dokumentation .

Standardinhalte entfernen

Alle Standardinhalte wie Dokumentationen (etwa Dienst deploy: sap.com/...docs.examples), Beispielprogramme (etwa Dienst deploy: sap.com/...htmlb.ear) oder statische HTML-Seiten sollten deinstalliert werden.

HTTP-Dienst absichern

Der HTTP-Dienst sollte abgesichert werden, wozu unter anderem die folgenden Punkte gehören:

  • Verzeichnisanzeige nicht zulassen
  • nicht benötigte Aliase deaktivieren
  • HTTP PUT (Hochladen von Daten) nicht erlauben

Hinweise auf SAP Dokumentationen zu den Diensten und deren Funktion finden sich in M 2.346 Nutzung der SAP Dokumentation .

Kryptographische Funktionsbibliothek installieren

Damit für den Java-Stack starke kryptographische Verfahren genutzt werden können, sollte eine kryptographische Funktionsbibliothek installiert werden, die starke Verfahren anbietet. Hier kann auch auf freie Implementierungen aus dem Java-Umfeld zurückgegriffen werden. Generell ist beim Einsatz von kryptographischen Funktionsbibliotheken auf die Kompatibilität mit dem Java-Stack und auf die Lizenzbestimmungen des Anbieters zu achten.

Auch Java-Stack-Komponenten wie der Secure-Storage, der zur sicheren Ablage von Daten durch System-Dienste und Applikationen dient, benötigen kryptographische Verfahren. Daher kann eine adäquate Sicherheit nur nach der Installation der kryptographischen Funktionsbibliothek erreicht werden.

Authentisierungsmodule konfigurieren

Für die Authentisierung beim Zugriff auf den Java-Stack können mehrere Authentisierungsverfahren eingesetzt werden. So sind neben dem Benutzernamen und Passwort-Verfahren auch Zertifikate oder Single Sign-On Tickets für die Authentisierung konfigurierbar. Dabei kann die Reihenfolge der verwendeten Verfahren bestimmt werden und ob ein bestimmtes Verfahren zur alleinigen Authentisierung ausreichend ist.

Im Rahmen des Berechtigungskonzeptes ist daher zu entscheiden, welche Verfahren wie einzusetzen sind. Falls notwendig, können weitere Verfahren über zusätzliche Bibliotheken von Drittherstellern eingebunden werden. Dabei wird die durch den Java-Standard spezifizierte JAAS-Schnittstelle genutzt.

Zugriff auf Systemressourcen beschränken

Durch das Berechtigungskonzept muss bestimmt werden, welche Benutzer oder Gruppen auf die Systemressourcen des Java-Stacks zugreifen dürfen und welche Zugriffsoperationen (z. B. Lesen, Schreiben, Auflisten) erlaubt werden sollen. Die konfigurierbaren Operationen hängen dabei vom Typ der Ressource ab. Es empfiehlt sich daher, die Detail-Planung anhand eines konkreten Java-Stacks - etwa nach der Installation - durchzuführen. Weitere Informationen finden sich in M 4.268 Sichere Konfiguration der SAP Java-Stack Berechtigungen .

Zugriff auf die Administrationsschnittstelle einschränken

Der Java-Stack wird über mehrere Schnittstellen administriert:

  • Visual-Administrator
    Der Visual-Administrator kommuniziert über die P4-Schnittstelle mit dem Java-Stack. Der Zugriff auf die P4-Schnittstelle (standardmäßig Port 50004 für die Instanz 00) muss daher vor unberechtigten Zugriffen durch eine Firewall geschützt werden. Da das P4-Protokoll auch über HTTP getunnelt werden kann (standardmäßig Port 50001 für die Instanz 00), ist auch dieser Port zu schützen.
  • Telnet-Dienst des Java-Stacks (standardmäßig Port 50008 für die Instanz 00)
    Wird dieser kommandozeilenbasierte Zugriff nicht genutzt, so sollte der Telnet-Dienst deaktiviert werden. Kommt Telnet zum Einsatz, so dürfen nur berechtigte Administratoren auf den Dienst zugreifen. Die Telnet-Ressource (security-Dienst, Resources, root/system/telnet) ist daher so zu konfigurieren, dass als "GrantedUsers" nur die Gruppe der berechtigten Administratoren eingetragen ist.
  • Dateisystem, in dem Konfigurationsdateien abgelegt werden
    Die Verzeichnisse und Dateien der Java-Stack-Installation sind mit restriktiven Zugriffsbeschränkungen auszustatten. (Hinweis: Je nach Java-Stack-Version finden sich unterschiedliche Datei-System-Layouts. Die Entwicklung geht dahin, die Konfigurationen des Java-Stacks nur noch in der Datenbank zu halten).

Der Zugriff auf die Administrationswerkzeuge (Visual Administrator, Configtool) ist auf die berechtigten Administratoren einzuschränken. Es ist jedoch zu bedenken, dass die Werkzeuge über das Netz arbeiten, so dass Angreifer eigene Programminstallationen nutzen können. Es empfiehlt sich daher, die Beschränkung auf Netzebene so zu konfigurieren, dass auf die administrativen Ports (siehe oben) nur von bestimmten Rechnern aus zugegriffen werden kann. Dies schließt zwar einen Angriff nicht vollständig aus, erschwert ihn jedoch.

Passwortqualität sicherstellen

Für die Benutzer des Java-Stacks sollten starke Passwörter konfiguriert werden. Die Möglichkeiten, die Passwortqualität sicherzustellen, unterscheiden sich in den einzelnen Java-Stack Versionen.

Als Mindestanforderung ist die minimale Passwortlänge auf einen Wert einzustellen, der durch die Passwortrichtlinie vorgegeben wird. Die Passwortlänge sollte mindestens 8 Zeichen betragen (Konfiguration für alle Benutzer über "Set Filter").

Auch ein maximales Alter für Passwörter sollte eingestellt werden, das den Vorgaben der Passwortrichtlinie entspricht. Dies wird über die Eigenschaften von Benutzern konfiguriert. Hier sind 90 Tage zu empfehlen.

Java-Stack Single Sign-On sicher konfigurieren

Damit auf den Java-Stack über Single Sign-On zugegriffen werden kann, müssen die Zertifikate der Systeme importiert werden, von denen Single Sign-On Tickets akzeptiert werden sollen. Dabei ist darauf zu achten, dass Single Sign-On Tickets nur von vertrauenswürdigen Systemen akzeptiert werden (siehe auch M 4.258 Sichere Konfiguration des SAP ABAP-Stacks ).

Prüffragen:

  • Werden die SAP Administratoren, die den Java-Stack administrieren, in der Architektur und den Sicherheitskonzepten der J2EE-Architektur geschult?

  • Werden alle nicht benötigten Dienste des Java-Stack im SAP System deaktiviert?

  • Wird der HTTP -Dienst im SAP System geeignet abgesichert?

  • Ist für den SAP Java-Stack eine kryptographische Funktionsbibliothek installiert, die starke Verfahren anbietet?

  • Ist im SAP Berechtigungskonzept festgelegt, welche Benutzer oder Gruppen auf die Systemressourcen des Java-Stacks zugreifen dürfen und welche Zugriffsoptionen ( z. B. Lesen, Schreiben, Auflisten) erlaubt sind?

  • Ist der Zugriff auf die Java-Stack Administrationswerkzeuge (Visual Administrator, Configtool) auf berechtigte SAP Administratoren beschränkt?

  • Ist das SAP -Netz so konfiguriert, dass auf administrative Ports nur von bestimmten Rechnern aus zugegriffen werden kann?

  • Stellt die Konfiguration des SAP Systems eine ausreichende Passwortqualität für Benutzer des Java-Stacks sicher?

Stand: 13. EL Stand 2013