Remote desktop in air-gapped networks starts with removing every internet dependency
An operator in a disconnected enclave needs to reach servers that cannot be reached from the corporate network today. The short answer is to run Apache Guacamole inside the enclave for browser-based access to RDP, VNC and SSH hosts, and to run RustDesk's ID server (hbbs) and relay server (hbbr) internally for attended or unattended sessions on agent-based endpoints. Every container image, package, rule set and client installer arrives through a controlled, verified transfer, not through the network. Guacamole is licensed under Apache-2.0, and the RustDesk client and server are both licensed under AGPL-3.0, so the licensing review should happen before any design work starts. A connected deployment can lean on things an enclave does not have. RustDesk's default rendezvous and relay servers are a cloud dependency that disappears once you run your own hbbs and hbbr, and every client must be pointed at the internal addresses. Commercial tools often check licenses or activate software online, which will fail or need an offline workaround. Public DNS, certificate authorities reachable from the network, and vendor update servers are also gone. Each of these must be replaced by an internal equivalent, and each replacement is a design decision with an owner. Licensing is the first check that can change the platform choice. Several vendors reserve air-gapped deployment for paid editions. Mattermost lists it under Enterprise Advanced, Rocket.Chat excludes it from its free Starter plan, and Element offers a separate Sovereign edition for this use. Ask your vendor in writing whether the exact edition you plan to run is permitted to operate offline, and whether license keys can be validated without a call home. For RustDesk, confirm with the vendor whether the open-source server or RustDesk Server Pro fits your offline and audit requirements before you commit to an architecture.
Which air-gap requirements shape the build
This table maps the regulatory requirements most likely to shape an air-gapped remote desktop design to the concrete build decisions each one forces. Read the applicability column first, since several rows apply only to organizations in specific sectors, then use the consequence column to plan architecture, software intake and recording storage.
| Requirement | Applies to | Build consequence |
|---|---|---|
| NERC CIP-005-7 Interactive Remote Access through an Intermediate System | Only organizations with high or medium impact BES Cyber Systems | Route all vendor and staff sessions through an intermediate host with encryption and MFA, and build tooling to detect and disable active vendor sessions |
| NERC CIP-013-2 software integrity and authenticity | Only organizations with covered vendor and supply chain obligations under CIP-013-2 | Verify hashes and signatures of every package, image and rule set carried across the isolated boundary, and record who approved each transfer |
| HIPAA 164.312(e)(1) transmission security | Organizations holding ePHI, including covered entities and business associates | Encrypt remote sessions end to end inside the enclave, and confirm that gateway and relay traffic never leaves the protected network |
| HIPAA 164.312(b) audit controls | Organizations holding ePHI | Log session start, end, user and target host, and store those logs with the recordings so reviewers can examine activity on systems containing ePHI |
| SEC Rule 17a-4(b)(4) retention | Broker-dealers and other firms subject to this rule | If session recordings or chat-style notes are business communications, retain them for not less than three years in a format that meets the rule, and confirm with counsel whether they qualify |
| Offline update and rule intake | All air-gapped deployments | Plan a controlled import path for RustDesk, Guacamole, container images and recording player updates, with staging and rollback before anything reaches production |
| Recording storage location | All deployments that record sessions | Size local storage for retention periods set by policy, and confirm where recordings are encrypted, backed up and deleted |
| Vendor license and edition fit | All deployments needing audit log, SSO or air-gap features | Confirm in writing that the chosen RustDesk edition and any third-party software support disconnected operation before purchase |
How the enclave, the transfer zone and the admin network divide the work
In a fully disconnected enclave, Guacamole, guacd, the recording store and the identity provider all run inside the isolated network, and no path to the internet exists at any layer. Guacamole's web application is written in Java and provides the web interface and authentication layer. It speaks only the Guacamole protocol and forwards that traffic to guacd, which loads protocol plugins for RDP, VNC and SSH to reach the target machines. Because the whole stack lives inside the boundary, every package, container image, browser extension and rule set must arrive by an approved transfer process before it can be used.
- Gateway placement: Guacamole and guacd sit on hosts inside the enclave, and users reach them only from enclave networks or approved workstations.
- Identity: The directory or SSO service runs inside the enclave, so authentication never depends on an external cloud service.
- Recording store: Session recordings are written to storage inside the enclave and are retained there under the organization's own policy.
- Crossing the boundary: Only approved, verified artifacts enter, and audit logs and recordings leave only through a documented export procedure.
- Updates: Patches for the OS, containers and Guacamole components are imported as signed, verified bundles.
Confirm with your assessor whether the enclave's own controls satisfy the integrity checks you plan to apply to imported software.
This pattern keeps the gateway inside the enclave but adds a one-way import zone for media and packages. Guacamole, guacd, the recording store and the identity provider remain in the enclave, while the transfer zone accepts software, rule sets and offline vulnerability data from outside, scans them, and passes only approved items across. Data moves in one direction, so the enclave never initiates a connection outward. The design relies on the transfer zone's controls as much as on the gateway itself.
- Gateway placement: Guacamole and guacd run in the enclave, with the same connection rules as the fully disconnected pattern.
- Import path: Packages, container images and vulnerability feeds are staged in the transfer zone, checked for integrity and authenticity, then imported.
- Recording and logs: Recordings and audit logs remain in the enclave, and exports to a security team outside the boundary go through a one-way path.
- Hbbs and hbbr: If RustDesk is used, the ID and relay servers run inside the enclave and rely only on imported images and configuration.
- Verification: Hashes and signatures are checked on import, and the import log becomes part of the evidence.
Check how your transfer process records each import, since the approval trail is often the evidence an assessor asks for first.
A split design places the user-facing gateway on a controlled host in an administration network, and keeps the systems being administered in the enclave. Guacamole and guacd can sit on the administration side, reach target systems in the enclave through a narrow, approved path, and record sessions on storage in the admin network. The identity provider usually stays in the admin network so that approvals and multi-factor checks happen before any session reaches the enclave. Only session traffic and defined administration protocols cross the boundary.
- Gateway host: Guacamole and guacd run on a hardened host with access limited to the admin network and the defined target ports.
- Targets: Enclave machines accept RDP, VNC or SSH only from the gateway host, not from user workstations.
- Recording store: Recordings are written on the admin side, where retention and export policies are enforced.
- Relay placement: If RustDesk is deployed, hbbs and hbbr are placed according to whether sessions must traverse the boundary.
- Boundary rules: Each permitted flow is listed in writing with its protocol, port, source and purpose.
Confirm which flows your boundary controls allow and whether recordings must be retained on the enclave side as well.
Which platforms fit an air-gapped remote access design and why
An air-gapped remote access design needs a gateway, an ID and relay layer if you use RustDesk, identity and recording controls, and a way to bring software across the isolation boundary. The cards below cover the platforms and components that fit those roles, along with what each one does not do and what to confirm with the vendor before you commit.
Apache Guacamole as browser gateway
Guacamole is a clientless gateway released under Apache-2.0 that serves RDP, VNC and SSH sessions to any HTML5 browser, so engineers inside a disconnected network need no installed client. It can be deployed natively or with Docker and supports database authentication on MariaDB or MySQL, PostgreSQL and SQL Server, plus SSO and MFA extensions. The session recording player extension matters for evidence. Confirm that every extension you need works offline, since several authentication extensions depend on directory or identity services you must host yourself.
Self-hosted RustDesk server
The open-source RustDesk server runs two services inside your network: hbbs handles ID and rendezvous, and hbbr relays traffic when a direct connection is not possible. The rustdesk-utils command-line tools support setup tasks. The server and client are both AGPL-3.0, which carries source-availability obligations if you modify and offer them to users. Clients must be pointed at your internal servers, and you should confirm that clients can be provisioned from an offline package source and that no default public server is contacted.
RustDesk Server Pro controls
Server Pro adds 2FA, a web console, an audit log, access control, centralized settings and distributed relay servers, and the Basic tier adds OIDC single sign-on and LDAP integration. These features address the audit and identity gaps that the open-source server leaves open. Pro is a self-hosted license, not a SaaS subscription, and the pricing page says licenses do not auto-renew. Confirm with the vendor whether license validation works without outbound internet access, how license renewals are delivered to an isolated network, and how the audit log can be exported for review.
Vendor air-gap editions to verify
Element Server Suite offers a Sovereign edition for air-gapped deployments, and Plane lists an Airgapped self-hosted edition on a separate codebase with its own release cycle. Neither is a recommendation here. Their remote access fit is indirect because they serve messaging and project management, not sessions into workstations. Use them as examples of what to check in any product you consider: whether the air-gapped edition is proprietary, whether it is a separate build from the community edition, and how security patches reach it. Air-gap support is often a paid-edition feature, so ask for it in writing.
Offline patch and transfer pipeline
An isolated network still needs security updates for Guacamole, guacd, RustDesk and the operating system. Build a documented transfer process in which packages are downloaded outside, checked for integrity and authenticity, scanned, and then carried across the boundary on approved media. Security Onion supports full installs without internet access and updates from newer ISO media in airgap mode, and Wazuh publishes an offline installation guide with an offline vulnerability repository. These tools monitor the gateway and detect drift, but they do not patch software on their own. Confirm the update cadence and rollback steps with your team.
Monitoring that fits offline operation
Remote sessions into isolated systems should generate logs that stay inside the enclosure and that someone reviews. Wazuh's offline guide and Security Onion's airgap mode let you run detection locally, so alerts about failed logins, new connections or unusual session times do not depend on an external SaaS console. Check which detections need rule updates, how those rules arrive, and whether recording storage on the gateway has enough capacity and retention controls. Neither product replaces a gateway audit trail, so confirm which logs each component writes and where they are forwarded.
How the rollout moves from a build bundle to a tested enclave
The sequence takes the offline components from licensing review through a rehearsed update and a monitored cutover, so each stage produces evidence that the enclave works without internet access before production users depend on it.
Assess licensing and offline edition terms
Your procurement, legal and security leads confirm which components can be deployed without internet access and under which edition. Guacamole is Apache-2.0 and the RustDesk client and open-source server are AGPL-3.0, but air-gapped support is often a paid-edition feature elsewhere, so check the terms of every component in the stack. RustDesk Server Pro is a separate paid product, and its licensing and renewal terms should be confirmed in writing before you select it. The step closes with a signed component list that records the name, version, license and edition of each item, plus the owner who approved it.
Build and verify the offline bundle
The implementation partner assembles one bundle from the connected side: container images, operating system packages, RustDesk binaries, and Guacamole extensions such as the authentication and session recording modules you have approved. Each artifact receives a published checksum and a signature check that is recorded in a manifest, and the bundle is scanned before it crosses the boundary. Your security team reviews the manifest, since the ability to prove software integrity and authenticity of vendor code and patches is the control that governs what enters an isolated network. The step is done when the manifest verifies from a clean system and the team signs off on the contents.
Stand up Guacamole and RustDesk in a test enclave
Engineers install guacd, the Guacamole web application and a database backend in a test enclave that has no route to the internet, then deploy hbbs and hbbr for RustDesk on internal addresses. Name resolution, certificates and the client configuration all come from internal sources, so no step depends on a public service. The team confirms that the RustDesk clients reach the internal ID and relay servers and that a Guacamole session opens to a test host over RDP, VNC or SSH. The step closes when a documented test run passes from an endpoint placed on the same network segment as the intended users.
Wire identity and MFA
Engineers connect Guacamole to your directory and multi-factor method, using the authentication extensions your identity team has chosen, such as LDAP, SAML or OpenID Connect with a second factor. For RustDesk Server Pro, they confirm which login, two-factor and directory integrations the edition provides before configuring them. Test accounts cover each role, including a vendor account with a restricted scope. The step is complete when every role logs in through the intended path, a failed MFA attempt is refused, and the authentication events appear in the logs your team reviews.
Configure recording and retention
The team sets where Guacamole session recordings are written inside the enclave, how long they are kept, who may view them, and how storage is protected and backed up within the isolated network. It also confirms the audit log outputs from both Guacamole and RustDesk and forwards them to the internal log platform. Retention periods come from your compliance owner and any rules that apply to your sector, not from the vendor defaults. The step closes with a recorded test session that can be found, played back by an authorized reviewer and deleted according to the retention rule.
Rehearse an offline update
Before go-live, the team runs one complete update cycle using the same transfer procedure planned for production: a new bundle is built on the connected side, verified, carried across the boundary on approved media, imported, and applied in the test enclave. The rehearsal records each command, each checksum comparison and any rollback step, so the production runbook reflects what actually happened. Your change board reviews the record before approving the procedure. The step is done when the test enclave runs the updated components, the rollback works, and the change record is archived.
Cut over with monitoring and runbooks
The team moves production access to the enclave in a planned window, with the test-proven configuration and the approved user list. Monitoring covers service health for hbbs, hbbr and Guacamole, failed logins, session starts and recording storage capacity, with alerts routed to the team that will respond. Runbooks cover restarts, certificate renewal, emergency vendor session termination, and the offline update procedure, and the operators who will use them practice each one. The step closes when the monitoring alerts have been tested, the runbooks are accepted by the operations owner, and handover is recorded.
What auditors ask for from an offline remote access system
What session logs and audit trail do auditors expect from offline remote desktop?
Auditors expect a complete, time-stamped record of who connected, to which host, when, from where, and what they did. In a Guacamole deployment, the web application records login and connection events in its authentication database, and the session recording extension stores what happened during each session when recording is enabled. For RustDesk, the Server Pro audit log is the component that records connection activity, which is one reason the Pro edition is often considered for regulated environments. Confirm with the vendor exactly which events each component logs, where the logs are stored inside the enclave, and whether they can be forwarded to a local SIEM. Logs that sit only on the gateway that they describe are weak evidence, so plan a copy to a separate, access-controlled store. DeployOpen can prepare the logging configuration and the evidence package, but it does not issue audit reports or attestations.
What MFA enforcement records prove remote sessions required two factors?
Assessors look for configuration evidence that multi-factor authentication is enforced on every path into the enclave, plus login records showing the second factor was presented. In Guacamole, the producing components are the authentication extension in use, such as the TOTP or Duo extension, together with the database or directory that holds the login attempts. In RustDesk Server Pro, two-factor authentication is listed on the Individual plan and above, so the admin console configuration and login history are the evidence. Export the policy settings, a sample of successful and failed MFA events, and the user list showing that no account bypasses the policy. Confirm with the identity provider whether an offline fallback or recovery code process exists, because auditors will ask how those codes are issued, stored and used.
What gateway or Intermediate System configuration evidence do auditors need?
Auditors need the configuration of the gateway that sits between the vendor or operator network and the protected systems, showing that all interactive remote access passes through it. For a Guacamole deployment, this means the guacamole.properties settings, the guacd host binding, the firewall rules that allow only the gateway to reach target systems, and the network diagram that places the gateway inside the enclave boundary. For NERC CIP-005-7 scope, the Intermediate System and encryption settings are the central artifacts. Keep the configuration in version control, record the reviewed baseline date, and capture firewall exports from the offline network. DeployOpen can document the design and configure the components as part of a written scope, while the assessor decides whether the design meets the standard.
How do you prove every package imported into an isolated network was verified?
The evidence is a transfer record for each import: the package name and version, the source it came from, the hash or signature checked, the person who approved it, and the date it crossed the boundary. NERC CIP-013-2 addresses supply chain procurement and the verification of software integrity and authenticity for vendor software and patches, so this ledger is the control artifact auditors will request. Build it into the media workflow, for example a checksum file generated on the connected side, verified on the isolated side, and signed by a named approver. Offline updates for components such as Guacamole, RustDesk server binaries and container images should follow the same path. Ask any vendor for its signing keys and release verification method before the first import, and keep those documents with the ledger.
What recording retention and access records apply under 17a-4 and HIPAA?
Recording evidence has two parts: proof that recordings exist for the required period, and proof of who could view or export them. Under SEC Rule 17a-4(b)(4), broker-dealers must preserve communications relating to the business for not less than three years, so a session recording that documents a business communication may fall within that scope and the retention rule should be checked with counsel. Under the HIPAA Security Rule, 164.312(b) requires audit controls that record and examine activity in systems containing ePHI, so recordings and access logs for clinical systems are part of that evidence. Produce a retention schedule, the storage configuration of the Guacamole session recording extension, and an access log showing who played back each recording. Confirm the storage location, encryption, and immutability settings with your compliance lead before writing the schedule.
What vendor session approval and disablement records do auditors ask for?
Auditors ask for a record of each vendor session from request to closure, including who approved it, the time window granted, the systems accessed, and the proof that access was ended when it should have been. For NERC CIP-005-7, the standard calls for methods to detect and disable active vendor remote access sessions, so keep the disable action logs and the timestamps showing termination. Store approval tickets in your ITSM or change system, link each session ID to its ticket, and export the account deactivation record when a contract ends. Confirm which approval workflow your chosen platform supports natively and which must be built around it. DeployOpen can design and document this process as part of a fixed scope, but the approval decisions and the attestation remain with your organization and its auditor.
What to ask an implementation partner before an air-gapped build
Start with the offline bundle. Ask the partner to show how every container image, RustDesk binary, Guacamole package, operating system patch and vulnerability feed is collected on the connected side, how each artifact is verified against its published checksum or signature, and where the resulting manifest is stored. Ask who signs off each transfer across the boundary and whether the process is written down. For a utility or other regulated operator, this is the control NERC CIP-013-2 describes as verifying software integrity and authenticity of vendor software and patches. Ask for a sample manifest from a previous build, not a description of one.
Next, ask which features in the design depend on a paid edition or license. Air-gapped deployment is often reserved for higher tiers, so confirm in writing whether the chosen RustDesk edition, Guacamole extensions and any supporting tools can run disconnected under the license you would hold, and whether license validation needs an outbound call. RustDesk Server Pro is a self-hosted product with its own pricing and license terms, and its licenses do not auto-renew, so ask who tracks renewal dates and what happens to access if one lapses inside the enclave. Get the answer from the vendor, not only from the partner.
Then ask where session recordings land, how long they are kept, and who can read or delete them. Recording storage should sit on an internal store inside the enclave with its own access controls, and retention should follow the rules your sector applies to privileged session evidence. Ask how recordings are protected at rest, how they are exported for review without leaving the boundary, and how the audit log is kept separate from the gateway administrators it describes. Also ask how the partner rehearses an update: whether it runs on a staging enclave first, how a rollback is tested, and how an offline update is proven to match what was approved. Finally, ask for the boundary document an auditor would read, covering network diagrams, data flows, key custody and administrator accounts. Ask who holds the root keys, the Guacamole and RustDesk administrator credentials, and the break-glass account, and how each is rotated and recorded.
How much work does an air-gapped remote desktop build take?
What drives the cost of an air-gapped remote desktop build?
The cost follows the written scope, and the largest drivers are the number of protocols and target systems, the identity integration, the number of recording and audit requirements, and how many isolated zones the design touches. Costs fall into four groups: infrastructure you own (gateway hosts, relay hosts, storage for recordings), licenses if you choose a paid tier, implementation and hardening labor, and ongoing operations. Ask any quote to separate one-time work from recurring work, and to list the offline update and package-transfer process as its own line. DeployOpen does not publish a price list; a quote follows from the agreed written scope. Fixed-scope engagements are the usual format, so ask for deliverables and acceptance criteria next to each figure.
Can our internal team build an air-gapped remote desktop alone?
A team with Linux, container and network skills can build a basic air-gapped setup, but the work is heavier than it looks because every dependency must be staged in advance. Guacamole needs its web application, guacd and protocol plugins, a database and an identity extension, all installed from offline media. RustDesk needs its ID (hbbs) and relay (hbbr) services running on internal addresses, with clients distributed by an internal channel. The hard parts are repeatable offline packaging, hardening, recording retention and a tested rollback. Decide which of these your team will own after handover, and ask a partner to document the procedure so it can be repeated without the original builders.
How long does an air-gapped remote desktop project take?
Duration depends on the number of target systems, the identity source, the number of isolated networks and how quickly approvals come back. No duration is fixed by the supplied sources, so ask for a timeline in the written scope with milestones for staging the offline bundle, the test environment, production cutover and handover. Plan extra time for the approval chain that moves software into the isolated network, because that process is often the slowest step. A single-site Guacamole gateway with one identity source generally scopes smaller than a multi-zone design with recording and vendor access controls.
What do we need to provide for an air-gapped remote desktop project?
The project needs named people from several teams, and the engagement stalls without them. Expect to provide:
- Network owners who can confirm zone boundaries, addressing and firewall rules for the gateway and relay hosts
- Identity owners who can supply the directory, MFA method and group structure the gateway will use
- Approvers who define who may open sessions, for which systems and for how long
- Security and compliance contacts who set recording retention and audit log requirements
- A transfer process owner who will move signed packages and images across the isolation boundary
Agree these owners and their response times before the scope is signed.
Does RustDesk Server Pro licensing work in an offline network?
Confirm this with RustDesk before you buy, because the supplied pricing information does not state how license activation or renewal behaves without internet access. The open-source RustDesk server (hbbs and hbbr) runs without a license, so it is the first option to test in a disconnected network. The RustDesk pricing page lists Server Pro plans billed annually, for example Basic at $23.88 per month for 10 login users and 100 managed devices, and states that licenses do not auto-renew. Ask the vendor how a license is checked, whether it needs a connection to a vendor service, how renewals are applied from offline media, and what happens when a license expires. Get the answers in writing.
How are session recordings and offline updates kept current?
Recordings and updates both need a defined transfer and retention routine. Recordings are written on the isolated side, so storage capacity, retention periods and integrity checks must be sized before go-live, and the retention period should come from your records rules. The Guacamole manual covers a session recording player extension, so confirm how recordings are stored, indexed and exported. For updates, stage signed packages and container images in a controlled repository, verify their integrity before import, and test them in a non-production zone first. Ask the partner for a written update runbook with a fixed review cadence, and make sure the recording archive is included in backup and restore testing.
How DeployOpen scopes and supports air-gapped remote access
DeployOpen plans, implements, hardens, documents and supports self-hosted open-source remote access platforms inside the client's own air-gapped networks. That covers the internal RustDesk ID and relay servers, the Apache Guacamole gateway, the offline update path and the recording store, all deployed in the client's data center or isolated enclave rather than in a cloud account DeployOpen controls. Most engagements are fixed-scope. Before work starts, the parties agree in writing on which hosts, protocols, identity sources, update procedures and handover documents are in scope, and DeployOpen quotes from that written scope. The reader should expect the scope to name the network zones involved, the accounts that administer each component and who approves changes to the offline transfer process, because those decisions drive most of the effort.
Ongoing support is available as a retainer and covers the work that follows go-live in a disconnected environment: applying offline updates after they have been verified, reviewing audit logs and recordings, rotating credentials and certificates, and testing that vendor sessions can still be revoked. Ask any partner to state in writing who performs each of these tasks, how often a retainer reviews the platform, and how a support engineer gets access to an isolated network when an incident occurs. DeployOpen prepares systems, controls and evidence so that a client's internal team or an independent assessor can review the design, the configuration and the logs. DeployOpen does not issue audit reports, attestations or certifications. Those come from independent auditors and certification bodies, and the reader should confirm early which assessor will review the environment and which evidence that assessor expects.

