Overview
Securing your Wings installation is critical since it manages game servers with potentially sensitive data and provides access to the host system through Docker containers.SSL/TLS Configuration
Why SSL is Required
Wings communicates with the Panel over HTTPS. SSL/TLS encryption:- Protects authentication tokens in transit
- Prevents man-in-the-middle attacks
- Encrypts server data and console output
- Required for production Panel deployments
SSL Certificate Setup
1
Install Certbot
2
Generate certificate
Ensure port 80 is open and not in use during certificate generation.
3
Configure Wings
Edit
/etc/pterodactyl/config.yml:4
Setup auto-renewal
5
Restart Wings after renewal
Create renewal hook:
Certificate Verification
Authentication Security
Token Management
Wings authenticates with the Panel using tokens configured in/etc/pterodactyl/config.yml:
Token Rotation
Rotate tokens if compromised:1
Generate new token
In Panel → Admin → Nodes → Your Node → Configuration tab, click “Regenerate Token”
2
Update Wings config
Copy the new configuration and update
/etc/pterodactyl/config.yml3
Restart Wings
SFTP Authentication
SFTP authentication flows through the Panel’s/api/remote/sftp/auth endpoint (app/Http/Controllers/Api/Remote/SftpAuthenticationController.php:34).
Password Authentication
Wings sends credentials to the Panel for validation:password_verify() (app/Http/Controllers/Api/Remote/SftpAuthenticationController.php:51).
Public Key Authentication
Wings sends the SSH public key to the Panel:Rate Limiting
SFTP authentication is rate-limited to prevent brute force attacks:Firewall Configuration
Minimal Firewall Rules
Only expose necessary ports:IP Whitelisting
Restrict Wings API to Panel IP only:DDoS Protection
Connection Limits
SYN Flood Protection
Container Security
Container Isolation
Wings isolates servers using Docker:- Filesystem isolation: Each container has its own filesystem
- Network isolation: Containers can’t directly access each other
- Resource limits: CPU/memory limits prevent resource exhaustion
- Capability restrictions: Containers run with minimal Linux capabilities
Security Options
Wings configures containers with security options:AppArmor/SELinux
Enable mandatory access control:AppArmor (Ubuntu/Debian)
SELinux (CentOS/RHEL)
User Namespaces
Enable user namespace remapping for additional isolation:File System Security
Directory Permissions
Secure Wings directories:Sensitive File Protection
Mount Security
Carefully control allowed mounts in/etc/pterodactyl/config.yml:
Network Security
CORS Protection
Restrict WebSocket origins:/etc/pterodactyl/config.yml
API Access Control
The Wings API should only be accessible to:- The Panel (via authentication token)
- Monitoring systems (if needed)
System Hardening
SSH Security
Automatic Updates
Keep system packages updated:Ubuntu/Debian
CentOS/RHEL
Kernel Hardening
Monitoring and Auditing
Audit Wings Access
Monitor Wings logs for suspicious activity:Activity Logging
Wings reports server activity to the Panel via/api/remote/activity (app/Http/Controllers/Api/Remote/ActivityProcessingController.php:18).
Monitor activity logs in the Panel:
- Admin → Activity Logs
- Filter by server, user, or event type
Fail2Ban Integration
Protect against brute force attacks:Backup Security
Secure Backup Storage
Wings can store backups locally or remotely:- Use S3-compatible storage with encryption
- Enable versioning for backup recovery
- Use separate credentials for backup storage
- Regularly test backup restoration
Backup Encryption
Backups should be encrypted at rest:- Use encrypted storage backends (S3 with SSE)
- Enable filesystem encryption on backup volumes
- Use encrypted network transfer (HTTPS/SFTP)
Incident Response
Compromised Node
If you suspect a node is compromised:1
Isolate the node
2
Stop all servers
3
Rotate credentials
- Regenerate node token in Panel
- Change SSH keys
- Rotate SSL certificates
4
Audit system
5
Consider reimaging
If compromise is confirmed, reinstall the system from scratch.
Compromised Server Container
If a game server is compromised:- Suspend the server in the Panel
- Backup evidence:
docker export ptdl-{uuid} > compromised.tar - Delete the server to remove the container
- Notify the server owner
- Review logs for how the compromise occurred
Security Checklist
Use this checklist to verify your Wings installation:- SSL/TLS enabled with valid certificate
- Auto-renewal configured for SSL certificates
- Firewall configured with minimal port exposure
- Wings API restricted to Panel IP only
- SSH configured with key-only authentication
- SSH running on non-standard port
- Root login disabled via SSH
- Automatic security updates enabled
- Kernel hardening parameters applied
- CORS origins restricted
- Allowed mounts carefully limited
- Docker AppArmor/SELinux enabled
- File permissions properly secured
- Fail2ban configured for SFTP
- Regular backup testing performed
- Activity logs monitored regularly
- Node token kept secret
- No unnecessary services running
Next Steps
Monitoring
Set up monitoring and alerting
Configuration
Review configuration options
Networking
Secure network configuration
Docker Management
Container security settings
