Schützen Sie Ihr SAP-Gateway gegen unautorisierte Aufrufe

SAST BLOG: Schützen Sie Ihr SAP-Gateway gegen unautorisierte AufrufeDie Praxis zeigt uns, dass die Beseitigung von Risiken im Kontext der RFC-Schnittstellen nicht immer optimal gelöst ist, um einen sauberen und sicheren Betriebszustand gewährleisten zu können.

In unserem aktuellen Tipp stellt Ralf Kempf in einer Schritt-für-Schritt-Anleitung dar, wie Sie Ihre SAP-Gateways erfolgreich gegen unberechtigte Aufrufe absichern.

SAP-Systeme erlauben die Ausführung von Betriebssystembefehlen über verschiedene Mechanismen.

1.  Dialogaufruf mit authentifiziertem Benutzer
a) CALL ‚SYSTEM‘ C-Aufruf aus ABAP-Programmen (RSBDCOS0) oder Z-Programme.
b) Aufruf logischer Betriebssystembefehle über SM49/SM69 Mechanismus in ABAP-Programmen.

2.  Batch-Verarbeitung (SM36) mit SAP-Benutzer
a) Aufruf logischer Betriebssystembefehle über SM49/SM69 Mechanismus in Jobs.
b) Aufruf direkter Betriebssystembefehle in Jobs.

3.  Start von Befehlen über das SAP-Gateway
a) Mittels RFC Server Programm SAPXPG.
b) Mittels RFC Server Programm RFCEXEC.

Entscheidend ist, dass Sie alle Optionen, die SM49/SM69-Befehle und das Gateway nutzen, über Absicherungsmechanismen gegen unautorisierte Aufrufe schützen.

Lock it down: Gateway Security und SAPXPG.SEC

Der Aufruf externer Betriebssystembefehle erfolgt nicht direkt über das Gateway, sondern mittels Hilfsprogramm RFCEXEC bzw. SAPXPG. Die Gateway Security-Datei SECINFO muss hierbei so eingerichtet werden, dass der Aufruf von RFCEXEC aus Sicherheitsgründen unterbunden wird und SAPXPG nur von LOCAL bzw. INTERNAL aufrufbar ist.

Zur Absicherung der SAP-Systeme auf Gateway- und NI Layer-Ebene sollte erstens das SAP-Serversegment vom PC-Segment abgeschottet werden und zweitens alle Aufrufe über einen SAProuter auf Port 32xx und 33xx als Application Level Proxy, in Kombination mit einer Firewall, in das SAP-Server-Segment eingeleitet werden.

Nutzen Sie SAP XPG-Logging

Die Sicherheitsdatei SECINFO des RFC-Gateways steuert nur, dass SAPXPG überhaupt gestartet werden kann. Auf Gateway-Ebene kann jedoch nicht weiter gefiltert werden, welche nachfolgenden Betriebssystembefehle aufrufbar sind (siehe Transaktion SM49). Das Programm SAPXPG bietet umfangreiche Logging-Funktionen, die eine Analyse der gerufenen Betriebssystembefehle erlauben.

So schalten Sie die SAPXPG-Protokollierung ein:

1.  Setzen Sie auf dem SAP-Server die Umgebungsvariable “SAPXPG_PROTOCOL = 1“
Auf jeder SAP-Instanz im Umfeld des Users <sid>adm (Unix) oder SAPService<SID> (Windows)

2.  Setzen Sie die Umgebungsvariable: SAPXPG_PROTOCOL_PATH = <Pfad für die Protokolldatei>. Diese Variable beschreibt das existierende Verzeichnis, in das die Protokolldatei geschrieben wird. Vorschlag: SAPXPG_PROTOCOL_PATH = /usr/sap/<SID>/<INSTANZVERZEICHNIS>/work/.
Es ist wichtig, dass am Ende auch das systemspezifische Trennzeichen steht, also Slash oder Backslash.

So lange die Protokollierung eingeschaltet ist, wird im festgelegten Verzeichnis für jeden Tag eine Protokolldatei mit dem Namen „xpg_prot_mm-dd“ erzeugt, wobei „mm“ für den Monat und „dd“ für den Tag steht.

Erzeugung von SAPXPG SEC Dateien und Aktivierung der Absicherung

