Skip to main content

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:
Never share these credentials:
  • Do not commit to version control
  • Do not share in support requests
  • Rotate immediately if compromised

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.yml
3

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:
The Panel validates using password_verify() (app/Http/Controllers/Api/Remote/SftpAuthenticationController.php:51).

Public Key Authentication

Wings sends the SSH public key to the Panel:
The Panel verifies the key fingerprint against stored SSH keys (app/Http/Controllers/Api/Remote/SftpAuthenticationController.php:64).

Rate Limiting

SFTP authentication is rate-limited to prevent brute force attacks:
Default: 5 attempts per minute per IP/username combination.

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:
User namespaces can break some game servers. Test thoroughly before enabling in production.

File System Security

Directory Permissions

Secure Wings directories:

Sensitive File Protection

Mount Security

Carefully control allowed mounts in /etc/pterodactyl/config.yml:
Never allow mounts to:
  • /etc - System configuration
  • /root - Root home directory
  • /var/lib/pterodactyl - Wings data
  • /home - User directories

Network Security

CORS Protection

Restrict WebSocket origins:
/etc/pterodactyl/config.yml
This prevents unauthorized websites from connecting to server consoles.

API Access Control

The Wings API should only be accessible to:
  1. The Panel (via authentication token)
  2. Monitoring systems (if needed)

System Hardening

SSH Security

Recommended settings:
Restart SSH:

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:
Recommendations:
  • 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:
  1. Use encrypted storage backends (S3 with SSE)
  2. Enable filesystem encryption on backup volumes
  3. 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:
  1. Suspend the server in the Panel
  2. Backup evidence: docker export ptdl-{uuid} > compromised.tar
  3. Delete the server to remove the container
  4. Notify the server owner
  5. 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