SOCKETWorx · Technical Note

Web Forms Firewall Requirements

To use Web Forms in SOCKETWorx, the application server must be able to open an outbound PostgreSQL connection to Azure. This note lists what the network firewall has to permit.


Applies toSOCKETWorx Web Forms
AudienceNetwork / IT administrator
DirectionOutbound only
Updated25 August 2026

What must be allowed

SourceSOCKETWorx application server
Destinationecedesignpostgre.postgres.database.azure.com
PortTCP 5432
ApplicationPostgreSQL (TLS in-band)


Web Forms stores its data in Azure Database for PostgreSQL (Central US). It is the only part of SOCKETWorx that connects to this endpoint. If this connection is blocked, every other SOCKETWorx feature continues to work normally, and only Web Forms fails.


Requirements

Each item is individually verifiable. Please confirm them by reference (REQ‑1, REQ‑2, …) so any remaining gap can be identified quickly.

REQ-1

Outbound TCP 5432 to the database endpoint

Permit outbound TCP on port 5432 from the SOCKETWorx application server to ecedesignpostgre.postgres.database.azure.com. This must be open on every firewall between the server and the internet.

Destination objectValueNotes
FQDN — preferredecedesignpostgre .postgres.database.azure.comTightest rule. Supported as an address object by Palo Alto, Fortinet and most current firewalls. Survives Azure IP changes automatically.
IP range — fallback172.173.64.0/18Use only if FQDN objects are unavailable. Covers the endpoint as of this note's date; needs periodic review (see REQ‑2 note).

Microsoft does not guarantee a static public IP for this service: the address “can change during maintenance, updates, or other operational events.” A rule pinned to a single host IP will eventually fail without warning, which is why the FQDN object is preferred.

REQ-2

Outbound DNS resolution

The endpoint is a publicly resolvable DNS name, and the application connects by name rather than by address. The application server must be able to resolve *.postgres.database.azure.com. If the fallback IP range in REQ‑1 is used instead of an FQDN object, schedule a quarterly re‑check of that range.

REQ-3

Permit the PostgreSQL application, not just the port

On firewalls with application awareness — Palo Alto App‑ID, Fortinet application control, Cisco Firepower, Zscaler and similar — the postgresql application must be explicitly permitted on this rule. Opening port 5432 alone is not sufficient: the session is allowed to establish and is then terminated by the application engine.

REQ-4

Exempt the destination from TLS/SSL inspection

Add a decryption exclusion for this destination on port 5432. PostgreSQL negotiates encryption in‑band: the session opens in plain text, the client requests TLS, and the same socket is then upgraded. This is not HTTPS on port 443, and inspection engines commonly mishandle it — the usual result is a reset in the middle of the TLS handshake.

REQ-5

No IPS or threat-prevention reset on the session

Confirm that no intrusion-prevention or threat-prevention signature is resetting traffic to this destination. Because the connection is encrypted database traffic on a non-standard TLS port, it is a common false positive.

REQ-6

TLS 1.2 or higher on the application server

The database server requires encrypted connections and its minimum accepted version is TLS 1.2. A host with TLS 1.2 disabled in Schannel, or restricted to an older protocol or a reduced cipher list, will be dropped during the handshake. The verification script below reports the host's protocol configuration.

REQ-7
Action: customer → ECE Design

Report your outbound public IP addresses

Access is also restricted at the database itself, so ECE Design must add your site's outbound (NAT) public IP addresses to the server's allow-list. Please supply all addresses the server may egress from, including any secondary or failover circuit. Allow-list changes take up to five minutes to take effect.

If these addresses are assigned dynamically by your ISP, connectivity will break each time they change. A static address, or a supplied range, avoids this.


Not required

No inbound rules. The application server always initiates the connection. Nothing needs to reach it from Azure.
Port 6432 is not used. Connection pooling (PgBouncer) is not enabled on this server, so only 5432 is needed.
No IPv6 rules. The database allow-list is IPv4 only.
No VPN or ExpressRoute. The connection runs over the public internet, encrypted end to end.


Verifying the connection

Run this on the SOCKETWorx application server. It performs the same handshake the application does and stops before authentication, so no credentials are transmitted.

# PowerShell, on the SOCKETWorx application server
$server = 'ecedesignpostgre.postgres.database.azure.com' $client = [System.Net.Sockets.TcpClient]::new($server, 5432) $stream = $client.GetStream()
# PostgreSQL SSLRequest packet
$stream.Write([byte[]](0,0,0,8,4,210,22,47), 0, 8); $stream.Flush() $reply = [byte[]]::new(1); $stream.Read($reply, 0, 1) | Out-Null "SSLRequest reply : $([char]$reply[0])   (expect S)" $ssl = [System.Net.Security.SslStream]::new($stream, $false, { $true }) $ssl.AuthenticateAsClient($server, $null, [System.Security.Authentication.SslProtocols]::None, $false) "TLS protocol     : $($ssl.SslProtocol)" $ssl.Dispose(); $client.Close()

A working connection reports SSLRequest reply : S followed by TLS protocol : Tls12 or Tls13. Anything else maps to a requirement above:

ResultMeaningSee
TLS protocol reportedFirewall path is correct.
Fails to connectPort 5432 blocked, or the destination object does not cover the endpoint.REQ-1, REQ-2
Reply is NThe host reached is not the expected database endpoint.REQ-1
Fails during handshake, every attemptApplication control, TLS inspection, or the host's TLS configuration.REQ-3, REQ-4, REQ-6
Fails during handshake, intermittentlyAn in-path device is resetting some sessions.REQ-4, REQ-5


What users see when it is blocked

In the SOCKETWorx interface, Web Forms actions fail with a message such as “Failed to add items.” The application log records the underlying cause:

Npgsql.NpgsqlException: Exception while performing SSL handshake ---> System.IO.IOException: Unable to read data from the transport connection:      An existing connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException (10054)

This signature means the connection reached the database and was then terminated as encryption began — the pattern produced by application control, TLS inspection or a TLS version mismatch (REQ‑3, REQ‑4, REQ‑6). A firewall or IPS log entry for the same timestamp will normally identify the device that closed the session, and is the fastest way to resolve it.

Because connections are pooled, the failure can look intermittent: only requests that need to open a new connection are affected, while requests reusing an established one succeed.

SOCKETWorx technical note · Web Forms network access · 25 August 2026Requirements derived from Microsoft's published guidance for Azure Database for PostgreSQL flexible server.