๐ฅ Firewall
De Tulpencraft-servers gebruiken firewalld als host-based firewall op Rocky Linux 10.
De firewall vormt een belangrijke beveiligingslaag tussen het Tulpencraft-netwerk, externe verbindingen en de verschillende interne diensten.
Het uitgangspunt is eenvoudig:
Alles wat niet expliciet noodzakelijk is, wordt geblokkeerd.
Backendservers zoals de lobby en gameservers zijn niet rechtstreeks vanaf internet bereikbaar. Spelers verbinden uitsluitend met de centrale Velocity Proxy.
๐ Firewallarchitectuur
De netwerkarchitectuur is opgebouwd rond een centrale proxy.
INTERNET
โ
โ
TCP :25565
โ
โผ
โโโโโโโโโโโโโโโโโโโโโ
โ Velocity Proxy โ
โ mc-proxy001 โ
โโโโโโโโโโโฌโโโโโโโโโโ
โ
โ intern netwerk
โผ
โโโโโโโโโโโโโโโโโโโโโ
โ Lobby โ
โ mc-proxy001 โ
โโโโโโโโโโโฌโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
Survival Events toekomstige
VM VM gameservers
De lobby en proxy draaien momenteel vanwege de opbouwfase op dezelfde host.
De gameservers draaien als afzonderlijke VM's op de beschikbare Proxmox-infrastructuur.
๐ช Externe poorten
Alleen diensten die daadwerkelijk vanaf internet bereikbaar moeten zijn, krijgen een open firewallpoort.
| Poort | Protocol | Dienst | Toegang |
|---|---|---|---|
25565 | TCP | Velocity Proxy | Publiek |
8192 | TCP | Votifier / NuVotifier | Publiek, indien actief |
24454 | UDP | Simple Voice Chat | Publiek, indien actief |
De primaire Minecraft-ingang is:
tulpencraft.nl:25565
Backend Minecraft-poorten worden niet publiek geopend.
๐๏ธ Simple Voice Chat
Voor proximity voice chat wordt Simple Voice Chat gebruikt op Survival en toekomstige gameservers waarop voice chat wordt aangeboden.
Simple Voice Chat gebruikt standaard:
24454/UDP
Deze poort moet vanaf internet bereikbaar zijn. Voice-chatcommunicatie gebruikt UDP en staat los van de normale Minecraft TCP-verbinding.
Speler โ โโโ TCP 25565 โโโโโโโบ Velocity โ โโโ UDP 24454 โโโโโโโบ Simple Voice Chat
Wanneer meerdere gameservers voice chat aanbieden en dezelfde publieke IP-adresruimte gebruiken, krijgt iedere server een eigen UDP-poort.
Bijvoorbeeld:
| Server | Voice chat | Poort |
|---|---|---|
| Survival | โ | 24454/UDP |
| Events | โ | 24455/UDP |
| Toekomstige gameserver | โ | eigen UDP-poort |
De exacte poortindeling wordt vastgelegd zodra de betreffende gameservers worden ingericht.
De Simple Voice Chat-configuratie bevindt zich bij Paper doorgaans in:
plugins/voicechat/voicechat-server.properties
Alleen TCP
25565openen is onvoldoende voor Simple Voice Chat. De benodigde UDP-poort moet eveneens bereikbaar zijn.
๐ณ๏ธ Votifier / NuVotifier
Voor toekomstige stemintegratie kan NuVotifier worden gebruikt.
De standaardpoort van NuVotifier is:
8192/TCP
Wanneer Votifier daadwerkelijk wordt geactiveerd, wordt alleen de daarvoor benodigde poort extern geopend.
Stemwebsite
โ
โ TCP 8192
โผ
โโโโโโโโโโโโโโโโโ
โ NuVotifier โ
โโโโโโโโโฌโโโโโโโโ
โ
โผ
Minecraft server
De Votifier-poort wordt niet geopend zolang de dienst niet actief is.
Het gebruikte Votifier-token wordt nooit in deze wiki opgeslagen.
๐๏ธ MySQL / MariaDB
De database is momenteel onderdeel van de interne infrastructuur en draait op mc-proxy001.
MySQL/MariaDB is een interne dienst en wordt niet publiek beschikbaar gesteld.
De standaardpoort is:
3306/TCP
Deze poort wordt uitsluitend op het interne netwerk toegestaan.
INTERNET
โ
โ โ TCP 3306
โผ
โโโโโโโโโโโ
โ FIREWALLโ
โโโโโโฌโโโโโ
โ
โ โ
intern
โผ
โโโโโโโโโโโโโโโโโ
โ MySQL/MariaDBโ
โ :3306 โ
โโโโโโโโโโโโโโโโโ
Alleen systemen die daadwerkelijk gebruikmaken van de database mogen verbinding maken.
Bijvoorbeeld:
| Bron | Doel | Poort | Toegang |
|---|---|---|---|
| Lobby | Database | 3306/TCP | Intern |
| Survival | Database | 3306/TCP | Intern |
| Events | Database | 3306/TCP | Intern |
| Internet | Database | 3306/TCP | โ Geblokkeerd |
Wanneer de database in de toekomst naar een afzonderlijke VM wordt verplaatst, blijft hetzelfde beveiligingsprincipe gelden.
๐ฎ Backend Minecraft-servers
Backendservers luisteren uitsluitend op interne adressen.
Bijvoorbeeld:
Velocity โ โโโ Lobby :25566 โโโ Survival :25567 โโโ Events :25568
Deze poorten worden niet op de publieke interface geopend.
Een speler mag bijvoorbeeld niet rechtstreeks verbinding maken met:
<SERVER_IP>:25567
De enige publiek bedoelde Minecraft-ingang is:
<SERVER_IP>:25565
De proxy verzorgt vervolgens de verbinding naar de backendservers.
๐ SSH
SSH wordt gebruikt voor systeembeheer.
SSH is uitsluitend bedoeld voor beheertoegang en wordt waar mogelijk beperkt tot vertrouwde beheerbronnen.
Het uitgangspunt is:
- geen onnodige publieke SSH-toegang;
- alleen beheer vanaf vertrouwde adressen of netwerken;
- SSH key-based authentication;
- root-login via SSH uitgeschakeld.
Zie ook:
๐งฑ firewalld
De host-firewall wordt beheerd met firewalld.
De firewallstatus kan worden gecontroleerd met:
sudo firewall-cmd --state
De actieve configuratie bekijken:
sudo firewall-cmd --list-all
Actieve zones bekijken:
sudo firewall-cmd --get-active-zones
Beschikbare services bekijken:
sudo firewall-cmd --get-services
โ Poort tijdelijk openen
Een poort kan tijdelijk worden geopend met:
sudo firewall-cmd --add-port=25565/tcp
Dit is vooral bedoeld voor testen.
Een dergelijke wijziging wordt niet als permanente configuratie beschouwd.
๐พ Poort permanent openen
Wanneer een poort definitief onderdeel van de infrastructuur wordt:
sudo firewall-cmd --permanent --add-port=25565/tcp sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --list-ports
๐๏ธ Simple Voice Chat openen
Voor de standaard voice-chatpoort:
sudo firewall-cmd --permanent --add-port=24454/udp sudo firewall-cmd --reload
Controleren:
sudo firewall-cmd --list-ports
Verwacht:
24454/udp
๐ณ๏ธ Votifier openen
Wanneer NuVotifier actief wordt:
sudo firewall-cmd --permanent --add-port=8192/tcp sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --list-ports
De poort wordt verwijderd wanneer Votifier niet langer wordt gebruikt.
๐๏ธ MySQL intern toestaan
MySQL mag niet zomaar publiek worden geopend met:
sudo firewall-cmd --permanent --add-port=3306/tcp
Wanneer de database op een afzonderlijke VM staat, wordt toegang bij voorkeur beperkt tot het interne netwerk of specifieke bronadressen.
Bijvoorbeeld:
Lobby VM
โ
โ TCP 3306
โผ
Database VM
De database accepteert uitsluitend verbindingen vanuit bekende Tulpencraft-systemen.
๐ซ Default-deny principe
De firewall volgt zoveel mogelijk het default-deny-principe.
Conceptueel:
INTERNET
โ
โผ
โโโโโโโโโโโโโโ
โ FIREWALL โ
โโโโโโโฌโโโโโโโ
โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
TCP 25565 UDP 24454 TCP 8192
Velocity Voice Chat Votifier
โ โ โ
โโโโโโโโโโโโโโดโโโโโโโโโโโโโ
โ
overige traffic
โ
โผ
DROP
Alleen verkeer dat expliciet noodzakelijk is, wordt toegestaan.
๐ก๏ธ Geen directe backendtoegang
Een belangrijk onderdeel van de beveiligingsarchitectuur is dat spelers nooit rechtstreeks met backendservers communiceren.
Niet toegestaan:
Internet โโโบ Survival Internet โโโบ Lobby Internet โโโบ Events Internet โโโบ Database
Wel toegestaan:
Internet
โ
โผ
Velocity Proxy
โ
โผ
Lobby
โ
โโโโบ Survival
โโโโบ Events
โโโโบ toekomstige servers
Hierdoor blijft de netwerkstructuur centraal beheersbaar.
๐ Toekomstige infrastructuur
Wanneer Tulpencraft verder groeit, kan de infrastructuur worden opgesplitst over meerdere VM's en/of fysieke nodes.
Een mogelijke toekomstige inrichting:
INTERNET
โ
โผ
โโโโโโโโโโโโโโ
โ Proxy โ
โ Velocity โ
โโโโโโโฌโโโโโโโ
โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โผ โผ โผ
Lobby Survival Events
โ โ โ
โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ
โ
โผ
Database VM
Elke VM krijgt daarbij uitsluitend de netwerktoegang die daadwerkelijk noodzakelijk is.
De exacte verdeling van VM's over Proxmox-nodes wordt afhankelijk van de benodigde resources en de groei van Tulpencraft bepaald.
๐ Firewallwijzigingen documenteren
Iedere structurele firewallwijziging moet worden gedocumenteerd.
Bijvoorbeeld:
Datum: 2026-08-23 Server: mc-proxy001 Poort: 24454/UDP Dienst: Simple Voice Chat Reden: Proximity voice chat Toegang: Publiek
Hierdoor blijft inzichtelijk waarom een poort geopend is en kan ongebruikte toegang later worden verwijderd.
๐ Beveiligingsprincipes
De firewallconfiguratie van Tulpencraft volgt deze uitgangspunten:
- Default deny
- Alleen noodzakelijke poorten worden geopend.
- Backendservers zijn niet publiek bereikbaar.
- Databaseverkeer blijft intern.
- Voice chat gebruikt uitsluitend de daarvoor bestemde UDP-poorten.
- Votifier wordt alleen geopend wanneer deze dienst daadwerkelijk actief is.
- Firewallwijzigingen worden gedocumenteerd.
- Ongebruikte poorten worden verwijderd.
- Publieke diensten worden zo veel mogelijk geconcentreerd op de proxy.
- Interne diensten worden beperkt tot noodzakelijke bronadressen.
๐ Controle
Na firewallwijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren:
sudo ss -tulpn
En welke poorten door firewalld zijn toegestaan:
sudo firewall-cmd --list-all
Ook moet worden gecontroleerd of een dienst daadwerkelijk alleen op het bedoelde adres luistert.
Bijvoorbeeld:
0.0.0.0:3306
is wezenlijk anders dan:
127.0.0.1:3306
of een specifiek intern IP-adres.
โ ๏ธ Belangrijk
Een poort openen in firewalld betekent niet automatisch dat een dienst veilig of correct geconfigureerd is.
De applicatie zelf moet eveneens correct worden geconfigureerd en indien mogelijk uitsluitend op het noodzakelijke netwerkinterface luisteren.
De firewall is daarom รฉรฉn onderdeel van de totale beveiliging van Tulpencraft, naast onder andere: