Overview
FreeTAKServer implements multiple layers of security:- SSL/TLS Encryption: Secure communications using X.509 certificates
- Client Certificate Authentication: Mutual TLS authentication for TAK clients
- Token-Based Authentication: Bearer tokens for REST API access
- Certificate Revocation: Certificate Revocation List (CRL) support
- User Management: System and API user authentication
SSL/TLS Configuration
SSL/TLS encryption is essential for protecting tactical data in production deployments.Certificate Paths
Root directory for all certificates and keysEnvironment variable:
FTS_CERTS_PATHYAML: Filesystem.FTS_CERTS_PATHServer Certificate
Path to server private key (PEM format)Environment variable:
FTS_SERVER_KEYDIRYAML: Certs.FTS_SERVER_KEYDIRPath to server certificate (PEM format)Environment variable:
FTS_SERVER_PEMDIRYAML: Certs.FTS_SERVER_PEMDIRPath to unencrypted server key (used internally by services)Environment variable:
FTS_UNENCRYPTED_KEYDIRYAML: Certs.FTS_UNENCRYPTED_KEYDIRPath to PKCS#12 format certificate bundle (includes private key and certificate)Environment variable:
FTS_SERVER_P12DIRYAML: Certs.FTS_SERVER_P12DIRCertificate Authority (CA)
Path to Certificate Authority certificateEnvironment variable:
FTS_CADIRYAML: Certs.FTS_CADIRPath to Certificate Authority private key (for signing client certificates)Environment variable:
FTS_CAKEYDIRYAML: Certs.FTS_CAKEYDIRTest Client Certificates
Path to test client certificateEnvironment variable:
FTS_TESTCLIENT_PEMDIRYAML: Certs.FTS_TESTCLIENT_PEMDIRPath to test client private keyEnvironment variable:
FTS_TESTCLIENT_KEYDIRYAML: Certs.FTS_TESTCLIENT_KEYDIRClient Certificate Password
Password used when generating client certificate packages (P12 files)Environment variable:
FTS_CLIENT_CERT_PASSWORDYAML: Certs.FTS_CLIENT_CERT_PASSWORDClient Certificate Packages
Directory for storing generated client certificate packagesEnvironment variable:
FTS_CLIENT_PACKAGES_PATHYAML: Filesystem.FTS_CLIENT_PACKAGES_PATHCertificate Revocation
Path to Certificate Revocation List (CRL) file in JSON formatEnvironment variable:
FTS_CRLDIRYAML: Certs.FTS_CRLDIRCRL File Format
Federation Security
Certificate used for federation connections with other TAK serversEnvironment variable:
FTS_FEDERATION_CERTDIRYAML: Certs.FTS_FEDERATION_CERTDIRPrivate key for federation connectionsEnvironment variable:
FTS_FEDERATION_KEYDIRYAML: Certs.FTS_FEDERATION_KEYDIRPassword for the federation private keyEnvironment variable:
FTS_FEDERATION_KEYPASSYAML: Certs.FTS_FEDERATION_KEYPASSREST API Authentication
The REST API uses HTTP Bearer token authentication.Secret Key
Secret key for cryptographic operations, session management, and token signingEnvironment variable:
FTS_SECRET_KEYYAML: System.FTS_SECRET_KEYWebSocket Key
Authentication key for WebSocket connectionsEnvironment variable:
FTS_WEBSOCKET_KEYYAML: Certs.FTS_WEBSOCKET_KEYAuthentication Implementation
FromFreeTAKServer/services/rest_api_service/controllers/authentication.py:
User Types
SystemUser: Administrative users with full access- Stored in
SystemUsertable - Default admin user created on first run
- All API calls are logged
- Stored in
APIUsertable - Created via user management API
- No automatic logging
CLI Access Control
IP address for CLI access interface
Whitelist of IP addresses allowed to access the CLI interfaceEnvironment variable:
FTS_CLI_WHITELIST (colon or comma separated)YAML: Addresses.FTS_CLI_WHITELISTSSL/TLS Timeouts
FromFreeTAKServer/core/configuration/ReceiveConnectionsConstants.py:
- WRAP_SSL_TIMEOUT: Maximum time to complete SSL handshake
- SSL_SOCK_TIMEOUT: Maximum idle time for established SSL connections
Security Configuration Examples
Development Environment
Development environments can use unencrypted connections for convenience, but production deployments should always use SSL/TLS.
Production Environment
Certificate Generation
Generate CA Certificate
Generate Server Certificate
Generate Client Certificate
User Management
Create API User
Create System User
Using API Authentication
Certificate Revocation Process
Add Certificate to CRL
Revocation Reasons
unspecified: No specific reason givenkey_compromise: Private key has been compromisedca_compromise: CA has been compromisedaffiliation_changed: User’s affiliation has changedsuperseded: Certificate has been replacedcessation_of_operation: Certificate is no longer neededprivilege_withdrawn: User privileges have been revoked
File Permissions
Proper filesystem permissions are critical for security:Security Best Practices
Mandatory Production Security Measures
-
Change all default passwords and keys
SecretKeypassword(client certificate password)federationKeyPassword- Default admin user credentials
-
Use SSL/TLS encryption
- Enable SSL CoT service (port 8089)
- Enable HTTPS TAK API (port 8443)
- Disable unencrypted services in production
-
Implement certificate management
- Generate unique certificates for production
- Use strong key lengths (2048-bit minimum, 4096-bit recommended)
- Set appropriate certificate expiration dates
- Implement certificate rotation procedures
-
Configure access controls
- Restrict CLI access with
AllowCLIIPs - Use firewall rules to limit service access
- Implement network segmentation
- Restrict CLI access with
-
Secure filesystem
- Set restrictive permissions on certificate files
- Protect private keys (chmod 400)
- Regular security audits of file permissions
-
Monitor and log
- Enable API call logging
- Monitor certificate expiration dates
- Review access logs regularly
- Implement intrusion detection
-
Certificate revocation
- Maintain current CRL
- Implement certificate revocation procedures
- Test revocation process regularly
-
Backup security
- Encrypt backups containing certificates
- Secure backup storage locations
- Test backup restoration procedures
-
Update and patch
- Keep FreeTAKServer updated
- Monitor security advisories
- Apply security patches promptly
-
Physical security
- Secure server physical access
- Protect certificate storage media
- Implement secure key disposal procedures
Security Checklist
Before deploying to production:- Changed default
SecretKey - Changed default client certificate
password - Changed default admin credentials
- Generated production CA certificate
- Generated production server certificates
- Configured SSL CoT service
- Configured HTTPS TAK API
- Disabled unencrypted services
- Set appropriate file permissions
- Configured
AllowCLIIPswhitelist - Implemented firewall rules
- Tested certificate revocation
- Configured backup encryption
- Documented certificate procedures
- Tested disaster recovery procedures