Guides · Access and governance
Audit, recording and alerts
MangoSSH keeps a tamper-evident log of what happens on each device, records sessions when you ask it to, can forward every log record to your SIEM, and can alert you when something looks wrong.
- Hash-chained local log
- Syslog or HTTPS forwarding
- Desktop and webhook alerts
The audit log
Open Audit Log from the Dashboard's side rail. Every device keeps its own log, per profile, on its own disk. It is written as things happen and is never cleared automatically. It never contains a password, a passphrase or a key.
The Filter menu groups the events:
| Filter | What it records |
|---|---|
| Connections | SSH connect attempts that succeeded or failed (with the error shown to you) and disconnects with the session's duration. |
| RDP/VNC/other sessions | Connects and disconnects for RDP, VNC, Telnet, Serial, kubectl and the local terminal, and external applications launched from MangoSSH. |
| SFTP transfers | Uploads and downloads with path and size, plus deletes and renames. |
| Script runs | Which script ran where, and its exit status. |
| Port forwards | Forwards opened and closed, with where they pointed. |
| Broadcast groups | A session joining or leaving a keystroke-broadcast group, so you can later tell whether its input also went to other hosts. |
| Security events | A host key that did not match, a revoked key or certificate refused, and three failed logins to the same account within a minute. |
| Server SSH log | Events read from a server's own sshd log, when you follow it. |
| Vault & sync | Personal Vault unlock, lock and password changes, and sync pushes and pulls. |
| Config changes | Hosts added, changed or deleted, host imports, and group credential changes. |
| Key deploy/revoke | SSH keys deployed to or removed from servers. |
| Secret access | A stored secret revealed on screen or copied to the clipboard. |
| Alerts only | Failed connects, the security events, server alerts, and the vault's master password being removed. |
Some entries appear only under All events, among them vault membership decisions (approved, denied, revoked, role changed), relay sessions terminated from the PAM Dashboard, share links revoked, policy deletions, and changes to audit forwarding or the host agent.
Two views are available from the icons beside the close button: cards, and a plain console you can select and copy from. Export… saves the whole log as CSV (for a spreadsheet) or JSON Lines (for a script or SIEM). Clear Log empties it; that cannot be undone, but anything already forwarded stays at the destination.
Check that nobody edited it
Each entry carries a SHA-256 hash that covers its own content and the previous entry's hash, so the entries form a chain. Click Verify Integrity to walk the chain again. It reports either that the chain is intact, or the first line where a row was inserted, removed or changed. Entries before that line still verify.
The PAM Dashboard's Audit evidence section shows the same result as a headline (Chain intact or CHAIN BROKEN), with the number of events, the date range, and Export Audit Log….
The chain proves that the log was not altered after the fact. It cannot stop someone with access to the machine from deleting the whole file. That is what forwarding is for.
Forward the log to a SIEM
Forwarding sends a copy of every record, as it is written, to a syslog server or an HTTPS collector. The local log stays the source of truth.
In Audit Log, click Forwarding and tick Forward every audit record to a SIEM.
Choose a Destination:
- Syslog (RFC 5424): enter the Server, Port (514 by default) and Transport (UDP or TCP).
- HTTPS collector (JSON): enter the Collector URL and, if your collector wants one, a Bearer token. The token is kept in the operating system's keychain.
Click Send Test Record, check it arrived, then click Save.
What the receiver gets:
| Detail | Value |
|---|---|
| Record | The exact JSON line written locally, hash included, so the receiver can verify the chain too. |
| Syslog facility | 13 (log audit), so you can route it apart from the host's own sshd messages. |
| Syslog severity | Warning for security events, notice for anything that failed, was denied or was refused, informational for the rest. |
| Syslog APP-NAME / MSGID | mangossh / the event name, such as host_key_rejected. |
| TCP framing | Octet counting (RFC 6587), so a newline inside a record cannot split it. |
| HTTPS body | A JSON array of records, up to 200 per request. |
| If it is down | Records queue and are retried with backoff. Up to 10,000 wait; beyond that they are counted as dropped, and the count is shown in the panel. |
# one syslog message (the record is shortened here)
<108>1 2026-09-29T10:15:02.114Z WORKSTATION-7 mangossh 4312 host_key_rejected - {"ts":…,"event":"host_key_rejected","host":"web01",…,"hash":"…"}
UDP and TCP syslog cross the network in clear text. Use the HTTPS collector when the path is not trusted. MangoSSH refuses a collector URL that is not https://, except for localhost.
Record sessions
Recordings are kept in Session Logs (under Tools, or in the Dashboard's side rail). They are encrypted with your Personal Vault, so the vault must be unlocked to record, list or play them.
SSH
SSH sessions are recorded as asciicast v2, the asciinema format: the full terminal output with timings. There are four ways to switch it on:
- One session: the record button on the terminal toolbar.
- One host, always: Edit → Session → Always record sessions.
- Every SSH session: Record sessions at the top of Session Logs. It is the same setting as Record every SSH session by default on the Policies page.
- By policy: the Always record the session rule, for a group, a tag or the fleet.
RDP and MangoSSH Direct
Use the record button on the session bar (Record session (screen capture)). The recording lands in Session Logs as a screen recording. Select it and click Play to open it in the Recording Player. VNC, Telnet and Serial sessions cannot be recorded.
Browse, keep and export
Session Logs lists recordings newest first, with search and a protocol filter. An SSH recording shows as readable text; a screen recording opens in the player. For each one you can add a note, Bookmark it, Export… it (.cast for SSH, .mrdprec for screen recordings) or Delete it.
Keep last sets how many recordings to keep in total; older ones are removed automatically. The default is 50. Bookmarked recordings are never removed and do not count toward the limit. Turning recording off deletes nothing; Delete All does.
All of these recordings are made by the connecting device, so the person connecting could stop one. The PAM Dashboard's Session recording section shows which of this device's open sessions are being recorded right now.
Server-enforced RDP recording
For a recording the connecting person cannot switch off, broker the RDP host through the PAM Broker and turn on Record every session brokered through this host when you provision it. The relay is the RDP client for those sessions, so it records every one on its own disk. The connecting device has no toggle and no way to tell.
- Recordings are encrypted with the relay's
RELAY_BROKER_CACHE_PASSPHRASE. Lose it and they cannot be read. - They are written under
RDP_RECORDINGS_PATH(rdp_recordingsby default; the Docker setup puts it inside the relay's volume). - Vault admins see them in the PAM Dashboard under RDP recordings. Download saves a decrypted copy, which you open in the Recording Player.
Brokered SSH sessions have no server-side recording yet.
Follow a server's sshd log
The audit log normally records what happened in MangoSSH. Following a server's sshd log adds what the server saw: every login, failed login and disconnect, including ones from other tools.
Open the SSH host with Edit → Session.
Turn on Follow server sshd log — ingest server-side SSH events into the audit log. A policy can turn it on for many hosts with Follow the server sshd log.
While you are connected, MangoSSH reads the log over the same SSH connection, with no second login. It tries journalctl for the ssh or sshd unit, then /var/log/auth.log, then /var/log/secure. Your account needs permission to read one of them; membership of the adm or systemd-journal group is usually enough. If none can be read, nothing is added and no error is shown.
Each event records the account targeted and the source IP. The Internet edition adds an approximate location for public IPs; the Secure edition leaves it out. Two rules raise a server alert:
- a successful login as
rootoradmin; - three failed logins from one IP against one account within 60 seconds.
This works with Linux and other POSIX servers only. Windows event logs are not read.
Alerts
Alerts are set up in Connection Health (in the Dashboard's side rail). Click Alerts.
Tick Send alerts. It is off by default; nothing is sent until you turn it on.
Under Send when, choose the kinds: Host goes down, Host recovers, Latency spike, Security alert and Access request waiting.
Choose where they go. Show a notification uses the desktop's notifications and only works while MangoSSH is running, so keep it in the tray. POST to a webhook sends to Slack or Teams, Discord, or any service that accepts raw JSON; paste the URL and click Set. The URL is a credential, so it is kept in the keychain and not shown again.
Set the Limit (10 per minute by default, 0 for none) so one failing switch does not become forty alerts. Click Test, then Save.
| Kind | Fires when |
|---|---|
| Security alert | A server sshd alert (above), three failed logins from MangoSSH to one account within a minute, a host key that does not match, or a revoked key or certificate being refused. |
| Access request waiting | A new JIT request needs approval. Vault admins only; checked about once a minute. |
| Host goes down, recovers, latency spike | The Connection Health monitor sees the change. |
Security events are also marked as syslog warnings when you forward the log, so your SIEM can alert on them as well.
Team-wide views
The audit log is per device. These views bring devices together:
- Team Audit (Team Vault). Each device also writes its audit entries, encrypted, to the Team Vault's shared store. Open Sync → Team Audit on the Sessions page to search every machine's events by host, machine, event and time. The Team Vault must be unlocked. See Vaults.
- Vault Dashboard (Self Hosting Vault, admins). Its History page lists approvals, denials, revocations and role changes, taken from this device's audit log.
- PAM Dashboard. Fleet sessions as the relay sees them and as devices report them, the JIT queue and grants, and every browser link issued. These come from the vault server and relay, not from one device. See PAM Broker and browser access.
Troubleshooting
| Symptom | Likely cause |
|---|---|
| “Vault is locked — unlock it in Settings first.” in Session Logs | Recordings are encrypted with Personal Vault. Unlock it. |
| CHAIN BROKEN | A line was added, removed or edited after it was written. Entries before the reported line still verify; treat the rest as unverified and compare with your forwarded copy. |
| The forwarding dropped count keeps rising | The collector has been unreachable long enough to fill the queue. Check the destination, then Send Test Record. |
| “The collector URL must start with https://” | Plain http:// is only allowed to localhost. |
| Following the sshd log adds nothing | Your account cannot read the journal or the auth log, the server is not POSIX, or its log is somewhere else. |
| No desktop notifications | Send alerts is off, the kind is not ticked, MangoSSH is not running, or the per-minute limit was reached. |
| RDP recordings says no relay is configured | Set Settings → Relay Server on this device. |