Toon paginaOude revisiesReferentiesTerug naar boven Deze pagina is alleen-lezen. Je kan de broncode bekijken maar niet veranderen. Neem contact op met de beheerder als je denkt dat dit niet klopt. # ๐ฅ 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. ```text 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: ```text 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: ```text 24454/UDP ``` Deze poort moet vanaf internet bereikbaar zijn. Voice-chatcommunicatie gebruikt UDP en staat los van de normale Minecraft TCP-verbinding. ```text 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: ```text plugins/voicechat/voicechat-server.properties ``` > Alleen TCP `25565` openen 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: ```text 8192/TCP ``` Wanneer Votifier daadwerkelijk wordt geactiveerd, wordt alleen de daarvoor benodigde poort extern geopend. ```text 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: ```text 3306/TCP ``` Deze poort wordt uitsluitend op het interne netwerk toegestaan. ```text 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: ```text 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: ```text <SERVER_IP>:25567 ``` De enige publiek bedoelde Minecraft-ingang is: ```text <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: * [[technische-infrastructuur:server-hardening|Server hardening]] * [[technische-infrastructuur:selinux|SELinux]] --- ## ๐งฑ firewalld De host-firewall wordt beheerd met **firewalld**. De firewallstatus kan worden gecontroleerd met: ```bash sudo firewall-cmd --state ``` De actieve configuratie bekijken: ```bash sudo firewall-cmd --list-all ``` Actieve zones bekijken: ```bash sudo firewall-cmd --get-active-zones ``` Beschikbare services bekijken: ```bash sudo firewall-cmd --get-services ``` --- ## โ Poort tijdelijk openen Een poort kan tijdelijk worden geopend met: ```bash 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: ```bash sudo firewall-cmd --permanent --add-port=25565/tcp sudo firewall-cmd --reload ``` Daarna controleren: ```bash sudo firewall-cmd --list-ports ``` --- ## ๐๏ธ Simple Voice Chat openen Voor de standaard voice-chatpoort: ```bash sudo firewall-cmd --permanent --add-port=24454/udp sudo firewall-cmd --reload ``` Controleren: ```bash sudo firewall-cmd --list-ports ``` Verwacht: ```text 24454/udp ``` --- ## ๐ณ๏ธ Votifier openen Wanneer NuVotifier actief wordt: ```bash sudo firewall-cmd --permanent --add-port=8192/tcp sudo firewall-cmd --reload ``` Daarna controleren: ```bash 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: ```bash 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: ```text 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: ```text 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: ```text Internet โโโบ Survival Internet โโโบ Lobby Internet โโโบ Events Internet โโโบ Database ``` Wel toegestaan: ```text 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: ```text 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: ```text 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: 1. **Default deny** 2. Alleen noodzakelijke poorten worden geopend. 3. Backendservers zijn niet publiek bereikbaar. 4. Databaseverkeer blijft intern. 5. Voice chat gebruikt uitsluitend de daarvoor bestemde UDP-poorten. 6. Votifier wordt alleen geopend wanneer deze dienst daadwerkelijk actief is. 7. Firewallwijzigingen worden gedocumenteerd. 8. Ongebruikte poorten worden verwijderd. 9. Publieke diensten worden zo veel mogelijk geconcentreerd op de proxy. 10. Interne diensten worden beperkt tot noodzakelijke bronadressen. --- ## ๐ Controle Na firewallwijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren: ```bash sudo ss -tulpn ``` En welke poorten door firewalld zijn toegestaan: ```bash sudo firewall-cmd --list-all ``` Ook moet worden gecontroleerd of een dienst daadwerkelijk alleen op het bedoelde adres luistert. Bijvoorbeeld: ```text 0.0.0.0:3306 ``` is wezenlijk anders dan: ```text 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: * [[technische-infrastructuur:server-hardening|Server hardening]] * [[technische-infrastructuur:selinux|SELinux]] * [[technische-infrastructuur:os-installatie|OS-installatie]] * [[technische-infrastructuur:monitoring|Monitoring & logging]] technische-infrastructuur/firewall.txt Laatst gewijzigd: 2026/08/23 11:00door rroethof