F5 BIG-IP configuration guide for BeyondInsight | PS

Executive Summary

BeyondInsight and Password Safe support several configuration methodologies for high availability, redundancy, and scalability. You can install the solution as software or deploy it as a ready-to-run security appliance called a U-Series; the U-Series is the more common deployment method. Most configurations require an external application delivery controller as a load balancer to help users and software endpoints continue to connect to BeyondInsight when a primary IP address goes offline. This guide describes these configuration options using the F5 BIG-IP Local Traffic Manager (LTM) application delivery controller.

Deployment Methodologies

Active/Passive

Active/Passive requires two appliances. The internal databases are replicated, and a heartbeat from the primary node signals the secondary to take over operations when needed. Active/Passive is called High Availability or HA Pairing in the U-Series appliance interface. Despite the name, configure High Availability in the U-Series appliance only for the Active/Passive deployment methodology.

Active/Passive is available for U-Series appliances only and is not supported for Password Safe Cloud. The system fails over automatically to a mirrored appliance when the primary appliance is unavailable. This method uses two appliances configured as a pair.

For more information about configuring Active/Passive pairing and requirements, see U-Series Business Continuity and U-Series Deployment and Failover Guide.

Active/Active

Also called multi-active, this deployment type allows multiple nodes (Password Safe instances) to be active simultaneously. Each node connects directly to an external database.

For more information about Active/Active design, see U-Series Deployment and Failover Guide.

Design Overview

BeyondInsight and Password Safe expose several network endpoints that each require different load-balancing configurations:

  • The Password Safe HTTPS website and API, its session recording endpoints: webconsole/api/configuration/feature/passwordsafe
  • The BeyondInsight Management Console HTTPS website (typically for A&R configuration): webconsole/api/configuration/feature/managementconsole
  • The BI Event Collector for EPM Windows and Mac events: EventCollector/EventCollector

Each endpoint has different networking and TLS requirements and must be configured as a separate virtual server in the F5 BIG-IP LTM. Because each endpoint uses a different URI, availability monitoring also requires separate configuration. For Active/Passive high-availability configurations, the goal is fast, efficient failover, even if it requires users to sign in again.

Configuration Elements for Both A/A and A/P Deployments

Example Monitors

The HTTPS monitor differs between Active/Active and Active/Passive deployments. The RDP and SSH monitors use the same definition in both.

RDP Monitor

Use a TCP Half-Open check for the RDP monitor. A full TCP check can periodically cause high CPU utilization on the U-Series appliance.

ltm monitor tcp-half-open U-Series-PWSMonitor-HalfOpen {
    defaults-from tcp_half_open
    description "U-Series test if RDP is available"
    destination *.4489
    interval 5
    time-until-up 0
    timeout 16
}
SSH Monitor
ltm monitor tcp U-Series-SSH-TCP-Monitor {
    adaptive disabled
    defaults-from tcp
    description "U-Series test if SSH is available"
    destination *.4422
    interval 5
    ip-dscp 0
    recv SSH-2.0-PBPS-SM
    recv-disable none
    send none
    time-until-up 0
    timeout 16
}

Example HTTP and SSL Profiles

Build an HTTP profile to add the X-Forwarded-For header to HTTP communication. This enables address translation and avoids triangle routing complications. (This is not required when the F5 is the default router for the BeyondInsight appliances, which is a less common configuration.) Any location-based policies or API configurations must read the X-Forwarded-For header and restrict that header to the SNAT address of the virtual server. Because the F5 inspects and modifies the HTTP stream, it must terminate the TLS connection, which requires a client SSL profile to host the TLS certificate for the Password Safe deployment.

