Other formats |
Share

22.4. Procedure – SSH usermapping and keymapping in AD with public key

Purpose: 

A customer wants to be able to disable password authentication in SSH for admin users on the UNIX servers. However, the customer uses Active Directory, and would not like to enter the username/password at gateway authentication for every login over and over again. Therefore, the customer needs a quasi SSO-like system, with only one group logging in as root and another group as XY user.

Steps: 

  1. Create an LDAP authentication policy. For details on creating a new authentication policy, see Section 11.3, Authentication Policies. In this scenario, only a few important details will be highlighted.

    1. In the Client-side gateway authentication backend field, set the authentication method used on the client-side to LDAP. This will be the Active Directory where the gateway will get the public key from, for authentication. Enable Publickey only from the Authentication methods and disable all other methods.

    2. In the Relayed authentication methods field, enable Public key and select Agent. Disable all other methods.

  2. Create a Credential Store that can return a private key for server-side authentication. It is local Credential Stores and external Credential Stores (with a suitable plugin) that can return a private key.

    For detailed step-by-step instructions, see Procedure 18.4.1, Configuring local Credential Stores. In this scenario, only a few important details will be highlighted.

    1. Navigate to the bottom of the policy, and click to add a new user.

    2. Enter the username in the Username field (for example: root). Generate a Private key and upload its public counterpart to the server.

  3. Set an LDAP server policy where you set up the Active Directory. For details on authenticating users to an LDAP server, see Procedure 7.9, Authenticating users to an LDAP server.

    Make sure that the Publickey attribute name field in this Active Directory LDAP policy is set to sshPublicKey.

  4. By default, the Active Directory does not have any attribute that could store the SSH public key. To solve this, add an OpenSSH-LPK compatible schema to the Active Directory by doing any of the following:

    • Create an sshPublicKey attribute, and add that directly to one of the objectClasses of the user in question.

    • Create an sshPublicKey attribute and an ldapPublicKey auxiliary objectClass, and add the ldapPublicKey auxiliary objectClass to one of the objectClasses of the user in question.

    The sshPublicKey attribute must be compliant with the OpenSSH-LPK schema and have the following properties:

    • Name: sshPublicKey

    • Object ID: 1.3.6.1.4.1.24552.500.1.1.1.13

    • Syntax: Octet String

    • Multi-Valued

    The ldapPublicKey auxiliary objectClass must be compliant with the OpenSSH-LPK schema and have the following properties:

    • Name: ldapPublicKey

    • OID: 1.3.6.1.4.1.24552.500.1.1.2.0

    The OpenSSH-LPK schema is available here: https://code.google.com/archive/p/openssh-lpk/downloads

    The following steps describe how to create an sshPublicKey attribute and an ldapPublicKey auxiliary objectClass, and then add the ldapPublicKey auxiliary objectClass to one of the objectClasses of the user.

    1. Enable Schema updates using the registry:

      1. Click Start, click Run, and then in the Open box, type: regedit. Press Enter.

      2. Locate and click the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters.

      3. On the Edit menu, click New, and then click DWORD Value.

      4. Enter the value data when the following registry value is displayed:

        Value Name: Schema Update Allowed
        Data Type: REG_DWORD
        Base: Binary
        Value Data: 1
        Note

        Type 1 to enable this feature, or 0 (zero) to disable it.

      5. Quit Registry Editor.

    2. Install the Schema snap-in. For details, see https://technet.microsoft.com/en-us/library/cc732110.aspx. Note that you must have Administrator privileges to install the Schema snap-in.

    3. Click Start, click Run, and then in the Open box, type: MMC. Press Enter.

    4. Navigate to File > Add or Remove Snap-in, select Active Directory Schema and click Add. Note that you must have Schema Administrator privileges to complete the following steps.

      Figure 22.4. Add or Remove Snap-in

      Add or Remove Snap-in
    5. Expand the Active Directory schema and right-click Attributes.

    6. Click Create Attribute. If a warning appears, click Continue.

      Figure 22.5. Creating Attribute - Warning

      Creating Attribute - Warning
    7. In Common Name and LDAP Display Name, enter sshPublicKey.

    8. In Unique X500 Object ID, enter 1.3.6.1.4.1.24552.500.1.1.1.13.

    9. For Syntax, select Octet String.

    10. Enable Multi-Valued. Click OK.

      Figure 22.6. Create New Attribute

      Create New Attribute
    11. Right-click Classes and click Create class. If a warning appears, click Continue.

    12. In Common Name and LDAP Display Name, enter ldapPublicKey.

    13. In Unique X500 Object ID, enter 1.3.6.1.4.1.24552.500.1.1.2.0

    14. Create a new schema class.

      In Parent Class, enter top, and in Class Type, select Auxiliary. Click Next.

      Figure 22.7. Create New Schema Class — screen 2

      Create New Schema Class — screen 2

      Add sshPublicKey to the Optional field. Click Finish.

      Figure 22.8. Create New Schema Class — screen 1

      Create New Schema Class — screen 1
    15. Expand Classes and select User. Right-click User and select Properties. Navigate to Relationship > Auxiliary Classes, click Add Class and add the ldapPublicKey class. Click Apply.

      Figure 22.9. User Properties

      User Properties
  5. The next step is to map the public keys to users. This is not possible in a user editor, use a low-level LDAP utility instead.

    1. Add ADSI Edit as a snap-in to MMC.

      Figure 22.10. Adding ADSI Edit

      Adding ADSI Edit
    2. Right-click on the node and press Enter.

    3. Search for the user in the tree, right-click on it and select Properties. All attributes can be edited there, so sshPublicKey too. Add the public keys to the Active Directory users.

      Note

      It may happen that sshPublicKey is not visible in ADSI Edit. To make sshPublicKey visible, complete the procedure described in section Extending the Partial Attribute Set in https://blogs.technet.microsoft.com/scotts-it-blog/2015/02/28/ad-ds-global-catalogs-and-the-partial-attribute-set/.

  6. Create a usermapping policy where you will set those groups from the Active Directory who can become root. For details on creating usermapping policies, see Procedure 18.1, Configuring usermapping policies. In this scenario, only a few important details will be highlighted.

    1. Set Username on the server to root and select the group you intend to give these rights to.

    2. If you intend to allow other users in without usermapping, enable Allow other unmapped usernames.

  7. Navigate to the relevant connection on the SSH Control > Connections page, and do the following:

    1. In the Authentication policy field, add the LDAP authentication policy you created in Step 1.

    2. In the LDAP Server field, add the LDAP server policy you created in Step 3.

    3. In the Credential Store field, add the Credential Store you created in Step 2.

    4. In the Usermapping Policy field, add the usermapping policy you created in Step 6.

    5. Click to save the change.