Network Ports & Firewall
Athena is designed to run inside your own network with a small, predictable set of ports. The server listens on two TCP ports — one for people (the Web UI and REST API) and one for agents — and every other network path is optional and only opens when you turn on the matching feature. This page is the single place to look when you write firewall rules.
Athena performs no telemetry, no license check-ins, and no cloud calls, so it runs indefinitely on an isolated network. Everything below is traffic inside your environment — see Air-Gapped Operation for running with the internet fully blocked.
Server listening ports#
The Athena server binds two ports directly (there is no separate reverse proxy to configure).
Both are TLS by default. Their defaults come from the Server section of
appsettings.json and can be changed there or via environment variables.
| Port | Proto | Purpose | Who connects | Setting |
|---|---|---|---|---|
8443 | TCP / HTTPS | Web console and REST API (HTTP/1.1 + HTTP/2, TLS 1.2/1.3) | Administrators' browsers and API/PowerShell clients | Server:WebPort |
8444 | TCP / HTTPS | Agent channel — gRPC over HTTP/2 with mutual TLS | Managed agents (Hermes) | Server:ApiPort |
Open inbound TCP 8443 to the server from any network where administrators work, and inbound TCP 8444 from every network segment that hosts agents. The two ports are separate on purpose: the agent port speaks only HTTP/2 and requires a valid client certificate issued by Athena's own certificate authority, so it is not a general-purpose web endpoint.
When you enrol an agent, its server URL uses the API port — for example
https://athena.example.com:8444. The browser URL uses the Web port
(https://athena.example.com:8443). Mixing the two up is the most common cause
of an agent that never appears in the console — see
Agent Enrollment.
What the agent needs open#
A managed host only needs to make one outbound connection: TCP 8444 to the server. The agent dials the server and keeps a long-lived connection open, over which the server pushes commands, deployments, scans and screen-share requests, and the agent returns results, inventory and heartbeats. That means:
- No inbound ports need to be opened on the agent for normal management.
- Agents behind NAT or a restrictive egress firewall work as long as they can reach the server's port 8444 outbound.
- A multi-homed agent makes the same outbound connection to each server it is enrolled with.
Two remote-support features can add extra paths to the agent — the RustDesk direct access port and the WebRTC screen-share relay — but both are optional and covered under remote support below.
Optional outbound paths from the server#
These connections are made by the server and only exist when you enable the matching integration. If you do not use a feature, its port stays closed and no rule is needed.
| Port | Proto | Destination | When it's used | Setting |
|---|---|---|---|---|
5432 | TCP | PostgreSQL database host | Only when Athena is configured to use PostgreSQL instead of the built-in embedded database — see PostgreSQL Database. | Database connection string |
636 | TCP | Active Directory / LDAP domain controller | Only when LDAP / AD login is enabled. Athena uses LDAPS (secure LDAP) by default. | Authentication:Ldap:Port |
514 | UDP | Syslog collector / SIEM | Only when Audit Forwarding is enabled. Transport defaults to UDP; TCP is also supported. | Audit:Syslog:Port / Transport |
443 | TCP / HTTPS | Keycloak / OIDC identity provider | Only when Keycloak SSO is enabled. Athena reaches your identity provider's HTTPS endpoint (the actual port is whatever your provider publishes). | OIDC issuer URL |
The database, directory and syslog ports above are the standard defaults for each
service, and each is configurable — for example, point Athena at a PostgreSQL host on a
non-standard port in the connection string, or set the LDAP port to 389 for a
plaintext directory (LDAPS on 636 is strongly recommended). Always base your
firewall rule on the value you actually configured.
Remote support paths#
Athena's remote-desktop features are the only case where a port may need to be reachable on the agent or on a relay host. Both are off unless you turn them on.
WebRTC screen-share and the TURN relay#
The built-in technician screen-share uses WebRTC. In many networks the browser and the agent negotiate a direct peer-to-peer media path and no fixed port is required. For firewall-deterministic connectivity you can stand up a coturn TURN relay, which listens on a single UDP port that both sides connect to:
| Port | Proto | Purpose | Setting |
|---|---|---|---|
3478 | UDP | coturn TURN relay for WebRTC media (default) | RemoteSession:Turn:Port / Transport |
When a relay is configured, both the technician's browser and the agent must be able to reach the relay host on this port. See Screen-Share Relay (TURN) for the full setup, including one-click provisioning onto a Linux agent.
RustDesk direct access#
The optional RustDesk integration can be configured for direct IP access, in which case the RustDesk client on the managed host listens for direct connections:
| Port | Proto | Purpose | Setting |
|---|---|---|---|
21118 | TCP | RustDesk direct IP access (only when Direct IP access is enabled) | Agent:RustDeskDirectAccessPort |
Direct access is off by default. Leave it off — and this port closed — unless you specifically operate RustDesk in a direct-connection topology.
Firewall checklist#
For a typical deployment, the minimum ruleset is:
- Inbound TCP 8443 to the server from administrator networks (Web console + API).
- Inbound TCP 8444 to the server from every agent network (agent channel).
Then add only the optional rules for the features you use:
- Outbound TCP 5432 server → PostgreSQL host (external database only).
- Outbound TCP 636 server → domain controller (LDAP/AD login).
- Outbound UDP 514 server → SIEM (audit forwarding).
- Outbound HTTPS server → identity provider (Keycloak SSO).
- UDP 3478 to the relay host from browsers and agents (WebRTC TURN relay).
- TCP 21118 to agents (RustDesk direct IP access only).
Every port on this page is a default. If you changed Server:WebPort,
Server:ApiPort, or any integration port, open the value you configured instead.
At startup the server logs the exact Web UI and agent/API addresses it is listening on, and
the console's health page confirms the running
configuration — use those to double-check before finalising firewall rules.