Example HTTP Profile
ltm profile http /Common/pws-http-xff-profile {
    accept-xff disabled
    app-service none
    basic-auth-realm none
    defaults-from /Common/http
    encrypt-cookies none
    enforcement {
        allow-ws-header-name disabled
        known-methods { CONNECT DELETE GET HEAD LOCK OPTIONS POST PROPFIND PUT TRACE UNLOCK }
        max-header-count 64
        max-header-size 32768
        max-requests 0
        pipeline allow
        rfc-compliance disabled
        truncated-redirects disabled
        unknown-method allow
    }
    fallback-host none
    fallback-status-codes none
    header-erase none
    header-insert none
    hsts {
        include-subdomains enabled
        maximum-age 16070400
        mode disabled
        preload disabled
    }
    insert-xforwarded-for enabled
    lws-separator none
    lws-width 80
    oneconnect-status-reuse "200 206"
    oneconnect-transformations enabled
    proxy-type reverse
    redirect-rewrite none
    request-chunking sustain
    response-chunking sustain
    response-headers-permitted none
    server-agent-name BigIP
    sflow {
        poll-interval 0
        sampling-rate 0
    }
    via-request preserve
    via-response preserve
    xff-alternative-names none
}
Example SSL Profile

This profile publishes the TLS certificate from the F5, allowing the HTTP profile to modify the decrypted HTTP stream before sending it to the backend U-Series appliances.

ltm profile client-ssl /Common/prod-pws-clientssl-https {
    alert-timeout indefinite
    allow-dynamic-record-sizing disabled
    allow-non-ssl disabled
    app-service none
    cache-size 262144
    cache-timeout 3600
    cert-key-chain {
        pbps-2025-08-cert_pbps-2025-08-cert_0 {
            cert /Common/pbps-2025-08-cert
            chain /Common/pbps-2025-08-cert
            key /Common/pbps-2025-08-cert
        }
    }
    cipher-group none
    ciphers DEFAULT
    data-0rtt disabled
    defaults-from /Common/clientssl
    generic-alert enabled
    handshake-timeout 10
    inherit-ca-certkeychain true
    inherit-certkeychain false
    max-active-handshakes indefinite
    max-aggregate-renegotiation-per-minute indefinite
    max-renegotiations-per-minute 5
    maximum-record-size 16384
    mod-ssl-methods disabled
    mode enabled
    notify-cert-status-to-virtual-server disabled
    ocsp-stapling disabled
    options { dont-insert-empty-fragments no-tlsv1.3 no-dtlsv1.2 }
    peer-no-renegotiate-timeout 10
    proxy-ssl disabled
    proxy-ssl-passthrough disabled
    renegotiate-max-record-delay indefinite
    renegotiate-period indefinite
    renegotiate-size indefinite
    renegotiation enabled
    secure-renegotiation require
    server-name none
    session-mirroring disabled
    session-ticket disabled
    session-ticket-timeout 0
    sni-default false
    sni-require false
    ssl-sign-hash any
    strict-resume disabled
    unclean-shutdown enabled
}

Example Pool and Node Configurations

Pool and Node configurations
ltm node /Common/useries01 {
    address 192.168.1.3
    monitor /Common/U-Series-ActiveActive-PS-API-Check and /Common/U-Series-HA-Status and /Common/U-Series-Management-Check and /Common/U-Series-PWSMonitor-HalfOpen and /Common/U-Series-SSH-TCP-Monitor
}

ltm node /Common/useries02 {
    address 192.168.1.4
    monitor /Common/U-Series-ActiveActive-PS-API-Check and /Common/U-Series-Management-Check and /Common/U-Series-PWSMonitor-HalfOpen and /Common/U-Series-SSH-TCP-Monitor and /Common/U-Series-HA-Status
}

ltm pool /Common/Lab-PWS-Pool {
    load-balancing-mode observed-member
    members {
        /Common/lbapscww06-http:0 {
            address 192.168.11.15
        }
    }
    monitor /Common/U-Series-ActiveActive-PS-API-Check and /Common/U-Series-Management-Check and /Common/U-Series-PWSMonitor-HalfOpen and /Common/U-Series-SSH-TCP-Monitor
}

ltm pool /Common/Prod-PWS-Pool {
    load-balancing-mode observed-member
    members {
        /Common/useries01:0 {
            address 192.168.1.3
        }
        /Common/useries02:0 {
            address 192.168.1.4
        }
    }
    monitor /Common/U-Series-HA-Status and /Common/U-Series-PWSMonitor-HalfOpen and /Common/U-Series-SSH-TCP-Monitor
}