Der Schutz gegen unberechtigtes Aufrufen von Betriebssystem-Ebenen muss auf Ebene 2 durch eine SAPXPG.SEC-Datei erfolgen (siehe OSS-Note 686765). Der Hauptschalter für die Umgebungsvariable ist „SAPXPG_SEC_CHECK“. Anschließend müssen Sie die Environment Variable „SAPXPG_SEC_CHECK = POS“ im Unix- oder Windows-Environment des Instanz-Users setzen.

Um jedoch zu verhindern, dass nach Installation des neuen SAPXPG keine externen Kommandos mehr funktionieren, müssen Sie diesen „Hauptschalter“ auch einschalten (Umgebungsvariable mit einem beliebigen, einstelligen Wert), denn nur dann findet die Sicherheitsprüfung auch statt. In diesem Fall müssten Sie also ALLE nicht erlaubten Befehle in der SAPXPG.SEC verbieten, was praktisch unmöglich ist. Auch SAP hat das erkannt und daher nachgebessert.

Die Datei SAPXPG.SEC (siehe Hinweis 686765) kann auch als Positiv-Liste interpretiert werden, diese sind einfach zu pflegen und bieten einen optimalen Schutz. Das erreichen Sie, im dem Sie der Umgebungsvariablen „SAPXPG_SEC_CHECK“ auf dem Zielrechner einen beliebigen 3-stelligen Wert zuweisen, z.B. POS.

Achten Sie darauf, in der Datei SAPXPG.SEC nicht versehentlich „/“ als Separator zu verwenden, denn dieses Zeichen ist Bestandteil von Kommandonamen in UNIX, wenn der komplette Pfad angegeben ist. Nutzen Sie stattdessen ein „#“. Die neue Positiv-Listen-Funktionalität wird für die Kernel Releases 640 und 700 mit einem SAPXPG-Patch ausgeliefert.

Beispiele für eine SAPXPG.SEC-Datei:

1.  #U#*#C#*#T#3#F#*#O#cp, pwd, ls #S#*#
Es dürfen nur die genannten Kommandos ausgeführt werden und das von allen Benutzern, die im rufenden System die SAP-Berechtigung für externe Kommandos bzw. externe Programme haben.

2.  Wenn Sie nach Benutzern unterscheiden möchten, müssen Sie für jeden Benutzer genau eine Zeile anlegen, also beispielweise:
#U#SMITH#C#*#T#3#F#*#O#cp, pwd, ls #S#*#
#U#CARTER#C#*#T#3#F#*#O#cp, pwd, ls, rm #S#*#
#U#SUPERUSER#C#*#T#3#F#*#O#*#S#*#

Aber Vorsicht: Ordentliche Administratoren könnten auf die Idee kommen, für jeden Benutzer und jedes Kommando eine eigene Zeile in die SAPXPC.EXE einzutragen. Das funktioniert jedoch nicht!
Der Kernel wertet nur eine Zeile je Benutzer aus. Achten Sie also darauf, alle Unix-Befehle in eine kommaseparierte Liste einzutragen.

Vergessen Sie die Berechtigungen nicht
Das Objekt „S_LOG_COM“ steuert in SAP, welche logischen Befehle und damit Betriebssystemkommandos ein Benutzer ausführen kann. „S_LOG_COM“ sollte daher nur Benutzern zugewiesen werden, die für Schnittstellenaufgaben verwendet werden.

Das Ergebnis
Nach erfolgter Härtung können Ihre Benutzer nur noch die Betriebssystemkommandos ausführen, für die sie auch die Berechtigung haben. Überprüfen Sie das auf jeden Fall durch Positiv- als auch Negativ-Tests und wundern Sie sich nicht: Im Falle abgewiesener Aufrufen erhalten Sie in SM49 nicht die Meldung „Keine Berechtigung lt. SAPXPG.SEC“ sondern “Communication Error“.

ralfkempf_akquinet
Ralf Kempf
Technischer Geschäftsführer „SAST SOLUTIONS“

Sie wünschen sich Unterstützung beim Schutz Ihrer SAP-Systeme?
Das SAST Interface Management enthält umfangreiche Funktionen zur Analyse von Gateways- und SAPXPG-Sicherheit, kann darüber hinaus auch Ihre Berechtigungen auswerten und so missbräuchliche Nutzung in Echtzeit erkennen. 
Und wenn Sie die Sicherheit Ihrer SAP-Gateways lieber in Profihände geben wollen, dann helfen Ihnen unsere erfahrenden SAP-Security-Experten jederzeit gerne weiter.