Kerberos Authentication for Explicit Proxy Deployments

Kerberos authentication is supported with Prisma Access Innovation deployments starting with 3.2.1 Innovation.
Prisma Access Mobile—Explicit Proxy deployments support Kerberos authentication. If you have servers, IoT devices, or headless machines that cannot authenticate using SAML, you can use Kerberos authentication instead.
If your deployment uses both SAML and Kerberos for authentication, you can configure both authentication types in a single Explicit Proxy deployment. In this way, you can authenticate mobile users with SAML while authenticating servers, IoT devices or headless machines with Kerberos. Prisma Access Explicit Proxy processes the authentication depending on the port used for the authentication traffic:
  • If the authentication traffic uses port 8080, Explicit Proxy uses SAML authentication.
  • If the authentication traffic uses port 8081, Explicit Proxy uses Kerberos authentication.
If only one port is configured, the port that is not configured uses the same authentication profile as the configured port.
Kerberos SSO is available only for services and applications that are internal to your Kerberos environment. To enable SSO for external services and applications, use SAML.

Requirements and Recommendations for Deploying Kerberos for Explicit Proxy Deployments

Before you implement Kerberos in an Explicit Proxy deployment, make sure that your Kerberos deployment has the following requirements and prerequisites:
  • Make sure that you have a Kerberos account that you can use for Prisma Access to authenticate servers or devices.
    An account is required to create a Kerberos keytab, which is a file that contains the principal name and encrypted Kerberos password.
  • Make sure that the servers and endpoints are domain-joined, which allows users and machines to securely connect to their work domain using their work network credentials.
  • When configuring user authentication and user mapping, use a format of userPrincipalName (UPN); other formats (such as samAccountName) as not supported.
  • Unicode character usernames are not supported.
  • Make sure that you forward Kerberos authentication traffic to port 8081 in the mobile users’ PAC file or in your proxy settings on the endpoint or servers.
    Explicit Proxy uses port 8081 for Kerberos authentication and port 8080 for SAML authentication.
  • Make sure that your Kerberos administrator has the ability to create and export keytabs.
  • Make sure that you have the egress IP addresses of the branch or campus location where your servers, IoT devices, or headless machines are located.
    You add these IP addresses to the list of addresses that are trusted by Explicit Proxy.
  • Follow best practices for Kerberos user authentication and creation.
    It is the Kerberos account administrator’s responsibility to follow best practices to protect their Kerberos environment and prevent passwords from being compromised. Use the following best practices when creating the user accounts, password, and ServicePrincipalNames (SPNs).
    Kerberos User Account Creation Best Practices
    :
    • Do not reuse admin user accounts.
      Create a unique account name for the Kerberos account to be used with Prisma Access Explicit Proxy.
    • Do not share this account with any other service; use a dedicated user account for Prisma Access Explicit Proxy.
    • Ensure that the user cannot change the password for the Kerberos account.
    • When selecting Kerberos account options, deselect
      Use Kerberos DES encryption types for this account
      and
      Do not require Kerberos preauthentication
      .
    • Enable AES-128 and AES-256 bit encryption.
    • Disable delegation for users.
    • Deny the ability to log in to a remote desktop session.
    • Do not enable remote control.
    • Do not allow users to start programs at logon.
    • You can specify users or user groups in the allow list of the Authentication profile you create to limit authentication to only the users or machines that have legitimate business needs.
    SPN and Keytab Best Practices
    :
    • Make sure that the SPN is not associated with multiple user accounts, which could cause duplicate SPN failures.
    • RC4-HMAC-NT uses a weak NTML hash. Follow your organization’s security policies and guidelines to include or exclude the RC5 cipher.
    • The DES-CBC-CRC and DES-CBC-MD5 ciphers have been deprecated and are not supported by Prisma Access.
    • Rotate the password for the SPN on a regular basis. Follow your organization’s security policies and guidelines for password rotation.
    • Follow your organization’s practices for password complexity (for example, create the SPN passwords in a truly random fashion that are not human readable and guessable).
    • If you change the password for the service user, or change any other attributes, update and re-generate the new keytab and upload it to Prisma Access.
    • If you onboard a new PA region, you must generate a new keytab for that region, as shown in the following steps.
    The following example output shows an account that was created using Kerberos best practices.
    PS C:\Users\Administrator>
    Get-ADUser example -Properties "*"
    AccountNotDelegated : True AllowReversiblePasswordEncryption : False CannotChangePassword : True CN : example Deleted : DoesNotRequirePreAuth : False Enabled : True GivenName : PrismaAccess EP Service User KerberosEncryptionType : {AES128, AES256} msDS-SupportedEncryptionTypes : 24 Name : example PasswordExpired : False PasswordNeverExpires : True PasswordNotRequired : False PrincipalsAllowedToDelegateToAccount : {} ProtectedFromAccidentalDeletion : True SamAccountName : example servicePrincipalName : {HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM, HTTP/us-east-2.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM, HTTP/us-south-1.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM} ServicePrincipalNames : {HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM, HTTP/us-east-2.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM, HTTP/us-south-1.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM} SmartcardLogonRequired : False TrustedForDelegation : False TrustedToAuthForDelegation : False UseDESKeyOnly : False UserPrincipalName : HTTP/us-south-1.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM

Configure Kerberos Authentication for Explicit Proxy Deployments

Use the following workflow to configure Kerberos authentication with an Explicit Proxy deployment.
  1. Get the FQDN, proxy FQDNs, and DNS CNAMEs that are required to set up your Kerberos authentication.
    Kerberos authentication uses the information retrieved from the Prisma Access API script to create and configure the Kerberos keytabs. The API script retrieves the following information:
    • ep_geo_lb_fqdn
      —The Explicit Proxy DNS FQDN used in the Explicit Proxy network load balancer configuration. This FQDN is identical to the Explicit Proxy
      Explicit Proxy URL
      in the Prisma Access UI under
      Settings
      Prisma Access Setup
      Explicit Proxy
      .
    • ep_geo_lb_cname
      —The DNS CNAME for the Explicit Proxy tenant.
    • ep_regional_fqdn
      —The FQDNs used for the onboarded Explicit Proxy locations.
      Explicit Proxy gives each location a public IP address for the network load balancer; the ep_regional_fqdn is the FQDN associated with that IP address. If multiple locations share the same public IP address, those locations use the same regional FQDN.
    1. Go to Cloud Managed Prisma Access and select
      Settings
      Prisma Access Setup
      Shared
      .
    2. Generate New API Key
      .
      You use this key as part of the API curl command.
    3. Create a .txt file and enter the following command options in the file:
      { "serviceType": "swg_proxy", "location": "deployed", "addrType": "network_load_balancer" }
    4. Enter the following command to retrieve the required FQDNs to use Kerberos authentication:
      curl -X POST --data @option.txt -H header-api-key:Current-API-Key "https://api.prod.datapath.prismaaccess.com/getPrismaAccessIP/v2"
      Where
      option.txt
      is the .txt file you created in a previous step and
      Current-API-Key
      is the Prisma Access API key.
    5. Make a note of the FQDNs.
      There is at least one
      ep_geo_lb_fqdn
      , one
      ep_geo_lb_cname
      , and one
      ep_regional_fqdn
      per onboarded location.
  2. Create a new user for the Prisma Access Explicit Proxy service in your organization’s Active Directory (AD) by entering the following command:
    New-ADUser -Name "
    USER_NAME
    " -GivenName "
    USER_GIVEN_NAME
    " -SamAccountName "
    USER_SAMACCOUNTNAME
    " -UserPrincipalName "
    USER_NAME
    @
    DNS_DOMAIN_NAME
    " -Path "
    X_500_PATH
    " –AccountPassword (ConvertTo-SecureString “
    PASSWORD
    ” -AsPlainText -force) -Enabled $true -KerberosEncryptionType RC4,AES128,AES256
    Where:
    • USER_NAME
      is the name of the user object.
    • USER_GIVEN_NAME
      is the user’s given name.
    • USER_SAMACCOUNTNAME
      is the user’s Security Account Manager (SAM) name.
    • USER_NAME
      @
      DNS_DOMAIN_NAME
      is the user’s user principal name (UPN).
    • X_500_PATH
      is the X.500 path of the OU or container where the new object is created (for example,
      DC=EXAMPLE,DC=COM
      .)
    • PASSWORD
      is the password to use for the account.
    The following CLI example has a user name of
    example
    , a SAM name of
    example
    , a given name of
    PrismaAccess EP Service User
    , a UPN of
    example@exmp.com
    , a path of
    DC=EXMP,DC=COM
    , and a password of Ex@mple123:
    New-ADUser -Name "example" -GivenName "PrismaAccess EP Service User" -SamAccountName "example" -UserPrincipalName "example@exmp.com" -Path "DC=EXMP,DC=COM" –AccountPassword (ConvertTo-SecureString “Ex@mple123” -AsPlainText -force) -Enabled $true -KerberosEncryptionType RC4,AES128,AES256
    The previous command specifies an encryption type of RC4, which uses a weak NTLM hash. Follow your organization’s security policies and guidelines to include or exclude RC4 in this command.
  3. Enter the following command to prevent the password from expiring and to prevent it from being changed:
    Get-ADUser
    USER_NAME
    |Set-ADUser -PasswordNeverExpires:$True -CannotChangePassword:$true
    Follow your organization’s security policies and guidelines for password expiration and rotation policies.
  4. Enter the following command to display the newly-created user account:
    Get-ADUser
    USER_NAME
    -property msDS-
    KeyVersionNumber
  5. Associate the SPNs and export keytab files to use with Kerberos authentication in your Windows AD.
    A keytab file allows Explicit Proxy to validate the Kerberos authentication tokens provided during the traffic flows from users, servers, IoT devices, or other headless machines. During the keytab file creation, Explicit Proxy requires that the values you retrieved using the API in Step 2 be associated as ServicePrincipalNames (SPNs) with the user account you created in Step 3.
    Use the
    ep_geo_lb_fqdn
    ,
    ep_geo_lb_cname
    , and
    ep_regional_fqdn
    values. These values allow Explicit Proxy to authenticate traffic flows to either of those proxy domains.
    1. Generate and export a keytab using the
      ep_geo_lb_fqdn
      value as the service principal name (SPN) by entering the following commands:
      ktpass -princ HTTP/
      ep_geo_lb_fqdn
      @
      REALM
      -mapuser
      DOMAIN
      \
      USER_NAME
      -ptype KRB5_NT_PRINCIPAL -crypto all -pass
      PASSWORD
      -out
      KEYTAB_NAME_1
      .keytab
      Where:
      • ep_geo_lb_fqdn
        is the
        ep_geo_lb_fqdn
        value returned from the Explicit Proxy API script.
      • REALM
        is the realm (for example,
        EXMP.COM
        ).
        In most cases, you enter the realm using uppercase letters.
      • DOMAIN
        \
        USER_NAME
        is the domain-level logon name (for example,
        EXMP\example
        ).
      • PASSWORD
        is the password to use for the keytab. This password does not have to match the user password, but must match the value you create for the
        ep_geo_lb_cname
        and
        ep_regional_fqdn
        SPNs in the next steps.
      • KEYTAB_NAME_1
        is the name of the keytab. The keytab name must be unique to this SPN.
      The following CLI example has an
      ep_geo_lb_fqdn
      of
      example.proxy.prismaaccess.com
      , a
      REALM
      of
      EXMP.COM
      , a
      DOMAIN
      \
      USER_NAME
      of
      EXMP\example
      , a
      PASSWORD
      of
      Ex@mple123
      , and an exported keytab name of
      exmp1.keytab
      :
      ktpass -princ HTTP/example.proxy.prismaaccess.com@EXMP.COM -mapuser EXMP\example -ptype KRB5_NT_PRINCIPAL -crypto all -pass Ex@mple123 -out exmp1.keytab
    2. Generate and export a keytab using the
      ep_geo_lb_cname
      value as the SPN by entering the following commands:
      ktpass -princ HTTP/
      ep_geo_lb_cname
      @
      REALM
      -mapuser
      DOMAIN
      \
      USER_NAME
      -ptype KRB5_NT_PRINCIPAL -crypto all -pass
      PASSWORD
      -out
      KEYTAB_NAME_2
      .keytab
      Where:
      • ep_geo_lb_cname
        is the
        ep_geo_lb_cname
        value returned from the Explicit Proxy API script.
      • REALM
        is the realm for example,
        EXMP.COM
      • DOMAIN
        \
        USER_NAME
        is the domain-level logon name (for example,
        EXMP\example
        ).
      • PASSWORD
        is the password to use for the keytab. This password must match the
        ep_geo_lb_fqdn
        and
        ep_regional_fqdn
        SPN passwords.
      • KEYTAB_NAME_2
        is the name of the keytab you want to export. This name should be different than the other SPN keytab names you create.
      The following CLI example has an
      ep_geo_lb_cname
      of
      prisma-abcde12345.proxy.prismaaccess.com
      , a
      REALM
      of
      EXMP.COM
      , a
      DOMAIN
      \
      USER_NAME
      of
      EXMP\example
      , a
      PASSWORD
      of
      Ex@mple123
      , and an exported keytab name of
      exmp2.keytab
      :
      ktpass -princ HTTP/prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM -mapuser EXMP\example -ptype KRB5_NT_PRINCIPAL -crypto all -pass Ex@mple123 -out exmp2.keytab
    3. Generate and export a keytab using the
      ep_regional_fqdn
      value as the SPN by entering the following commands:
      ktpass -princ HTTP/
      ep_regional_fqdn
      @
      REALM
      -mapuser
      DOMAIN
      \
      USER_NAME
      -ptype KRB5_NT_PRINCIPAL -crypto all -pass
      PASSWORD
      -out
      KEYTAB_NAME_3
      .keytab
      Where:
      • ep_regional_fqdn
        is the
        ep_regional_fqdn
        value returned from the Explicit Proxy API script.
      • REALM
        is the realm (for example,
        EXMP.COM
        ).
      • DOMAIN
        \
        USER_NAME
        is the domain-level logon name (for example,
        EXMP\example
        ).
      • PASSWORD
        is the password to use for the keytab. This password must match the
        ep_geo_lb_fqdn
        and
        ep_geo_lb_cname
        SPN passwords.
      • KEYTAB_NAME_3
        is the name of the keytab you want to export. This name should be different than the other SPN keytab names you create.
      The following CLI example has an
      ep_regional_fqdn
      of
      us-west-2.prisma-abcde12345.proxy.prismaaccess.com
      , a
      REALM
      of
      EXMP.COM
      , a
      DOMAIN
      \
      USER_NAME
      of
      EXMP\example
      , a
      PASSWORD
      of
      Ex@mple123
      , and an exported keytab name of
      exmp3.keytab
      :
      ktpass -princ HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM -mapuser EXMP\example -ptype KRB5_NT_PRINCIPAL -crypto all -pass Ex@mple123 -out exmp3.keytab
    4. (
      Optional
      ) If you have additional locations that use different
      ep_regional_fqdn
      values, and you want to create keytabs for those locations, generate and export one or more additional keytabs by repeating Step 6.c, using the
      ep_regional_fqdn
      value for those locations.
      Create a unique keytab name for each unique
      ep_regional_fqdn
      . For example, if the
      ep_regional_fqdn
      for another location is
      us-east-2.prisma-abcde12345.proxy.prismaaccess.com
      , enter the following sample CLI with a unique exported keytab file name:
      ktpass -princ HTTP/us-east-2.prisma-abcde12345.proxy.prismaaccess.com@EXMP.COM -mapuser EXMP\example -ptype KRB5_NT_PRINCIPAL -crypto all -pass Ex@mple123 -out exmp4.keytab
  6. Delete unsupported ciphers in the created keytabs by entering the following
    ktutil
    commands in Ubuntu.
    The following system output provides examples for cleaning up various ciphers:
    slot KVNO Principal ---- ---- --------------------------------------------------------------------- 1 3 HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@PANW.COM (des-cbc-crc) 2 3 HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@PANW.COM (des-cbc-md5) 3 3 HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@PANW.COM (arcfour-hmac) 4 3 HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@PANW.COM (aes256-cts-hmac-sha1-96) 5 3 HTTP/us-west-2.prisma-abcde12345.proxy.prismaaccess.com@PANW.COM (aes128-cts-hmac-sha1-96)
    # display all keytabs, get the key entry numbers to remove DES-CBC-MD5 and DES-CBC-CRC. # Also, enable or disable RC4-HMAC based on your organization’s policy. for i in `ls keytab_name*.keytab`; do echo $i; klist -Kte -k $i; done # cleanup unsupported ciphers # entry #1 is typically des-cbc-crc # entry #2 is typically des-cbc-md5 # entry #3 is typically arcfour-hmac ktutil rkt
    KEYTAB_NAME_1
    .keytab delent 2 delent 1 wkt new1.keytab quit ktutil rkt
    KEYTAB_NAME_2
    .keytab delent 2 delent 1 wkt new2.keytab quit ktutil rkt
    KEYTAB_NAME_3
    .keytab delent 2 delent 1 wkt new3.keytab quit
    Where
    KEYTAB_NAME_1
    .keytab,
    KEYTAB_NAME_2
    .keytab, and
    KEYTAB_NAME_3
    .keytab are the keytabs you created in the previous step.
  7. (
    Optional
    ) If you created more keytabs for other regions, remove unsupported ciphers on those keytabs by entering the previous
    ktutil
    command, substituting
    KEYTAB_NAME_1
    .keytab with the keytab name you used for the region or regions and specifying a different output file (for example,
    new4.keytab
    ,
    new5.keytab
    , and so on).
  8. Merge the keytabs you created by entering the following
    ktutil
    command, where new1.keytab, new2.keytab, and new3.keytab are the keytabs you created in the previous step, Be sure to include all the region-specific keytabs in this command:
    ktutil rkt new1.keytab rkt new2.keytab rkt new3.keytab # if you created any additional region-specific keytab files, add them here. wkt papxv1.keytab quit
    When complete, you use the keytab you created (
    papxv1.keytab
    in this example) as the keytab to use with Explicit Proxy.
  9. (
    Optional
    ) If you need to add more regions to the keytab file you created later, use the Prisma Access API script to get the
    ep_regional_fqdn
    for that region, then repeat Step 6.c to generate and export a keytab for the newly-added region.
    The following command is a sample, where:
    • us-south-1.prixma-abcde12345.prismaaccess.com@EXMP.COM
      is the
      ep_regional_fqdn
      and
      realm
      .
    • EXMP\example
      is the domain-level logon name.
    • Ex@mple123
      is the password.
    • KEYTAB_NAME_5.keytab
      is the name of the newly-created regional keytab file.
    • new5.keytab
      is the name of the keytab file with the ciphers removed.
    • papxv1.keytab
      and
      new5.keytab
      are the keytabs you are combining to create the final keytab,
      papxv2.keytab
      .
    # associate new ep_regional_fqdn as SPN ktpass -princ HTTP/us-south-1.prixma-abcde12345.prismaaccess.com@EXMP.COM -mapuser EXMP\example -ptype KRB5_NT_PRINCIPAL -crypto all -pass Ex@mple123 -out KEYTAB_NAME_5.keytab # repeat cleanup and merge of KEYTAB_NAME_5.keytab to generate new5.keytab, and merge it with papxv1.keytab. ktutil rkt KEYTAB_NAME_5.keytab delent 2 delent 1 wkt new5.keytab quit ktutil rkt papxv1.keytab rkt new5.keytab wkt papxv2.keytab quit
    When complete, you use the keytab you created (papxv2.keytab in the previous example) as the keytab to use with Explicit Proxy. Update the authentication profile with this new keytab.
  10. Set up a Kerberos authentication profile.
    The profile defines how Explicit Proxy connects to the Kerberos server for mobile user authentication.
    1. Go to
      Manage
      Configuration
      Identity Services
      Authentication
      Authentication Profiles
      , set the scope to
      Explicit Proxy
      , and
      Add Profile
      .
    2. Select the
      Authentication Method
      :
      Kerberos
      .
    3. Enter the
      Profile Name
      to identify the server profile.
      The authentication profile specifies the server profile that the portal or gateways use when they authenticate users.
    4. Enter the
      Kerberos Realm
      (up to 127 characters) to specify the hostname portion of the user login name. For example, the user account name user@EXMP.COM has the realm EXMP.COM.
    5. Import the
      Kerberos Keytab
      (
      Import Keytab
      ) you created in Step 9.
      During authentication, the endpoint first attempts to establish SSO using the keytab.
    6. Add the
      Users Allowed to Authenticate
      with this profile.
      • To select all users,
        Match all
        .
      • If you’re using the Cloud Identity Engine to populate the list of users, select the users from a list, or select
        all
        to allow all users to authenticate.
      • To add local users that can log in using Kerberos,
        Add Local User
        , add the
        Name
        , and create a
        Password
        .
    7. Save
      your changes.
  11. Associate the authentication profile with an authentication method.
    1. Go to
      Settings
      Prisma Access Setup
      Explicit Proxy
      .
    2. Select the
      Connection Name
      .
    3. Select an
      Authentication Method
      of
      Kerberos
      and select the Kerberos
      Profile
      you created.
    4. Save
      your changes.
  12. Add the egress IP addresses of the branch or campus location where your users, servers, IoT devices, or headless machines are located to the list of trusted Explicit Proxy addresses.
    1. Go to
      Settings
      Prisma Access Setup
      Explicit Proxy
      .
    2. Add Address
      (one or more) to the
      Trusted Source Address
      field.
      If you do not add the egress endpoint IP addresses to the trusted list, Explicit Proxy forces users and machines to authenticate with SAML as well as Kerberos.
      Enter a maximum of 100,000 IP addresses.
    3. Save
      your changes.
  13. Push Config
    to save your configuration changes.
  14. Verify that Kerberos authentication is working with Prisma Access by viewing the traffic and authentication logs.
    1. (
      Decrypted traffic only
      ) Go to
      Activity
      Log Viewer
      Firewall/Traffic
      and check that the Kerberos authentication is working.
      Decrypted traffic displays the user name in the traffic logs.
    2. (
      Undecrypted traffic only
      ) Go to
      Activity
      Log Viewer
      Firewall/Authentication
      and check that Kerberos authentication is working correctly.
      The following fields provide more information about the authentication event:
      • Object
        —The website the user was attempting to access before being redirected to Kerberos to authenticate.
      • Auth Event
        —The status of the authentication attempt.
        Authentication Success
        indicates that the authentication event was successful;
        Authentication Failure
        indicates that the attempt failed.
      • Authentication Description
        —If the authentication attempt failed, additional information about the type of failure.
        For example,
        user not allowed
        indicates that the user or group is not allowed to use Kerberos to authenticate, possible because it was not added to the
        Allow List
        in the authentication profile.

Recommended For You