Example SNAT Configuration

SNAT configuration

Source Network Address Translation (SNAT) is required in one-armed and other triangle-routing configurations. For more information about SNAT, see the Overview of SNAT features.

ltm snat /Common/PWS-lab-SNAT-IP {
    origins {
        0.0.0.0/0 { }
    }
    translation /Common/192.168.11.241
}

ltm snat-translation /Common/192.168.1.11 {
    address 192.168.1.11
    inherited-traffic-group true
    traffic-group /Common/traffic-group-1
}

ltm snatpool /Common/PWS-SNAT-Pool {
    members {
        /Common/192.168.1.11
    }
}

Example Virtual Server

Virtual Server

Server Name Indication (SNI) may work on the virtual server configuration, but BeyondTrust has not tested it.

Because this configuration uses a SNAT Pool and address translation, the PWS Appliance API and Location Restrictions features need to match on both the SNAT IP from the F5 and the X-Forwarded-For header indicating the client.

ltm virtual /Common/Prod-PWS-VS-HTTP {
    creation-time 2026-04-17:11:59:34
    destination /Common/192.168.1.201:443
    ip-protocol tcp
    last-modified-time 2026-04-17:14:01:54
    mask 255.255.255.255
    persist {
        /Common/source_addr {
            default yes
        }
    }
    pool /Common/Prod-PWS-Pool
    profiles {
        /Common/prod-pws-clientssl-https {
            context clientside
        }
        /Common/pws-http-xff-profile { }
        /Common/serverssl-secure {
            context serverside
        }
        /Common/tcp { }
    }
    serverssl-use-sni disabled
    source 0.0.0.0/0
    source-address-translation {
        pool /Common/PWS-SNAT-Pool
        type snat
    }
    translate-address enabled
    translate-port enabled
}

ltm virtual /Common/Prod-PWS-VS-RDP {
    creation-time 2026-04-17:11:59:58
    destination /Common/192.168.1.201:4489
    ip-protocol tcp
    last-modified-time 2026-04-17:13:57:56
    mask 255.255.255.255
    persist {
        /Common/source_addr {
            default yes
        }
    }
    pool /Common/Prod-PWS-Pool
    profiles {
        /Common/tcp { }
    }
    serverssl-use-sni disabled
    source 0.0.0.0/0
    source-address-translation {
        pool /Common/PWS-SNAT-Pool
        type snat
    }
    translate-address enabled
    translate-port enabled
}

ltm virtual /Common/Prod-PWS-VS-SSH {
    creation-time 2026-04-17:12:00:20
    destination /Common/192.168.1.201:4422
    ip-protocol tcp
    last-modified-time 2026-04-17:13:58:15
    mask 255.255.255.255
    persist {
        /Common/source_addr {
            default yes
        }
    }
    pool /Common/Prod-PWS-Pool
    profiles {
        /Common/tcp { }
    }
    serverssl-use-sni disabled
    source 0.0.0.0/0
    source-address-translation {
        pool /Common/PWS-SNAT-Pool
        type snat
    }
    translate-address enabled
    translate-port enabled
}

ltm virtual-address /Common/192.168.1.201 {
    address 192.168.1.201
    arp enabled
    icmp-echo enabled
    mask 255.255.255.255
    traffic-group /Common/traffic-group-1
}

State Detection for Active/Passive Deployments

The U-Series appliance exposes an API endpoint that allows an external device to determine the current HA state:

https://[ApplianceIPaddress]/UVMInterface/api/HighAvailability

A GET request to this address returns a result (JSON by default) that the request header controls. For example: {"Role":"Active"}.

You can view the JSON by opening the URL in a web browser. Because the API endpoint is built on the Microsoft WebAPI platform, it supports other response formats controlled by the request header. For example, Chrome returns XML when you open the URL directly.

Example HTTPS Monitor

