Introduction
Secure, reliable remote access is a requirement for modern websites, remote teams, and administrative operations. While pfSense is widely used as a robust open-source firewall/router platform, administrators frequently select additional VPN protocols for compatibility and security. One such protocol is SSTP (Secure Socket Tunneling Protocol), which encapsulates PPP traffic over TLS and is natively supported in many versions of Microsoft Windows. This guide delivers a practical, technically rich walkthrough for implementing SSTP on pfSense — covering certificate management, SSTP server configuration, firewall and NAT rules, client setup, and troubleshooting tips for production deployments.
Why choose SSTP on pfSense?
SSTP offers several operational benefits that make it attractive for site operators and enterprise users:
- TLS-based transport: SSTP runs over TLS (typically TCP port 443), improving firewall traversal and easing connectivity across restrictive networks that block other VPN protocols.
- Windows native client support: Windows includes built-in SSTP client support, reducing the need for additional software for many users.
- Integration options: Works alongside pfSense’s broader feature set (RADIUS, LDAP, captive portal integration, and detailed logging).
- Strong encryption: When coupled with properly managed certificates and cipher suites, SSTP provides secure remote access suitable for corporate environments.
Prerequisites and considerations
Before you start, ensure the environment meets these prerequisites:
- A pfSense instance with WAN public IP or DNS hostname that points to the firewall.
- pfSense version that includes the SSTP server package (or the ability to install a package that provides SSTP functionality).
- Valid TLS certificate for the SSTP endpoint — either a CA-signed certificate or a private CA with client trust configured.
- Administrative access to pfSense and to client devices (Windows, macOS with third-party client, or Linux with an SSTP client).
- Understanding of firewall rules and NAT port forwarding if pfSense is behind another device.
Step 1 — Install and enable SSTP server on pfSense
Recent pfSense distributions may not include an SSTP server by default in the core packages. Check the pfSense package manager for an SSTP server package (sometimes listed as “sstpd” or similar). Install the package and verify the service starts correctly.
After installation, the SSTP server will provide a configuration screen where you define the listening interface (typically WAN), the Listening port (default TCP 443), and maximum connections. Choose the WAN interface and use TCP port 443 to maximize compatibility, but confirm that no other service (like a web server or HAProxy) is already bound to the same port.
Step 2 — Certificate architecture and creation
Certificates are central to SSTP security. There are two common deployment patterns:
- Public CA-signed certificate: Use a certificate issued by a public CA for the SSTP server. This eliminates the need to distribute a custom CA certificate to clients and simplifies trust establishment for remote Windows clients.
- Private CA: Run a private CA on pfSense (or an internal PKI) and issue a server certificate to pfSense and client certificates to endpoints. This provides tighter control but requires pushing the CA certificate to clients.
To create certificates on pfSense:
- Navigate to System → Cert. Manager → CAs and either import a CA or create a new one for an internal PKI.
- Create a Server Certificate under Cert. Manager → Certificates. The Common Name (CN) must match the public hostname used by clients to connect (for example, vpn.example.com).
- Ensure the certificate includes appropriate key usage (Digital Signature, Key Encipherment) and extended key usage for TLS server authentication.
Step 3 — SSTP server configuration details
In the SSTP server configuration pane, set these important parameters:
- Interface: WAN (or the interface reachable by remote clients).
- Port: 443 (default) or another TCP port if 443 is occupied.
- TLS certificate: Select the server certificate created earlier.
- Authentication method: Choose local pfSense user database, RADIUS, or LDAP. For enterprise deployments, RADIUS or LDAP with MFA is recommended.
- Client IP assignment: Configure a dedicated tunnel network (for example, 10.10.100.0/24) under the SSTP server settings, separate from LAN and other networks to avoid routing conflicts.
- DNS push: Optionally push internal DNS servers and search domains to clients for split DNS.
Step 4 — User accounts and authentication
Authentication can use pfSense local users, RADIUS, or LDAP. For production use:
- RADIUS with MFA: Integrate RADIUS to centralize user management and enable multi-factor authentication (via OTP, Duo, or similar).
- LDAP/AD: Use LDAP or Active Directory for single sign-on and simplified account provisioning.
- Local users: Appropriate for small deployments or administrative access. Create users under System → User Manager and assign appropriate group memberships if needed.
Step 5 — Firewall and NAT rules
Proper firewall configuration is crucial. Steps include:
- Create a WAN firewall rule to allow TCP traffic to the SSTP port (443 by default) targeted to the pfSense WAN IP.
- If pfSense is behind another NAT device, configure port forwarding on the upstream device to forward TCP 443 to the pfSense internal IP.
- Create an allow rule on the SSTP tunnel network interface (or on the OpenVPN/SSTP internal interface) to permit desired traffic, such as access to internal subnets and DNS.
- Harden the rules by limiting source addresses or using GeoIP/blocklists if you wish to reduce exposure.
Step 6 — Routing and DNS
Decide whether you want full tunnel (all remote client traffic routed through the firewall) or split tunnel (only specific subnets routed). Configure accordingly:
- For full tunnel: push default route to clients via the SSTP server and ensure outbound NAT on the WAN translates traffic to the WAN IP.
- For split tunnel: push specific routes for internal networks and ensure clients use their local default route for public internet access.
- Push internal DNS to clients to enable resolution of private hostnames. When using full tunnel, DNS leaks are minimized, but still verify DNS configuration on client devices.
Step 7 — Windows client configuration
Windows clients are straightforward because SSTP is natively supported:
- Open Network & Internet settings → VPN → Add a VPN connection.
- For VPN provider select “Windows (built-in)”. Set the connection name, server name or address (the public hostname or IP), and VPN type to “Secure Socket Tunneling Protocol (SSTP)”.
- Choose the appropriate sign-in info type (username/password, smart card, etc.). If using certificates, configure the client to use the client certificate or ensure the server certificate is trusted.
- After creating the connection, click “Connect”. Certificate validation errors indicate issues with the server certificate CN or CA trust and must be resolved before use.
Step 8 — macOS and Linux clients
macOS does not include native SSTP support; use third-party clients like SSTP Client or use alternative protocols (OpenVPN, WireGuard) if clients cannot install third-party software. Linux users can use the sstp-client package combined with NetworkManager plugins. Ensure the client supports the certificate and authentication method you’ve deployed.
Troubleshooting common issues
Some frequent issues and their remediation:
- Connection resets or cannot connect: Verify TCP port 443 is reachable from the client using telnet or curl. Confirm the SSTP service is running on pfSense and bound to the expected interface.
- Certificate errors: Ensure the server certificate CN matches the hostname used by the client and that the certificate chain is trusted on the client. For private CAs, import the root CA into client trust stores.
- Authentication failures: Check authentication backend logs (pfSense System Logs, RADIUS server logs). For AD/LDAP, ensure binding credentials and search bases are correct.
- No traffic after connection: Verify firewall rules on the SSTP/tunnel interface allow traffic to internal networks. Also check the client’s routing table to ensure routes are pushed properly.
- Performance issues: SSTP runs over TCP and can be subject to TCP-over-TCP problems when tunneling TCP applications (e.g., web). If you encounter degraded performance, evaluate MTU/MSS settings, enable TCP MSS clamping on pfSense, or consider switching to UDP-based protocols like WireGuard for better throughput.
Security hardening and best practices
For production deployments, apply these security-focused measures:
- Use strong certificates and ciphers: Prefer modern TLS versions (TLS 1.2/1.3 when supported) and strong cipher suites. Disable legacy ciphers and weak DH parameters.
- Implement MFA: Combine SSTP with RADIUS+MFA (OTP or push-based) to significantly raise account security.
- Restrict access: Limit allowed source IPs where feasible and use firewall rules to restrict which internal resources are reachable via SSTP.
- Logging and monitoring: Enable detailed logs for SSTP connections, monitor authentication failures and unusual connection patterns, and integrate logs into a SIEM where possible.
- Periodic certificate rotation: Rotate server and client certificates before expiration and adopt automated issuance workflows for larger fleets.
Operational considerations
Consider these operational points when running SSTP for business use:
- License and compatibility: Verify client OS support and licensing for third-party clients where needed.
- High availability: For critical services, implement HA for pfSense (CARP) and ensure certificate/key replication and synchronized configuration across nodes.
- Scalability: Monitor concurrent sessions and CPU usage — TLS termination is CPU-bound; consider offloading or scaling horizontally for large user populations.
- Backup and disaster recovery: Back up pfSense configurations and certificates regularly, and store CA keys securely offline.
Conclusion
SSTP on pfSense is a practical choice for organizations that need a TLS-based VPN with strong compatibility for Windows clients and the ability to traverse restrictive networks. By following best practices for certificate management, firewall/NAT configuration, authentication integration, and operational hardening, you can deploy a secure, production-ready remote access solution. Always validate the design with real-world client testing and monitor the environment for performance and security events.
For more guides and VPN deployment best practices, visit Dedicated-IP-VPN at https://dedicated-ip-vpn.com/.