Operational Security Guide¶
Security recommendations for running and using MoaV safely.
Table of Contents¶
- For Server Operators
- Server Security
- Domain Security
- Credential Management
- Monitoring
- If Server is Blocked
- For Users
- Device Security
- Connection Security
- App Security
- Behavior Security
- If You Suspect Compromise
- Distribution Security
- Legal Considerations
- Emergency Procedures
- Checklist
For Server Operators¶
Server Security¶
-
Keep system updated:
-
Use SSH keys, disable password auth:
-
Enable firewall:
Only open ports for protocols you've enabled. At minimum: SSH (22) + your active protocols.ufw allow 22/tcp # SSH (IMPORTANT: always allow SSH first!) ufw allow 443/tcp # Reality (VLESS) ufw allow 443/udp # Hysteria2 ufw allow 8443/tcp # Trojan ufw allow 51820/udp # WireGuard ufw allow 51821/udp # AmneziaWG ufw allow 8080/tcp # wstunnel (WireGuard over WebSocket) ufw allow 4443/tcp # TrustTunnel (HTTP/2) ufw allow 4443/udp # TrustTunnel (HTTP/3 QUIC) ufw allow 993/tcp # Telegram MTProxy (telemt) ufw allow 53/udp # DNS tunnels (dnstt + Slipstream) ufw allow 2082/tcp # CDN WebSocket (VLESS+WS via Cloudflare) ufw allow 9443/tcp # Admin dashboard ufw allow 9444/tcp # Grafana monitoring (if enabled) ufw allow 80/tcp # Let's Encrypt certificate renewal ufw enable
Warning: If you change your SSH port (see below), add a rule for the new port before running
ufw enable, or you will lock yourself out.
- Change SSH port (optional):
Domain Security¶
- Use WHOIS privacy - Hide your personal information
- Use a neutral registrar - Avoid country-specific registrars
- Keep registration info generic - Don't use real name if possible
- Pay anonymously - Use crypto if available
Credential Management¶
- Never share master credentials - Each user gets unique creds
- Revoke compromised users immediately:
- Rotate server keys periodically - Re-bootstrap if concerned
- Keep backups of state:
Monitoring¶
- Watch for unusual patterns:
- Sudden traffic spikes
- Connections from unexpected IPs
-
Failed authentication attempts
-
Check logs regularly:
-
Set up alerts (optional):
- Use Uptime Kuma or similar for monitoring
- Alert on service down or high resource usage
If Server is Blocked¶
- Don't panic - Have a backup plan ready
- Try different protocols first - Reality target change, Hysteria2
- If IP is blocked:
- Get a new VPS with fresh IP
- Or use floating IP if provider supports
- Migrate:
For Users¶
Device Security¶
- Use a separate profile/user for circumvention apps on shared devices
- Don't screenshot QR codes - Or delete immediately after import
- Delete bundle files after importing to your apps
- Use device encryption - Enable full disk encryption
- Set strong device PIN/password
Connection Security¶
- Verify you're connected:
- Check your IP: https://whatismyip.com
-
Should show server IP, not your real IP
-
Use HTTPS everywhere even over tunnel:
- The tunnel encrypts transport, HTTPS encrypts content
-
Protects against compromised tunnel endpoints
-
Don't trust public WiFi even with VPN:
- Your device can still be attacked locally
- Tunnel doesn't protect against local network attacks
App Security¶
- Keep apps updated - Updates often fix detection bypasses
- Download from official sources:
- iOS: App Store
- Android: GitHub releases or F-Droid
-
Avoid random APK sites
-
Backup your configs:
- Export configs from apps
- Store securely (encrypted)
Behavior Security¶
- Don't share your credentials - Each person should have their own
- Don't share screenshots showing server addresses or QR codes
- Don't mention specific servers in public forums
- Use secure messaging to receive configs (Signal, encrypted email)
If You Suspect Compromise¶
- Stop using that config immediately
- Contact admin for new credentials
- Check your device for malware
- Change passwords for any accounts accessed over that connection
Distribution Security¶
Sharing Bundles Safely¶
DO: - Use end-to-end encrypted messaging (Signal, Telegram secret chat) - Share in person when possible - Use encrypted file sharing (OnionShare, Keybase) - Delete messages after recipient confirms receipt
DON'T: - Email unencrypted configs - Post links in public channels - Share via unencrypted cloud storage - Send screenshots of QR codes to groups
Recommended Distribution Methods¶
- In Person:
- Safest method
-
Scan QR code directly from your screen
-
Signal:
- Send configs as files
- Enable disappearing messages
-
Verify recipient's safety number
-
Telegram (Secret Chat only):
- NOT regular chats
-
Use self-destruct timer
-
Encrypted Email:
- PGP/GPG encrypted
- Or use ProtonMail-to-ProtonMail
Legal Considerations¶
Disclaimer: This is not legal advice.
Know Your Jurisdiction¶
- Laws vary by country
- Running circumvention tools may be illegal in some places
- Using them may also carry risks
- Assess your personal risk level
Plausible Deniability¶
The decoy website helps: - Server looks like a normal HTTPS site - No obvious "VPN" or "proxy" indicators - Valid TLS certificate - Generic content
Data Retention¶
MoaV is configured for minimal logging: - No URLs logged - No request content - Basic connection stats only (for admin)
To disable all logging:
Emergency Procedures¶
If You Think You're Monitored¶
- Stop using current credentials
- Contact admin through alternate channel
- Get fresh credentials
- Consider using a different device
- Assess whether to continue using service
If Server is Raided/Seized¶
User data exposure is limited: - Passwords are stored hashed - No content is logged - IP addresses are in memory only
But assume: - Server IP is known - User identifiers (not real names) are known - Active connections at time of seizure are known
If User is Compromised¶
As admin:
1. Revoke user immediately: ./scripts/user-revoke.sh username
2. Monitor for unusual activity
3. Consider rotating server if credentials were extracted
4. Do NOT contact compromised user through normal channels
Checklist¶
Server Operator¶
- [ ] SSH keys only, no password auth
- [ ] Firewall configured
- [ ] System auto-updates enabled
- [ ] Unique user credentials for everyone
- [ ] Backup plan if blocked (new IP ready)
- [ ] Secure distribution channel established
User¶
- [ ] Device encrypted
- [ ] App from official source
- [ ] Config imported securely
- [ ] Bundle files deleted after import
- [ ] Knows which protocol to try if one fails
- [ ] Knows how to contact admin securely