HTTPS Monitor
ltm monitor https U-Series-HA-Status {
    adaptive disabled
    defaults-from https
    description "HTTP GET on U-Series API for Active-Passive Configuration"
    destination *.https
    interval 5
    ip-dscp 0
    recv "\"Role\":\"Active\""
    recv-disable none
    send "GET /UVMInterface/api/HighAvailability/\r\n"
    time-until-up 0
    timeout 16
}

State Detection for Active/Active Deployments

Password Safe

In addition to the BeyondInsight website, Password Safe requires support for the following interfaces:

  • HTML5 web endpoint for user access to check out passwords
  • Listening ports for session recording:
    • 4489 (default) for RDP sessions
    • 4422 (default) for SSH sessions

The HTML5 web endpoint and session recording listeners must share the same persistence profile, so that the F5 BIG-IP LTM routes each user to the Password Safe node that started their session recording service.

ℹ️

Previous versions of this document recommended separate configurations for the API and web GUI use cases. Because OAuth API authentication is now the preferred API access method and the BI Web Console is an available role on all worker nodes, most customers can consolidate to a single "Password Safe" virtual server.

The Password Safe configuration uses one or more virtual servers connected to a single pool with wildcard (all-services-enabled) nodes, using source_addr as the primary persistence method to maintain persistence across all virtual servers.

For more information about persistence strategy, see Persistence strategy.

The RDP and SSH monitors are the same as in the Active/Passive configuration. The HTTPS monitors differ to manage and monitor the roles enabled on each appliance.

Example Password Safe Role Monitor

Password Safe role monitor
ltm monitor https U-Series-ActiveActive-PS-API-Check {
    adaptive disabled
    defaults-from https
    description "API call to check if the Password Safe feature is enabled"
    destination *.https
    interval 15
    ip-dscp 0
    recv true
    recv-disable none
    send "GET /webconsole/api/configuration/feature/passwordsafe/\r\n"
    time-until-up 0
    timeout 16
}

Example Management Console Role Monitor

Management console role monitor
ltm monitor https U-Series-Management-Check {
    adaptive disabled
    defaults-from https
    description "API call to check if the BI Management Console feature is enabled"
    destination *.https
    interval 15
    ip-dscp 0
    recv true
    recv-disable none
    send "GET /webconsole/api/configuration/feature/managementconsole/\r\n"
    time-until-up 0
    timeout 16
}

Example HTTP Virtual Server

The only difference between Active/Active and Active/Passive configurations is the monitor used to validate system availability. In Active/Active deployments where the BeyondInsight Management Web Interface is not enabled on all Password Safe nodes, configure multiple virtual servers, each monitoring a different service (Password Safe or Management Console). This ensures health checks target the appropriate services and routes users individually without exposing additional services to the broader user space.

BeyondInsight Event Collector Service

The BeyondInsight Event Collector service allows Endpoint Privilege Management Windows and Mac clients to send events to BeyondInsight and to connect to Password Safe for endpoint account password rotation.

Clients require SSL server verification. Previous versions of BeyondInsight and EPM used mutual TLS (mTLS) certificate validation for client authentication, but this was deprecated in favor of OAuth in EPM 24.8 and BI 25.3. This guide uses the OAuth configuration. In this configuration, the virtual server definitions for EPM are the same as for Password Safe, but the backend pools may use a different monitor.

Example EventCollector Monitor

The EventCollector service requires OAuth authentication. You can validate its availability by checking for failed authentication responses, either a 403 status code or the text Forbidden.

EventCollector monitor
ltm monitor https /Common/event_client {
    compatibility enabled
    defaults-from /Common/https
    destination *:*
    interval 5
    recv "Forbidden"
    send "GET /EventService/Collector.svc\r\n"
    time-until-up 0
    timeout 16
}

SNAT Pools

Source Network Address Translation (SNAT) is required in one-armed and other triangle-routing configurations. For more information, see the Example SNAT Configuration section above, and the Overview of SNAT features.

©2003-2026 BeyondTrust Corporation. All Rights Reserved. Other trademarks identified on this page are owned by their respective owners. BeyondTrust is not a chartered bank or trust company, or depository institution. It is not authorized to accept deposits or trust accounts and is not licensed or regulated by any state or federal banking authority.