BURSU PAM
The complete guide to the BURSU PAM 1.0.0 privileged access gateway: installation, setup, the work of the administrator, approver, auditor and user, and troubleshooting. BURSUsofts.
What BURSU PAM is
BURSU PAM is a privileged access management (PAM) gateway from BURSUsofts. It is a server that sits between administrators and the servers they manage. A person connects not to the target server but to the gateway; the gateway signs in to the target server itself with a password or key that the person never sees or knows, records everything that happens in the session, lets an auditor watch the session live and terminate it, and writes every action to an audit log protected against unnoticed editing.
What the gateway can do
| Capability | What it means for you |
|---|---|
| Password injection | Passwords and SSH keys of the target servers are stored on the gateway in encrypted form. The gateway signs in to the server itself; the user does not see the password and cannot copy it and take it away. Even an administrator cannot view a saved password — it can only be replaced. |
| Session proxying and recording | SSH (terminal, SFTP, SCP), RDP (Windows desktop), VNC (Linux and macOS desktops), Telnet (network equipment) and the databases PostgreSQL, MySQL/MariaDB and Microsoft SQL Server. Terminal sessions are recorded as text that can be searched for what was typed, graphical ones as video with seeking and export to MP4, database sessions as a list of the queries that were run. |
| Access rules | Who may connect to which server, under which account, when and with which rights (terminal, file transfer, clipboard). When a rule expires or is deleted, the session in progress is terminated. |
| Access requests and approvals | A user asks for access for a period, and an approver (Approver) approves or declines. Emergency access (break-glass) comes with a mandatory review afterwards. |
| Command control | Dangerous commands in an SSH session can be forbidden, or sent to an approver for confirmation right during the session. |
| Audit | A log of all events linked by a hash chain (any edit or deletion of an entry is detected by the integrity check), a sign-in log, and sending events to your SIEM over syslog (CEF, LEEF, JSON). |
| Console sign-in | A password plus a one-time code from an authenticator app (TOTP), and recovery codes; sign-in with Active Directory / LDAP accounts and with Kerberos. |
| BURSU Connection Manager client | The BURSUcm desktop client (Windows; Linux and macOS) connects to the gateway as the fourth storage mode, PAM Gateway: the user sees only the servers they are allowed and connects to them with a double click. Ordinary programs work too: OpenSSH, PuTTY, WinSCP, mstsc, VNC viewers, psql, mysql, sqlcmd. |
| Licensing | A 7-day trial licence, then a paid one by the number of active servers. Activation also works without the internet — through a request code. |
Who works with the gateway
The console has four roles. They are covered in detail in the chapter “Roles”; here they are listed so that you know which chapter is for whom.
| Role | Who it is | Chapters |
|---|---|---|
| Administrator | Installs and configures the gateway: servers, accounts, users, rules, settings, the licence. | Installation, Console, Resources |
| Approver | The approver: approves access requests and confirms commands. | Approvals, The Approver role |
| Auditor | Watches sessions and recordings, reads the logs, checks integrity and reviews emergency access. | Audit, The Auditor role |
| User | An ordinary user: connects to the servers they are allowed and asks for access. | For users, Access requests |
If you are installing the gateway for the first time, go through “Quick start” from beginning to end — it takes an empty Ubuntu server to the first recorded session and links to the detailed chapter at every step. Interface labels in the text are given in English, as on the screenshots; the console can be switched to Russian (the matching of menu items is in the chapter “Getting to know the console”).
How the gateway is built
The gateway is a single .NET 10 process (the bursu-pam-gateway service) on your server, next to a PostgreSQL database. It accepts people's connections on its own ports, checks whether the connection is allowed, opens the connection to the target server itself and passes the session through itself, recording it.
User BURSU PAM gateway Target servers
─────────────── ────────────────────────────────────────────── ────────────────
BURSUcm (PAM Gateway) ─HTTPS─► web console and client API (port 443)
─SSH───► SSH entry (port 2222) ─── SSH ──────► Linux, Unix
OpenSSH, PuTTY, WinSCP ──────► │ ─── Telnet ───► network equipment
mstsc, .rdp file ────────────► RDP entry (port 3389) ─── RDP ──────► Windows
VNC viewer ──────────────────► VNC entry (port 5900) ─── VNC ──────► Linux, macOS
psql / mysql / sqlcmd ───────► database ports (15432 / 13306 / 11433) ─────────────► databases
│
rules · secrets · recording · live view · audit
│
PostgreSQL (catalogue, log) /var/lib/bursu-pam (keys, recordings) SIEM (syslog)
The path of one session
- Sign-in. The user connects to the gateway. From BURSUcm, after signing in to the console with a password and a TOTP code, the client receives a one-time ticket for one connection; from an ordinary SSH client, with a name of the form
login:server, a password and a TOTP code. - Rule check. The gateway checks whether there is a valid access rule (or an approved request) for this person, server and account, and what is allowed in the session: terminal, files, clipboard.
- Signing in to the target. The gateway decrypts the account's secret and signs in to the target server itself. For SSH it compares the target's host key with the one confirmed by the administrator, for RDP and VNC it compares the certificate.
- Recording and watching. Everything that passes through the session is recorded; an auditor sees the session live and can terminate it. Commands are checked against the command control policies.
- End. The session ends when the user logs out, the idle time runs out, the rule ends or an auditor terminates it. The recording is closed and signed, and the events go to the audit log and to the SIEM.
Secrets and the encryption key
The passwords and keys of the target servers are stored in the database in encrypted form. They are encrypted by the gateway's master key, which lies in the key directory /var/lib/bursu-pam/keys, not in the database. So a copy of the database without the key directory is useless — no secret and no recording in it can be read. The master key is protected in one of two ways, chosen in the first-setup wizard:
- Protected by the operating system (recommended) — the key lies in a file that only the gateway service can read; after a reboot the gateway starts by itself.
- Sealed with a passphrase — after each restart of the service the administrator enters the passphrase on the
/unsealpage; while the gateway is “sealed”, it does not work. See “Sealed mode”.
In case the key is lost or the passphrase is forgotten, the wizard shows a recovery key once. Print it and keep it offline, in a safe — not on the gateway server.
Audit log and recordings
Every event (a sign-in, a settings change, the start and end of a session, a command, a file transfer…) is written to the audit log. The entries are linked into a hash chain: each contains the hash of the previous one, and the gateway regularly sets checkpoints. If someone changes or deletes a row directly in the database, the integrity check will show it. Session recordings are stored in the /var/lib/bursu-pam/recordings directory together with signed descriptions (manifests) and hashes.
Isolation of graphical sessions
Every RDP and VNC session and every recording rendering task (live view, player, MP4 export) runs in a separate “worker” process with strict Linux kernel restrictions: its own control group (cgroup v2) with limits on memory, processes and processor, Landlock (a ban on file access) and seccomp (a system call filter). That is why the gateway needs these kernel features — see “Requirements”. SSH sessions and the web console do not depend on them.
The gateway protects access as long as the target servers cannot be reached directly. Set a rule on the target servers (or on the firewall between segments): SSH, RDP, VNC, Telnet and database ports are accepted only from the gateway's address. Without this, a person who learned the password by other means will connect around the gateway, and that session will not be recorded.
Requirements
The gateway server
| What | Requirement |
|---|---|
| Operating system | Ubuntu 24.04 LTS, amd64 (GA or HWE kernel). The package is a single file, bursu-pam_1.0.0_amd64.deb; the .NET runtime is included in the package, so you do not need to install it separately. |
| Memory | At least 4 GiB: recording rendering tasks are by default given up to 2 GiB (renderMemoryBudgetMb), and the rest goes to the gateway, PostgreSQL and the sessions. Each running RDP or VNC session can take up to 512 MiB and up to one processor core — take this into account when you size the server for the number of simultaneous graphical sessions. On a machine with less than 4 GiB, reduce renderMemoryBudgetMb (minimum 1024), see gateway.json. |
| Disk | At least 5 GiB of free space in /var/lib/bursu-pam — with less, the bursu-pam-check check warns. Recordings of graphical sessions take a lot of space: plan the disk by the number of sessions and the retention period of recordings. For database backups before an upgrade, you need headroom in /var/backups/bursu-pam — twice the size of the database. |
| Linux kernel | A mounted cgroup v2 hierarchy with the memory, pids and cpu controllers; swap accounting by cgroup (memory.swap.max) or no swap; Landlock in the list of active security modules; seccomp. The standard Ubuntu 24.04 kernel provides all of this. Without Landlock and cgroup v2, RDP and VNC sessions will not start (SSH and the console work). Checked with the command sudo bursu-pam-check. |
| Machine ID | The file /etc/machine-id is not empty — the licence is bound to it. |
| Time | Time synchronisation (systemd-timesyncd or chrony). Accurate time is needed for TOTP codes, Kerberos, the audit log and the licence. |
| Host name | For Kerberos sign-in, a fully qualified domain name (FQDN), for example pam.example.org. |
| Rights | Installation is done as root (sudo). The gateway itself runs under the system account bursu-pam, never as root. |
Database
You need PostgreSQL 15 or newer. The simplest is the local PostgreSQL 16 from the Ubuntu archive: the package pulls it in by itself and creates the database bursu_pam and the role bursu-pam, which signs in through a Unix socket without a password (peer authentication). You can also use an external PostgreSQL server — then the gateway needs only the PostgreSQL client, and you must install it before the package (otherwise apt will pull in the full PostgreSQL server itself), and the connection string is passed separately (see “Database on another server”).
Ports
| Default port | What for | Who connects |
|---|---|---|
443/tcp | Web console and client API (HTTPS) | All console users and BURSUcm clients |
2222/tcp | The gateway's SSH entry (also SFTP, SCP and Telnet devices) | Everyone who connects to SSH and Telnet servers |
3389/tcp | RDP entry (if enabled) | Users of Windows servers |
5900/tcp | VNC entry (if enabled) | Users of VNC servers |
15432/tcp, 13306/tcp, 11433/tcp | PostgreSQL, MySQL/MariaDB and SQL Server entries (if enabled) | Database users |
Port 22 stays with the machine's own SSH server (for administering it), port 5432 with its own PostgreSQL. The numbers can be changed with the bursu-pam-configure command. The package does not touch the firewall — you open the ports yourself, see “Network and firewall”.
The gateway's outgoing connections: to the target servers (their SSH, RDP, VNC, Telnet and database ports), to domain controllers (LDAPS and Kerberos, if directory sign-in is used), to the SMTP server and webhook addresses (notifications), to the SIEM receiver, and — only if you press the button yourself for online activation or turn on the daily check — to https://bursucm.com (see “Licence”). Without the internet the gateway works fully; the licence is activated with a request code.
Certificate
With no configuration, the gateway creates a self-signed certificate itself (ECDSA P-256, for two years), and the browser will warn about it at the first sign-in — this is expected. For use in an organisation it is better to issue a certificate with your certificate authority for the gateway's name (for example pam.example.org) — see “Gateway certificate”. If VNC is enabled, the name by which clients address the gateway must be in the certificate.
Users' workstations
- Browser — any modern one, for the console. The console works without JavaScript too.
- An authenticator app on a phone for TOTP codes (6 digits, 30 seconds, SHA-1): Google Authenticator, Microsoft Authenticator, FreeOTP, Aegis and similar.
- BURSU Connection Manager (optional) — Windows or Linux/macOS, the PAM Gateway mode. Or ordinary clients: OpenSSH, PuTTY, WinSCP, FileZilla, mstsc, a VNC viewer, psql, mysql, sqlcmd.
Quick start: from an empty Ubuntu to the first recorded session
This path takes about half an hour. You need an Ubuntu 24.04 (amd64) server with a permanent address, SSH access to it with sudo rights, and internet access to the Ubuntu package archive (the package pulls in PostgreSQL and libraries). In the examples the gateway's address is 192.0.2.10; substitute your own.
- Prepare the server. Update the system (
sudo apt update && sudo apt upgrade), check the time (timedatectl— the line System clock synchronized: yes) and, if you will use Kerberos sign-in, set the full host name (sudo hostnamectl set-hostname pam.example.org). - Copy the package and verify its authenticity. Copy to the server the whole release folder you received from BURSUsofts (it holds the
.deb,SHA256SUMS,SHA256SUMS.ascand the keybursu-pam-release.gpg), and in that folder run the check from the section “Verifying the package”. - Install the package with one command.
The package will create the accountsudo apt install ./bursu-pam_1.0.0_amd64.debbursu-pam, the directories, the databasebursu_pamand the file/etc/bursu-pam/gateway.json, and then ask a few questions about the address and ports. Press Enter at every question — the defaults give a working gateway on one server — and at the end answer y to Apply?. In detail — “Ports and protocols”. - Write down the address and the setup code. The last lines of the installation look like this:
The code is single-use; if you lost it —Open in a browser: https://192.0.2.10/setup Setup code: XXXX-XXXX-XXXXsudo cat /var/lib/bursu-pam/setup-code. - Open the ports. If ufw is enabled on the server, the installer printed ready commands
sudo ufw allow …/tcp— run them. If there is another firewall between the users and the gateway, open the same ports there. See “Network and firewall”. - Go through the first-setup wizard. Open
https://192.0.2.10/setupin a browser, agree to continue despite the warning about the self-signed certificate and go through 7 steps: setup code → language → key mode → recovery key (print it) → first administrator → TOTP and recovery codes → done. In detail — “First setup”. - Sign in and turn on the licence. Click Go to sign-in, sign in with the password and the code from the app, open Settings → Licence. If there is internet — Start the 7-day trial online → Send this one call. If not — Start the 7-day trial in the Request codes (offline) block, then the code is entered on bursucm.com from any computer. While there is no licence, the gateway lets no session through and allows no changes. In detail — “Licence”.
- Add a server. Servers → Create server: name, SSH protocol, address and port. On the server card, confirm the host key. In detail — “Servers”.
- Add a server account. On the server card, the accounts tab (or Accounts → Add account): the login on the target server and its password or SSH key. The gateway stores the secret encrypted; it cannot be shown afterwards. See “Accounts and secrets”.
- Create a user. Users → Create user: login, name, the User role, a temporary password. At the first sign-in they will change the password and bind TOTP. See “Users”.
- Create an access rule. Access rules → Create rule: who (a user or a group), to what (a server and an account), what is allowed (terminal, files). See “Access rules”.
- Connect. From BURSUcm: the PAM Gateway storage mode, the gateway address, the user's sign-in — the server appears in the catalogue, and a double click opens the session (in detail). Or from any terminal:
wheressh -p 2222 ivanov:web01@192.0.2.10ivanovis the gateway user's login andweb01is the server's name in the console; the gateway asks for the user's password and the TOTP code (in detail). - Look at the recording. Sign in to the console as the administrator: Sessions shows the running session (it can be watched live and terminated), and after logout — the recording with search by the typed text. See “Sessions and recordings”.
Close access to the target servers from all addresses except the gateway; set up backups (the database + /var/lib/bursu-pam + the recovery key in a safe); if needed, connect Active Directory, a SIEM and notifications, and buy a licence before the trial ends.
Installing the package
Verifying the package
A release comes as a folder, not a single file. It holds: the package bursu-pam_1.0.0_amd64.deb, inputs.manifest (what the package was built from), lintian.txt (the package check report), the test report suite-report.<commit>.txt, the checksum list SHA256SUMS, its signature SHA256SUMS.asc and the BURSUsofts public key bursu-pam-release.gpg. Copy the whole folder to the server and run this in it:
gpg --show-keys --with-colons bursu-pam-release.gpg | grep '^fpr'
gpgv --keyring ./bursu-pam-release.gpg SHA256SUMS.asc SHA256SUMS && sha256sum -c SHA256SUMS
- The first command prints the key fingerprint. Compare it with the fingerprint that BURSUsofts gave you through another channel (a letter, a phone call) — not with the one that lies next to the package:
gpgvtrusts any key from the file passed to it. - The second command must end without errors:
gpgvprints Good signature, andsha256sum -cprints OK for each of the four files. BAD signature means the sum list has been replaced; FAILED on a file means the file itself has been replaced or damaged. In both cases do not install the package and contact the supplier. - If you copied only the
.deb,sha256sum -cwill report three missing files — this is not damage, but an incomplete folder.
Installation
sudo apt install ./bursu-pam_1.0.0_amd64.deb
Be sure to put ./ before the file name — otherwise apt will look for the package in the repositories. apt itself fetches the dependencies from the Ubuntu archive: PostgreSQL 16, the Kerberos libraries (libgssapi-krb5-2), ICU, OpenSSL, jq and others.
What the package does
After unpacking the files, the package runs the program bursu-pam-setup (it can also be run again — a second run changes nothing). In order:
- Account. Creates the local system account
bursu-pam: with no password, no login shell, its own group with nobody else in it, and no additional groups. If an account with that name already exists but does not meet these requirements (for example, it is in thedockergroup or has a shell), the installation stops and names the command that fixes it. - Directories.
/etc/bursu-pam(root:bursu-pam, 0750),/var/lib/bursu-pam(bursu-pam, 0700),/var/backups/bursu-pam(root, 0700). It never touches the contents of existing directories. - Database. On the first running local PostgreSQL cluster of version 15+, it creates the role
bursu-pam(LOGIN only, no password and no special rights) and the databasebursu_pam, which this role owns and which nobody else can access. It does not change the filespg_hba.confandpostgresql.conf. - Sign-in check. Makes sure the role signs in to its database through a Unix socket with peer authentication — without a password.
- Configuration. Writes
/etc/bursu-pam/gateway.json(root:bursu-pam, 0640) — only if it does not exist yet. An existing file is never overwritten; if the package would suggest different contents, they are put beside it ingateway.json.proposed.
Then the package runs the check bursu-pam-check --quiet (it prints only warnings and errors and does not interrupt the installation), enables the bursu-pam-gateway service and — on a new installation in a terminal — asks the questions about ports (the next chapter), after which it starts the gateway.
On the first start the gateway itself creates its tables in the database, and in the data directory a self-signed certificate and the file with the one-time setup code, /var/lib/bursu-pam/setup-code.
What lies where
| Path | What is there |
|---|---|
/opt/bursu-pam/ | The gateway itself (together with the .NET runtime). Owned by root; the service cannot write there. |
/opt/bursu-pam/workers/ | Session workers: RdpWorker, bursu-pam-vnc-launch, bursu-pam-vnc. |
/etc/bursu-pam/gateway.json | The configuration (addresses, ports, database). It is not part of the package and is not overwritten on upgrade. See the reference. |
/var/lib/bursu-pam/ | The only place the service writes to: keys/ (the master key), recordings/ (session recordings), the log, the licence state licence-state.json, the certificate gateway.pfx, the setup code setup-code. |
/var/backups/bursu-pam/ | Database backups that the package makes before each upgrade (the last two are kept). |
/usr/sbin/bursu-pam-setup, bursu-pam-configure, bursu-pam-check | Host preparation, the questions about ports, the host check. |
/usr/lib/systemd/system/bursu-pam-gateway.service | The systemd service. |
/usr/share/doc/bursu-pam/ | The short help README.Debian, the commented example gateway.json.example, licences of third-party components, the list of build files. |
/run/bursu-pam/ | Temporary Kerberos files (in memory, they disappear when the service stops). |
The package contains no passwords, keys, certificates or licence.
What the installation looks like in a terminal
An example of the output of a new installation on a server with the address 192.0.2.10 (put together from the texts of the installation scripts; apt's own lines are shortened). Your lines may differ a little — for example, in the set of check warnings.
$ sudo apt install ./bursu-pam_1.0.0_amd64.deb
…
Setting up bursu-pam (1.0.0) ...
bursu-pam-setup: account bursu-pam: created (system account, no login shell, no password)
bursu-pam-setup: /etc/bursu-pam: created root:bursu-pam 0750
bursu-pam-setup: /var/lib/bursu-pam: created bursu-pam:bursu-pam 0700
bursu-pam-setup: /var/backups/bursu-pam: created root:root 0700
bursu-pam-setup: PostgreSQL 16/main: role bursu-pam created (LOGIN only, no password)
bursu-pam-setup: PostgreSQL 16/main: database bursu_pam created, owned by bursu-pam, closed to PUBLIC
bursu-pam-setup: peer authentication of bursu-pam over /var/run/postgresql: ok
bursu-pam-setup: /etc/bursu-pam/gateway.json: written (root:bursu-pam 0640)
WARN hostname: the host name pam is not fully qualified; Kerberos needs the FQDN (…)
bursu-pam postinst: a few questions follow (Enter takes the default; Ctrl+C keeps the defaults; later: sudo bursu-pam-configure)
BURSU PAM gateway - listeners and ports
Press Enter to take the value in [brackets]. Nothing changes until you confirm at the end.
… (the questions — see the next chapter)
Open in a browser: https://192.0.2.10/setup
Setup code: XXXX-XXXX-XXXX
(lost it? sudo cat /var/lib/bursu-pam/setup-code)
(the browser will warn about the self-signed certificate - expected; continue)
apt saves everything the installer prints in /var/log/apt/term.log (readable by root and the adm group). The setup code lies there until you finish the /setup wizard; after that the gateway deletes the code, and the line in the log is worth nothing. So go through the wizard right after the installation.
Installing without questions
The questions are asked only if this is a new installation, the output goes to a terminal, systemd is running, and neither DEBIAN_FRONTEND=noninteractive nor BPAM_NO_WIZARD=1 is set. In other cases (an automated installation, an upgrade) the gateway starts with the default ports (console 443, SSH 2222; RDP, VNC and the database entries are off), and instead of the code only the command that will show it is printed:
sudo DEBIAN_FRONTEND=noninteractive apt install -y ./bursu-pam_1.0.0_amd64.deb
sudo bursu-pam-configure --next-steps # browser address and setup code
The ports can be set later with the same command, sudo bursu-pam-configure.
Database on another server
If the database will be on a separate PostgreSQL server (version 15+), create the role and the database there yourself (the database owner is that role; do not give the role extra rights) and pass the gateway an Npgsql connection string.
The package depends on “PostgreSQL 15+ or a PostgreSQL 15+ client”, and apt picks the first option: if the gateway has no client, it will install the full PostgreSQL server, create a local database on it and write gateway.json with it — the gateway will work on the local database, and a connection string passed later will only be written beside it as gateway.json.proposed. So on the gateway first run sudo apt install postgresql-client and only then install the package: it will print provisioned except the database, will not create gateway.json and will not start the gateway. If the package is already installed with a local database and you need an external one, fix connectionString in /etc/bursu-pam/gateway.json by hand; the data of the local database is not moved by itself.
Pass the string with the password only through standard input, so that it does not get into the process list. The redirection < is done by your shell, not by sudo, so the file with the string must be accessible to you yourself: put it in your own home directory with rights for you only.
(umask 077; nano ~/pam-connstring.txt) # one line, see below
sudo bursu-pam-setup --connection-string - < ~/pam-connstring.txt
rm ~/pam-connstring.txt
sudo systemctl enable --now bursu-pam-gateway
sudo bursu-pam-configure
The file holds one line, for example:
Host=db.example.org;Port=5432;Database=bursu_pam;Username=bursu_pam;Password=…;SSL Mode=VerifyFull
Delete the file right after the configuration is written (the second command). Remember: in this case the database password is stored in gateway.json (the file is readable only by root and the service), and the package does not make an automatic database copy before an upgrade — you make the copy on the database server.
If at installation the host turned out to have no running PostgreSQL (or no client was found), the package will report provisioned except the database and will not start the gateway — after fixing it, run sudo bursu-pam-setup again and sudo systemctl enable --now bursu-pam-gateway.
Ports and protocols: bursu-pam-configure
bursu-pam-configure is a short wizard in the terminal that sets the gateway's address and ports. On a new installation the package calls it itself; later you can run it as many times as you like:
sudo bursu-pam-configure # questions; Enter takes the value in [brackets]
sudo bursu-pam-configure --next-steps # only: where to go in the browser, and the setup code
Nothing changes until you answer y to the last question. On a repeat run the current settings become the defaults.
The questions
| Question | Default | What to answer |
|---|---|---|
| 1. Address — the address by which people and programs reach the gateway | on a repeat run, the current vncAdvertisedName from gateway.json; otherwise the server's first IPv4 address, and if there is none, the full host name | A DNS name (pam.example.org) or an IP address. It goes into the console link and becomes the name for VNC (vncAdvertisedName). A DNS name is better: it can be moved to another address. |
| 2. Console HTTPS port | 443 | The port of the web console and the client API. |
| 3. SSH port (not 22: the server's own SSH keeps it) | 2222 | The port of the gateway's SSH entry. Not 22 — it stays with the machine's own SSH server. |
| 4. Let people open RDP (Windows remote desktop) sessions through the gateway? → RDP port | yes, 3389 | Needed if there will be Windows servers. |
| 5. Let people open VNC (remote screen of Linux and macOS desktops) sessions through the gateway? → VNC port | yes, 5900 | VNC listens on a specific IP address of the server (not on all at once) — the gateway requires this. |
| 6. Offer PostgreSQL through the gateway? → PostgreSQL front port | yes, 15432 | The entry for PostgreSQL clients. Port 5432 is not offered: the gateway's own PostgreSQL occupies it. |
| Offer MySQL / MariaDB through the gateway? → MySQL front port | no, 13306 | The entry for MySQL/MariaDB clients. |
| Offer Microsoft SQL Server through the gateway? → SQL Server front port | no, 11433 | The entry for SQL Server clients. |
| Apply? This restarts the gateway; open sessions are closed. | no | y — apply. Sessions in progress are cut off. |
The wizard will not let you choose a port already taken by another program (it names the program and the process number), a port chosen twice, or port 5432. On a repeat run, a protocol that was turned off earlier is offered as off by default.
If VNC is enabled and the gateway's self-made certificate does not contain the chosen address, the wizard asks Let the gateway make a new certificate? (the old one is kept as a .bak file). The answer y puts the old certificate aside (a copy gateway.pfx.bak-…), and the gateway creates a new one with this address. Browsers and BURSUcm clients that already trusted the old certificate will ask for confirmation once more. With the answer n, VNC stays written in the settings, but the gateway will not open it (Settings → VNC will say Address not in the certificate) until the certificate contains this name; at the end the wizard says that VNC is not listening yet. If you installed your own certificate (certificatePath), this question is not asked — the name must already be in your certificate.
What happens after “y”
- The current
gateway.jsonis copied to/etc/bursu-pam/gateway.json.bak-<UTC time>. - Only the answers are written to
gateway.json; all the other parameters stay as they were. - The gateway restarts; the wizard waits up to 20 seconds for the console port to answer (on the first start, while the gateway prepares the database, up to 60 seconds, and says so).
- If the gateway did not come up, the previous file (and the previous certificate) is put back, the gateway restarts with it, and the wizard shows the last 30 lines of the service log — they show what is wrong. Exit code 1.
- If it came up, the wizard reports which ports are already listening. SSH, RDP, VNC and the database entries open only after the
/setupwizard is finished (and in sealed mode, after unsealing), so until then it prints opens once the first-run setup in the console is finished. - At the end: the host check lines, numbered next steps (with ready commands
sudo ufw allow …/tcpif ufw is on; the wizard itself does not change the firewall) and the console address with the setup code.
An example dialogue (Enter everywhere except the last question):
1. The address people and their programs use to reach this gateway: a DNS name (pam.example.org) or an IP address.
The console link and VNC sessions use it.
Address [192.0.2.10]:
2. The web console (administration, and where users sign in) is served over HTTPS.
Console HTTPS port [443]:
3. SSH: people connect their SSH client (ssh, PuTTY) to the gateway, which signs in to the target server for them.
SSH port (not 22: the server's own SSH keeps it) [2222]:
4. Let people open RDP (Windows remote desktop) sessions through the gateway? [Y/n]:
RDP port [3389]:
5. Let people open VNC (remote screen of Linux and macOS desktops) sessions through the gateway? [Y/n]:
VNC port [5900]:
6. Database fronts: people connect their usual database tool to the gateway, which signs in to the database server for them.
Port 5432 is not offered: this server's own PostgreSQL, which holds the gateway's data, uses it.
Offer PostgreSQL through the gateway? [Y/n]:
PostgreSQL front port [15432]:
Offer MySQL / MariaDB through the gateway? [y/N]:
Offer Microsoft SQL Server through the gateway? [y/N]:
Summary:
Address 192.0.2.10
Console (HTTPS) https://0.0.0.0:443
SSH 0.0.0.0:2222
RDP 0.0.0.0:3389
VNC 192.0.2.10:5900
PostgreSQL front 192.0.2.10:15432
MySQL front off
SQL Server front off
Apply? This restarts the gateway; open sessions are closed. [y/N]: y
Saved. The previous file is /etc/bursu-pam/gateway.json.bak-20261102T101500Z. Restarting the gateway...
The gateway runs with the new settings.
SSH (port 2222) opens once the first-run setup in the console is finished.
RDP (port 3389) opens once the first-run setup in the console is finished.
VNC (port 5900) opens once the first-run setup in the console is finished.
PostgreSQL front (port 15432) opens once the first-run setup in the console is finished.
Checking this server (bursu-pam-check --quiet):
Next steps:
1. Open https://192.0.2.10/setup in a browser.
2. Enter the one-time setup code (below).
3. In the console: create the administrator, then install the licence.
4. The firewall (ufw) is on. Let the gateway's ports in:
sudo ufw allow 443/tcp
sudo ufw allow 2222/tcp
sudo ufw allow 3389/tcp
sudo ufw allow 5900/tcp
sudo ufw allow 15432/tcp
----------------------------------------------------------------------------------------------
Open in a browser: https://192.0.2.10/setup
Setup code: XXXX-XXXX-XXXX
(lost it? sudo cat /var/lib/bursu-pam/setup-code)
(the browser will warn about the self-signed certificate - expected; continue)
When the /setup wizard has already been completed, Console: https://…/ is printed instead of the /setup address and the code.
Exit codes
| Code | Meaning |
|---|---|
| 0 | The settings were applied, the gateway works with them. |
| 1 | The gateway did not come up with the new settings, the previous ones were put back. |
| 2 | The wizard cannot start: it was not run as root, there is no terminal, jq is not installed, there is no gateway.json, the file is a symbolic link or is not pure JSON (the wizard does not read comments and trailing commas), or an unknown argument. |
| 3 | Nothing was changed: the answer to Apply? was “no”. |
| 4 | Nobody answered (end of input; when called from the installation — no answer within 5 minutes). Nothing was changed. |
| 130 | Interrupted with Ctrl+C. Nothing changed before the file was written. If it was interrupted during the start check, the previous settings were put back. If the gateway has already come up with the new settings (or is still starting with them), they stay — the wizard says so. The wizard also ends this way on the signals TERM (143) and HUP (129). |
First setup (the /setup wizard)
Until the gateway is configured, it has only one page — https://<address>/setup; any other address leads to it. The seven-step wizard creates the encryption key, the first administrator and the basic settings. It asks first for a one-time code — so that the gateway is not “seized” by whoever opens the page first.
Step 1 · Setup code
Enter the code from the installation output (the format XXXX-XXXX-XXXX, 12 characters; hyphens and case do not matter). If the output is lost: sudo cat /var/lib/bursu-pam/setup-code or sudo bursu-pam-configure --next-steps. The file is readable only by the service and root; the path to it is also written to the service log (the code itself, never). A wrong code: The setup code did not match. No more than 10 attempts a minute from one address.
Step 2 · Language
Default console language — the default language of the console: English, Русский, Українська, ქართული, Deutsch, Español, Português, Português (Brasil). Each user then chooses their own language in the profile and on the sign-in page.
Step 3 · Key mode
Where to keep the key with which the gateway encrypts the account secrets:
- Protected by the operating system (recommended) — the key lies in the key directory, and only the service can read it. After a reboot the gateway starts by itself. Choose this option if you are not sure.
- Sealed with a passphrase — after each restart of the service, the administrator enters the passphrase on the
/unsealpage. More reliable if a disk is stolen, but while the gateway is sealed it does not work (nobody can connect). Set Passphrase and Repeat the passphrase — at least 12 characters.
The mode can be changed later in Settings → Encryption key (in detail).
Step 4 · Recovery key
The wizard shows the recovery key — once. Without it the secrets cannot be recovered if the key file is lost or the passphrase is forgotten.
- Click Download .txt or Print and save the key offline: the printout in a safe, the file on a medium kept separately from the server. Do not keep the key on the gateway itself.
- Tick I have saved the key in a safe place.
- In the Last 4 characters of the key field, enter the last 4 characters of the key — this checks that the key has really been saved.
If both the key file in /var/lib/bursu-pam/keys and the recovery key are lost, no saved password and no session recording can be read any more. Nobody, BURSUsofts included, will bring them back.
Step 5 · Administrator
The first administrator; they will create the other users in the console.
| Field | What to enter |
|---|---|
| Login | Up to 64 characters: Latin letters, digits, dot, hyphen, underscore. |
| Name | The display name, up to 128 characters. |
| Password, Repeat the password | At least 12 characters (the minimum is set in Sign-in and MFA). |
The first administrator is a local account of the gateway. Even when users sign in through Active Directory, it can still sign in if the directory is unavailable. Keep its password and recovery codes as carefully as the recovery key.
Step 6 · Two-factor sign-in
- Scan the QR code with an authenticator app or enter the key by hand (parameters: SHA-1, 6 digits, 30 seconds).
- Enter the current six-digit code in Code from the app and click Next. The code did not match. Check the time on the phone. — check the time on the phone.
- The wizard will show ten recovery codes — each works once, in case the phone is lost. Save them separately from the phone, tick I have saved the recovery codes and click Next.
Step 7 · Done
The summary: the key mode, the administrator with the second factor set up, and Setup code — no longer valid, the file is deleted. Two buttons: Go to sign-in — the ordinary sign-in page, and Next: start the 7-day trial or install a licence — Settings → Licence. The gateway lets no session through until it has a licence — go straight to “Licence”.
If the wizard was interrupted
The wizard's progress is kept only in the gateway's memory and is tied to the browser; after 30 minutes without actions, on a restart of the service or on entering the setup code again, it is erased. If you closed the window, open /setup, enter the setup code again (it is valid until the end of the wizard) and choose the language again. The wizard then continues from the place determined by what is already done: if the key is created, a choice appears at step 3; if the administrator is created, the wizard goes straight to step 6. Do not close the page until you have saved the recovery key: it is shown once and will not be shown again after the tab is closed at step 4. If the key was already created last time, a choice appears at step 3: Continue with this key (if you saved its recovery key) or Create the key again — the old key and its recovery key are deleted; this is possible only while there is neither an administrator nor a single secret. If files from a deleted key remain in the key directory, the wizard names them — move them elsewhere and repeat.
Sealed mode and /unseal
The /unseal page appears in two cases. While it is open, the console and connections to servers are unavailable.
The gateway is sealed
You chose the Sealed with a passphrase mode, and the service restarted (a server reboot, a package upgrade, systemctl restart). Enter the Passphrase and click Unseal. The gateway will open and start all the entries (SSH, RDP, VNC, databases).
If the passphrase is forgotten, click Recover with the recovery key: enter the Recovery key, set a New passphrase and Repeat the passphrase, click Recover and unseal.
The encryption key is unavailable
The mode is “protected by the OS”, but there is no key file or it does not fit this database (for example, the database was restored to a new server without the /var/lib/bursu-pam/keys directory). Enter the recovery key and click Recover the key. If after recovery the gateway says The key was recovered and lists problems with the key directory — fix them before the next restart of the service; the recovery key remains valid.
No more than 5 attempts a minute from one address; every attempt, successful or not, is written to the audit log. Errors: The passphrase did not match., The recovery key did not match.
In sealed mode, an automatic reboot (for example, after security updates) will leave the gateway closed until an administrator arrives. If that is unacceptable, use the “protected by the OS” mode and disk encryption.
Licence
The gateway is licensed by the number of active servers (those enabled in the console); the number of users is not limited. The licence is a file signed by BURSUsofts (.bpl), which the gateway checks itself, without any connection to the internet. It is bound to the installation (Installation ID) and to this server (a fingerprint based on /etc/machine-id).
Right after the /setup wizard there is no licence: signing in to the console works, but no session will start and any change (adding a server, a user, a rule) will be refused with the message The gateway has no licence: changes are refused. Start the trial or install a licence on Settings → Licence. The first thing the administrator does after signing in is turn on the trial licence.
The page: Settings → Licence (/system/licence), for Administrator only. It works in any licence state. Every action on it requires a fresh confirmation: the gateway may ask for your password and code once more (You may be asked for your password and code again first.).

The Status card
| Row | What it means |
|---|---|
| Customer | The organisation that owns the installation on the bursucm.com portal; Not claimed yet — the installation has not yet been assigned to anyone (normal for a trial). |
| Serial | The serial number of the current licence. |
| Kind | Trial or Paid. |
| Valid | The term of validity; a paid licence may also have Grace ends — the end of the grace period. |
| Days left | How many days are left. |
| Issued, Signing key | When it was issued and with which key it was signed. |
| Active servers | “6 of 25” — how many servers are enabled and how many the licence allows; when exceeded — Over the limit. |
| Installation ID | The identifier of this installation (the Copy button) — you will be asked for it when buying and by support. |
| This host | The fingerprint of this server and whether it matches the licence: matches this host; second host (paid slot) — a second server under a paid place; activated on another host: N of M grace days used — the licence was issued for another server, and the moving grace period is running. |
| Background check-in, Last check-in | Whether the daily check for licence updates is on, and when the last one was. |
| Pending renewal | The next licence has been received and will take effect later. |
| Clock | Appears if the server's clock has moved forward or back relative to the licence time. |
The states (the label in the corner of the card): No licence, Trial, Active, Ends soon (for a paid licence — 7 days or less to the end), In grace (paid only), Ended, Activated on another host, Released.
The 7-day trial licence
The trial licence gives all the features for 7 days and up to 25 active servers; there is no grace period after it. A trial licence can be obtained once for one installation; under the portal's terms, also one trial licence per organisation (an offline trial is issued through a bursucm.com account). A trial licence has no Ends soon label: it shows Trial until the last day and then immediately Ended, so write down its end date in advance.
With the internet — one button
- In the Online — one call per click block, click Start the 7-day trial online.
- The window shows exactly what will be sent (What is sent): the installation identifier, the server fingerprint, the gateway version, the number of active servers, the gateway time, when the setup was completed, a one-time number, the licence sequence number and the gateway's public key — with the gateway's signature. No names, addresses or organisation data.
- Click Send this one call. A few seconds later: The 7-day trial licence is installed.
The gateway contacts bursucm.com only when you click the button; the rest of the time it sends nothing. If internet access is only through a proxy, set it in the Proxy server block (see below).
Without the internet — a request code
- In the Request codes (offline) block, click Start the 7-day trial, then Make the request code.
- The gateway shows the Request code and its QR code (you can Download as .txt). The portal accepts a code once; the gateway remembers the request — while there is no answer, the page shows Waiting for an answer: ….
- From any computer with the internet, go to
https://bursucm.com/pam/activate(a bursucm.com account is needed), paste the code (or scan the QR with a phone) and get the licence file.bpl. - Carry the file into the closed network and install it: Install a licence → Licence file (or paste the text into Or paste the licence) → Install. Done: The licence was installed.
The paid licence
When you buy, you receive an activation key of the form BPK- and 20 characters. To buy a licence for a specific installation, the seller may need the Claim code of this installation (the Claim code block on the page): it assigns the installation to your organisation on bursucm.com/pam/licences. The block is visible while the trial licence is in force (or a licence without an organisation name); after a paid licence with an organisation name, the code is forgotten and the block is gone. The trial itself does not need the code. Keep the claim code secret — anyone who has it can assign the installation to themselves.
- Online: Activate with an activation key → enter the Activation key → Send this one call → The licence from your activation is installed.
- Offline: Activate a paid licence → Make the request code → the code is entered at
https://bursucm.com/pam/activate, where you choose the paid entitlement → the resulting file is installed through Install a licence. - A ready file. If BURSUsofts sent a
.bplfile, simply install it through Install a licence. Only the block between the BEGIN and END lines is read, and the signature is checked.
Renewal and the daily check
A new licence (a renewal, more servers) is installed the same way: with a file, with the online button Check now (one call — to fetch a ready licence, if there is one) or by turning on Background check-in: Turn the background check-in on — once a day the gateway itself asks bursucm.com about renewals. The check is off by default. If it fails for a week in a row, a warning appears in the bell.
A licence received automatically that is worse than the current one (fewer servers, a shorter term, a shorter grace period, fewer host servers, does not include this server) is not installed by itself: the page will say The licence … was received but not installed, because it … — install it by hand if you really need it.
Proxy
If the gateway reaches the internet only through an HTTP proxy, enter it in Proxy address (empty = the system's setting), for example http://proxy.example.org:3128, and click Save the proxy. Use the system default — return to the system setting. A proxy with a login and password is not supported; the address is only http://host:port or https://host:port.
Moving to another server
The licence is bound to a server. If you moved the gateway (restored it from a backup onto a new machine), the state becomes Activated on another host. For a paid licence there is a moving grace period — at least 14 days (or more, if so written in the licence), during which everything works; the page shows how many days have been used. In that time move the licence: Move the licence to this host online (one call) or the offline code Move the licence to this host. The number of moves is limited by the licence terms. After the grace period ends, new sessions and changes are refused.
Releasing an installation
Before taking a gateway out of service, release the licence so that it can be activated on another server: Release… → enter the serial number of the current licence to confirm → one of the options:
- Release and show the release code — the gateway sends nothing and shows the Release code, which you enter on the portal yourself. The code is shown only once — copy it before leaving the page.
- Release and tell bursucm.com now (one call) — the release is reported to the portal at once, no code is needed.
From that moment the gateway lets no session through and allows no changes except signing in and the licence page, until a new licence is installed.
When the licence ends: what stops and what keeps working
The end of a licence is a “soft stop”, not a shutdown. A paid licence gets the Ends soon label and a warning in the bell 7 days before the end; after the end a grace period applies (In grace, its length is written in the licence), when everything still works. A trial licence has no label, no warning and no grace period: Trial until the last day, then immediately Ended. After the end (and after the grace period of a paid licence):
| Stops working | Keeps working |
|---|---|
| New sessions (SSH, RDP, VNC, databases) — the user sees a refusal; the text depends on the entry (see “Licence” in the chapter “Troubleshooting”), for example The gateway's licence does not allow new sessions now. Contact the administrator. Changes in the console: creating and editing servers, users, rules, settings. | Signing in to the console, your own profile and language. Viewing logs, sessions and recordings, the integrity check, sending to the SIEM. Changes that take away access: switching off a server or rule, revoking access, tightening command control, changing the encryption key. Terminating sessions in progress. The licence page. |
If more servers are enabled than the licence allows, after the grace period sessions are let through only to servers within the limit, and changes are refused until the extra servers are switched off. A server cannot be enabled beyond the limit at once: The licence allows … active servers. Switch off a server or extend the licence.
The gateway does not trust its own time
The gateway makes sure a licence cannot be extended by turning the clock or rolling back the database. If the licence state file /var/lib/bursu-pam/licence-state.json is missing or damaged and at the same time the signed timestamp in the audit log does not match, if the database turned out to be older than the state file (restored from an old copy), or rows disappeared from the log, the page says The gateway cannot trust its own time: new sessions and changes are refused, and a restart does not help. There is one way out — a licence issued in response to a request made after this state began:
- if a paid licence is in force — Request a support licence (an offline code or the online button) and send it to BURSUsofts;
- otherwise — an activation request (Activate a paid licence); a trial licence does not get out of this state.
If the gateway's clock has moved forward, the button Re-base the licence to this gateway's time may appear — it recalculates the licences to the gateway's current time. So restore the database together with the /var/lib/bursu-pam directory from one and the same copy (see “Backups”).
Licences received
A table of all the licences received: Serial, Seq, Kind, Servers, Term, Received (how it was received — uploaded, online, check-in, restored from the state file; by whom and when) and Status — In force, Pending, Superseded, Released, Ended.
All the messages of the licence page and what to do about them are in the chapter “Troubleshooting → Licence”.
The gateway.json file
/etc/bursu-pam/gateway.json holds only what the gateway needs to know before it connects to the database: where the database is, which addresses and ports to listen on, where the certificate and directories are. Everything else is configured in the console and stored in the database. The file is created by bursu-pam-setup, the ports in it are changed by bursu-pam-configure; it is edited by hand only for parameters that the wizard does not have.
- The format is JSON; the gateway allows
//comments and trailing commas, butbursu-pam-configureandbursu-pam-checkread only pure JSON — do not add comments if you use the wizard. - The gateway rejects an unknown parameter and does not start — so a typo does not silently turn into a default value. Parameter names are not case-sensitive.
- Rights:
root:bursu-pam 0640(the file may contain the database password). Checked bybursu-pam-check. - After editing:
sudo systemctl restart bursu-pam-gateway(sessions in progress will be cut off). If the gateway did not come up,journalctl -u bursu-pam-gateway -n 50will name the wrong parameter. - An example with comments:
/usr/share/doc/bursu-pam/gateway.json.example.
The file that the installation creates:
{
"connectionString": "Host=/var/run/postgresql;Port=5432;Database=bursu_pam;Username=bursu-pam",
"listenUrl": "https://0.0.0.0:443",
"dataDirectory": "/var/lib/bursu-pam",
"keyDirectory": "/var/lib/bursu-pam/keys",
"sshListen": "0.0.0.0:2222",
"rdpWorkerPath": "/opt/bursu-pam/workers/RdpWorker",
"vncWorkerPath": "/opt/bursu-pam/workers/bursu-pam-vnc",
"vncLauncherPath": "/opt/bursu-pam/workers/bursu-pam-vnc-launch"
}
Parameters
| Parameter | Default | What it sets |
|---|---|---|
connectionString | required | The database connection string (Npgsql format). The tables are created and updated when the gateway starts. |
listenUrl | https://0.0.0.0:443 | The console's address and port: https:// and an IP address (0.0.0.0, [::] or the server's address). |
sshListen | 0.0.0.0:2222 | The address and port of the SSH entry. |
rdpListen | none (RDP is off) | The address and port of the RDP entry, for example 0.0.0.0:3389. Works only together with rdpWorkerPath. |
vncListen | none (VNC is off) | The address and port of the VNC entry with a specific IP address of the server, for example 192.0.2.10:5900 (0.0.0.0 is not accepted). Requires vncAdvertisedName and vncWorkerPath/vncLauncherPath. |
vncAdvertisedName | none | The name by which clients connect to the VNC entry. It must be in the gateway's certificate (in the list of alternative names), otherwise the VNC entry will not turn on. A self-signed certificate gets this name only if it is set before the certificate is created — see “Self-signed certificate”. |
dbListen | none | The database entries: { "postgresql": "192.0.2.10:15432", "mysql": "192.0.2.10:13306", "mssql": "192.0.2.10:11433" }. Each with a specific IP address; one that is absent is off. Do not use 5432 on the address where the gateway's own PostgreSQL listens. |
certificatePath | <dataDirectory>/gateway.pfx | The certificate for the console and all TLS entries: a PKCS#12 file or, together with certificateKeyPath, a PEM certificate. An absolute path. See “Certificate”. |
certificateKeyPath | none | The PEM private key for a PEM certificate. |
certificatePassword | none | The password of the PKCS#12 file or of an encrypted PEM key. |
dataDirectory | /var/lib/bursu-pam | The data directory: the setup code, the certificate, the log, the licence state. |
keyDirectory | /var/lib/bursu-pam/keys | The directory of the master key and the console session keys. |
recordingsDirectory | <dataDirectory>/recordings | Where to store session recordings. A directory outside /var/lib/bursu-pam requires a drop-in for the service — see “Recordings on another disk”. |
sshPublicHost, sshPublicPort | the name by which the client opened the console; the sshListen port | Which SSH address and port to tell BURSUcm clients and to show in the known_hosts line. Set them if the gateway is behind NAT or port forwarding. |
rdpPublicHost, rdpPublicPort | sshPublicHost or the console name; 3389 | The same for RDP (the address in the .rdp file and in the reply to the client). |
dbPublicHost | the name by which the console was opened | The name that the console shows users for connecting database clients. |
trustedProxies | [] | IP addresses or networks (CIDR) of reverse proxies in front of the console whose X-Forwarded-For/X-Forwarded-Proto headers the gateway trusts. Without this, the log will show the proxy's address, not the user's. |
displayTimeZone | the OS time zone | The zone for showing time in the console, for example Asia/Tbilisi. Time is always stored in UTC. |
renderMemoryBudgetMb | 2048 | 1024–65536. The memory (MiB) that RDP/VNC recording rendering tasks may take together: live view, player, MP4 export. One person takes no more than half (but can always start one task of any size). A task that does not fit gets the answer “busy” — it is started later. The value 2048 is calculated for a server with 4 GiB or more; on a smaller one, reduce it. The sessions themselves are not in this budget. |
rdpWorkerMemoryMb, rdpWorkerMaxPids, rdpWorkerCpuPercent | 512, 128, 100 | The limits of one RDP or VNC session worker: memory (MiB), the number of processes and threads, the share of the processor (100 = one core). |
rdpWorkerPath, vncWorkerPath, vncLauncherPath | paths in /opt/bursu-pam/workers | The paths to the session workers. Do not change. |
kerberosRuntimeDirectory, kerberosReplayCachePath, kerberosKeytabFiles | do not touch for the Ubuntu package | Kerberos service paths; the systemd service is already set up for the defaults. |
Gateway certificate
One certificate serves the console (HTTPS) and all the gateway's TLS entries (VNC with TLS, the database entries). BURSUcm clients remember (pin) the gateway's certificate at the first connection and ask for confirmation again if it changed.
Self-signed certificate
If certificatePath is not set, on the first start the gateway creates /var/lib/bursu-pam/gateway.pfx: ECDSA P-256, SHA-256, the name CN=<machine name>, valid for two years; if VNC is enabled, vncAdvertisedName is added to it. Browsers warn about such a certificate — this is expected; check the fingerprint and continue. For permanent use, a certificate from your certificate authority is better.
The gateway only reads the created file from then on: it does not renew the certificate after the two years pass and does not add the VNC name to it if VNC was enabled later. The expiry is visible in Settings → Status. To get a new self-signed certificate (after the expiry or after turning on VNC), put the old file aside and restart the service — the gateway will create a new one:
sudo mv /var/lib/bursu-pam/gateway.pfx /var/lib/bursu-pam/gateway.pfx.old
sudo systemctl restart bursu-pam-gateway
BURSUcm users will see the new certificate and confirm it once.
Your own certificate
- Issue a certificate for the gateway's name (for example
pam.example.org; if users also come by IP, add the IP to the alternative names). If VNC is enabled, the name fromvncAdvertisedNamemust be in it. - Put the files where
bursu-pamcan read them but other users cannot. The/etc/bursu-pamdirectory is read-only for the service — that is fine: the file must already exist.sudo install -d -o root -g bursu-pam -m 0750 /etc/bursu-pam/tls sudo install -o root -g bursu-pam -m 0640 gateway.pfx /etc/bursu-pam/tls/gateway.pfx - Add to
gateway.jsonthe PKCS#12 variant:
or PEM:"certificatePath": "/etc/bursu-pam/tls/gateway.pfx", "certificatePassword": "file-password"
("certificatePath": "/etc/bursu-pam/tls/gateway.crt", "certificateKeyPath": "/etc/bursu-pam/tls/gateway.key"certificatePassword— only if the key is encrypted). From a.crt(and from a.pfx) the gateway reads only the first certificate — its own, with the private key; it does not assemble the chain from the file and does not give it to clients. So the clients must trust the intermediate certificate authority themselves (for example, distribute it to the workstations with a group policy or a package of trusted certificates). sudo systemctl restart bursu-pam-gatewayand open the console — the browser should show your certificate. Warn BURSUcm users: the client will ask once to confirm the new certificate.
Renewal: replace the file under the same path and restart the service.
Network and firewall
The package and the wizard never change the server's firewall. Open the ports yourself.
ufw
If ufw is on (sudo ufw status → Status: active), bursu-pam-configure prints ready commands for the chosen ports. A typical set:
sudo ufw allow 443/tcp # console and BURSUcm clients
sudo ufw allow 2222/tcp # SSH, SFTP, SCP, Telnet devices
sudo ufw allow 3389/tcp # RDP (if enabled)
sudo ufw allow 5900/tcp # VNC (if enabled)
sudo ufw allow 15432/tcp # PostgreSQL entry (if enabled)
It is better to limit the sources to the users' network: sudo ufw allow from 10.20.0.0/16 to any port 2222 proto tcp. Do not forget to leave access to port 22 for administering the server itself before turning on ufw (sudo ufw allow 22/tcp).
Target servers
On the target servers, allow the service ports only from the gateway's address. An example for Linux with ufw: sudo ufw allow from 192.0.2.10 to any port 22 proto tcp and deny the rest; for Windows — a Windows Firewall rule for RDP (3389) with the gateway as the remote address. Do the same for VNC, Telnet and the database ports.
Reverse proxy and NAT
If a reverse proxy stands in front of the console, list its address in trustedProxies. If the gateway is published through NAT or port forwarding, set the external addresses in sshPublicHost/sshPublicPort, rdpPublicHost/rdpPublicPort and dbPublicHost — the gateway tells these to clients.
Maintenance
The service and logs
systemctl status bursu-pam-gateway # is it running
sudo systemctl restart bursu-pam-gateway # restart (sessions are cut off; in sealed mode — /unseal again)
journalctl -u bursu-pam-gateway -n 100 # the last log lines
journalctl -u bursu-pam-gateway -f # the log in real time
journalctl -u bursu-pam-gateway --since today
The service log contains no passwords, setup codes or connection strings. The audit log (who did what) is in the console, see “Audit log”.
Host check: bursu-pam-check
sudo bursu-pam-check # one line per check: OK, WARN or FAIL
sudo bursu-pam-check --quiet # only WARN and FAIL
It only reads, changes nothing and does not go onto the network. The exit code is 1 if there is at least one FAIL. Run it as root — otherwise some of the checks will not run.
| Check | Level on error | What it checks and how to fix it |
|---|---|---|
cgroup2 | FAIL | /sys/fs/cgroup is the unified cgroup v2 hierarchy. Otherwise boot the system with systemd.unified_cgroup_hierarchy=1. |
controllers | FAIL | The memory, pids and cpu controllers are available to the workers, and swap accounting (memory.swap.max) is present or there is no swap. Otherwise turn off swap or boot with swapaccount=1. |
landlock | FAIL | Landlock is active. Without it RDP and VNC sessions do not start (SSH and the console work). Boot with lsm=...,landlock. |
machine-id | FAIL | /etc/machine-id exists and is readable by the service; the licence is bound to it. It is created with the command systemd-machine-id-setup. |
config | FAIL | gateway.json exists, rights 640 root:bursu-pam, valid JSON, the Development environment is not set. |
postgres | FAIL | The role signs in to its database through a local socket. It does not check a remote database or a string with a password (it only warns). |
cgroup.kill, seccomp | WARN | Kernel features for isolating and cleaning up the workers. |
libs | WARN | The Kerberos, LDAP and ICU libraries are installed (the package installs them). |
ports | WARN | The console and SSH ports are free or held by the gateway itself; it names the program that holds them. |
clock | WARN | The time is synchronised (systemd-timesyncd); with chrony, check yourself with the command chronyc tracking. |
disk | WARN | At least 5 GiB free in /var/lib/bursu-pam. |
hostname | WARN | The host name is fully qualified (FQDN) — needed for Kerberos. |
Upgrading
sudo apt install ./bursu-pam_<new version>_amd64.deb
- The package stops the gateway (all sessions are cut off) — do the upgrade in a maintenance window and warn the users.
- Before replacing the files it makes a database copy:
/var/backups/bursu-pam/pre-upgrade-<old version>-<time>.dump(the last two are kept). Free space is needed — twice the size of the database, otherwise the upgrade stops and names both numbers. - If the copy could not be made (no space, the database is unavailable) or the gateway did not stop, the upgrade is cancelled: you will see the line NOT upgrading - …, a dpkg error, and the old version is running again.
- The new version updates the database schema when it starts.
gateway.jsonand the data are not touched; the questions about ports are not asked on an upgrade. - In sealed mode, open
/unsealafter the upgrade.
For a remote database the package makes no copy (it says so in one line) — make the copy yourself before the upgrade.
Schema updates go only forward. An old version of the gateway refuses to work with a database that a new one has already upgraded: a critical line with migration numbers appears in the log, the gateway opens no port, and systemd restarts it every 5 seconds. Do not delete anything from the schema_migrations table — that only hides the mismatch. The way out is a new version of the package or restoring the copy made before the upgrade (below).
Rolling back to the previous version
Only for a database on the same server. Everything written after the upgrade will be lost — first copy the copy file elsewhere.
The /var/backups/bursu-pam directory and the copy file belong to root and are closed to others, and the redirection < is done by the shell of whoever types the command, not by sudo. So run the block as root: first sudo -i, then the commands without sudo.
sudo -i
systemctl stop bursu-pam-gateway
runuser -u postgres -- psql -c 'DROP DATABASE bursu_pam'
bursu-pam-setup # creates an empty bursu_pam owned by bursu-pam
runuser -u bursu-pam -- env -i PATH=/usr/sbin:/usr/bin:/sbin:/bin \
pg_restore -h /var/run/postgresql -d bursu_pam --exit-on-error < /var/backups/bursu-pam/pre-upgrade-<old>-<time>.dump
apt-get install -y --allow-downgrades /path/to/bursu-pam_<old version>_amd64.deb
exit # return to your own shell
Backup and restore
Restoring needs three things, and all three are required:
- The database
bursu_pam— the catalogue, users, rules, the audit log; - the directory
/var/lib/bursu-pam— the master key (keys/), session recordings, the licence state, the certificate; - the recovery key from the
/setupwizard — offline, in a safe, never on this server.
( # subshell: umask will not stay in your shell
umask 077
sudo runuser -u bursu-pam -- pg_dump -Fc -h /var/run/postgresql bursu_pam > bursu_pam.dump
sudo tar -C /var/lib -czf bursu-pam-data.tar.gz bursu-pam
)
The archive contains keys — keep it as securely as the keys themselves, separately from the database copy. Without the master key from keys/, neither the secrets nor the recordings from the database copy can be read; a database copy without the data directory is useless. Make both parts at the same time: a database restored from a copy older than the licence state file puts the gateway into the “does not trust its own time” state (see “Licence”).
Restoring on a new server: install the same package, stop the service, restore the database (DROP DATABASE, bursu-pam-setup, pg_restore — as in the rollback above), unpack the archive into /var/lib (owner bursu-pam), start the service. If the key file is missing or does not fit, the gateway will open the /unseal page for the recovery key. The licence then needs to be moved to the new server (“Moving”).
Recordings on another disk
The service can write only to /var/lib/bursu-pam. To keep recordings on a separate disk:
sudo install -d -o bursu-pam -g bursu-pam -m 0700 /srv/pam-recordings
sudo systemctl edit bursu-pam-gateway
# [Service]
# ReadWritePaths=/srv/pam-recordings
# in gateway.json: "recordingsDirectory": "/srv/pam-recordings"
sudo systemctl restart bursu-pam-gateway
Or, more simply, mount a separate disk straight onto /var/lib/bursu-pam/recordings.
Ubuntu updates and restarts
The package installs /etc/needrestart/conf.d/bursu-pam.conf so that the needrestart utility, after apt upgrade, does not restart the gateway by itself (a restart cuts off all sessions). After library updates, sudo needrestart -b will show the gateway as waiting for a restart — restart it in a maintenance window.
Removal
sudo apt remove bursu-pam # stops the service, removes only the package files
sudo apt purge bursu-pam # the same, plus the service state; NOTHING more
Neither remove nor purge deletes /var/lib/bursu-pam (keys and recordings), /etc/bursu-pam, /var/backups/bursu-pam, the database bursu_pam, the role and the account bursu-pam — a reinstallation will pick them up. Final removal is irreversible; do it only after making sure the recordings and keys are no longer needed by anyone:
sudo runuser -u postgres -- psql -c 'DROP DATABASE bursu_pam'
sudo runuser -u postgres -- psql -c 'DROP ROLE "bursu-pam"'
sudo rm -r /var/lib/bursu-pam /etc/bursu-pam /var/backups/bursu-pam
sudo deluser --system bursu-pam
Before taking the gateway out of service, release the licence (“Releasing an installation”).
Web console
The console is the gateway's own set of web pages. In it the administrator creates users, servers and access rules, the auditor reads the logs, the approver decides on requests, and an ordinary user sees what they have access to. The console opens in a browser at the gateway's address; the address and the certificate are set during installation (see the sections Network and ports and Gateway certificate). The console also works without JavaScript. Every form is protected against request forgery, and pages are not stored in the browser cache.
What a person sees in the console depends on their roles. The roles are described in the section Roles; menu items that a role cannot open are not shown at all (they are not “greyed out”, they are hidden).
Signing in: the “Sign in to the console” page
The page address is /signin. Everyone who opens the console without a valid session lands on it. If they wanted to open a specific page before that, the gateway returns them to exactly that page after sign-in.

| Field or button | What to enter | Notes |
|---|---|---|
| Login | The login. A local user enters their own login. A directory user enters name@suffix, NETBIOS\name or just the name. | Case does not matter. A name without a suffix is looked up first among local users, then in the directory marked as Default directory (see Directories). |
| Password | The password. A directory user enters their domain password. | The gateway does not store the directory password or write it to the logs: it is needed only for a single check against the directory. |
| Language | The interface language: English, Deutsch, Español, Português (for Portugal), Português (Brasil), Русский, Українська, ქართული. | The choice is remembered in a cookie for a year and applies until sign-in; after sign-in the language is taken from the person's profile (see Interface language). |
| Sign in | The submit button. | No more than 10 submissions a minute from one address (a shared limit for sign-in, code entry and re-confirmation). |
| Sign in with Windows | The button under the word or. | Shown only if at least one Active Directory directory is ready for sign-in through Kerberos (see Signing in with Windows (Kerberos)). |
A banner may appear above the form: the text that the administrator set in the Banner text setting (Sign-in and MFA). It usually carries a warning that activity is monitored.
The gateway answers sign-in errors with the same phrase every time, so that the answer does not reveal whether such a login exists: Incorrect login or password. It answers this way for a wrong password, an unknown login, a disabled user, and a person who is not a member of any mapped directory group. The exception is a lockout: Account temporarily locked until {0}. (the time is in the gateway's time zone). All sign-in error texts are collected in the chapter “Troubleshooting”.
Sign-in steps and the order of pages
Signing in consists of several steps. Each next step is shown only when it is needed.
| No. | Step | Page | When it is shown |
|---|---|---|---|
| 1 | Login and password | /signin | Always. |
| 2 | Second-factor code (TOTP) | /signin/totp | If the person already has an authenticator app set up. |
| 3 | Changing a temporary password | /signin/password | If the password was issued by an administrator (when creating the user or resetting the password). |
| 4 | TOTP setup | /signin/enrol | If the person does not yet have an authenticator app and the Require TOTP setting is on. |
| 5 | Console | The role's start page | After all the steps. |
The start page: the administrator and the auditor land on Overview (if the gateway is not yet licensed, the administrator lands on the Licence page first); the approver lands on Approvals; everyone else lands on My profile.
Until a person has completed all the steps, the gateway lets them go nowhere except the page of the current step. Any other page sends them back to that step.
After a correct password, 5 minutes are given for entering the code. For changing the password and setting up TOTP together, 15 minutes are given from the moment of the correct password, however many steps there are. If the time runs out, the person simply lands on the sign-in page and starts again.
The code from the app: the “Two-factor sign-in” page
The address is /signin/totp. Under the heading is the login being signed in. On the page:
- six boxes 6-digit code (the digits can be typed one after another or pasted all at once), the hint “Enter the 6-digit code from the authenticator app.” and the Confirm button;
- the link Enter a recovery code: the page switches to the Recovery code field (sample
xxxxx-xxxxx) and the text “Enter one of your recovery codes. Each code works once.”; the link Enter a code from the app leads back; - the Sign in as another user button: it ends the sign-in in progress and returns to the sign-in page.

The code has six digits and comes from the authenticator app (RFC 6238: SHA-1, 6 digits, 30-second step). The same code cannot be used twice. If the code is not accepted, the page says The code did not match. Check that the time on the phone is accurate.
The fifth wrong code ends the sign-in: the person returns to the sign-in page with the message Too many wrong codes. Sign in again. In addition, each wrong code counts as a wrong password towards the account lockout (see Lockout). If the lockout was triggered by wrong codes, the sign-in page still shows the same message, “Too many wrong codes”, and the person learns about the lockout on the next attempt to enter the password.
Changing a temporary password: the “Choose your password” page
The address is /signin/password. It is shown to a person whose password was issued by an administrator. The text: “The administrator gave you a temporary password. Choose your own to continue.” The fields:
| Field | What to enter | Restrictions |
|---|---|---|
| New password | The new password. | Not shorter than set in the Minimum password length setting (12 characters by default, not less than 12). Under the field it says: “At least N characters.” |
| Repeat the password | The same password again. | Must match, otherwise: The passwords do not match. |
| Change password | The button. | After it the gateway continues the sign-in at once (TOTP setup if it is needed, otherwise the console). |
If it is too short: The password must be at least N characters long. The length is counted in characters after standard Unicode normalisation.
For a directory (domain) user this page shows, instead of the form, the heading Change your domain password (for LDAP, Change your directory password), a text about where to change the password, and a single Sign out button. The gateway never writes to the directory, so the password is changed only with the directory's own tools.
TOTP setup: the “Set up two-factor sign-in” page
The address is /signin/enrol. Signing in to the console is protected by a second factor, a code from an app on the phone. The page is shown to a person who does not yet have one, if the Require TOTP setting is on (it is on by default). The steps:
- Scan the code. The block 1. Scan the code in the authenticator app shows a QR code. If you have nothing to scan with, enter the key by hand: it is shown under the caption “Or enter the key by hand:”, and below it are “Account: login” and the parameters “SHA-1, 6 digits, 30 seconds”.
- Enter the code. In the field 2. Code from the app enter the six digits from the app and press Next. If the digits are not accepted, the page says The code did not match. Check the time on the phone.
- Save the recovery codes. After the correct code, ten one-time codes are shown (the block Save your recovery codes). They are needed if the phone is lost. Each code works once. The buttons are Download .txt (the file
bursu-pam-recovery-codes.txt) and Print. Keep the codes apart from the phone. - Confirm. Tick I have saved the recovery codes and press Next. Without the tick the button does not work.
The QR code, the key and the recovery codes are secrets. They must not be shown in screenshots, in correspondence or in reports. The recovery codes are shown only once.
The secret is tied to the session that showed it. If you open this page again in another window at the same time, the new secret replaces the previous one, and a warning appears on the old page: “Another session of this account started a new authenticator setup, so the code shown here before no longer works.” If setup has already been completed in the other window by then, this sign-in is closed and the person returns to the sign-in page. After confirmation the gateway ends all the other sessions of this person.
Signing in with Windows
The Sign in with Windows button leads to the page /signin/windows. The browser must send the Kerberos ticket to the gateway by itself. After the ticket a second factor is still needed: if the person has no TOTP, setup is offered at once (even when the Require TOTP setting is off); if they have it, the code is requested, unless the browser is “remembered” (see the One code covers Windows sign-ins for (hours) setting). If sign-in fails, the page returns to the sign-in form with one of the phrases; all of them are listed in the chapter “Troubleshooting”. Setup is described in detail in the section Signing in with Windows (Kerberos).
Re-confirmation: the “Confirm it is you” page
The address is /reauth. For dangerous actions the gateway asks for the password and the code again, even if the person has already signed in. Such a confirmation is valid for 10 minutes and is tied to the current session. After confirmation the gateway returns the person to the page they were sent from.

| Field | What to enter |
|---|---|
| Password | Your own password (the domain password for a directory user). |
| Code from the app | The six digits from the app. Shown only if the person has TOTP set up. |
| Or a recovery code | Instead of the code from the app you can enter a recovery code. |
| Confirm | The button. |
There is one error for both the password and the code: The password or the code did not match. A wrong password or a wrong code is counted in the same way as at sign-in and leads to an account lockout. When the password and the code are correct, the failure counter is reset.
Confirmation is required for: changing roles, setting a password for another person and resetting their second factor; adding, changing and deleting a directory and the mappings of its groups; changing the encryption key and the key mode; creating a new authenticator app and new recovery codes in the profile; weakening the sign-in settings; and for a number of actions in other parts of the console (rules, licence, SIEM and so on, which are described in their own sections).
Signing out: the “Sign out” page
The Sign out item in the user menu ends the session at once, without asking. The page /signout with the question “End your console session?” and the Sign out button opens only if you go to that address directly (for example, from a bookmark). After signing out, the session is closed on the gateway, not only in the browser. Signing out also “forgets” this browser for signing in with Windows (the remembered device).
Session lifetimes
| What | Period | Where it is changed |
|---|---|---|
| Entering the code after the password | 5 minutes | Cannot be changed. |
| Changing the password and setting up TOTP (together) | 15 minutes | Cannot be changed. |
| Working session: idle time | 30 minutes by default; from 5 to 720 minutes | Console idle time before sign-out, min |
| Working session: overall limit | 12 hours, in any case | Cannot be changed. |
| Re-confirmation | 10 minutes | Cannot be changed. |
| BURSUcm token | 8 hours by default; from 1 to 168 hours | BURSUcm token lifetime, h |
| One code covers Windows sign-ins | 1 hour by default; from 0 to 24 hours | One code covers Windows sign-ins for (hours) |
The end of a session is not accompanied by a message: the person is simply taken to the sign-in page, and after signing in, to the page they were on. The session identifier is kept in the cookie __Host-bpam-session (HTTPS only, not accessible to scripts). At every sign-in step the gateway issues a new cookie value.
Account lockout
Five wrong passwords in a row lock the account for 15 minutes. Both numbers are settings (Failed attempts before a lockout and Lockout length, min), and they are read at every sign-in. Details:
- Not only wrong passwords are counted, but also wrong second-factor codes and failed re-confirmations.
- A correct password does not reset the counter by itself; the counter is reset when sign-in is fully completed or when re-confirmation succeeded with the password and the code.
- If more time has passed since the last failure than the lockout lasts, the count starts again.
- A locked-out person sees Account temporarily locked until {0}. The administrator can lift the lockout early with the Unlock button in the user's card.
- A lockout of a directory user works in the same way. In addition, the directory's own lockout also applies: it looks like “Incorrect login or password”.
The layout of the window
Every console page consists of a top bar, a side menu and a work area.
The top bar
- On the left: the Menu button (on a narrow screen it opens the side menu) and the name BURSU PAM; it leads to the start page.
- Alerts is the bell (see The bell).
- Language is the drop-down list of languages. The choice is saved at once.
- Switch theme is the button with a moon: it switches between the light and dark themes.
- The user menu (User menu): the person's name. It has three items: My profile, Language and theme and Sign out.
The side menu
The menu is built by role and shows only what the person can open. The Collapse menu button at the bottom collapses the menu. For an approver, next to the Approvals item there is the number of requests waiting for their decision. The My profile item is shown in the side menu only if, apart from the common items (My access and Help), nothing else is available to the person, that is, they have the single role User; for everyone else “My profile” is available in the user menu at the top.

Menu and settings sections: English and Russian
The console is translated into eight languages. The screenshots and this guide show the English interface. Below are all the side-menu items and all the tiles of the Settings section with their English and Russian labels from the translation files (nav.*, sethub.*, role.*) and with an indication of who sees them.
The Russian, Ukrainian and Georgian strings of the console are still awaiting approval by the product owner. The German, Spanish and both Portuguese strings are a good translation, but have not been proofread by a native speaker. If a label in your language seems inaccurate, go by the English one: it is the one shown in the screenshots of the guide.
The side menu
| Menu group (EN) | Item (EN) | Item (RU) | Address | Who sees it |
|---|---|---|---|---|
| Mine / Моё | My access | Мой доступ | /access | anyone signed in |
| — | Overview | Обзор | /overview | Administrator Auditor |
| Users / Пользователи | Users | Пользователи | /users | Administrator |
| Users / Пользователи | Groups | Группы | /groups | Administrator |
| Resources / Ресурсы | Servers | Серверы | /servers | Administrator |
| Resources / Ресурсы | Device profiles | Профили устройств | /servers/profiles | Administrator Auditor |
| Resources / Ресурсы | Accounts | Учётные записи | /accounts | Administrator |
| Access / Доступ | Access rules | Правила доступа | /rules | Administrator |
| Access / Доступ | Approvals | Согласования | /approvals | Approver |
| Access / Доступ | Command control | Контроль команд | /commands | Administrator Auditor |
| Audit / Аудит | Sessions | Сессии | /audit/sessions | Administrator Auditor |
| Audit / Аудит | Emergency access | Аварийный доступ | /audit/breakglass | Administrator Auditor Approver |
| Audit / Аудит | File transfers | Передача файлов | /audit/files | Administrator Auditor |
| Audit / Аудит | Clipboard | Буфер обмена | /audit/clipboard | Administrator Auditor |
| Audit / Аудит | VNC sessions | Сессии VNC | /audit/vnc-sessions | Administrator Auditor |
| Audit / Аудит | Statements | Запросы | /audit/statements | Administrator Auditor |
| Audit / Аудит | Sign-in log | Журнал входов | /audit/logins | Administrator Auditor |
| Audit / Аудит | Audit log | Журнал аудита | /audit | Administrator Auditor |
| Audit / Аудит | Integrity check | Проверка целостности | /audit/integrity | Administrator Auditor |
| System / Система | Settings | Настройки | /settings | Administrator |
| Help / Справка | File transfer | Передача файлов | /help/files | anyone signed in |
| Help / Справка | Database clients | Клиенты баз данных | /help/databases | anyone signed in |
| Help / Справка | VNC viewers | Просмотрщики VNC | /help/vnc | anyone signed in |
| Help / Справка | Command control | Контроль команд | /help/commands | anyone signed in |
| — | My profile | Мой профиль | /profile | anyone signed in |
The items of the “Audit” group and the pages “Approvals”, “Command control”, “Device profiles” and “Emergency access” are described in the parts of the guide on audit, requests and resources. The My access item is covered in the part for users.
The tiles of the “Settings” section
| Tile group (EN / RU) | Tile (EN) | Tile (RU) | Address | Caption under the name (EN) |
|---|---|---|---|---|
| Security / Безопасность | Sign-in and MFA | Вход и MFA | /system/auth | Two-factor sign-in, lockouts, password rules and idle time. |
| Security / Безопасность | Directories | Каталоги | /system/directories | Active Directory and LDAP servers whose users sign in. |
| Security / Безопасность | Encryption key | Ключ шифрования | /system/key | The key that encrypts account secrets, and its mode. |
| Security / Безопасность | Gateway SSH key | SSH-ключ шлюза | /system/ssh | The host key SSH clients see when they connect. |
| Security / Безопасность | RDP file signing | Подпись файлов RDP | /system/rdp-signing | The certificate that signs .rdp files. |
| Sessions and protocols / Сессии и протоколы | Sessions | Сессии | /system/sessions | Recording, idle time, banner, RDP limits and file transfers. |
| Sessions and protocols / Сессии и протоколы | VNC | VNC | /system/vnc | Limits, listener and video export for VNC sessions. |
| Sessions and protocols / Сессии и протоколы | Databases | Базы данных | /system/databases | Pass lifetimes, limits and protections for database connections. |
| Integrations / Интеграции | SIEM export | SIEM-экспорт | /system/siem | Send the audit log to a SIEM over syslog. |
| Integrations / Интеграции | Notifications | Уведомления | /system/notifications | E-mail and webhook alerts for requests and emergency use. |
| System / Система | Status | Состояние | /system/status | Certificate, address and trusted proxies (read only). |
| System / Система | Licence | Лицензия | /system/licence | The licence in force, the server limit and activation. |
Role names
| Key | Role (EN) | Role (RU) |
|---|---|---|
role.administrator | Administrator | Администратор |
role.auditor | Auditor | Аудитор |
role.approver | Approver | Согласующий |
role.user | User | Пользователь |
The “Alerts” bell
The bell is an icon in the top bar. The number on it is the count of current problems. It is shown to the administrator, the auditor and the approver, and also to anyone who has their own request notifications. Clicking it opens a list; if there are no problems, it says No current problems. An item with a link leads to the page where the problem can be dealt with; for a person who cannot open that page, the item is shown without a link.

The list of problems itself (this is the general picture; the details are in the sections the items lead to):
- The person's own entries: Requests waiting for your decision: {0}, Your requests that were decided: {0}, Commands waiting for your confirmation: {0}, and also those about emergency access (Emergency access used and not yet reviewed: {0} and Emergency access reviews overdue: {0}).
- General problems for the administrator and the auditor: the encryption key is sealed or out of date, users locked out in the last hour, the local log queue, a change of a server's host key, directories that are unmonitored or lack a confirmed root certificate, session recording failures, low disk space, clock drift, a SIEM export failure, licence problems, a break in the log chain and others (the full list of states is in the section Status).
Strips above the content
- Licence warning. A red or yellow strip that everyone signed in sees while the licence has expired, is in its grace period, is tied to another server or is not installed. For the administrator the strip has the link Open the licence page. The texts and actions are in the section “Licence”.
- Emergency access strip. While a person's own emergency access is in force, every page says: “Emergency access is active until {0}. This use is recorded and will be reviewed.”
- Result of an action. After saving, deleting or another action on a page, a green (success) or yellow (warning) strip with a message is shown for a short time: for example, Saved., Deleted., Created.
- Watermark. If the Watermark setting is on, the signed-in person's “login (Name)” is repeated diagonally across the whole console window.
Interface language
The console language is chosen for each person separately. The gateway picks the language in this order, taking the first that fits:
- the language saved in the person's profile (after the first choice in the console);
- the browser's language cookie (a choice on the sign-in page or in the top bar);
- the browser's Accept-Language header;
- the default language chosen during the gateway's initial setup;
- English.
Eight languages are available: English (en), Deutsch (de), Español (es), Português — Portugal (pt), Português — Brasil (pt-br), Русский (ru), Українська (uk), ქართული (ka). A choice in the top bar or on the Language and theme page is written to the profile and to a cookie (for a year) and goes into the audit log as “Language changed”.
The “Language and theme” page
The address is /preferences. It opens from the user menu and is available to everyone signed in. There are two forms:
| Form | What is in it | What it does |
|---|---|---|
| Console language | Language cards (one per language, labelled in that language itself). The Save button. | Saves the language in the profile and in a cookie. |
| Theme | Three cards: As in the system, Light, Dark. The Save button. | Saves the theme only in this browser's cookie. The value “As in the system” follows the operating system's setting. |

The “My profile” page
The address is /profile. Anyone signed in can open it. For a person with only the User role this is the whole console, apart from “My access” and the help. What is on the page:

| Block | What is in it |
|---|---|
| Password | The fields Current password, New password, Repeat and the Change password button. The length must be at least the value of the Minimum password length setting. After the change: “Password changed. Your other sessions have ended.”: all the person's other sessions are closed. If the current password is wrong: The current password did not match. (such an attempt counts towards the lockout). A directory user sees, instead of the form, the explanation “Your password is your domain password. Change it in Windows.” (for LDAP, “Your password is your directory password. Change it where your organisation manages directory passwords, or ask your administrator.”). |
| Two-factor sign-in | The TOTP row with the status on and the setup date (“Set up on {0}”) or not set up. If TOTP is on, there are two more rows: Authenticator app with the Set up again button and Recovery codes with the number of codes left (“N of 10 recovery codes left”) and the Create new ones button. |
| Remembered devices | Browsers and apps for which signing in with Windows does not ask for a code (see the One code covers Windows sign-ins for (hours) setting). The columns are Browser or app, Remembered, Until; the buttons are Forget (one device) and Forget all devices. If nothing is remembered: “No device is remembered.” |
| BURSUcm tokens | Sign-ins of the BURSUcm app through the gateway. The columns are Issued, Expires, State (active, expired, revoked). The Revoke button, with the confirmation “Revoke the token issued on {0}? The app loses access at once.”, revokes the token immediately. With no tokens: “No tokens yet.” |
| My access | Read only: the servers the person has access to under the rules (Server, Address, Accounts, Granted, Valid until). Access is granted by the administrator through rules. If there is nothing: “No access to servers yet.” |
A new authenticator app: the “New authenticator app” page
The address is /profile/totp (the Set up again button). Re-confirmation is needed (10 minutes). The steps: press Start, scan the new QR code, enter the code from the new app and press Confirm. Until confirmation, the previous app keeps working. After confirmation the gateway issues ten new recovery codes (“New recovery codes replace the old ones”), ends all the person's other sessions and forgets their remembered devices. The Done button returns to the profile.
New recovery codes: the “New recovery codes” page
The address is /profile/codes (the Create new ones button). Re-confirmation is needed. Press Create new codes: the previous codes stop working at once, and ten new ones are shown once. Save them with the Download .txt button or print them (Print).
The profile has no “set up TOTP for the first time” button: the Set up again and Create new ones buttons are shown only to a person who already has TOTP. If the administrator turned off the Require TOTP setting and the person signed in without a second factor, they will be able to set it up only when the setting is turned on again (at their next sign-in they will be offered the setup page). If you need a second factor for everyone, leave Require TOTP on.
Common list elements
The lists of users, groups and many other objects work in the same way:
- Quick filters are “chips” above the table. Each has the number of records on its right. The selected chip is highlighted; All clears the filter.
- The search box (the Search field with a hint, for example “Login, name, group”). The / key moves the cursor to the box. The search is truncated to 200 characters; wildcard characters have no special meaning.
- The create button (for example, Create user), the Actions menu with bulk actions (it appears after rows are ticked with the checkboxes), CSV (an export of the whole list, taking the filter and search into account; the export is written to the audit log as “audit.export”) and Refresh.
- A click on a column heading sorts by that column; a second click changes the direction.
- At the bottom: “Total: N”, the Per page choice (15, 30, 50 or 100; 15 by default) with the Apply button, and the page numbers.
- A bulk action on the ticked rows asks for confirmation: “Apply this action to the selected rows?” If nothing is ticked: “Nothing was selected.” If the filter found nothing: “Nothing matches this filter.”
Confirmations and unsaved changes
Dangerous actions (disabling, deleting, resetting) ask for confirmation in a window with the Confirm and Cancel buttons. If JavaScript is off, the same confirmation is shown on the page itself, in the block “Confirm the action”. Forms with fields warn you if you close the page with unsaved changes. The Reset button returns the fields to the values the page opened with.
Time and time zone
The gateway stores time in UTC and shows it in the time zone set in gateway.json by the displayTimeZone parameter (for example, Asia/Tbilisi). If the parameter is not set, the time zone of the gateway's operating system is used. Dates and times are shown in the format of the chosen language. This time zone is the same for all users; it cannot be changed in the profile. See the section gateway.json.
Users
The Users section (address /users) is the list of people who sign in to the console and connect to servers through the gateway. The section is available only to the administrator (Administrator). There are two kinds of users:
- Local. They are created by the administrator. The login and the password are stored in the gateway's database (the password only as an irreversible hash). The first administrator is created by the initial setup wizard (see the section Initial setup wizard).
- Directory users (Active Directory or LDAP). They appear by themselves on their first successful sign-in. They have no password on the gateway; the name, roles and group membership come from the directory (see Directories).
The list of users
The address is /users. Above the table are the quick filters (Quick filters); each shows the number of people:
| Filter | Whom it shows |
|---|---|
| All | Everyone. |
| Locked | Those locked after failed sign-in attempts (the lockout has not ended yet) and not disabled. |
| Without MFA | Those who have no TOTP set up. |
| Disabled | Disabled users. |
| No sign-in for 30+ days | Those who have not signed in for more than 30 days, and those who have never signed in. |

The search (Login, name, group) searches by login, name and group name. The columns of the table:
| Column | What it shows |
|---|---|
| Login | The login; the link leads to the card. For a directory user the login looks like NETBIOS\name (Active Directory) or name@directory-name (LDAP). |
| Name | The name. Under the name of a directory user is a label with the kind and name of the directory (“Active Directory: name”). |
| Roles | The roles, separated by commas. |
| Groups | The number of groups; the link opens the Groups tab of the card. |
| MFA | TOTP means set up; Not set up means not set up. |
| State | Active, Locked or Disabled. Disabling outranks a lockout. |
| Last sign-in | The time of the last completed sign-in to the console, or never. |
The columns Login, Name, Groups, State and Last sign-in can be sorted. On the right of a row are the Edit button (directory users do not have it) and the More actions menu: Open the card, Access (the “Access” tab of the card), Log (the “Log” tab). The CSV button exports the list, taking the filter and search into account; the export goes into the audit log.
Bulk actions. Tick rows with the checkboxes and open the Actions menu: Enable and Disable. For Disable the gateway asks for confirmation. Rows for which the action changes nothing are skipped without an entry in the log. If you enable a directory user whom the directory still disables, the gateway warns you: “Done for the selected rows. Users the directory disables stay disabled.”
Creating a user
The Create user button opens the page /users/new (“Create user”). The hint on the page: “A user created by an administrator changes the password and sets up TOTP at the first sign-in.”

| Field | What to enter | Default / restrictions |
|---|---|---|
| Login * | The login: Latin letters, digits, dot, underscore, hyphen. | From 1 to 64 characters. Capital letters are converted to lower case. The colon and @ are forbidden, because the login is part of the SSH name (login:server:account). It cannot be changed after creation. Error: “A login is 1-64 characters: latin letters, digits, dot, underscore, hyphen.” |
| Name * | First and last name (the hint “First and last name”). | From 1 to 128 characters. Error: “A name is 1-128 characters.” |
| A contact address. | Up to 254 characters. For contact only: sign-in is by login. | |
| Groups | The groups the person will join (a field with search and labels). | The rights from the groups' rules are added to the person's own rights. Empty means in no group. |
| Roles * | The checkboxes Administrator, Auditor, User, Approver. | By default only User is ticked. At least one role must be ticked: “Choose at least one role.” Administrator and Approver cannot be chosen together (see Roles). The checkboxes are unavailable until you have confirmed who you are (the link-button Confirm who I am, see Re-confirmation); without confirmation the new user gets only the User role. |
| Temporary password | The password that the administrator hands to the person. The Generate button fills in a random one. | Empty means the gateway creates a password itself (at least 20 characters, without look-alike characters 0/O, 1/l/I). Your own password must be at least the value of the Minimum password length setting. The password is changed at the first sign-in. |
| Change password at the first sign-in | The checkbox is on and cannot be changed. | Always on for users created by an administrator. After changing the password the person sets up TOTP. |
| Active | The switch “Can sign in to the console and connect”. | On. If it is off, the user is created disabled. |
| Create, Reset, Cancel | Create creates the user; Reset restores the form fields; Cancel returns to the list. | |
(An asterisk marks required fields.)
After you press Create the page shows “User {0} is created.” If the password was generated by the gateway, the Temporary password block appears below: “Give it to the user separately from the login. It is shown only now; they change it at the first sign-in.” The password is shown once; you must write it down at once. The buttons are Open the card and Create user (to create another one). If you entered the password yourself, there is no password block.
Do not take a screenshot of the screen with the temporary password, and do not send it together with the login in one message. Send the login and the password through different channels.
What goes into the audit log: the creation of the user (User created) with the roles, the groups and the “password generated” flag. If a group you added the person to is named in the request template as an approvers' group, an event about a new approver is written as well.
Editing a user
The Edit button (list or card) opens /users/{id}/edit (“Edit user {0}”). The fields are the same as at creation, except the login (read only) and the password block. The differences:
- Roles. The checkboxes are available only for 10 minutes after re-confirmation. While there is no confirmation, under the checkboxes it says “Changing roles needs you to confirm who you are.” with the link Confirm who I am. If roles are changed without confirmation, the form refuses: “Confirm who you are before changing roles.”
- Temporary password. Empty means the password stays as it was (“Leave empty to keep the current password.”). If you enter a password, re-confirmation is needed: “Confirm who you are before setting a password.” The person must change the new password at their next sign-in; all their sessions are closed, and the sign-in lockout, if there was one, is lifted (if you change the password for yourself, only the current session is kept).
- Active. The switch disables or enables the user.
- The form carries the version number of the record. If another administrator managed to change the same person, saving is refused: “The record was changed by another administrator — open it again.”
After Save the gateway returns to the card with the message Saved. One event is written to the log for each change: the person's details, adding and removing groups, a change of roles (with the old and new value), enabling or disabling, a password reset.
Directory users cannot be changed here: they have no Edit button, and going to the address leads to the card with the explanation “This is set by the directory for domain users and cannot be changed here.”
The user card
The address is /users/{id}. In the heading: the name, the login, the directory label (for a directory user), the Edit button (except for directory users) and the Disable / Enable button. The tabs: Main, Groups, Access, Tokens, Log.

The Main tab consists of two blocks.
The Details block: Login, Name, E-mail, Roles, Groups (labels that link to the groups), State (for a locked user, “until {0}”; for a directory user, the explanation “disabled in the directory”, “expired in the directory”, “in no mapped group” or “no longer in the directory”), Two-factor sign-in (TOTP and “recovery codes left: N of 10”, or Not set up), Last sign-in, Created, Change password at the next sign-in. For a directory user, instead of the last one there is the Source block with the explanation “Roles, directory groups, name and password of a domain user come from the directory.” and the link Group mappings to the directory's card.
The Quick actions block:
| Row | Button | What it does |
|---|---|---|
| Active “A disabled user cannot sign in; their tokens and sessions end at once.” | Disable / Enable | Disabling asks for confirmation: “Disable {0}? They lose access to every server at once and their BURSUcm tokens are revoked. The audit log keeps their events.” The result: “The user is disabled.” or “The user is enabled.” If the directory still disables the person: “Enabled in the console, but the directory still disables this user.” You cannot disable yourself or the last active local administrator with TOTP. |
| Lock “Locked until {0} after failed attempts” or “Not locked” | Unlock | Lifts the sign-in lockout. The button is active only for a locked user. The result: “The lock is lifted.” |
| Two-factor sign-in “Needs you to confirm who you are” | Reset MFA | Re-confirmation is needed, then confirmation of the action: “Reset two-factor sign-in of {0}? At the next sign-in they set up TOTP again.” It deletes the app and the recovery codes and forgets the remembered devices. The result: “Two-factor sign-in is reset.” The button is unavailable if TOTP is not set up. It refuses if this is the last administrator with TOTP. |
| Password “Temporary, changed at the next sign-in. Leave empty to generate one.” | Set (next to it Generate) | Re-confirmation is needed. Directory users do not have this row. If the field is empty, the gateway creates a password and shows it once in the Temporary password block. A password you entered is not shown: “Saved.” All the person's sessions are closed and the sign-in lockout is lifted. |
| Console sessions “Sign out on every device at once” | End | After the confirmation “End every console session of {0}?” it ends all this person's console sessions and forgets their remembered devices. The result: “The user's console sessions have ended.” |
The Groups tab is “The user's groups”: a table (Name, Description, Rules, the number of the group's rules). At the top right are a group selector and the Add to group button. The Remove button asks: “Remove {0} from the group {1}? The group's rules stop applying to them.” A group in which the person is a member because of the directory carries the label from the directory; if the membership comes only from the directory, there is no Remove button, because it is managed by the directory's group mapping. If the person is in no groups: “The user is in no group.”
The Access tab is “Access to servers”: “From every rule in effect and every future one, directly and through groups.” The columns are Server, Address, Accounts, How (directly or through a group), Rule (a link), Valid until. If there are no rules: “No rule gives this user access.” This tab is read only. Remember: only a person with the User role can go to servers.
The Tokens tab is “BURSUcm tokens” (sign-ins of the BURSUcm app through the gateway): the columns Issued, Expires, State; the Revoke button revokes the token immediately (“Token revoked.”). Below is Remembered devices (devices remembered for signing in with Windows) and the Forget devices button (re-confirmation and confirmation of the action are needed: “Forget every remembered device of this person? Their next Windows sign-in asks the code.”).
The Log tab shows the latest audit log events about this person and a link to the whole log.
Forgot the password: on the Main tab set a new temporary password (Set). Lost the phone: press Reset MFA; at the next sign-in the person will set up a new app. Locked out: Unlock. The person can change their own password in “My profile”.
Directory users
- The account appears on the first successful sign-in of a person who belongs to at least one mapped group. “Directory user created” is written to the log.
- The gateway roles and groups of such a person are determined by the group mappings (see Group mapping). In the console you can do only the following by hand: add them to a gateway group (this is a separate, “manual” membership that the directory does not touch), disable them in the console, reset MFA and end sessions.
- States in the directory: disabled in the directory, expired in the directory, in no mapped group, no longer in the directory. In all these cases the person cannot sign in. Disabling in the directory ends their sessions at once; a lockout in the directory blocks new sign-ins but does not end sessions already in progress.
- If a directory group mapping names only a gateway group (without a role), the person gets no roles, and only the User role goes to servers (see Roles). For a directory person to be able to connect to servers, at least one of their mappings must give the User role.
- A directory user's password is changed in the directory.
Groups
A group gathers people so that one access rule applies to all of them at once, both the current members and those who join later. The Groups section (address /groups) is visible only to the administrator. A gateway group is not connected to a directory group until you map them (see Group mapping).
The list of groups
The address is /groups. If there are no groups yet, the screen “No groups yet” is shown with the explanation “A group gathers users so one access rule covers all of them, now and when people join later.” and the Create group button.

| Element | What it does |
|---|---|
| The search Name, description | Searches by name and description. |
| Columns | Name (a link to the card), Members (a link to the members tab), Access rules (a link to the rules tab), Description. Sorting is by name, number of members and number of rules. The Edit button in the row. |
| Actions → Delete | Bulk deletion of the ticked groups. Confirmation: “Delete the selected groups? Their members stay, but lose the access the groups' rules give.” |
| CSV | An export of the list (an entry in the audit log). |
Creating and editing a group
The Create group button opens /groups/new, the Edit button opens /groups/{id}/edit (“Edit group {0}”). The form:
| Field | What to enter | Restrictions |
|---|---|---|
| Name * | The name of the group. | From 1 to 128 characters (“A group name is 1-128 characters.”). The name must be unique, case-insensitively: “This name is already taken.” |
| Description | What the group is for. | Up to 1000 characters (“A description is at most 1000 characters.”). |
| Create / Save, Reset, Cancel | Create or save; restore the fields; cancel. If another administrator has already changed the record: “The record was changed by another administrator — open it again.” | |
The group card
The address is /groups/{id}. The buttons in the heading are Edit and Delete. The tabs:
- Main: the Details block (name, description, number of members and rules, creation date) and the latest log events about the group.
- Members: choosing people in the Add members field (“New members get the group's access at once.”) and the Add members button. In the table of members: Login, Name, State and the Remove button (with the confirmation “Remove {0} from the group {1}? The group's rules stop applying to them.”). The label from the directory is on members who came from the directory; if the membership comes only from the directory, there is no Remove button. While there are no members: “The group has no members.”
- Rules: the rules that name the group (Name, Valid until, State, which is Enabled or Disabled). If no rule names the group: “No rule names this group.” Rules are created in the “Access rules” section (see Access rules).

Deleting a group
The Delete button in the card asks: “Delete the group {0}? Its members ({1}) stay, but lose the access its rules ({2}) give.” A group cannot be deleted if:
- the group is used in a directory mapping: The group is used by a directory mapping. Remove the mapping first.;
- command control policies refer to the group: Command policies still apply to this: {0}. Edit the policies first. (change the policies first; see the section Command control).
When a group is deleted, the people remain, but lose the access that the rules of this group gave them. “Group deleted” is written to the log.
The audit log records: the creation, change and deletion of a group, and the adding and removing of a member (“Member added”, “Member removed”). If a member of the group becomes an approver as a result, an event about a new approver is written as well (it also produces an item in the bell).
Roles
A role determines what a person sees in the console and what they can change in it. A person can have several roles. Roles are set in the user form (Users) and, for directory users, in the group mappings (Directories). The role names in the interface are Administrator, Auditor, Approver, User.
| Role | For whom | What it gives |
|---|---|---|
| Administrator — “Users, servers, rules and settings” | The person who configures the gateway. | Users, groups, servers, accounts, access rules, device profiles, command control, settings, licence; reading of all the logs and the overview. They do not connect to servers through the gateway themselves; that needs the User role. |
| Auditor — “Overview and logs, read only” | The security department, inspectors. | The overview, the logs (sessions, file transfers, clipboard, database statements, sign-ins, audit log, integrity check), device profiles and command control, read only; the emergency access page with the right to mark a review. They change nothing. |
| Approver — “Decides on access requests; cannot also be an Administrator” | A manager who decides on access requests. | The Approvals page, decisions on requests, the emergency access page (review). The administrator's console is not available to them. |
| User — “Connects to servers by the rules; ‘My profile’” | An ordinary employee. | Connections to servers under the access rules (SSH, SFTP, RDP, VNC, databases), the pages My access, Help and My profile. |
Roles and console sections
In the table: “yes” means sees and can change; “read” means sees but does not change; “—” means the section is hidden.
| Section | Administrator | Auditor | Approver | User |
|---|---|---|---|---|
| My access, Help, My profile, Language and theme | yes | yes | yes | yes |
| Overview | yes | read | — | — |
| Users, Groups | yes | — | — | — |
| Servers, Accounts, Access rules | yes | — | — | — |
| Device profiles | yes | read | — | — |
| Command control | yes | read | — | — |
| Approvals | — | — | yes | — |
| The Audit group: Sessions, File transfers, Clipboard, VNC sessions, Statements, Sign-in log, Audit log, Integrity check | read | read | — | — |
| Emergency access (the log) | read | read and review | read and review | — |
| Settings (all the tiles, including Sign-in and MFA, Directories, Encryption key, Status) | yes | — | — | — |
| Connecting to servers through the gateway | — | — | — | yes |
The auditor has no “change” or “delete” buttons at all. The auditor's whole work is viewing, filters and CSV export. The administrator has no right to connect to servers: if your administrator needs to go to servers, give them the User role as well.
Administrator and Approver are incompatible
One person cannot be an administrator and an approver at the same time. The point of the rule: whoever manages the access rules must not approve the requests made under them. What happens:
- In the user form, if both roles are chosen, the gateway refuses: Approver and Administrator exclude each other: nobody approves requests while managing the rules. Choose one of the two. The general error A person cannot be both an Administrator and an Approver. gives the same reason.
- In a directory: if a person's groups give both roles, the Approver role is not granted, and a warning appears in the bell: Directory roles refused (Administrator wins over Approver): {0}. The exception: if the person already has Approver (and not Administrator), and the mappings now give both, the role that was already there stays, that is, Approver, and Administrator is rejected. More in the section Group mapping.
The local administrator (the “emergency sign-in”)
The gateway always keeps at least one active local administrator with TOTP set up. This rule is checked at every change that could break it. The administrator role of a directory user is not counted, because the directory can take it away at any moment (for example, when the directory is unavailable you must still be able to sign in). Therefore:
- you cannot remove your own administrator role (“You cannot remove your own Administrator role.”);
- you cannot disable yourself (“You cannot disable yourself.”);
- you cannot disable, remove the role from, or reset MFA for the last active local administrator with TOTP: At least one active administrator with two-factor sign-in must remain.
The administrator created by the initial setup wizard is local. Do not delete or disable them until you have created another local administrator with TOTP. Do not confuse this “emergency” account with the Emergency access function (emergency access to a server under a rule), which is described in the part about requests (see Emergency access).
If in an organisation the administrators sign in only through the directory, and the directory is unavailable or has withdrawn the role, nobody will be able to sign in to the console. Always keep at least one local administrator with a working TOTP and the recovery codes in a safe.

Directories (Active Directory and LDAP)
A directory lets employees sign in to the gateway with their domain password, without a separate account and password on the gateway. The gateway supports Active Directory and ordinary LDAP servers (OpenLDAP, 389 Directory Server, FreeIPA). The section is in Settings → Directories (address /system/directories) and is available only to the administrator. Several directories can be connected at the same time.
How it works:
- The gateway goes to the directory under a service account (bind): it looks up the person by login and reads their groups. The person's password is checked by a separate “bind” on their behalf and is not stored anywhere.
- The connection is by LDAPS only (encrypted). Trust in the server is built on “root pinning”: the administrator confirms one root certificate, and the gateway accepts only servers whose certificate was issued under that root. The system certificate authorities are not used.
- The person gets their gateway roles and groups through group mappings: “directory group → role and/or gateway group”. A person who is in no mapped group cannot sign in.
- The gateway watches the directory and reacts to changes: a person disabled in the directory loses access at once, and a change in group membership is applied within seconds.
(1) a read-only service account: it only needs to search users and groups and read their attributes; (2) the address of the domain controller with LDAPS (port 636); (3) the root certificate of the certificate authority that signed the controller's certificate (a .cer, .crt, .pem or .der file); (4) the names of the directory groups that will give roles.
The list of directories
The address is /system/directories. The hint: “Active Directory domains and LDAP servers whose users sign in to the gateway. Roles and gateway groups come from the directory groups mapped here.” If there are no directories, it says: “No directory is connected. Only local users sign in.” The Add directory button creates a directory.

| Column | What it shows |
|---|---|
| Name | The name; a link to the card. |
| Kind | Active Directory or LDAP. |
| Servers | The server addresses, separated by commas. |
| Default | Yes or no: whether this directory is the default one. |
| State | The state of watching the directory (see the table below). |
| State | What it means | What to do |
|---|---|---|
| off | The directory is turned off (Turned on is cleared). Nobody signs in from it; open sessions continue. | Turn it on in the directory's form when needed. |
| certificate not confirmed | The root certificate is not yet confirmed. The gateway does not connect to the directory, and sign-ins through it are rejected. The bell shows an error. | Open the card and confirm or upload the root (Confirming the certificate). |
| connecting | The gateway is connecting; the state is short-lived. | Wait; if it does not pass, the Check connection button will show the reason. |
| watched | The gateway is subscribed to changes in the directory. The normal state. | Nothing. |
| not watched | The directory cannot be watched (for example, there is no connection). Access changes in it will be seen only at the person's next sign-in or ticket check, and when watching is restored. The bell shows an error. | Check the connection and the certificate with the Check connection button. |
| does not report changes | This server cannot report changes: “This directory does not report changes; access is re-checked at the next sign-in or connection.” | Nothing; access is checked at every sign-in and during the periodic reconciliation (up to 15 minutes). |
Adding and changing a directory
The Add directory button opens /system/directories/new (“Add directory”); the Edit button in the card opens /system/directories/{id}/edit (“Change directory”). Both pages require re-confirmation (10 minutes).

| Field | What to enter | Restrictions |
|---|---|---|
| The “Directory” section | ||
| Name * | A short name of the directory in lower case, like a domain name. | No more than 63 characters: Latin letters, digits, dots and hyphens. For LDAP users it is also part of the login: signing in as name@this-name. Must be unique among the directories. Error: “Use 1–63 lower-case letters, digits, dots and hyphens.” |
| Kind * | Active Directory or LDAP. | For AD the LDAP attribute fields are hidden and not used; for LDAP the UPN and NetBIOS suffixes are hidden. |
| Default directory | A switch: “A login without a domain is looked up here after the local users.” | Only one directory can be the default. If a login is entered without a domain, the gateway looks for it first among the local users, then in this directory. |
| Turned on | A switch: “When off, nobody signs in from this directory; open sessions continue.” | On by default. |
| The “Connection” section | ||
| Servers * | From one to eight servers: host or host:port, one per line (“tried in order”, that is, the gateway tries them in order). The default port is 636. | Only DNS names and IPv4 addresses are allowed (IPv6 in square brackets). Ports 389 and 3268 (plain LDAP) are forbidden: “Port 389 and 3268 are plain LDAP. Use LDAPS (636 or 3269).” Format error: “Give one to eight servers as host or host:port.” The prefix ldap:// is not accepted. The server name must match the name in its certificate. |
| Users base DN * | The root of the user search, for example OU=People,DC=pam,DC=example,DC=ge. | Must be a DN (up to 1024 characters). Error: “This is not a distinguished name.” |
| Groups base DN * | The root of the group search. | The same format. If nested groups lie outside this branch, use the domain root (see Limitations). |
| UPN suffixes | AD only. UPN suffixes separated by commas, for example pam.bursu.test. | Each suffix is a DNS name. Error: “A UPN suffix looks like pam.bursu.test.” Needed for signing in as name@suffix. A suffix cannot belong to two directories. |
| NetBIOS domain name | AD only. The short domain name, for example PAM. | Required for AD: up to 15 letters, digits and hyphens (“Active Directory needs its NetBIOS name: up to 15 letters, digits and hyphens.”). Allows signing in as NETBIOS\name. Unique among the directories. |
| Extra user filter | Optional. One LDAP filter in parentheses that limits who counts as a user, for example (!(employeeType=contractor)). | Error: “The filter must be one LDAP filter in parentheses.” |
| The “Service account” section | ||
| Bind DN * | The DN of the service account (or a UPN-like name that the directory accepts as a DN). | Must be a DN. Error: “This is not a distinguished name.” |
| Bind password * | The password of the service account. | Write-only: it is stored encrypted and is not shown anywhere again. No longer than 256 characters. Required at creation (“Enter the service account's password.”). When changing, an empty field keeps the previous password, but if you change the servers, the Bind DN or the kind of the directory, the password must be entered again. |
| The “LDAP attributes” section (for the LDAP kind only) | ||
| Login attribute | The login attribute. uid by default. | An attribute name starts with a letter and consists of letters, digits and hyphens (up to 64 characters). Error: “An attribute name starts with a letter and has letters, digits and hyphens.” Active Directory ignores these fields. |
| E-mail attribute | mail by default. | |
| Name attribute | cn by default. | |
| Identifier attribute | The unchangeable identifier of the entry. entryUUID by default. | |
| Member-of attribute | The “which groups it belongs to” attribute. memberOf by default. | |
| Member attribute | The “who belongs to the group” attribute. member by default. | |
| Create / Save, Cancel | Create or save. If another administrator has already changed the record: “The record was changed by another administrator — open it again.” If the suffix, NetBIOS name or name is already taken by another directory: Another directory already uses this UPN suffix, NetBIOS name or name. | |
(An asterisk marks required fields.)
If you change the list of servers, the confirmed root certificate is reset: the directory goes to the state “certificate not confirmed”, and it will have to be confirmed again, as at creation. Until that is done, sign-ins through the directory are rejected.
After Create the gateway opens the card with the message “Directory added.” “Directory added” is written to the log (the kind, the number of servers, the “default” flag); on a change, “Directory changed” is written with the list of changed fields, the certificate-reset flag and the password-change flag (the password itself does not go into the log).
The directory card
The address is /system/directories/{id}. In the heading: Edit and Delete (see Deleting and turning off). The blocks of the card:
- Connection: the kind, the servers, both DNs, the suffixes and NetBIOS (for AD), the default flag, the Bind DN, Turned on, State, Last change seen (when the directory last reported a change) and Gateway users from it (how many gateway users came from this directory).
- Root certificate: the confirmed root (the SHA-256 fingerprint or “Not confirmed yet”), the Check connection button, the root presented by the server, the Confirm this certificate button and the upload of a root file.
- Windows sign-in (Kerberos), for AD only (see Signing in with Windows).
- Group mappings (see Group mapping).

Actions on the card that change something (confirming and uploading a certificate, mappings, deleting, turning off) require re-confirmation (10 minutes); without it the gateway redirects you to the confirmation page and brings you back. The Check connection button and the group search do not require re-confirmation. Actions that contact the directory are limited: 10 presses a minute from one address, and the group search 20 a minute per session.
Checking the connection
The Check connection button changes nothing. It tries to sign in under the service account, run a user search and find out whether the server can report changes, and at the same time it reads the certificate that the server presents. The result is in the log entry “Directory connection checked”. Success looks like this: “Signed in as the service account; entries found: N.” and, below, “The directory reports changes.” (or “This directory does not report changes; access is re-checked at the next sign-in or connection.”). If it fails, one of the messages is shown (all of them are also listed in the chapter “Troubleshooting”):
| Message | What happened |
|---|---|
| The directory cannot be reached. | No server could be connected to, or there was no answer in the allotted time. |
| The certificate is not under the confirmed root. | The server presented a certificate that is not issued under the confirmed root or does not name this server. |
| No root certificate is confirmed yet: confirm the presented one or upload the root below. | The root is not yet confirmed: there is nothing to check against. |
| The directory refused the service account. | The Bind DN or the password is wrong, or the service account is locked. |
| The service account cannot search the users base. | Sign-in succeeded, but the search in the Users base DN branch failed (the branch does not exist or there is no read permission). |
| This Linux gateway was started without LDAPNOINIT=1, … | The problem is not in the directory but in the gateway's environment on Linux (see Linux and LDAPNOINIT). |
Confirming the root certificate
Until the root is confirmed, the gateway does not use the directory: it never trusts a server's certificate “on its word”. The root can be confirmed in two ways.
- Press “Check connection”. If the server sent a certificate chain together with the root, Presented root (the SHA-256 fingerprint) and Answered by (which server answered) appear under the result. Compare the fingerprint with a reference obtained through an independent channel (from the owner of the certificate authority) and press Confirm this certificate. The gateway reads the chain once more and saves the root only if it is the same one you saw and if the certificate of every configured server is built under it and names that server.
- Upload the root file. An Active Directory domain controller usually sends only its own certificate, without the root (“The directory did not send its root certificate. Upload it (.cer or .pem).”). Export the root certificate of the domain's certificate authority (DER or Base-64) and upload it in the Root certificate file field with the Upload button. Files
.cer,.crt,.pem,.derup to 64 KB are accepted, and only a self-signed certificate-authority certificate.
The result: “The certificate is confirmed.” and the log entry “Directory certificate confirmed”. Possible refusals:
| Message | Reason |
|---|---|
| This file is not a root CA certificate. | The file cannot be read, or it is not a self-signed certificate-authority certificate. |
| The directory now presents another certificate; check again. | While you were confirming, the server presented a different root. Repeat the check. |
| The certificate {0} presents is not issued under this root or does not name {0}. Nothing was stored. | The server's certificate is not issued under this root or does not name this server (the name in the SAN extension is checked; the CN is not used). A different root or a different server name in the settings is needed. |
| {0} cannot be reached. A root is checked against the certificate each server presents, so every server must answer. Nothing was stored. | The root is checked against the certificate of every server in the list; an unreachable server holds up the confirmation. |
| The directory presents a different root certificate than the confirmed one. | A warning: the server now presents a different root from the confirmed one. Either the root was changed on purpose (confirm the new one), or it is a substitution; find out before confirming. |
The confirmed root is the basis of trust: if you confirm someone else's, the gateway will start sending employees' passwords to someone else's server. Compare the fingerprint with the one given by the owner of the certificate authority.
Group mapping
The Group mappings block on the directory card: “A person in a mapped group signs in with the role and joins the gateway group given here. A person in no mapped group cannot sign in.” For each directory group you choose a role and/or a gateway group (one of them is enough: “Choose a role or a gateway group.”). The block is available only after the root is confirmed (“Confirm the root certificate first: until then the gateway does not search this directory.”).

- Find the group. In the Find a directory group field enter part of the name (up to 128 characters) and press Search. If there are no groups: “No group matches.” A group that is already mapped is marked already mapped. The group search returns a limited number of matches; refine the query.
- Choose what it gives. In the Role list: no role, User, Auditor, Approver or Administrator; in the Gateway group list: no group or one of the gateway groups.
- Press “Map”. The mapping is saved: “Mapping saved.” The gateway immediately reads the directory's people again: “what the mapping gives reaches them within seconds”. If the directory cannot be read at that moment: “Mapping saved. The directory cannot be read now: what the mapping no longer gives is already taken away; what it gives arrives once the directory can be read again.”
An existing mapping can be changed right in the table (the Role and Gateway group lists, the Save button) or deleted (Delete, with the confirmation “Remove the mapping of {0}?”). A change and a deletion are applied to all the directory's people at once: what the mapping has stopped giving is taken away immediately; what it gives arrives when the directory has been read.
How rights add up:
- A person gets the union of everything given by the group mappings of the groups they belong to (including nested groups).
- One directory group is mapped only once. A user's primary group (for example, Domain Users in AD) cannot be mapped: “A user's primary group (Domain Users) cannot be mapped: Active Directory does not list it as a membership.”
- Membership of a gateway group obtained from the directory is marked in the card as from the directory and is removed automatically together with the mapping. Manual membership (added by the administrator in the console) is not touched by the directory.
- Administrator and approver are incompatible (Roles). If the mappings give both roles at once, Administrator is granted and Approver is rejected. If the person already has Approver (and not Administrator), and the mappings now give both roles, Approver stays and Administrator is rejected. The rejected role is shown in the bell: Directory roles refused (Administrator wins over Approver): {0}. Note that the hint on the card (“A person whose groups give both Administrator and Approver gets Administrator only”) describes only the first case.
- A gateway group that a mapping refers to cannot be deleted until the mapping is removed (The group is used by a directory mapping. Remove the mapping first.).
Watching and reconciliation
- For each turned-on directory with a confirmed root, the gateway keeps a subscription to changes in the user and group branches (Active Directory notifications; for LDAP, syncrepl or persistent search). A change arrives within seconds. The state watched means the subscription is working.
- In addition, the gateway periodically reconciles all the directory's people again (at least once every 15 minutes), and also at every sign-in of a person and when their ticket for connecting to a server is checked.
- Disabling or deleting a person in the directory, their losing all mapped groups, or a password change in the directory ends their sessions and revokes their tokens. A lockout in the directory blocks new sign-ins but does not end sessions already in progress.
- If the directory is unavailable, the gateway does not “allow just in case”: access that is being taken away is taken away; access that is being granted waits until the directory can be read. If the directory is unavailable at sign-in, the person sees “The directory is not available. Try again later or contact the administrator.” Local users, including the emergency administrator, can always sign in.
Deleting and turning off a directory
The Delete button in the card heading asks: “Delete directory {0}?” It is visible only when nobody has yet signed in from this directory. If people have already signed in from the directory, it cannot be deleted: “Users signed in from this directory exist. Turn the directory off instead of deleting it.” Instead, the card has a Turn off button with the question “Turn off directory {0}? Its users cannot sign in until it is turned on again.” (after it: “Users signed in from this directory exist, so it cannot be deleted. It is turned off; turn it on again in its settings.”). The directory can be turned on in the change form (Turned on). “Directory deleted” or “Directory changed” is written to the log.
Signing in with Windows (Kerberos)
For Active Directory you can turn on the Sign in with Windows button on the sign-in page: an employee who has signed in to the domain gets into the console without entering a password (the gateway still asks for the second factor afterwards). The button appears on the sign-in page only if everything is ready for at least one turned-on AD directory (SPN, domain account or keytab, the check passed).
The Windows sign-in (Kerberos) block on the AD card shows whether sign-in is on, the SPN, the key version number (kvno) and the encryption types, and leads to the page /system/directories/{id}/kerberos (“Windows sign-in (Kerberos)”).

| Field | What to enter | Restrictions |
|---|---|---|
| Windows sign-in on | A switch. | Off by default. |
| Realm | The Kerberos realm: the domain's DNS name in capitals, for example PAM.EXAMPLE.GE. | Error: “A realm is the domain's DNS name in capitals, such as PAM.EXAMPLE.GE.” One realm cannot belong to two directories. |
| Service name (SPN) | HTTP/ and the full DNS name of the gateway, for example HTTP/pam.example.ge. | Only a name, never an IP address: “The SPN is HTTP/ followed by the gateway's full DNS name — never an address.” This is the same name that employees use to open the console. |
| Save | The button. | Re-confirmation is needed. While a keytab is loaded, the realm and the SPN cannot be changed: “Remove the keytab before changing the realm or the SPN.” |
Gateway on Linux: the key file (keytab)
On Linux the gateway needs a keytab file with the keys of the service name HTTP/…. The Keytab block shows Principal (the SPN and the realm), Key version (kvno), Encryption types, Uploaded (when and by whom) and, after a key replacement, “Previous key (kvno N) kept until” (the previous key stays for another 10 hours so that tickets already issued keep working). The buttons are Upload keytab (a field for choosing a .keytab file) and Remove keytab (with the confirmation “Remove the keytab of {0}? Windows sign-in through this directory stops.”). The file is stored encrypted on the gateway; its contents are not visible in the console.
How the administrator gets a keytab. The keys must be “salted” the way the domain controller salts them for the account that holds the SPN. For a user account the salt is REALM + sAMAccountName. Any of three ways (the gateway shows the same hint on the page):
- MIT ktutil (nothing needs to be changed in Active Directory):
Herektutil addent -password -p HTTP/<host>@<REALM> -k <kvno> -e aes256-cts-hmac-sha1-96 -s <REALM><account> addent -password -p HTTP/<host>@<REALM> -k <kvno> -e aes128-cts-hmac-sha1-96 -s <REALM><account> wkt gateway.keytab<kvno>is the value of the account'smsDS-KeyVersionNumber, and<account>is its sAMAccountName (without the domain). - msktutil. The utility works out the right salt and key version for the service account itself; see the utility's documentation for its parameters.
- ktpass with the parameters +setpass +setupn on the domain controller. Remember that ktpass sets a new password for the account and raises the key version, so other keytabs of that account stop working.
The keys of such a keytab are salted differently from the account's keys in the domain, and tickets cannot be decrypted with it. The Check Kerberos check will report: “The keytab's keys do not match the account. It was probably made with ktpass -setpass -setupn; make it again as the help shows.”
Requirements for the file: format version 0x0502 (written by ktpass and ktutil); at least one entry; all entries for this directory's realm and this directory's SPN; size up to 64 KB; AES keys only (RC4, DES and 3DES make the whole file rejected). If the file has only AES128, it is accepted with a warning (AES256 is recommended). After upload the gateway immediately tests the key with a trial ticket. The log: “Kerberos keytab changed” (without the key contents).
Gateway on Windows
On Windows no keytab is needed: the gateway service runs under a domain account (a gMSA is recommended), and the SPN is registered on it. Instead of the Keytab block, the page shows The service runs as (which account the service runs under) and Host joined to the domain (whether the computer is joined to the domain). For those who will sign in, the gateway computer must grant the right “Access this computer from the network”; if a Tier-0 group policy forbids it, signing in with Windows does not work for these people.
The “Check Kerberos” button
The Check Kerberos button starts a check and shows rows with a level (ok, info, warn, bad): whether the keytab and the environment are valid, who holds the SPN, whether the kvno values match, whether weak encryption types are allowed, whether delegation is enabled, whether the service account belongs to groups, whether a trial ticket with channel binding is accepted, whether port 88 of the controller is unreachable, whether the clocks drift (at a 3-minute drift there is a warning; at 5 minutes sign-in stops working). All the rows are listed in the chapter “Troubleshooting”. The check writes “Directory connection checked” to the log.
Additional hints on the page:
- Browsers send the ticket only to names that are in their policy: the “Local intranet” zone or
AuthServerAllowlistfor Edge and Chrome,network.negotiate-auth.trusted-urisfor Firefox. Set this up with a group policy. - Signing in with Windows requires the encrypted TLS connection to end at the gateway (end-to-end TCP pass-through only). If trusted proxies are specified in
gateway.json, the page warns about this. - The Channel binding for console sign-ins setting (Sign-in and MFA) determines whether channel binding is needed. The default value is required.
Linux and the LDAPNOINIT variable
On Linux the gateway must be started through its own systemd unit (bursu-pam-gateway.service): it sets LDAPNOINIT=1, without which sign-in through a directory does not work. The reason: without this variable the LDAP library reads the system file /etc/ldap/ldap.conf, which on Ubuntu points to the system set of certificate authorities; the gateway would then trust any public authority, not only the root you confirmed. So without the variable the gateway refuses to connect to directories (a safe refusal):
- domain sign-ins answer “The directory is not available…”;
- the bell shows the directory as “not watched” (Directories not watched);
- Check connection reports that
LDAPNOINIT=1is not set on the Linux gateway.
The solution: start the gateway with the systemd unit that the package installs. Local accounts, including the emergency administrator, can sign in regardless. On Windows nothing extra is needed: the root is checked by the gateway's own mechanism. Each directory has its own trust folder on disk, <dataDirectory>/directories/<id>/, which the gateway rewrites itself; do not put files there.
Known limitations of signing in through a directory
- Nested groups outside the group branch. Members of nested groups are found through the chain (AD
LDAP_MATCHING_RULE_IN_CHAIN). But if an intermediate group lies outside the Groups base DN branch, a change to it does not arrive as a notification and is applied at the next reconciliation (no later than 15 minutes) or at the next sign-in or ticket check. Keep such groups inside the group branch or specify the domain root. - LDAP without the ppolicy overlay. Without the
pwdChangedTimeattribute a password change in the directory is not detected: the person's old sessions are not closed, and an expired password looks like a wrong one. In both cases the gateway refuses rather than allows. On OpenLDAP and 389-DS, turn on ppolicy. - A lockout in the directory blocks new sign-ins and new tickets but does not end sessions already in progress (Windows behaves the same way with the sessions of a locked account); disabling does end them.
The “Settings” section: gateway settings
All the gateway settings are collected on one page, Settings (address /settings). It is the only side-menu item for everything the administrator configures on the gateway. The page is visible only to the administrator: the other roles have no Settings item. The hint on the page: “Everything an administrator configures on the gateway, in one place. Each tile opens its page; changes are audited as before.”
The page consists of tiles gathered into four groups. Each tile is a link to a settings page with a short caption. The pages themselves are still at the addresses /system/…: browser bookmarks and links from the bell work as before.

| Group | Tile | Caption on the tile | Address | Where it is described |
|---|---|---|---|---|
| Security | Sign-in and MFA | Two-factor sign-in, lockouts, password rules and idle time. | /system/auth | Sign-in and MFA |
| Directories | Active Directory and LDAP servers whose users sign in. | /system/directories | Directories | |
| Encryption key | The key that encrypts account secrets, and its mode. | /system/key | Encryption key | |
| Gateway SSH key | The host key SSH clients see when they connect. | /system/ssh | Gateway SSH key | |
| RDP file signing | The certificate that signs .rdp files. | /system/rdp-signing | RDP file signing | |
| Sessions and protocols | Sessions | Recording, idle time, banner, RDP limits and file transfers. | /system/sessions | Sessions |
| VNC | Limits, listener and video export for VNC sessions. | /system/vnc | VNC | |
| Databases | Pass lifetimes, limits and protections for database connections. | /system/databases | Databases | |
| Integrations | SIEM export | Send the audit log to a SIEM over syslog. | /system/siem | SIEM export |
| Notifications | E-mail and webhook alerts for requests and emergency use. | /system/notifications | Notifications | |
| System | Status | Certificate, address and trusted proxies (read only). | /system/status | Status |
| Licence | The licence in force, the server limit and activation. | /system/licence | Licence |
The gateway's address and port, the TLS certificate, the database connection, the trusted proxies and the display time zone are set in the file gateway.json and take effect after the service is restarted (gateway.json, Certificate, Network). On the Status page they are only shown.
General rules for the settings pages:
- Every settings record goes into the audit log together with the old and new value.
- Settings that lower protection (for example, turning off two-factor sign-in) require re-confirmation of identity (re-confirmation). Strengthening protection does not require confirmation.
- If another administrator managed to save the same page before you, the gateway writes nothing and reports: “The record was changed by another administrator — open it again.” Open the page again and repeat the change.
- Before you leave a page with unsaved edits, the browser warns about losing the changes.
Sign-in and MFA: sign-in and two-factor protection
The Sign-in and MFA page (address /system/auth, administrator only) sets the console sign-in rules for everyone: whether a TOTP code is mandatory, the lockout after failed attempts, the password length, the idle time, the lifetime of BURSUcm tokens, the text on the sign-in page, the watermark and the Windows sign-in options. The hint at the top of the page: “Every change goes into the audit log with the old and the new value.”

All fields are saved with one Save button and take effect at once (except for sign-ins already in progress at their intermediate steps). The Reset button puts back in the form the values it had when you opened it. After saving, the page shows “Saved.”.
| Field | What to enter and what it does | Default / limits |
|---|---|---|
| The “Two-factor sign-in” block | ||
| Require TOTP (switch “For every user”) | When on, everyone must set up one-time TOTP codes at their first sign-in. Hint: “Without it a user may skip setting up TOTP at the first sign-in.” When off, a person can skip the TOTP setup and sign in with the password alone until they turn it on themselves. | On. Turning it off lowers everyone's security: “Turning this off lowers the security of every user, so you are asked to confirm who you are first.” Needs a fresh confirmation. It does not affect Windows sign-in: the second factor is always required after it. |
| The “Lockout” block | ||
| Failed attempts before a lockout | How many failed attempts in a row (a wrong password, a wrong TOTP code, a wrong password at a fresh confirmation) lock the account. Warning: “More attempts or a shorter lockout make guessing passwords easier.” | 5. A whole number from 3 to 100. Raising it lowers security and needs a fresh confirmation. |
| Lockout length, min | For how many minutes the account is locked. An administrator can lift the lockout earlier (the user card). | 15. A whole number from 1 to 1440. Lowering it lowers security and needs a fresh confirmation. |
| The “Passwords and sessions” block | ||
| Minimum password length | The minimum length of a password that a person sets for themselves and that an administrator sets when creating or resetting an account. Hint: “Never less than 12.” It applies to new passwords; existing passwords are not checked. | 12. A whole number from 12 to 128. Lowering it lowers security and needs a fresh confirmation. |
| Console idle time before sign-out, min | How many minutes without activity a person stays in the console. Hint: “A console session ends after 12 h in any case; then a new sign-in is needed.” (the gateway fills in the number of hours). The absolute limit of twelve hours cannot be changed. | 30. A whole number from 5 to 720. Raising it lowers security and needs a fresh confirmation. |
| BURSUcm token lifetime, h | The lifetime of the token that BURSUcm receives when a person signs in to the gateway (how many hours the client works without a new sign-in). | 8. A whole number from 1 to 168. Raising it lowers security and needs a fresh confirmation. |
| The “Windows sign-in (Kerberos)” block | ||
| One code covers Windows sign-ins for (hours) | After a Windows sign-in the gateway asks for a TOTP code. If the value here is not 0, the gateway remembers the device and does not ask for the code during that time. Hint: “0 asks the code every time; at most 24 (NIST SP 800-63B). Lowering it shortens every remembered device at once.” | 1. A whole number from 0 to 24. Raising it lowers security and needs a fresh confirmation. |
| Channel binding for console sign-ins | A list of two values: Required (recommended) and When the browser sends it. Channel binding protects against a Kerberos ticket being relayed to a third party. Hint: ““When the browser sends it” lets Chrome and Firefox on Linux and macOS sign in with Windows, but gives up relay protection for them; each such sign-in is audited. BURSUcm always binds.” | Required (recommended). Switching to When the browser sends it lowers security and needs a fresh confirmation. |
| The “Sign-in page and watermark” block | ||
| Banner text | The text shown above the sign-in form (for example, a liability warning). Hint: “Shown above the sign-in form. Empty means no banner.” | Empty (no banner). Up to 2000 characters, without control characters; otherwise: “The banner is up to 2000 characters, without control characters.” No confirmation needed. In the log, a text longer than 200 characters is recorded as a fingerprint and a length. |
| Watermark (switch “Show “login (Name)” over the console”) | A diagonal inscription with the person's login and name over the whole console. Hint: “The diagonal text makes it hard to photograph the screen anonymously.” | On. Turning it off lowers security and needs a fresh confirmation. |
| Save, Reset | Save all the fields in one operation, or put back the values in the form. | |
Which changes need a fresh confirmation
A change that lowers security cannot be made on a stolen session alone. If you try to lower security without a recent confirmation of your identity (10 minutes), the page is not saved and next to each such field the message “Confirm who you are before this change: …. It lowers sign-in protection.” is shown (for turning TOTP off: “Confirm who you are before turning two-factor sign-in off.”) with the link Confirm who I am. Go through the confirmation and come back to the page; you will have to enter the values again.
- These need confirmation: turning off Require TOTP, raising the number of attempts, shortening the lockout, lowering the minimum password length, raising the idle time, raising the token lifetime, turning off the watermark, raising the time a Windows code is “remembered”, switching to When the browser sends it.
- These do not: any tightening, and changing the banner text.
Five wrong TOTP codes in a row (this number cannot be configured) interrupt the sign-in, and the person sees “Too many wrong codes. Sign in again.”, even if the lockout by the number of attempts has also taken effect. More in the section “Lockouts and limits”.
Encryption key: the encryption key
The gateway stores the passwords and keys of server accounts (the Accounts section) in encrypted form. The encryption key is the gateway's “master” key. The Encryption key page (address /system/key, administrator only) shows its state and lets you change the key itself or the way it is protected. Hint: “The key the gateway encrypts account secrets with. Changing the key or its mode needs a fresh confirmation and a typed word.”
The first creation of the key and the mode are chosen during the initial setup (Initial setup); entering the passphrase at every start is described in the section “Unseal”.
Two modes of key protection
| Mode | How it works | When to choose it |
|---|---|---|
| Protected by the OS | The caption on the page: “DPAPI (Windows) / service file permissions (Linux)”. The key is stored in a file in the key directory and protected by the operating system: on Windows through DPAPI, on Linux by the file's permissions. The gateway opens the key itself at start. | When the gateway must start without a person (after a server restart, at night). Anyone who gets access to the server's files under the service account gets the key too. |
| Sealed | The caption: “Every restart needs the unseal passphrase”. The key in the file is encrypted with a passphrase that is not stored anywhere on the server. After every start the gateway is “closed” (locked), and nobody can connect to the servers until an administrator enters the phrase on the unseal page. | When you also need protection against someone who has copied the server's files. The price: after any restart the gateway is unavailable until a person enters the phrase. |
The passphrase is not stored anywhere on the server, and the gateway shows the recovery key once. If both the phrase and the recovery key are lost, the encrypted secrets cannot be read. Keep the recovery key apart from the server (for example, in a safe, on paper).
What the page shows

| Row | What it shows |
|---|---|
| Mode | Protected by the OS or Sealed and an explanation of the mode. |
| State | unsealed — the key is open, the gateway works; locked — the gateway is closed, an unseal is needed. |
| Created | When the key was created. |
| Last change | When and by whom the key was last changed. |
| Recovery key | present (with a date) or missing. If it is “missing”, change the key to get a new recovery key. |
| Key directory | The path to the directory where the key files are on the server. |
| Encrypted secrets | How many secrets are encrypted with this key. |
| Actions | The buttons Change the key (“A new key, secrets re-encrypted, a new recovery key shown once”) and Change the mode (“OS ↔ passphrase. Needs the recovery key”). Below them: “If the recovery key is lost, make a new one by changing the key — while the gateway runs.” |
Additional messages on the page:
- The red box “The encryption key was changed, and this gateway still holds the previous one in memory. Restart the gateway (a sealed gateway will need its passphrase).” — in place of the action buttons. Until the service is restarted, writing new secrets does not work. Restart the service and check the audit log.
- The warning “These key files were set aside in the key directory. One may be the old key from before a change: delete it once you are sure it is not another database's key.” with a list of files and the explanation “The console cannot remove them: an administrator of the server's operating system can archive or delete them.” Old key files are set aside after a change, not deleted: you must delete them by hand on the server, after making sure the file is not needed.
Changing the key (Change the key)
The page /system/key/rotate (“Change the encryption key”). It needs a fresh confirmation (10 minutes) and a typed word. The operation is limited to 5 times a minute.

The “What happens” block lists the consequences:
- “The gateway makes a new key and re-encrypts all N secrets with it.”
- “The old recovery key stops working; the new one is shown once.”
- “Connections are not accepted during the change (seconds).”
- “The change goes into the audit log.”
- Open the form. On the Encryption key page, click Change the key. If the gateway is in Sealed mode, the form has the field Current unseal passphrase.
- Enter the details. For Sealed mode, the current passphrase. Then type the confirmation word in the field “Type … to continue” — it is shown in the field's caption. The word depends on the interface language: in English it is
CHANGE, in RussianСМЕНИТЬ. Type it exactly, in capital letters and in the language shown on the page; spaces at the edges are ignored. - Click “Change the key”. The gateway creates a new key, re-encrypts all the secrets and shows the New recovery key block with the warning “The key is shown once. The old recovery key no longer works.”
- Save the new recovery key. The Download .txt button downloads the file
bursu-pam-recovery-key.txt; the Print button prints the key. Keep it apart from the server. - Tick “I have saved the new key” and click “Done”. Without the tick the gateway does not go on: “Tick “I have saved it” first.” Result: “The encryption key is changed.”
The recovery key is shown once. If you closed the page without saving it, change the key again: that gives you a new recovery key. The message “The key was already changed after this page was opened. If the new recovery key was not saved, change the key again to get a new one.” appears if the key has already been changed in another tab or by another administrator.
| Message | What to do |
|---|---|
| Type CHANGE to continue. | The word was not typed, or was typed wrongly. The message names the required word; it depends on the interface language (CHANGE in English, СМЕНИТЬ in Russian). |
| The unseal passphrase did not match. | The current passphrase was entered wrongly. |
| The encryption key is not available. | The key is not open at this moment. Open the unseal page. |
| The outcome of the key change is unknown — check the audit log and the key state; do not repeat the change until you are sure. | The database did not confirm that the operation finished. Do not repeat the change. Open the audit log and the key page; then restart the service (see below). |
Changing the mode (Change the mode)
The page /system/key/mode. The mode switches between Protected by the OS and Sealed. It needs a fresh confirmation, the recovery key and a typed word; no more than 5 times a minute. The target mode is determined by the current one: from the OS mode the page leads to Sealed (Switch to sealed mode), from Sealed to the OS mode (Switch to OS-protected mode).

| Field | What to enter | Limits |
|---|---|---|
| Recovery key | The recovery key issued when the key was created or last changed. | Wrong: “The recovery key did not match.” Every wrong entry is written to the audit log as a failure. |
| Passphrase (only when switching to Sealed) | The new passphrase. | At least 12 characters (otherwise “The passphrase must be at least 12 characters long.”). This value does not depend on the Minimum password length setting. |
| Repeat the passphrase (only when switching to Sealed) | The same phrase again. | Otherwise “The passphrases do not match.” |
| The word “Type CHANGE MODE to continue” | Type the word shown in the field's caption: CHANGE MODE in the English interface, СМЕНИТЬ РЕЖИМ in the Russian one. | Otherwise “Type CHANGE MODE to continue.” (with the right word for your interface language). |
| Change the mode, Cancel | Carry out the change or go back. | |
The texts on the pages: when switching to Sealed, “After this every restart of the gateway needs the passphrase you set here; until then nothing can connect.”; when switching to the OS mode, “After this the gateway opens the key at start by itself; the passphrase is no longer used.” Result: “The key is now sealed. Keep the passphrase safe: every restart needs it.” or “The key is now protected by the OS.”
If key files that could not be removed are left after the mode change, the page lists them: “These key files hold the key without the passphrase and could not be deleted; delete them by hand:” (after switching to Sealed) or “The key file could not be written: after a restart the gateway will ask for the recovery key. Check the key directory's permissions:” (after switching to the OS mode). In the first case, delete the listed files by hand on the server; in the second, check the permissions on the key directory.
If the key's mode changed while the page was open, the gateway does nothing and writes: “The mode of the key changed after this page was opened, so nothing was done. Open the page again and check the current mode.”
If the outcome of a change is unknown
If the database did not confirm that the operation finished, the page writes: “The outcome of the key change is unknown — check the audit log and the key state; do not repeat the change until you are sure.” An explanation follows: “If the change did happen, the key held in the gateway's memory is out of date: restart the gateway (a sealed gateway then needs its passphrase) and check the key's state on the encryption key page and in the audit log.” The buttons on the page lead to Encryption key and to the audit log (Audit log). Do not repeat the change until you have made sure from the log that it did not go through.
Status: the state of the gateway
The Status page (address /system/status, administrator only) only shows the state of the gateway and changes nothing. Hint: “Read only. The certificate, the address and the trusted proxies are changed in gateway.json, then the service is restarted.” At the top is the path to the working configuration file: “Changed in gateway.json (… on this system), then a restart of the service. There is no certificate upload through the console in the first version.” Replacing the certificate is in the section “Certificate”.

The “Gateway” block
| Row | What it shows |
|---|---|
| Version | The gateway version. |
| Running | How long the gateway has been running: “N d N h N min”, and the start time (“since …”). |
| Listens on | The address and port on which the gateway accepts the console (from gateway.json). |
| Database | The host, port and name of the database (without user and password), the PostgreSQL version and the state: connected, unreachable or unknown (the database did not answer within 5 seconds). |
Further down in the same block come the check rows. Each has a colour: green is fine, yellow is attention, red is a fault, grey is off. The same checks are visible in the bell (The bell). Only the rows that relate to what is configured are shown:
| Row | What it means |
|---|---|
| Encryption key | “protected by the OS” or “unsealed, sealed mode” — fine; “locked — the gateway is sealed” — red (an unseal is needed); a message that the key in memory is out of date — red (restart the service, Encryption key). |
| SIEM export | “not set up” — grey; “queue N · last delivery …” — fine; red if delivery fails (SIEM export). |
| Last chain check | The last integrity check of the log: “intact: No. 1–N · time” — fine; “break at event No. N” — red; “not checked yet” — yellow; “the last check could not run” — red (Integrity check). |
| Clock | “skew N s against the database”. A difference between the gateway's clock and the database's of up to 2 seconds is fine, more is red. Correct the time on the server. |
| Disk | “N % free”. At least 10 % free is fine, less is red. “free space unknown” — yellow. |
| Session recording | “Recording works” or “Recording fails: new sessions are refused until there is room.” (Sessions). |
| RDP file signing | The state of the certificate that signs .rdp files; a warning 30 days before it ends (RDP file signing). |
| File copies | Shown if in the last hour a copy of a transferred file could not be saved (the cause is no space or a copy error). Details are in the file transfer log. |
| Database access | Shown if access to databases is configured: “Listening: …” — fine; “Not listening: …. See the service log.” — red (Databases). |
| VNC | The state of the VNC listener, if it is configured (VNC). |
| Licence | One or more rows about the licence: “active until …; N of M servers active”, “trial until …”, “ends on …” and others. If there is no licence, the gateway serves nothing. All the states are described in the section “Licence”. |
The “Certificate” block
| Row | What it shows |
|---|---|
| Subject | Who the gateway certificate was issued to. |
| Issuer | Who issued it. |
| Valid until | The end date and the time left: “N days left” (green); yellow if no more than 30 days are left; expired — red. The term is changed by replacing the certificate (Certificate). |
| SHA-256 fingerprint | The certificate's fingerprint. Compare it with what the browser shows, and give it to clients that pin the certificate. |
| Trusted proxies | The addresses of the reverse proxies the gateway trusts (none if there are none). |
| Client address | Where the gateway takes the client's address from: “from the connection itself (no proxy is trusted)” or “from X-Forwarded-For, only from the trusted proxies”. The addresses in the audit log and the limits on the number of attempts depend on it (Network). |
Servers
A server in BURSU PAM is a machine or device that people connect to through the gateway: a Linux server over SSH, a Windows server over RDP, network equipment over Telnet or SSH, a desktop over VNC, a PostgreSQL, MySQL or SQL Server database. For each server the gateway stores the address, port, protocol, folder and the verified “fingerprint” of the server (a host key or a certificate). The logins and passwords the gateway uses to sign in to the server are stored separately — those are the accounts.
You work with servers in the console, in the menu group Resources, item Servers (address /servers). Only an Administrator sees and changes the page. An auditor (Auditor) is not shown these pages; they see only the device profiles.
A server must accept connections from the gateway only
The gateway records sessions and injects the password itself: a person does not have to know the server's password. But if the server still accepts connections from workstations, anyone who learns the password (an old one, one that was spied on, one written on paper) will sign in directly, bypassing the gateway — with no recording, no access rules, no audit. So on every target server (or on the firewall in front of it) allow incoming connections on the required port (22, 3389, 5900, 5432, 3306, 1433 and so on) only from the gateway's address and deny them from all other addresses.
The gateway cannot do this for you: the firewall rule is configured in your network. The console checks that the server is reachable from the gateway's side (the Test the connection button), but it does not check whether the server is closed to everyone else. Check this yourself: from an ordinary workstation, a connection to the target server must fail.
For Telnet this is especially important: Telnet sends everything, including the password, in clear text. Use it only on a management network that only the gateway reaches (see Telnet).
The server list and folders
The Servers page is divided into two parts. On the left is the folder tree (Folders): the row All servers and your folders with the number of servers in each. On the right is the table of servers of the selected folder; above the table are the folder's path and the note with subfolders: when you select a folder, you also see the servers of the nested folders.

| Element | What it does |
|---|---|
| Create server | Opens the new-server form (/servers/new). When a folder is selected, the new server is offered to be put in it. |
| The search field (Name, address, description) | Searches by name, address and description. |
| The All protocols list and the Apply button | Keeps the servers of one protocol: SSH, Telnet, RDP, VNC, PostgreSQL, MySQL or SQL Server. |
| The columns Name, Address:port, Protocol, Folder, Accounts, Rules | The server's name (a link to the card), address and port, protocol, folder, the number of accounts (a link to the accounts tab) and the number of rules that cover it. You can sort by name, address, folder, number of accounts and number of rules. |
| The label inactive | The server is switched off: no rule reaches it, and no one can connect. |
| The labels Not encrypted to the server, Weak sign-in allowed, Unencrypted | Warnings about weakened protection of the link between the gateway and the server: Telnet; weak sign-in to a database; a database without encryption. |
| The Edit button in a row | Opens the server edit form. |
| The tick boxes in the rows and the action bar above the table | Group actions: Move to folder (choose a folder in the Folder list and confirm) and Delete. Before deleting, the console asks: Delete the selected servers (N)? Their accounts and secrets are deleted with them. |
When a folder has no servers, the console says that servers are the machines you connect to through the gateway, and offers to create the first server or to move existing ones with the Move to folder command.
Folders
Folders exist so that you can give access to a whole group of servers at once: a rule on a folder covers its subfolders and the servers you add later. Folders form a tree of any depth.
The Folder actions menu (three dots above the tree) creates a top-level folder (New folder). The menu on a folder's row (Actions for the folder …) contains:
| Action | What it does |
|---|---|
| New subfolder | Creates a nested folder. The Folder name field: up to 128 characters, without the character “/”. The Put it in field shows the parent. |
| Rename | Changes the name. Rules that refer to the folder do not change. |
| Move | Moves the folder into another one (the Put it in field). The console's hint: Rules on the new parent then cover this folder too. That is, after the move the rules of the new parent start to apply to the folder. A folder cannot be moved into itself or into its own subfolder (A folder cannot be moved into itself or into one of its subfolders.). |
| Delete | Deletes only an empty folder. The console reminds you: Only an empty folder can be deleted. Rules that name it lose it. If the folder contains servers or subfolders, it is refused: Only an empty folder can be deleted: move or delete its servers and subfolders first. |
Every folder action is written to the audit log (folder.create, folder.rename, folder.move, folder.delete), and a move and a deletion also make the gateway check the rights of open sessions again.
Creating a server: the common fields
The Create server button opens the form /servers/new. The edit form (/servers/<id>/edit) is the same. It has two sections: Main and State. Some fields appear only for certain protocols — the rest are hidden.
| Field | What to enter | Default / limits |
|---|---|---|
| Name | The server's name. Administrators see it; users type it in the sign-in name (login:server_name). | Required. 1–64 characters: Latin letters, digits, dot, underscore, hyphen. The name must be unique, letter case is ignored (Web1 and web1 are one name): otherwise This name is already taken. |
| Address | The name or IP address at which the gateway reaches the server (the hint in the field: 10.20.0.11 or web-01.example.ge). | Required. Up to 253 characters, without spaces and invisible characters, not starting with “-”. |
| Protocol | A list: SSH, Telnet, RDP, VNC, PostgreSQL, MySQL, SQL Server. | SSH. After the protocol is changed, the Port field takes the new protocol's port by itself, if it still held the previous default port. |
| Port | The server's port. | A number 1–65535. Default ports: SSH 22, Telnet 23, RDP 3389, VNC 5900, PostgreSQL 5432, MySQL 3306, SQL Server 1433. |
| Device profile | The device profile (SSH and Telnet only). See Device profiles. | Required for Telnet (the item “None — a regular server” is removed). For SSH it is needed only if privileged mode is turned on for the server's accounts. |
| Terminal character set | SSH and Telnet only. How command control reads non-ASCII text in the terminal: Automatic (from the client) (by the LANG / LC_* variables the client passed), UTF-8 (Unicode) or C / single-byte. | Automatic (from the client). If the client does not pass the encoding (Windows OpenSSH, PuTTY), each line with such text is judged only by the keys typed. Choosing UTF-8 (Unicode) (and going back from C / single-byte to Automatic) weakens command control, so it needs a fresh confirmation of identity. |
| Folder | The server's folder. Hint: Rules on this folder and the folders above it cover the server. | No folder (top level) if none is selected. |
| Description | Free text. | Up to 1000 characters. |
| Active (the State section) | A switch. Hint: An inactive server is in no rule's reach. | On. For RDP, for VNC with a TLS sign-in and for databases with TLS, a new server is nevertheless created switched off until the certificate is confirmed (see below). |
The form buttons: Create (when editing, Save), Reset (put back the values the form opened with), Cancel.
Some settings weaken protection (Telnet, NTLM for RDP, weak VNC sign-in types, weak or unencrypted sign-in to a database, the UTF-8 terminal encoding). For each you need to tick an acknowledgement box, and then the console redirects you to the page for re-entering your password and code (Confirm who I am, valid for 10 minutes). After the confirmation you return to the form: all the fields are restored except the acknowledgement boxes — you have to tick them again.

An SSH server
This is the main case: Linux, Unix, macOS, and also network equipment with SSH. The fields are the common ones (see above); SSH has no separate fields except the optional Device profile. Choose a device profile only if the server's accounts need privileged mode (the enable command and so on): then you need a built-in network device profile.
What the target SSH server must support. The gateway connects to targets with this set of algorithms (the list is fixed in the gateway and cannot be configured):
- the server's host key: ECDSA nistp256 / nistp384 / nistp521, RSA with SHA-512 or SHA-256 (
rsa-sha2-512,rsa-sha2-256). The gateway does not accept an Ed25519 key: a server that has only an Ed25519 host key cannot be verified by the gateway; - key exchange: ECDH nistp384 / nistp256, Diffie-Hellman group16-sha512 / group14-sha256;
- ciphers: AES-256-GCM and AES-256-CTR; MACs HMAC-SHA2-256 and HMAC-SHA2-512; no compression.
While it works, the gateway keeps one connection to the server per session. Until the host key is confirmed, sessions to this server are not opened: the server's page says Not confirmed — sessions are refused until it is.
Getting and confirming the host key is described in detail in the subsection The SSH host key. Sign-ins by password and by private key for accounts are described in the section Accounts.
A Telnet server
Telnet sends everything, including the password, in clear text between the gateway and the server. The console warns exactly this: Telnet sends everything, the password included, in clear text between the gateway and the server. Use it only on a management network that only the gateway reaches. The user, however, connects to the gateway over SSH, and their session is protected; only the gateway — server leg stays open.
For a Telnet server:
- a Device profile is required: it describes how the gateway recognises the device's prompts and enters the login and password (see Device profiles). If no profile is chosen: A Telnet server needs a device profile. When you choose Telnet, the console fills in the default profile (Generic Unix) itself;
- accounts sign in with a password only. If the server already has accounts with a private key, it cannot be switched to Telnet: This server has key accounts; a Telnet server signs in with a password only. Delete them first.;
- Telnet has no server identity, so there is no host key and nothing to confirm (Not checked — Telnet has none);
- to create it you must tick the box The password crosses the network between the gateway and this server in clear text and confirm your identity. If the box is not ticked: Tick the acknowledgement to use Telnet. If there is no identity confirmation: Confirm who you are before making this server use Telnet. Saving an already existing Telnet server does not require this again.
In the list and on the card a Telnet server carries the label Not encrypted to the server.
An RDP server
The gateway opens an RDP session on the server on behalf of an account with a password, and the user connects to the gateway with their own RDP client (the .rdp file can be downloaded on the page “My access”, see My access).
The separate fields of the form:
| Field | What to enter | Default / limits |
|---|---|---|
| Allow NTLM on the target leg (from the gateway to this server) | A switch. In this version the gateway connects to every RDP server with NTLM authentication (Kerberos and other methods are not used). NTLM is considered weak authentication, so the permission is given separately for each server. The console: In this version the gateway reaches every RDP server with NTLM, which is a weak authentication (MD4, HMAC-MD5, RC4). Until NTLM is allowed here, the server cannot be checked or connected to. The switch is per server and off by default. | Off. While it is off, the server can neither be checked nor connected to. |
| I understand that NTLM is weak authentication and accept it for this server. | The acknowledgement box. | Without it NTLM switched on cannot be saved: Tick the acknowledgement to allow NTLM on this server. Without a fresh confirmation of identity: Confirm who you are before allowing NTLM on this server. |
More conditions:
- the accounts of an RDP server sign in with a password only. If there are accounts with a key: This server has key accounts; an RDP server signs in with a password only. Delete them first.;
- an RDP server is created switched off until its certificate is confirmed: the console reminds you Saved, but the server is inactive: confirm the RDP server's certificate.;
- RDP with TLS must work on the target: the gateway uses TLS/CredSSP (NLA) protection; the gateway does not use the “standard” RDP protection (without TLS). If the server offers only that, the check will say: The server offers no TLS: only the old RDP security, which the gateway does not use.
Confirming the certificate and how the buttons work are described in the subsection Certificates and fingerprints. What exactly an RDP session is allowed (drives, clipboard, printers, USB, sound) is set by the rules and the page File, clipboard and device policy.

A VNC server
For VNC you must choose on the form how the gateway signs in to the server (the Sign-in to the server field). There is no default: a person makes the choice. Six options:
| Option on the form | What it is | Protection |
|---|---|---|
| TLS, user name and password | The server asks for a name and password inside TLS (TigerVNC with PAM). | There is encryption. A certificate is needed: the server is inactive until it is confirmed. |
| TLS, VNC password | The server asks for a VNC password inside TLS. Only the first 8 characters of the password are significant. | There is encryption. A certificate is needed. |
| TLS, no sign-in | TLS up to the server, but the server checks no one. | A weak type. The console requires acknowledgement: Anyone who reaches this server's port sees its desktop. |
| VNC password (not encrypted) | The classic VNC password (challenge-response) over an unencrypted connection. The first 8 characters are significant. | A weak type without encryption: The screen, keyboard and password cross the network between the gateway and this server unprotected. |
| Mac user name and password (not encrypted) | Apple sign-in (type 30) over an unencrypted connection; for a Mac over plain RFB. | A weak type without encryption. |
| No sign-in (not encrypted) | Neither a check nor encryption. | A weak type without encryption. |
For the four weak types (rows 3–6 of the table) a box I understand and accept this appears on the form, together with a text about the specific danger. Without the box: Tick the box to accept the weak connection to this server. Without a fresh confirmation of identity: Confirm who you are before making this server use a weak connection. If you choose another type, the box is cleared.
You need to know three things exactly:
- the accounts of a VNC server sign in with a password only; keys are not supported (This server has key accounts; a VNC server signs in with a password only. Delete them first.). For the types “TLS, no sign-in” and “No sign-in (not encrypted)” the account is created without a password (the account type No sign-in);
- if you change the sign-in type and the existing accounts do not suit it: An account of this server does not fit the new sign-in type. Change or delete it first.;
- a VNC server with any TLS type is created switched off: A VNC server with a TLS sign-in type stays inactive until its certificate is confirmed after saving.
A user's connection to the gateway over VNC works differently: the client signs in with a one-time code from the console or from BURSUcm (the section Connecting over VNC).

Database servers: PostgreSQL, MySQL, SQL Server
For databases the gateway acts as a proxy: the user connects with their own client (psql, DBeaver, SSMS and so on) to the gateway and enters a “pass” instead of a password. The gateway itself signs in to the database with the server account. It signs in only with an SQL login and password; Windows sign-in (SSPI), Entra ID and certificate sign-in are not supported.
In the list of protocols the database is called PostgreSQL, MySQL or SQL Server. There is no separate item for MariaDB: a MariaDB server that speaks the MySQL protocol is chosen as MySQL.
| Field | For which databases | What to enter | Default / limits |
|---|---|---|---|
| Default database | All three | The database to connect to if the client names none. Hint: Used when the client names none (PostgreSQL needs it). | Required for PostgreSQL: A PostgreSQL server needs a default database. Up to 128 characters, without control characters: A default database is at most 128 characters, without control characters. |
| Encryption towards the server | SQL Server | A list: Mandatory (encryption is required) or Strict (TDS 8.0, TLS from the very start). | Mandatory. |
| Allow weak sign-in to this server (md5, cleartext over TLS, mysql_native_password) | PostgreSQL, MySQL | Allows the gateway to sign in to the server in a weak way, if the server offers no other. SQL Server has no weak sign-in: SQL Server has no weak sign-in to allow. | Off. The box I understand that the server's own sign-in is weaker than SCRAM or caching_sha2. is needed (Tick the acknowledgement to allow a weak sign-in.) and a confirmation of identity (Confirm who you are before allowing a weak sign-in to this server.). |
| Allow an unencrypted connection to this server | PostgreSQL only | Allows the gateway to connect to the server without encryption. The other databases cannot be connected like this: Only a PostgreSQL server can be reached without encryption. | Off. The box I understand that statements and results cross the network between the gateway and this server unencrypted. Only SCRAM is ever sent. is needed (Tick the acknowledgement to allow an unencrypted connection.) and a confirmation of identity (Confirm who you are before allowing an unencrypted connection to this server.). |
What matters:
- the gateway always encrypts the connection to the database (TLS) and checks the “fingerprint” of the database certificate's key (SPKI SHA-256). Until the fingerprint is confirmed, the server is inactive: A database server stays inactive until its certificate is confirmed. The exception is PostgreSQL with “Allow an unencrypted connection” on: there is no certificate and nothing to confirm;
- database accounts sign in with a password only: This server has key accounts; a database server signs in with a password only. Delete them first.;
- for “read only” access, create a user with minimal rights on the database itself and add it as a separate server account. The server card tells you how (for PostgreSQL: a role with only CONNECT and SELECT; for MySQL: SELECT on the schema; for SQL Server: a login with the role
db_datareader); - the person's login, the server name and the account name together make up the user name for the client. If it is too long for the database protocol, a pass cannot be issued: The person's login, the server and the account together are too long for this database protocol. Shorten the server or account name.

The server card
Clicking a server's name opens the card (/servers/<id>). In the header are the buttons Edit and Delete; for a switched-off server there is a state label beside them. The tabs:
| Tab | What it shows |
|---|---|
| Main | Two blocks. Details: the protocol, address and port, folder, description, the device profile (SSH/Telnet), for databases the default database and encryption, the “server identity” (a host key or a certificate), the creation date and the weakened-protection labels. Quick actions: the Active switch (hint: An inactive server is in no rule's reach), moving to another folder (hint: Moving it changes which folder rules cover it) and the connection check Test the connection. |
| Accounts | The accounts of this server (Login, Secret type, Secret), the Add account button, a note that secrets are write-only. See Accounts. |
| Who can reach it | Who can connect to the server: people, the way (How: directly or through a group) and the rule (Rule), taking into account current rules, future rules and rules on the folders above. If there is no one: Nobody can reach this server. For a switched-off server: The server is inactive: nobody can reach it until it is switched on. |
| Log | The latest audit events for this server. |
Deleting a server (Delete) asks for confirmation: Delete the server … and its N accounts with their secrets? Rules that name it directly stop leading to it. The accounts and their secrets are deleted together with the server, rules that named the server directly stop leading to it (a rule is left with “Nowhere” if nothing else is chosen). Open sessions to this server end at once.

The SSH host key: how to get it, confirm it and what changes
The host key is the SSH server's “passport”. The gateway remembers it at first contact (the “trust on first use” method, TOFU) and then, at every connection, checks that the server presents the same key. If the key changes (the server was replaced or reinstalled), the gateway refuses to connect, and the account's secret is not sent to such a server.
- Open the server card. Until the key is confirmed, the Host key block says Not confirmed — sessions are refused until it is, and in the server list the name carries the label Key not confirmed.
- Click “Test the connection”. The gateway connects to the server's address and port (for no longer than 20 seconds), reads the key presented and shows the Connection check block with the fingerprint in the row Presented host key. If you chose an account in the Sign in as list, the gateway will try to sign in; the option Key only, no sign-in means “only read the key”. The sign-in is made only against an already confirmed key — otherwise the gateway does not send the password: Confirm the key first; the sign-in is tested against a confirmed key only.
- Compare the fingerprint. The console hints: Before confirming, compare it with ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub on the server itself. That is, on the server itself run
ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub(for RSA,ssh_host_rsa_key.pub) and compare theSHA256:…line with the one the console shows. The gateway prefers an ECDSA key; if the server has none, an RSA key is shown — then compare withssh_host_rsa_key.pub. Always compare with the key of the same type that the gateway showed. - Click “Confirm this key”. The gateway connects to the server again and saves the key only if the server presents exactly that one. If in the meantime the server showed another key: The server now presents another key than the one you checked. Check again. After success: Host key confirmed. Confirming an SSH key does not require re-entering the password, but it is written to the audit (
hostkey.confirm).
The result of the check after confirmation reads as follows:
| Result row | Meaning |
|---|---|
| Matches the confirmed key | The server presented the confirmed key. |
| Differs from the confirmed key … | The server presented another key. Sessions to it are refused until you find out the reason and confirm the new key with the Confirm this key button. |
| Sign-in succeeded | The gateway signed in to the server with the chosen account. |
| Sign-in failed: the server refused the stored secret | The server did not accept the password or key. Replace the secret (Replacing a secret) or fix the account on the server itself. |
| The stored private key cannot be used (RSA and ECDSA keys only) | The account's private key does not fit. Ed25519 keys are not supported. |
| The server could not be reached | No connection, the server did not answer within 20 seconds, or it does not speak SSH. |
What changes when the key is reset: when the server's address (Address) or port changes, the confirmed key is deleted, and the console writes Saved. The host or port changed: confirm the host key again. After changing the address or port, go through steps 2–4 again. The SSH protocol cannot be “confirmed in advance”: a key can be confirmed only by seeing it.

Certificates and fingerprints: RDP, VNC and databases
For servers with TLS the gateway checks the certificate's “fingerprint” the same way as the SSH host key: at first contact it is shown to the administrator, the administrator compares it with the server itself and confirms, and after that the gateway accepts only that one. A summary:
| Protocol | What is remembered | Whether the password and code must be re-entered to confirm | State of a new server |
|---|---|---|---|
| SSH | The host key fingerprint (SHA256) | No | Active, but sessions are refused until the key is confirmed. |
| Telnet | Nothing: there is no identity | — | Active. |
| RDP | The SHA-256 fingerprint of the whole certificate | Yes | Inactive until the certificate is confirmed and the server is switched on. |
| VNC with a TLS sign-in type | The SHA-256 fingerprint of the certificate's public key (SPKI) | Yes | Inactive until the certificate is confirmed. |
| VNC without TLS (the weak unencrypted types) | Nothing | — | Active. |
| PostgreSQL, MySQL, SQL Server | The SHA-256 fingerprint of the certificate's public key (SPKI) | Yes | Inactive until the certificate is confirmed (except PostgreSQL without encryption). |
Confirming the certificate does not switch the server on automatically. After Confirm this certificate the console writes Certificate confirmed. Switch the server on to use it.; turn on the Active switch on the card (the Active button in the Quick actions block) or in the edit form.
The certificate is confirmed again (the gateway will say so itself) if you changed the server's address, port or protocol, and for VNC also the sign-in type. The confirmed record is deleted and the server is switched off: Saved. The address, port or protocol changed: check the connection and confirm the certificate again. (for VNC: Saved. The address, port or sign-in type changed, so the confirmed certificate was removed.). A simple change of the description, folder or name does not touch the certificate.
RDP
- Allow NTLM for the server. Without this the check refuses: Not checked: this RDP server is not marked as allowing NTLM, and in this version an RDP server is reached with NTLM only.
- Open the card and click “Test the connection”. The button's hint: Connects and shows the server's TLS certificate; no sign-in is tried. The gateway connects, goes through the security negotiation and the TLS handshake and sends nothing further: neither a password nor credentials. Presented certificate is shown.
- Compare the fingerprint. The console: Before confirming, compare it with the SHA-256 fingerprint of the Remote Desktop certificate on the server itself. On a Windows server, for example, in PowerShell:
Compare the hexadecimal digits; letter case and separators do not matter. If the store holds several certificates, compare with the one that the Remote Desktop service uses.$c = Get-ChildItem 'Cert:\LocalMachine\Remote Desktop' | Select-Object -First 1 ([BitConverter]::ToString([Security.Cryptography.SHA256]::Create().ComputeHash($c.RawData)) -replace '-','').ToLower() - Click “Confirm this certificate”. The console will ask you to confirm your identity (re-enter the password and code), then connect to the server again and save the certificate only if the server presented exactly that one. Otherwise: The server now presents another certificate than the one you checked. Check again. The event is written to the audit (
rdp.cert.confirm). - Switch the server on (Active).
The result of the check: Matches the confirmed certificate — the server presented the confirmed certificate; Differs from the confirmed certificate … — another was presented (a certificate renewal or a substitution; confirm again only after checking). The check errors: The server offers no TLS: only the old RDP security, which the gateway does not use, The server did not answer as an RDP server, The TLS handshake with the server failed, The server could not be reached (see Troubleshooting).
The Clear the certificate button (after the identity confirmation and the question Clear the confirmed certificate of …? The server is switched off until a certificate is confirmed again.) removes the confirmation and switches the server off. Use it when you have to confirm the certificate afresh (for example, a new one was issued on the server).

VNC
For VNC the card has a Check connection block and a Server certificate block (Subject, Public key (SHA-256), Confirmed …). If the certificate is not confirmed, it says Not confirmed. This server cannot be used until its certificate is confirmed.
- Click “Check connection”. The hint: Shows what the server offers and its certificate; it signs in only with an account, and on a TLS server only once its certificate is confirmed. The check steps are listed in the table below.
- Compare the certificate with the one installed on the VNC server itself (Before confirming, compare the certificate's SHA-256 fingerprint with the certificate on the VNC server itself.). The console shows the SHA-256 of the certificate's public key.
- Click “Confirm this certificate” (an identity confirmation will be needed). The certificate is pinned if the server presented exactly that one. The message: The certificate is pinned. Switch the server on to use it.
- Switch the server on.
To check the sign-in as well, choose an account in the Also sign in with the account list; the option Offered types only, no sign-in means “only read what the server offers”. The account's secret is sent only to a confirmed certificate (for TLS servers) or to an unencrypted server if you accepted that risk. For the weak sign-in types, an identity confirmation is asked before the sign-in (Confirm who you are before the gateway signs in to this server.).
| Check step | What it shows |
|---|---|
| Connect | Whether the connection succeeded. |
| Version | The VNC protocol version presented by the server. |
| Sign-in types offered | Which sign-in types the server offers (Offered: …). |
| TLS sign-in types offered | Which sign-in types the server offers inside TLS. |
| Certificate | The server's certificate and whether it matches the confirmed one. |
| Sign in | The account's sign-in (only if one is chosen). |
| Screen size | The screen size the server reported. |
The state of each step: ok, failed, skipped, not reached. If a step failed, the console explains the reason (the list of reasons is in the chapter Troubleshooting). The Clear the certificate button removes the pin and switches the server off (The certificate pin was removed and the server switched off.).
If the VNC session worker for this server crashes, a warning appears on the card: The session worker for this server crashed N times in the last 24 hours.

Databases
On a database server's card the check button is called Check connection (hint: Connects and shows the server's certificate and version; no sign-in is tried). The gateway shows Subject, Issuer, Valid, Key (SPKI SHA-256), Certificate SHA-256 and the server version (Server version). Confirmation is the Confirm this certificate button (to replace an already confirmed one, Confirm the new certificate), with re-entry of the password and code. To compare the fingerprint on the server itself from the certificate file, you can run: openssl x509 -in server.crt -pubkey -noout | openssl pkey -pubin -outform DER | openssl dgst -sha256.
- If the server shows a different key than the confirmed one: The server now shows a different certificate key. Connections are refused until you confirm it.
- If a PostgreSQL server has the “without encryption” mode on and the server really offers no encryption: The server offers no encryption; it is reached unencrypted, as the switch on its form allows.
- SQL Server with its own “fallback” certificate: This is SQL Server's own fallback certificate: it changes at every service start, and each restart needs a new confirmation. Provision a certificate (mssql-conf set network.tlscert on Linux, SQL Server Configuration Manager on Windows). Install a permanent certificate on the server, otherwise you will have to confirm again after every restart.
The Test sign-in button checks the sign-in of the chosen account (the Sign in as list). Hint: Signs in with the stored password of the account you choose; you are asked to confirm who you are first. The result: The account signed in. or The account could not sign in: … with a short reason (the list of reasons is in the chapter Troubleshooting). The password is sent only to a confirmed certificate or (PostgreSQL without encryption) in a protected SCRAM exchange.

The licence limit on active servers
The gateway's licence limits the number of active servers. You cannot create an active server, switch on a switched-off one, or save a form so that a server would become active, beyond the limit: The licence allows N active servers. Switch off a server or extend the licence. The refusal is written to the audit log (licence.limit). You can always switch a server off. The licence state and its renewal are on the Licence page (the section “Licence”).
If the licence has expired, there is no licence, or there are more active servers than allowed and the grace period has ended, the console refuses changes altogether (servers included), for example: The licence has ended: changes are refused. Upload a licence on Settings → Licence. The full list is in the chapter Troubleshooting.
It is better to keep servers you created “in reserve” switched off: inactive servers do not use up the limit.
What happens to open sessions when a server is changed
After a server is saved, switched off, moved to another folder or deleted, and after its certificate is cleared, the gateway checks the rights of all open sessions again (on SSH, RDP, VNC and databases). A session whose rights have gone (the server is switched off or deleted, the certificate is removed) is closed with a message the user can understand. Changing the name or description does not affect open sessions.
Every change to a server is written to the audit log: server.create, server.update, server.delete, server.test (the connection check, with the result), hostkey.confirm, rdp.cert.confirm, rdp.cert.clear, vnc.cert.confirm, vnc.cert.clear, server.db_tls_pin, server.db_test. The events contain no passwords or keys; for the Telnet check only the steps reached are recorded.
Device profiles
A device profile is a set of “hints” for the gateway on how to sign in to a Telnet server and how to enter privileged mode on a network device. Telnet has no single sign-in procedure: each device writes its own prompt (“Username:”, “login:”, “Password:”) and reports an error in its own way. The profile describes which lines the gateway must recognise to enter the login and password at the right time.
The profile pages are in the menu group Resources, item Device profiles (/servers/profiles). An Administrator sees and changes profiles. An Auditor sees the list and the profile cards read-only: this way an auditor can check by what rules the gateway signs in to devices. The buttons for creating, changing, deleting, duplicating and testing against a transcript are not shown to them.
The profile list
The table has the columns Name (with the Built-in badge on built-in ones), Line end sent and Wait per step, seconds. The New profile button creates your own profile; the Edit button in a row exists only for your own profiles. The page's hint: How the gateway signs in on a Telnet server, and enters privileged mode on a network device.
Built-in profiles come with the gateway, updates keep them, and they cannot be changed or deleted (Built-in profiles are kept by updates and cannot be changed; duplicate one to adapt it.). There are six:
| Profile | What it is for | Privileged mode |
|---|---|---|
| Cisco IOS / IOS-XE | Cisco IOS routers and switches. | The enable command |
| Cisco NX-OS | Cisco Nexus switches. | The enable command |
| Juniper Junos | Juniper equipment. | None |
| MikroTik RouterOS | MikroTik equipment. The gateway adds the suffix +t to the user name and itself answers the device's questions at sign-in (about the licence and “press Enter”). | None |
| Huawei VRP | Huawei equipment. The wait per step is 20 seconds. It answers “N” to an offer to change the password. | The super command |
| Generic Unix | An ordinary Unix/Linux host over Telnet. This is the default profile for a new Telnet server. | None |
The cards of the built-in profiles, except Generic Unix, say: Checked against vendor documentation samples only, not yet against a real device. Before you start, check the profile on your own device (the Test the connection button on a Telnet server's card shows the sign-in steps reached) and, if needed, make a copy and adjust the templates.

The profile card and copying
The profile card (/servers/profiles/<id>) shows all its fields: Name, User name prompt, Password prompt, Signed-in prompt, Refused login, Wait per step, seconds, Line end sent, and for built-in ones also Privileged step, User name suffix, Fixed answers. The row Servers using it lists the servers that use the profile.
The Duplicate button makes a copy named “Copy of …” (if that name is taken, “Copy of … 2”, “Copy of … 3” and so on) and opens it for editing. The privileged step, the user name suffix and the fixed answers are not carried over when copying: they are available only in built-in profiles. The console warns about this: Privileged mode is available only with the built-in profile. So a copy suits ordinary devices with a login and password sign-in; for a device that needs privileged mode, use the built-in profile.
The Delete button on your own profile asks Delete profile …?. A profile used by at least one server cannot be deleted: The profile is used by these servers: … A built-in profile cannot be deleted: A built-in profile cannot be changed or deleted.
Creating and changing your own profile
The New profile button opens the form /servers/profiles/new. The template values are regular expressions. The gateway applies them to the end of the last received line and matches them with a safe algorithm that does not hang on “heavy” expressions.
| Field | What to enter | Default / limits |
|---|---|---|
| Name | The profile's name. | 1–64 characters. The name is unique (otherwise This name is already taken.). An invalid name: A value was not accepted. Check the form. |
| User name prompt | The template of the prompt for the name (for example, (?i)(user ?name|login):\s*\z). | Required. This is a .NET regular expression, at most 512 characters. |
| Password prompt | The template of the prompt for the password. | Required, the same rules. |
| Signed-in prompt | The template of the prompt by which the gateway understands that the sign-in succeeded. | Required, the same rules. |
| Refused login | The template of the refusal message. Hint: Optional. Without it a prompt shown again or a timeout is the failure. | Optional. Without it a refusal is taken to be the prompt appearing again or the time being exceeded. |
| Wait per step, seconds | How many seconds the gateway waits for each sign-in step. | 10. Allowed 3–60. |
| Line end sent | What the gateway sends at the end of a line: CR LF or CR NUL (devices that run a command twice on CR LF). | CR LF. |
The hint under the templates: A .NET regular expression, at most 512 characters, matched at the end of the last line. Backreferences, lookarounds and atomic groups are not supported. Possible template errors: This is not a valid regular expression., At most 512 characters., Backreferences, lookarounds and atomic groups are not supported., This regular expression is too costly to check against device output. Simplify its repetitions. Edits while the form is open are protected against a “lost update”: if another administrator changed the profile, you get The record was changed by another administrator — open it again.
Testing a profile against a session transcript
Under the profile form (and on the card) is the Test against a transcript block: you paste what the device shows, and the gateway checks whether it would sign in with this profile. The test does not need a connection to the device and uses no real passwords. Hint: Paste what the device shows; mark where the gateway types with ⟨user⟩ and ⟨password⟩, or paste a TelnetProbe capture.
- Copy the device's output into the Transcript field: the prompts and answers as a person sees them.
- Mark the places where the gateway enters data with the markers
⟨user⟩(the name) and⟨password⟩(the password). For the privileged step,⟨privileged⟩. Before each marker the gateway keeps a short pause (200 ms). - Click “Run the test”. The gateway replays the transcript “in virtual time” and shows a table: Step, Pattern, Matched text, Result for each step (User name prompt, Password prompt, Signed in, Refused, Privileged password prompt, Privileged mode, Fixed answer; beside it, the number of the transcript line). The result of each step: Matched, Not matched, Timed out or Skipped.
- Read the verdict: The gateway would sign in with this profile. or The gateway would not sign in with this profile.
A transcript cannot be larger than 64 KiB (A transcript is at most 64 KiB.); an empty or unreadable transcript gives A value was not accepted. Check the form. Nothing from the test is saved. A test from the form can be run before the profile is saved: it uses the templates you entered in the form. A test from the card uses the saved templates. Only an Administrator can run the test.


Accounts
A server account is a login and a secret (a password or a private key) with which the gateway signs in to the server in place of the person. The person does not know the secret and cannot find it out: the gateway injects the secret itself at the moment of connecting. One server can have several accounts (for example, root and deploy). Which of them are available to a person is decided by the rules.
Only an Administrator sees and changes accounts. They are available in two places: on the Accounts tab of a server card (the accounts of one server) and in the general Accounts list in the menu group Resources (/accounts, the accounts of all servers — convenient for searching by login).
Secrets are write-only: nobody can view or copy them, in the console or through the API. The gateway puts them in itself when it connects. The console shows the stored password or key neither to an administrator nor to anyone else: you can only replace the secret with a new one. A stored secret is kept encrypted with the gateway's key (see the section Encryption key); the audit records only the fact of the replacement and the type of the secret.
The account list
The page /accounts (hint: Every account of every server, to find one by login. Secrets are write-only.):
| Element | What it does |
|---|---|
| Search (Login or server) | Searches by login and server name. |
| The filters Passwords, Keys, Unchanged for 14+ days | Only accounts with a password; only accounts with a key; accounts whose secret has not changed for 14 days or more (helps to keep a planned password rotation under control). |
| The columns Login, Server, Secret type, Secret, Secret changed | The login; the server (a link); the secret type (Password or Private key); the secret's state (Password set · changed …, Key set · changed …); for accounts with privileged mode also a line Privileged-mode password set · changed … or the note Same as the login password. |
| Row → Replace secret | Opens the page for replacing the secret. |
| Row → Open the server | Goes to the server card. |
| Row → Delete | Deletes the account. The question: Delete the account … on …? Its secret is erased; rules that name it no longer allow signing in with it. |
| The group action Delete | For the ticked accounts. The question: Delete the selected accounts (N)? Their secrets are erased; rules that name them no longer allow signing in with them. |

Creating an account
The Add account button on the Accounts tab of a server card opens the form /accounts/new (the general list /accounts has no create button — the list is only for searching, replacing secrets and deleting). The server whose card you came from is already chosen.
| Field | What to enter | Default / limits |
|---|---|---|
| Server | The server on which this account exists. | Required: Choose a server. |
| Login | The login with which the gateway signs in to the server. Hint: The login the gateway uses on the server: latin letters, digits, dot, underscore, hyphen. | 1–64 characters: Latin letters, digits, dot, underscore, hyphen. Otherwise: A login is 1-64 characters: latin letters, digits, dot, underscore, hyphen. Logins are not repeated on one server, letter case is ignored: Root and root are one account (This name is already taken.). |
| Secret type | Password or Private key. For a VNC server that checks no one, No sign-in instead. The type cannot be changed after creation (The type of an account stays as created. To change it, delete the account and add it again.). | Password. |
| Password and Repeat the password | The password twice. | From 1 to 16384 characters. An empty password: Enter the password. They do not match: The two passwords differ. Too long: The password is too long. |
| Private key (OpenSSH or PEM) | The whole text of the private key, starting from the line -----BEGIN OPENSSH PRIVATE KEY-----. | No more than 16384 characters. Only RSA and ECDSA keys are accepted. The key is checked on saving: if the gateway cannot sign with it, it is not saved. |
| Key passphrase | The key's passphrase. Hint: Only if the key has one. | Optional. |
| Privileged mode | Only for servers with a network device profile; see below. | Off. |
Under the secret fields the console writes: The old secret cannot be viewed. The new one is stored encrypted; the change goes into the audit log. The buttons: Create, Cancel. After creation you return to the Accounts tab of the server card. The event account.create is written to the audit (the login, server, secret type and mode; the secret itself is not recorded).

Private keys: which ones fit
- Key types: RSA and ECDSA (nistp256/384/521). Ed25519 is not supported yet: Ed25519 keys are not supported yet. Use an ECDSA or RSA key. Create a suitable key:
ssh-keygen -t ecdsa -b 384orssh-keygen -t rsa -b 4096. - Formats: OpenSSH (
BEGIN OPENSSH PRIVATE KEY) and PEM. Encrypted PKCS#8 (BEGIN ENCRYPTED PRIVATE KEY) cannot be read; the console advises: Convert the key to the OpenSSH format with ssh-keygen -p -f <file> and paste it again. - If the passphrase is wrong or the key is of another type: This key cannot be used: the passphrase is wrong, or it is not an RSA or ECDSA key. If the field is empty or does not contain a key: A private key in OpenSSH or PEM format is required.
- A key can be used to sign in to SSH servers. Telnet, RDP, VNC and database servers accept only a password (see the messages in the section Servers).
Replacing a secret
The row menu → Replace secret opens the page /accounts/<id>/secret (the Replace button). It shows only the type of the secret and the date of the last change; the secret itself is not shown. Enter a new password (twice) or a new key with a passphrase under the same rules. After saving: The secret is replaced. The audit gets account.secret with the type of the secret (password or key), without values. The replacement does not interrupt sessions that are already open: they continue on the old sign-in, new ones use the new secret.
For the accounts of VNC servers there is an explanation under the password field: for the “VNC password” types only the first 8 characters are significant; for “Mac user name and password” the name and the password are each at most 63 bytes (For a Mac, the name and the password are each at most 63 bytes.).

Privileged mode of a network device
On routers and switches, after signing in you often need to “raise” the privileges as well: on Cisco with the enable command and a second password, on Huawei with super. The gateway can perform this step itself, so that the person does not know the second password. The mode is turned on for an account at creation or on the page /accounts/<id>/privileged (the Save privileged mode button) and is available only if the server has a built-in network device profile chosen (Cisco IOS / IOS-XE, Cisco NX-OS, Huawei VRP). Otherwise: Privileged mode is available only with a built-in network-device profile.
| Value of the Privileged mode field | What it does |
|---|---|
| Off | The step is not performed. |
| Own password | The gateway enters a separate password (the Privileged-mode password field, stored like the other secrets). If the field is empty: Enter the privileged-mode password. On the page for changing the mode you can leave the field empty to keep the previous password. It can be replaced on the secret page. |
| Same as the login password | The gateway enters the same password it signed in with. Highest risk: the gateway types the login password itself, and that password signs in on its own. Prefer a dedicated enable secret. |
The privileged-mode password is typed into the account's terminal. Use a dedicated enable secret, not the login password, and an account whose login the person cannot change. The privileged-mode password is typed in the terminal of the account; the gateway hides it from the person and from the session recording, but its safety depends on the person not being able to change the account's password on the device itself.
A server's profile cannot be replaced by one that has no privileged step while there are accounts in privileged mode: Accounts of this server use privileged mode: choose a built-in network-device profile, or turn their privileged mode off first. A change of the mode is written to the audit (account.privileged: before and after); the privileged-mode password is not recorded.
How accounts relate to servers and rules
- An account's login is what a rule names in the Logins field. A rule allows signing in “under any of the listed logins on any of the chosen servers”.
- If a server has one account available to the person, they may leave it out when connecting; if several, they add a third part to the name (
login:server:account, see the chapter Connecting over SSH). - Deleting a server deletes its accounts together with the secrets. Deleting an account does not change the rules, but they stop allowing sign-in with that login.
- If the gateway is closed (the encryption key is not open, see Unsealing the gateway), a secret cannot be created or replaced: The encryption key is not available.
Access rules
A rule answers the question “to whom, where, under which account, for how long and with what rights over data”. There is no access without a rule: if no rule names the person and the server, they cannot connect. The formula from the console: A rule = who × where × with which account × until when.
Only an Administrator sees and changes rules (the menu group Access, item Access rules, address /rules). A rule has one of two types:
- Standing access (permanent access) — takes effect at once and lasts to the end of its term. Described in detail here.
- By request — a person submits a request for a limited time, and approvers decide. This type is described in the section Access requests. It uses the same lists “Who”, “Where”, “Accounts” and “Data movement” as described below.
The rule list
The table /rules shows the columns Name, Type, Users, Groups, Servers, Accounts (All or Specified (N)), Data (in brief: files, terminal, copies), Starts / Ends and State. The filter chips: In effect, Ending ≤ 7 d, Not started yet, Expired, Disabled. Search: Name, user, server. The Create rule button creates a rule. Group actions on the ticked standing rules: Enable, Disable, Delete.
The rule states in the State column: In effect, Ends in N d (ending soon), Not started yet, Expired, Disabled. An empty list: No access rules yet and an explanation that a rule says who can connect to which servers, with which accounts and until when.

Creating and changing a rule
The Create rule button opens the form /rules/new. At the top is the type switch: Standing access / By request (hint: Standing access applies at once. By request lets people ask for a limited time; approvers decide.). The type of a rule is chosen at creation and does not change afterwards (The type of a rule is chosen when it is created and cannot be changed.). The edit form (/rules/<id>/edit) is the same. The sections are numbered in order:
| Section / field | What to enter | Default / limits |
|---|---|---|
| Main → Name | The rule's name. | Required, up to 200 characters (Give the rule a name (up to 200 characters).). |
| Description | What the rule is for (who asked, the ticket number). | Up to 1000 characters; longer gives A value was not accepted. Check the form. |
| Enabled | A switch. Hint: Disabling takes effect at once, like expiry. | On. |
| Who → Users, Groups | People and groups. Chosen through search (Search), removed with the cross (Remove …). Groups are described in the section Groups. The rule applies to all members of a group, including those added later. | At least one person or group is needed: Choose at least one user or group. |
| Where → Servers and folders | Servers and folders. Hint: A folder covers its subfolders and servers added later. | At least one is needed: Choose at least one server or folder. |
| Accounts → Which | The switch All (any account on the chosen servers) or Specified. | All. |
| Logins | With “Specified”: choose known logins from the list or type your own in the field Other logins, separated by spaces. Hint: An account with such a login on any of the chosen servers fits. A login that does not exist yet may be typed. | At least one login is needed: Name at least one login, or choose “All”. An invalid login: “…” is not a valid login. Logins are given but “All” is chosen: Logins are chosen, but the mode is “All”: choose “Specified” or remove the logins. |
| Term → Valid from | The start date and time in the console's time zone (hint: Time zone: …). | Required, by default the current moment. Empty/invalid: Enter a date and time. |
| Valid until | The end date and time. Beside it are the buttons +1 day, +1 week, +1 month (counted from the start, or from the current moment if the start has already passed) and No end. Hint: Optional: empty means no end. At that moment open sessions are cut. | Empty = no term. The end must be later than the start: The end must be after the start. |
| Data movement | Rights over files, the terminal, the clipboard, devices, the database query parameters, input in VNC. Described in detail in the section File, clipboard and device policy. | No files; the terminal is on; no clipboard; no copies; of the RDP devices only sound from the server is on; VNC screen control is on; database query parameters are not recorded. |
| Actions → Allowed | The only action is Connect (the box is ticked and unavailable). | — |
The form buttons: Create / Save, Reset, Cancel. The time rules are simple: only “from” and “until”. There are no recurring windows (“on weekdays from 9 to 18”) in rules; for one-off work set a term, for periodic work create rules for the needed intervals or use access by request.
If on saving a rule lets more data move, the console asks you to confirm your identity: Confirm who you are before saving: this rule lets more data move. and the link Confirm who I am. Widenings include: adding a file direction, a clipboard direction, turning on the terminal, file copies, writing the clipboard text, any RDP device, recording database query parameters and VNC screen control. For a new rule, any difference from the defaults counts as a “widening” (for example, allowed file transfer). Narrowing rights (removing a direction, switching a device off) does not need confirmation.

The rule card
Clicking the name opens the card (/rules/<id>). The header is the name, the state label and the buttons Edit and Delete. The tabs:
| Tab | What it shows |
|---|---|
| Main | The Details block: the description, who, where, accounts, rights over data (Data movement, Clipboard, Devices, Control the screen (keyboard and mouse), Record statement parameters), Valid from, Valid until, the creation date. The Quick actions block: the Enabled switch (Disable / Enable) and the extension buttons +1 week, +1 month (Extend — moves “Valid until”; unavailable for a rule without an end). |
| Who | Everyone the rule names, directly or through a group, and the column Can connect: Yes or no (disabled or no User role) — the person is disabled or has no User role. |
| Where | The servers with folders and subfolders expanded (through folder …), their address, the label inactive on switched-off ones, and the rule's accounts. |
| Log | The audit events for this rule. |
If a rule is left with “nobody” or “nowhere” (Nobody / Nowhere) — for example, a group or a server was deleted — the console warns: This rule names nobody or nowhere (its group, user or server was deleted), so it gives no access. Edit it to name them, or delete it.

What happens to open sessions
A rule is checked not only at the moment of sign-in. The gateway evaluates the rights of every open session again as soon as anything that could take access away has changed, and also at the moment a rule that gives the session access ends:
- a rule ended by its term, was disabled or deleted; a person was disabled or lost their roles; a group was changed or deleted; a server was switched off or deleted; an account was deleted; a folder was moved or deleted; a person changed their password (for direct SSH connections) — the session is closed, and the person sees a message (for example, Your access to this server has ended. The session is closed.);
- if several rules give access, the session lives while at least one applies; the gateway checks access afresh and does not follow the “first” rule;
- a rule was narrowed (a file or clipboard direction removed, a device or input switched off): narrowing takes effect at once, and the open session gets the new rights from the next packet. If the terminal of an SSH session is switched off by the rule, the shell and commands are closed with the message Your access rule no longer allows a terminal on this server. The session is closed., while file transfer remains available;
- a rule was widened (a device or direction added): an RDP device that was not offered at connection cannot be added to a running session — the widening takes effect at the next connection (A device the session did not offer when it started cannot be added to it: a change that allows more takes effect at the next connection.);
- for access granted by request, a few minutes before the end the person sees a warning, and on revocation they see by whom the access was revoked.
Closing by term is exact: for each session the gateway sets a timer for the nearest end of the rule that gives it access. If the gateway's database is unavailable for a time, open sessions continue (a failed check does not count as “no”), and new ones are not opened.
Deleting a rule (Delete) asks: Delete the rule …? The access it gives ends at once. A by-request rule that already has requests cannot be deleted — it can only be disabled (A rule that has requests cannot be deleted; disable it instead.). All rule changes are written to the audit (rule.create, rule.update, rule.enable, rule.disable, rule.extend, rule.delete) with a description of what changed.
File, clipboard and device policy
These permissions are set in an access rule, in the Data movement section. They answer the question “what can a person take off the server and bring onto it” and apply to every session. The fields are common to all protocols; the table shows which of them apply to which protocol.
| Rule field | SSH | RDP | VNC | Databases | Telnet |
|---|---|---|---|---|---|
| File transfer (SFTP, SCP) | Yes: SFTP and SCP | Yes: files on the client's redirected drives and files through the clipboard | No | MySQL LOAD DATA LOCAL only | No (File transfer is not available for Telnet servers.) |
| Terminal | Yes | No | No (Not used for VNC.) | No (Terminal applies to SSH and Telnet.) | Yes |
| Keep copies of transferred files | Yes | Yes | No | Yes, for MySQL LOAD DATA LOCAL only | No |
| Clipboard | No (SSH has no clipboard) | Yes | Yes, text only | No | No |
| Keep the text copied through the clipboard | No | Yes | Yes | No | No |
| Devices (RDP) | No | Yes | No | No | No |
| Control the screen (keyboard and mouse) | No | No | Yes | No | No |
| Record statement parameters | No | No | No | Yes | No |
Fields and defaults
| Field | Values and meaning | Default |
|---|---|---|
| File transfer (SFTP, SCP) | Four options: No file transfer, Upload only (to the server), Download only (from the server), Upload and download. “Upload” goes from the person to the server, “Download” from the server to the person. SFTP and SCP follow this setting: when a direction is forbidden, the gateway answers the person with a message (see below). | No file transfer |
| Terminal | The Allow a shell and commands switch. Off: only file transfer is possible; a shell and commands are refused before the gateway contacts the server. The console hint: Off: only file transfer is possible; a shell or a command is refused before the server is reached. scp still works, by the file rule. | On |
| Keep copies of transferred files | The Encrypted, beside the recordings switch. The gateway saves a copy of every transferred file in encrypted form beside the session recordings. Copies are kept no longer than the recordings and are deleted with them (the term is set by Sessions → Keep file copies, days). | Off |
| Largest file to keep, MB | For switched-on copies: the maximum size of a file that is kept, 1–4096 MB. Hint: A larger file is transferred but not kept; its hash is still logged. Copies are deleted with the recordings. Another value: Enter a size from 1 to 4096 MB. | 100 |
| Clipboard | No clipboard, Into the session only (into the session), Out of the session only (out of the session), Both ways. RDP and VNC only; with VNC only text is transferred. | No clipboard |
| Keep the text copied through the clipboard | A switch. Text copied through the clipboard is saved in the session recording and is available to auditors. Hint: Stored in the session record. Applies to RDP and VNC sessions. | Off |
| Devices (RDP) | Seven switches: Printers, Smart cards, Serial and parallel ports, USB devices, Camera, Microphone, Sound from the server. The gateway offers the server only what is switched on here, whatever the user ticks in the Remote Desktop client (The gateway offers the server only what is switched on here, whatever the Remote Desktop client has ticked.). | Everything off except Sound from the server |
| Control the screen (keyboard and mouse) | For VNC. Off: the person sees the screen but can neither type nor click. Switching it on later is an extension of rights (it requires identity confirmation). | On |
| Record statement parameters | For databases. The values of the parameters sent with a query are saved (not only the text of the query). The console warning: Parameters often carry personal data (names, personal numbers). Record them only when the purpose requires it (Law of Georgia on Personal Data Protection). | Off |
How rules combine
If several rules give a person access, the resulting permissions are their union: the direction of files and of the clipboard is the union of the directions; Terminal, copies, recording of clipboard text, RDP devices and screen control are “on in at least one rule”. Copies are kept if any rule requires them, and the size limit is the largest among the rules where copies are on. The result is worked out at sign-in, remembered for the session and recalculated when the rules change (see What happens to open sessions).
Any switching on (a file direction, the clipboard, the terminal, copies, an RDP device, recording of parameters, VNC control) requires a fresh confirmation of identity. Narrowing the permissions does not require confirmation and applies to open sessions at once.
USB in RDP
USB redirection passes the whole device (drives included) and does not follow the file rule. That is why it can be switched on only together with Upload and download: USB devices can be allowed only together with “Upload and download” for files. The hint on the field: USB redirection moves whole devices, drives included, and does not follow the file rule. It can be switched on only together with “Upload and download” for files.
SFTP and SCP: how they differ from the terminal
- File transfer goes through a separate channel that the gateway parses itself: every operation is checked against the direction, a log is kept (the File transfers page), a hash of the transferred data is calculated and, if needed, a copy is saved.
- The file size and the total volume per session are limited by the Sessions → File transfer settings (Largest file, MB, All files in one session, MB). Exceeding a limit stops the transfer.
- If the rule does not allow the terminal, only
sftpandscpwork; a shell, commands,rsyncandsftp -sare refused. SCP in WinSCP mode needs a shell on the server and is therefore refused too (switch WinSCP to SFTP). - File transfer is not available for Telnet servers.
(1) If the rule allows the terminal, the shell is not a file channel: data can be moved through cat, tar and sh -c in a way the file policy does not see. The “File transfer” setting governs SFTP and SCP only; the console warns: With the terminal on, a person can still move files through commands. This setting governs SFTP and SCP only. Turn the terminal off to stop that. To close this route, switch Terminal off. (2) The recorded hash is the hash of the bytes that passed through the open file, not of the file on the server. (3) The gateway does not restrict paths in the server's file system: restrict the rights of the account itself on the server. (4) An interrupted transfer leaves a partly written file on the server.
Typical set-ups: files only — Terminal off, File transfer set to “Upload and download” or to one direction; shell only — Terminal on, files off (remember limitation 1); RDP without data leaving — clipboard, files and devices off (you can leave the sound from the server on).
What the user sees on a refusal is listed in the Troubleshooting chapter (the “File transfer” group). How a user connects over SFTP and SCP is described in the section Connecting over SFTP and SCP.


Settings: the gateway SSH key
The /system/ssh page (menu System → Settings → the Gateway SSH key tile, “Security” group). Only an Administrator sees it. This is a read-only page: it has no settings apart from the copy buttons. The page hint: The key SSH clients see when they connect to the gateway. BURSUcm and OpenSSH remember it on first use.
This is the key of the gateway itself (what people's SSH clients see), not the key of any target server — server keys are described in the Servers section. The gateway creates it once, when the page is first opened, and uses the ECDSA nistp256 type.
| Block / field | What it shows |
|---|---|
| Host key → Fingerprint | The key fingerprint (SHA256:…). If there is no key yet: The key is created once the gateway is open. |
| Public key | The public key (ecdsa-sha2-nistp256 AAAA…); the Copy button copies it. |
| known_hosts line | A ready line for the clients' known_hosts file, which you can distribute. While the port is not known: The known_hosts line appears once the SSH port is known. |
| Note | Tell users to compare this fingerprint with the one their SSH client shows the first time. Give people this fingerprint through another channel (e-mail, on paper): on the first connection the client shows it and the person compares. |
| SSH front end → State | Listening on port N or Not listening yet. |
| Listens on | The address and port on which the gateway accepts SSH (the sshListen parameter in gateway.json; 0.0.0.0:2222 by default). |
| Host name given to clients, Port given to clients | The name and port that the gateway gives people in hints and files (sshPublicHost, sshPublicPort). If the name is not set, the address at which the console was opened is used. Needed behind NAT or port forwarding. |
| Key exchange offered | The key exchange algorithms that the gateway offers to clients. |
| Connection limits | For example 1000 in all, 100 per address: the total number of SSH connections and the number from one address. Not configurable in the console. |
| Open connections, Running sessions | How many connections are open and how many sessions are running now (the number is a link to the session list). |
If the gateway key changes (for example, the gateway was reinstalled on a clean database), every client that remembered the old one shows a key-change warning. This is normal protection: the person must compare the new fingerprint with this page.

Settings: signing of .rdp files
The /system/rdp-signing page (the RDP file signing tile, “Security” group). Only an Administrator sees and changes it. The page title is Signing of .rdp files.
When a person downloads an .rdp file from the “My access” page (see My access), the gateway can sign it. A signed file shows Remote Desktop who published it, and a change to any signed line breaks the signature (A signed .rdp file shows Remote Desktop who published it, and a change to any signed line breaks the signature. The certificate must be trusted on the computers that open the file.). Without a signature, Remote Desktop warns the person every time the file is opened: There is no signing key: .rdp files are not signed, and Remote Desktop warns the person who opens one.
A signature says “the publisher is known” only if the signing certificate (its root authority) is installed on the computers that open the file. A corporate certificate from your certification authority will do. A self-signed certificate will do if you add it to the trusted ones on those computers.
| Block / field | What it shows or what to enter |
|---|---|
| Details → State | One of the states: No signing key, Signing, Certificate expires soon (30 days before the end), Certificate expired, Certificate not valid yet, Not available (the key is stored but cannot be read). |
| Publisher shown to the user, Thumbprint, Valid until | The publisher (the Subject field of the certificate), the thumbprint and the end date. Public data only. |
| Note | The key is stored encrypted with the gateway's master key; it is never shown or exported. |
| Store the key → Certificate and private key (.pfx) | A PKCS#12 file (.pfx or .p12) with the certificate and the private key. |
| Passphrase of the file | The password of the .pfx file. Leave it empty if the file has no password. |
| The Store the key button | Stores the key. It changes only after identity confirmation (password and code): Changing the signing key needs your password and code again. On success: The signing key was stored. |
| The Remove the key button | Removes the key after the question Remove the signing key? .rdp files will then be unsigned. The message: The signing key was removed. |
Which certificate fits. The file is no larger than 64 KiB; it holds exactly one certificate with an RSA private key of at least 2048 bits; the certificate allows digital signature (the “key usage” extension is either absent or contains digitalSignature); its validity period has already begun and has not yet ended. On upload the gateway signs a trial file itself and checks the signature; if the key does not match the certificate, it is rejected at once rather than at every download. The reasons for a refusal are in the error table below and in the Troubleshooting chapter.
The gateway signs a file only when the address in it comes from the configuration (the rdpPublicHost parameter in gateway.json), not from the browser request: otherwise the gateway would vouch with its certificate for any address that the requester named. If a key is stored but rdpPublicHost is not set, the page says: Files are not signed until the gateway's public RDP host is set (rdpPublicHost in the configuration): the gateway never signs an address taken from the browser's request.
Storing and removing the key are written to the audit log as the rdp.signing_key event (the thumbprint; for a refusal, the reason). The approaching end of the certificate's validity is raised as a warning on the overview page.

Settings: sessions
The /system/sessions page (the Sessions tile, “Sessions and protocols” group). Only an Administrator sees and changes it. The page hint: How sessions through the gateway are recorded and how long they may stay idle. Input recording, idle time and the banner apply to new sessions only; running sessions keep theirs.
The page is one form with the Save and Reset buttons. All values are saved at once; every changed value is written to the audit log as a setting.change event (the old and the new value). If another administrator saved the form while you were editing, you will see The record was changed by another administrator — open it again.; open the page again. An invalid number: Enter a whole number from … to ….
| Section / field | What to enter | Default / range |
|---|---|---|
| Recording → Keep recordings, months | How many months to keep session recordings. Older recordings are deleted by the daily sweep; every deletion is an audit event. A change takes effect at the next sweep; the console shows its time (A changed term applies at the next sweep: …). | 12 months; 1–120 |
| Record input | The Keep what users type, not only what they see switch. For SSH, the typed characters are kept. Warning: This also keeps passwords typed at sudo prompts. Typed commands are visible anyway, because the server echoes them. | Off |
| Sessions → Close after no input, minutes | After how many minutes without input the gateway closes an SSH session. The person sees the reason. Applies to new sessions. | 30; 5–1440 |
| Banner before the shell | The text a person sees at the start of every SSH session; it is recorded as well. Empty — the built-in session recording notice in the default console language. | Empty; up to 2000 characters, no control characters except a line break and a tab (The banner is up to 2000 characters, without control characters.) |
| RDP sessions → Longest RDP session (hours, 0 = no limit) | The maximum length of an RDP session. When it runs out, the session ends cleanly and the recording is signed. | 0 (no limit); 0–168 |
| Close an RDP session after no input, minutes (0 = as for SSH) | The idle time of an RDP session. 0 — use the SSH idle time set above. | 0 (as for SSH) or 5 to 1440 |
| Record keystrokes in RDP sessions | The Keep what users type in the remote desktop, not only what they see switch. Warning: A recorded key can be part of a password: the signed recording is then readable evidence of it. Applies to new sessions. | Off |
| Index typed text for search | The Makes “who typed this” searchable; needs keystroke recording switch. Warning: The index holds the typed text in readable form, passwords included, and is deleted with the recording. Layouts it does not know are counted, not read. | Off |
| File transfer → Largest file, MB (0 = no limit) | The file size at which a transfer is stopped. The file's line in the log reports it. Applies to new sessions. | 0 (no limit); 0–1048576 |
| All files in one session, MB (0 = no limit) | The total of all files in one session. | 0; 0–10485760 |
| Keep file copies, days | How many days to keep file copies. No longer than the recordings (the limit is shown in the hint: the recording term × 30 days). They are deleted by the daily sweep. If you raise the term above the limit: Copies cannot be kept longer than the recordings (N days). | 90; 1–3650 |
Which changes require identity confirmation
A change that weakens oversight or affects privacy requires a fresh confirmation of identity (entering the password and code again, valid for 10 minutes). Changes that tighten things do not require confirmation.
- switching on SSH input recording (Recording what people type needs your password and code again.);
- switching on keystroke recording in RDP (Recording keystrokes needs your password and code again.) or the typed-text index (Indexing typed text needs your password and code again.);
- shortening the recording term; raising the SSH idle time; raising or removing the RDP session length limit; raising the RDP idle time; raising or removing the limit on file size and on the per-session total; shortening the term for keeping copies;
- changing the banner text (any change of the banner's text), because any other text could remove the phrase “the session is being recorded”.
Other cases: Confirm who you are before this change: … It lowers session protection. and the Confirm who I am link.
The session text indexes (for SSH — always when input recording is on; for RDP — when “Index typed text for search” is on) contain what people typed, passwords included, and the auditor's search passes the phrase they entered as a query parameter. If the slow-query log (log_min_duration_statement) is enabled in the PostgreSQL that holds the gateway database, by default it writes such queries together with their parameters (log_parameter_max_length = -1). The typed text and the search phrases then end up in the PostgreSQL server log — beyond the gateway's retention term.
Set log_parameter_max_length = 0 for the gateway database (and leave log_parameter_max_length_on_error at its default, 0), or keep the slow-query log off. In the RDP text columns the planner statistics are disabled (SET STATISTICS 0), so that ANALYZE does not copy frequent typed words into pg_statistic.

Settings: VNC
The /system/vnc page (the VNC tile, “Sessions and protocols” group). Only an Administrator sees and changes it. Hint: Limits for VNC sessions through the gateway. A change applies to new sessions only; running sessions keep theirs.
Listener
The first block shows whether the gateway is ready to accept connections from VNC clients. It is read-only: The listener is set in the gateway's configuration file (vncListen and vncAdvertisedName) and is changed there; it cannot be changed here. Fields: State, Host (the name that the gateway gives to clients — vncAdvertisedName), Port.
| State (State) | What it means |
|---|---|
| Off | gateway.json has no vncListen: VNC access through the gateway is switched off. |
| Listening | The gateway accepts VNC connections. |
| Address not in the certificate | The name from vncAdvertisedName is not in the gateway certificate: clients that check the name will refuse to connect. The message: The VNC address clients are told is not in the gateway certificate. Issue a certificate with this name or correct the name. |
| Could not bind | The port is in use or unavailable. |
| The session worker cannot run on this host (socket hand-over). | The separate VNC session worker process does not work on this host. |
Limits and parameters
| Section / field | Meaning | Default / range |
|---|---|---|
| Connections and limits → VNC sessions at once | How many VNC sessions at the same time across the whole gateway. | 64; 1–1000 |
| Idle timeout (minutes) | The session is closed after this many minutes without input. | 30; 1–1440 |
| Longest session (hours, 0 = no limit) | The maximum length. | 0; 0–168 |
| Clipboard limit (KiB) | The largest size of text passed through the clipboard. | 1024; 1–20480 |
| Sign-in handshake limit (seconds) | How many seconds the client is given to negotiate and sign in. | 10; 5–60 |
| Longest screen update (seconds) | The longest pause in screen updates before the session is closed. | 60; 10–600 |
| Protection → A console ticket works only from the console's address | The one-time VNC code works only from the address from which the console was opened. Switching it off weakens protection. | On |
| Live view and playback → Live view, frames per second | The frame rate limit of the live view. A slow viewer gets fewer frames, but not an error. | 8; 1–30 |
| Playback and export jobs at once per person | How many open pictures and exports one person can hold. Extra ones are refused and go to the audit. | 4; 1–64 |
| Hold an idle period longer than, seconds | An idle period longer than this is shown as a single pause in playback and export. | 5; 1–300 |
| Memory per live viewer, MiB | Memory for one live-view viewer. A viewer who falls behind the stream gets whole pictures instead of every change. | 16; 1–256 |
| Video export → Video export, frames per second | The frame rate of the exported video. Higher — a larger file. | 10; 1–30 |
| Video exports at once, whole gateway | How many exports at the same time across the whole gateway. | 2; 1–8 |
| Longest video, minutes (idle periods squeezed) | An export that would be longer is stopped and nothing is delivered. | 240; 1–1440 |
| Largest video file, MiB | The largest size of an export file. An export that exceeds the limit is stopped. | 2048; 1–65536 |
| Burn the capture time into exported videos | The real date and time of the recording are written into the corner of every frame. It changes pixels; on the export page the choice can be overridden. | On |
A value outside the range: Enter a whole number from … to …. Raising limits in a way that weakens protection (the number of sessions, idle time, length, clipboard size, the handshake and update limits, the number of exports, viewer memory) and switching off the binding of the code to the address require identity confirmation: Confirm who you are before weakening a limit. Removing the length limit (0) is also a weakening. The playback and export parameters of frame rate, length and size are not affected by this list. After saving: Saved.

Settings: databases
The /system/databases page (the Databases tile, “Sessions and protocols” group). Only an Administrator sees and changes it. Hint: Limits, pass lifetimes and protections for database connections through the gateway. A change applies to passes and connections made after the save; ones already open keep what they started with.
A database user gets a “pass” on the “My access” page and enters it in the client as the password (see Connecting to databases). The pass is shown once but is not single-use: it can open several connections during its validity period (8 hours by default, no more than 16 connections), and the first connection must be made within 2 minutes of it being shown. The settings define the lifetime of passes, the number of connections and the protection.
| Section / field | Meaning | Default / range |
|---|---|---|
| Passes → First use of a pass within (seconds) | Within how many seconds of being issued a pass must be used for the first time. | 120; 30–600 |
| A pass opens connections for (hours) | For how many hours after first use a pass allows connections to be opened. | 8; 1–24 |
| A pass ends after this many minutes with no open connection | The pass ends if there has been no open connection for this many minutes. | 30; 5–240 |
| Connections and limits → Connections per pass | How many connections can be opened with one pass. | 16; 1–64 |
| Database connections, gateway-wide | The total number of database connections through the gateway. | 500; 1–10000 |
| Database connections per person | Connections per person. | 32; 1–256 |
| Close a database connection after this many idle minutes | The idle time after which a connection is closed. | 60; 1–1440 |
| Longest database session (hours, 0 = no limit) | The maximum length of a session. | 0; 0–72 |
| Largest statement (MB) | The largest client message. | 64; 1–1024 |
| Gateway memory for statements in flight (MB) | Gateway memory for statements “in flight”, for the whole gateway. | 512; 64–8192 |
| Statement text kept in the log (KB) | How many kilobytes of statement text are kept in the log. Hint: A smaller value keeps less evidence of what was run, so lowering it asks you to confirm who you are. | 64; 4–1024 |
| Protection → Require channel binding from PostgreSQL clients | For PostgreSQL the client must prove channel binding (SCRAM-SHA-256-PLUS). It protects against channel substitution. Switch it off only if the client cannot do it. | On |
| Require Encrypt=Strict from SQL Server clients | For SQL Server the client must connect in Strict mode (TDS 8.0). If you switch it off, a pass opens only one connection (This pass opens one connection only (Encrypt=Strict is off on this gateway).). | On |
| Version the gateway announces to MySQL clients | The MySQL version string that the gateway reports to clients. Programs and scanners read it. Hint: Programs and scanners read this text to tell what they are talking to. Changing it asks you to confirm who you are. | 8.0.40-bursu-pam; 1–60 characters: letters, digits and . + _ - (Use 1 to 60 letters, digits and . + _ - only.) |
New values apply to passes and connections created after saving; those already open keep their old ones. Changes are written to the audit as the db.settings event (the changes and the list of weakenings). Raising a limit, extending a term, switching off a protection (channel binding, Strict), reducing the statement text and changing the version string are weakenings: These changes weaken protection and need you to confirm your password: … and the Confirm who I am link. When two administrators edit at the same time: The record was changed by another administrator — open it again.

Access requests
Not everyone needs permanent access to a server. For rare tasks it is more convenient for a person to ask for access for a limited time themselves, and for someone else (an approver) to make the decision. This is how access requests work. This section describes the user's side: how to ask for access, how to follow a request, how to extend access or give it back early. The approver's side is described in the section Approving requests, and emergency access without approval in the section Emergency access.
How it works
- The on-request rule (By request) is created by an administrator in the Access rules section. On its own it permits nothing. It only defines who may ask, for which servers and accounts, who approves, how many approvals are needed, for how long one may ask, and how long to wait for a decision.
- A request is a particular person's ask for access to a particular account on a particular server for a stated period. A request always has a reason (text) and sometimes a ticket number.
- Access appears when the request is approved (or approved automatically, if the rule is set up that way). The gateway itself records a separate permission for that period. It cannot be changed: it either ends at its time or is revoked.
You must have the User role, your account must be enabled, and a password change must not be required. You can ask only for what at least one on-request rule offers you. If nothing is offered, the list says: No server can be requested now. Ask the administrator if you need access.
Request states
| State | What it means |
|---|---|
| Waiting | The request has been filed and there is no decision yet. If nobody decides within the time the rule sets (240 minutes by default), the request becomes Expired. If you gave a start time in the future and it arrives before a decision, the request also expires. |
| Approved | The request is approved and the access is recorded. From then on, by the clock, it is Scheduled (not yet started), Active (running) or Ended (the period is over). These three stages are not stored separately; they are worked out from the time. |
| Denied | An approver refused. One refusal is enough. The reason for the refusal is visible in the request card. |
| Cancelled | The request was withdrawn: by you, or automatically by the gateway if the rule was switched off or stopped offering this access. |
| Expired | Nobody answered in time. |
| Revoked | Access that had already been granted was revoked before the end of its period (by you, an administrator or an approver). |
Requesting in the web console
The /access/requests page opens from the My access menu (the Access requests tab). Any signed-in user can see it. The page has two tabs: Available to request and My requests.

The “Available to request” tab
The table shows everything you may ask for. Columns: Server, Account, Limits (the longest period, for example Up to 8 h), Approval and Access period (the window of time in which the rule permits access at all, if it is limited).
The Approval column says one of two things:
- Approvals needed: N and below it Approvers who can decide: M — how many approvals are required and how many people are currently entitled to give them.
- Granted at once; the reason is recorded — the rule is automatic: access is granted at the moment of the request, but the reason is still recorded.
At the end of the row is the Request access button. If you already have a pending request for this pair, a Request pending label stands in place of the button. If an administrator has allowed you emergency access to this pair, there is also a red Emergency access button next to it (see Emergency access).
The “Request access” window
The window opens with the Request access button. At the top it says: Server …, account ….
| Field | What to enter | Default / limits |
|---|---|---|
| Start | When the access should begin. Two options: As soon as it is approved (right after approval) or At a time I state (date and time fields appear). | The default is right after approval. The stated time must be later than the current time and no more than 7 days ahead. Hint: At most 7 days ahead. The access period starts then, not when the request is approved. The whole requested interval must lie inside the window of time that the rule permits. |
| Duration | Pick a ready-made period: 30 min, 1 h, 2 h, 4 h, 8 h, 1 d — only those no longer than the rule's limit. For another period pick Other, minutes and enter the number of minutes. | The suggested value comes from the rule (60 minutes by default). From 1 minute to the rule's limit (480 minutes by default; the largest possible limit is 20160 minutes, 14 days). The hint under the field: At most …. |
| Reason | Why you need the access. Approvers and the audit will see it. Be specific: what the work is, on which server, why now. | Required. From 1 to 1000 characters; a counter beside it ({0} of {1}, for example 12 of 1000). |
| Ticket number | The number of a ticket or incident in an external system. | The field is visible only if the rule requires or allows it. If the rule requires a number, it is mandatory; if the rule sets a format, a hint Format: … stands under the field and the number must match it. No more than 64 characters, one line. If the rule does not use a number, there is no field. |
The Send request button sends the request. The result is a message at the top of the page: Request … sent. (wait for a decision) or Request … sent and approved automatically. (the rule is automatic, access has already been granted).

What the gateway checks on submission
- No more than 10 pending requests per person. More is refused: You have too many requests waiting. Wait for a decision or cancel one.
- If you already have a pending request for the same pair, a second one is not created: the gateway shows the message You already have a request waiting for this server account. and points to the first.
- If you already have the right to connect for the whole requested interval, the request is rejected: You already have access to this server account for that whole period.
- If fewer people can approve than the quorum needs, the request is not accepted: Nobody can approve this request now. Contact the administrator. You are never counted as an approver of your own request.
- If several rules apply to the pair, the strictest is the governing one: first by the largest number of approvals needed, then by the shortest period, then the oldest.
- If the server is beyond the number the licence was bought for, or the licence has ended, the request is not accepted (the messages This server is beyond the number of servers the gateway's licence allows. Contact the administrator. and The gateway's licence has ended. Contact the administrator.).
A refusal is written to the audit log as a request.create event with the outcome “denied”. The list of messages is in the Troubleshooting chapter.
The “My requests” tab
Your requests, newest first. Columns: No., Server, Requested, Access period, State. Under the row you can see who decided and when (Decided by …), and if the access was revoked, who revoked it and why (Revoked by …: …). While a request is waiting, the hour up to which to wait is shown: Decision due by …. An empty list: You have made no requests.
| Button | When it is there | What it does |
|---|---|---|
| Cancel request | While the request is in the Waiting state. | Asks Cancel request …?, then withdraws the request. The message: Request cancelled. |
| Release access | While approved access has not ended: it is running (Active) or has not yet started (Scheduled). | Asks End this access now? Your open sessions end at once. After confirmation the access ends and open sessions are closed. The message: Access ended. This button is there only for the person who requested; an administrator and approvers revoke access in another way (see When access ends or is revoked). |
| Extend | While the access is running (Active), there is no pending extension for it yet, and some on-request rule still offers this “server and account” pair (if the rule was switched off, the button disappears). | Opens the same Request access window. An extension is a new request that starts at the moment the current access ends and is considered like any other: Extending files a new request that starts when this access ends; it is judged like any other. |
When you open the My requests tab, all decided requests are marked as seen and the notification about them in the bell disappears (Your requests that were decided: …).

When access ends or is revoked
- At its time. Access is valid for exactly the approved interval. When it ends, the gateway closes the sessions that were held by this access.
- A warning. A few minutes before the end (5 by default, set on the Notifications page, 0–30; 0 switches it off) the gateway writes the line
Your granted access ends in … minutes. File an extension request if you need more time.into the open SSH session. The BURSUcm client shows the same warning as a pop-up message. - Revocation. Access can be taken back early by the person who requested it (Release access), by an administrator (the
/rules/grantspage, titled Grants) and by an approver of that rule (the Active grants tab on the Approvals page). Sessions on this access are closed at once, andYour granted access was revoked by …. The session is closed.is written to the terminal. Extensions that depended on the revoked access are cancelled (pending ones) or revoked as well (approved ones). - The rule was switched off. All pending requests under it are cancelled, and an e-mail is sent about it. Access already granted remains, unless the administrator ticked Also revoke access already granted from this rule.
Access granted on request holds only the sessions that are based on it. If you also have a permanent rule, the connection will keep working after the request ends — the gateway closes only what was held by the access that has ended.
If you connect over plain SSH
If you have no access now but can request it, the gateway refuses the connection and itself suggests the way: Access is not allowed now. You can request it in the web console: … (with the console address) or, if the console address is not set, … under My access, Access requests. File a request on the /access/requests page and connect again after it is approved.
Requesting from BURSUcm
The BURSUcm client (Windows and Universal) can file and follow requests without the web console. The gateway must be connected as a directory source (see BURSUcm).
- A second root, On request, appears in the connection tree. It lists the servers to which you have no access but can request it. Each row has the explanation Access to this server is given on request. The state is shown by icons: waiting, Approved. Access starts … (approved, will start later), or until HH:mm for running access.
- A double click or the Request access... item opens the Request access window (for an extension it is called Extend access). The fields are the same as in the console: Server (read-only), Account (a list, if there are several accounts), Start (When approved or At a set time with a date
YYYY-MM-DDand a timeHH:MM), Duration (with the Custom... option and the hint minutes, 1 to …), Reason with a counter, Ticket (or Ticket (optional)) and Format: …. The buttons: Cancel, the red Emergency access (only if emergency access is allowed) and Send request. - Under the window title the client says how the request will be considered: Approved automatically; the request is recorded. or Approvals needed: N. People who can approve: M., and below it Rule: ….
- After sending, the same window turns into a status panel: Waiting for approval · X of Y approved · expires …, Approved · starts …, Approved · active until …, as well as the final lines This access has ended., The request was denied., The request was cancelled., Nobody answered in time; the request expired., The access was revoked. The panel's buttons are Cancel request and Connect now (when the access is running). If the gateway is unreachable, the panel says cannot reach the gateway, trying again and keeps polling; if polling has stopped — The status is no longer updated. Open My access requests to see it.
- The File → My access requests... menu opens the list of your requests (titled My access requests, hint Your requests, newest first. A running access can be given back or extended.) with the columns Server, Account, State, Period, Answers and the buttons Refresh, Release, Extend..., Cancel request, Close. When access is given back, the client asks: Give this access back now? Sessions running on it end. An empty list: You have no access requests yet. Ask for access from the On request list.
- The request stages in the client: Waiting for approval, Scheduled, Active, Ended, Denied, Cancelled, Expired, Revoked.
- The pop-up warning before the end: Your access to … as … ends at …. Extend it in My access requests. After the end: Your access to … as … has ended. with the option to request access again at once.
The client checks the fields itself before sending and shows clear messages: A reason is required., The reason must be at most 1000 characters., Enter the ticket number., The ticket number must be at most 64 characters., The duration must be from 1 minute to …, The start must be later than now., The start can be at most 7 days ahead., The period must lie inside the time this access may be requested for. The gateway's answers are shown in the same phrases as in the console (see Troubleshooting).
On a server where the gateway checks the commands typed, the client itself switches tmux off for that connection and types nothing into the shell on its own behalf. The terminal tab shows the Command control is on icon. Details are in the section Command control.
Approving requests
A section for people with the Approver role. It describes the /approvals page (menu Access → Approvals), on which an approver decides on access requests and confirms commands held by command control. The approver's usual working day is described in the section The “Approver” role.
Who can approve
A request can be decided by a person who at the same time:
- is enabled and holds the Approver role;
- is named as an approver in the on-request rule — personally or through a group (the rule's Approvers field);
- is not the author of that request. Deciding your own request is impossible: the page simply does not show it.
If you cannot decide a request or it does not exist, the page answers the same way — “not found” (HTTP 404). This way an approver does not learn about other people's requests they are not admitted to. An administrator does not see the Approvals page: the Administrator and Approver roles are incompatible (more in the section The “Approver” role).
The page tabs
The tabs come in this order. Each list is limited to 100 rows.
| Tab | What it shows |
|---|---|
| Waiting for me | Requests waiting for your decision. An empty list: No request waits for your decision. |
| Commands (the number in brackets) | Command lines that command control has held and that await confirmation by a second person. See Confirming commands. |
| Active grants | Running access under the rules where you are an approver, with the Revoke button. An empty list: No active grants. |
| History | What has already been decided: Decision, By, When. An empty list: Nothing has been decided yet. |
The number on the badge in the side menu counts only requests waiting for a decision. Commands awaiting confirmation are not included; they are covered by the Commands tab and the bell.

The request card
The title is Request №. The card has: Requester, Server and account, Access period, Reason, Ticket, Rule, Approvals: X of Y and Decisions so far (who has already approved or refused, with comments; while there is nobody — None yet.). Two references are added to help you judge: This person's last five requests and This person's last five sessions on this server.
If the rule's conditions have changed since the request was filed, a warning above the buttons says what will happen when you approve: … now governs this access, so approving will cancel this request., No rule offers this access any more, so approving will cancel this request., The ticket no longer meets the rule's terms, so approving will cancel this request. or The rule now allows at most … minutes: the grant will be that long.
Approve or deny
| Element | What to enter | Default / limits |
|---|---|---|
| Shorter duration, minutes (optional) | If you agree to a shorter period than was asked for, enter it. Hint: Never longer than requested. With several approvers the shortest proposal wins. | Empty = as requested. From 1 minute and shorter than requested. |
| Comment | An explanation of the decision. | Optional when approving. Mandatory when denying (A comment is required to deny a request.). No more than 1000 characters. |
| Approve | The approve button. It asks Approve access for … to …? | Requires a fresh confirmation of identity (see below). |
| Deny | The deny button. | Identity confirmation is not needed. One refusal is enough to end the request. |
Approving requires that you have recently confirmed who you are (the window is valid for 10 minutes). If there is no confirmation, the page says Approving needs you to confirm who you are first. Denying does not. and shows the Confirm who I am link; after confirming, you return to the same request.
Results: Your approval is recorded; more approvals are needed. (the quorum has not been reached yet), Approved. The access is granted. (the quorum is reached, access granted), Request denied.
Quorum. The number of approvals needed is set by the rule (from 1 to 5, from different people). A request gets access when the needed number of approvals has been collected from people who are still entitled to approve at that moment. If one of those who voted has meanwhile lost the role or been removed from the rule, their vote is not counted; in the history this shows as Vote dropped: this approver no longer qualified at the final count. When approvers proposed different periods, the shortest of those proposed is granted.
Waiting. If a request is not decided within the time the rule sets (240 minutes by default), it expires.
The “Active grants” tab
For each access you can see the person, server, account and period. The Revoke button asks Revoke the access of … to …? Open sessions end at once. and accepts the optional field Reason (kept in the log) (no more than 1000 characters). Revoking closes open sessions, and extensions that depended on this access are cancelled or revoked. Messages: Access revoked. and Access revoked, and … extension(s) that depended on it. If the access has already ended or been revoked, it will say This access has already ended or was taken back.
Confirming commands
If the command control policy contains an Ask a second person rule, the line the user typed is held until the confirmer allows it (see Command control). Such lines are shown on the Commands tab. The list updates itself, without reloading: New commands appear here as soon as they are held. The page does not need to be reloaded. If the connection is lost: The live connection was lost. Reload the page to see what is waiting.
- When you open the tab, you are sent to identity confirmation if there is no fresh confirmation. The page shows how long it is still valid: Your confirmation is valid for another …. When it has run out: Your confirmation has run out, so Allow is off until you confirm again. A command does not wait for you to confirm, so do it in advance.
- The card: Command held for confirmation, Person, the server and account, Policy and entry, Confirmations: X of Y, Time left: … s, Command (passwords and keys are hidden where they can be recognised).
- A reminder: You confirm a text, not a program. Aliases, functions and key bindings can make a line do something other than what it says.
- Last screen rows — the last rows of the session screen (if the policy includes Show the last screen rows to the confirmer). They are labelled From the target: the server itself wrote them, it can fake any output, so they prove nothing.
- Lines read earlier in this session — earlier lines of the session. Lines that change commands or keys (
alias,function,bind) are marked redefines a command or a key. - The Watch live link is there only for a person who is also an Auditor: only an auditor can watch a session live.
| Element | What it does |
|---|---|
| Allow | Allows. Asks Allow … to run this command on …?, requires a fresh confirmation of identity, a comment is optional. If several confirmers are needed: Your Allow is recorded. … more needed. When the quorum is reached: Allowed. The held line is released now. |
| Deny | Refuses, a comment is mandatory (A comment is required to deny a command.). Identity confirmation is not needed. The result: Denied. The line was stopped. |
You cannot confirm your own session: This is your own session. Another person has to decide. If the time runs out, the command is refused automatically (a timeout is a refusal). If the line changed while it waited, the confirmation is invalid: The held line is not the one you were shown, so it was refused. Right after the gateway restarts, the page does not accept decisions until the check of waiting commands is finished: The decision could not be saved. Try again.

The bell and notifications
In the console's top bar is the Alerts bell. An approver always has it. An ordinary user sees it only when there is something to show. The items that matter for this section:
- Requests waiting for your decision: … — a link to the Waiting for me tab.
- Commands waiting for your confirmation: … — a link to the Commands tab.
- Your requests that were decided: … — for the requester; a link to My requests.
- For an administrator: Rules that no one can approve now: …, New approvers without a console change: …, Directory roles refused (Administrator wins over Approver): ….
The other items in the bell are described in the sections Emergency access, Notifications and Command control.
Emergency access
Emergency access (in English break-glass, “break the glass”) is a way to get onto a server without approval when the work cannot wait. It is designed so that it cannot be used unnoticed: the person confirms who they are with a fresh code from an authenticator app, states a reason, and everyone responsible is alerted at once. Every use must afterwards be reviewed by another person.
Emergency access skips the approvers. Switch it on only for the people and the server entries who really need it, and not before at least one alarm channel is set up (see below).
How an administrator switches emergency access on
Emergency access is configured in the on-request rule (the Access rules section), in two fields:
| Rule field | What to enter | Default / limits |
|---|---|---|
| Emergency access length (minutes) | For how many minutes emergency access is given. Hint: 15 to 240. Leave empty to switch emergency access off for this rule. The access ends at its time and is never extended. | Empty — emergency access is off for this rule. From 15 to 240 minutes. |
| Who may use emergency access | Mark people from the list above in the rule form. Hint: Mark people from the list above. They need a confirmed authenticator-app code, and the gateway asks for a new code at every use. | Nobody marked — nobody can. |
Emergency access can be switched on only when an alarm will really get through: if no channel (SIEM export, e-mail or webhook) has delivered in the last 24 hours, the gateway refuses: Cannot be switched on: no alarm channel (SIEM export, e-mail or webhook) has delivered in the last 24 hours. Set one up under System, send a test and try again. First set up the channels on the Notifications page. Widening the circle of people, servers or accounts while emergency access is on requires a fresh confirmation of identity.
How a person uses emergency access
Conditions: you are marked for this “server — account” pair, and you have a confirmed authenticator app (TOTP; set up in your profile). If there is no app: Emergency access needs a confirmed authenticator app. Set one up in your profile first.
- Open the window. On the
/access/requestspage, the Available to request tab, press the red Emergency access button in the row of the pair you need (in BURSUcm, the Emergency access button in the request window). - Read the warning. This skips approval. You will be let in to … as … for … minutes. The use is recorded and must be reviewed afterwards. Use it only if the work cannot wait. Below it says who will be alerted: The moment you confirm, Approvers, Auditors and Administrators are told in the console, the emergency alarm recipients by e-mail or webhook, and the SIEM export records the event.
- Fill in the fields. They are listed below.
- Confirm. Press Use emergency access. On success: Emergency access granted until …. This use will be reviewed. The access is valid from that moment for the period set by the rule and is not extended.
| Field | What to enter | Default / limits |
|---|---|---|
| Reason | What is happening and why it cannot wait for approval. Hint: At least 20 characters: what is happening and why it cannot wait for approval. | Required, from 20 to 1000 characters. |
| Ticket number | The ticket number, if the rule requires it. | As in an ordinary request; no more than 64 characters. |
| Code from your authenticator app | The six-digit code from the app (a space is allowed). Hint: A new six-digit code, not the one you signed in with. A recovery code does not work here. | A fresh code is needed at every use. The code you signed in with and recovery codes do not fit. A wrong code counts as a failed attempt. |
| I understand that this use will be reviewed. | A tick box. | Mandatory. |
Limits
- No more than 2 uses per person in 24 hours (this value cannot be changed in the console).
- No more than one running emergency access per person and server: You already have emergency access to this server account.
- Wrong codes are counted. If the account is locked because of wrong codes, the form reports the lock and the time when it ends. In addition, submitting the emergency access form is limited to 10 attempts a minute per person (an HTTP 429 response).
- A use is not refused because the alarm channels are silent: the event is recorded all the same, and the log keeps whether a channel was alive.
- The licence is checked just as for an ordinary request.
If a use is refused, the form comes back with a message and the code field is cleared. The possible messages: Emergency access is not available to you for this server account., Emergency access needs a confirmed authenticator app. Set one up in your profile first., Write a reason of at least 20 characters., Enter the six-digit code from your authenticator app., The code is wrong or was already used., You already have emergency access to this server account., The limit of emergency accesses is reached. Contact the administrator.
What everyone sees during and after
- The person. In the console, a banner is visible on every page: Emergency access is active until …. This use is recorded and will be reviewed. In an SSH session that is held only by emergency access, the terminal shows the line
Emergency access: this use is recorded, the responsible people have been told, and it will be reviewed.Before the end they get the same warning as with ordinary access; in BURSUcm it reads Your emergency access to … as … ends at …. It cannot be extended. Emergency access cannot be extended; it has no Extend button, only Release access. - Approvers, auditors and administrators. A red item Emergency access used and not yet reviewed: … appears in the bell; an administrator additionally sees Emergency access reviews overdue: ….
- The emergency alarm recipients (the list on the Notifications page) receive an e-mail
Emergency access was used: request #…and a webhook. - SIEM. The use gets into the export as a separate event.
- Commands. For sessions that are held only by emergency access, the built-in policy Break-glass audit (built in) applies automatically: the gateway records every line it can read. It cannot be changed or deleted. Passwords typed at a
sudoprompt are not stored: the input is not recorded.
Review after use
Every use must be reviewed within the term set by a setting (72 hours by default; the value cannot yet be changed in the console). The review may be done by an enabled Approver or Auditor who is not the person who used the access. An administrator alone cannot review.
The /audit/breakglass page (menu Audit → Emergency access) is available to the Administrator, Auditor and Approver roles. Three tabs:
- Waiting for review — uses without a review;
- All uses — all uses (30 per page);
- Command list — the command lines read by the gateway in the sessions of the selected use.
The table columns: Person, Server and account, Reason, Ticket, Used, Sessions, Review. The review state: Waiting for review (Review due by …), Overdue (Review overdue since …) or Reviewed (Reviewed by … on …). The Sessions and Command list links are visible only to an auditor and an administrator; an approver sees the text of commands only on this page. An empty page: Emergency access has not been used.

The review button opens the Review this use window:
| Field | What to enter | Default / limits |
|---|---|---|
| Verdict | One of three options: Justified (justified), Not justified (not justified), Needs follow-up (needs follow-up). | Required. The verdict Not justified is written to the audit as an unsuccessful event. |
| Note | What you checked and what you found. Hint: Say what you checked and what you found. A note is required and is kept with the verdict. | Required, no more than 1000 characters. |
The Close the review button closes the review: Review closed. It cannot be closed again (This use has already been reviewed.), and you cannot close the review of your own use (You cannot review your own use.); to the person who used the access, the page says: Another Approver or an Auditor reviews your use of emergency access; you cannot close the review. The review also works when the licence is exhausted.
Notifications
The /system/notifications page (menu System → Settings → Notifications) is for the administrator only. It sets how the gateway tells people about requests, decisions and emergency access: by e-mail and by a signed webhook. The failure of a channel never blocks a request: the gateway retries delivery and raises an item in the bell.
The mail password and the webhook secret are write-only: after saving they are no longer shown. If a value is saved, the text under the field says A value is saved. Leave the field empty to keep it; type a new one to replace it.

Page fields
| Field | What to enter | Default / limits |
|---|---|---|
| Console address | The console address at which people open it, for example https://pam.example.ge. It goes into e-mails and into the SSH refusal phrase. | https only, no path. Empty — e-mails without a link. A link never approves anything: a decision requires signing in to the console. |
| SMTP server | The name or address of the mail server, without spaces. | Needed together with Sender address: Enter the SMTP server and the sender address together. |
| Port | The mail server port. | 587. A whole number from 1 to 65535. |
| Encryption | STARTTLS (usually port 587) or TLS from the start (usually port 465). | Mail is never sent without encryption. For STARTTLS the server must offer it, otherwise the message does not go out (downgrade protection). The certificate must be valid. |
| Sender address | The sender's address, for example pam@example.ge. | The form name@example.ge, without a display name, spaces or quotation marks. |
| User name | The mail server login. Empty — no sign-in needed. | Up to 254 characters, no control characters. |
| Password | The mail server password. | Write-only. An empty field keeps the saved value. |
| Address (https) (webhook) | The receiver's address, for example https://chat.example.ge/hooks/pam. | https only, no login or password in the address. Redirects are not followed. The receiver's response is not shown; decisions cannot be made through the webhook. |
| Signing secret | The secret used for signing. | From 32 to 512 characters, no line breaks. Write-only. |
| Allow a receiver on an internal network | A tick box. Tick it only if the receiver is inside your network (10.x, 172.16–31.x, 192.168.x, 100.64.x, fc00::/7). | Off: addresses inside your network are forbidden. Addresses of the gateway machine itself (127.x, ::1), link-local and special-purpose ranges are always forbidden. Switching it on requires a fresh confirmation of identity. |
| Recipients (the Emergency access alarm block) | E-mail addresses separated by commas; they receive an alarm at every use of emergency access. | Up to 10 addresses. |
| Warn before a grant ends, minutes | How many minutes before the end of granted access to warn the person in an open session. | 5. From 0 to 30; 0 switches the warning off. |
| Wait for a command confirmation, seconds | How many seconds a command waits for confirmation by a second person. | 120. From 10 to 600. A single value for all policies. |
| Waiting for a decision, minutes and Longest access, minutes | Read-only: what new rules start with. They must be changed in the rule itself. | 240 and 480. |
A save that sends data to a new place requires a fresh confirmation: a change of the mail server, port or encryption, a new webhook address, switching on “internal network”, a change of the console address, new alarm recipients. The message: Confirm who you are before this change: …. It sends notifications somewhere new.
Testing and delivery state
- Send a test e-mail sends a test message to your account's address (subject
BURSU PAM test message). The test uses the settings already saved: Save the settings first: the test uses the saved ones. If your account has no address: Your account has no e-mail address. Add one in your profile first. - Send a test webhook sends a test message to the saved address.
- The result: The test message was sent. or The test message was not sent: … with the reason (the list of reasons is in the Troubleshooting chapter). While the licence does not allow changing settings, tests are refused.
- The Delivery card shows, per channel — E-mail, Webhook and SIEM export — the state and the time Last delivered (Never if nothing has been delivered yet; not set up if the channel is not configured).
Which events and to whom
| Event | Who receives the e-mail |
|---|---|
| A request waiting for a decision is filed | The rule's approvers (no more than 50 recipients). Subject: Access request #… is waiting for your decision. |
| A request is approved, denied, expired, revoked, cancelled by the gateway | The person who asked. Subjects: Access request #… was approved / … was denied / … expired without a decision / Access granted by request #… was revoked / … was cancelled. If the access was revoked by the requester themselves, no e-mail is sent to them. |
| Emergency access is used | The emergency alarm recipients. Subject: Emergency access was used: request #…; the e-mail states the review deadline. |
Each recipient gets the e-mail in their own language (the language of their account), and if it is not set, in the gateway's default language. The e-mail has no “approve” button: it leads to the console and says that a decision can be made only after signing in.
The webhook receives every event as JSON with the fields id, event, at; if the event concerns a request, request, state, requester, server, account, period and reason are added (a long reason is truncated). Headers: X-Bursu-Timestamp (the time in Unix seconds) and X-Bursu-Signature: v1=…, where the value is an HMAC-SHA256 of the string “time, dot, body” with your secret. The receiving side must check the signature and reject old messages. The User-Agent is BURSU-PAM-webhook/1.
Delivery. Messages sit in a persistent queue and are resent after a failure: up to 20 attempts with pauses from 1 second to 5 minutes. The wait for the mail server is 60 seconds, for the webhook 10.
The bell
The items connected with this section: Notifications are failing: … (a channel is not delivering), No push channel (SIEM, e-mail, webhook) has delivered in the last 24 hours, so an alarm could go unheard. (an alarm may go unheard), Emergency access used and not yet reviewed: …, Emergency access reviews overdue: …. The usual path: open the Notifications page, look at the Delivery card, send a test.
Command control
Command control is a protective barrier and a log for people who work on servers through the gateway. The gateway reads the lines a person types in the terminal and, according to rules (policies), allows them, flags them, holds them until a second person confirms, refuses the line or closes the session.
Command control stops what honest people type by mistake or out of habit. It will not stop a determined person with a shell: an interpreter, less with a shell escape, an alias set before the session, and other tricks get around it. Real protection is a restricted account on the server itself (sudoers, a restricted role, TACACS+ on devices), access to single commands only, and session recording. The full list of ways around it is on the /help/commands page (the What command control cannot stop link) and below, in the section “What control cannot see”.
What works where
| Connection | What control does |
|---|---|
| An SSH shell with a terminal: bash, zsh, dash, BusyBox ash | Full control. The gateway holds Enter, reads the line from the screen, and also checks the keys typed (the stricter reading wins). A refused line is cancelled by pressing Ctrl-C instead of Enter, and the gateway checks that the screen was redrawn as the shell does after a cancel. |
A one-off command (ssh host 'command') | The line is checked as a whole before it runs. This is the most reliable case, and allow-lists work here. On a refusal the command is not run, a message is written to standard error, and the exit code is 126. Confirmation by a second person is impossible for one-off commands: such a command is refused. |
| Telnet and the command line of network devices (Cisco, Huawei, MikroTik) | A whole one-line command is checked. A line the person is still editing cannot be stopped yet: it is only recorded and reported. |
| fish, and everything inside tmux, screen, byobu | Recording and alerting only; stopping is not possible. |
| Databases | Alerts only. Nothing is blocked; alarms for the same rule in one session are merged once a minute. |
| SFTP/SCP, RDP, VNC | No command control. |
While a policy applies, only the environment variables LANG, LC_* and TZ are passed to the server; the rest are dropped. A shell without a terminal (ssh -T) is refused: there is nothing to read. The exception is a session held only by emergency access: there only the built-in policy Break-glass audit (built in) works, and a terminal is not required.
The “Command control” page
The address is /commands, menu Access → Command control. The page is seen by the Administrator and the Auditor; an auditor only reads, an administrator changes. At the top are an explanation, the What command control cannot stop link and the counter Commands waiting for confirmation: …. Four tabs: Policies, Pattern groups, Tester, Starter packs.

How it is organised: pattern groups and policies
- A pattern group (Pattern group) answers the question “what to look for”: a set of patterns, for example all variants of the delete command.
- A policy (Policy) answers the question “what to do”: whom and which servers it applies to, and in what order its entries are listed (an entry = a pattern group + an action). The first matching entry decides.
- Several policies can apply to one person on one server. Each judges separately, and the strictest result wins. A policy added later can only tighten.
Pattern groups
The Pattern groups tab: columns Group, Patterns, Syntax, Used by; the New group button. An empty list: No pattern groups yet.
| Field | What to enter | Default / limits |
|---|---|---|
| Group name | A name. | Required, up to 64 characters, unique (This name is already used.). |
| Syntax | Command (whole words) — a pattern made of words: rm -rf matches rm -rf /tmp but not rmdir; permutations of flags (rm -fr) are not covered. Or Regular expression — a regular expression over the last 4 KiB of the line. | For regular expressions: no more than 512 characters, no lookaround or backreferences; an expression that is too “expensive” is rejected when saving. |
| Ignore case | A tick box: do not distinguish upper and lower case. | — |
| Patterns | One pattern per line. | From 1 to 500 patterns, each up to 512 characters. Errors are shown with the line number (Line …: …). |
The Try it in the tester link opens the check. A group that a policy uses cannot be deleted (A policy uses this group. Take it out of the policy first.).

Policies
Addresses: /commands/policies/new (create), /commands/policies/{number} (card), /commands/policies/{number}/edit (edit). The card has Edit, the on/off switch (Enable / Disable), Delete and the What this affects now block (which servers and people currently fall under the policy). The built-in policy Break-glass audit (built in) cannot be changed, switched off or deleted.
| Field | What to enter | Default / limits |
|---|---|---|
| Policy name | The policy name. | Required, up to 64 characters, unique. The description is up to 1000 characters. |
| Protocols (on creation) | Shells and Telnet or Databases (alerts only). | Chosen on creation and not changed afterwards. For databases only Allow and Alert are possible. |
| Mode | Deny-list — whatever matches no entry is run (suitable for shells). Allow-list — whatever is not named is refused, and only one simple command is accepted (suitable for one-off commands and devices; it breaks prompts and programs). | Databases are always Deny-list. In an Allow-list, an Allow entry accepts compound lines (a pipeline, a redirection, a substitution) only with the Compound lines allowed tick box. |
| Enabled | Whether the policy is on. | — |
| The Who and what it applies to block: Everyone, People, Groups, Servers, Folders, Account names | Whom and where it applies. Everyone — all people, including future ones (tick it deliberately). Account names — the names of accounts on servers, one per line. | You must name both “whom” (people, groups or Everyone) and “where” (servers or folders): Name who it applies to (people, groups or Everyone) and where (servers or folders). An empty Account names field means any account. |
| The Entries block | Entries in order. For each: Pattern group + Action + Compound lines allowed. Buttons Add an entry, Move up, Move down, Remove. | No more than 200 entries; the first matching one decides. At least one entry is needed (Add at least one entry.) unless the Record every line the gateway can read tick box is on: a policy that only records lines can have no entries. |
| When a line cannot be read | Alert and let it run or Refuse. The cases: the screen was cleared, the prompt changed, the echo did not settle. | For an Allow-list and for any policy with an “Ask a second person” entry — Refuse; otherwise Alert and let it run. |
| When the command cannot be resolved | The same for a line in which the command is a variable, a substitution, a wildcard, a history reference, eval or source. | Refuse only for an Allow-list; otherwise Alert and let it run. An “Ask a second person” entry does not affect this value: if an unrecognised command must not slip past confirmation, choose Refuse explicitly. |
| Record every line the gateway can read | Record all lines read, not only the matching ones. | Off. The hint warns: switch it on only where people expect it, it is a “keystroke log under another name”. If the policy has an “Ask a second person” entry, the gateway records all lines read in any case, however the tick box is set. |
| Confirmers | The people and groups who confirm commands under an “Ask a second person” entry. Each must hold the Approver role and never confirms their own command. | Each must be an enabled person with the Approver role (Every confirmer must be an active person who holds the Approver role.). If there are no confirmers, nobody can confirm the command and it is refused. |
| Confirmations needed | How many confirmations are needed. | From 1 to 5. |
| Show the last screen rows to the confirmer | Whether to show the confirmer the last ten rows of the screen (escaped, up to 2 KB, not stored). | On. |
The entry actions:
| Action | What happens |
|---|---|
| Allow | The line is run. In an Allow-list, the Allow entries are the allow-list itself. |
| Alert | The line is run, and an event, a bell item and a SIEM message are created. |
| Ask a second person | The line is held until another person confirms it (the section Confirming commands). The one who typed it cannot confirm. |
| Refuse | The line is not run: the gateway cancels it and says so. |
| Refuse and end the session | The same, and the session is closed at once with the policy named. |
A save that makes control weaker requires a fresh confirmation: Confirm who you are before this change: …. It makes command control weaker. The list of reasons includes, for example: the policy is switched off, an entry became softer, recording of all lines is switched off, an Allow-list is turned into a Deny-list, the response to unreadable lines became softer, the scope narrowed, fewer confirmations are needed, a confirmer was added, confirmation waits longer.
When a policy is switched off, the gateway asks Switch this policy off? The commands it checks run unchecked from the next moment.; on deletion — Delete this policy? Its past events stay in the audit log.

Checking a line
The Tester tab (Try a command line) shows how the gateway will read a line. Nothing is run and no session is touched: Nothing is run and no session is touched.
| Field | What to enter | Default / limits |
|---|---|---|
| Command line | The line to check. | Up to 4096 characters (That line is too long to test.). |
| Shell family | The shell family: POSIX shell (bash, zsh, dash, ash), Windows command prompt (cmd), PowerShell, fish shell, csh and tcsh, Network device command line (IOS, VRP, RouterOS). | — |
| Judge it by | all enabled policies, one policy or one pattern group. | All enabled policies. |
The Check the line button shows: Words (words), Simple commands (simple commands), Without wrappers (sudo, env, nice and the like), Matching entry, Result. The possible outcomes: No entry matches., Nothing matched, so the line would run., Nothing matched, and an allow-list policy refuses what it does not list., The gateway cannot see what this line runs: …, The line is unfinished (…), This line cannot be shown safely to a confirmer, so it could not be confirmed. The limit is 30 checks a minute per person, otherwise Too many checks in a minute. Wait a moment.

Ready-made packs
The Starter packs tab holds 19 templates, grouped by family: Linux (6), Cisco (3), Huawei (3), MikroTik (3), one-off commands (1) and databases (3). Each states what it relies on (Relies on …). The Make a policy button creates the policy switched off: Policy … was created disabled. Review it before you switch it on. Check the entries, set the scope and switch it on. There is no Allow-list pack for interactive shells: it breaks prompts and programs.
What the user sees in the terminal
The gateway writes in plain text on a separate line, without a prefix, in the gateway's default language (an SSH session has no language of its own).
| Situation | Text |
|---|---|
| A line is refused | Command not run: policy … does not allow it. |
| The policy closed the session | The session was ended by policy …. |
| A line waits for a second person | This command needs approval from a second person. Waiting up to … s. Ctrl-C to withdraw. Ctrl-C withdraws the command. |
| Confirmed | A second person allowed the command; it runs now. |
| Refused, did not answer in time, withdrawn, no second person | A second person refused the command; it was not run (policy …)., No second person answered in time, so the command was not run (policy …)., Withdrawn. The command was not run., No second person is available to confirm this command, so it was not run. |
| The line changed or the confirmation was cancelled | The held line changed while it waited, so it was not run., The confirmation was cancelled, so the command was not run (policy …). |
| Too many waiting commands / no database | Too many commands are waiting for confirmation on this gateway; this one was not run. Try again shortly., Confirmation is not available right now (the gateway cannot reach its database), so the command was not run. |
| Cancellation not confirmed | The command was cancelled, but the gateway could not confirm that it did not run (policy …). Check what it did.; for strict policies The session was ended: a command was cancelled but the gateway could not confirm that it did not run (policy …). |
| Keys rebound | The keys were rebound in this session. The gateway can no longer promise to stop a command here; this is recorded. For strict policies: The session was ended: the keys were rebound, so policy … can no longer be applied. |
| Many lines pasted | Too many lines at once: a script is not typed. Nothing was sent. (more than 16 new lines at once) |
| Too many unreadable lines | Too many lines could not be read, so commands are refused for the rest of this session (policy …). |
| The line cannot be shown safely to the confirmer | This line cannot be shown safely to the person who would confirm it, so it was not run. |
| Cannot be stopped (fish, tmux, screen) | Command control cannot stop commands in this shell (fish, or inside tmux or screen): they are recorded and reported only. |
| A device | On this device a command being edited cannot be stopped yet: command lines are recorded and reported only. |
| On connecting without a terminal | Commands on this server are checked and need a terminal. Connect with ssh -t. |
| A policy was switched on during the session | Command control now applies to this server and needs a terminal, so the session is closed. |
| A one-off command is refused | Command not allowed by policy …. (exit code 126) |
| The gateway could not find out the policies | The gateway could not find out which command policies apply to you, so the session is refused. Try again, or contact the administrator. |
Pressing and holding Enter does not cause a session timeout: while a check is under way, the session counts as active. Keys typed during a hold are queued (up to 4 KiB) and checked in turn after the decision; if the line was refused, the queue is discarded.
Confirmation by a second person
You will wait for confirmation no longer than the value of Wait for a command confirmation, seconds (120 seconds by default; set on the Notifications page). Waiting out the time is a refusal. The confirmer sees the command on the Commands tab of the Approvals page, see Confirming commands. If there is no suitable confirmer at all, the command is refused at once: No second person is available to confirm this command, so it was not run. No more than one command per session, three commands per person and fifty for the whole gateway can wait for confirmation at the same time; beyond that the line is not run and the gateway writes Too many commands are waiting for confirmation on this gateway; this one was not run. Try again shortly.
Command control and clients
On a server with command control, BURSUcm (Windows and Universal) switches off its tmux for that connection and sends no integration lines to the shell. Because of this, the “Files” panel following the shell's folder and the command marks for the AI assistant do not work. An icon Command control is on appears on the terminal tab with the hint: Command control is on: the gateway checks the commands typed on this server, and tmux is off for this connection. This app types nothing into the shell here, so Files does not follow the shell's folder and the AI assistant has no command marks.
What control cannot see

- Interpreters:
python -c,perl -e,awk,vi :!run commands that the line does not show. - Programs with a shell escape:
less,man,find -exec,git. - Aliases and functions set earlier in the session or in the shell's start-up file.
- Tricks with variables and quoting (a command in
$x), history expansion (!!), a script uploaded over SFTP and then run. sshonwards from the target server to another;stty -echoand rebinding of keys (bind,bindkey,zle): the gateway notices the common cases, but not all.- Programs that read commands from their own input (
psql,mysql,sqlite3,gdb,expect,vim -es) and input in full-screen programs, editors and password prompts. Such lines count as “unreadable” and are accounted for.
What the gateway records: a line that was read and matched a policy (or any line, if recording of all lines is on) goes into the session's command list with passwords and keys masked (masking is not guaranteed) and is deleted together with the recording. The audit log does not contain the command text — only a fingerprint, the policy and the result. The command text is read by the Auditor and the Administrator; the Approver — only what was sent to them for confirmation, and the emergency access reviews.
The “Approver” role
The Approver role (“approver”) is assigned to a person in the Users section (or comes from a directory group). An approver does not configure the gateway but makes decisions: on access requests, on held commands and on emergency access reviews. The role gives no access to servers by itself.
Incompatibility with the administrator
The same person cannot be both an Administrator and an Approver: one cannot approve access and at the same time write the rules by which it is granted. On assignment the form says Approver and Administrator exclude each other: nobody approves requests while managing the rules. Choose one of the two. and, on saving, A person cannot be both an Administrator and an Approver. If a person receives both roles from directory groups, Administrator wins, the Approver role is refused and appears in the alerts (Directory roles refused (Administrator wins over Approver): …).
An administrator who needs to approve needs a separate account with the Approver role.
What an approver sees and can do
| What | Where |
|---|---|
| Decide access requests, revoke granted access | The /approvals page, the tabs Waiting for me, Active grants, History (the section Approving requests) |
| Confirm or refuse held commands | The Commands tab of the Approvals page (if assigned as a policy confirmer) |
| Review uses of emergency access | The /audit/breakglass page; the text of commands only here (the section Emergency access) |
| See alerts | An approver always has the bell |
| File requests and use access | Only if the person also has the User role; an approver does not decide a request for themselves |
What an approver does not see: the configuration pages (servers, accounts, rules, users, system), the audit log, session recordings, commands outside confirmation. Other people's requests that they are not admitted to they do not see at all.
An approver's working day
- Sign in to the console. The Access menu has an Approvals item with the number of waiting requests on its badge. The bell reminds you of requests and of commands waiting for confirmation.
- Confirm your identity. To allow (to approve a request or a command) you need a confirmation, valid for 10 minutes. Confirm in advance, especially if you are on duty for commands: a waiting command does not stop for you.
- Work through “Waiting for me”. For each request, read the reason, the ticket number and the period, and look at what the person has already requested and done on this server. Approve, with a shorter period if needed, or refuse with a comment.
- Watch the “Commands” tab if you are a confirmer of a policy. Decide by checking against the card; remember that you are confirming a text, not a program.
- Check “Active grants” if you need to revoke access early (the person has finished the work, suspicions, an error in the request).
- Review the uses of emergency access on the Emergency access page and close the review with a verdict and a note. You cannot close reviews of your own uses.
A request that is not decided within the time the rule sets expires. While there are not enough approvers, the gateway does not accept new requests under that rule and shows the administrator Rules that no one can approve now: … in the bell. Make sure the approvers are enabled, hold the Approver role and are named in the rule.
Overview: the state of the gateway
The Overview page (address /overview) is the first thing an administrator or an auditor sees after signing in. It answers two questions: “is everything all right with the gateway” and “what has been happening lately”. The page changes nothing; it only shows. The Administrator and Auditor roles can see it; a user with the User role alone and an approver (Approver) cannot open this page.
All the reads for the page together are given no more than five seconds, and each value is read separately. If a value could not be read or did not finish reading in time (for example, the database did not answer), a dash “—” or the word unknown stands in place of the number, and the rest of the page works as usual. A dash is not a gateway error but the message “could not find out”; refresh the page in a minute.

The “Where to start” block
The block is visible only to an administrator and only while at least one step is not done. It lists four steps before the first connection: Add a server, Add a server account, Create a user, Create an access rule. A completed step is ticked on its own; a step that is not done has an Open button that leads to the page where you create it. The counter on the right shows “{number done} of 4”. When all four steps are done, the block disappears. The step “create a user” counts as done only when there is an enabled user with the User role: an administrator, an auditor and disabled accounts do not count.
The number cards
| Card | What it shows | What to look for |
|---|---|---|
| Users | How many user accounts there are in total. | The red mark locked: N means this many accounts are locked out right now (for example, after failed sign-ins). If there are no lockouts, it says none locked. Unlocking is done on the user's page (“Users” section). |
| Servers | How many servers there are in the directory; under the number — in N folders. | The yellow marks are warnings about weak protection: Servers reached in clear text: N (the gateway connects to them without encryption, for example over Telnet), VNC servers that sign nobody in: N (VNC servers with no sign-in), Database servers with a weak sign-in allowed: N, Database servers reached unencrypted: N. This is not a failure, but it is a reason to review the settings of these servers (“Servers” section). |
| Access rules | How many access rules are in force now (in effect). | The mark ending ≤ 7 d: N means this many rules will end within the next seven days. If a rule needs to stay, extend it (“Access rules” section). |
| Sign-ins today | How many sign-ins to the web console succeeded today (successful). | The red mark refused: N shows how many sign-in attempts were refused today. For details see the sign-in log. A sharp rise in refusals may mean password guessing. |
| Sessions now | How many sessions are going through the gateway right now: SSH, Telnet, SFTP/SCP, RDP, databases and VNC together. A session that is already being ended is not counted. | Under the number it says “SSH through the gateway”, although the other protocols are counted too. If VNC sessions are running, VNC sessions running: N is added; the red mark VNC worker crashes (24 h): N shows how many times in the last day the helper process of a VNC session ended abnormally: look in the audit log for events of the type VNC session worker failed. |
| Requests waiting | How many access requests are waiting for an approver's decision. | If the number does not go down, check whether there are active approvers (“Access requests” section). |
| Emergency reviews open | How many uses of emergency access have not yet been reviewed. The review is done on the Emergency access page. | When the number is above zero, the card's icon turns yellow. The review is done by an approver or an auditor who did not use that access themselves (see below). |
| Grants ending today | How many accesses granted through requests end today (before midnight in the display time zone). | Information only. |
The sign-in chart and the latest events
The Console sign-ins chart (“Successful sign-ins and refusals per day”) shows, by day, the number of successful sign-ins (Successful) and refusals (Refused) to the web console. The Period switch is Week (7 days, the default) or Month (30 days). Days are counted in the display time zone set in gateway.json (displayTimeZone, see gateway.json).
The Latest events block shows the ten most recent events of the audit log. The title of an event is a link to its card. The Audit log button opens the full log.
The Health block: what each tile means
The Health block (“Checked when the page opens (at most every 30 s)”) is the gateway's self-check. The state is read when the page opens and no more often than once every 30 seconds, so after you fix a problem the tile may not turn green at once. Each tile has a state word on the right: fine (green, all well), attention (yellow, take a closer look), problem (red, act), off (grey, the feature is switched off). The word is a link to the page where the problem is fixed, if you have the right to open it. An auditor sees the tiles, but the links to the settings pages do not work for them (settings are open only to an administrator).
Six tiles are always shown:
| Tile | What it says and what it means | What to do |
|---|---|---|
| Encryption key | protected by the OS / unsealed, sealed mode / unsealed — the encryption key is open, all is well (this is the name of the key protection mode). The red locked — the gateway is sealed — the gateway is sealed and accepts no sessions until the administrator enters the passphrase or the recovery key. The red The encryption key was changed, and this gateway still holds the previous one in memory. Restart the gateway (a sealed gateway will need its passphrase). — the key was changed, and this process holds the old one. The yellow unknown — the state could not be found out. | If the gateway is sealed, open the Encryption key page and enter the passphrase or the recovery key (“Encryption key” section, Unseal). If the key was changed, restart the gateway service. |
| SIEM export | not set up (grey) — sending is not enabled. queue N · last delivery … (green) — sending works; “queue” is how many events the receiver has not yet confirmed. Red — the last delivery attempt failed. The export is stopping: … and Switching receiver: … — the export is being switched off or the receiver is being changed, and the latest events have not yet been delivered to the previous receiver (yellow, red if the receiver does not answer). | Open SIEM export and look at “Last error” (“SIEM export” section). |
| Last chain check | intact: No. 1–N · date (green) — the chain of events has been checked and is intact. not checked yet (yellow) — there have been no checks yet. break at event No. N (red) — a break in the chain was found. the last check could not run (red) — the check could not finish. | If there is a break, act at once following the “Integrity check” section. |
| Clock | skew N s against the database — the difference between the gateway's clock and the database server's. Up to 2 seconds — green, more — red. The yellow unknown — the comparison could not be made. | Synchronise the time (NTP) on the gateway server and the PostgreSQL server. A time difference spoils event times, TOTP codes and the validity-period check. |
| Disk | N % free — free space on the disk that holds the gateway's data directory (dataDirectory). Less than 10 % — red. free space unknown (yellow) — it could not be determined. If the administrator has moved the recordings to a separate directory on another disk (recordingsDirectory), the tile does not measure that disk. | Free up space or enlarge the disk. By default session recordings lie in the data directory, on the same volume; when space runs out, recording stops and new sessions are refused (see the next tile). Retention periods for recordings are in Sessions. |
| Session recording | Recording works (green). The red Recording fails: new sessions are refused until there is room. — the gateway could not record a session and refuses new ones until there is room. | Check the Disk tile, the permissions on the recordings directory and the service log. The settings page is Sessions. |
The other tiles appear only when the corresponding feature is set up:
| Tile | When it appears and what it means | What to do |
|---|---|---|
| RDP file signing | When signing of .rdp files is available in the gateway (the RDP file signing page). Signing — signing works (green). The .rdp signing certificate expires on … — the certificate will soon expire (yellow). Certificate not valid yet — the certificate's validity period has not begun yet, so nothing is signed for now (yellow). Certificate expired and Not available (the key is saved, but the gateway cannot open it) — files are not signed (red). If there is no key at all, the tile is grey and says: There is no signing key: .rdp files are not signed, and Remote Desktop warns the person who opens one. If there is a key but rdpPublicHost is not set, the tile is yellow: Files are not signed until the gateway's public RDP host is set (rdpPublicHost in the configuration): the gateway never signs an address taken from the browser's request. | See “RDP file signing”. |
| File copies | In the last hour a file copy could not be saved: File copies stopped: the recordings volume is near its reserve. Sessions are still recorded. or A file copy could not be written. Sessions are still recorded. (yellow). The file transfer went through, but the gateway did not keep a copy. | Free up space. Which copies were not saved can be seen in “File transfers”. |
| Database access | When listening addresses for databases are set up. Listening: PostgreSQL, MySQL… — they are listening. The red Not listening: …. See the service log. — the address is taken, the certificate lacks the required fingerprint, or the protocol module is missing; clients will not be able to connect. | The Status page and the service log (“Databases”). |
| VNC listener | When VNC is enabled. The green Listening. Red: Address not in the certificate, Could not bind, The session worker cannot run on this host (socket hand-over). | The VNC address is set in the gateway's settings file (vncListen, vncAdvertisedName), see “VNC”. |
| Licence | The state of the licence: term, number of active servers, limits, clock difference, “activated on another host” and so on. The red states (“no licence: nothing is served”, “ended on …: new sessions and changes are refused”) mean that the gateway has stopped accepting new sessions. | See “Licence”. |
The “Alerts” bell
The top bar of every page has the Alerts bell. It gathers only current problems: all the yellow and red tiles of the Health block plus a few messages that the Health block does not have. If there are no problems, it says No current problems. Both the administrator and the auditor see the messages; the link to the page that fixes the problem is given only to someone who has the right to open it.
| Message | What it is | Where it leads / what to do |
|---|---|---|
| Lockouts: “users locked out in the last hour: N” | Users locked out in the last hour. | The sign-in log with refusals (/audit/logins?f=bad). |
| Local journal: “N records wait for the database” | The database does not accept records; the gateway keeps them temporarily in the local journal and will write them again. Yellow, and red if they have been waiting longer than 10 minutes. | Check PostgreSQL. While the journal is not empty, records in the audit may lag behind. |
| A server's host key changed: “N refused connections in 24 h — check the server before confirming a new key” | The server's key differs from the remembered one. The gateway refused the connection — the server may have been replaced by an impostor. | Leads to the Server host key mismatch events. First find out whether the server was changed, and only then confirm the new key on the server's card. |
| Directories | A user directory is not being tracked, or its root certificate is not confirmed (sign-ins through it are refused). | The “Directories” section. |
| Typed passwords at risk: “Passwords the gateway typed were echoed or taken by an unexpected program: N in 24 hours.” | The gateway typed a password on a device, and the device displayed it (echo) or an outside program intercepted it. | Leads to the A typed password was taken without a device's reply events. Check the settings of the device and of the account. |
| Command control | “Command policies that could not be loaded: N” (red) and “Command alerts in the last hour: N” (yellow). | The “Command control” section; for details see the Command policy could not be loaded and Command alert events in the log. |
| Notifications | A notification channel is not delivering, or no channel (SIEM, email, webhook) has delivered for 24 hours while emergency access is enabled — an alarm signal may go unheard. | The “Notifications” section. |
| Access requests, Approver | Rules that no one can approve; new approvers assigned not through the console; directory roles refused because of the incompatibility “Administrator and Approver”. | The “Access requests” section. |
| Rules ending | Rules that will end in the next 3 days. | Only an administrator can extend them: “Access rules”. |
| Emergency access | “Emergency access used and not yet reviewed: N” and (for the administrator) “Emergency access reviews overdue: N”. | The Emergency access page, see below. |
Sessions: lists, watching, ending
The Sessions section of the Audit group in the side menu answers the questions “who is working on the servers now” and “who worked there earlier, and when”. The pages of the section are visible to Administrator and Auditor. An approver (Approver) and an ordinary user do not open them. An auditor can view, search, play recordings and end sessions, but configures nothing (“Auditor” section).
How the section is organised
In the side menu the section has one item — Sessions — for all protocols. There are no separate items for SSH, RDP, VNC and databases. On every page of the section the heading is the same — Sessions — and under it is a strip of five tabs:
| Tab | Address | What is in it |
|---|---|---|
| Running | /audit/sessions | The sessions that are going now, all protocols together: SSH, Telnet, SFTP, SCP, RDP, VNC and databases. There are no finished sessions here. |
| SSH / Telnet / SFTP / SCP | /audit/ssh-sessions | SSH and Telnet sessions and SFTP and SCP file sessions. |
| RDP | /audit/rdp-sessions | Remote Desktop sessions. |
| VNC | /audit/vnc-sessions | VNC sessions. |
| Databases | /audit/db-sessions | Connections to PostgreSQL, MySQL and SQL Server through the gateway. |
Each of the four protocol tabs has its own Running | Archive switch. Do not confuse it with the first tab of the strip: the Running tab shows the running sessions of all protocols, while the Running switch inside a protocol tab shows only the sessions of that protocol. Archive shows finished sessions with recordings. The address of the archive is the address of the tab with ?tab=archive added, for example /audit/rdp-sessions?tab=archive. The old address /audit/sessions?tab=archive opens the archive of the SSH / Telnet / SFTP / SCP tab, so old bookmarks keep working.

The Running tab: all running sessions
The list shows everything that is going through the gateway at this minute, newest at the top. If nothing is going, it says No session is running and explains that finished sessions are in the archive of their protocol's tab.
| Column | What it means |
|---|---|
| User | The login of the person who connected through the gateway. |
| Server, Account | The server and the server account under which the gateway signed in to the server. |
| Protocol | SSH, Telnet, RDP, VNC or PostgreSQL, MySQL, SQL Server. For a file session an SFTP or SCP tag stands beside it. |
| Address | The network address the person came from. |
| Started, Duration | The start time in the display time zone, and the duration. |
| Viewers | How many people are watching this session right now. For VNC sessions there is a dash. |
| State | The column is there only while some running session has a mark. Emergency access — the session was started through emergency access (“Emergency access” section). Commands checked — the gateway checks the commands typed against the policy (“Command control”). Commands: alerts only — commands are only monitored, not blocked (this happens in the fish shell or inside tmux). Key bindings changed — keys were redefined in the session, and the gateway no longer guarantees that it can stop a command. Grant until … — access was granted through a request until the given time. |
The last column, without a heading, holds buttons. Watch is on every row: it opens the live view (see below). End ends the session. It is on SSH, Telnet, SFTP, SCP, RDP and VNC sessions. A database row has no End button: a database session is ended from the watch window, and there you must confirm your identity again (“Ending a session”).
Watching live
Press Watch and the live window of the session opens. You can watch a session without disturbing the person: what you do in the watch window does not reach the server. Here is what is important to know:
- SSH and Telnet. You see the terminal output. If you joined when the session was already running, it says: You joined a running session: the picture completes with the program's next redraw. Your joining is in the audit log. This means that the screen of a full-screen program (for example,
top) will be completed at its next redraw. Without JavaScript the live view does not work: The live view needs JavaScript. - SFTP and SCP. Such a session has no terminal, so the window shows a list of file operations instead (the Operations block). New operations are added as they happen: New operations appear in the list as they happen. Without JavaScript, reload the page to see them.
- RDP and VNC. You see the picture of the desktop. Above it there is always a caption: for RDP Live picture, not yet verified. The signed recording is the evidence., for VNC Live picture — not evidence. The signed recording is. The live picture is an observation, and the evidence is the signed recording. If after the session ends it turns out that the live picture differed from the recording, The live picture differed from the recording. is shown. The caption Watch only: nothing you do here reaches the remote desktop. is a reminder that clicks and keys in the watch window are not passed on anywhere. In the VNC window you can see Watching now: N.
- Databases. The watch window (
/audit/db-sessions/{number}/watch) shows the SQL statements being run as they appear. The End button is in the same window.
The states of the picture watch window: Connecting to the live picture — connecting; Catching up with the session: … — catching up with what is already recorded; The session has ended. — the session has finished; The live connection was lost. — the link with the console broke (refresh the page).
Every joining to a view is written to the audit log (the SSH session watched event) before the first byte is sent to you. Joining a view does not extend the session's “last activity”, that is, a watcher does not stop the idle timer from firing.
Limits on the number of watchers.
The gateway admits no more than 8 watchers per session and no more than 64 for the whole gateway (the count is shared between terminal and picture views). If the limit is used up, the gateway refuses the view, and such a refusal is not written to the log. A watcher who cannot keep up with the stream is disconnected, and their page reconnects by itself. The live window is tied to your sign-in to the console: signing out, the end of the session's validity period or the loss of your role stops the view at once.
If the administrator has switched on the Watermark switch (Settings → Sign-in and MFA, “Sign-in and MFA” section), a diagonal inscription “login (Name)” of the person sitting at the console runs over all the console pages. This is protection against secret photographing of the screen: in a photo you can see whose screen it is. The mark is shown not only on the watch pages but on all console pages. The explanation by the switch: The diagonal text makes it hard to photograph the screen anonymously.
The live picture view and the gateway's memory.
The pictures of RDP and VNC for viewing, playback and export to video are assembled on the server by a separate helper process. The memory it may take is limited by the renderMemoryBudgetMb parameter in gateway.json (gateway.json). The default is 2048 MB, the allowed range is 1024 to 65536. One person may take no more than half of this budget, but not less than the largest single task needs. The number of recordings and exports a person may have open at once is set in Sessions (RDP) and VNC. When the share is used up, the message Your share of the gateway's picture capacity is in use. Close one of your open views or exports and try again. is shown. Close one of your open pictures or exports and try again. The other refusals are listed in the “Troubleshooting” section.
Ending a session
Administrator and Auditor can end a running session. An approver cannot. For SSH, Telnet, SFTP, SCP, RDP and VNC sessions you do not need to enter the password and code again. For a database session you do: if you have not entered the password and code in the last 10 minutes, the gateway asks for them first (the Confirm it is you page) and then returns you to the watch window.
- Find the session. Open Sessions, the Running tab (all protocols together) or the Running switch on the tab of the protocol you need.
- Press End. The button is in the row of an SSH, Telnet, SFTP, SCP or VNC session. In the list of RDP sessions on the RDP tab there is no End button: end such a session from the Running tab or from the live view window. A database session is ended with the End button in its watch window.
- Confirm. A question appears: End the session of {0} on {1}? They will see that you ended it. ({0} is replaced by the user name, {1} by the server). Without JavaScript the question is shown on a page, not in a window. Confirm.
- Read the answer. The session was ended. — the session is ended. The session had already ended. — it was closed earlier, and there is nothing to do.
After End the console returns you to the page where you pressed the button. The session disappears at once from all the Running lists — the general one and the one on its protocol's tab — and the counters on Overview go down at once. It appears in the Archive of its protocol as soon as the gateway has written down its ending. If the session is not yet in the archive, wait a little and refresh the page.
The audit log gets the event SSH session terminated (the same name for SSH, RDP, databases and VNC) with your login and address. What the person whose session you ended will see:
| Protocol | What the user sees |
|---|---|
| SSH, Telnet | The session was ended by … (with your login). A mark of the ending is put in the recording. |
| SFTP, SCP | The file session was ended by … |
| Databases | An administrator ended this session. |
| VNC | The session was ended by an administrator. |
| RDP | There is no message: the session is simply closed, and the recording is sealed as finished. |
The SSH / Telnet / SFTP / SCP tab: running and archive
The Running switch shows running SSH, Telnet, SFTP and SCP sessions. Columns: User, Server (for a file session an SFTP or SCP tag is beside it, for Telnet a Telnet tag), Account, Address, Via, Started, Duration, Viewers, State if there are marks (the marks are the same as on the Running tab) and the Watch and End buttons. The Via column shows the way of connecting: BURSUcm (through the BURSUcm program with a one-time ticket) or SSH client (with an ordinary SSH client). If there are no sessions, it says No SSH, Telnet or file session is running. RDP, VNC and database sessions are not shown in this list: they have their own tabs.
The Archive switch shows finished sessions. The filters above the table:
| Field | What to enter | Default / limits |
|---|---|---|
| Period (From, To) | The start and end dates. | No limits. |
| User | The user's login: a text field, up to 200 characters. If the text matches the login of a gateway user, the page shows that user's sessions under all the logins they have had, and says so. | Empty. |
| Server | The server name: a text field, up to 200 characters. | Empty. |
| How it ended | Closed normally (closed in the regular way), Ended by a person or a rule (ended by a person or a rule), Broken off (broke off). | Any. |
| Protocol | SSH or Telnet. SFTP and SCP sessions go as SSH; you cannot filter them separately. | Any. |
| End reason | The exact reason from the list below (the list holds only the reasons possible for these protocols). | Any. |
| Text in the session | A word or phrase, for example rm -rf. | Empty. Words are searched in this order, punctuation is not taken into account: Words in this order; punctuation is ignored, so “rm -rf” also finds “rm rf”. |
The Apply button applies the filters. There is no reset button: to remove a filter, clear the fields and press Apply or open the tab again. The list is paged with the Older button, and at the bottom is Total: N. The archive columns: User, Server, Account, Started, Duration, Ended (the reason for ending), Recording (the state of the recording) and the Play button. If nothing was found in the archive, it says No finished SSH, Telnet, SFTP or SCP sessions match.
How the text search works.
The search goes through the text that the server printed on the screen during the session. The commands the person typed are visible in this output, because the server “reflects” them (echo). If you found a match, the row says Found at m:ss and shows a fragment, and the Play button starts the recording 2 seconds before the first match. A password the person entered in the session is in the recording in only two cases: the server showed it on the screen, or in the session settings (Sessions) Record input is switched on (more in “Recording SSH and Telnet”). The search does not replace the commands tab (see “Recordings”), where commands are broken down line by line.
End reasons (End reason).
The same reason may occur on several tabs; the End reason list of each protocol holds only its own reasons.
| What it says | What happened |
|---|---|
| Closed | The person closed the session themselves or quit the program. |
| Terminated from the console | An administrator or an auditor pressed End. |
| Access ended | The validity period of the rule or of the granted access ended, or the rule was revoked, or the account was disabled. |
| Idle timeout | The session stood idle longer than the allowed time. The period is set by the administrator in the session settings. |
| Recording failed | The gateway could not record the session (for example, space ran out) and closed it. |
| Server connection lost | The gateway's link with the server broke. |
| Client disconnected | The link with the client broke. |
| Gateway stopped | The gateway was stopped or restarted. The recording is sealed at that point, and the last seconds may be missing. |
| Protocol error | The client or the server broke the protocol. |
| Server login failed | The gateway could not sign in to the server (for Telnet and network devices). |
| Pass revoked | (databases) The permission for access was revoked. |
| Gateway limit | (databases, VNC and RDP) The session reached its time limit. |
| Session worker crashed | (VNC, RDP) The session's helper process stopped abnormally. |
| Command control | The session was ended by the command control policy. |
| Rule change could not be applied | (VNC, RDP) The rule changed during the session, and the gateway could not apply the new data policy. |
file_operations_limit | (RDP) The limit on the number of file changes was reached. This reason is shown as a Latin code (see the box below). |
For a few reasons for ending RDP sessions, in the lists, on the card and in the End reason filter, an internal code in Latin letters is shown instead of a translation. It means this: target_cert_unconfirmed — the server's certificate is not confirmed; target_logon_failed — the server did not accept the gateway's sign-in; target_redirect_refused — the server asked to redirect the connection, and the gateway refused; admission_denied — the gateway did not admit the session (overload or a limit); file_operations_limit — there are too many file changes in the session.


The RDP, VNC and Databases tabs
Each of these tabs has a Running | Archive switch, like the SSH / Telnet / SFTP / SCP tab. The empty lists say: No RDP session is running and No finished RDP sessions match.; No VNC session is running and No finished VNC sessions match.; No database session is running and No finished database sessions match.
RDP (/audit/rdp-sessions).
- Running: columns User, Server, Account, Address, Started, Duration, Viewers; buttons Watch (live picture) and Details (the session card). There is no End button here: an RDP session is ended on the Running tab or in the live view window.
- Archive: filters Period (dates), User and Server (text fields), End reason and, if the index of typed text is on, the Text in the session field. It searches the text typed in the session and works only for sessions recorded with keystrokes: Searches the text typed in the session. Only sessions recorded with keystrokes have any. Columns: User, Server, Account, Started, Duration, Desktop (the size of the desktop), Keystrokes (Recorded or Not recorded; keystrokes are recorded only if this is enabled in the settings, see Sessions), Ended, Recording and the Play button. At the bottom are Total: N and the Older button.
VNC (/audit/vnc-sessions).
- Running: columns User, Server (with the VNC tag), Account, Started, Duration; buttons Watch live, Details and End.
- Archive: filters Period (dates), User, Server, Account (text fields) and End reason. Columns: User, Server, Account, Started, Duration, Screen (the size of the screen), Sign-in (the way of signing in to the VNC server; the View only tag means the session is for viewing only and input is blocked), Ended and the Details button. At the bottom are Total: N and the Older button.
Databases (/audit/db-sessions).
- Running: columns User, Server (beside it a tag with the type of the database server: PostgreSQL, MySQL or SQL Server), Account, Database, Client (the client program), Address, Started, Duration, Statements (the number of statements), Viewers and the Watch button. The Emergency access mark is on a session started through emergency access.
- Archive: filters Period (date and time), User, Server, Account, Database (text fields), Protocol (PostgreSQL, MySQL or SQL Server) and End reason. Columns: User, Server, Account, Database, Client, Started, Duration, Statements · errors, Ended, Recording and the Play button. The number of statements and the number of errors are put into one column: for example, “55 · 0” means 55 statements and no errors; if there were errors, their number is shown in red. At the bottom are the Newer and Older buttons.






Session recordings and players
Every session is recorded, and the recording is signed by the gateway. The session page (the card) shows the facts about the session and the player. Administrator and Auditor can see recordings. A recording cannot be changed unnoticed: each time it is opened, the gateway checks it as a whole and, if the check fails, does not show the recording.
Recording states
| State (the Recording column) | What it means |
|---|---|
| Being recorded | The session is running, the recording is not yet sealed. You cannot play it as a picture — watch it live or wait for the end. |
| Signed | The recording is finished, signed and intact. It can be played. |
| Damaged | The check failed. The recording is not shown. The reason is named on the page, and the check itself is written to the audit log. |
| Deleted by retention | The recording was deleted when its retention period ran out. The facts about the session and the audit log remain. The message: The recording was deleted by retention; the facts above and the audit log remain. |
There is no separate state “not signed” in the Recording column. If the session has ended but the signature has not been put on yet (the gateway is waiting for the database), you can see this only on the playback page: it says The recording has not been signed yet (it waits for the database). Wait; if it stays that way for long, check the database (the Local journal tile in the bell, “The Alerts bell”).
The retention period of recordings is set by the administrator: Keep recordings, months on the Settings → Sessions page (Sessions). Recordings older than the period are deleted by the daily clean-up (at 04:00 in the display time zone); each deletion is a Recording deleted by retention event in the log. If the period was changed, the new value takes effect at the next clean-up.
How a recording is checked
When a recording is opened, the gateway checks in order: the signature of the signed description of the recording (the manifest); the size and checksum of each part; that there are no extra files in the directory; that the session number inside the manifest matches; that the checksum of the manifest matches the one the gateway wrote to the audit log during the session. If something does not match, the reason is shown:
| Reason on the page | What it means |
|---|---|
| the signature does not verify against the gateway's key | The manifest was not signed with this gateway's key or was changed. |
| a part of the recording was changed, removed or added after signing | The recording file was edited, deleted, or an extra one was slipped in. This is the most serious of the messages: the recording cannot be regarded as evidence. |
| the manifest differs from the one in the audit log | The description of the recording was replaced as a whole (even with a correct signature, if the key is compromised). |
| the gateway's signing key is not available | The gateway has nothing to check the signature with (the key is not open or not available). Unseal the gateway (Unseal) and try again. |
| the recording could not be checked | The check did not take place for another reason (for example, no access to the files). Details are in the service log. |
Example: The recording is not played: {0}. The check is in the audit log. What to do about a damaged recording, see “Integrity check”. A failed check is written to the log as the Recording failed event (for SSH, Telnet, SFTP, SCP, databases and VNC; the same event is written also when the recording could not be saved to disk) or RDP recording failed (for RDP).
Recording an SSH and Telnet session
Open Sessions, the SSH / Telnet / SFTP / SCP tab, the Archive switch, and press Play at the session you need (address /audit/sessions/{number}/play). The page shows the facts about the session: who, to which server and under which account, when, for how long, how it ended (Exit status for a one-off command, Command), the signature of the recording (Manifest SHA-256), the input recorded mark if input was recorded, and for network devices — Device profile, Privileged mode (Entered, Already privileged, Refused — user level) and Login failure (the reason for the failed sign-in to the device).
- The player. It plays the terminal like a film. The recording can be downloaded as a file: the Download the .cast file button (the asciinema format). Downloading does not ask for the password again, but, like viewing, it is written to the audit log: the Recording played and Recording downloaded events are written before the first byte is sent to you. Without JavaScript the player does not work: The player needs JavaScript.
- Find in the recording — search inside the recording; the result is a list of places, and if it is empty, Nothing was found in this recording.
- Marks on the timeline. The playback timeline carries marks: a command forbidden by a policy (Command refused by policy …), cancelling a command without confirmation (Command cancelled, not verified (policy …)), a command waiting for a second person (Command held for confirmation (policy …)), and too frequent resizing of the window (Window resized too often (sizes merged)).
If, in the session settings (Sessions), Record input is switched on, everything the person typed goes into the recording, including passwords typed in the terminal (for example, at a sudo prompt). The text search of the archive searches this text too. Treat such a recording as secret material. A warning in the settings field reminds of this: This also keeps passwords typed at sudo prompts. Typed commands are visible anyway, because the server echoes them.
The Commands tab
If the session is with a terminal (a shell) or with a one-off command (exec), there are two tabs above the player: Recording and Commands (?tab=commands). The Commands tab is there only for roles that are allowed to read the whole text of commands (administrator and auditor). It shows the lines the gateway parsed in this session: those that fell under the command control policy, and all lines if the policy records them all or the session was an emergency one (“Command control”). The text is kept only while the recording exists.
| Column / field | What it means |
|---|---|
| Time | When the line was typed. |
| Line | The command itself. Parts that look like a password or a token are replaced with ********. Masking is done as far as possible: Masking is best effort. If a line cannot be hidden safely, it says Not shown: this line could not be masked safely. If part of a line could not be parsed, it is hidden whole: Part of this line could not be read and is masked whole. |
| Policy | Which policy fired. |
| Result | What the gateway did: let it through, forbade it, asked a second person. |
| Origin | Where the line was taken from. |
| Words in the lines | A filter by words. It searches the visible text of the lines. |
| Look up an exact line and the Look up button | Finds the lines of the session typed exactly like the one you entered, even where the list shows ********. Needed when you suspect a particular command and it is hidden in the list. The result: Lines found: N or No line of this session was typed exactly like this. Each search is written to the log (who searched, but not what for, the Command text looked up event), and one person can make no more than 10 such searches a minute: otherwise Too many lookups in a minute. Try again in … s. |
If no policy is enabled for the session, the tab says No command lines were recorded in this session.


Recording an RDP session
The RDP session card (/audit/rdp-sessions/{number}) is opened from the RDP archive. The facts: the account and the address of the server, where the person came from, start, end, duration, Desktop size, Colour depth, Data policy at the start (which data channels — clipboard, drives, printers — were allowed at the start), Keystrokes, the recording and its signature (Manifest SHA-256). If keystrokes were recorded, a warning is shown: Keystrokes were recorded in this session: the recording can contain passwords. Treat such a recording as secret material.
Under the table of facts are three tabs: Picture (playback), Clipboard and Files. The Typed text block is not a tab but a section of the page: it is shown on the Picture tab if the administrator has switched on the index of typed text and the session was recorded with keystrokes. The Watch live link is shown while the session is running and leads to the live view. The Export as video button appears for a finished and intact recording (“Exporting to video”). The Open the integrity check link leads to the integrity check page and is shown only for a recording that failed the check or was cut off when the gateway stopped. For the different states of the recording the page says:
| Message | What it means |
|---|---|
| The recording is signed and intact. | All is well. |
| The session is running: its recording is not sealed yet. | The session is still going. |
| The recording was cut when the gateway stopped. What was written is kept and signed; the last moments may be missing. | The gateway stopped during the session. What was recorded is kept and signed, but the last seconds may be missing. |
| The recording is not signed yet (it waits for the database). | You need to wait. |
| The recording is damaged and is not played. | See checking a recording. |
| This recording cannot be shown as a picture: it does not say how large the desktop was. Its facts and the audit log remain. | The recording has no desktop size, and the picture cannot be built. The other information is available. |
The picture player (RDP and VNC)
The picture is assembled on the server by a separate helper process, and the browser receives it ready-made. The player is controlled like this:
- Play / Pause (or the Space key); the arrows ← and → move the position. The hint: Space plays or pauses; the arrow keys move.
- Position — the seek slider. The time on it is the “capture time”, in which long idle periods are squeezed. Beside it the real time is shown: Real time: …, and how many idle periods are squeezed: Idle periods squeezed: N. A long idle period is shown as one pause (the threshold is set by the administrator in Sessions, the field Hold an idle period longer than, seconds).
- Speed — speed from 0.5× to 8×.
- Started from the index / Play from the start to here. For fast seeking the gateway keeps key frames (the index). If the picture was restored from a key frame, it says The picture was restored from a saved key frame. For evidence, play from the start. If there are no key frames yet, it says Not indexed yet: playback starts at the beginning and seeking replays from there. Playback works all the same, seeking is slower.
- If one of the parts of the recording does not match the signature, playback stops: Playback stopped at part {0}: it does not match its signature.
- At the end of the recording: End of the recording. For VNC the timeline carries marks: start, clipboard presses, a change of data policy, “view only”, idle, ending, loss of access and the message shown to the user; where the picture has gaps it says No picture from … to … (…).
Text typed in an RDP session.
If the administrator has switched on keystroke recording and the index (Sessions: Record keystrokes in RDP sessions, Index typed text for search), the RDP archive can search by what was typed, and the card shows a list of what was found (Typed text). The texts are read in the layout the client named when connecting, with Caps Lock off. If the layout or Caps Lock was changed inside the remote session, this is not recorded, and such lines are marked layout assumed or case assumed. Keystrokes for which no character was found are shown as [unmapped keys: N]. If no text is found, the reason is named: the index was not built or was not switched on (Typed text is not indexed for this session…) or it reached its limit (The typed-text index of this session reached its limit…).
The index keeps what was typed in readable form, including passwords, and is deleted together with the recording. In addition, the text indexes of sessions (SSH and RDP) and the auditor's search phrase are passed to PostgreSQL as query parameters. If the slow query log (log_min_duration_statement) is enabled on the gateway's database server, PostgreSQL by default writes these parameters to its own log, which means the typed text and the searched phrases end up outside the gateway's retention period. For the gateway's database set log_parameter_max_length = 0 (and leave log_parameter_max_length_on_error at its default, 0) or do not enable the slow query log. Do not switch on key recording without need.

Exporting to video (MP4)
From the page of an RDP recording (the Export as video button) and of a VNC recording (the Export video button) you can make an MP4 file. The addresses: /audit/rdp-sessions/{number}/export and /audit/vnc-sessions/{number}/export.
- Open the card. The recording must be finished, signed and intact.
- Press the export button. The gateway will ask you to confirm who you are: Exporting needs your password and code again. The confirmation lasts 10 minutes.
- Tick the clock, if you need it. The Burn the real capture time into the picture check box (VNC: Show the capture time in the video) will write the real date and time of capture in the corner of every frame. The initial value is taken from the administrator's setting.
- Wait for the file. The video is made at once from the signed recording, from the very beginning, and is stored nowhere. The file name is
rdp-{number}.mp4.
What you need to know about the file: there is no sound. Idle periods are squeezed (Idle periods squeezed in the video: N); to tell the squeezing from real time, a small block lies at the end of the file that players ignore: it lists the places where time was squeezed (The video file ends with a small block that players ignore…). There are limits: the longest length in minutes and the largest file size in MB; a recording longer or larger than the limits is not exported in full, and nothing is delivered (Longest video: N minutes. Largest file: N MB. A longer or larger recording is refused, and nothing is exported.). The limits are set by the administrator in Sessions. Each export is written to the log: the export of an RDP recording as the RDP recording exported as video event (rdp.export), the export of a VNC recording as the Session video exported event (session.export).
If the export failed, the gateway writes the reason. All such messages with their meaning and actions are collected in the “Troubleshooting” table (Troubleshooting). If video export is not available at all (Video export is not available on this gateway.), the gateway has no video encoding program.

The VNC session card
The card (/audit/vnc-sessions/{number}) shows the facts (server, account, sign-in method, screen size, reason for ending) and the counter line Input dropped N · clipboard in N · out N · refused N: how many input events were dropped, how many times the clipboard was passed to the server and from the server, how many transfers were refused. The caption under the picture gives the verdict of the recording check:
| Message | What it means |
|---|---|
| Recording verified | The recording is intact. |
| Recording changed after it was signed | The recording was changed after signing. This is an integrity violation, see “Checking recordings”. |
| Recording cut at a crash | The session's helper process stopped abnormally. What was recorded is kept, but the end of the recording is cut off. |
| Recording not signed yet | You need to wait for the database. |
| Seal refused. Parts left unsealed: N | The gateway could not seal N parts of the recording. |
| Recording not found | The recording files are not on the disk although the retention period has not run out. They were deleted behind the gateway's back. |
| Recording deleted | The recording was deleted when its retention period ran out. |
Below are the player, the list of clipboard transfers and the buttons: Verify this recording (check this recording now), Open the integrity check (the integrity check page), Export video (if the gateway has an encoding program). If the frame format is not supported, the picture says: Part of the picture could not be decoded here, An encoding this player does not know was skipped or A part outside the screen was left out.

Database sessions
The database session card (/audit/db-sessions/{number}) shows the facts: who, to which database, with which client program, how many statements and errors, and the state of the recording. Below is the Statements of the session table with the columns Time, Statement, Rows, Error, Duration. It can be filtered by Verb (the type of statement: SELECT, INSERT and so on), the Text contains text and the Errors only check box. A long list is paged with the Later statements button, and a long statement text is cut off and expands with the Show all button. The results of queries (the rows the database returned) are never recorded.
If a part of the recording does not match the signature, its statements are not shown: Part {0} of this recording does not match its signature; its statements are not shown. Values that look like a password or a token are masked in the text, and beside it says how many: {0} credential values masked. If the text of a statement can be read in different ways and the values cannot be hidden safely, the statement is hidden whole with the note Hidden as a precaution: the text can be read in more than one way. A search across all statements is on the Statements page.

Database statements (Statements)
The Statements page (/audit/statements) is a single list of all SQL statements from all database sessions (PostgreSQL, MySQL, SQL Server), newest first, 50 per page. Administrator and Auditor can see the page. The caption of the page: “Every statement of every database session, newest first”. The results of queries (what the database returned) are never recorded by the gateway, only the statements themselves.

Filters
| Field | What to enter | Default / limits |
|---|---|---|
| Period (From, To) | Date and time fields for the start and the end. | No limits. |
| User, Server, Account | Text fields in which you enter a value: who ran it, on which server, under which account (up to 200 characters). | Empty. |
| Database | A text field: the name of the database. | Empty. |
| Protocol | A list: PostgreSQL, MySQL or SQL Server. | Any. |
| Verb | A text field: the type of statement — the first word: SELECT, INSERT, UPDATE and so on (up to 32 characters). | Empty. |
| Text contains | A word or a piece of the statement text. | Empty. |
| Errors only | A check box: show only statements that ended in an error. | Off. |
| Exact text and the Find button | The whole statement, as it was sent. | Empty. |
The columns of the list: Time (the time; this is a link to the session card, opened at this statement), User, Server, Database, Statement, Duration, Rows (the number of rows), Error. The text in the list is cut to 300 characters; it can be seen in full on the session card (“Database sessions”).
Search by exact text
Passwords and similar values in the text of statements are covered with asterisks. So an ordinary word search will not find a statement in which the password you are looking for is hidden. The Exact text search is made for this: you enter the whole statement, and the gateway looks for it by a protected fingerprint (HMAC) of the text. The entered text is not saved and is not shown again: The statement exactly as it was sent. It is not saved and not shown again; the gateway looks it up by a keyed fingerprint. After the search the page shows only what was found and the caption Showing only the statement you searched for by its exact text. with the link Show all statements. The fingerprint is also in the CSV export (the column text_mac), so a fingerprint taken from the export finds the same statement.
The marks in the rows: {0} credential values masked — how many values are covered; Hidden as a precaution: the text can be read in more than one way — the statement is hidden whole, because its text can be interpreted in two ways and it cannot be guaranteed that the password is covered.
CSV export
The Export CSV button exports the statements by the current filter. It requires you to confirm who you are again: if there is no confirmation (it lasts 10 minutes), you are redirected to the Confirm it is you page (/reauth) and, after confirming, sent back. Besides the text, the file has text_mac, text_sha256, masked, mask_ambiguous. Each export is written to the log as the Statements exported event before the first byte is delivered; the event holds the filter, but not the phrases you searched for.
Cells that Excel could run as a formula (they begin with =, +, -, @) are protected by the gateway with an apostrophe. The file is UTF-8 with a BOM mark, the line separator is CRLF, as RFC 4180 requires, so Excel opens it without garbled characters.
File transfers and clipboard
All transfers of data between the user and the server through the gateway are collected on two pages: File transfers (SFTP and SCP files and the files of RDP sessions) and Clipboard (the clipboard of RDP and VNC sessions). Administrator and Auditor can see the pages. The rules about what may be transferred are set by the administrator (“File policy”).
File transfers
The File transfers page (/audit/files): “Every file that moved through the gateway over SFTP or SCP: who, which server, which direction, how many bytes and the SHA-256 of what passed.” The files of RDP sessions (over a redirected drive or the clipboard) are in the list too: Files from Remote Desktop sessions (a redirected drive or the clipboard) are listed here too. The time opens the session.

| Filter field | What to enter | Default / limits |
|---|---|---|
| Period (From, To) | Date and time. | No limits. |
| User, Server, Account | Who, to which server, under which account. | All. |
| Direction | Upload (to the server) or Download (from the server). | Both. |
| Protocol | SFTP, SCP, RDP drive, RDP clipboard. | All. |
| Outcome | Completed, Partial, Failed, Stopped by a rule change, Over the size limit, Interrupted. | All. |
| Hash | The state of the checksum: Whole file, Range, Out of order — no hash, No hash. | All. |
| File name contains | Part of the file name. | Empty. |
| Exact SHA-256 | 64 hexadecimal characters. Finds all transfers of a file with such a sum — handy when you need to find where a particular file went. | Empty. |
| Whole file only | A check box: show the transfers for which the sum refers to the whole file. | Off. |
The columns: time, user, Server with the account, direction (an arrow), File (the path; on renaming — renamed to …), Bytes, SHA-256, outcome, Copy. The note beside the sum shows what exactly it describes: File SHA-256 — the sum of the whole file; SHA-256 of bytes {0}–{1} — of a range only; SHA-256 of no bytes (empty range) — nothing was transferred.
The sum counts as the sum of the whole file only if the transfer began at the first byte, went in order to the end and nobody else changed the file. The gateway counts the sum of the bytes that passed through it, not of the file lying on the server. If part of a file was transferred out of order, there is no sum (Out of order — no hash), and no copy is kept (Not kept: out of order).
Reasons for refusal and failure.
If a transfer did not go through, the row gives the reason. This is a decision of the gateway under your rules, not a breakdown:
| Reason | What it means |
|---|---|
| No file transfer allowed | The access rule does not allow file transfer. |
| Direction not allowed | The rule does not allow this direction. |
| Unsupported extension | The file extension is forbidden by the file policy. |
| File size limit | The file is larger than allowed (Largest file, MB in Sessions). |
| Session size limit | The session transferred more than allowed in total (All files in one session, MB). |
| Too many open files | The client opened too many files at once. |
| Copy on the server | An attempt to copy a file inside the server through SFTP, rather than between you and the server. |
| Malformed or unsupported request, Hostile input, Protocol error | The client or the server sent an incorrect request. If it repeats, check the client (Hostile input may mean an attack attempt). |
| Not a plain scp command, File transfer tool, Command is not valid UTF-8 | For SCP only plain commands are accepted; rsync and a manual start of sftp-server are forbidden. |
| Terminal not allowed | The rule allows only file transfer, but not a terminal. |
| Server printed text before SFTP, Unsupported SFTP version | On sign-in the server prints extra text (a login script) or speaks an unsupported version of SFTP. |
| Path not allowed, Request type not allowed | RDP: the path or the type of request to the drive is forbidden. |
| Too many file changes in one session | RDP: there are too many file changes in the session. |
File copies.
If the file policy says to keep copies (“File policy”), the Copy column shows Kept and the Download copy button. The other values: Not kept, Too large to keep, Not kept: out of order, Not kept: write failed, Deleted (deleted when its period ran out: Keep file copies, days in Sessions, no longer than recordings).
- Press Download copy. If you have not confirmed yourself for a long time, the page for entering the password and code opens (
/reauth): “This action needs your password and a code again. The confirmation lasts 10 minutes.” - Confirm yourself. The download starts.
Before sending, the gateway checks the copy: the checksum and the authenticity of every block. If the copy fails the check, it is not handed over: The stored copy failed its integrity check and was not downloaded. The download is written to the log as the Stored file copy downloaded event before the first byte. If the failure happens in the middle of the transfer, the connection is cut, and a second event with the outcome “Failure” is written to the log. A downloaded file may contain a virus or secrets: open it with care.
The detailed list of a session's operations.
The page of an SFTP/SCP file session has the Operations block — a list of all operations on files (create, delete, rename and so on) with the gateway's decision (Passed or Refused). The caption at the bottom: The signed log of this session verifies. or The signed log of this session does not verify: {0}. The check is in the audit log. If a copy recorded in the signed log has vanished from the disk without waiting for its retention period, it says: A stored file copy that the signed log lists is gone, although retention did not delete it: it was removed from the disk past the gateway. The check is in the audit log. The list is added to in real time; without JavaScript refresh the page. For RDP sessions, on the File transfers page opened for one session (/audit/files?session=…), under the list there is the Bytes through redirected devices table: how many bytes went To the server and To the user's device through redirected devices (printers, ports, smart cards; drives are shown as rows of the list).
The CSV export button saves the list by the current filter to the file file-transfers.csv. The export is written to the log as the Export event (audit.export) with the filter before the first byte.
Clipboard
The Clipboard page (/audit/clipboard) shows everything that passed through the clipboard of RDP and VNC sessions: who, to which server, in which direction, what data, how many bytes, the checksum. The content is not stored, except text that a rule said to keep (The content is not stored, except text a rule keeps.).
| Filter field | What to enter | Default |
|---|---|---|
| Period | Date and time. | No limits. |
| Person, Server | Who, and on which server. | All. |
| Direction | Into the server / From the server. | Both. |
| Kind of data | Text, Image, Files, Other data. | All. |
| Mechanism | Legacy or Extended — the way in which the RDP client passed the data. | Both. |
| Outcome | Forwarded (passed on) or Refused (refused). | All. |
| SHA-256 (exact) | 64 hexadecimal characters. | Empty. |
The columns: When, Person, Server, Protocol, Direction, Mechanism, Outcome, Reason, Bytes, SHA-256, Text. The reasons for refusal: Direction not allowed (the direction is forbidden by the rule), Too large (too large a volume), View only (the session is view-only), Not text (not text, when the rule admits only text), Copy could not be kept (the copy could not be saved). If the list is empty, it says No clipboard transfers match. The Export CSV button exports the list and writes the Export event.
If a rule says to keep the clipboard text, the Text column shows Kept, and the row has the Download text button (download the text as the file clipboard-{number}.txt). The other states: Not kept, Too large to keep, Not text. Downloading requires repeated confirmation: Confirm who you are to read kept clipboard text. The kept text is stored in encrypted form beside the recording and is deleted with it; each reading is written to the log (Stored file copy downloaded). Errors: The kept text is no longer on disk. (the text has already been deleted or the file removed) and The stored copy failed its integrity check and was not downloaded.
Kept clipboard text can contain passwords and other secrets. Do not download it without need and do not leave the downloaded file on shared drives.

Audit log and sign-in log
The audit log is the main document by which what happened on the gateway is checked. Every significant action goes into it: a sign-in, a change of a setting, the start and end of a session, a refusal, an export. The log is built as a chain: each event keeps the checksum (hash) of the previous one, so an event in the middle cannot be changed or deleted unnoticed (“Integrity check”). Administrator and Auditor can see the log and the pages below. Nobody can change the log from the console.
The Audit log page
The Audit log page (/audit) is opened by the Audit log item of the side menu. The caption: “Every gateway event in one hash chain: each keeps the hash of the one before. Exporting the current filter is itself written to the log.” By default the events of the last 7 days are shown, 30 per page; you page with the Newer and Older buttons. At the bottom is Total: N.

| Field | What to enter | Default / limits |
|---|---|---|
| Period (From, To) | The start and end dates. | The last 7 days. |
| User | The login whose actions to show (chosen from a list). | All. |
| Event | The type of event (chosen from a list; the names are in the table below). | All. |
| Object type | What the action was on. The list has only the kinds that are in the log; the possible ones: User, Group, Token, Access rule, Server, Folder, Account, Setting, Encryption key, SIEM export, List, Audit log, Session, Directory, Pass, Device profile, Access request, Grant, Command policy, Command pattern group, Clipboard, Command confirmation, Licence. | All. |
| Result | All, Success or Refused. The choice Refused shows all events that did not end in success (refusals and failures). | All. |
| The search line (User, object, address) | A word or part of one. Although the hint names the user, the object and the address, the search also goes through the event type code and the text of the details. Case does not matter. | Empty. |
The Apply button applies the filters. There is no reset button: to remove the filters, clear the fields and press Apply or open /audit again. Besides the fields, the page understands links like /audit?type=hostkey.mismatch (a filter by event code) and About: … (events about one object; the Show everything button removes the filter). Other console pages use such links.
| Column | What it means |
|---|---|
| No. | The number of the event in the chain. It does not change and is not repeated. |
| Time | The time in the display time zone (gateway.json). |
| User | Who performed the action. The word system means the gateway itself did it (for example, the daily check). |
| Event | The name of the event. |
| Object | What it was done on. |
| Object type | The kind of object (user, server, session and so on). |
| Address | The network address the person came from. |
| Result | Success — it succeeded. Failure — it did not work because of a failure. Refused — the gateway refused under the rules or a check. |
| Details | An icon with a link to the event card. |
CSV.
The export button saves to a file all the events by the current filter (not one page). The format: UTF-8 with a BOM mark, lines separated by CRLF, cells in accordance with RFC 4180; values that begin with =, +, -, @ are protected with an apostrophe so that Excel does not run them as a formula. The export itself is written to the log as the Export event with your filter even before the first byte is sent to you. The fact of an export cannot be hidden.
The event card
The event row is a link to the card /audit/{number}, with the heading Event No. {0}. On the card:
| Field | What it means |
|---|---|
| No. in the chain | The number of the event. |
| Time, user, event, object, Object type, Object id, Address, result | Who did the action, when, on what and from where. Address is the network address the person came from. |
| Session | A link to the session the event belongs to, if it belongs to a session. |
| Details | The details as JSON: what exactly was changed, which filter was applied, what the reason for the refusal was. Secrets (passwords, keys, codes) do not get into the log. |
| Hash, Previous hash | The hash of this event and the hash of the previous one. These values check the chain. To compare with the copy of the log in the SIEM, compare exactly the hash. |
The “No. N” buttons (the previous and the next event) and Back move along the chain. If the event you opened is part of a break in the chain, open its card from the integrity page (“Integrity check”).

The sign-in log (Sign-in log)
The Sign-in log page (/audit/logins) is a convenient slice of the audit log, only about sign-ins: “A filtered view of the audit log: console sign-ins and BURSUcm tokens.” It gathers the events Console sign-in, Second factor, Identity confirmed, User locked out, BURSUcm sign-in: password, BURSUcm sign-in: code, Token issued, Token revoked, SSH sign-in and Ticket used.
Above the table are switches with numbers: All, Successful, Refused, and also the channels Web console, BURSUcm, SSH. The search line (User, address) searches not only by login and address but also by the event type code and by the text of the event details; case does not matter. There is a CSV export (it is also written as Export). The columns: User, Method, Channel, Address, Result, Reason, Time.
| Method (Method) | What it means |
|---|---|
| password | Sign-in with a password. |
| password + TOTP | A password and a one-time code. |
| recovery code | Sign-in with a recovery code. |
| confirmation (password + code) | Repeated confirmation of identity before a dangerous action. |
| token | Sign-in from BURSUcm with a token. |
| Windows (Kerberos), Windows (Kerberos) + TOTP, Windows (Kerberos) + remembered device | Sign-in under a Windows account without a password (and with a code, or with a remembered device). |
Reasons for refusal (Reason).
| What it says | What to do |
|---|---|
| wrong login or password | The person made a mistake. If it repeats many times from one address, password guessing is possible. |
| wrong password / wrong code | The password or code is wrong. Several wrong codes in a row lock the account. |
| account locked / locked after failed attempts | The account is locked. An administrator unlocks it (“Users”) or the lockout lifts itself when its period ends. |
| user disabled | The user was disabled by an administrator. |
| step expired | The person took too long to enter the code; let them start the sign-in again. |
| too many attempts from this address | There have been too many attempts from this address; wait. |
| sign-in not set up (password or two-factor) | The user has no password or second factor set up. They must go through the setup in the console. |
| no access to that server | SSH: there is no access rule for this server. |
| refused by the licence | Sign-in is forbidden by the state of the licence (“Licence”). |
| a VNC server, reached with a VNC viewer | The person tried to open a VNC server with an SSH client; VNC is opened through “Connect” in the console or through BURSUcm. |
| in no mapped directory group / directory not available / the directory account name cannot be a gateway login / locked in the directory / directory error / no longer in the directory | Problems with signing in through a directory: the person is not in a mapped group, the directory does not answer, the directory account name is not suitable for a login, the account is locked or deleted in the directory (“Directories”). |
| Windows offered NTLM (refused); clocks differ too much; the gateway's Kerberos key does not match; the secure connection could not be confirmed; a ticket presented again (replay); the Windows sign-in token was refused; the domain is not connected; Windows sign-in is not set up; no such person in the directory; network logon denied on the gateway host; ticket refused as modified (klist purge, then sign in again); Windows refused the credentials (a policy may deny network logon) | Reasons for a failed Windows (Kerberos) sign-in: NTLM is not accepted, the time on the computer and the server differs, the key (keytab) is out of date, a ticket was replayed, the domain is not connected and so on. For “ticket refused as modified” the person must run klist purge and sign in again. The rest is fixed by an administrator (“Directories”). |

Reference of event types
The tables below hold all 196 event types the gateway can write, by group. The “Event” column holds the name as it is shown in the log; the “Code” column holds the internal event code that is visible on the card and in the SIEM (the field “type”) and by which you can search (/audit?type=…).
The events SSH session terminated and SSH session watched are written for RDP, database and VNC sessions too. To tell them apart, look at the object type and the event details.
Sign-in, sign-out and confirmation of identity
| Event | Code | What happened |
|---|---|---|
| Console sign-in | console.signin | Sign-in to the web console with a password (success or refusal). The reason for a refusal is visible in the details and on the “Sign-in log” page. |
| Second factor | console.signin.mfa | Entering the second-factor code when signing in to the console. |
| Sign-out | console.signout | Signing out of the console. |
| Identity confirmed | console.reauth | Repeated confirmation of identity (password and code) before a dangerous action: an export, downloading a copy, changing settings. |
| Own password changed | console.password.change | The person changed their own password. |
| Other sessions ended | console.sessions.revoke | The person ended their other console sessions. |
| TOTP setup refused | console.enrol.refused | The TOTP setup was rejected (for example, a wrong code or the step period expired). |
| BURSUcm sign-in: password | api.signin | Sign-in from the BURSUcm program: the password check. |
| BURSUcm sign-in: code | api.signin.mfa | Sign-in from the BURSUcm program: the code check. |
| Token issued | token.issue | A token was issued for the BURSUcm program. |
| Token revoked | token.revoke | The token was revoked. |
| SSH sign-in | ssh.signin | Sign-in to the gateway with an SSH client (success or refusal). |
| Ticket issued | ticket.issue | A one-time ticket for connecting to a server was issued. |
| Ticket used | ticket.redeem | The ticket was presented to the gateway and used (or rejected). |
| Device remembered for Windows sign-in | device.remember | The device was remembered for Windows (Kerberos) sign-in; the second factor is not asked for it. |
| Remembered device forgotten | device.forget | The remembered device was forgotten. |
Users, groups and two-factor protection
| Event | Code | What happened |
|---|---|---|
| User created | user.create | A user was created. |
| User changed | user.update | The user's data was changed. |
| Roles changed | user.roles | The user's roles were changed. |
| User disabled | user.disable | The user was disabled. |
| User enabled | user.enable | The user was enabled. |
| User unlocked | user.unlock | The user's lockout was lifted by hand. |
| User locked out | user.lockout | The user was locked out after failed sign-in attempts. |
| Language changed | user.language | The user changed the interface language. |
| MFA reset | user.mfa.reset | An administrator reset the user's second factor. |
| Temporary password set | user.password.reset | An administrator set a temporary password. |
| Sessions ended | user.sessions.end | An administrator ended all of the user's sessions in the console. |
| TOTP set up | mfa.enrol | The user set up TOTP. |
| Authenticator replaced | mfa.replace | The user replaced the authenticator app. |
| TOTP setup started | mfa.enrol.start | The TOTP setup was started. |
| Authenticator replacement started | mfa.replace.start | The replacement of the authenticator was started. |
| New recovery codes | mfa.codes.new | New recovery codes were issued. |
| TOTP accepted after the clock went back | mfa.step_rollback | A TOTP code was accepted after the server's clock went back. Check the time on the gateway. |
| Group created | group.create | A user group was created. |
| Group changed | group.update | The group was changed. |
| Group deleted | group.delete | The group was deleted. |
| Member added | group.member.add | A member was added to the group. |
| Member removed | group.member.remove | A member was removed from the group. |
The resource directory and access rules
| Event | Code | What happened |
|---|---|---|
| Folder created | folder.create | A folder of servers was created. |
| Folder renamed | folder.rename | The folder was renamed. |
| Folder moved | folder.move | The folder was moved. |
| Folder deleted | folder.delete | The folder was deleted. |
| Server created | server.create | A server was added. |
| Server changed | server.update | A server was changed. |
| Server deleted | server.delete | The server was deleted. |
| Server connection checked | server.test | The gateway's connection to the server was checked. |
| Account created | account.create | A server account was added. |
| Secret replaced | account.secret | The secret (password or key) of the account was replaced. The secret itself does not get into the log. |
| Account deleted | account.delete | The server account was deleted. |
| Privileged mode of an account changed | account.privileged | The privileged access mode of the account was changed (for network devices). |
| Device profile created | device_profile.create | A device profile was created. |
| Device profile changed | device_profile.update | The device profile was changed. |
| Device profile deleted | device_profile.delete | The device profile was deleted. |
| Rule created | rule.create | An access rule was created. |
| Rule changed | rule.update | The rule was changed. |
| Rule enabled | rule.enable | The rule was switched on. |
| Rule disabled | rule.disable | The rule was switched off. |
| Rule extended | rule.extend | The rule's period was extended. |
| Rule deleted | rule.delete | The rule was deleted. |
| Server host key confirmed | hostkey.confirm | An administrator confirmed the server's key. |
| Server host key mismatch | hostkey.mismatch | The server's key did not match the remembered one; the connection was rejected. The server may have been replaced by an impostor. |
| Server host key not confirmed | hostkey.unconfirmed | The server's key is not yet confirmed; the connection was rejected. |
| RDP server certificate confirmed | rdp.cert.confirm | An administrator confirmed the RDP server's certificate. |
| RDP server certificate cleared | rdp.cert.clear | The remembered RDP server certificate was cleared. |
| VNC server certificate confirmed | vnc.cert.confirm | An administrator confirmed the VNC server's certificate. |
| VNC server certificate cleared | vnc.cert.clear | The remembered VNC server certificate was cleared. |
| Database server certificate confirmed | server.db_tls_pin | The database server's certificate was confirmed. |
| Database server sign-in tested | server.db_test | The gateway's sign-in to the database server was tested. |
Access requests and approvals
| Event | Code | What happened |
|---|---|---|
| Access requested | request.create | A user requested access. |
| Request decided on by an approver | request.review | An approver made a decision on the request. |
| Access granted by request | request.grant | Access was granted through a request. |
| Request denied | request.deny | The request was denied. |
| Request cancelled | request.cancel | The request was cancelled by its author. |
| Request expired | request.expire | The request expired without a decision. |
| Granted access revoked | request.revoke | The granted access was revoked. |
| Granted access ended | grant.end | The period of the granted access ended. |
| New approver | approver.added | A new approver appeared. |
| Notification failed | notify.fail | The notification was not delivered. |
| Test notification sent | notify.test | A test notification was sent. |
Emergency access
| Event | Code | What happened |
|---|---|---|
| Emergency access used | breakglass.use | Emergency access was used. |
| Emergency access refused: limit reached | breakglass.limit | Emergency access was refused: the limit is used up. |
| Emergency access reviewed | breakglass.review | The use of emergency access was reviewed (the review is closed). |
| Emergency access review overdue | breakglass.overdue | The review of emergency access is overdue. |
SSH, Telnet and database sessions
| Event | Code | What happened |
|---|---|---|
| SSH session started | session.start | A session started (SSH, Telnet, SFTP, SCP). |
| SSH session ended | session.end | The session ended. The reason is in the details. |
| SSH session terminated | session.terminate | The session was ended by an administrator or an auditor (the same event for SSH, RDP, databases and VNC). |
| SSH session ended: access lapsed | session.expire | The session was closed because the access ended. |
| SSH session watched | session.watch | Someone joined the live view of a session (the same event for SSH, RDP, databases and VNC). |
| Session data policy changed | session.policy | The data policy of a running session changed. |
| Server login by the gateway | session.login | The gateway signed in to a device (for Telnet and network devices). |
| Privileged mode on the server | session.privileged | The gateway switched on privileged mode on the device. |
| Session video exported | session.export | A video was made from a session recording (VNC). |
| SSH request refused | ssh.refused | An SSH request was rejected by the gateway. |
| Telnet negotiation trouble | telnet.negotiation | A problem in negotiating Telnet parameters. |
| The server echoed a typed password | login.secret_echo | The device displayed the password the gateway typed. The recording is hidden; check the device settings. |
| A typed password was taken without a device's reply | login.secret_capture | The password the gateway typed was intercepted by an outside program on the device. |
| Database pass issued | db.pass.issue | A pass for connecting to a database was issued. |
| Database pass revoked | db.pass.revoke | The database pass was revoked. |
| Database connection refused | db.refused | The connection to the database was rejected. |
| MySQL local file load refused | db.local_infile_denied | MySQL: loading a local file was rejected. |
| Statements exported | db.statements.export | Database statements were exported to CSV. |
| Database settings changed | db.settings | The database settings were changed. |
Session recordings
| Event | Code | What happened |
|---|---|---|
| Recording signed | recording.signed | A session recording was signed (SSH, Telnet, SFTP, SCP, databases, VNC; RDP has its own event rdp.recording.signed). |
| Recording failed | recording.fault | A session recording (SSH, Telnet, SFTP, SCP, databases, VNC) failed the check or could not be written to disk. |
| Recording deleted by retention | recording.retention | The recording was deleted when its retention period ran out. |
| Recording played | recording.play | A session recording was opened for viewing (any session type, including RDP; written before the first byte). |
| Recording downloaded | recording.download | An SSH session recording was downloaded as a .cast file. |
| Recordings verified | recording.verify | A check of recordings on the integrity page (VNC). |
| Command text looked up | command.search | A search for the exact line of a command in a session (the query itself is not recorded). |
File transfers
| Event | Code | What happened |
|---|---|---|
| File transferred | file.transfer | A file was transferred (SFTP or SCP). |
| File operation refused | file.refused | An operation on a file was rejected. |
| Stored file copy downloaded | file.copy.download | A stored copy of a file or clipboard text was downloaded. |
| Stored file copy deleted | file.copy.delete | A stored file copy was deleted when its period ran out. |
RDP sessions
| Event | Code | What happened |
|---|---|---|
| RDP request refused | rdp.refused | An RDP request was rejected. |
| RDP session started | rdp.session.start | An RDP session started. |
| RDP session ended | rdp.session.end | The RDP session ended. |
| RDP data policy changed | rdp.policy | The RDP data policy changed. |
| RDP capture key stored | rdp.recording.key | The RDP recording key was stored. |
| RDP recording part sealed | rdp.recording.part | A part of the RDP recording was sealed. |
| RDP recording signed | rdp.recording.signed | The RDP recording was signed. |
| RDP recording failed | rdp.recording.fault | The RDP recording is damaged or failed the check. |
| RDP clipboard transfer refused | rdp.clipboard_denied | A clipboard transfer in RDP was rejected. |
| RDP drive access refused | rdp.drive_denied | Access to a redirected RDP drive was rejected. |
| RDP device refused | rdp.device_denied | An RDP device was rejected. |
| RDP channel blocked | rdp.channel_blocked | An RDP channel was blocked. |
| RDP recording exported as video | rdp.export | An RDP recording was exported to video. |
| RDP recording indexed | rdp.index | An RDP recording was indexed for fast seeking. |
| RDP playback job refused | rdp.render_refused | An RDP playback job was rejected (a limit, lack of resources). |
| RDP picture larger than the recording declares | rdp.render_picture | The picture in an RDP recording is larger than the recording declares; the gateway did not build it. |
| RDP file signing key changed | rdp.signing_key | The signing key of .rdp files was changed. |
VNC sessions
| Event | Code | What happened |
|---|---|---|
| VNC connection refused | vnc.refused | A VNC connection was rejected. |
| VNC clipboard transfer refused | vnc.clipboard_denied | A clipboard transfer in VNC was rejected. |
| VNC protocol error | vnc.protocol | A VNC protocol error. |
| VNC session worker failed | vnc.worker | The helper process of a VNC session ended abnormally. |
| VNC settings changed | vnc.settings | The VNC settings were changed. |
| Capture part sealed | vnc.capture.part | A part of the VNC recording was sealed. |
| VNC playback job refused | vnc.render_refused | A VNC playback job was rejected. |
| VNC picture larger than the recording declares | vnc.render_picture | The picture in a VNC recording is larger than the recording declares. |
Command control
| Event | Code | What happened |
|---|---|---|
| Command refused | command.denied | A command was rejected by a policy. |
| Session ended by a command policy | command.terminate | The session was ended by a command control policy. |
| Command cancelled, cancellation not verified | command.abort_unverified | The command was cancelled, but the gateway could not confirm that it did not run. |
| Command alert | command.alert | A policy alert fired (the command was not blocked). |
| Command line not readable | command.unread | The command line was not read by the gateway. |
| Many unreadable command lines | command.unreadable_burst | Many unread lines in a row. |
| Command policy created | command.policy.create | A command policy was created. |
| Command policy changed | command.policy.update | The command policy was changed. |
| Command policy deleted | command.policy.delete | The command policy was deleted. |
| Command policy could not be loaded | command.policy.fault | The command policy could not be loaded. Commands under this policy are not controlled until the error is fixed. |
| Command pattern group created | command.group.create | A group of command patterns was created. |
| Command pattern group changed | command.group.update | The pattern group was changed. |
| Command pattern group deleted | command.group.delete | The pattern group was deleted. |
| Command events lost | command.events.dropped | Command events were lost (the queue overflowed). |
| Command held for confirmation | command.confirm.ask | The command was held until a second person confirms. |
| Command allowed by a second person | command.confirm.allow | A second person allowed the command. |
| Command refused by a second person | command.confirm.deny | A second person forbade the command. |
| Command confirmation timed out (refused) | command.confirm.timeout | The confirmation did not come in time, the command was rejected. |
| Command confirmation cancelled | command.confirm.abort | The confirmation was cancelled. |
User directories (LDAP, AD)
| Event | Code | What happened |
|---|---|---|
| Directory user created | directory.signin | A user from the directory was created at the first sign-in. |
| Directory change applied | directory.sync | A change from the directory was applied. |
| Directory not available | directory.unavailable | The directory is unavailable. |
| Directory watch | directory.watch | Watching of the directory (lost or restored). |
| Directory added | directory.create | A directory was added. |
| Directory changed | directory.update | The directory was changed. |
| Directory deleted | directory.delete | The directory was deleted. |
| Directory group mapping changed | directory.mapping | The mapping of directory groups was changed. |
| Directory connection checked | directory.test | The connection to the directory was checked. |
| Directory certificate confirmed | directory.certificate | The directory's certificate was confirmed. |
| Kerberos keytab changed | directory.keytab | The Kerberos key file (keytab) was changed. |
Audit, settings and the encryption key
| Event | Code | What happened |
|---|---|---|
| Export | audit.export | A list was exported to CSV (with its filter). |
| Integrity check | audit.verify | A check of the log chain (daily or manual). |
| Audit chain checkpoint signed | audit.checkpoint | A chain checkpoint: the integrity of the log up to event N is signed. |
| Local journal replayed | audit.journal | Records from the gateway's local journal were moved to the database after an outage. |
| Setting changed | setting.change | A setting was changed. Secrets are not recorded. |
| SIEM test event | siem.test | A test event sent to the SIEM. |
| SIEM receiver switched without delivery | siem.switch_forced | The SIEM receiver was changed without delivering the latest events to the previous one. |
| SIEM export stopped without delivery | siem.stop_forced | Sending to the SIEM was stopped without delivering the latest events. |
| Encryption key created | key.init | The encryption key was created. |
| Unseal | key.unseal | The gateway was unsealed (the passphrase or the recovery key was entered). |
| Encryption key changed | key.rotate | The encryption key was changed. |
| Key recovered / mode changed | key.recover | The key was recovered or its protection mode was changed. |
| Key created again | key.reset | The key was created anew. |
| Existing key kept | key.keep | The existing key was kept. |
| Setup code | setup.code | An operation with the initial setup code. |
| Setup finished | setup.complete | The initial setup is finished. |
Licence
| Event | Code | What happened |
|---|---|---|
| Licence installed | licence.install | A licence was installed. |
| Gateway clock checked against licence time | licence.clock | The gateway's clock was compared with the licence time. |
| Licence time recorded | licence.time | The trusted licence time was recorded. |
| Licence state changed | licence.state | The state of the licence changed. |
| Licence clock offset decided for this host | licence.offset | The correction of the licence clock was determined for this host. |
| Licence used on a host it does not list | licence.host | The licence was used on a host that it does not list. |
| More active servers than the licence allows | licence.over_limit | There are more active servers than the licence allows. |
| Licence request made | licence.request | A licence request was made. |
| Installation released | licence.release | The installation was released (the licence was taken off the host). |
| Server activation refused by the licence | licence.limit | Activation of a server was rejected by the licence. |
| Refused by the licence state | licence.denied | An operation was rejected because of the state of the licence. |
| Online licence call | licence.online | The gateway contacted the licence server. |
Integrity check
The Integrity check page (/audit/integrity) answers the question “has anyone changed the audit log and the recordings after the fact”. Administrator and Auditor can see it. The page caption reads: “Recomputes the audit log's hash chain from event No. 1. Runs by itself every day at 03:00.”
How it works
Every audit log event has a hash, a checksum that includes the hash of the previous event. If an event in the middle is changed or deleted, the hashes after it stop matching, and the check points to the first event where the chain is broken. The check recomputes the chain from the very first event. Every night at 03:00, in the display time zone, the gateway runs it by itself. If the chain is intact, it signs a checkpoint: the event Audit chain checkpoint signed, which refers to the number of the last event checked. The signature is made with the same key that signs the session recordings. If the chain is broken, or the check could not finish, no checkpoint is written. The console has no page that verifies the checkpoint signatures: the event is simply kept in the log and goes to the SIEM, and anyone who has the gateway's public key can verify it.
Checking the log chain
The card The audit log's hash chain (“Every event keeps the hash of the one before. An event changed or deleted afterwards breaks the chain.”).
- The Check button starts a check by hand. A progress bar Checked {0} of {1} runs; you do not have to keep the page open.
- The line Chain head: event No. {0} — compare it with the copy in the SIEM shows the number of the last event. Compare it (and the hash on that event's card) with the copy of the log in the SIEM: if someone has deleted the tail of the log on the gateway, that cannot be seen from inside the gateway, but the SIEM still holds a full copy.
- The result Chain intact: events No. 1–{0}. and the line Checked {0} in {1} s. mean everything is in order.
- If the chain is broken: Break at event No. {0}: expected hash {1}…, found {2}… (expected: is the hash that should be there, found: is the hash that was found) and the text Events from No. {0} on cannot be taken as confirmed. The event may have been changed or deleted directly in the database. Next to it is the button Open event No. {0}.
- The last check could not finish; run it again. means the check did not run to the end (for example, the database became unavailable). This is not a violation but a failure: run the check again.
- The chain has not been checked yet. means no check has been made yet.
- This result could not be written to the audit log. It is shown from the gateway's memory and is lost on a restart: run the check again once the database accepts writes. means the result is shown, but it could not be written to the log.
The Check history table keeps the last 10 checks: When, Who (a person started it; for the nightly check it is on schedule), Range (No. 1–N), Duration, s and the state (intact or break).

This is a serious signal: the log may have been changed directly in the database. Do not try to “fix” it. What to do:
- Write down the number. Note the event number from the message Break at event No. … and the time of the check.
- Open the event. Click Open event No. … and save the card (hash, previous hash, time).
- Compare with the SIEM. Find the same event in the SIEM (by number and hash): the copy in the SIEM is independent of the gateway's database. A difference from that copy shows what exactly was changed.
- Tell the person responsible for security. All events from the given number on cannot be taken as confirmed. Check who has access to the gateway's PostgreSQL server.
- Check the badge. The Last chain check badge on the Overview page stays red until the next check finds the chain intact, but a break in events that already exist does not go away by itself.
Checking recordings
The card Recordings (“Checks that a recording is whole, in order and exactly as it was signed, and names the first part that is not. The result goes to the audit log.”) with the button Verify recordings. In version 1.0.0 it checks only VNC recordings, starting with the newest (a counter Verifying recordings: {0} of {1} runs). SSH and RDP recordings are checked every time they are opened. If there are no VNC recordings yet, it says No VNC recordings to verify yet. After the check you see the summary ({0} verified, {1} cut at a crash, {2} failed), the time of the last check and a table Session / Result. The result for each recording:
| Result | What it means |
|---|---|
| Verified | The recording is intact. |
| Cut at a crash; what was written is signed | The session was interrupted by a crash, and what was recorded is signed. This is not tampering. |
| Failed and First bad part: {0} | The recording is damaged. The first bad part is named. The cause is one of the following. |
| Skipped: the recording was deleted by retention | The recording was deleted at the end of its retention period, so there is nothing to check. |
| Cause | What it means |
|---|---|
| A byte of the part was changed. | The content of a part of the recording changed after it was signed. |
| A part is missing. | A part of the recording has disappeared. |
| A file is there that the signed manifest does not list. | The recording's folder contains a file that is not in the signed description. |
| The part belongs to another session. | A part of the recording has been planted from another session. |
| The manifest differs from the one the audit log's hash chain recorded. | The description of the recording does not match what the gateway wrote to the log during the session. |
| A stored file copy does not match the signed manifest. | A stored copy of a file does not match the signed description (for checking file recordings). |
The result is written to the log as the event Recordings verified (the number checked and the first bad part). You can also check a single recording with the button Verify this recording on its card (VNC). If a recording fails the check, act as for a broken chain: delete nothing, save the details, compare with the copy of the event in the SIEM and tell the person responsible.
SIEM export
The gateway can send the audit log to an external monitoring system (a SIEM) over the syslog protocol. This gives you an independent copy of the log: even if someone damages the gateway's database, the original stays in the SIEM. The SIEM export page (/system/siem, menu Settings → Integrations) is available only to Administrator. The auditor sees the state of the export on the Overview page and in the bell, but cannot change the settings.

Fields on the page
| Field | What to enter | Default / limits |
|---|---|---|
| Enabled (Send events) | A tick box: turn the export on. | Off. |
| Host | The name or address of the receiver. Required when the export is on: Enter the receiver's host. | Up to 253 characters, no spaces, does not start with “-”. |
| Port | The receiver's port. | From 1 to 65535. The default is 6514. |
| Transport | UDP, TCP or TLS. | TLS. Hints: TLS: syslog over TLS, RFC 5425 (port 6514). TCP: without encryption (port 514). and UDP has no delivery confirmation: losses go unnoticed, and a message over 8192 bytes is cut. |
| CA certificate | The certificate of the authority that signed the receiver's certificate, in PEM format (-----BEGIN CERTIFICATE-----). Needed for TLS if the receiver uses its own certificate authority. | Empty = the system store. If it is not PEM: The CA certificate is not PEM. |
| Format | CEF, LEEF or JSON (the message format; see below). | CEF. |
| Send every database statement to the SIEM (text cut to 1 KB, credentials masked) | A tick box: also send every database statement to the SIEM. | Off. Statements go after the log events, starting from the moment it is turned on, no later than a minute after they are executed. The text is the same as in the console: passwords are masked as far as possible, the data stays, and the text is cut to 1 KB. Query parameters are never sent. |
The Save button saves the settings. The Send a test event button sends a test event (type siem.test) with the values that are in the form, whether or not they are saved. The delivery cursor does not move. The result is The test event was sent. or The test event was not sent: {0} (in place of {0} is the cause from the table below). The test event is also written to the audit log (SIEM test event) as an ordinary link of the chain, even when it could not be sent. Always test the receiver with the test button before you turn the export on.
The Delivery state card
| Row | What it means |
|---|---|
| Queue | How many events the receiver has not yet confirmed ({0} events). |
| Last sent | The number of the last confirmed event (No. {0}). This is the “cursor”. |
| Last successful pass | The time of the last successful transfer. |
| Last error | What went wrong in the last attempt (see below). |
| State | off means not turned on; in order means working; failing means the last attempt failed and the gateway is retrying; The export is stopping: the latest events have not been delivered yet; Switching receiver: the latest events have not been delivered to the previous receiver yet. |
| Last error | What to do |
|---|---|
| the connection was refused (nothing is listening on that port) | Nothing on the receiver is listening on this port, or a firewall blocks it. Check the port and the service. |
| the receiver did not answer in time | The receiver did not answer in time. Check the network, the route and the load on the receiver. |
| the host name could not be resolved | The name did not resolve. Check the name in the Host field and the gateway's DNS. |
| the TLS handshake failed or the receiver's certificate was not accepted | TLS could not be negotiated or the receiver's certificate was not accepted: check the CA certificate, the certificate's validity period and that the name in Host matches the name in the certificate. |
| delivery failed for another reason; details are in the service log | Look in the gateway's service log. |
Turning off and changing the receiver
Turning the export off, changing the receiver of a running export and turning off the sending of database statements all require you to confirm your identity again (password and code, 10 minutes), because they weaken the protection of the log. The gateway reminds you: Confirm who you are before turning the SIEM export off., Confirm who you are before changing the receiver of a running export., Confirm who you are before turning the sending of statements off. The link Confirm who I am leads to the page where you enter them.
While the latest events (including the event about the turning off itself) have not been delivered to the previous receiver, the setting cannot be changed: The last events are still being delivered to the previous receiver, so the export cannot be changed now. Wait until that has finished. A stop is cancelled by switching the export on again. Turn the export off separately from changing the receiver: Turn the export off on its own: the last events still go to the receiver saved now. Change the receiver after the export has stopped.
If the old receiver is unavailable and the last events cannot be delivered to it, there are two emergency ways out. Both require you to confirm your identity and to agree in a window, and the log records what was left undelivered:
- Stop without delivery stops the export without delivery (Stop the export without delivering the last events to the receiver?). The log event is SIEM export stopped without delivery.
- Switch without delivery switches to the new receiver (Switch to the new receiver without delivering the last events to the previous one?). The event is SIEM receiver switched without delivery.
In both cases the cursor stays where it is, so the next time the export is turned on, the new receiver gets everything the previous one did not confirm. Every change of the settings is written as the event Setting changed; the certificate of the certificate authority is recorded only as fingerprints, not as the text itself.
How events are delivered
- At least once. The queue is the log chain itself; the gateway remembers the number of the last confirmed event and starts from it after a failure. An event may arrive twice, but none is skipped. To filter out repeats, use the event number and the hash.
- Confirmation is closing the connection. With TCP and TLS the receiver confirms nothing during the transfer, so the gateway counts events as received when it has closed its end of the connection and has waited for the receiver to close its end. The cursor is saved at the end of every transfer and after every 10 packets of 500 events. After a drop, the gateway re-sends no more than 5000 events.
- The receiver must close its side when the gateway closes its own. rsyslog, syslog-ng and Netty-based receivers do this. If the receiver does not, every transfer ends with an error at its first confirmation.
- UDP confirms nothing. Losses go unnoticed, and a message longer than 8192 bytes is cut and ends with the mark
…[truncated]. - Retries after a failure. The pause between attempts grows from 1 second to 5 minutes and is reset when the settings change. The gateway notices new events at once.
The message format is syslog per RFC 5424: facility 13 (log audit), application name bursu-pam, MSGID is the event code. TCP uses framing per RFC 6587 (octet counting), TLS uses RFC 5425, TLS versions 1.2 and 1.3; the gateway checks the receiver's name but does not check certificate revocation. The content for each format is below.
Event severity. The gateway decides it from the event type. In CEF it is written as a number from 0 to 10 in the message header. In syslog it is written as a level per RFC 5424 in the message priority (this applies to all three formats; LEEF and JSON have no severity field of their own). Conversion: 9–10 is critical, 7–8 is error, 5–6 is warning, 3–4 is informational, 0–2 is debug. For most events a general rule applies: success is 3 (informational), and any other outcome, that is a refusal or a failure, is 6 (warning). Some events have their severity set separately:
| Events | CEF | syslog |
|---|---|---|
breakglass.use (emergency access used) | 9 | critical |
breakglass.limit, breakglass.overdue, command.terminate, command.abort_unverified, command.unreadable_burst, command.policy.fault; breakglass.review with the verdict Not justified (or any unsuccessful outcome); changes to rules (rule.create, rule.update, rule.enable, rule.extend) where the rule's subjects include an administrator | 7 | error |
request.revoke, command.alert, command.confirm.allow, command.confirm.deny, command.confirm.timeout, command.confirm.abort | 5 | warning |
command.denied, command.events.dropped, approver.added; all other events with an outcome other than success | 6 | warning |
request.grant, command.confirm.ask, command.search, creating, changing and deleting policies and command template groups | 4 | informational |
request.create, request.review, request.deny, request.cancel, request.expire, notify.fail, notify.test, the other breakglass.review events; all other successful events | 3 | informational |
grant.end (the granted access has run out), command.unread | 2 | debug |
The table is useful for setting up alert rules in the SIEM: for example, react to critical and error at once and do not show debug.
The content of the message for each format:
| Format | What is inside |
|---|---|
| CEF | The header CEF:0|BURSUsofts|BURSU PAM|version|type|type|severity and pairs: rt (time), externalId (event number), outcome, suser (user), cs1 (kind of object), cs2 (object), cs3 (session), src (address), file fields for transfers, flexString1 (request number), flexString2 (policy), cs4 (details), cs5 (event hash). |
| LEEF | LEEF 2.0, the delimiter is the tab character (written as x09 in the setting). Keys: devTime, devTimeFormat, cat, outcome, usrName, resource, sessionId, src, auditId (event number), details, eventHash. |
| JSON | Fields: id, time, type, outcome, actor, targetKind, targetId, sessionId, source, details, hash. |
The event number is in externalId (CEF), auditId (LEEF) and id (JSON); the event hash is in the last key of each format.
An example receiver on rsyslog
Below is a typical rsyslog setup for receiving over TLS (port 6514). It is put together from the rsyslog documentation; it has not been tested with this gateway in the documentation, so try it with the Send a test event button.
global(
DefaultNetstreamDriver="gtls"
DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ca.pem"
DefaultNetstreamDriverCertFile="/etc/rsyslog.d/siem-cert.pem"
DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/siem-key.pem"
)
module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.AuthMode="anon")
input(type="imtcp" port="6514")
if $programname == 'bursu-pam' then /var/log/bursu-pam.log
& stop
The receiver's certificate (siem-cert.pem) must be issued for the name you entered in the Host field, and the certificate of the certificate authority must be the one you pasted into CA certificate (if it is not in the gateway's system store). The anon mode means the receiver does not ask the gateway for a certificate. rsyslog closes the connection when the gateway does, so it meets the confirmation condition.
Confirming your identity again
Some actions (turning the export off, changing the receiver, downloading a copy of a file, CSV export of database statements, exporting video) ask you to enter your password and code again: the page Confirm it is you with the text “This action needs your password and a code again. The confirmation lasts 10 minutes.” The fields are Password and Code from the app (or Or a recovery code), and the button is Confirm. The error The password or the code did not match. means the password or the code is wrong; a wrong code counts as a sign-in attempt and, if repeated, locks the account out.
The Auditor role
The Auditor role is made for a person who checks what others do and changes nothing themselves. An auditor has nothing to configure: they look, search, play back recordings, export reports and close emergency access reviews. The rights are defined by the console policy “audit read”, which is given to the Administrator or Auditor role after a full sign-in (with a password and a second factor).
What the auditor sees
| What | Address | What is allowed |
|---|---|---|
| Overview | /overview | View. The block “Where to start” is not shown. |
| Sessions (tabs Running, SSH / Telnet / SFTP / SCP, RDP, VNC, Databases) | /audit/sessions, /audit/ssh-sessions, /audit/rdp-sessions, /audit/vnc-sessions, /audit/db-sessions | View, search, play back, watch live, end sessions (End). Ending a database session requires you to enter your password and code again if you have not confirmed in the last 10 minutes. |
| Emergency access | /audit/breakglass | View and close reviews (see below). |
| File transfers, Clipboard, Statements | /audit/files and others | View and export CSV. File copies and clipboard text are available after confirming your identity again. |
| Sign-in log, Audit log, Integrity check | /audit/logins, /audit, /audit/integrity | View, export, run checks. |
| Device profiles and command control | /servers/profiles, /commands | Read only. |
| Settings, users, servers, rules | /settings and others | No: these pages open only for an administrator. |
An auditor cannot change settings, turn the SIEM on and off, create users, servers or rules, or approve access requests. The Administrator and Approver roles cannot be given to the same person; the Auditor and Administrator roles can be combined, but then the auditor stops being independent, so in an organisation with a strict separation of duties it is better to avoid this.
Everything an auditor does is written to the log: watching a session live, playing back and downloading a recording, searching for an exact command string, exporting a CSV, downloading a copy of a file. It is useful for auditors to know this: their work can be checked.
Reviewing emergency access
Emergency access lets a person sign in to a server without approval when the matter cannot wait (the “Emergency access” section). Every such use must be reviewed. The Emergency access page (/audit/breakglass) is available to the administrator, the auditor and the approver. The tabs are Waiting for review (awaiting review), All uses (all) and Command list (the command lines of the use). The table has Person, Server and account, Reason (the reason the person wrote), Ticket, Used, Sessions and Review (Review due by …, Review overdue since … or Reviewed by … on …). The states are Waiting for review, Reviewed and Overdue.
- Open the use. Read the reason and open the related sessions (Sessions) and the list of commands (Command list).
- Check what was done. Play back the recording and read the commands. Compare them with the reason.
- Fill in the Review this use form. The Verdict field: Justified, Not justified or Needs follow-up (further action is needed). In Note write what you checked and what you found; the note is required and is stored with the verdict.
- Click Close the review. The message Review closed. appears and the use gets the status Reviewed.
You cannot review your own use: You cannot review your own use. or Another Approver or an Auditor reviews your use of emergency access; you cannot close the review. Reviews are done by an approver or an auditor; an administrator only reads them. Form errors: Write a note., Choose a verdict., This use has already been reviewed. Overdue reviews hang in the bell in red: Emergency access reviews overdue: N (visible to the administrator).

An auditor's working day
- Start with Overview. Read the Health block and the bell: key, SIEM, Last chain check, disk, recording. Red is a reason to act at once (see “Overview”).
- Check the nightly chain check. On Integrity check there should be Chain intact for 03:00. Compare the Chain head number with the copy of the log in the SIEM.
- Close the emergency access reviews. Open Emergency access → Waiting for review.
- Look through the refusals. In the Sign-in log choose Refused: repeats from one address, lockouts. In the Audit log set Result → Refused. Look separately at
/audit?type=hostkey.mismatch: every such event is a refused connection because the server's key has changed. - Review sessions at random. Open the recordings of privileged sessions and emergency sign-ins; search the text for suspicious commands (
rm -rf,sudoand the like). - Check data transfers. On File transfers and Clipboard look at large and refused transfers; find where a particular file went by its Exact SHA-256.
- Export a report if needed. CSV from the log and the lists; remember that every export is itself written to the log.
My access in the web console
This part of the guide is written for people who work on servers through the gateway: server administrators, engineers, contractors. It describes how a person gets access to a server: in the web console, in the BURSU Connection Manager program and in the usual clients (ssh, sftp, mstsc, a VNC viewer, psql). First we look at the My access page: most connections start there.
The page opens at /access. Any signed-in user can see it, whatever their role. The menu item is called My access, and it is in the group that concerns only you.
What the page shows
The page has an introductory paragraph and one or more blocks. Each block collects the servers of one protocol. The order of the blocks is SSH, Telnet, RDP, VNC, PostgreSQL, MySQL, SQL Server.
A block has a table with the columns Server, Account and Protocol. The gateway shows only what the access rules allow you right now. A server you have no right to does not appear in the list. If a right applies only on a schedule or is granted for a time, the row disappears when the time runs out.
If no rule allows you anything, the table is replaced by the text Your access rules allow no server now. What to do in that case is described below in the subsection about requesting access.

SSH and Telnet servers
SSH and Telnet rows have no Connect button. You connect to them with an ordinary client; for the gateway address and port 2222 see the section SSH clients. Telnet servers are also opened through SSH: the gateway itself talks to the server over Telnet. The channel from the gateway to such a server is not encrypted. The gateway warns you about this in the terminal.
The Connect button for RDP
For an RDP server you do not need the code from the authenticator app. Click Connect. The gateway creates a reservation, which lives for 10 minutes. The page Connect with Remote Desktop opens (address /access/rdp/<id>). It has two steps.
- Download the file. Click Download .rdp file and open the file. It holds the gateway address, the port and a one-time user name of the form
bursu-<id>(a long string of letters, digits and hyphens; nobody types it by hand, it is already in the file). There is no password in the file. Open the file before the reservation ends (the page says until what time). - Show the code. When Remote Desktop (mstsc) asks for a password, go back to the page and click Show code. The One-time code appears. Paste it into the password field. The code is shown once, works once and lives for 60 seconds.
If you refresh the page, the code does not appear again. The text The code for this connection has already been shown. If it did not work, start again. means the code has already been shown. Click Start again and the gateway creates a new reservation. Do not save the password in mstsc: the next connection needs a new code.
If the file is not signed, Windows says the publisher is unknown. The page says so: The file is not signed yet, so Remote Desktop warns that the publisher is unknown. Tick only the devices your rule allows; the gateway blocks the rest. The administrator signs the file, see signing RDP files. Whether to accept the warning is decided by your organisation's policy.
The file offers only the devices and drives that your rule allows. If you tick more in the mstsc window, nothing changes: the gateway blocks the extra ones (The file offers only the devices and drives your rule allows. Ticking more in Remote Desktop changes nothing: the gateway blocks them.).
For details about mstsc itself, the port and refusals, see RDP clients.

The Connect button for VNC
VNC needs a fresh code from the authenticator app. Click Connect. The window Connect to <server> as <account> opens with the field Code from your authenticator app (6 digits). Enter the six digits and click Show the connection details.
The code must be a new one. If you signed in to the console less than 30 seconds ago, wait for the next code: the one you signed in with is not accepted a second time. A recovery code does not work here. If the authenticator is not set up, the page says Set up the authenticator app on your profile first; VNC connections ask for its code. Other errors: Enter the 6-digit code., A recovery code cannot be used here. Use the 6-digit code., Too many wrong codes. Try again later. Wrong codes are counted the same way as at sign-in and lead to a lockout.
After the right code the page shows:
| Field | What it is | Note |
|---|---|---|
| Host, Port | The address and port of the gateway's VNC entry. | The administrator sets the port (VNC settings). |
| User name | Always bursu-ticket. | The gateway rejects any other name. |
| One-time password (valid for 60 seconds) | A one-time ticket. You enter it in place of a password. | Lives 60 seconds, works once. Next to it runs a countdown Expires in … s. Shown once. |
| Gateway certificate (SHA-256) | The fingerprint of the gateway's certificate. | Compare it with the fingerprint that the viewer or the downloaded file shows. |
| TigerVNC command line | A ready-made start command. | The Copy button copies it. There is no password in the command. |
| Download the gateway certificate (PEM) | The button downloads the gateway's certificate. | The viewer needs the file, see VNC clients. |
The ticket can be used only from the address from which you opened the console. If the viewer runs on another computer, the gateway refuses. Open the console on the computer where you start the viewer.

The Connect button for databases
For PostgreSQL, MySQL and SQL Server the gateway issues a “pass” (pass). This is a long random password that you enter in your program in place of the database password. You never learn the password of the server's real account.
First you need to set up the authenticator app in your profile. If you have none, the button is replaced by the hint Set up an authenticator in My profile to connect to databases.
- Click Connect. The window Connect to <server> as <account> opens.
- Enter the code. In the field Code from your authenticator enter a new six-digit code. Hint: A new six-digit code. The code you signed in with does not count again.
- Click Get a pass. The page with the pass appears.
The page shows:
| Field | What it is | Note |
|---|---|---|
| Host, Port | Where to connect. | The port depends on the protocol; the administrator sets them (database settings). |
| User name | A name of the form login:server:account. | Copy it whole. |
| Database | The default database. | For PostgreSQL the database is required. |
| Pass (use it as the password) | The pass itself. | The buttons Show, Hide, Copy. Shown once: This pass is shown only now. Reloading the page does not show it again. |
| Gateway certificate (SPKI SHA-256) | The fingerprint of the key of the gateway's certificate. | The buttons Download the gateway certificate (PEM) and Download the gateway certificate (.cer, Windows). After downloading, compare the fingerprint: Check that the downloaded file's SPKI SHA-256 is … |
Below are the tabs How to connect with ready-made commands for psql, mysql, sqlcmd and programs with a window. For details see Database clients.
How long a pass lives
The values below are the defaults. The administrator can change them in the database settings. The page shows your actual numbers in the line Use within … minutes; then it opens new connections until … from this computer.
- You must start the connection within 120 seconds of issue. If you are late, get a new pass.
- The hard end of a pass is counted from issue (by default after 8 hours). It comes sooner if your sign-in to the console or to BURSUcm ends sooner, or your right to the server does (for example, access granted by a request). The page shows the exact hour in the line Use within … minutes; then it opens new connections until … from this computer.
- If all connections on a pass are closed and nobody opens new ones for 30 minutes, the pass stops working. An open connection with no queries is closed by the gateway separately (by default after 60 minutes, with the message Closed after inactivity.).
- One pass opens up to 16 connections. That is enough for pgAdmin, DBeaver, Workbench and SSMS to open their extra windows.
- A pass is tied to the address of the computer from which it was first used. It does not work from another address.
- There can be up to 4 live passes for one combination of “person, server, account”. When you get a fifth, the oldest stops opening new connections (those already open keep working).
- You can get a pass no more than 10 times a minute.
If strict encryption (Encrypt=Strict) is turned off on SQL Server, the pass opens only one connection. The page says: This pass opens one connection only (Encrypt=Strict is off on this gateway).
Your live passes
The block Your live passes lists your active passes: Server, Account, Issued, Open connections, Ends. The Revoke button revokes a pass and closes its connections: The pass was revoked and its connections were closed. If there are no passes, it says You have no live pass.

The gateway certificate
The address /access/certificate serves the gateway's certificate for clients. The PEM format is needed by psql, mysql, DBeaver and VNC viewers. The .cer format is needed for Windows (SSMS, sqlcmd). If the administrator installed a certificate from a certificate authority, the client needs that authority's root certificate. Ask the administrator for it.
If the gateway's name is not given in the certificate, the page warns you: The gateway's certificate does not name …. Clients that check the name will refuse it; tell the administrator.
The server is not in the list
If the server you need is not in the list, or there is no account, no rule allows it to you. This can be because access is granted only on request, or because the rule's validity period has ended. Submit an access request as described in the section Access requests. In an emergency there is emergency access: Emergency access. If the ssh message says Access is not allowed now. You can request it in the web console…, a rule exists but does not fit you right now, and you can submit a request.
If the server is still missing after access was granted, refresh the page. For VNC and databases the Connect button appears only when the matching gateway entry is running. For RDP the button is always there when a rule allows you RDP. If the .rdp file opens but the connection fails, ask the administrator whether the gateway's RDP entry is enabled (the setting rdpListen).
The reference pages in the Help group (File transfer, Database clients, VNC viewers, Command control) repeat some of this information in your language.

BURSU Connection Manager and the gateway
BURSU Connection Manager (“BURSUcm” in the text) can work through the gateway. The mode is called PAM Gateway. It is the fourth way to store data, after PostgreSQL, the local database and BURSUcloud. You see only the servers that the rules allow, and every session is recorded on the gateway. The mode is available in both desktop applications: Windows (WPF) and Linux/macOS (Universal). The differences are described at the end of the section.
PAM Gateway mode is not part of every BURSUcm build. If the first-run screen has no PAM Gateway button and the sign-in screen has no Sign in to a PAM gateway instead link, the installed build does not contain the mode. Ask the administrator which version of BURSUcm to install.
Turning the mode on
- Choose the storage. On the first run (or after Clear cache & restart setup on the sign-in screen) choose the PAM Gateway tile. The caption under it in Windows is Your organisation's BURSU PAM gateway. Sessions go through it and are recorded there.
- Enter the address. In the Gateway address field enter the gateway address without a path, for example
pam.example.orgorhttps://pam.example.org:8443. The port is the web console's port. The gateway can be reached only over HTTPS. The administrator gives you the address. - Sign in. The PAM Gateway sign-in screen opens, with the caption The gateway shows only the servers its rules allow you. Every session is recorded on the gateway.
If the application is already set up for another mode, the sign-in screen has the link Sign in to a PAM gateway instead. From the gateway screen you can go back to the usual sign-in with the link Sign in with BURSUcloud instead or Use local sign-in instead.
To leave gateway mode, sign out of the gateway and choose Clear cache & restart setup on the sign-in screen (the hint in the application: To leave PAM Gateway mode, sign out and choose “Clear cache & restart setup” on the sign-in screen.).
Trusting the gateway's certificate
The first time, the application shows a window with the gateway's certificate: the field Certificate (SHA-256). Compare the fingerprint with the one shown by the gateway console (the section The gateway certificate and the status page) or with the one the administrator gave you. Only after they match, click the confirm button. The application remembers the gateway's key for the “address and port” combination.
If the gateway later presents a different certificate, the application refuses and shows two fingerprints: Trusted before: … and Presented now: …. This may be a genuine certificate change, but it may also be a substitution. Do not continue until the administrator confirms the change. Then click Forget the gateway's certificate on the sign-in screen, and at the next sign-in the application shows the new certificate.
Signing in: password and second factor
On the gateway screen enter your login and password and click Sign in. The application then opens a window for the code. Enter the six digits from the authenticator app or a recovery code. The sign-in is complete when the window closes. The line Signed in until … shows when the sign-in ends. The administrator sets the lifetime of a sign-in: 8 hours by default, from 1 to 168 (the setting BURSUcm token lifetime, h). When it runs out, sign in again.
If your second factor is not set up yet or the password must be changed, the application sends you to the web console: the button Open the gateway console. Set up the authenticator and change the password there first, then come back.
Passwordless sign-in (Kerberos)
If the gateway is joined to a domain and Kerberos sign-in is turned on, the sign-in screen has a button. In Windows it is called Sign in with Windows. In Universal on Linux it is called Sign in with Kerberos (you need a valid ticket: sign in to the domain or run kinit). No password is needed with this sign-in, but the second-factor code is still requested.
If the sign-in fails, a line with the reason appears above the form. All such lines are listed in the Troubleshooting chapter, in the section “Sign-in with Windows / Kerberos”; you can repeat the sign-in with an ordinary password.
The server catalogue
After sign-in the list holds only the servers and accounts that are allowed for you. The catalogue is read-only: in gateway mode you cannot create or change connections. The application answers such attempts with the message Not available in PAM Gateway mode: the gateway's catalogue is read-only. The Refresh the list button updates the catalogue. If a server has disappeared, the application says This server is no longer in the gateway's catalogue. Refresh the list and try again., and if a server has no accounts allowed for you, The gateway lists no account you may use on this server.
If a server has several allowed accounts, the application asks: the window Choose an account, with the text … has more than one account you may use. Which one?
The Request access... button opens an access request, which is described in the section Access requests. For emergency access see Emergency access.
Connecting to servers
Connecting looks the same as before: double-click a server. The application itself asks the gateway for a one-time ticket (it lives for 60 seconds and works once) and fills it in. You do not need to enter a password or a code.
| Server type | How it opens | Notes |
|---|---|---|
| SSH | A tab with a terminal. The application signs in to the gateway over SSH with the ticket. | The gateway's host key is checked against the key that the gateway announced at sign-in. If it does not match: The gateway's SSH key does not match the one it announced, so the connection was refused. Tell the administrator. |
| Telnet | A tab with a terminal, like SSH. | The gateway writes in the terminal that the leg from the gateway to the server is not encrypted. Files are not available: File transfer is not available for Telnet servers. |
| RDP | A remote desktop window using the built-in BURSUrdp engine. | Without the engine, RDP through the gateway does not work: Through the gateway, RDP needs the BURSUrdp engine, which is not available on this computer. |
| VNC | A VNC tab. Marked “VNC server, reached through the gateway”. | For Macs and some servers the leg from the gateway to the server is not encrypted, and the application says so. View mode: View only. |
| PostgreSQL, MySQL, SQL Server | The Database connection window with a pass. | Details below. |
If the gateway did not accept the ticket (for example, more than 60 seconds have passed), the application says The gateway did not accept the sign-in. Its one-time code lives 60 seconds; connect again. Just connect again.
To open a server's files, click the button Open the files of this server through the gateway. The application opens SFTP with a one-time ticket; no code is needed. The buttons for download, upload and changes work according to your rule: if the rule does not allow it, the application says, for example, Download is not allowed by the gateway's rule., Upload is not allowed by the gateway's rule., Changing files on this server is not allowed by the gateway's rule. or The gateway's rules do not allow file transfer to this server. If the rule does not allow a terminal but does allow file transfer, then when you try to open a terminal the application says The gateway's rules do not allow a terminal on this server.
When command control applies on a server, BURSUcm turns tmux off for that connection. The application prints nothing into the shell, so the file panel does not follow the shell's folder, and the AI assistant has no command marks. The application says so in the tab itself. For command control see Command control.
Databases in BURSUcm
For a database, BURSUcm opens the Database connection window. The application asks you for the second-factor code, contacts the gateway and shows the pass, the address, the port, the user name and the certificate fingerprint (Gateway certificate (SPKI SHA-256)). The New pass button asks for a new pass, Revoke revokes the current one. The Save the gateway certificate… button saves the certificate to a folder you choose. The commands on the How to connect tabs refer to the certificate file without a path: run them in the folder where you saved the file.
The pass is shown only now: This pass is shown only now. Closing this window drops it. If you close the window, get a new pass. The rules for a pass's lifetime are the same as in the web console, see How long a pass lives. When the time for the first connection has run out, the window says The first-use time is over. If you have not used this pass yet, get a new one. A pass already in use opens new connections until … from this computer., and when the pass has ended, This pass has ended. Get a new one.
If you have an old version of BURSUcm, the gateway refuses: Update BURSUcm to connect to databases through this gateway.
Signing out and changing the gateway
The Sign out command ends the sign-in and closes all sessions opened with it. Before that the application asks: Sign out of the gateway? It ends the … session(s) opened with this sign-in. To forget the gateway's certificate and accept a new one, click Forget the gateway's certificate. You are signed out of the gateway, and at the next sign-in the application shows the certificate that the gateway presents at that moment.
For reference: if the gateway session is not available, the application says Sign in to the PAM gateway first. It shows any sign-in error as Sign-in to the gateway failed: … followed by the text of the reason. The texts of the reasons are collected in the Troubleshooting chapter.
Windows and Universal: how they differ
| What | Windows (WPF) | Linux and macOS (Universal) |
|---|---|---|
| Passwordless sign-in | The Sign in with Windows button. | The Sign in with Kerberos button (on Linux; a ticket is needed, kinit). |
| Error texts | The same messages, in the application's language (en, de, es, pt, pt-br, ru, uk, ka). | The same. |
| Built-in RDP | The BURSUrdp engine is needed on this computer. | The same. |
The choice of connections, the tickets, the catalogue and the passes work the same way. If you need to connect not from BURSUcm but with a usual client, see the sections SSH, SFTP, RDP, VNC and databases.
SSH clients: OpenSSH, PuTTY and others
Any ordinary SSH client connects to the gateway as to a single SSH server. You need to give the gateway address, the port and a special user name. The gateway itself decides which server to send you to. The administrator tells clients the address and port. By default the gateway listens on port 2222, but it can be changed, and from outside it may be known by a different address and port (see SSH settings).
The user name
The name consists of parts separated by colons:
| Form | When to use it |
|---|---|
login:server | If you have one allowed account on the server. |
login:server:account | If there are several allowed accounts. |
If there are several accounts and you did not give one, the gateway answers: Several accounts on … are allowed for you: connect as …:…:<account>. Repeat the connection with the account.
ssh -p 2222 alice:web01@gateway.example.org
ssh -p 2222 alice:web01:root@gateway.example.org
Here alice is your login on the gateway, web01 is the server's name in the gateway, and root is the account name.
What the gateway asks
- Password. The gateway asks for
Password:. Enter your gateway password (or your domain password, if you sign in as a domain user). - Code. The gateway asks for
Code from the app or a recovery code:. Enter the six digits from the authenticator or a recovery code. - Message. Then a banner appears in the terminal. By default it is This session goes through BURSU PAM and is recorded. The administrator can replace it with their own text.
Every new connection needs a password and a new code. The same code is not accepted twice.
All the gateway's messages in the terminal arrive in the gateway's default language (set in the section on sign-in and the second factor), or in English if there is no text in that language. The language of your computer has no effect on them.
A ticket instead of a password and a code
BURSUcm signs in differently: under the name bursu-ticket and with a one-time ticket that it obtained from the gateway itself (the prompt Ticket: ). Nobody makes such a connection by hand, and the console does not show a ticket for SSH.
The gateway's key on the first connection
On the first connection the client shows the key's fingerprint and asks whether to trust it. The gateway has one key: ECDSA nistp256. Compare the fingerprint with what the console shows on the SSH settings page (Gateway SSH key: the fields Fingerprint, Public key, known_hosts line). If the fingerprint matches, answer yes. If the client later reports that the key has changed, do not connect and tell the administrator.
The administrator can give you a ready-made line for the known_hosts file.
PuTTY and other clients
In PuTTY set Host Name to the gateway address, Port to 2222, and the connection type to SSH. The user name (login:server) is entered at the prompt login as: or in the section Connection → Data. The gateway uses a dialogue with prompts, so the client must support interactive entry of the password and code (the keyboard-interactive method). The names of the items in your version of PuTTY may differ slightly: check its help.
What the gateway allows in a session
- Sessions with a terminal and with a command are allowed, as is the sftp subsystem (see SFTP and SCP).
- Port forwarding, agent forwarding and X11 are not allowed. The client gets a refusal.
- Through the gateway you cannot run a command without a terminal if command control is on for the server: Commands on this server are checked and need a terminal. Connect with ssh -t. Add the
-toption. - A server reached over Telnet accepts only an interactive session: without the
-Toption and without a command on the command line. - RDP, VNC and database servers cannot be opened over SSH. The gateway answers, for example: This server is reached with a VNC viewer. Use «Connect» in the console or BURSUcm.
ControlMaster and Ansible
The gateway handles one session per SSH connection. So the OpenSSH shared channel (ControlMaster, ControlPersist) does not work: every connection is new, with its own password and its own code. Ansible turns on such a shared channel by itself, and it breaks when working through the gateway. For the gateway's hosts set ControlMaster no (in Ansible through ssh_args). Besides, every run asks for a second-factor code, so automated jobs through the gateway are not suitable for a person.
Host gateway.example.org
Port 2222
ControlMaster no
ControlPath none
Messages in the terminal during a session
The gateway itself writes to your terminal when something changes: access has ended, an administrator ended the session, the session was closed because of inactivity or because recording is impossible. It also warns you that the period of the access granted to you is about to end. If the period is extended by a request, submit it in advance: Access requests. For the full list of messages see the Troubleshooting chapter, the section “SSH terminal”.
With command control on, the gateway may hold a command until a second person confirms it, or refuse it. For details, including what the confirming person sees, see the section Command control.
File transfer: sftp, scp, WinSCP, FileZilla
Files are transferred on the same port as SSH and with the same user name. The gateway applies the file transfer rule (the file policy), records the transfers and limits the size if needed. You will find the same information in the console itself: the Help menu, the File transfer page.
Every new connection asks for a password and a new code. One code does not work twice. So the client must keep a single connection. If the client opens several connections at once (WinSCP and FileZilla do this by default), limit them to one.
OpenSSH: sftp and scp
The sftp and scp commands split the form “user@host:path” at the first colon. So a name like alice:web01 at the start of the string is taken for a computer name. Give the user name with the -o User= option or with an address of the form sftp:// and scp://.
sftp -P 2222 -o User=alice:web01 gateway.example.org
sftp sftp://alice:web01@gateway.example.org:2222
scp -P 2222 -o User=alice:web01:root file.txt gateway.example.org:/tmp/
scp file.txt scp://alice:web01:root@gateway.example.org:2222//tmp/
If there are several accounts, add the third part (:root), as in SSH. Modern scp works over SFTP by default. The old SCP protocol is turned on with the option scp -O:
scp -O -P 2222 -o User=alice:web01:root file.txt gateway.example.org:/tmp/
In -O mode the path is read by the server's shell, so a path with spaces must be quoted twice: single quotes outside, double quotes inside, for example gateway:'"my dir/file.txt"'. A path with the characters % ^ & | < > ; is always rejected by the gateway, and inside double quotes $ ` \ ! are rejected too. The answer is: The gateway accepts only plain scp commands. Quote the whole path and leave out shell symbols.
WinSCP
Choose the SFTP protocol. In WinSCP's settings (Preferences → Transfer → Background) set Maximal number of transfers at the same time to 1 and turn off Use multiple connections for single transfer. Otherwise every extra connection asks for a new code. WinSCP's SCP mode needs a shell on the server, so the gateway treats it as a terminal session and refuses if your rule does not allow a terminal. Use SFTP. The names of the menu items depend on the WinSCP version: check them in your version.
FileZilla
Use the SFTP protocol and the logon type Interactive. In the transfer settings (Edit → Settings → Transfers) set Maximum simultaneous transfers to 1. The Interactive logon type is needed so that the client asks for the password and then the code. The names of the menu items depend on the program version: check them in your version.
BURSUcm
In PAM Gateway mode the Files panel opens SFTP with a one-time ticket. No code is requested, and the panel's buttons follow your rule. See Connecting to servers.
Limits and refusals
- If the rule does not allow a terminal, only file transfer works. A shell, a command,
rsyncandsftp -sare rejected. - The gateway stops a file above the limit, or a session that has transferred more than the limit. The limits are set by the file policy.
- Copying inside the server (the
copy-dataextension) is not available: download the file and upload it again. - File transfer is not available for Telnet servers.
- A server that prints text at sign-in (a login script) interferes with starting SFTP on the gateway's side.
- If your right changes during a transfer, the gateway stops it.
All the messages are collected in the Troubleshooting chapter, the section “SFTP and SCP”.
Remote Desktop (RDP)
You connect to a Windows server through the gateway with the program “Remote Desktop Connection” (mstsc) or a similar one. Instead of the server's address you connect to the gateway, and instead of a password you enter a one-time code. You do not know or enter the password of the server's account itself: the gateway fills it in.
How to connect
- Get the file. In the console open My access, find the RDP server and click Connect. Open the downloaded
.rdpfile (see The Connect button for RDP). In BURSUcm this step is done automatically. - Open the file. The file holds the gateway address and the RDP port that the gateway gives to clients, and also the one-time name
bursu-<id>. - Enter the code. When mstsc asks for the password, click Show code on the page and paste the code. The code works once within 60 seconds.
- Confirm the certificate. mstsc may show a certificate warning: the gateway presents its own certificate, not the server's. Compare the fingerprint with the console or with the fingerprint the administrator gave you (The gateway certificate).
The file stays valid for 10 minutes after you click Connect. If you are late: This connection has expired or does not exist. Go back to the console and click Connect again.
Port and address
The gateway accepts RDP on a separate port. The administrator sets which address and port go into the file (rdpPublicHost, rdpPublicPort; the default port is 3389). If you connect without the file, for example by typing the address into mstsc by hand, use the same values, but you still need to take the bursu-… name from the file: the name is one-time.
Sign-in and authentication
The gateway accepts only sign-in with network-level authentication (NLA, CredSSP with NTLM). The password is the one-time code. You cannot turn NLA off in the client: the gateway does not accept such a connection. The .rdp file already holds the right settings, so do not change them in the mstsc window.
Signing the file
If the administrator has uploaded a signing key to the console and given a public RDP address, the file is signed. Then Windows does not warn about an unknown publisher. If there is no signature, the warning appears, and you may accept it only if your organisation allows this (signing RDP files).
Refusals
The RDP client does not show the reason for the gateway's refusal: mstsc shows its own general messages (for example, about wrong credentials or that the computer is unavailable). So if a connection fails, do this:
- Check that you used a new code (60 seconds, once). Just get a new file and code.
- Make sure the server is still in My access and that you still have the right.
- If several attempts in a row are wrong, the gateway temporarily refuses connections from your address.
- In other cases (the server's certificate is not confirmed, a licence, the server is unavailable) only the administrator can see the reason, in the audit log. Tell them the time of the attempt.
If the gateway cannot create the reservation, the console or BURSUcm shows the error text, for example The RDP server's certificate has not been confirmed. Contact the administrator. Such messages are collected in the Troubleshooting chapter.
VNC viewers
You connect to a VNC server with the TigerVNC viewer. The gateway accepts only a protected connection: RFB 3.8 with VeNCrypt encryption and the X509Plain sign-in method over TLS. Other viewers (RealVNC Viewer, TightVNC, UltraVNC, “Screen Sharing” in macOS) cannot do this and do not connect to the gateway. Remmina and other viewers based on libvncclient may turn out to be compatible, but the gateway is designed for TigerVNC: use it.
How to connect
- Get a ticket. In My access click Connect on the VNC server, enter the code and click Show the connection details (in detail).
- Download the certificate. Click Download the gateway certificate (PEM) and save the file as
gateway.pem. You need do this only once. - Start the viewer. Copy the command from the page or build it yourself:
vncviewer -SecurityTypes=X509Plain -X509CA=gateway.pem gateway.example.org::5901
The two colons before the port mean a port number, not a display number. The user name is bursu-ticket, and the password is the one-time ticket from the page. The ticket lives for 60 seconds and works once.
The name in the certificate
The viewer checks that the gateway's name is in the certificate. The name under which the gateway is named in the certificate is set by the administrator (vncAdvertisedName, VNC settings). Connect by exactly that name. If you connect by an IP address that is not in the certificate, the viewer refuses.
Things to know
- Do not change the colour depth during a session. If the server does not support Fence, the gateway closes the session. Set a fixed colour level in the viewer (in TigerVNC turn off automatic selection).
- The gateway accepts no more than 10 sign-in attempts a minute from one address. If you work from an office with a shared address, everyone shares this limit.
- Macs connect over plain RFB, without encryption between the gateway and the Mac. Many Windows servers offer only the classic VNC password (which is also unencrypted). BURSUcm and the console warn you about this when you connect.
- Text pasted into the clipboard may be recorded by the gateway. This depends on the rule.
If the gateway refuses, the viewer shows its short message. They are collected in the Troubleshooting chapter, the section “VNC”.
Database clients: psql, mysql, sqlcmd and programs with a window
You connect to PostgreSQL, MySQL and SQL Server databases with your usual program, but not to the database itself: to the gateway. The gateway checks the pass, fills in the account's real password, records the queries and closes the session when the right ends.
What to enter in the program
| Client field | What to enter | Default / limits |
|---|---|---|
| Host (Server) | The gateway address shown in Host. | This is the gateway's public name (dbPublicHost). |
| Port | The value from Port. Each protocol has its own port. | The administrator sets three different addresses and ports (dbListen). |
| User name | The value from User name: login:server:account. | For PostgreSQL and MySQL the length of the name is limited by the protocol. If the name is too long, the gateway refuses: Your login, the server and the account together are too long for this database client. Ask the administrator for a shorter server name. |
| Password | The pass from the My access page or from BURSUcm. | Do not save it in the program: it is one-time in effect and lives a short time. |
| Database | The value from Database. | For PostgreSQL the database is required. If you do not name one, the default database set on the server is used. |
| SSL / TLS | Turn on, verify the gateway's certificate. | The gateway does not work without encryption: The gateway accepts only encrypted connections. |
You can get a pass and see the ready-made commands on the My access page (The Connect button for databases) or in BURSUcm. A pass's lifetime, the number of connections and other limits are described in the same place (How long a pass lives).
The command line
You will see the ready-made commands in the How to connect block. They look as shown below (the names and ports are examples, take the values from your own page):
psql "host=pam.example.org port=5432 user=alice:db01:app dbname=app sslmode=verify-full sslrootcert=gateway.pem channel_binding=require"
mysql -h pam.example.org -P 3306 -u alice:db01:app -p --ssl-mode=VERIFY_IDENTITY --ssl-ca=gateway.pem
sqlcmd -S pam.example.org,1433 -U alice:db01:app -N s
The commands are given for a POSIX shell (bash, zsh). My access and BURSUcm escape them for PowerShell and cmd themselves, and if a name cannot be safely quoted, they give a list of fields. The sqlcmd -C option must not be used with the gateway.
Programs with a window
| Program | What to enter | Note |
|---|---|---|
| pgAdmin | Host, Port, Maintenance database, Username; SSL mode — verify-full; the downloaded certificate as the root. | Do not save the password. The program opens a separate connection for each database and each Query Tool. |
| DBeaver (PostgreSQL) | Host, Port, Database, Username; SSL — verify-full; the driver property channelBinding=require. | The metadata and each editor use their own connections. |
| MySQL Workbench, DBeaver (MySQL) | Hostname, Port, Username, Default Schema; SSL — Require and Verify Identity; for DBeaver the property sslMode=VERIFY_IDENTITY. | They open more than one connection. |
| SQL Server Management Studio | Server name in the form pam.example,1433; SQL Server Authentication; Encryption — Strict; “Trust server certificate” off. | Object Explorer and each query window are separate connections. If the administrator has turned off strict mode, choose Mandatory. |
| VS Code with the mssql extension | The same fields as in SSMS. | Azure Data Studio has been retired since 28 February 2026. |
| DBeaver (SQL Server) | The driver properties encrypt=strict (or true) and trustServerCertificate=false. |

TLS and the certificate
Always verify the gateway's certificate. Download it on the My access page. For SSMS and sqlcmd, the .cer file must be added to the current user's “Trusted Root Certification Authorities”. psql, pgAdmin and DBeaver take the PEM file as the root certificate, and mysql takes it with the --ssl-ca option. If the administrator has installed a certificate from a certificate authority on the gateway, the client needs that authority's root file: ask the administrator for it.
Without certificate verification PostgreSQL is still protected by channel binding, but MySQL and SQL Server can be redirected to a foreign host if verification is missing, so do not turn verification off.
Which clients are suitable
- PostgreSQL: SCRAM-SHA-256 sign-in with channel binding is required (
channel_binding=require). These do not work: node-postgres withoutenableChannelBinding, Npgsql before version 5, pgjdbc before 42.7.4 and (reportedly) the driver built into Power BI. For pgjdbc use version 42.7.12 or newer. - MySQL: the
caching_sha2_passwordmethod is required.mysql --local-infilemakes sense only if the rule allows file upload. - SQL Server: only SQL Server Authentication sign-in with a pass is accepted. By default the gateway requires strict TDS 8.0 encryption (Encrypt=Strict). Clients that cannot do it will not connect until the administrator relaxes the mode.
What the gateway records
The gateway records the queries (statements), but not what procedures do inside. Masking of passwords in the query text works where possible. Server error messages may contain personal data. Replication through the gateway is not allowed. For details see the section Database statements.
The gateway's messages in the client are collected in the Troubleshooting chapter, the section “Databases”. They arrive in the gateway's default language.
Troubleshooting and error messages
The messages are given as the English interface shows them. Find the text on the page (Ctrl+F): the table row says what it means and what to do.
Installation and starting the service
| Message | What it means | What to do |
|---|---|---|
| bursu-pam preinst: NOT upgrading - … The installed version stays and is started again. | The upgrade was stopped before the files were replaced: a copy of the database could not be made (not enough space, the database does not answer). | Do what the line says (for example, free space in /var/backups/bursu-pam; you need twice the size of the database) and repeat apt install. The old version keeps working. |
| bursu-pam prerm: NOT upgrading - bursu-pam-gateway.service could not be stopped, and the database must not be dumped while it writes (see systemctl status bursu-pam-gateway.service). | The gateway did not stop, and the database must not be copied while it is writing. | systemctl status bursu-pam-gateway, stop the service by hand and repeat the upgrade. |
| The service is in the state activating (auto-restart), and the log says … refuses to start: the database holds migration(s) this build does not contain | The database has already been upgraded by a newer version, and an old one has been started. | Install the new version of the package, or restore the copy of the database made before the upgrade (“Rolling back to the previous version”). Do not delete rows from schema_migrations. |
| listenUrl … must be an https:// URL, sshListen … must be address:port with an IP address, … uses the port of …; give each front end its own port, … is a wildcard: give the address explicitly, vncListen needs vncAdvertisedName | The gateway did not start because of a wrong value in gateway.json (the text names the parameter). The service does not stop for good: it keeps restarting every 5 seconds (activating (auto-restart)) until the file is fixed. | The cause is in journalctl -u bursu-pam-gateway -n 20. Fix the parameter (see the table of parameters) and run sudo systemctl restart bursu-pam-gateway. |
| The JSON property '…' could not be mapped to any .NET member… | gateway.json has an unknown parameter (usually a typo). The service restarts every 5 seconds until the file is fixed. | Fix the name or delete the line, then run sudo systemctl restart bursu-pam-gateway. |
| The service stopped with code 78 and no longer restarts | The gateway was started as root or with the root group; it refuses to work that way, and systemd does not repeat such a start. (An error in gateway.json gives something else, a restart every 5 seconds; see the rows above.) | Read the last line of journalctl -u bursu-pam-gateway -n 20. Do not start the gateway by hand as root; only through the service: sudo systemctl start bursu-pam-gateway. |
bursu-pam-check: FAIL landlock … | Landlock is not enabled in the kernel: RDP and VNC sessions will not open. | The Ubuntu 24.04 kernel enables it by default; if the lsm= parameter is set by hand, add landlock to it. |
bursu-pam-check: FAIL postgres … role bursu-pam cannot reach database bursu_pam … | The gateway cannot sign in to its database. | Run sudo bursu-pam-setup, which creates the role and the database; check the local lines in pg_hba.conf (peer sign-in is needed). |
| Browser: Your connection is not private / NET::ERR_CERT_AUTHORITY_INVALID | The gateway works with a self-signed certificate. | For the first setup, continue; for real use install your own certificate (“Your own certificate”). |
First setup and unsealing
| Message | What it means | What to do |
|---|---|---|
| The setup code did not match. | The wrong one-time setup code was entered. | Read the code again: sudo cat /var/lib/bursu-pam/setup-code. Case and hyphens do not matter. |
| The passphrase must be at least 12 characters long. / The passphrases do not match. | The sealing passphrase is shorter than 12 characters, or the repeat does not match. | Enter the passphrase again. |
| The key could not be created. The details are in the service log. | The master key could not be written. | journalctl -u bursu-pam-gateway -n 50; usually it is permissions or space in /var/lib/bursu-pam/keys. |
| A key was already created in an earlier run of the wizard… | The wizard was interrupted after the key was created. | If the recovery key is saved, click Continue with this key; otherwise create the key again. |
| A key was created in an earlier run, but it cannot be opened now. Create the key again. | The key from the earlier run cannot be opened. | Create the key again (while the setup is not finished, there are no secrets yet). |
| The login does not fit: up to 64 Latin letters, digits, dots, hyphens and underscores. | The administrator's login is not allowed. | Use Latin letters, digits, ., -, _. |
| The passphrase did not match. (the /unseal page) | The sealing passphrase is wrong. | Try again. If the passphrase is lost, unseal with the recovery key. |
| The key file is missing or does not belong to this database. Restore the key with the recovery key. | The keys/ folder is lost or was restored from a different database. | Enter the recovery key (“The encryption key is unavailable”). |
| The recovery key did not match. | The recovery key is not from this installation, or it was entered with a mistake. | Check the key; without it the secrets and recordings cannot be restored. |
Licence
The state of the licence is shown on any console page by the bar at the top. What keeps working in each state is in the table “When the licence ends: what stops and what keeps working”.
| Message | What it means | What to do |
|---|---|---|
| The gateway has no licence: no session is served and changes are refused. | The trial has not been started and no licence is installed. | Settings → Licence → start the trial or install a licence (“The 7-day trial licence”). |
| The licence has ended and is in its grace until … | The paid licence has expired and the grace period is running. | Renew the licence before the given date (“Renewal and the daily check”). |
| The licence has ended: new sessions and changes are refused. | The grace period has ended (a trial licence has none). | Install a new licence. Sign-in, logs and changes that switch things off work. |
| The licence is activated on another host: new sessions and changes are refused. | The gateway was moved to another machine, and the 14 days for the move have run out. | Settings → Licence → move the licence to this host (“Moving to another server”). |
| More servers are active than the licence allows and the grace for that is over… The licence allows N active servers. Switch off a server or extend the licence. | More servers are turned on than the licence allows. | Turn off the extra servers (Servers) or extend the licence. Sessions go only to the first servers within the limit. |
| This installation was released… | The installation was released and the licence was taken off it. | Install a new licence. |
| The gateway cannot trust its own time… | The licence state file is lost or damaged, the database is older than this file (restored from a copy), or the audit log has been changed. A restart does not help. | On Settings → Licence make a support licence request (or an activation request) and send it to BURSUsofts; the licence they send back clears the state (“The gateway does not trust its own time”). |
| The licence state cannot be read from the database: new sessions and changes are refused until it can. | The database has not answered the gateway for more than five minutes. | Check PostgreSQL: systemctl status postgresql, disk space. |
| The licence is read after the gateway is unsealed. | The gateway has not been unsealed yet. | Unseal it at /unseal and refresh the page. |
| This is not a licence the gateway can read. / The file is larger than 16 KiB: it is not a licence. | The file uploaded is not a licence file. | Upload the .bpl file received at bursucm.com/pam. |
| The licence's signature does not verify… | The file was changed after it was signed. | Download the licence again. |
| This licence was signed with a key this gateway version does not know. / This licence needs a newer gateway. | The licence was issued for a newer version. | Upgrade the gateway (“Upgrading”). |
| This licence is for another installation. / This licence is for another product. | The file is not for this gateway. | Compare the “Installation ID” on the licence page with the one given on the portal. |
| A newer licence for this period is already installed. | A newer licence is in force. | Nothing needs to be done. |
| bursucm.com could not be reached. / did not answer in time / The secure connection to bursucm.com could not be verified. | The gateway cannot reach the portal. | Check DNS, outgoing HTTPS and the proxy (“Proxy”), or work offline with the request code. |
| The proxy server did not allow the connection, or its setting is not valid. / This is not a proxy address the gateway accepts. | The proxy is wrong. A proxy with a login and password is not supported. | Give http://host:port without a user and a path. |
| A trial was already started for this installation. / The trial of this installation has ended. | A trial is given once per installation. | Buy a licence and activate it with the key. |
| This is not an activation key. A key looks like BPK- followed by 20 characters. / The activation key is not valid. | The key was entered with a mistake. | Copy the key whole from the purchase email. |
| This activation key is already used by another installation. / … is bound to another installation. | The key has already been used up. | Move the licence or contact BURSUsofts. |
| This licence has no free host slot. / The number of moves allowed for this licence is used up. | There is no free place for a host, or the limit of moves is used up. | Release the old installation or contact bursucm.com/pam. |
| This request is too old or its time does not fit. Check the clock of the gateway… | The request code is out of date or the gateway's clock is far off. | Check the time (timedatectl) and make a new request code. |
| This request was already used. / This is not a request code of this gateway. | The request code has been used, or is from another installation. | Make a new code. |
| bursucm.com reports another copy of this gateway using the same installation. | Two machines work as one installation (for example, a cloned VM). | Keep one; the second needs its own installation and licence. |
| bursucm.com holds a newer licence that this gateway does not install by itself. | A new licence is waiting on the portal. | Download it at bursucm.com/pam and install it by hand. |
| The text does not match the serial of the licence in force. | The wrong serial number was entered when releasing. | Copy the number from the “Serial” field. |
| For the user (SSH and VNC sign-in): The gateway's licence does not allow new sessions now. Contact the administrator. | The licence is in a state in which new sessions are forbidden. | The administrator should open Settings → Licence. |
| For the user (issuing a pass in the console for RDP, databases and VNC): The gateway's licence does not allow this session now. Contact the administrator. | The same, but the text is different: the refusal came when opening the session from the console. | The administrator should open Settings → Licence. |
| For the user (the BURSUcm client): The gateway's licence has ended. Contact the administrator. | The client called the gateway's API, and the licence is not in force. | The administrator should open Settings → Licence. |
| For the user: This server is beyond the number of servers the gateway's licence allows. Contact the administrator. | The server is beyond the licence limit. | The administrator should turn off the extra servers or extend the licence. |
Signing in to the console
| Message | What it means | What to do |
|---|---|---|
| Incorrect login or password. | The login or password is wrong, or there is no such user. The gateway deliberately does not say which. Every failure counts towards the lockout. | Check the keyboard layout and Caps Lock, and try again. If you forgot the password, ask the administrator to set a temporary one (the user card). Domain users sign in with their domain password and the login NETBIOS\name or name@directory. |
| Account temporarily locked until …. | The account was locked after several failed attempts; the message gives the time the lockout ends. | Wait until the given time or ask the administrator to lift the lockout (Unlock). The number of attempts and the duration are set in Sign-in and MFA. |
| Too many wrong codes. Sign in again. | The sign-in was interrupted: the wrong second-factor code was entered five times in a row (a lockout that came while the code was being entered looks the same). | Sign in again. If the code does not work, check the time on the phone or use a recovery code. |
| The directory is not available. Try again later or contact the administrator. | The directory (AD/LDAP) through which you sign in does not answer or is turned off. | Try again later. For the administrator: Check connection. Local users do not depend on the directory. |
| Too many attempts. Wait a minute and try again. | Too many requests from your address: there is a limit on sign-in, code entry and re-confirmation (10 a minute; 5 a minute for key operations). | Wait a minute and try again. |
| The code did not match. | The TOTP code or the recovery code was not accepted. Every failure counts; five in a row interrupt the sign-in. | Enter a fresh code from the app; check the time on the phone. If the phone is lost, enter a recovery code (Enter a recovery code) or ask the administrator to reset MFA (Reset MFA). |
| The code did not match. Check the time on the phone. | During TOTP setup a code was entered that was not accepted. | Check the time on the phone and enter a new code. |
| Another session of this account started a new authenticator setup, so the code shown here before no longer works. | Another session of the same account started the setup again, and the QR code shown earlier is no longer valid. | Scan the new QR code. |
| The password or the code did not match. | On re-confirmation the password or the code is wrong. This also counts towards the lockout. | Enter the password and a fresh code (or a recovery code) again. |
| Windows offered NTLM, which the gateway does not accept. Ask the administrator to check the gateway's name in the browser policy. | The browser offered NTLM instead of Kerberos. The gateway does not accept NTLM. | Open the console by the gateway's full DNS name, not by IP address; the administrator should check the browser policy (Signing in with Windows (Kerberos)). Meanwhile sign in with login and password. |
| The clocks of this computer, the gateway and the domain differ too much. | The clocks of the computer, the gateway and the domain controller differ too much. | Synchronise the time on the computer; the administrator checks the gateway's clock. |
| The gateway's Kerberos key does not match the domain. Tell the administrator. | The gateway's Kerberos key does not fit the domain. | Tell the administrator: a new keytab and the Check Kerberos check are needed. |
| The secure connection to the gateway could not be confirmed for Windows sign-in. | The secure connection could not be confirmed for Windows sign-in. | Open the console over HTTPS directly, without a proxy that breaks TLS. For the administrator: Channel binding for console sign-ins. |
| Your domain is not connected to this gateway. | Your domain is not connected to this gateway. | Sign in with login and password or ask for the directory to be connected. |
| Windows sign-in is not set up on this gateway. | Windows sign-in is not set up on the gateway. | Sign in with login and password. |
| Windows sign-in was not accepted. Sign in with your login and password. | The Kerberos ticket was not accepted. | Sign in with login and password; the administrator should run Check Kerberos. |
| The Windows sign-in step has expired. Press “Sign in with Windows” again. | The Windows sign-in step has timed out. | Click Sign in with Windows again. |
| Windows sign-in is not available in this browser. Sign in with your login and password. | The browser does not support Windows sign-in. | Sign in with login and password. |
| You do not have access to this page. | The page is not available for your role. | Go back to the start page. If you need access, ask the administrator to give you a role. |
| The request was refused. Reload the page and try again. | The request was rejected: the form is out of date or was submitted again from another tab. | Refresh the page and try again. |
Password and profile
| Message | What it means | What to do |
|---|---|---|
| The password must be at least … characters long. | The new password is shorter than the minimum the administrator set (at least 12). | Choose a longer password. |
| The passwords do not match. | The password and the repeat do not match. | Enter them the same. |
| The current password did not match. | The current password is wrong when changing the password in My profile. | Enter the password currently in use. |
Users
| Message | What it means | What to do |
|---|---|---|
| A login is 1-64 characters: latin letters, digits, dot, underscore, hyphen. | The login is not allowed. | A login: 1–64 characters, Latin letters, digits, dot, underscore, hyphen. It does not change after creation. |
| A name is 1-128 characters. | The name is not allowed. | From 1 to 128 characters. |
| This name is already taken. | The login (or another name) is already taken. | Choose another; case is not distinguished. |
| Choose at least one role. | No role is chosen. | Tick at least one role. |
| Approver and Administrator exclude each other: nobody approves requests while managing the rules. Choose one of the two. | Approver and Administrator were chosen together. | Keep one of the two roles (Roles). |
| A person cannot be both an Administrator and an Approver. | The same restriction triggered in the database. | Keep one of the two roles. |
| Confirm who you are before changing roles. | Changing roles requires you to confirm your identity again. | Click Confirm who I am, confirm the password and code, and go back to the form. |
| Confirm who you are before setting a password. | Setting a password requires you to confirm your identity again. | Click Confirm who I am. |
| You cannot remove your own Administrator role. | You cannot take the Administrator role away from yourself. | Ask another administrator. |
| You cannot disable yourself. | You cannot turn yourself off. | Ask another administrator. |
| At least one active administrator with two-factor sign-in must remain. | The action would leave the gateway without an active local administrator with a confirmed TOTP. | First make a second local administrator with TOTP. Domain administrators do not count. |
| This is set by the directory for domain users and cannot be changed here. | This value of a domain user is set by the directory. | Change it in the directory or in the group mapping (Group mapping). |
| The record was changed by another administrator — open it again. | The record was changed while you were editing it. | Open the record again and repeat. |
| A description is at most 1000 characters. | The description is longer than 1000 characters. | Shorten it. |
Groups
| Message | What it means | What to do |
|---|---|---|
| A group name is 1-128 characters. | The group name is not allowed. | From 1 to 128 characters. |
| The group is used by a directory mapping. Remove the mapping first. | The group is used in a directory mapping. | First remove the mapping (Group mapping). |
| Command policies still apply to this: …. Edit the policies first. | The group is named in a command policy. | Fix the policies (Commands) and try again. |
Directories: the form
| Message | What it means | What to do |
|---|---|---|
| Use 1–63 lower-case letters, digits, dots and hyphens. | The directory name is not allowed. | Lower-case Latin letters, digits, dots and hyphens, 1–63 characters. |
| Give one to eight servers as host or host:port. | The list of servers is wrong. | From one to eight servers: host or host:port. |
| Port 389 and 3268 are plain LDAP. Use LDAPS (636 or 3269). | The port of plain LDAP (389 or 3268) was given. | Use LDAPS: 636 (or 3269). |
| This is not a distinguished name. | The Users base DN is not a DN. | For example OU=People,DC=pam,DC=example,DC=ge. |
| This is not a distinguished name. | The Groups base DN is not a DN. | The same. |
| A UPN suffix looks like pam.bursu.test. | The UPN suffix is written wrongly. | A DNS name, for example pam.bursu.test. |
| Active Directory needs its NetBIOS name: up to 15 letters, digits and hyphens. | For Active Directory the NetBIOS name is not given or is wrong. | Up to 15 characters: letters, digits, hyphens. |
| This is not a distinguished name. | The Bind DN is not a DN. | Fix it. |
| Enter the service account's password. | The password of the service account was not entered. | Enter it (when you change the servers, the Bind DN or the kind of directory, the password is entered again). |
| The filter must be one LDAP filter in parentheses. | The additional filter is written wrongly. | One LDAP filter in parentheses. |
| An attribute name starts with a letter and has letters, digits and hyphens. | The attribute name is written wrongly. | It starts with a letter; letters, digits, hyphens. |
| Another directory already uses this UPN suffix, NetBIOS name or name. | The UPN suffix, NetBIOS name or name already belongs to another directory. | Use a different value. |
| Users signed in from this directory exist. Turn the directory off instead of deleting it. | People have already signed in from the directory, so it cannot be deleted. | Click Turn off. |
| Users signed in from this directory exist, so it cannot be deleted. It is turned off; turn it on again in its settings. | The confirmation after Delete for a directory that has people: the directory is turned off, not deleted. | You can turn it back on in the directory form (Turned on). |
| The record was changed by another administrator — open it again. | Another administrator changed the directory. | Open it again. |
Directories: connection check and certificate
| Message | What it means | What to do |
|---|---|---|
| The directory cannot be reached. | No server answers (the port is closed, the name cannot be found, no answer within the time allowed). | Check the name, port 636, the firewall and the route. |
| The certificate is not under the confirmed root. | The server presented a certificate not from the confirmed chain, or not for that name. | Check that the name in the list of servers matches the certificate's SAN and that the right root is confirmed. If the root was changed on purpose, confirm the new one after comparing the fingerprint. |
| No root certificate is confirmed yet: confirm the presented one or upload the root below. | The root has not been confirmed yet. | Confirm or upload the root (Confirming the root certificate). |
| The directory refused the service account. | The directory did not accept the service account. | Check the Bind DN and the password, and that the account is not locked. |
| The service account cannot search the users base. | The sign-in worked, but the search in the Users base DN failed. | Check the DN of the branch and the service account's read rights. |
| This Linux gateway was started without LDAPNOINIT=1, so the LDAP library would also trust the system's certificate authorities. The gateway does not connect to the directory until it is set: start it with its systemd unit, which sets it. | The gateway on Linux was started without LDAPNOINIT=1. | Start the gateway with its systemd unit (Linux and the LDAPNOINIT variable). |
| The directory did not send its root certificate. Upload it (.cer or .pem). | The server did not send the root certificate (usually for an AD controller). | Export the certificate authority's root and upload it as a file (Upload). |
| This file is not a root CA certificate. | The file is not a self-signed certificate of a certificate authority (or it is damaged, or larger than 64 KB). | Upload exactly the root certificate, DER or Base-64. |
| The directory now presents another certificate; check again. | While you were confirming, the server presented a different root. | Run Check connection again. |
| The certificate … presents is not issued under this root or does not name …. Nothing was stored. | The server's certificate is not issued under this root or does not name this server (the SAN is checked). | Upload the root that signed the controller's certificate, and check the server's name in the list. |
| … cannot be reached. A root is checked against the certificate each server presents, so every server must answer. Nothing was stored. | One of the servers does not answer, and the root is checked against each server. | Restore the connection or remove the server from the list. |
| The directory presents a different root certificate than the confirmed one. | The server presents a different root from the confirmed one. | If the change was expected, confirm the new one after comparing the fingerprint; otherwise find out the cause. |
| Directories with an unconfirmed root certificate: …. Sign-ins through them are refused until an administrator confirms it. | The bell: there is a directory with an unconfirmed root. | Confirm the root on the directory's card. |
| Directories not watched: …. Access changes in them are seen only at the next sign-in or ticket check, and when the watch reconnects. | The bell: a directory is not being watched. | Check the connection and the certificate (Check connection). |
Directories: group mapping
| Message | What it means | What to do |
|---|---|---|
| Choose a role or a gateway group. | Neither a role nor a gateway group is chosen. | Choose at least one. |
| Confirm the root certificate first: until then the gateway does not search this directory. | The root is not confirmed, so a group search is impossible. | Confirm the root. |
| No group matches. | The group was not found. | Refine the query; the search runs in the Groups base DN. |
| A user's primary group (Domain Users) cannot be mapped: Active Directory does not list it as a membership. | The primary group (Domain Users) cannot be mapped. | Map a different group. |
| Mapping saved. The directory cannot be read now: what the mapping no longer gives is already taken away; what it gives arrives once the directory can be read again. | The mapping is saved, but the directory cannot be read at the moment. | What was taken away is already taken away; what was granted will arrive when the directory becomes available. |
| Directory roles refused (Administrator wins over Approver): … | The bell: when roles from the directory were calculated, one of the two incompatible roles was rejected. | Change the mappings so that no person ends up with both roles. |
Directories: signing in with Windows (Kerberos)
| Message | What it means | What to do |
|---|---|---|
| A realm is the domain's DNS name in capitals, such as PAM.EXAMPLE.GE. | The Kerberos realm is written wrongly. | The domain's DNS name in capitals, for example PAM.EXAMPLE.GE. |
| The SPN is HTTP/ followed by the gateway's full DNS name — never an address. | The SPN is written wrongly. | HTTP/ and the gateway's full DNS name, not an address. |
| Remove the keytab before changing the realm or the SPN. | While a keytab is loaded, the realm and the SPN cannot be changed. | Delete the keytab, make the change, upload it again. |
| Another directory already uses this Kerberos realm. | Another directory already uses this realm. | A realm is unique. |
| Kerberos is for Active Directory only. | Kerberos is set up only for Active Directory. | It is not needed for LDAP. |
| This file is not a keytab. | The file does not look like a keytab. | Upload a file made by ktutil or ktpass. |
| The keytab is larger than 64 KB. | The file is larger than 64 KB. | Check the file. |
| The keytab holds no entry. | The keytab has no entries. | Make it again. |
| Only keytab file version 0x0502 is accepted. | The format version is not 0x0502. | Make the keytab with the ktutil or ktpass tools. |
| An entry of the keytab is for another realm. | The keytab has an entry for another realm. | Keep only the entries of this realm. |
| An entry of the keytab is not for this directory's SPN. | The keytab has an entry that is not for this directory's SPN. | Keep only the entries of the directory's SPN. |
| The keytab holds an RC4, DES or 3DES key; only AES is accepted. | The keytab has an RC4, DES or 3DES key. | Make a keytab with AES only. |
| Stored. The keytab holds AES128 only; AES256 is recommended. | Not an error: the file was saved, but it has only AES128. | It is better to make AES256 keys. |
Directories: results of the “Check Kerberos” check
The lines come with a level: ok means in order, info means information, warn means a warning, bad means a fault. The level is given at the start of the second column.
| Message | What it means | What to do |
|---|---|---|
| The keytab is loaded and this host can accept Kerberos. | (ok) The keytab is loaded, the host can accept Kerberos. | |
| No keytab is loaded on this gateway. | (bad) On Linux no keytab is loaded. | Upload a keytab. |
| No keytab is loaded on this gateway. | (bad) The same. | Upload a keytab. |
| KRB5_CONFIG is not the gateway's own krb5.conf: start the gateway with its systemd unit. | (bad) The KRB5_CONFIG variable does not point to the gateway's file. | Start the gateway with its systemd unit. |
| The replay cache folder cannot be written. | (bad) The replay cache folder cannot be written to. | Check the permissions on the gateway's data folder. |
| The Kerberos library does not report channel binding (MIT 1.19 or newer is needed). | (bad) The Kerberos library does not report channel binding. | MIT Kerberos 1.19 or newer is needed. |
| The Kerberos library (libgssapi-krb5) is not installed. | (bad) libgssapi-krb5 is not installed. | Install the library package. |
| This gateway's platform cannot accept Kerberos. | (bad) The platform cannot accept Kerberos. | Use a gateway on Windows (in a domain) or on Linux. |
| This Windows host is not joined to a domain. | (bad) The Windows host is not in a domain. | Join the host to the domain. |
| The service does not run as a domain account (use a gMSA). | (bad) The service does not run under a domain account. | Run the service under a gMSA. |
| The service runs as …. | (info) Which account the service runs under. | |
| The SPN is held by …. | (info) Which account holds the SPN. | |
| No account holds this SPN (or the directory cannot be read). | (warn) The SPN belongs to no account (or the directory cannot be read). | Register the SPN on the service account. |
| Several accounts hold this SPN: …. | (bad) The SPN is set on several accounts. | Leave the SPN on one account. |
| The account allows AES only. | (ok) The account allows only AES. | |
| The account allows RC4 or DES: allow AES only (msDS-SupportedEncryptionTypes = 24). | (warn) The account allows RC4 or DES. | Allow only AES (msDS-SupportedEncryptionTypes = 24). |
| The keytab's key version matches the account (…). | (ok) The key version matches the account. | |
| The keytab's key version does not match the account (…): make the keytab again. | (bad) The key version in the keytab does not match the account. | Make the keytab again. |
| The account is trusted for delegation: turn it off. | (warn) The account is trusted for delegation. | Turn delegation off. |
| The account is a member of groups; it should have none. | (warn) The service account is a member of groups. | Remove it from the groups. |
| A test ticket was accepted with the channel binding. | (ok) The test ticket was accepted with channel binding. | |
| A test ticket was not accepted. | (bad) The test ticket was not accepted. | Look at the neighbouring lines: most often it is a wrong keytab, SPN or time. |
| The keytab's keys do not match the account. It was probably made with ktpass -setpass -setupn; make it again as the help shows. | (bad) The salt of the keys does not match the account. | Make the keytab again (not with ktpass -setpass -setupn). |
| Port 88 to the domain controller is closed; the keytab could not be tried. | (warn) Port 88 of the domain controller is closed, the test cannot be run. | Open port 88 from the gateway. |
| The clocks agree (difference … s). | (ok) The clocks agree. | |
| The clocks differ by … s; at 300 s Windows sign-in stops. | (warn) The clocks differ; at 300 s the sign-in will stop. | Synchronise the time. |
| The clocks differ by … s: Windows sign-in fails until the time is fixed. | (bad) The difference is too large: Windows sign-in does not work. | Synchronise the time. |
| A proxy is configured: Windows sign-in needs TLS to end at the gateway. | (warn) A proxy is configured; Windows sign-in needs TLS to end at the gateway. | Pass TCP through without decrypting it. |
| Console sign-ins without a channel binding are admitted (when_sent). | (info) Sign-ins without channel binding are allowed. | For strict mode set Required (recommended) again in Sign-in and MFA. |
| The gateway's certificate uses RSA-PSS, so the channel binding cannot be computed. Use an RSA (PKCS#1) or ECDSA certificate. | (bad) The gateway's certificate uses RSA-PSS, so the binding cannot be computed. | Change the certificate to RSA (PKCS#1) or ECDSA. |
The encryption key
| Message | What it means | What to do |
|---|---|---|
| Type … to continue. | The confirmation word was not typed (in the English interface CHANGE or CHANGE MODE, in the Russian one СМЕНИТЬ or СМЕНИТЬ РЕЖИМ). | Type the word from the hint exactly, in the case and language shown on the page. |
| The unseal passphrase did not match. | The unseal passphrase is wrong. | Enter the current passphrase. |
| The recovery key did not match. | The recovery key was not accepted. | Enter the key in full, as it was issued. |
| The passphrase must be at least … characters long. | The new passphrase is shorter than 12 characters. | Choose a longer one. |
| The passphrases do not match. | The passphrases did not match. | Enter them the same. |
| Tick “I have saved it” first. | “I have saved the new key” is not ticked. | Save the key and tick the box. |
| The key was already changed after this page was opened. If the new recovery key was not saved, change the key again to get a new one. | The key was already changed after the page was opened. | If the new recovery key was not saved, change the key once more. |
| The mode of the key changed after this page was opened, so nothing was done. Open the page again and check the current mode. | The mode of the key changed after the page was opened; nothing was done. | Open the page again. |
| The encryption key is not available. | The encryption key is not available at the moment. | Unseal the gateway (Unseal). |
| The outcome of the key change is unknown — check the audit log and the key state; do not repeat the change until you are sure. | The outcome of the key change is unknown: the database did not confirm the operation. | Do not repeat it. Check the audit log and the state of the key, and restart the service. |
| The encryption key was changed, and this gateway still holds the previous one in memory. Restart the gateway (a sealed gateway will need its passphrase). | The key was changed, and the gateway holds the previous one in memory. | Restart the service (for Sealed mode the passphrase will be needed). |
| These key files hold the key without the passphrase and could not be deleted; delete them by hand: | The key files could not be deleted after the mode change. | Delete the files listed by hand. |
| The key file could not be written: after a restart the gateway will ask for the recovery key. Check the key directory's permissions: | The key file could not be written; after a restart the gateway will ask for the recovery key. | Check the permissions on the key folder. |
| Too many attempts. Wait a minute and try again. | The limit for key operations: 5 a minute. | Wait a minute. |
Sign-in settings (Sign-in and MFA)
| Message | What it means | What to do |
|---|---|---|
| Enter a whole number from … to …. | The number is not whole or is out of range. | Enter a number within the allowed limits (Sign-in and MFA). |
| The banner is up to 2000 characters, without control characters. | The banner is longer than 2000 characters or contains control characters. | Shorten the text. |
| Confirm who you are before turning two-factor sign-in off. | Turning TOTP off requires re-confirmation. | Click Confirm who I am. |
| Confirm who you are before this change: …. It lowers sign-in protection. | The change lowers sign-in protection and requires re-confirmation. | Click Confirm who I am, then repeat the edit. |
| The record was changed by another administrator — open it again. | Someone saved the settings page before you. | Open the page again. |
Servers: form field validation
| Message | What it means | What to do |
|---|---|---|
| A name is 1-64 characters: latin letters, digits, dot, underscore, hyphen. | The server name failed validation. | Enter a name of 1–64 characters: Latin letters, digits, dot, underscore, hyphen. |
| An address is up to 253 characters, without spaces or invisible characters, and does not start with “-”. | The server address is written incorrectly. | Enter a host name or an IP address of up to 253 characters, without spaces or invisible characters, not starting with a hyphen. |
| A port is 1-65535. | The port is outside the allowed range. | Enter a number from 1 to 65535. |
| This name is already taken. | A server (or folder, account, profile, rule) with this name already exists. Letter case is ignored. | Choose another name. |
| A Telnet server needs a device profile. | No device profile is chosen for the Telnet server. | Choose a profile in the device profile field (see Device profiles). |
| Accounts of this server use privileged mode: choose a built-in network-device profile, or turn their privileged mode off first. | You chose your own profile, but the server's accounts have privileged mode on, which works only with built-in profiles. | Choose a built-in network-device profile, or first turn privileged mode off for the accounts. |
| A default database is at most 128 characters, without control characters. | The default database name is too long or contains control characters. | Shorten the name to 128 characters and remove special characters. |
| A PostgreSQL server needs a default database. | A default database is mandatory for PostgreSQL: the client may not name one. | Fill in the Default database field. |
| Choose how the gateway signs in to this server. | No sign-in type is chosen for the VNC server. | Choose one of the types in the field for how the gateway signs in to the server (see VNC server). |
Servers: acknowledging reduced protection
| Message | What it means | What to do |
|---|---|---|
| Tick the acknowledgement to use Telnet. | Telnet sends data in clear text; you must tick the box to show you understand this. | Tick the acknowledgement box and save again. |
| Confirm who you are before making this server use Telnet. | Switching to Telnet requires a fresh confirmation of identity (valid for 10 minutes). | Go through the confirmation (password and code) and save the form: the data you entered is kept, but you will have to tick the acknowledgement boxes again. |
| Tick the acknowledgement to allow NTLM on this server. | The box about the weak NTLM authentication is not ticked for the RDP server. | Tick the box or turn off the NTLM permission (without it the RDP server cannot be checked or used). |
| Confirm who you are before allowing NTLM on this server. | Allowing NTLM requires a fresh confirmation of identity. | Go through the confirmation and save the form again. |
| Tick the box to accept the weak connection to this server. | A weak sign-in type is chosen for VNC, and the acceptance box is not ticked. | Tick the box or choose a stronger sign-in type. |
| Confirm who you are before making this server use a weak connection. | A weak VNC sign-in type requires a fresh confirmation of identity. | Go through the confirmation and save the form again. |
| Tick the acknowledgement to allow a weak sign-in. | A weak sign-in (md5, clear-text password over TLS, mysql_native_password) is on for the database server without the box ticked. | Tick the box or turn the weak sign-in off. |
| Tick the acknowledgement to allow an unencrypted connection. | An unencrypted connection to PostgreSQL is on, without the box ticked. | Tick the box or turn the switch off. |
| Confirm who you are before allowing a weak sign-in to this server. | A weak sign-in to a database requires a fresh confirmation of identity. | Go through the confirmation and save the form again. |
| Confirm who you are before allowing an unencrypted connection to this server. | An unencrypted connection requires a fresh confirmation of identity. | Go through the confirmation and save the form again. |
| SQL Server has no weak sign-in to allow. | The weak sign-in is on for SQL Server, which has no such mode. | Turn the weak sign-in switch off. |
| Only a PostgreSQL server can be reached without encryption. | An unencrypted connection is possible only to PostgreSQL. | Turn the switch off for MySQL and SQL Server. |
Servers: conflict with accounts
| Message | What it means | What to do |
|---|---|---|
| This server has key accounts; a Telnet server signs in with a password only. Delete them first. | The server has accounts with a key, and Telnet accepts only a password. | Delete the key accounts or do not change the protocol to Telnet. |
| This server has key accounts; an RDP server signs in with a password only. Delete them first. | The same for RDP. | Delete the key accounts. |
| This server has key accounts; a database server signs in with a password only. Delete them first. | The same for a database server. | Delete the key accounts. |
| This server has key accounts; a VNC server signs in with a password only. Delete them first. | The same for VNC. | Delete the key accounts. |
| An account of this server does not fit the new sign-in type. Change or delete it first. | You are changing the VNC sign-in type, but an existing account does not fit it (for example, an account with a password on a server with no sign-in). | Change or delete the account, then change the sign-in type. |
Checking the connection to an SSH server, and the host key
| Message | What it means | What to do |
|---|---|---|
| Not confirmed — sessions are refused until it is | The host key is not confirmed yet; the gateway connects nobody to the server. | On the server's card click Check connection, compare the fingerprint on the server itself and click Confirm this key (see SSH host key). |
| Key not confirmed | A short label in the list: the SSH server's key is not confirmed. In version 1.0.0 the list also puts this label on RDP and VNC servers, even when their certificate is already confirmed. | Open the server's card. For SSH, confirm the key. For RDP and VNC, trust the card: if it says Matches the confirmed certificate or shows the date of confirmation, everything is in order. |
| Saved. The host or port changed: confirm the host key again. | The address or port was changed, and the previous key was reset. | Check the connection and confirm the key again. |
| Confirm the key first; the sign-in is tested against a confirmed key only. | The sign-in can be tested only with a confirmed key. | Confirm the key, then repeat the check. |
| The server could not be reached | The gateway did not connect to the server. | Check the address, port, network and firewall: the server must accept connections from the gateway. |
| Sign-in failed: the server refused the stored secret | The server rejected the stored password or key. | Check the account on the server itself and replace the secret (Replacing a secret). |
| The stored private key cannot be used (RSA and ECDSA keys only) | The stored key cannot be used: the gateway supports RSA and ECDSA keys. | Create an RSA or ECDSA key and replace the secret. |
| Differs from the confirmed key … | The server presents a key different from the confirmed one. Either the server's key was changed, or a foreign device sits between the gateway and the server. | Do not confirm until you have found the reason. Compare the fingerprint on the server itself; if the change is legitimate, confirm the new key. |
| The server now presents another key than the one you checked. Check again. | The key changed between the check and the confirmation. | Repeat the check and compare the fingerprint. |
Checking an RDP server, and the certificate
| Message | What it means | What to do |
|---|---|---|
| Saved, but the server is inactive: confirm the RDP server's certificate. | The new RDP server was created switched off until the certificate is confirmed. | On the card click Check connection, compare the fingerprint and confirm it; then switch the server on. |
| Not checked: this RDP server is not marked as allowing NTLM, and in this version an RDP server is reached with NTLM only. | The check was not run: NTLM is not allowed for the server. | Allow NTLM in the server's form (with confirmation). |
| The server offers no TLS: only the old RDP security, which the gateway does not use | The server supports only the legacy RDP protection. | Turn on the TLS protection for RDP on the server (the security setting “SSL/TLS”). |
| The server did not answer as an RDP server | Something other than RDP answers at this address and port. | Check the address and port (usually 3389). |
| The TLS handshake with the server failed | TLS could not be negotiated. | Check the TLS settings on the server and the protocol version. |
| Differs from the confirmed certificate … | The server presents a different certificate from the confirmed one. | Find the reason, compare the fingerprint on the server itself and confirm the new certificate if the change is legitimate. |
| The server now presents another certificate than the one you checked. Check again. | The certificate changed between the check and the confirmation. | Repeat the check. |
| Certificate cleared; the server is inactive until one is confirmed again. | This is not an error: the confirmed certificate was removed and the server is switched off. | Check the connection and confirm the certificate again. |
| This is not an RDP server. | An RDP action was applied to a server of another protocol. | Open the card of the right server. |
Checking a VNC server
| Message | What it means | What to do |
|---|---|---|
| The server does not offer the sign-in type configured here. | The server does not offer the sign-in type chosen in the form. | Look at the Offered: … line and choose a type the server offers, or configure the server. |
| The server's certificate is not the confirmed one. | The server's certificate does not match the confirmed one. | Compare the fingerprint on the server itself and confirm the new one if the change is legitimate. |
| The server refused the stored login. | The server rejected the account's login or password. | Check the account on the server and replace the secret. |
| The server cannot be reached. | No connection. | Check the address, port and firewall. |
| The server did not answer in time. | The server did not answer within the allotted time. | Check the load and the network, and try again. |
| The server broke the VNC protocol. | The server's reply violates the VNC protocol. | Make sure VNC is running on this port; update the VNC server. |
| This gateway cannot run the VNC check process, so the server could not be checked. | The VNC check process cannot be started on this gateway host. | Contact the vendor: this is a limitation of the host. |
| The stored password of this account could not be read. | The stored password cannot be decrypted (for example, the store is closed). | Make sure the gateway is unsealed (Unsealing the gateway), or set the password again. |
| Confirm who you are before the gateway signs in to this server. | A check that signs in requires a fresh confirmation of identity. | Go through the confirmation and repeat the check. |
| This server's sign-in type has no certificate to confirm. | The chosen sign-in type has no certificate. | There is nothing to confirm; use a sign-in type with TLS if you need a certificate. |
| This is not a VNC server. | A VNC action was applied to a server of another protocol. | Open the card of the right server. |
| The certificate pin was removed and the server switched off. | Not an error: the fingerprint was removed and the server is switched off. | Check the connection and confirm the certificate again. |
Database servers: check and certificate
| Message | What it means | What to do |
|---|---|---|
| A database server stays inactive until its certificate is confirmed. | The database server is switched off until its certificate is confirmed (except PostgreSQL without encryption). | On the card click Check connection, compare and confirm, then switch the server on. |
| The server now shows a different certificate key. Connections are refused until you confirm it. | The server's certificate key changed. | Find the reason; if the change is legitimate, confirm the new certificate (Confirm the new certificate). |
| Certificate not confirmed | A label in the list: the certificate is not confirmed. | Confirm it on the card. |
| The account could not sign in: … | The test sign-in under the account failed; the reason follows the colon. | See the table of reasons below; check the account and the secret. |
| This is SQL Server's own fallback certificate: it changes at every service start, and each restart needs a new confirmation. Provision a certificate (mssql-conf set network.tlscert on Linux, SQL Server Configuration Manager on Windows). | SQL Server presented its own temporary certificate. | Install a permanent certificate on the server, as the message says, then confirm it. |
| Checking this protocol is not available in this build. | Checking this protocol is unavailable in this build. | Confirm the certificate at the first connection in another way, or contact the vendor. |
| The server's certificate is not confirmed yet. Confirm it first on the server's card. | The action requires a confirmed certificate. | Confirm the certificate on the server's card. |
| The server offers no encryption; it is reached unencrypted, as the switch on its form allows. | The PostgreSQL server offers no encryption; the connection goes without it because you allowed that. | It is better to turn on TLS on the server and turn the permission off. |
| This is not a database server. | A database action was applied to a server of another protocol. | Open the card of the right server. |
| The accounts of a database server sign in with a password only. | A key is chosen for a database server account. | Choose sign-in with a password. |
| The person's login, the server and the account together are too long for this database protocol. Shorten the server or account name. | The database user name (login:server:account) does not fit within the protocol's limit. | Shorten the server name or the account name. |
| This person's login cannot be used as a database user name. | The person's login contains characters that are not allowed in a database user name. | Rename the login or give access to another person. |
Why a database connection is refused
The gateway writes these short reasons to the audit log when it refuses a database connection; they also help you work out what is wrong.
| Message | What it means | What to do |
|---|---|---|
| unknown pass | The gateway pass (password) was not found. | The user must get a new pass on the “My access” page. |
| pass expired | The pass has expired. | Get a new one. |
| pass revoked or its sign-in ended | The pass was revoked or the person's sign-in has ended. | Sign in to the console and get a new one. |
| pass used from another address | The pass was used from another address. | Use the pass from the computer where it was issued. |
| pass has no free connection | The limit of connections per pass is used up. | Close unneeded connections or raise Connections per pass (Settings: databases). |
| a newer pass replaced it | A newer pass was issued. | Use the new one. |
| pass sent in clear text; revoked | The client sent the pass without encryption; the pass was revoked. | Turn encryption on in the client and get a new pass. |
| no access now | There is no access now. | Check the rules and their time limits; the person can request access. |
| gateway limit or database unavailable | A gateway limit was hit or the database is unavailable. | Check the limit settings and the availability of the database. |
| user name not login:server[:account] | The user name in the client is not written as login:server[:account]. | Correct the user name in the client. |
| client did not use encryption | The client did not turn encryption on. | Turn on TLS in the client. |
| data before encryption started | The client sent data before encryption began. | Update the client or change its settings. |
| client's sign-in method not supported | The client's sign-in method is not supported. | Use SCRAM (PostgreSQL) or the client's standard method. |
| channel binding missing or wrong | The client did not confirm channel binding. | Turn on channel binding in the client or turn off the requirement in the settings (this lowers protection). |
| Windows or Entra sign-in in LOGIN7 | The SQL Server client uses built-in Windows or Entra sign-in. | Sign in with a login and a pass. |
| replication requested | Replication was requested. | Not supported through the gateway. |
| change of user requested | A change of user was requested. | Not supported through the gateway; connect again. |
| command not allowed | The command is forbidden by the gateway. | Use another command. |
| server certificate not confirmed | The database server's certificate is not confirmed. | Confirm it on the server's card. |
| server offers no encryption | The database server offers no encryption. | Turn on TLS on the server. |
| server asks a weak sign-in | The server demands a weak sign-in, and it is not allowed. | Reconfigure the server or allow the weak sign-in in the server's form. |
| the server refused the account | The server rejected the account. | Check the account and the secret. |
| server too old | The server version is too old. | Update the server. |
| server tried to redirect | The server tried to redirect the client. | Give the final address in the gateway. |
| server unreachable | The server is unreachable. | Check the network and the firewall. |
| sign-in took too long | The sign-in took too long. | Try again; check the network. |
| sign-in abandoned after the server's first answer | The client abandoned the sign-in after the server's first answer. | Check the client's settings. |
| protocol version not supported | The protocol version is not supported. | Update the client. |
| Encrypt=Strict required | The SQL Server client must use Encrypt=Strict. | Add Encrypt=Strict to the connection string or turn off the requirement. |
| protocol error | A protocol violation. | Update the client; if it recurs, look at the log. |
| gateway limit | The gateway limit was reached. | Close unneeded connections or change the limits. |
| too many failed sign-ins from this address | Too many failed sign-ins from the address. | Wait and try again. |
| the gateway's licence does not allow new sessions | The licence does not allow new sessions. | Check Settings → Licence. |
| gateway is older than its database | The database is newer than the gateway. | Update the gateway. |
| no further detail | The reason is not specified. | Look at the audit log. |
States, licence and general messages
| Message | What it means | What to do |
|---|---|---|
| The licence allows … active servers. Switch off a server or extend the licence. | The licence limit on the number of active servers is reached; a new server cannot be switched on. | Switch off a server you do not need or extend the licence (Licence limit). |
| The licence has ended: changes are refused. Upload a licence on Settings → Licence. | The licence has ended; changes are forbidden. | Upload a licence. |
| The licence is activated on another host and its host-change grace is over: changes are refused. Move the licence to this host on Settings → Licence. | The licence is bound to another host. | Move the licence to this host. |
| More servers are active than the licence allows, and the grace for that is over: changes are refused until no more servers are active than it allows. Switch servers off, or extend the licence on Settings → Licence. | More servers are active than allowed, and the grace period has ended. | Switch off the extra servers or extend the licence. |
| The gateway has no licence: changes are refused. Start the trial or install a licence on Settings → Licence. | There is no licence. | Start the trial or install a licence. |
| This installation was released: changes are refused. Install a licence on Settings → Licence. | This installation's licence was released. | Install a licence. |
| The gateway cannot trust its own time: changes are refused. See Settings → Licence for the way out. | The time on the host looks unreliable. | Correct the host's time; details are on the licence page. |
| The licence state cannot be read from the database: changes are refused until it can. Check the database. | The licence state could not be read. | Check that the gateway's database is available. |
| The record was changed by another administrator — open it again. | While you were editing the form, another administrator changed the record. | Open the record again and repeat the edit. |
| A value was not accepted. Check the form. | One of the values was not accepted. | Check the form's fields. |
| This action is not possible right now. | The action is not possible in the current state. | Read the explanatory message, if there is one. |
| Only an empty folder can be deleted: move or delete its servers and subfolders first. | The folder is not empty. | Move or delete its contents. |
| A folder cannot be moved into itself or into one of its subfolders. | A folder cannot be nested inside itself. | Choose another parent folder. |
| The encryption key is not available. | The secrets store is closed or the key is unavailable. | Unseal the gateway (Unsealing the gateway). |
| The database was upgraded by a newer version of BURSU PAM. This gateway refuses new sessions and changes until it is upgraded too; sessions already open continue. | The database was upgraded by a newer version. | Update the gateway. |
| Too many attempts. Wait a minute and try again. | Too many attempts. | Wait a minute. |
| You do not have access to this page. | Your role has no access to the page. | Contact the administrator. |
| The request was refused. Reload the page and try again. | The request was rejected (for example, the page is out of date). | Reload the page. |
| Something went wrong. Please try again. | An unexpected error; at the bottom there is a Reference for the administrator: line with a code. | Try again; if it recurs, give the code to the vendor. |
Accounts
| Message | What it means | What to do |
|---|---|---|
| Choose a server. | No server is chosen. | Choose a server. |
| A login is 1-64 characters: latin letters, digits, dot, underscore, hyphen. | The login is written incorrectly. | Correct the login. |
| Enter the password. | The password is empty. | Enter the password. |
| The two passwords differ. | The password and its repeat do not match. | Enter them again. |
| The password is too long. | The password is too long. | Shorten it. |
| A private key in OpenSSH or PEM format is required. | The key is not entered or not recognised. | Paste the whole private key, including the BEGIN and END lines. |
| Ed25519 keys are not supported yet. Use an ECDSA or RSA key. | An Ed25519 key is not supported. | Create an ECDSA or RSA key. |
| This key cannot be used: the passphrase is wrong, or it is not an RSA or ECDSA key. | The passphrase is wrong or the key type does not fit. | Check the passphrase and the key type. |
| This encrypted PKCS#8 key (BEGIN ENCRYPTED PRIVATE KEY) cannot be read. Convert the key to the OpenSSH format with ssh-keygen -p -f <file> and paste it again. | An encrypted PKCS#8 key cannot be read. | Convert the key with the command from the message. |
| Privileged mode is available only with a built-in network-device profile. | Privileged mode is on with a custom profile. | Choose a built-in profile or turn the mode off. |
| Enter the privileged-mode password. | The privileged-mode password is empty. | Enter it. |
| Accounts of a Telnet server sign in with a password. | A key is chosen for Telnet. | Choose a password. |
| This server signs nobody in; its account has no password. | A password was entered for a VNC server with no sign-in. | Leave the password empty. |
| For a Mac, the name and the password are each at most 63 bytes. | For signing in to a Mac, the name and the password are not longer than 63 bytes. | Shorten them. |
| An account without a password fits only a server that signs nobody in. | An empty password is allowed only for a VNC server with no sign-in. | Enter a password or change the server's sign-in type. |
| This server needs a password; choose Password. | The server requires a password. | Choose Password. |
| A VNC server signs in with a password, not a key. | A key is chosen for VNC. | Choose a password. |
Device profiles
| Message | What it means | What to do |
|---|---|---|
| This regular expression is too costly to check against device output. Simplify its repetitions. | The expression takes too long to check. | Simplify the repetitions. |
| Backreferences, lookarounds and atomic groups are not supported. | The expression uses unsupported constructs. | Rewrite it without them. |
| This is not a valid regular expression. | The expression is written incorrectly. | Correct it. |
| At most 512 characters. | The value is too long. | Shorten it to 512 characters. |
| The profile is used by these servers: …. | The profile cannot be deleted while it is in use. | Switch the listed servers to another profile. |
| A built-in profile cannot be changed or deleted. | A built-in profile is read-only. | Copy it and change the copy. |
| A transcript is at most 64 KiB. | The transcript is too large. | Shorten it. |
| The gateway would not sign in with this profile. | Result of the check: the sign-in did not succeed. | Look at the table of steps and correct the templates. |
Access rules
| Message | What it means | What to do |
|---|---|---|
| Give the rule a name (up to 200 characters). | The rule name is empty or too long. | Enter a name. |
| Choose at least one user or group. | Nobody is chosen. | Add people or groups. |
| Choose at least one server or folder. | It is not chosen what the access is given to. | Add servers or folders. |
| Name at least one login, or choose “All”. | Mode “Specified” without logins. | Name the logins or choose All. |
| “…” is not a valid login. | The login is written incorrectly. | Correct it. |
| Logins are chosen, but the mode is “All”: choose “Specified” or remove the logins. | Logins are given while the mode is “All”. | Choose Specified or remove the logins. |
| Enter a date and time. | The date is not entered. | Enter it. |
| The end must be after the start. | The end is before the start. | Correct the dates. |
| Enter a size from 1 to 4096 MB. | The copy size limit is out of range. | Enter 1–4096. |
| USB devices can be allowed only together with “Upload and download” for files. | USB without full file transfer is forbidden. | Turn on Upload and download or turn USB off. |
| Confirm who you are before saving: this rule lets more data move. | The rule widens rights. | Go through the confirmation and save again. |
| A rule that has requests cannot be deleted; disable it instead. | The rule has access requests. | Disable the rule. |
| Every approver must be an active person who holds the Approver role. | An approver does not qualify. | Choose an active person with the Approver role. |
| A person marked for emergency access needs a confirmed second factor. | A person marked for emergency access has no confirmed second factor. | Ask them to set up two-factor sign-in. |
Settings
| Message | What it means | What to do |
|---|---|---|
| Enter a whole number from … to …. | The number is out of range. | Enter a whole number from the given range. |
| The banner is up to 2000 characters, without control characters. | The banner is too long or has control characters. | Shorten it. |
| Copies cannot be kept longer than the recordings (… days). | The retention period for copies is longer than that for recordings. | Reduce the period for copies or increase the period for recordings. |
| Recording what people type needs your password and code again. | Turning on the recording of SSH input requires confirmation of identity. | Go through the confirmation. |
| Recording keystrokes needs your password and code again. | The same for RDP. | Go through the confirmation. |
| Indexing typed text needs your password and code again. | The same for the index of typed text. | Go through the confirmation. |
| Confirm who you are before this change: …. It lowers session protection. | The change lowers session protection. | Go through the confirmation (Confirm who I am). |
| Confirm who you are before weakening a limit. | Weakening a VNC limit. | Go through the confirmation. |
| These changes weaken protection and need you to confirm your password: … | The change to the database settings lowers protection. | Go through the confirmation. |
| Use 1 to 60 letters, digits and . + _ - only. | The MySQL version string is written incorrectly. | Correct it. |
| The VNC address clients are told is not in the gateway certificate. | The gateway's VNC address is missing from its certificate. | Issue a certificate with this name or correct vncAdvertisedName. |
Signing .rdp files
| Message | What it means | What to do |
|---|---|---|
| This is not a certificate file (.pfx). | The file is not recognised as PKCS#12. | Choose a .pfx file. |
| The passphrase does not open the file. | The passphrase is wrong. | Enter the right one. |
| The file holds no private key. | There is no private key in the file. | Export the certificate together with its key. |
| The certificate cannot be used to sign documents. | The certificate does not fit for signing. | Use a certificate with a digital signature, RSA of at least 2048 bits. |
| The file is too large. | The file is larger than 64 KiB. | Leave one certificate in the file. |
| The certificate has already expired. | The validity period has ended. | Issue a new one. |
| The certificate is not valid yet; store it from its start date. | The validity period has not begun yet. | Wait for the start date. |
| Changing the signing key needs your password and code again. | Changing the key requires confirmation of identity. | Go through the confirmation. |
| Files are not signed until the gateway's public RDP host is set (rdpPublicHost in the configuration): the gateway never signs an address taken from the browser's request. | rdpPublicHost is not set. | Set it in gateway.json and restart the gateway. |
| There is no signing key: .rdp files are not signed, and Remote Desktop warns the person who opens one. | There is no signing key. | Save a key if you need signing. |
What the user sees: SSH and files
| Message | What it means | What to do |
|---|---|---|
| The server's host key has not been confirmed or has changed. Contact the administrator. | The server's key is not confirmed or has changed. | For the administrator: check and confirm the key. |
| The server could not be reached or refused the login. Contact the administrator. | There is no connection, or the server rejected the account. | For the administrator: investigate with the connection check. |
| The gateway's licence does not allow new sessions now. Contact the administrator. | The licence does not allow sessions. | Check the licence. |
| The gateway cannot record sessions right now. Contact the administrator. | Recording is impossible, the session was not started. | Check the disk space and the encryption key. |
| Several accounts on … are allowed for you: connect as …:…:<account>. | Several accounts are allowed. | Give the account in the sign-in name. |
| This server is reached over Telnet: only an interactive session is possible, not a single command. | A single command cannot be run over Telnet. | Connect interactively. |
| This server needs a terminal. Connect without -T (or with -t). | A terminal is needed. | Remove -T or add -t. |
| … is not reached over SSH. Use its own connection in BURSUcm. | An RDP, VNC or database server cannot be opened over SSH. | Connect in the standard way. |
| Your access rule allows file transfer only, not a terminal or commands on this server. | The terminal is off in the rule. | Use sftp or scp. |
| File transfer tools like rsync or a hand-started sftp-server are not allowed through the gateway. Use sftp or scp. | Third-party file tools are forbidden. | Use sftp or scp. |
| This copy direction is not allowed by your access rule. | The SCP direction is forbidden by the rule. | Change the rule or the direction. |
| The gateway accepts only plain scp commands. Quote the whole path and leave out shell symbols. | The SCP command is not a plain one. | Simplify the command. |
| File transfer to this server is not allowed by your access rule. | Files are forbidden by the rule. | A rule with file transfer is needed. |
| Uploading files to this server is not allowed by your access rule. | Uploading to the server is forbidden. | Change the rule. |
| Downloading files from this server is not allowed by your access rule. | Downloading is forbidden. | Change the rule. |
| Changing files on this server is not allowed by your access rule. | Changing files is forbidden. | Uploading to the server is needed. |
| File transfer is not available for Telnet servers. | There are no files for Telnet. | Nothing to do. |
| This file is larger than the gateway allows (… MB). | The file is above the limit. | Change Largest file, MB. |
| This session has moved as much data as the gateway allows (… MB). | The total limit is reached. | Open a new session or change All files in one session, MB. |
| The gateway stopped this transfer: your access changed. | The rules changed. | Check your access. |
| The server printed text before the file transfer started (a login script?), so the gateway cannot start SFTP. Contact the administrator. | A login script interferes with SFTP. | Remove the output from the login script. |
| The server speaks an SFTP version the gateway does not support. Contact the administrator. | The SFTP version is not supported. | Update the SFTP server. |
Access requests: refusals on submission (console and BURSUcm)
| Message | What it means | What to do |
|---|---|---|
| No rule offers you access to this server account by request. | No on-request rule offers you this server-and-account pair (either the rule is disabled, or you are not among those who may ask). | Ask the administrator to check the rule in the “Access rules” section (the Who may ask field), or choose another pair. |
| You already have a request waiting for this server account. | You already have a waiting request for this pair. | Wait for a decision or cancel it on the My requests tab (Cancel request). |
| You already have access to this server account for that whole period. | The whole requested interval is already covered by your current or already approved access. | The request is not needed. If you need longer access, request an extension (Extend) or another interval. |
| Nobody can approve this request now. Contact the administrator. | There are fewer people entitled to approve the request than the quorum needs (you do not count as an approver of your own request). | Tell the administrator: approvers must be added to the rule or given the Approver role. |
| You have too many requests waiting. Wait for a decision or cancel one. | You already have 10 waiting requests — that is the limit. | Cancel the ones you do not need or wait for decisions. |
| A reason is required. | The Reason field is empty. | Describe why you need the access (up to 1000 characters). |
| The reason or the ticket is too long. | The reason is longer than 1000 characters, or the ticket number is longer than 64 characters (or has several lines). | Shorten the text. |
| The ticket number is missing or does not match the required format. | The rule requires a ticket number and it is not entered or does not fit the given format; or a number is entered where the rule does not use one. | Enter the number in the format shown under the field (Format: …). |
| This request is no longer waiting. | The request has already been decided, cancelled or has expired. | Refresh the list. If you need access, submit a new request. |
| The request is not valid. | The request failed validation: for example, the duration is outside the rule's limits, the start time is outside the allowed bounds, or the interval goes beyond the rule's time window. | Check the duration (no more than the rule's limit), the start time (later than now, no more than 7 days ahead) and the rule's time window. |
| You do not have access to this server account. | The gateway gives you no permission for this pair (neither access nor the right to ask). | Contact the administrator. |
| The gateway's licence has ended. Contact the administrator. | The gateway's licence has ended; new requests are not accepted. | Contact the administrator (see the “Licence” section). |
| This server is beyond the number of servers the gateway's licence allows. Contact the administrator. | The server is above the number the licence allows. | Contact the administrator. |
| The gateway refused the request (…). | The BURSUcm client received from the gateway a refusal code for which it has no ready phrase; the code itself is in the brackets. | Try again later; if it recurs, tell the administrator the code from the brackets. |
Access requests: the BURSUcm client (before sending and while waiting)
| Message | What it means | What to do |
|---|---|---|
| The reason must be at most 1000 characters. | The reason is too long. | Shorten it. |
| Enter the ticket number. | The rule requires a ticket number. | Enter the number. |
| The ticket number must be at most 64 characters. | The ticket number is too long. | Shorten it to 64 characters. |
| The duration must be from 1 minute to … | The duration is outside the allowed limits; the rule's longest duration is given at the end. | Enter a number of minutes from 1 to the given limit. |
| The start must be later than now. | The start time is not later than the current time. | Give a time in the future. |
| The start can be at most 7 days ahead. | The start time is more than seven days ahead. | Choose a nearer time. |
| The period must lie inside the time this access may be requested for. | The requested interval goes beyond the time window the rule allows. | Choose an interval inside the window (see the Access period column on the console page). |
| This access is no longer running; there is nothing to give back. | You clicked Release for access that has already ended or been revoked. | Refresh the list. |
| cannot reach the gateway, trying again | The request status panel got no answer from the gateway and will poll again. | Check the connection to the gateway; polling will continue by itself. |
| The status is no longer updated. Open My access requests to see it. | Polling of the request status has stopped. | Open File → My access requests.... |
| Something went wrong. Open My access requests to see the request. | The state of the request could not be obtained. | Open My access requests: the request may have been submitted. |
| Your access to … as … has ended. | The access time is over; open sessions are closed. | If necessary, request access again (the Request access... button in the message). |
| Your access to … as … ends at …. Extend it in My access requests. | A warning before the end of the access. | Extend the access (Extend...) in advance. |
SSH connection refused when access can be requested
| Message | What it means | What to do |
|---|---|---|
| Access is not allowed now. You can request it in the web console: … | You have no access now, but it is offered on request; the console address follows the colon. | Submit a request on the /access/requests page, wait for approval and connect again. |
| Access is not allowed now. You can request it in the web console under My access, Access requests. | The same; the console address is not set in the settings. | Open the console, My access → Access requests. |
| Your granted access ends in … minutes. File an extension request if you need more time. | A warning in an open session before the granted access ends. | Submit an extension request (Extend in the console). |
| Your granted access has ended. The session is closed. | The access time is over, the session is closed. | Request access again. |
| Your granted access was revoked by …. The session is closed. | The access was revoked by the named person; the session is closed. | Ask the person who revoked it, or the administrator, for the reason. |
| Your access to this server has ended. The session is closed. | The basis for the access has gone (for example, the rule was changed). | Connect again or request access. |
Approving requests (the Approvals page)
| Message | What it means | What to do |
|---|---|---|
| This request is no longer waiting for a decision. | The request has already been decided, cancelled or has expired. | Refresh the page. |
| You may not decide this request. | You are not among the approvers of this rule (for example, you were removed from the rule or lost the role). | If this is a mistake, contact the administrator. |
| The time to decide has run out. | The time to decide has expired. | Ask the author to submit the request again. |
| The rule no longer offers this access, so the request was cancelled. | The rule was disabled or no longer offers this access; the request was cancelled when a decision was attempted. | Nothing: the author will receive an e-mail about the cancellation. |
| The duration must be at least 1 minute and shorter than requested. | An invalid number was entered in the Shorter duration, minutes (optional) field. | Leave the field empty or enter a number from 1 up to a value below the requested one. |
| A comment is at most 1000 characters. | The comment is too long. | Shorten it. |
| You have already decided this request. | You have already voted on this request. | Nothing. |
| A comment is required to deny a request. | A comment is needed for a denial. | Write the reason for the denial. |
| Approving needs you to confirm who you are first. Denying does not. | There is no fresh confirmation of identity (it is valid for 10 minutes). | Click Confirm who I am, confirm yourself and return to the request. |
| This access has already ended or was taken back. | Revoking is impossible: the access has already ended or been revoked. | Refresh the Active grants tab. |
| The reason is too long (at most 1000 characters). | The reason for the revocation is too long. | Shorten it. |
| (the “not found” page, 404) | The request does not exist, or you are not entitled to see or decide it (including your own request, or revoking an access you have no rights over). | If the request should be visible to you, check the rule and your role with the administrator. |
Command confirmation (the Commands tab on the Approvals page)
| Message | What it means | What to do |
|---|---|---|
| This command is no longer waiting for a decision. | The command has already been decided or withdrawn. | Refresh the page. |
| The time to decide has run out, so the command was refused. | The waiting time is over; the command was refused. | Nothing. |
| You cannot decide the commands of your own session. | You cannot confirm commands of your own session. | Another confirmer is needed. |
| You are not a confirmer for this policy. | You are not named as a confirmer of this policy. | Contact the administrator. |
| Allowing needs you to confirm who you are first. | There is no fresh confirmation of identity. | Confirm your identity and repeat. A denial does not need confirmation. |
| A comment is at most 1000 characters. | The comment is too long. | Shorten it. |
| You have already decided this command. | You have already decided on this command. | Nothing. |
| The held line is not the one you were shown, so it was refused. | The line changed while you were looking at it; the decision was not accepted. | Nothing: the person can enter the command again. |
| The decision could not be saved. Try again. | The gateway could not record the decision (for example, a check after a restart is still running). | Try again in a few seconds. |
| A comment is required to deny a command. | A comment is needed for a denial. | Write the reason. |
| This is your own session. Another person has to decide. | The command is yours; another person decides. | Wait for the decision. |
| Your confirmation has run out, so Allow is off until you confirm again. | The confirmation of identity has expired. | Confirm yourself again. |
| The live connection was lost. Reload the page to see what is waiting. | The page lost its live connection to the gateway. | Reload the page. |
Emergency access
| Message | What it means | What to do |
|---|---|---|
| Emergency access is not available to you for this server account. | You are not marked in the rule, or emergency access is off in the rule. | Contact the administrator. |
| Emergency access needs a confirmed authenticator app. Set one up in your profile first. | You have no confirmed authenticator app. | Set one up in your profile. |
| Write a reason of at least 20 characters. | The reason is shorter than 20 characters. | Describe what is happening and why it cannot wait. |
| Enter the six-digit code from your authenticator app. | The code is not entered or has the wrong form. | Enter six digits. |
| The code is wrong or was already used. | The code is wrong, expired or was used at sign-in; a recovery code does not work. | Wait for a new code in the app and enter it. |
| You already have emergency access to this server account. | Emergency access to this pair is already in force for you. | Use it until it ends. |
| The limit of emergency accesses is reached. Contact the administrator. | The limit of uses per day is used up (2 by default). | Contact the administrator. |
| I understand that this use will be reviewed. | The acknowledgement box is not ticked (the gateway returns the form with this line). | Tick the box. |
| Write a note. | No note is entered in the review. | Write what you checked. |
| Choose a verdict. | No verdict is chosen. | Choose one of the three. |
| This use has already been reviewed. | The review has already been closed (HTTP 409). | Refresh the page. |
| You cannot review your own use. | You cannot review your own use (HTTP 403). | Another Approver or Auditor is needed. |
| Cannot be switched on: no alarm channel (SIEM export, e-mail or webhook) has delivered in the last 24 hours. Set one up under System, send a test and try again. | Emergency access cannot be switched on in the rule: no alarm channel has delivered in the last day, so the alarm could go unheard. | Set up e-mail or a webhook on the Notifications page, send a test and save the rule again. |
| Emergency access: this use is recorded, the responsible people have been told, and it will be reviewed. | An information line in the terminal on a connection based on emergency access. | Nothing; work only as far as necessary. |
On-request rules (messages on saving)
| Message | What it means | What to do |
|---|---|---|
| Approvals needed: from 1 to 5. | The number of approvals is out of range. | Enter a number from 1 to 5. |
| The longest access is 1 to 20160 minutes, and the suggested duration cannot exceed it. | The longest duration or the suggested duration is entered incorrectly. | Correct the values. |
| Time to decide: from 5 to 10080 minutes. | The time to decide is out of range. | Enter a number from 5 to 10080. |
| The ticket format is not a valid regular expression, or it is too costly to run. | The ticket number format is invalid or too complex. | Simplify the expression. |
| Every approver must be an active person who holds the Approver role. | The list of approvers includes a disabled person or a person without the Approver role. | Assign the role or remove the person. |
| Name at least one approver, or approve automatically. | No approver is named and automatic approval is not on. | Add approvers. |
| Confirm who you are before this change: …. It lets more people or more access through. | The change widens access; a fresh confirmation of identity is needed. | Confirm yourself and save again. |
| A rule that has requests cannot be deleted; disable it instead. | A rule with requests cannot be deleted. | Disable it. |
| No member of an approver group can approve now: … | The named group has no person who could approve. | Add people with the Approver role to the group. |
| The rule needs … approvals; the number of people who can approve now is …. Requests will wait until more people can. | There are fewer approvers than the quorum needs. | Add approvers or reduce the quorum. |
| Requests already waiting under the old terms are not approved by this change: …. Disable the rule to cancel them. | Waiting requests stay on the old terms. | If necessary, disable the rule to cancel them. |
| Waiting requests of other rules that this rule now governs will be cancelled when an approver decides them: …. | Some requests will come under this rule and will be cancelled when a decision is attempted. | Warn the approvers. |
| Waiting requests of this rule whose ticket no longer meets its terms will be cancelled when an approver decides them: …. | The ticket numbers in some requests do not fit the new format. | Nothing, or ask the people to submit their requests again. |
Notifications (the Notifications page)
| Message | What it means | What to do |
|---|---|---|
| Enter the SMTP server as a host name or an address, without spaces. | The mail server address is written incorrectly. | Enter a name or an IP without spaces. |
| The port is a whole number from 1 to 65535. | The port is wrong. | Enter a number from 1 to 65535. |
| Choose how the connection is encrypted. | No encryption is chosen. | Choose STARTTLS or TLS. |
| The user name is up to 254 characters, without control characters. | The mail user name is wrong. | Correct it. |
| An e-mail address looks like name@example.ge, without a display name, spaces or quotes. | The sender address is written incorrectly. | Enter an address like name@example.ge. |
| Up to 10 e-mail addresses, separated by commas. | The list of alarm recipients is wrong or longer than 10. | Correct it. |
| The webhook address must be an https address without a user name or password. | The webhook address is not https or contains a login and password. | Enter an address like https://…. |
| The console address is an https address like https://pam.example.ge, without a path. | The console address is wrong. | Enter an https address without a path. |
| Enter the SMTP server and the sender address together. | Only one of the two is filled in. | Fill in both or clear both. |
| Enter a signing secret of at least 32 characters (at most 512), without line breaks. | The webhook signing secret is shorter than 32 or longer than 512 characters. | Enter a secret of the right length. |
| Confirm who you are before this change: …. It sends notifications somewhere new. | Saving directs notifications to a new address; a fresh confirmation of identity is needed. | Confirm yourself and save again. |
| Save the settings first: the test uses the saved ones. | The test uses the saved settings. | Save, then send the test. |
| Your account has no e-mail address. Add one in your profile first. | The test e-mail goes to your account's address, and there is none. | Add an address in your profile. |
| The test message was not sent: … | The test failed; the reason follows the colon (see below). | Remove the cause and try again. |
| this channel is not set up | The channel is not configured. | Fill in the settings. |
| the connection was refused (nothing is listening on that port) | Nothing is listening on the port. | Check the address, port and firewall. |
| the server did not answer in time | The server did not answer within the allotted time (60 s for e-mail, 10 s for a webhook). | Check availability. |
| the host name could not be resolved | The name did not resolve to an address. | Check the name and the DNS on the gateway. |
| the TLS handshake failed or the server's certificate was not accepted | An encryption error or an untrusted certificate. | Check the certificate and the encryption mode. |
| the server does not offer encryption, so nothing was sent (a downgrade is refused) | The server does not offer STARTTLS; the gateway does not send mail in clear text. | Turn on encryption on the mail server or choose port 465 with the mode “TLS from the start”. |
| the server did not accept the user name or password | The login or password is wrong. | Enter the right values. |
| the server refused the message or an address | The server rejected the message or an address. | Check the sender and recipient addresses. |
| the webhook answered with a redirect, which is not followed | The receiver answered with a redirect. | Give the final address. |
| the webhook did not answer with success | The receiver answered with an error. | Check the receiver. |
| delivery failed for another reason; details are in the service log | Another reason. | Look at the gateway's service log. |
| Notifications are failing: … | An item in the bell: the number of channels that do not deliver. | Open Notifications and look at the Delivery card. |
| No push channel (SIEM, e-mail, webhook) has delivered in the last 24 hours, so an alarm could go unheard. | No alarm channel has delivered in the last day. | Set up and test at least one. |
Command control: setup pages
| Message | What it means | What to do |
|---|---|---|
| A name is required. | The policy or group name is empty. | Enter a name. |
| This name is already used. | This name already exists. | Choose another. |
| Name who it applies to (people, groups or Everyone) and where (servers or folders). | The policy has no scope. | Fill in “who” and “where”. |
| Add at least one entry. | The policy has no entries. | Add some. |
| Add at least one pattern. | The group has no patterns. | Enter at least one. |
| The pattern group of an entry no longer exists. | The group named in the entry has been deleted. | Choose another. |
| A policy for databases can only allow or alert. | A different action is chosen in a policy for databases. | Leave Allow or Alert. |
| Every confirmer must be an active person who holds the Approver role. | A confirmer is disabled or not an Approver. | Assign the role or remove the person. |
| Confirmations needed: from 1 to 5. | The number of confirmations is out of range. | Enter from 1 to 5. |
| Line …: … | An error in the pattern on the given line. | Correct the line; the reason is in the text after the colon. |
| This is not a valid regular expression. | The pattern is not a valid regular expression. | Correct it. |
| Backreferences, lookarounds and atomic groups are not supported. | Unsupported constructs are used. | Rewrite the expression without them. |
| This regular expression is too costly to run on every line. Simplify its repetitions. | The expression is too “expensive” to check every line. | Simplify the repetitions. |
| A pattern is at most 512 characters. | The pattern is too long. | Shorten it. |
| A policy uses this group. Take it out of the policy first. | Policies use the group. | Remove it from the policies, then delete it. |
| Command policies still apply to this: …. Edit the policies first. | A server, folder or group cannot be deleted while policies refer to it. | Change the policies. |
| Confirm who you are before this change: …. It makes command control weaker. | The change weakens control; a confirmation of identity is needed. | Confirm yourself and save. |
| Unreadable lines before an alert: a positive whole number. | The setting value is wrong: a positive whole number is needed. | — |
| That line is too long to test. | The line to test is longer than 4096 characters. | Shorten it. |
| Too many checks in a minute. Wait a moment. | More than 30 checks a minute from you. | Wait. |
| Too many lookups in a minute. Try again in … s. | Exact-line lookups in a session's command list are too frequent. | Try again after the given number of seconds. |
| Command policies that could not be loaded: … | An item in the bell: policies the gateway could not read; connections affected by them risk being refused. | Open the policies and check; contact support if necessary. |
| Command alerts in the last hour: …, Commands cancelled without a verified abort in the last day: …, Sessions with many unreadable command lines: … | Items in the bell about command control triggers. | Open the sessions and the command list (the “Audit” section). |
Command control: what the user sees in an SSH session
| Message | What it means | What to do |
|---|---|---|
| Command not run: policy … does not allow it. | A policy rejected the line you entered; it was not run. | If you need the command for your work, contact the administrator (the policy is named in the text). |
| The session was ended by policy …. | A policy requires the session to be closed. | Connect again and do not repeat the command. |
| The command was cancelled, but the gateway could not confirm that it did not run (policy …). Check what it did. | The gateway cancelled the line but could not make sure from the screen that it did not run. | Check the consequences on the server and tell the administrator. |
| The session was ended: a command was cancelled but the gateway could not confirm that it did not run (policy …). | The same for a strict policy; the session is closed. | Connect again; check the consequences. |
| This command needs approval from a second person. Waiting up to … s. Ctrl-C to withdraw. | The line is held until another person confirms. | Wait or press Ctrl+C to withdraw. |
| A second person allowed the command; it runs now. | Confirmed. | Nothing. |
| A second person refused the command; it was not run (policy …). | The confirmer refused. | Contact them or the administrator. |
| No second person answered in time, so the command was not run (policy …). | The waiting time is over, the command was refused. | Ask a confirmer in advance and try again. |
| Withdrawn. The command was not run. | You withdrew the command. | Nothing. |
| No second person is available to confirm this command, so it was not run. | Nobody is available to confirm (there are no confirmers or no suitable ones are left). | Contact the administrator. |
| The confirmation was cancelled, so the command was not run (policy …). | The confirmation was cancelled (the session was closed, the confirmer was disabled, the gateway was restarted). | Try again. |
| The held line changed while it waited, so it was not run. | The held line changed. | Enter it again. |
| Too many commands are waiting for confirmation on this gateway; this one was not run. Try again shortly. | Too many commands are waiting for confirmation on the gateway. | Try again a little later. |
| Confirmation is not available right now (the gateway cannot reach its database), so the command was not run. | The gateway has no connection to the database, confirmation is impossible. | Contact the administrator. |
| This line cannot be shown safely to the person who would confirm it, so it was not run. | The line contains characters that cannot be shown to the confirmer without a risk of deception. | Rewrite the command more simply. |
| Command control cannot stop commands in this shell (fish, or inside tmux or screen): they are recorded and reported only. | In this shell, control only records and reports. | This is information, not an error. |
| On this device a command being edited cannot be stopped yet: command lines are recorded and reported only. | On the device, a line being edited cannot be stopped. | Information. |
| The keys were rebound in this session. The gateway can no longer promise to stop a command here; this is recorded. | You reassigned keys (bind, bindkey, stty and the like). | Do not change keys while working. |
| The session was ended: the keys were rebound, so policy … can no longer be applied. | A strict policy closed the session after the keys were reassigned. | Connect again. |
| Too many lines at once: a script is not typed. Nothing was sent. | More than 16 new lines were pasted at once. | Paste in parts, or upload the script and run it. |
| Too many lines could not be read, so commands are refused for the rest of this session (policy …). | Too many unreadable lines (full-screen programs, input without echo). | Connect again. |
| Command control now applies to this server and needs a terminal, so the session is closed. | A policy was turned on during a session without a terminal. | Connect with ssh -t. |
| Commands on this server are checked and need a terminal. Connect with ssh -t. | A connection without a terminal (ssh -T, a call without -t) was refused. | Add the -t option. |
| Command not allowed by policy …. | A one-off command was refused (exit code 126, message sent to the error stream). | Contact the administrator. |
| The gateway could not find out which command policies apply to you, so the session is refused. Try again, or contact the administrator. | The gateway could not read the policies; the connection was refused for safety. | Try again; if it recurs, contact the administrator. |
The BURSUcm client: command control
| Message | What it means | What to do |
|---|---|---|
| Command control is on | An icon on the terminal tab: the gateway checks commands on this server; tmux is off for the connection, the Files panel does not follow the shell's directory, the AI assistant has no command marks. | This is not an error. |
Viewing a recording and the live picture (RDP, VNC)
| Message | What it means | What to do |
|---|---|---|
You have reached the number of recordings you may open or export at once. Close one and try again. | You already have the maximum allowed number of pictures and exports open. The per-person limit is set by a setting. | Close one of the open recordings or exports and try again. The administrator changes the limit: Sessions (RDP) or VNC. |
You have reached the number of recordings you may open or export at once. Close one and try again. | The same for VNC recordings. | The same: close one open recording. |
Your share of the gateway's picture capacity is in use. Close one of your open views or exports and try again. | You have taken all of your share of the gateway's memory for pictures (no more than half of the renderMemoryBudgetMb budget). | Close one of your open views or exports and try again. If that does not help and you are the only user, the administrator can increase renderMemoryBudgetMb in gateway.json. |
Your share of the gateway's picture capacity is in use. Close one of your open views or exports and try again. | The same for VNC recordings. | The same. |
The gateway is busy preparing other pictures. Try again in a moment. | The gateway is busy building other people's pictures and has no free room now. | Wait a minute and try again. |
The gateway is busy preparing other pictures. Try again in a moment. | The same for VNC. | Wait a minute and try again. |
Playback is not available on this gateway: the render worker could not be started. | The helper process that builds the picture did not start on this server. | Open the gateway's service log and tell the installation's administrator. |
The picture could not be prepared: the render worker stopped or could not be started. | The same for VNC: the helper process stopped or did not start. | Try again; if it recurs, look at the service log. |
Playback is off: the protection of the render worker could not be applied, and it never runs without it. | Playback is off: the protection of the helper process could not be turned on on this server, and without it the process does not start. | Check the OS requirements (the sandbox) in the installation section; contact the server's administrator. |
The session is still running. Watch it live, or export it after it ends. | The session is still going; the recording's picture cannot be shown. | Watch the session live (Watch) or wait for it to end. |
The recording failed its check, so it is not played. The check is in the audit log. | The recording failed the signature check and is not shown. | Follow the section “Checking recordings”: save the details and tell the person responsible. |
The recording failed its check, so it is not played. The check is in the audit log. | The same for VNC. | The same. |
The job reached a limit and was stopped. | The task reached one of the limits and was stopped. | Open the recording again; if it recurs, tell the administrator. |
This recording cannot be shown as a picture: it does not say how large the screen was. | The recording has no screen size, so the picture cannot be built. | The session facts and the log are available; there will be no picture. |
The screen of this recording is larger than the limit, so it cannot be shown. | The screen in the recording is larger than the allowed limit. | The picture cannot be shown; look at the session facts. |
Video export is not available on this gateway: the video encoder is missing. | The gateway has no video encoding program. | Install it (see the installation section) or contact the administrator. |
Stopped: too many frames | Playback stopped: too many frames. | The recording is too large to be shown whole; tell the administrator. |
Stopped: the picture is larger than the limit | Playback stopped: the picture is larger than the limit. | The same. |
Stopped: longer than the time limit | Playback stopped: longer than the allowed time. | The same. |
Stopped: more data than the limit | Playback stopped: too much data. | The same. |
Stopped: it took too long | Playback stopped: it ran too long. | Try again later. |
Stopped: the browser stopped reading | Playback stopped: the browser stopped reading the stream. | Refresh the page. Check the connection to the console. |
The render worker stopped unexpectedly | The helper process stopped unexpectedly. | Try again; if it recurs, tell the administrator (the service log). |
The render worker was stopped by its own protection | The helper process was stopped by its own protection. | The same. |
Stopped: nobody was watching | Playback stopped: nobody is watching. | Do nothing; this is not an error. |
This recording cannot be shown: … | A VNC recording cannot be shown; the reason is named in place of “…”. | Read the reason and act on it. |
The live connection was lost. | The live connection to the console was broken. | Refresh the page. If the session is still going, open the view again. |
The live connection was lost. | The same for VNC. | The same. |
The session has ended. | The session ended while you were watching. | Open the recording in the archive. |
The live picture differed from the recording. | The live picture did not match the recording. | Trust the signed recording, not the live picture. |
Live picture, not yet verified. The signed recording is the evidence. | A reminder: the live picture is not verified. | Use the signed recording as evidence. |
Playback stopped at part …: it does not match its signature. | Playback stopped at a part of the recording whose signature did not match. | The recording has been tampered with; follow “Checking recordings”. |
Playback stopped at part …: it does not match its signature. | The same for VNC. | The same. |
Not indexed yet: playback starts at the beginning and seeking replays from there. | The recording has no key frames yet, so seeking is slow. | Wait; playback works from the start. |
The recording was cut when the gateway stopped; the picture ends there. | The recording was cut off when the gateway stopped; the picture ends at that place. | This is not tampering; the last moments of the session may not have reached the recording. |
The live view needs JavaScript. | The live view needs JavaScript. | Turn on JavaScript in the browser. |
The player needs JavaScript. | The player needs JavaScript. | The same. |
The live view needs JavaScript. | The live view needs JavaScript. | The same. |
The player needs JavaScript. | The player needs JavaScript. | The same. |
The live view needs JavaScript. | The live view needs JavaScript. | The same. |
The player needs JavaScript. | The player needs JavaScript. | The same. |
Video export
| Message | What it means | What to do |
|---|---|---|
Confirm who you are to export. | You need to confirm who you are again. | Enter your password and code on the confirmation page (valid for 10 minutes) and try again. |
Confirm who you are to export. | The same for VNC. | The same. |
The session is still running. Export it after it ends. | The session is still going. | Export it after it ends. |
The session is still running. Export it after it ends. | The same for VNC. | The same. |
The recording failed its check, so nothing was exported. | The recording failed the check; no video was made. | Follow “Checking recordings”. |
The recording failed its check, so nothing was exported. | The same for VNC. | The same. |
The export would be longer than the limit, so nothing was exported. | The video would be longer than allowed. | The limit is set by the administrator (Sessions, Longest video, minutes). No video was produced. |
The export would be longer than the limit, so nothing was exported. | The same for VNC. | The limit is set by the administrator (VNC). |
The export would be larger than the limit, so nothing was exported. | The file would be larger than allowed. | The limit: Largest video file, MB in Sessions. |
The export would be larger than the limit, so nothing was exported. | The same for VNC. | The limit is set by the administrator (VNC). |
The video could not be made. | The video could not be made. | Try again; if it recurs, look at the service log and check the encoding program. |
The video could not be made. | The same for VNC. | The same. |
The video was refused: it did not pass the gateway's check. | The finished video failed the gateway's check and was rejected. | Try again; if it recurs, tell the administrator. |
The video was refused: it did not pass the gateway's check. | The same for VNC. | The same. |
Too many exports are running. Try again in a moment. | Too many exports are running. | Wait a minute and try again. |
Too many exports are running. Try again in a moment. | The same for VNC. | The same. |
Another export of this session is already running. | Another export of the same session is already running. | Wait for the first one to finish. |
This recording cannot be shown as a picture, so it cannot be exported. | The recording's picture cannot be built, so there will be no export. | There is no way; look at the facts and the log. |
This recording cannot be shown as a picture, so it cannot be exported. | The same for VNC. | The same. |
The render worker stopped before the video was done. | The helper process stopped before the video was ready. | Try again. |
The render worker stopped before the video was done. | The same for VNC. | The same. |
The export was cancelled. | The export was cancelled. | Start it again if you still need it. |
The export was cancelled. | The same for VNC. | The same. |
You have reached the number of recordings you may open or export at once. Close one and try again. | You have reached the number of open recordings and exports. | Close one and try again. |
You have reached the number of recordings you may open or export at once. Close one and try again. | The same for VNC. | The same. |
Your share of the gateway's picture capacity is in use. Close one of your open views or exports and try again. | Your share of the gateway's resources is taken. | Close one of your open views or exports and try again. |
Your share of the gateway's picture capacity is in use. Close one of your open views or exports and try again. | The same for VNC. | The same. |
Video export is not available on this gateway. | Video export is not turned on on this gateway. | Install the video encoding program or contact the administrator. |
The video could not be exported. | The video could not be delivered. | Try again. |
Checking recordings
| Message | What it means | What to do |
|---|---|---|
The recording is not played: …. The check is in the audit log. | The SSH recording is not played; the reason for the check result is named in place of “…”. | Look at the reason in the following rows; the check is recorded in the log. |
the signature does not verify against the gateway's key | The manifest signature does not match the gateway's key. | The recording cannot be considered authentic; follow “Checking recordings”. |
a part of the recording was changed, removed or added after signing | A part of the recording was changed, removed or added after signing. | The same: an integrity violation. |
the manifest differs from the one in the audit log | The recording's description does not match the one recorded in the audit log. | The same. |
the gateway's signing key is not available | The gateway's signing key is unavailable. | Unseal the gateway (Unseal) and try again. |
the recording could not be checked | The check could not be carried out. | Try again; look at the service log. |
The recording has not been signed yet (it waits for the database). | The recording is not signed yet, the gateway is waiting for the database. | Wait; if it takes long, check the database and the Alerts bell (the Local journal message). |
The recording was deleted by retention; the facts above and the audit log remain. | The recording was deleted on expiry of its retention period. | The facts and the log remain. The retention period is in Sessions. |
The recording was cut when the gateway stopped. What was written is kept and signed; the last moments may be missing. | The recording was cut off when the gateway stopped. | What was written is kept and signed; the last moments may be lost. |
The recording is not signed yet (it waits for the database). | The RDP recording is not signed yet. | Wait. |
The recording is damaged and is not played. | The RDP recording is damaged and is not played. | Follow “Checking recordings”. |
The recording was deleted by retention; the facts above and the audit log remain. | The RDP recording was deleted on expiry of its retention period. | The facts and the log remain. |
This recording cannot be shown as a picture: it does not say how large the desktop was. Its facts and the audit log remain. | The recording has no desktop size, so the picture cannot be built. | The facts and the log remain. |
Recording changed after it was signed | The VNC recording was changed after signing. | An integrity violation; follow “Checking recordings”. |
Recording cut at a crash | The VNC recording was cut off by a crash of the helper process. | What was recorded is signed; the end of the session may be missing. |
Recording not signed yet | The VNC recording is not signed yet. | Wait for the database. |
Recording deleted | The VNC recording was deleted. | The facts and the log remain. |
Recording not found | The VNC recording files are not on the disk although the retention period has not ended. | They were deleted behind the gateway's back: a violation. Tell the person responsible. |
Seal refused. Parts left unsealed: … | The gateway could not seal the parts of the VNC recording. | Check the disk space and the service log. |
Part … of this recording does not match its signature; its statements are not shown. | A part of the database session recording did not match its signature; its statements are hidden. | An integrity violation of the recording; tell the person responsible. |
The signed log of this session does not verify: …. The check is in the audit log. | The signed log of the file session fails verification. | The same; the check is recorded in the log. |
A stored file copy that the signed log lists is gone, although retention did not delete it: it was removed from the disk past the gateway. The check is in the audit log. | A file copy listed in the signed log has vanished from the disk before its retention period ended. | It was deleted behind the gateway's back. Tell the person responsible. |
A stored file copy does not match the signed manifest. | The stored file copy does not match the signed description. | A violation; do not use the copy, tell the person responsible. |
A byte of the part was changed. | The content of a part of the recording changed after signing. | A violation. |
A part is missing. | A part of the recording has disappeared. | A violation. |
A file is there that the signed manifest does not list. | There is an extra file in the recording's directory. | A violation. |
The part belongs to another session. | The part of the recording belongs to another session. | A violation. |
The manifest differs from the one the audit log's hash chain recorded. | The recording's description does not match the one recorded in the audit log's hash chain. | A violation. |
Skipped: the recording was deleted by retention | The recording was skipped: it was deleted on expiry of its retention period. | Do nothing. |
No VNC recordings to verify yet. | There are no VNC recordings to check yet. | Do nothing. |
Audit log and integrity
| Message | What it means | What to do |
|---|---|---|
Break at event No. …: expected hash ……, found …… | The log's chain is broken at the given event; the event number and the start of the hashes are given in place of “…”. | Follow the callout “What to do if the chain is broken” in the section “Integrity check”. |
Events from No. … on cannot be taken as confirmed. The event may have been changed or deleted directly in the database. | Events from the named one onwards cannot be considered confirmed. | The same. |
The last check could not finish; run it again. | The chain check did not run to the end. | Run the check again; look at the state of the database. |
This result could not be written to the audit log. It is shown from the gateway's memory and is lost on a restart: run the check again once the database accepts writes. | The check result is shown from memory; it could not be written to the log. | Repeat the check when the database accepts writes again. |
The chain has not been checked yet. | The chain has not been checked yet. | Click Check. |
No events. | There are no events under the chosen filters. | Widen the period or clear the filter fields and click Apply (there is no reset button). |
No finished SSH, Telnet, SFTP or SCP sessions match. | The archive of the SSH / Telnet / SFTP / SCP tab has no sessions under the chosen filters. | Widen the filters or clear the fields and click Apply. |
No finished RDP sessions match. | The archive of the RDP tab has no sessions under the chosen filters. | Widen the filters. |
No finished VNC sessions match. | The archive of the VNC tab has no sessions under the chosen filters. | Widen the filters. |
No finished database sessions match. | The archive of the Databases tab has no sessions under the chosen filters. | Widen the filters. |
No session is running | On the Running tab there are no running sessions of any protocol now. | This is not an error. |
No SSH, Telnet or file session is running | On the SSH / Telnet / SFTP / SCP tab, with the Running switch, there are no running sessions. | This is not an error. |
No RDP session is running | There are no running RDP sessions now. | This is not an error. |
No VNC session is running | There are no running VNC sessions now. | This is not an error. |
No database session is running | There are no running database sessions now. | This is not an error. |
Nothing was found in this recording. | Nothing was found in the recording. | Change the search words. |
Searching typed text (RDP)
| Message | What it means | What to do |
|---|---|---|
Nothing typed was found. | No typed text was found. | Change the query. |
The typed text of this session is not indexed: the index failed or has not run yet, so nothing typed in it can be found. | The index of typed text has not been built or building it failed. | Wait; if it does not appear, the index is unavailable for this session. |
Typed text is not indexed for this session: the index was off when the session ended (or before it could be built), so nothing typed in it can be found, now or later. | The text index was not built for this session: it was off. | It can be turned on only for new sessions (Sessions). |
The typed-text index of this session reached its limit: what was typed after that point cannot be found. | The index of typed text reached its limit: what was typed later cannot be found. | Look at the recording. |
Keystrokes were not recorded in this session, so a search of typed text finds nothing in it. | Keystrokes were not recorded in the session, so a search of typed text finds nothing. | This is the setting at the time of the session. |
The Commands tab and exact line lookup
| Message | What it means | What to do |
|---|---|---|
No command lines were recorded in this session. | No command lines were recorded in this session. | The command policy was not on for the session, or nothing was entered in it. |
No line of this session was typed exactly like this. | No line in the session was typed exactly like this. | Check whether you are entering the line exactly, with the spaces. |
Too many lookups in a minute. Try again in … s. | Too many exact lookups a minute (the limit is 10 per person). | Wait the given number of seconds. |
Not shown: this line could not be masked safely. | The line is not shown: it could not be masked safely. | This is done to protect secrets. |
Part of this line could not be read and is masked whole. | Part of the line could not be read; it is masked whole. | For an exact check, use Look up an exact line. |
Hidden as a precaution: the text can be read in more than one way | The command is hidden: its text can be read in different ways. | To search, use Exact text. |
File and clipboard copies, re-confirmation
| Message | What it means | What to do |
|---|---|---|
The stored copy failed its integrity check and was not downloaded. | The stored copy failed the integrity check and was not delivered. | The copy must not be used. Tell the person responsible. |
The kept text is no longer on disk. | The kept clipboard text is no longer on the disk. | It was deleted on expiry of its retention period or removed behind the gateway's back. |
Confirm who you are to read kept clipboard text. | To read the kept clipboard text you must confirm your identity. | Enter your password and code. |
The password or the code did not match. | The password or the code did not fit. | Enter them again. Several wrong codes in a row lock the account. |
File copies stopped: the recordings volume is near its reserve. Sessions are still recorded. | File copies are no longer saved: the recordings volume is almost full. Sessions are recorded. | Free up disk space (the File copies tile on Overview). |
A file copy could not be written. Sessions are still recorded. | A file copy could not be written. Sessions are recorded. | Check the space and the rights on the disk. |
Too large to keep | The copy was not saved: the file is too large. | This is a limit of the file policy. |
Not kept: write failed | The copy was not saved: the write failed. | Check the disk space. |
Not kept: out of order | The copy was not saved: the file was transferred out of order. | A limitation; the total is not counted either. |
Sending to SIEM
| Message | What it means | What to do |
|---|---|---|
Enter the receiver's host. | The receiver's address is not given. | Enter it in the Host field. |
An address is up to 253 characters, without spaces or invisible characters, and does not start with “-”. | An invalid receiver name or address. | No more than 253 characters, no spaces, do not start with “-”. |
The CA certificate is not PEM. | The certificate authority's certificate is not in PEM format. | Paste the text starting from -----BEGIN CERTIFICATE-----. |
the connection was refused (nothing is listening on that port) | The connection was refused: nothing is listening on the port. | Check the port, the receiver's service and the firewall. |
the receiver did not answer in time | The receiver did not answer in time. | Check the network and the receiver's load. |
the host name could not be resolved | The name did not resolve. | Check the name in the Host field and the gateway's DNS. |
the TLS handshake failed or the receiver's certificate was not accepted | TLS could not be negotiated or the receiver's certificate was not accepted. | Check the CA certificate, the certificate's validity period and the match of the name. |
delivery failed for another reason; details are in the service log | Delivery failed for another reason. | Look at the gateway's service log. |
The test event was not sent: … | The test event was not sent; the reason is named in place of “…”. | Remove the cause and repeat the test. |
Confirm who you are before turning the SIEM export off. | The sending cannot be turned off without confirmation of identity. | Click Confirm who I am and try again. |
Confirm who you are before changing the receiver of a running export. | Changing the receiver of a running export must be confirmed. | The same. |
Confirm who you are before turning the sending of statements off. | Turning off the sending of database commands must be confirmed. | The same. |
Turn the export off on its own: the last events still go to the receiver saved now. Change the receiver after the export has stopped. | Turning the sending off must be done separately from changing the receiver. | First turn it off, then change the receiver. |
The last events are still being delivered to the previous receiver, so the export cannot be changed now. Wait until that has finished. A stop is cancelled by switching the export on again. | The last events are still being delivered to the previous receiver; the sending cannot be changed now. | Wait for the delivery to end. A stop is cancelled by switching it on again. |
Confirm who you are before switching without delivery. | “Switch without delivery” needs a confirmation of identity. | Confirm and try again. |
Confirm who you are before stopping without delivery. | “Stop without delivery” needs a confirmation of identity. | The same. |
The export is stopping: the latest events have not been delivered yet | The sending is stopping, the last events are not delivered yet. | Wait or stop without delivery. |
Switching receiver: the latest events have not been delivered to the previous receiver yet | The receiver is being changed, the last events have not been delivered to the previous one. | Wait or switch without delivery. |
not set up | Sending to SIEM is not set up. | Set it up on the SIEM export page if your security requirements call for it. |
Overview tiles and the bell
| Message | What it means | What to do |
|---|---|---|
locked — the gateway is sealed | The gateway is sealed: the key is not open, sessions are not accepted. | Enter the passphrase or the recovery key (Unseal). |
The encryption key was changed, and this gateway still holds the previous one in memory. Restart the gateway (a sealed gateway will need its passphrase). | The encryption key was changed, but the process holds the old one. | Restart the gateway service; a sealed gateway will need the passphrase. |
Recording fails: new sessions are refused until there is room. | Session recording is not working: new sessions are refused until there is room. | Free up space (the Disk tile) and check the rights on the recordings directory. |
free space unknown | The free space could not be determined. | Check the disk by hand. |
break at event No. … | A break in the log's chain was found. | See “Integrity check”. |
the last check could not run | The last chain check could not run. | Run it by hand on the Integrity check page. |
not checked yet | There have been no checks yet. | Run a check or wait for 03:00. |
Not listening: …. See the service log. | The address for databases is not being listened on; clients will not connect. | Look at the service log: the address is taken, the certificate is wrong or a module is missing. |
Address not in the certificate | The VNC address is not listed in the certificate. | Correct vncAdvertisedName or the certificate (VNC). |
Could not bind | The VNC port could not be taken. | Free the port or change vncListen. |
The session worker cannot run on this host (socket hand-over). | The VNC session helper process cannot run on this server. | See the requirements in the installation section. |
… refused connections in 24 h — check the server before confirming a new key | Connections were refused because the server's key changed. | Check that the server has not been replaced, and only then confirm the new key (“Servers”). |
… records wait for the database | Records are waiting for the database in the gateway's local journal. | Check PostgreSQL. If the wait is longer than 10 minutes, the tile turns red. |
Passwords the gateway typed were echoed or taken by an unexpected program: … in 24 hours. | A device showed a password typed by the gateway, or a program intercepted it. | Check the settings of the device and the account. |
Directories not watched: …. Access changes in them are seen only at the next sign-in or ticket check, and when the watch reconnects. | The directories are not watched: changes are seen only at the next sign-in. | See “Directories”. |
Directories with an unconfirmed root certificate: …. Sign-ins through them are refused until an administrator confirms it. | The directories' root certificate is not confirmed; sign-ins through them are refused. | Confirm the certificate (“Directories”). |
Command policies that could not be loaded: … | The command policies could not be loaded; they are not in effect. | See “Command control”. |
No push channel (SIEM, e-mail, webhook) has delivered in the last 24 hours, so an alarm could go unheard. | No notification channel has delivered for 24 hours, so an alarm may go unheard. | Check the channels (“Notifications”). |
no licence: nothing is served | There is no licence; the gateway serves nothing. | “Licence”. |
ended on …: new sessions and changes are refused | The licence has ended: new sessions and changes are refused. | “Licence”. |
activated on another host: new sessions and changes are refused | The licence is activated on another host: new sessions and changes are refused. | “Licence”. |
the gateway cannot trust its own time: new sessions and changes are refused | The gateway does not trust its own time: new sessions and changes are refused. | Correct the time and restart. |
the licence state cannot be read from the database: new sessions and changes are refused | The licence state cannot be read from the database: new sessions and changes are refused. | Check the database. |
Reviewing emergency access
| Message | What it means | What to do |
|---|---|---|
Write a note. | A note is mandatory. | Write what you checked and found. |
Choose a verdict. | No verdict is chosen. | Choose Justified, Not justified or Needs follow-up. |
This use has already been reviewed. | This use has already been reviewed. | Refresh the page. |
You cannot review your own use. | You cannot review your own use. | The review is done by another approver or an auditor. |
Another Approver or an Auditor reviews your use of emergency access; you cannot close the review. | Your use of emergency access is reviewed by another person. | Do nothing. |
A comment is at most 1000 characters. | The comment is longer than 1000 characters. | Shorten it. |
Messages users see when a session is ended
| Message | What it means | What to do |
|---|---|---|
End the session of … on …? They will see that you ended it. | The question before ending a session. | Confirm or cancel. |
The session had already ended. | The session had already ended before you clicked. | Do nothing. |
The session was ended by …. | This is how an SSH user sees that you ended their session. | This is a normal ending; the recording gets a mark. |
The file session was ended by …. | The same for SFTP/SCP. | The same. |
An administrator ended this session. | The same for databases. | The same. |
The session was ended by an administrator. | The same for VNC. | The same. |
The session cannot be recorded and is closed. Contact the administrator. | The session is closed: the gateway cannot record it. | The user must contact the administrator. The administrator should check the disk (the Disk and Session recording tiles). |
The gateway cannot record; the session is closed. | The same for databases. | The same. |
The session was closed because it could not be recorded. | The same for VNC. | The same. |
The session was closed after … minutes without input. | The session was closed because of inactivity. | The idle time is in Sessions. |
Your access to this server has ended. The session is closed. | The access to the server has ended, the session is closed. | If you need new access, a new rule or request is needed. |
target_cert_unconfirmed | The reason an RDP session ended, shown as a code: the server's certificate is not confirmed. | Confirm the certificate on the server's card (“Servers”). |
target_logon_failed | The reason an RDP session ended, shown as a code: the server did not accept the gateway's sign-in. | Check the server's account (“Accounts”). |
target_redirect_refused | The reason an RDP session ended, shown as a code: the server asked for the connection to be redirected, and the gateway refused. | Check the server's address. |
admission_denied | The reason an RDP session ended, shown as a code: the gateway did not accept the session (overload or a limit). | Try again later; tell the administrator. |
file_operations_limit | The reason an RDP session ended, shown as a code: the session accumulated 100 000 file changes on the redirected drive, and the gateway closed the session. The limit is built into the gateway and cannot be configured. | This is a decision of the gateway, not a fault. The user can open the session again; if it keeps happening, look in “File transfers and clipboard” to see what a program is doing on the redirected drive. |
The My access page
| Message | What it means | What to do |
|---|---|---|
| Your access rules allow no server now. | No rule allows you anything now. | Submit an access request (Access requests) or contact the administrator. |
| You do not have access to this server account now. | The right to this account ended or was revoked while you were clicking the button. | Refresh the page. If the entry has disappeared, request access. |
| Set up an authenticator in My profile to connect to databases. | A second factor is needed for databases, and no authenticator is set up. | Set up an authenticator in your profile. |
| Set up the authenticator app on your profile first; VNC connections ask for its code. | VNC needs an authenticator, and none is set up. | Set up an authenticator app in your profile. |
| The code did not match. | A wrong code was entered. When a database pass is obtained, the gateway answers the same way if the entry is not a six-digit code, including a recovery code. | Enter a new code from the authenticator. Several mistakes in a row lock the sign-in. |
| Enter the 6-digit code. | Only when a VNC ticket is obtained: the code field is empty or does not hold six digits. | Enter six digits. |
| A recovery code cannot be used here. Use the 6-digit code. | Only when a VNC ticket is obtained: a recovery code does not work. | Enter the code from the authenticator. |
| Too many wrong codes. Try again later. | Only when a VNC ticket is obtained: too many wrong codes. The attempts are counted together with the other second-factor entries. | Wait and try again later. If the lockout does not lift, contact the administrator. |
| Account temporarily locked until … | When a database pass is obtained: the account is locked because of wrong codes; the message gives the time the lockout ends. | Wait until the given time or contact the administrator. |
| Too many attempts. Wait a minute and try again. | The number of requests per minute is exceeded (a pass can be obtained no more than 10 times a minute). | Wait a minute. |
| This connection has expired or does not exist. | The RDP reservation has ended (it lives for 10 minutes) or there is none. | Go back to My access and click Connect again. |
| The code for this connection has already been shown. If it did not work, start again. | The RDP code is shown once. | Click Start again. |
| The gateway's certificate does not name …. Clients that check the name will refuse it; tell the administrator. | The gateway's certificate lacks the name you are connecting under. | Tell the administrator. Connect by a name that is in the certificate. |
Gateway replies to ticket and pass requests (console and BURSUcm)
| Message | What it means | What to do |
|---|---|---|
| You do not have access to this server account. | No rule allows this account now. | Refresh the list. If necessary, request access. |
| The request is not valid. | The application sent a request that the gateway did not understand. | Update BURSUcm. If that does not help, tell the administrator. |
| The sign-in step has expired. Sign in again. | Too much time passed between entering the password and the code. | Sign in again. |
| Your sign-in has ended. Sign in again. | The BURSUcm sign-in has expired or been revoked. | Sign in again. |
| The gateway is locked — contact the administrator. | The gateway is locked (for example, it has not been unsealed yet after a restart). | Tell the administrator. |
| The gateway's licence has ended. Contact the administrator. | The gateway's licence has expired. | Tell the administrator. |
| This server is beyond the number of servers the gateway's licence allows. Contact the administrator. | The server is above the number the licence allows. | Tell the administrator. |
| The gateway's licence does not allow this session now. Contact the administrator. | The licence does not allow new sessions. | Tell the administrator. |
| NTLM is not allowed for this RDP server, and in this version an RDP server is reached with NTLM only. Contact the administrator. | NTLM sign-in is forbidden for this RDP server, and this version has no other way. | Tell the administrator. |
| The RDP server's certificate has not been confirmed. Contact the administrator. | The administrator has not yet confirmed the RDP server's certificate. | Tell the administrator. |
| Update BURSUcm to open VNC servers through the gateway. | This BURSUcm version is too old for VNC through the gateway. | Update the application. |
| This VNC server's certificate has not been confirmed yet. Contact the administrator. | The VNC server's certificate is not confirmed. | Tell the administrator. |
| The gateway's VNC port is not available. Contact the administrator. | The gateway's VNC entry point is not running. | Tell the administrator. |
| The gateway's answer for this VNC server is not one this app accepts, so nothing was opened. Contact the administrator. | The gateway's answer went beyond what BURSUcm is ready to accept. | Tell the administrator. |
| Update BURSUcm to connect to databases through this gateway. | This BURSUcm version is too old for databases. | Update the application. |
| The server's certificate is not confirmed yet. Ask the administrator to confirm the server. | The database server's certificate is not confirmed. | Ask the administrator to confirm the server. |
| Database connections are not enabled on this gateway. | Database entry points are not turned on on the gateway. | Tell the administrator. |
| Your login, the server and the account together are too long for this database client. Ask the administrator for a shorter server name. | The name login:server:account does not fit within the protocol's limit. | Ask the administrator to shorten the server name or the account name. |
| The gateway certificate this app trusts is not the one used for database connections, so it was not saved. Ask the administrator. | The certificate BURSUcm trusts differs from the certificate of the database entry point. | Tell the administrator. |
Access requests and emergency access (BURSUcm and console)
| Message | What it means | What to do |
|---|---|---|
| No rule offers you access to this server account by request. | There are no rules for you under which this access is given on request. | Contact the administrator. |
| You already have a request waiting for this server account. | Such a request has already been submitted. | Wait for the decision. |
| You already have access to this server account for that whole period. | You already have access for the whole requested period. | Nothing is needed. |
| Nobody can approve this request now. Contact the administrator. | There is nobody who can approve the request. | Tell the administrator. |
| You have too many requests waiting. Wait for a decision or cancel one. | The number of requests waiting for a decision has been reached. | Wait for decisions or cancel one request. |
| A reason is required. | No reason is given. | Fill in the reason. |
| The reason or the ticket is too long. | The reason or the ticket number is longer than allowed. | Shorten the text. |
| The ticket number is missing or does not match the required format. | The ticket number is not given or does not fit the format the rule requires. | Enter the number in the required format. |
| This request is no longer waiting. | The request has already been decided or cancelled. | Refresh the page. |
| Emergency access is not available to you for this server account. | Emergency access is not provided for you. | Submit an ordinary request. |
| The limit of emergency accesses is reached. Contact the administrator. | The limit of emergency accesses is used up. | Tell the administrator. |
Signing in to BURSUcm: password, code, address
| Message | What it means | What to do |
|---|---|---|
| Enter the gateway address. | No address has been entered. | Enter the gateway address. |
| The gateway is reached over HTTPS only. | The address uses a different protocol. | Use https:// or a name without a protocol. |
| Enter the gateway address, for example pam.example.org or https://pam.example.org:8443. | The address is written incorrectly. | Check the address. |
| Sign-in to the gateway failed: … | The general frame of a sign-in error. The reason from this section follows the colon. | Read the reason. |
| Sign in to the PAM gateway first. | You are not signed in to the gateway, or the sign-in has expired. | Sign in. |
| Incorrect login or password. | The login or the password is wrong. | Check the keyboard layout and the case. After several mistakes the account is locked. |
| The account is temporarily locked. Try again later. | The account is temporarily locked. If the gateway sent its own message, it states when the lock ends (in the web console: Account temporarily locked until …). | Wait or contact the administrator. |
| Your password must be changed in the web console first. | The password has to be changed. This is done in the web console. | Click Open the gateway console, change the password and return to BURSUcm. A domain user changes the password in the domain; in that case the gateway sends its own text. |
| Two-factor sign-in is not set up for your account. Set it up in the web console first. | The second factor is not set up. | Set up an authenticator in the web console. |
| The directory is not available. Try again later or contact the administrator. | The gateway cannot reach the directory (AD or LDAP). | Try again later or tell the administrator. |
| Too many wrong codes. Sign in again. | Too many wrong codes; the sign-in was stopped. | Sign in again. |
| Too many attempts. Wait a minute and try again. | Too many requests from your address. | Wait a minute. |
| Something went wrong. Please try again. | An internal gateway error. | Try again. If it keeps happening, tell the administrator the time of the attempt. |
| The gateway refused the request (…). | The gateway returned an error code for which there is no separate text. The code is in brackets. | Give the code to the administrator. |
Certificate and connection to the gateway (BURSUcm)
| Message | What it means | What to do |
|---|---|---|
| The gateway cannot be reached. Check the address and the network. | There is no connection to the gateway. | Check the address, the port, the network and the VPN. |
| The gateway gave an answer this app does not understand. Check that the address is a BURSU PAM gateway. | The address is answered by something that is not a gateway, or by a gateway of a different version. | Check the address and the port of the web console. |
| The gateway presented a different certificate than the one trusted before, so the connection was refused. Compare the fingerprint with the gateway's console and ask the administrator. | The gateway's certificate has changed. | Do not continue until the administrator confirms the change. Then click Forget the gateway's certificate. |
| The gateway certificates trusted on this computer cannot be read, so the connection was refused. Forget the gateway's certificate, then compare the fingerprint with the gateway's console before you trust it. | The file with the remembered certificates is damaged. | Click Forget the gateway's certificate, compare the fingerprint and confirm it again. |
| The gateway's SSH key does not match the one it announced, so the connection was refused. Tell the administrator. | The gateway's SSH key differs from the one the gateway named at sign-in. | Tell the administrator. |
| The gateway … was not trusted — connection cancelled. | You declined to trust the gateway's certificate (Universal). | Connect again and compare the fingerprint. |
| Trusted before: … | A line of the certificate-change window: the previous fingerprint. | Compare it with the fingerprint from the administrator. |
| Presented now: … | A line of the certificate-change window: the new fingerprint. | Compare it with the fingerprint from the administrator. |
| cannot reach the gateway, trying again | A status line: the connection to the gateway has been lost and the app is trying again. | Wait or check the network. |
Windows sign-in and Kerberos (BURSUcm and the console)
| Message | What it means | What to do |
|---|---|---|
| No Windows sign-in ticket for the gateway on this computer. | This computer has no Windows ticket for the gateway. | Sign in to the domain or use a login and password. |
| No Kerberos ticket on this computer — sign in to the domain or run kinit. | There is no Kerberos ticket (Linux). | Sign in to the domain or run kinit. |
| Windows offered NTLM, which the gateway does not accept. Ask the administrator to check the gateway's service name (SPN). | Windows chose NTLM, but the gateway accepts only Kerberos. Usually the gateway's name does not match the one recorded in the domain. | Tell the administrator. The web console words the same refusal like this: Windows offered NTLM, which the gateway does not accept. Ask the administrator to check the gateway's name in the browser policy. |
| The clocks of this computer, the gateway and the domain differ too much. | The clocks differ by more than is allowed. | Synchronise the time. |
| The gateway's Kerberos key does not match the domain. Tell the administrator. | The gateway's key does not match the domain. | Tell the administrator. |
| The secure connection to the gateway could not be confirmed for Windows sign-in. | The secure connection could not be confirmed for the Windows sign-in. | Sign in with your login and password and tell the administrator. |
| Your domain is not connected to this gateway. | Your domain is not connected to the gateway. | Tell the administrator. |
| Windows sign-in is not set up on this gateway. | Windows sign-in is not turned on. | Sign in with your login and password. |
| Kerberos is not available on this computer. | This computer has no Kerberos support. | Sign in with your login and password. |
| Windows sign-in was not accepted. Sign in with your login and password. | The gateway did not accept the Windows sign-in. | Sign in with your login and password. |
| The Windows sign-in step has expired. Press “Sign in with Windows” again. | The Windows sign-in step has timed out (web console). | Click the button again. |
| Windows sign-in: send a Kerberos ticket. | A service reply from the gateway: it is waiting for a Kerberos ticket. The user does not normally see it. | Nothing is needed. |
Connecting in BURSUcm
| Message | What it means | What to do |
|---|---|---|
| Not available in PAM Gateway mode: the gateway's catalogue is read-only. | In gateway mode the catalogue cannot be changed. | Only the administrator can change servers, in the console. |
| This server is no longer in the gateway's catalogue. Refresh the list and try again. | The server has been deleted or your access has ended. | Click Refresh the list. |
| The gateway lists no account you may use on this server. | The server has no account that you are allowed to use. | Request access. |
| The gateway did not accept the sign-in. Its one-time code lives 60 seconds; connect again. | The one-time ticket was not accepted (it has expired or was already used). | Connect again. |
| The gateway's one-time code could not be requested. Connect again. | The ticket could not be obtained (Universal). | Connect again. |
| Through the gateway, RDP needs the BURSUrdp engine, which is not available on this computer. | The built-in RDP engine is missing. | Reinstall BURSUcm or open RDP through mstsc. |
| The gateway's rules do not allow a terminal on this server. | The rule allows files only. | Use the file panel. |
| RDP connection failed: … | A window frame: the RDP connection could not be made. The reason follows the colon. | Read the reason. |
| SSH connection failed: … | A window frame: the SSH connection could not be made. | Read the reason. |
| Could not connect (VNC): … | The VNC window frame. | Read the reason. |
| Could not open the terminal: … | The terminal window frame. | Read the reason. |
| Download is not allowed by the gateway's rule. | The rule does not allow downloading. | Request access with the right you need. |
| Upload is not allowed by the gateway's rule. | The rule does not allow uploading. | The same. |
| Copying on the server is not available through the gateway. | Copying within the server is not available. | Download the file and upload it again. |
| Changing files on this server is not allowed by the gateway's rule. | The rule does not allow changing files. | The same. |
| The gateway's rules do not allow file transfer to this server. | File transfer is forbidden. | The same. |
| File transfer is not available for Telnet servers. | Telnet does not support files. | Use another server. |
| The gateway ↔ server leg is not encrypted. | A warning: the stretch from the gateway to the server (VNC without TLS, Telnet) is not encrypted. | Carry on if your organisation allows it. |
Databases in BURSUcm
| Message | What it means | What to do |
|---|---|---|
| This pass is shown only now. Closing this window drops it. | The pass is visible only in this window. | Copy it now or get a new one (New pass). |
| The first-use time is over. If you have not used this pass yet, get a new one. A pass already in use opens new connections until … from this computer. | The time for the first connection is over. If the pass has already been used, it works until the stated time. | If you have not used it, get a new one. |
| This pass has ended. Get a new one. | The pass has ended. | Click New pass. |
| The pass was revoked and its connections were closed. | The pass was revoked with the Revoke button. | Get a new one if necessary. |
| This gateway asks SQL Server clients for strict encryption (TDS 8.0, Encrypt=Strict). | An explanation: the SQL Server client must use Encrypt=Strict. | Configure the client. |
| This gateway asks SQL Server clients for mandatory encryption (Encrypt=True). | An explanation: strict mode is off, Encrypt=True is needed. | Configure the client. |
| Could not save the certificate: … | The certificate file could not be saved. | Choose another folder. |
SSH terminal: refusals at sign-in
| Message | What it means | What to do |
|---|---|---|
| Several accounts on … are allowed for you: connect as …:…:<account>. | Several accounts are allowed and you have not chosen one. | Add a third part to the user name. |
| Two-factor sign-in is not set up for your account. Set it up in the web console first. | The second factor is not set up. | Set up an authenticator in the console. |
| Your password must be changed in the web console first. | The password has to be changed. | Change the password in the console. |
| The gateway's licence does not allow new sessions now. Contact the administrator. | The licence does not allow new sessions. | Tell the administrator. |
| The server's host key has not been confirmed or has changed. Contact the administrator. | The server's key has not been confirmed or has changed. | Tell the administrator. |
| The server could not be reached or refused the login. Contact the administrator. | The server is unreachable or rejected the stored login. | Tell the administrator. |
| The gateway cannot record sessions right now. Contact the administrator. | The gateway cannot record. | Tell the administrator. |
| Access is not allowed now. You can request it in the web console: … | The rule does not suit you at the moment, but you can request access. The address of the requests page follows the colon. | Open the address and submit a request. |
| Access is not allowed now. You can request it in the web console under My access, Access requests. | The same, without an address. | In the console open My access, then the requests. |
| … is not reached over SSH. Use its own connection in BURSUcm. | An RDP or database server cannot be opened over SSH. | Use My access or BURSUcm. |
| This server is reached with a VNC viewer. Use «Connect» in the console or BURSUcm. | A VNC server cannot be opened over SSH. | Click Connect in the console. |
| This server is reached over Telnet: only an interactive session is possible, not a single command. | A single command cannot be run over Telnet. | Connect interactively. |
| This server needs a terminal. Connect without -T (or with -t). | A terminal is needed. | Remove -T or add -t. |
| Commands on this server are checked and need a terminal. Connect with ssh -t. | Command control is on for this server and a terminal is mandatory. | Add -t. |
| Command not allowed by policy …. | The command is forbidden by a command-control policy. | Contact the administrator (Command control). |
| The gateway could not find out which command policies apply to you, so the session is refused. Try again, or contact the administrator. | The gateway could not determine the command policies. | Try again later. |
| Your access rule allows file transfer only, not a terminal or commands on this server. | The rule does not allow a terminal. | Use sftp or scp. |
| The command is not valid UTF-8 text. | The command contains invalid characters. | Check the encoding. |
SSH terminal: messages during a session
| Message | What it means | What to do |
|---|---|---|
| This session goes through BURSU PAM and is recorded. | The default title. | Nothing is needed. |
| The session was ended by …. | The session was ended by an administrator or a policy. | Contact the administrator. |
| Your access to this server has ended. The session is closed. | The right has ended. | Request a new one. |
| The session was closed after … minutes without input. | There has been no input for too long. | Connect again. |
| The session cannot be recorded and is closed. Contact the administrator. | Recording is impossible. | Tell the administrator. |
| Your access rule no longer allows a terminal on this server. The session is closed. | The rule has changed: a terminal is forbidden. | Contact the administrator. |
| Your granted access ends in … minutes. File an extension request if you need more time. | The access issued to you will end soon. | Submit an extension request. |
| Your granted access has ended. The session is closed. | The access period has run out. | Submit a new request. |
| Your granted access was revoked by …. The session is closed. | The access was revoked by the named person. | Contact them or the administrator. |
| Emergency access: this use is recorded, the responsible people have been told, and it will be reviewed. | You signed in through emergency access. | Work only on the matter in hand (Emergency access). |
| Signing in to … as … (profile …)… | The gateway is signing in to the Telnet server with your account. | Wait. |
| … is reached over Telnet: the connection between the gateway and the server is not encrypted. | A Telnet warning. | Do not enter secrets there if that is not permitted. |
| The server did not show a login prompt the gateway recognises (profile …). Contact the administrator. | The login prompt was not recognised. | Tell the administrator. |
| The server refused the stored login. Contact the administrator. | The server rejected the stored login. | Tell the administrator. |
| The server closed the connection during the login. | The server broke off the login. | Try again. If it keeps happening, tell the administrator. |
| The server sent too much text before the login finished. Contact the administrator. | Too much output before the login. | Tell the administrator. |
| The server asks for the account's password to be changed. Contact the administrator. | The server demands that the account's password be changed. | Tell the administrator. |
| The login on the server did not finish in time. Contact the administrator. | The login did not finish in time. | Tell the administrator. |
| The server refused the stored privileged-mode password; you are signed in at user level. | Privileged mode did not switch on. | Work at user level or tell the administrator. |
| The server broke the Telnet protocol; the session ends. | A violation of the Telnet protocol. | Tell the administrator. |
| The gateway could not use the stored login secret. Contact the administrator. | The stored secret could not be applied. | Tell the administrator. |
SSH terminal: command control
| Message | What it means | What to do |
|---|---|---|
| Command not run: policy … does not allow it. | The command was not run: a policy forbids it. | Contact the administrator. |
| The session was ended by policy …. | A policy ended the session. | The same. |
| The command was cancelled, but the gateway could not confirm that it did not run (policy …). Check what it did. | The command was cancelled, but the gateway is not sure it did not run. | Check the result on the server. |
| The session was ended: a command was cancelled but the gateway could not confirm that it did not run (policy ….). | The same, and the session was ended. | Check the result. |
| This command needs approval from a second person. Waiting up to … s. Ctrl-C to withdraw. | The command is waiting for confirmation. | Wait or press Ctrl+C. |
| A second person allowed the command; it runs now. | The command was confirmed. | Nothing is needed. |
| A second person refused the command; it was not run (policy ….). | The person confirming refused. | Discuss it with them. |
| No second person answered in time, so the command was not run (policy ….). | Nobody answered in time. | Repeat the command. |
| Withdrawn. The command was not run. | You withdrew the command. | Nothing is needed. |
| No second person is available to confirm this command, so it was not run. | No one is available to confirm. | Contact the administrator. |
| The confirmation was cancelled, so the command was not run (policy ….). | The confirmation was cancelled. | Try again. |
| The held line changed while it waited, so it was not run. | The line changed while it was waiting. | Enter it again. |
| Too many commands are waiting for confirmation on this gateway; this one was not run. Try again shortly. | Too many commands are waiting for confirmation. | Try again later. |
| Confirmation is not available right now (the gateway cannot reach its database), so the command was not run. | Confirmation is unavailable. | Try again later. |
| Command control cannot stop commands in this shell (fish, or inside tmux or screen): they are recorded and reported only. | In this shell commands are not stopped, only recorded. | Nothing is needed. |
| On this device a command being edited cannot be stopped yet: command lines are recorded and reported only. | Blocking is not possible on this device. | Nothing is needed. |
| The keys were rebound in this session. The gateway can no longer promise to stop a command here; this is recorded. | The keys were remapped, so protection is reduced. | Do not remap keys. |
| The session was ended: the keys were rebound, so policy … can no longer be applied. | The session was closed because the keys were remapped. | Connect again. |
| Too many lines at once: a script is not typed. Nothing was sent. | Too many lines were pasted. | Paste in parts. |
| Too many lines could not be read, so commands are refused for the rest of this session (policy ….). | The gateway could not parse many lines, so commands are forbidden. | Connect again. |
| This line cannot be shown safely to the person who would confirm it, so it was not run. | The line cannot be shown safely to the person confirming. | Simplify the command. |
| Command control now applies to this server and needs a terminal, so the session is closed. | Command control has been switched on for the server. | Connect with -t. |
SFTP and SCP
| Message | What it means | What to do |
|---|---|---|
| File transfer to this server is not allowed by your access rule. | The rule does not allow file transfer. | Request access. |
| Uploading files to this server is not allowed by your access rule. | Uploading is forbidden. | The same. |
| Downloading files from this server is not allowed by your access rule. | Downloading is forbidden. | The same. |
| Changing files on this server is not allowed by your access rule. | Changing files is forbidden. | The same. |
| The gateway refused a malformed or unsupported request. | The client sent a malformed request. | Use another client or update this one. |
| Copying on the server is not available through the gateway. Download the file and upload it instead. | Copying within the server is not available. | Download and upload. |
| This operation is not supported through the gateway. | The SFTP extension is not supported. | Choose another operation. |
| The gateway stopped this transfer: your access changed. | Your right has changed. | Check My access. |
| Too many files are open in this session. Close some and try again. | Too many open files. | Close some. |
| This file is larger than the gateway allows (… MB). | The file is larger than allowed. | Transfer it in parts or contact the administrator. |
| This session has moved as much data as the gateway allows (… MB). | The session limit is used up. | Start a new session. |
| The gateway ended the file session: the client or the server broke the SFTP protocol. | A violation of the SFTP protocol. | Try again. If it keeps happening, tell the administrator. |
| The server printed text before the file transfer started (a login script?), so the gateway cannot start SFTP. Contact the administrator. | The server prints text at login. | Tell the administrator. |
| The server speaks an SFTP version the gateway does not support. Contact the administrator. | The server's SFTP version is not supported. | Tell the administrator. |
| Your access to this server has ended. The file session is closed. | The right has ended. | Request a new one. |
| The file session was ended by …. | The session was ended. | Contact the administrator. |
| The file session was closed after … minutes without activity. | Idle time. | Connect again. |
| The file session cannot be logged and is closed. Contact the administrator. | Writing the log is impossible. | Tell the administrator. |
| File transfer is not available for Telnet servers. | Telnet does not support files. | Use another server. |
| This copy direction is not allowed by your access rule. | The direction is forbidden. | Request access. |
| The gateway accepts only plain scp commands. Quote the whole path and leave out shell symbols. | The path contains shell symbols. | Put the path in quotes and remove the symbols. |
| File transfer tools like rsync or a hand-started sftp-server are not allowed through the gateway. Use sftp or scp. | rsync and a hand-started sftp-server are forbidden. | Use sftp or scp. |
RDP
| Message | What it means | What to do |
|---|---|---|
| The file is not signed yet, so Remote Desktop warns that the publisher is unknown. Tick only the devices your rule allows; the gateway blocks the rest. | The file is not signed, so Windows warns about the publisher. | Accept if your organisation allows it. The administrator sets up the signature. |
| The file offers only the devices and drives your rule allows. Ticking more in Remote Desktop changes nothing: the gateway blocks them. | Extra devices are blocked. | Nothing is needed. |
| This connection has expired or does not exist. | The reservation has expired. | Click Connect again. |
| The code for this connection has already been shown. If it did not work, start again. | The code has already been shown. | Click Start again. |
If the gateway refused the RDP connection itself, mstsc shows only its own general text, for example “wrong credentials”. The gateway does not pass the reason on to the RDP client. The reason is recorded in the audit log. More: Refusals.
VNC
| Message | What it means | What to do |
|---|---|---|
| This gateway needs a viewer that speaks RFB 3.8 with VeNCrypt. | The viewer does not support the required protocol. | Use TigerVNC. |
| Use VeNCrypt X509Plain (TigerVNC: -SecurityTypes=X509Plain). | The viewer did not offer the required sign-in method. | Add the option -SecurityTypes=X509Plain. |
| This gateway accepts only a one-time code from the console or from BURSUcm. | The user name is wrong. | The name is bursu-ticket, the password is the ticket from the page. |
| Sign-in refused. | The ticket was not accepted: it has expired, been used, been taken from another address, or there were too many attempts. | Get a new ticket on the computer where you run the viewer. |
| The gateway cannot take another VNC session now. Try again later. | The limit of VNC sessions has been reached. | Try again later. |
| The server cannot be reached from the gateway. | The gateway cannot reach the server. | Tell the administrator. |
| The server's certificate is not the confirmed one. Contact the administrator. | The server's certificate is not the one that was confirmed. | Tell the administrator. |
| The server no longer offers the sign-in the administrator configured. Contact the administrator. | The server has changed its sign-in method. | Tell the administrator. |
| The server refused the stored login. Contact the administrator. | The server rejected the stored login. | Tell the administrator. |
| The gateway's licence does not allow new sessions now. Contact the administrator. | The licence does not allow new sessions. | Tell the administrator. |
| The session was closed: the viewer or the server broke the VNC protocol. | A violation of the VNC protocol. | Try again and tell the administrator. |
| The viewer changed its colour depth mid-session; set a fixed colour level in the viewer (for TigerVNC: turn off AutoSelect / use full colour). | The colour depth was changed during the session. | Set a fixed colour level. |
| Your access has ended. | The right has ended. | Request a new one. |
| The session was ended by an administrator. | An administrator ended the session. | Contact them. |
| The session was closed after a period without input. | Idle time. | Connect again. |
| The session reached its time limit. | The duration limit. | Connect again. |
| The session was closed because it could not be recorded. | Recording is impossible. | Tell the administrator. |
| (view only) | A tag in the window title: the session is view only. | Nothing is needed. |
Databases (in the client program)
| Message | What it means | What to do |
|---|---|---|
| Login failed. Get a new pass in the console or BURSUcm. | The pass is wrong, has expired, was used from another address, or the user name is wrong. | Get a new pass and check the name. |
| The gateway accepts only encrypted connections. | The client connects without TLS. | Turn on encryption. |
| Your client must support SCRAM-SHA-256 or caching_sha2_password. | The client cannot do the required sign-in. | Update the client. |
| Your client must use channel binding. | Channel binding is required. | Turn on channel_binding=require or update the client. |
| Only SQL Server authentication with a gateway pass is accepted. | Only SQL Server sign-in with a pass is allowed. | Choose SQL Server Authentication. |
| This gateway requires Encrypt=Strict. | Strict encryption is required. | Choose Encryption: Strict. |
| Not allowed through the gateway. | The command or function is forbidden by the rule. | Contact the administrator. |
| Replication is not allowed through the gateway. | Replication is forbidden. | Do not use it. |
| Loading local files is not allowed by your access rule. | Loading local files is forbidden. | Do not use --local-infile. |
| The statement is larger than the gateway allows. | The query is too large. | Split it up. |
| This protocol version is not supported. | The protocol version is not supported. | Update the client. |
| The server's certificate is not confirmed. Ask the administrator. | The server's certificate is not confirmed. | Tell the administrator. |
| The server does not offer encryption. | The server does not support encryption. | Tell the administrator. |
| The server asks for a weak sign-in the gateway is not allowed to use. | The server demands a weak sign-in, and the gateway is not allowed to use it. | Tell the administrator. |
| The gateway could not sign in to the server. | The gateway could not sign in to the server. | Tell the administrator. |
| The server is too old for the gateway. | The server version is not supported. | Tell the administrator. |
| The server tried to redirect the connection; the gateway does not follow redirects. | The server tried to redirect the connection. | Tell the administrator. |
| The gateway could not reach the server. | The server is unreachable from the gateway. | Tell the administrator. |
| Your access ended. | The right has ended. | Request a new one. |
| Your pass was revoked. | The pass was revoked. | Get a new one. |
| Closed after inactivity. | The connection was closed because of inactivity. | Connect again. |
| A gateway limit ended the session. | A gateway limit was reached. | Connect again; if it keeps happening, tell the administrator. |
| An administrator ended this session. | An administrator ended the session. | Contact them. |
| The gateway cannot record; the session is closed. | Recording is impossible. | Tell the administrator. |
Frequently asked questions
Does the gateway need the internet?
No. The internet is needed only for one-click licensing and the background check with bursucm.com, and even those are optional: the same can be done without a network, with a request code that you carry to the portal from any computer (“The 7-day trial licence”, “The paid licence”). If the gateway reaches the internet through a proxy, enter it on Settings → Licence.
Which system can the gateway be installed on?
In version 1.0.0, only Ubuntu 24.04 LTS, amd64, as a .deb package (“The gateway server”). There are no other packages or images in this release.
Do users have to know the servers' passwords?
No — that is the point of the gateway. The gateway stores the passwords and keys of the accounts (encrypted with the master key) and supplies them itself when connecting. The user signs in to the gateway with their own login; what is available to them is decided by the access rules (“Access rules”).
What if the gateway is unavailable?
While the gateway is down, nobody can connect through it. By the network rules the target servers accept connections only from the gateway (“Target servers”), so decide in advance on an emergency route that bypasses the gateway: for example, the hypervisor console or a separate account kept in a safe. In sealed mode the gateway waits after every restart for the passphrase on /unseal — keep at least two people at hand who know it.
Are sessions cut off by a restart or an upgrade?
Yes. Restarting the service and upgrading the package close all running sessions. Plan them for a maintenance window (“Upgrading”). After Ubuntu updates, the needrestart utility does not restart the gateway by itself (“Ubuntu updates and restarts”).
How many administrators are needed?
At least two. If an administrator has lost the phone with the authenticator app, they sign in with one of the recovery codes; without them another administrator resets their two-factor sign-in: the user card → Reset MFA (“Users”). The console has no way to restore the sign-in of a sole administrator who has lost both the phone and the codes.
What must be saved to restore the gateway?
Three things: a copy of the database, the directory /var/lib/bursu-pam (it holds the master key and the recordings) and the recovery key. Without the data directory or the recovery key, the database copy is useless — the passwords and recordings in it cannot be decrypted (“Backup and restore”).
How do I move the gateway to another server?
Make a copy (the database and /var/lib/bursu-pam), install the same package on the new server, restore both parts, start the service and move the licence to the new host (“Backup and restore”, “Moving to another server”). After the host changes you have at least 14 days to move the licence (how many have been used is shown on Settings → Licence in the This host field); throughout that time the gateway works in full.
How much space do the recordings take?
It depends on the number and length of sessions: text sessions (SSH, Telnet, databases) take little, graphical ones (RDP, VNC) noticeably more. bursu-pam-check warns if less than 5 GiB is free in /var/lib/bursu-pam. Recordings can be kept on a separate disk (“Recordings on another disk”); how long they are kept is set in the session settings (“Settings: sessions”).
Can typed passwords end up in the PostgreSQL log?
They can, if the PostgreSQL slow-query log is on. The gateway stores the typed text of sessions for searching the archive (for RDP, if Index typed text for search is on), and by default PostgreSQL writes the parameters of slow queries to its log. For the gateway's database set log_parameter_max_length = 0 or do not turn on log_min_duration_statement.
The browser warns about the certificate. Is that normal?
Straight after installation, yes: the gateway creates a self-signed certificate for two years itself. For real use install a certificate from your own certification authority (“Your own certificate”). A self-signed certificate does not renew itself.
Why is accurate time on the gateway so important?
The two-factor codes, Kerberos sign-in, the order of entries in the audit log and the licence terms all depend on time. If the gateway finds that it cannot trust its own time (for example, the database was restored from an old copy), it stops new sessions until it receives a support licence (“The gateway does not trust its own time”). Keep time synchronisation on.
What counts as an “active server” in the licence limit?
A server in the Servers catalogue that is switched on. Switched-off servers do not count towards the limit — you can keep as many of them in the catalogue as you like. If more are switched on than the licence allows, sessions go only to the servers within the limit, and after the grace period changes are forbidden (“When the licence ends: what stops and what keeps working”).
Glossary
| Term | What it is |
|---|---|
| Ask a second person (confirmation by a second person) | An action of a policy entry: the line is held until another person with the Approver role allows it. A wait without an answer counts as a refusal. |
| Bind DN | The distinguished name of the service account under which the gateway reads the directory. |
| bursu-pam-check | The server check command: kernel, database, permissions, ports, time, space. It only reads. |
| bursu-pam-configure | A wizard in the terminal: which front ends to switch on and on which ports. It runs at the first installation and by hand. |
| CEF, LEEF, JSON | Three log message formats for a SIEM: CEF (ArcSight), LEEF 2.0 (QRadar) and JSON. |
| ControlMaster | An OpenSSH shared channel for several commands. It does not work through the gateway: one session per connection. |
| Deny-list / Allow-list | Policy modes. Deny-list: everything that is not forbidden is run. Allow-list: everything that is not listed as allowed is refused. |
| Encrypt=Strict (TDS 8.0) | SQL Server strict encryption. On by default. |
| gateway.json | The file /etc/bursu-pam/gateway.json: the database, the addresses and ports of the front ends, the certificate, the directories. Everything else is set in the console. |
| Kerberos / SPN / keytab | The protocol for passwordless sign-in in a Windows domain; the service name HTTP/full-gateway-name; the file with the service keys (the gateway needs it on Linux). |
| kvno | The version number of a Kerberos key. It must be the same for the account and for the keytab. |
| LDAPNOINIT | An environment variable set to =1 by the gateway's systemd unit on Linux; without it the gateway does not connect to directories. |
| LDAPS | LDAP over TLS (port 636). The only way the gateway talks to a directory. |
| My access | The console page (/access) with the list of servers and accounts you are allowed to use right now. From it you get the one-time RDP file, the VNC ticket and the database pass. |
| NLA (CredSSP) | Network Level Authentication in RDP. The gateway accepts only this. |
| NTLM | An old Windows authentication method. The gateway connects to RDP servers only this way, so the permission is switched on separately for each server, with a confirmation and a “weak protection” mark. |
| PAM (Privileged Access Management) | Management of privileged access: administrators reach servers not directly but through a gateway that checks the right, supplies the password itself and records the session. |
| PAM Gateway (BURSUcm mode) | The fourth way of storing data in BURSU Connection Manager. The server catalogue is taken from the gateway and is read-only, and all sessions go through the gateway. |
| SIEM | An external system for collecting and analysing security events, to which the gateway sends a copy of the log. |
| STARTTLS | A way to switch on encryption on a mail connection that is already open. If the server does not offer it, the gateway sends nothing. |
| Syslog | The standard protocol for transferring log messages; the gateway uses RFC 5424. |
| TigerVNC | The only VNC viewer the gateway works with (VeNCrypt X509Plain). |
| TOFU | “Trust on first use”: the administrator checks the fingerprint once on the server itself and confirms it, after which the gateway trusts only that one. RDP, VNC and database certificates work the same way. |
| TOTP | A one-time six-digit code from the authenticator app on a phone, renewed every 30 seconds. |
| VeNCrypt X509Plain | A VNC sign-in method: TLS encryption plus a user name and password (here the password is the ticket). |
| Emergency access (break-glass) | Access without approval for specially marked people: with a fresh authenticator code and a reason. It alerts the responsible people at once and is subject to review. |
| Emergency local administrator | A local administrator account created during the initial setup. It can always sign in, even if the directory is unavailable. |
| Automatic approval | A rule mode in which access is granted at the moment of the request, and the reason is still recorded. |
| Active server | A server that is switched on and can be connected to. An RDP server, a VNC server with TLS and a database are created switched off until the certificate is confirmed. |
| Auditor | A role that can only read the log, the recordings and the reports; it can end sessions and review emergency access. |
| Banner | The text a person sees at the start of every SSH session (by default, the notice about recording). |
| Lockout | A temporary block on signing in after several failures in a row. The number of attempts and the duration are set in Sign-in and MFA. |
| Picture memory budget | The renderMemoryBudgetMb setting in gateway.json: how much memory the gateway gives to assembling the pictures of recordings. One person takes no more than half. |
| Webhook | Passing an event to an https address as JSON with an HMAC-SHA256 signature, so that the receiver can be sure the message was sent by the gateway. |
| Verdict | The outcome of a review of emergency access: Justified, Not justified or Needs follow-up. |
| Watermark | A diagonal inscription “login (Name)” on all console pages, switched on by the Watermark setting. |
| Watermark | A diagonal inscription with the login and name over the console. |
| Temporary password | A password set by an administrator: the person must change it at the first sign-in. |
| Front end | A gateway port for one protocol: SSH (2222), RDP (3389), VNC (5900), PostgreSQL, MySQL, SQL Server. It is switched on in gateway.json. |
| Grant | A permission the gateway records when a request is approved or on emergency access. It cannot be changed: it ends on schedule or is revoked. |
| Chain head | The number and hash of the last log event. It is compared with the copy in the SIEM to notice the deletion of the tail. |
| Pattern group | A named set of patterns: command words or regular expressions. It is used in policy entries. |
| “At least once” delivery | An event may reach the SIEM twice, but none is missed. Duplicates are filtered out by the event number and hash. |
| Live view | Watching a running session. For RDP and VNC the live picture is not verified and is not evidence. |
| Audit log | The list of all significant gateway events. Each event holds the hash of the previous one, so the log works as a chain. |
| Root pinning | The administrator confirms one root certificate; the gateway accepts only directory servers whose certificate is under that root. |
| Certificate pinning | BURSUcm remembers the gateway's certificate when you first trust it, for the pair “address and port”. If the certificate changes, the connection is refused until you click Forget the gateway's certificate. |
| Certificate pin | The confirmed fingerprint of the certificate of an RDP, VNC or database server. When the address, port or protocol changes, the pin is reset and the server is switched off. |
| Sealed mode | A master key mode with a passphrase of at least 12 characters. After every start of the service the administrator enters the passphrase on /unseal; until then the gateway does not work. |
| Sealing | Closing a part of a recording: after it the part cannot be added to, and its checksum goes into the manifest. |
| Recording cut off by a crash | A recording that the gateway closed on a stop or a failure. What was recorded is signed, but the end may be missing. |
| Access request | A person's request for access to a “server — account” pair for a limited time. The approvers make the decision. |
| OS-protected | A master key mode in which the gateway opens the key itself when the service starts. Recommended. |
| Gateway user name | For SSH and databases: login:server or login:server:account. For RDP: bursu-<id> (the long string from the .rdp file). For VNC and the BURSUcm SSH sign-in: bursu-ticket. |
| Event outcome | Success — success; Failure — failure; Refused — refused by the rules or by a check. |
| Directory | A connected Active Directory or LDAP server from which the gateway takes users and their groups. |
| Quorum | The number of approvals from different people that a rule requires (1 to 5). The author of the request does not count. |
| Gateway SSH key | The gateway's own host key, which people's SSH clients see. Not to be confused with the keys of the target servers. |
| Activation key | The code BPK- and 20 characters from the purchase email. It is exchanged for a licence on the bursucm.com portal. |
| Recovery key | The string issued when the key is created or changed. It is needed to change the mode. Shown once. |
| Recovery key | Shown once in the /setup wizard. It restores the master key if the key file is lost or the passphrase is forgotten. Kept offline, not on the gateway. |
| Host key | The public key with which an SSH server proves that it is the real one. The gateway remembers its fingerprint (SHA256) when it is confirmed and refuses if the key changes. |
| Encryption key | The gateway's main key, with which the passwords and keys of the servers' accounts are encrypted. |
| Request code | The text that a gateway without internet shows, to be carried to the portal from another computer; the portal's answer is the licence file. |
| Setup code | A one-time 12-character code (of the form XXXX-XXXX-XXXX) in /var/lib/bursu-pam/setup-code. It is needed once — to open the /setup wizard. |
| Recovery codes | Ten one-time codes that replace the app code if the phone is lost. Shown once. |
| Bell (Alerts) | An icon in the top bar with the list of current problems and tasks. |
| Command control | A safeguard and a log: the gateway reads the lines that are typed and, by policy, allows them, marks them, holds them until confirmed, refuses them or closes the session. Not a security boundary. |
| Checkpoint | The event Audit chain checkpoint signed: after a successful nightly check the gateway signs the number of the last verified event. It is not written if the chain is broken. |
| File copy | An encrypted copy of a transferred file next to the session recording. Kept no longer than the recordings. |
| Delivery cursor | The number of the last event whose receipt the SIEM receiver has confirmed. Sending continues from it after a failure. |
| Licence limit | The largest number of simultaneously active servers that the licence allows. |
| Licence (.bpl) | A file signed by BURSUsofts: the term, the number of active servers, the grace days. It is installed on Settings → Licence. |
| Grace period | The days after a paid licence ends when the gateway still works in full and shows a warning. A trial licence has no grace period. |
| Manifest | The signed description of a session recording: the list of its parts with sizes and checksums. |
| Master key | The key with which the gateway encrypts the passwords of target systems, keys and session recordings. Kept in /var/lib/bursu-pam/keys. |
| Soft stop | What the gateway does without a valid licence: new sessions and changes are forbidden, while sign-in, logs, switching off surplus servers and ending sessions keep working. |
| Unreadable line | A line the gateway could not read reliably from the screen: a full-screen program, input without echo, a cleared screen. |
| One-time ticket | A short secret that replaces the password when connecting. It lives 60 seconds and works once. For RDP it is the “code”, for VNC and the BURSUcm SSH sign-in it is the ticket. It does not get into the log or into the page address. |
| Key frames (index) | Saved frames of an RDP recording from which playback can start quickly. Without the index, seeking is slower. |
| Weakening change | A change that reduces protection. The console requires a tick and a fresh confirmation of identity; a record of this goes into the audit. |
| Revoke | Ending a granted access early. Open sessions on it are closed at once. |
| Fingerprint | A short check string of a key or certificate for comparing by eye. Compare it with what the server itself shows. |
| Fingerprint (SHA-256, SPKI) | A short check string of a certificate or its key. It is compared with the console or with what the administrator reported. |
| Server folder | A group of servers for convenience and for granting access: a rule assigned to a folder covers all the servers in it, including nested ones. |
| Re-confirmation (re-auth) | Entering the password and the second-factor code again before a dangerous action. Valid for 10 minutes. |
| Repeated identity confirmation | Entering the password and the code once more before a dangerous action. Valid for 10 minutes. |
| Signed recording | A session recording whose manifest is signed with the gateway's key. Only such a recording is counted as evidence. |
| .rdp file signature | The electronic signature of the connection file that a person downloads in “My access”. A signed file shows the publisher and is protected from changes. |
| Confirmation by closing the connection | The receiver confirms receipt by closing its own connection after the gateway closes it; otherwise the gateway does not count the events as received. |
| Identity confirmation | Entering the password and the code again (valid for 10 minutes), required for weakening changes: Telnet, NTLM, a weak sign-in, widening the rights of a rule, relaxing settings. |
| Command control policy | A set of entries with a scope (who and where). The first matching entry decides; of several policies the strictest wins. |
| File policy | Part of an access rule: the direction of file transfer, the terminal, the clipboard, RDP devices, file copies. For several rules the rights add up. |
| “By request” rule | A rule that allows nothing by itself but defines who may ask for what, for how long and from whom. Created by an administrator. |
| Access rule | Who (people and groups), where to (servers and folders), under which accounts, when and what may be transferred. Access is not given without a rule. |
| Privileged mode | For a network device: after signing in, the gateway enters the elevation (enable) password itself. It works only with the built-in profiles; the password is kept as a secret. |
| Channel binding | Protection of a Windows sign-in against forwarding the ticket to a third party. Set in Sign-in and MFA. |
| Channel binding | Protection of a PostgreSQL SCRAM sign-in against impersonation of the gateway. The client must support it. |
| Trial | 7 days, up to 25 servers, with no grace period and no warning of the end; once per installation. |
| Usage review | A mandatory review of every use of emergency access by a person with the Approver or Auditor role who did not use that access. It ends with a verdict and a note. |
| Extend | A new request that starts when the current access ends and is handled like any other. |
| Pass | A one-time password that a person gets in “My access” and enters as the database password in their client. Its lifetime and the number of connections are set in the database settings. |
| Device profile | A description of how the gateway signs in to a Telnet device: which lines to wait for and what to type (name, password). There are built-in profiles (read-only) and your own. |
| Session worker | A separate isolated process that the gateway starts for each RDP or VNC session and for rendering a recording; limited in memory, processes and processor time. |
| Unseal | Opening the master key on the /unseal page — with the passphrase or the recovery key. |
| Emergency access review | A check of the use by an approver or an auditor (not the user themselves) with the verdict Justified, Not justified or Needs follow-up and a mandatory note. |
| Protected by the OS / Sealed mode | The key is protected by the OS and opens by itself; or it is encrypted with a passphrase that is entered after every start. |
| RDP reservation | A record the gateway creates when you click Connect on an RDP server. It lives 10 minutes: within that time you must open the .rdp file. |
| Role (Administrator, Auditor, Approver, User) | A set of a person's rights in the console. Administrator manages users, resources, rules and settings; Auditor reads the logs and the overview; Approver decides on access requests; User connects to servers according to the rules. A person may have several roles, except the pair Administrator and Approver, which are incompatible. |
| Fresh code | Six authenticator digits that you have not entered before. Needed when you get a pass and a VNC ticket. The code you have just signed in with is not accepted a second time. A recovery code does not work here. |
| Reconciliation | Periodically reading the directory's people again, at least once every 15 minutes, for groups whose changes do not arrive by notification. |
| “Write-only” secret | A password, key or privileged-mode password that can be set or replaced but cannot be read back: neither in the console nor in the log. |
| Server (target) | A computer or device to which the gateway connects a person: SSH, Telnet, RDP, VNC or a database (PostgreSQL, MySQL, SQL Server). Described on the Servers page. |
| Idle compression | Long pauses in a recording are shown and exported as one short pause; the real time is shown next to it. |
| Approver | The role of a person who decides access requests, confirms commands and reviews uses of emergency access. Incompatible with the Administrator role. |
| Group mapping | A rule “a directory group gives a role and/or a gateway group”. |
| Compound line | A line with a pipeline, a redirection or a substitution. An Allow-list accepts it only if the Allow entry has Compound lines allowed switched on. |
| Retention period | The time after which a recording is deleted by the daily clean-up. Set in Keep recordings, months. |
| Starter pack | A ready-made policy template; it is created switched off, and you must check it and switch it on. |
| View only | A live view mode in which nothing you do reaches the remote computer. |
| Exact search | A search by the exact text of a command (Exact text) or of a session line (Look up an exact line). The gateway compares a protected fingerprint; it neither stores nor shows the text itself. |
| Installation | One instance of the gateway with its own database and an installation identifier (Installation ID). The licence is issued for an installation and is tied to the machine. |
| Account | A login on the target server and its secret. The secret is stored encrypted on the gateway and is not shown to the person. The person signs in under the account without knowing its password. |
| Hash | A checksum: a short string that changes with any change in the data. An event's hash includes the hash of the previous one. |
| Target server | A server, device or DBMS to which people connect through the gateway. |
| Log chain | A sequence of events linked by hashes. Changing or deleting an event in the middle breaks the chain, and the check finds it. |
| Display time zone | The zone in which the console shows time and by which chart days and nightly checks are counted (displayTimeZone). |
| Gateway | The BURSU PAM server: the bursu-pam-gateway service through which all connections to target servers go. Only it knows the passwords of the target systems. |
| Gateway and terminal (pty) | Command control reads the terminal screen. A connection without a terminal (ssh -T) is refused while a policy is in force. |
| Video export | An MP4 file made from a signed recording, without sound. It is not stored on the gateway and requires repeated identity confirmation. |
| Emergency access | Signing in to a server without approval for urgent work. Every use is reviewed without exception. |
| Sign-in step | An intermediate step at which full access is not yet given: checking the TOTP code, changing a temporary password, setting up TOTP. Each step is limited in time. |