Skip to Content

Let’s assume you run a project to encrypt all communication channels.

It’s easy to enable servers to support encryption and to allow clients to choose about encryption even within a productive system landscape (despite the fact that it requires some profile parameter changes which require restarts of the servers):

  • You can activate SSL for web-based connections, LDAP connections and database connections
  • You can activate SNC for SAPGUI, e.g. using SNC Client Encryption, and RFC

However, as soon as you want to enforce encryption for a specific channel, e.g. by deactivating the profile parameter snc/accept_insecure_gui to secure SAPGUI connections, you are in trouble: Most likely you are only allowed to change the profile parameter in a productive world if you can prove that all clients in fact are requesting encryption.

Here’s one of the questions: How can you verify if all SAPGUI sessions use SNC?

Answer:

Use the Security Audit Log (SAL), Transaction SM19 and SM20, to log when an unencrypted SAPGUI or RFC communication has been detected.

See note 2122578 – New: Security Audit Log event for unencrypted GUI / RFC connections

If this solution is not available you can use transaction SM04 and check every line using the menu path Users -> Technical Info to inspect the field snc_count. (Thanks to Wolfgang Janzen who pointed me to that piece of information.) Or you can use the report ZSM04000_SNC (which is based on the SM04 coding) respective ZRSUSR000_620 (which is based in transaction AL08) to view this information directly on the main list.

ABAP Source Code

You find the source code on the corresponding wiki page.

ABAP source code:

ZSM04000_SNC

http://wiki.scn.sap.com/wiki/download/attachments/343442190/ZSM04000_SNC.txt

ZRSUSR000_620

http://wiki.scn.sap.com/wiki/download/attachments/343933423/ZRSUSR000_620.txt

Documentation

Report ZSM04000_SNC shows a cross-client list about users, their terminals, the connection type and the SNC status. You can add the profile parameters about SNC to the header of the list. Here’s an example without IP addresses and without terminal names:

ZSM04000_SNC_01.PNG

Limitation: The reports inspects the current sessions on the current application server only.

Run this report regularly on all application servers and as soon as it turns green completely for a specific connection type you can deactivate the corresponding profile parameter to avoid insecure connections in the future.

(By the way: Extreme security nerds now would discuss if this is sufficient to prove if encryption is active, as the QOP, quality of protection, is not considered, too. Well, I know about this limitation, but let’s begin the journey with the first step…)

To report this post you need to login first.

12 Comments

You must be Logged on to comment or reply to a post.

  1. Carlos Biscaia - PTPRO

    Hi  Frank Buchholz,

    The report is great and works perfectly!

    It is possible to make an improvement since the report does not collect the aggregate of all application servers?

    Best regards,

    Carlos Biscaia

    (0) 
    1. Frank Buchholz Post author

      Great idea, however, at the current stage I do not know how to solve it as I need an RFC enabled function which I could call on other application servers which executes the statement

      call ‘ThUsrInfo’ id ‘OPCODE’ field opcode_usr_info

      (This statement shows the SNC status.)

      Conclusion: Not possible using a simple Z-report, it would be necessary to create an RFC function as well..

      Kind regards

      Frank

      (0) 
      1. Julius von dem Bussche

        If it must remain a report which contains everything and you want to regularly collect snap shots, then it could submit itself in a background task on each server with list to memory and present the result with an app server column?

        Workaround: Schedule the report on each host and only output if a result is found, in which case send spool to a mail recipient list. Then just prove that you did not get any emails..  🙂

        (0) 
          1. Julius von dem Bussche

            FM TH_SHOW_USR_DETAILS uses that opcode and returns the values, so you (or Frank…) could get the server list and loop through it importing the BNAME = <user> in the job variant of the check. It is remote enabled, but in an internal function group which is rather exotic. Calling ThUsrInfo is however also rather exotic and not something you want to do voluntarily. Then keep a log of it for a while before you enforce SNC on the server side.

            As you want to catch the SAPGui based exceptions, you can catch those during the login from the SAPGui Login Pad using the exit in SAPMSYST, but it is not a 100% guarantee that all logins are covered.

            Trusted RFC calls / navigation with connection to SAPGui might slip through (SOLMAN!) as well as shortcut based navigation. An often encountered problem is also importing a transport request in the queue of system QAS or PROD but the user is logged onto system DEV (from a UI perspective). You will need to make some adjustments to your STMS setup to get that working for SNC authentication as well, but it does work with SAP SSO.

            Cheers,

            Julius

            (0) 
            1. Frank Buchholz Post author

              Hi Julius,

              thank you for telling me about TH_SHOW_USR_DETAILS – strange that I had missed this function…. I’ve added this function to a copy of transaction AL08 = report RSUSR000. I’ve used the version from release 620 to cover older releases as well. You can find the new report ZRSUSR000_620 linked within this blog.

              Kind regards

              Frank

              (0) 
              1. Julius von dem Bussche

                Super! Thanks for sharing the solution and code gallery for reuse when needed!

                How about a more user friendly SAP (SM19) message for this as well to collect the login events instead of time snapshots? Currently it is very tedious to get the session ID from SAL and then the authentication type from ST05 and make assumptions based on the authentication code. An Sm19 message (SNC on / off at logon types other than B) would be very useful as we could then simply turn it on a wait….  🙂

                Cheers,

                Julius

                (0) 
      2. Carlos Biscaia - PTPRO

        Hello to both,

        the program ZRSUSR000_620 works perfectly on ERP 6.0 EHP5 version.

        Excellent work!!

        Many thanks for your help :), Frank Buchholz & Julius von dem Bussche

        Regards,

        Carlos Biscaia

        (0) 
  2. Wolfgang Janzen

    Actually, the profile parameter snc/accept_insecure_gui is the wrong one – since it only controls whether is user is forced to use SNC for authentication or whether he should be allowed to logon by password, as well.

    With note 1690662 two new profile parameters (snc/only_encrypted_gui, snc/only_encrypted_rfc) were introduced which allow to control whether SAPGUI / RFC connections need to be encrypted (using SNC with a proper QoP) or not. That’s independent from the question whether the user logs on using SNC or password.

    Extreme security nerds now would discuss if this is sufficient to prove if encryption is active, as the QOP, quality of protection, is not considered, too

    Well, I’m such a nerd.

    But I’ve to admit that setting profile parameter snc/data_protection/min = 3 (privacy) ensures that every SNC connection which is established will be encrypted. Thus, in that case it’s valid to conclude “if SNC is used, then the connection is encrypted”.

    Regards, Wolfgang

    (0) 
    1. Julius von dem Bussche

      My understanding of the blog is that if you want to enforce SNC from the server side, then you need a migration path and tools (such as Frank’s report).

      But snapshots are not reliable. Better option would be using SM19.

      Cheers,

      Julius

      (0) 
  3. Frank Buchholz Post author

    Meanwhile there exist a better option to analyse the encryption status:

    Use the Security Audit Log (SAL), Transaction SM19 and SM20, to log when an unencrypted SAPGUI or RFC communication has been detected.

    See note 2122578 – New: Security Audit Log event for unencrypted GUI / RFC connections

    (0) 

Leave a Reply