technische-infrastructuur:firewall

Verschillen

Dit geeft de verschillen weer tussen de geselecteerde revisie en de huidige revisie van de pagina.

Link naar deze vergelijking

Beide kanten vorige revisie Vorige revisie
Volgende revisie
Vorige revisie
technische-infrastructuur:firewall [2026/08/23 10:43] rroethoftechnische-infrastructuur:firewall [2026/08/23 11:00] (huidige) rroethof
Regel 1: Regel 1:
-# Firewall+🔥 Firewall
  
-De Tulpencraft-servers gebruiken **firewalld** als host-based firewall.+De Tulpencraft-servers gebruiken **firewalld** als host-based firewall op **Rocky Linux 10**.
  
-De firewall vormt samen met de netwerkarchitectuur, SELinux, SSH-hardeningFail2Ban en de toegangsbeperkingen van de backendservers een belangrijke beveiligingslaag binnen Tulpencraft.+De firewall vormt een belangrijke beveiligingslaag tussen het Tulpencraft-netwerkexterne verbindingen en de verschillende interne diensten.
  
 Het uitgangspunt is eenvoudig: Het uitgangspunt is eenvoudig:
  
-> **Alleen netwerkverkeer toestaan dat daadwerkelijk noodzakelijk is.**+> **Alles wat niet expliciet noodzakelijk is, wordt geblokkeerd.**
  
-Een service die lokaal draait, betekent niet automatisch dat deze vanaf het netwerk bereikbaar moet zijn.+Backendservers zoals de lobby en gameservers zijn **niet rechtstreeks vanaf internet bereikbaar**. Spelers verbinden uitsluitend met de centrale **Velocity Proxy**.
  
 --- ---
  
-# 🌐 Netwerkarchitectuur+## 🌐 Firewallarchitectuur
  
-Tulpencraft gebruikt een centrale **Velocity Proxy** als toegangspunt tot het Minecraft-netwerk. +De netwerkarchitectuur is opgebouwd rond een centrale proxy.
- +
-De gewenste netwerkarchitectuur is:+
  
 ```text ```text
                          INTERNET                          INTERNET
 +                             │
 +                             │
 +                     TCP :25565
 +                             │
 +                             ▼
 +                  ┌───────────────────┐
 +                  │  Velocity Proxy   │
 +                  │    mc-proxy001    │
 +                  └─────────┬─────────┘
                             │                             │
-                 ┌──────────┴──────────┐ +                            │ intern netwerk 
-                 │                     │ +                            ▼ 
-             TCP 25565             UDP voice +                  ┌───────────────────┐ 
-                 │                     │ +                  │       Lobby       │ 
-                 ▼                     ▼ +                  │     mc-proxy001   │ 
-          ─────────────────────────────────┐ +                  └─────────┬─────────┘ 
-          │         Velocity Proxy          │ +                            │ 
-          │           mc-proxy001           │ +              ┌────────────┼────────────┐ 
-          ────────────────┬────────────────┘ +              │             │             │ 
-                           │ +              ▼             ▼             ▼ 
-                           ▼ +          Survival        Events      toekomstige 
-                         Lobby +             VM             VM        gameservers
-                           │ +
-              ┌────────────┼────────────┐ +
-              ▼            ▼            ▼ +
-           Survival      Events      toekomst+
 ``` ```
  
-Spelers verbinden dus niet rechtstreeks met de backendservers.+De lobby en proxy draaien momenteel vanwege de opbouwfase op dezelfde host.
  
-De normale Minecraft-verbinding verloopt via: +De gameservers draaien als afzonderlijke VM's op de beschikbare Proxmox-infrastructuur.
- +
-```text +
-Speler +
-   │ +
-   ▼ +
-Velocity +
-   │ +
-   ▼ +
-Lobby +
-   │ +
-   ▼ +
-Game server +
-``` +
- +
-Ook voicechat wordt zoveel mogelijk via de proxyarchitectuur afgehandeld.+
  
 --- ---
  
-🔥 Firewalld+## 🚪 Externe poorten
  
-De host-firewall wordt verzorgd door **firewalld**.+Alleen diensten die daadwerkelijk vanaf internet bereikbaar moeten zijn, krijgen een open firewallpoort.
  
-Status controleren:+|   Poort | Protocol | Dienst                | Toegang                | 
 +| ------| :------: | --------------------- | ---------------------- | 
 +| `25565` |    TCP   | Velocity Proxy        | Publiek                | 
 +|  `8192` |    TCP   | Votifier / NuVotifier | Publiek, indien actief | 
 +| `24454` |    UDP   | Simple Voice Chat     | Publiek, indien actief |
  
-```bash +De primaire Minecraft-ingang is:
-sudo firewall-cmd --state +
-``` +
- +
-Verwachte uitvoer:+
  
 ```text ```text
-running+tulpencraft.nl:25565
 ``` ```
  
-Service controleren: +Backend Minecraft-poorten worden niet publiek geopend.
- +
-```bash +
-sudo systemctl status firewalld +
-``` +
- +
-Controleren of firewalld automatisch start: +
- +
-```bash +
-sudo systemctl is-enabled firewalld +
-```+
  
 --- ---
  
-🗂️ Firewalld-zones+## 🎙️ Simple Voice Chat
  
-Firewalld werkt met zogenaamde **zones**.+Voor proximity voice chat wordt **Simple Voice Chat** gebruikt op Survival en toekomstige gameservers waarop voice chat wordt aangeboden.
  
-Een zone bepaalt welk vertrouwensniveau aan een netwerkinterface of bron wordt gekoppeld en welke services en poorten daar toegestaan zijn.+Simple Voice Chat gebruikt standaard:
  
-De standaardzone: +```text 
- +24454/UDP
-```bash +
-sudo firewall-cmd --get-default-zone+
 ``` ```
  
-Actieve zones:+Deze poort moet vanaf internet bereikbaar zijn. Voice-chatcommunicatie gebruikt UDP en staat los van de normale Minecraft TCP-verbinding.
  
-```bash +```text 
-sudo firewall-cmd --get-active-zones+Speler 
 +  │ 
 +  ├── TCP 25565 ──────► Velocity 
 +  │ 
 +  └── UDP 24454 ──────► Simple Voice Chat
 ``` ```
  
-Configuratie van de actieve zone:+Wanneer meerdere gameservers voice chat aanbieden en dezelfde publieke IP-adresruimte gebruiken, krijgt iedere server een eigen UDP-poort.
  
-```bash +Bijvoorbeeld:
-sudo firewall-cmd --list-all +
-```+
  
-Alle zones:+| Server                 | Voice chat |           Poort | 
 +| ---------------------- | :--------: | --------------:
 +| Survival                    ✅         `24454/UDP` | 
 +| Events                      ✅         `24455/UDP` | 
 +| Toekomstige gameserver |      ✅     | eigen UDP-poort |
  
-```bash +De exacte poortindeling wordt vastgelegd zodra de betreffende gameservers worden ingericht.
-sudo firewall-cmd --list-all-zones +
-```+
  
-Voor een publiek bereikbare Tulpencraft-proxy wordt doorgaans de `public` zone gebruikt. +De Simple Voice Chat-configuratie bevindt zich bij Paper doorgaans in:
- +
---- +
- +
-# 🌍 Publiek netwerk +
- +
-De publieke netwerkinterface van de proxy mag alleen de diensten aanbieden die daadwerkelijk vanaf internet noodzakelijk zijn. +
- +
-Voor de huidige Tulpencraft-architectuur zijn dat in principe: +
- +
-|          Poort | Protocol | Functie              | Publiek                    | +
-| -------------: | -------- | -------------------- | -------------------------- | +
-|        `25565` | TCP      | Minecraft / Velocity | Ja                         | +
-| voicechatpoort | UDP      | Simple Voice Chat    | Ja                         | +
-|           `22` | TCP      | SSH-beheer           | Alleen indien noodzakelijk | +
- +
-De exacte voicechatpoort wordt verderop beschreven. +
- +
---- +
- +
-# 🎮 Minecraft / Velocity +
- +
-De Minecraft-ingang van Tulpencraft is:+
  
 ```text ```text
-TCP 25565+plugins/voicechat/voicechat-server.properties
 ``` ```
  
-Deze poort wordt door Velocity gebruikt. +> Alleen TCP `25565` openen is onvoldoende voor Simple Voice Chat. De benodigde UDP-poort moet eveneens bereikbaar zijn.
- +
-Openen: +
- +
-```bash +
-sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp +
-sudo firewall-cmd --reload +
-``` +
- +
-Controleren: +
- +
-```bash +
-sudo firewall-cmd --zone=public --list-ports +
-``` +
- +
-De poort moet alleen op het daadwerkelijke publieke toegangspunt worden geopend. +
- +
-Backendservers krijgen niet automatisch een publiek toegankelijke `25565/tcp`.+
  
 --- ---
  
-🎙️ Simple Voice Chat+## 🗳️ Votifier / NuVotifier
  
-Tulpencraft wil **Simple Voice Chat** ondersteunen op Survival en toekomstige game-servers.+Voor toekomstige stemintegratie kan **NuVotifier** worden gebruikt.
  
-Simple Voice Chat biedt onder andere: +De standaardpoort van NuVotifier is:
- +
-* proximity voice chat; +
-* push-to-talk; +
-* voice activation; +
-* configureerbare voice distance; +
-* whispering; +
-* individuele volumeregeling; +
-* groepsgesprekken. +
- +
-De client gebruikt hiervoor een aparte UDP-verbinding. De standaard serverpoort van Simple Voice Chat is `24454/UDP`. +
- +
---- +
- +
-## 🔊 Voicechat via Velocity +
- +
-Omdat Tulpencraft gebruikmaakt van Velocity, wordt Simple Voice Chat niet per game-server afzonderlijk publiek aangeboden. +
- +
-De officiële Simple Voice Chat-proxyconfiguratie ondersteunt Velocity en kan voicechatverkeer naar de juiste backendserver doorsturen. Daardoor is slechts **één publieke UDP-poort op de proxy** nodig. +
- +
-De gewenste architectuur is:+
  
 ```text ```text
-                    INTERNET +8192/TCP
-                       │ +
-                       │ UDP +
-                       ▼ +
-             ┌───────────────────┐ +
-             │  Velocity Proxy   │ +
-             │   Voice Proxy     │ +
-             └─────────┬─────────┘ +
-                       │ +
-          ┌────────────┼────────────┐ +
-          ▼            ▼            ▼ +
-       Survival      Events      toekomst +
-       Voice Chat    Voice Chat   Voice Chat+
 ``` ```
  
-Hierdoor blijft het principe behouden dat backendservers niet zelfstandig publiek bereikbaar zijn. +Wanneer Votifier daadwerkelijk wordt geactiveerd, wordt alleen de daarvoor benodigde poort extern geopend.
- +
---- +
- +
-# 🔌 Voicechatpoort +
- +
-De proxy kan voor Simple Voice Chat een eigen UDP-poort gebruiken. +
- +
-De officiële proxyconfiguratie gebruikt standaard de Minecraft-proxypoort voor voicechat wanneer `port=-1` is ingesteld. De poort kan echter expliciet worden ingesteld. +
- +
-Voor Tulpencraft verdient een **expliciete, gedocumenteerde UDP-poort** de voorkeur. +
- +
-Bijvoorbeeld:+
  
 ```text ```text
-UDP <VOICE_PORT>+Stemwebsite 
 +     │ 
 +     │ TCP 8192 
 +     ▼ 
 +┌───────────────┐ 
 +│  NuVotifier   │ 
 +└───────┬───────┘ 
 +        │ 
 +        ▼ 
 +   Minecraft server
 ``` ```
  
-De daadwerkelijke poort wordt vastgelegd zodra Simple Voice Chat op de Tulpencraft-proxy wordt geïmplementeerd.+De Votifier-poort wordt **niet geopend zolang de dienst niet actief is**.
  
-> De standaard backendpoort `24454/UDP` moet dus niet automatisch als publieke poort op iedere Survival-, Events- of toekomstige game-server worden geopend.+Het gebruikte Votifier-token wordt nooit in deze wiki opgeslagen.
  
 --- ---
  
-🧱 Backend Voice Chat+## 🗄️ MySQL / MariaDB
  
-Op iedere Minecraft-server waarop voicechat beschikbaar moet zijn, wordt de Simple Voice Chat serverplugin geïnstalleerd.+De database is momenteel onderdeel van de interne infrastructuur en draait op `mc-proxy001`.
  
-De officiële installatie vereist naast de serverplugin ook de Simple Voice Chat-proxyplugin wanneer de server achter Velocity draait.+MySQL/MariaDB is een **interne dienst** en wordt niet publiek beschikbaar gesteld.
  
-De gewenste opbouw:+De standaardpoort is:
  
 ```text ```text
-Velocity +3306/TCP
-└── Simple Voice Chat Proxy +
- +
-Lobby +
-└── eventueel voicechat +
- +
-Survival +
-└── Simple Voice Chat +
- +
-Events +
-└── Simple Voice Chat +
- +
-Toekomstige game-server +
-└── Simple Voice Chat+
 ``` ```
  
-Voicechat wordt daarmee een netwerkfunctie van het volledige Tulpencraft-netwerk. +Deze poort wordt uitsluitend op het interne netwerk toegestaan.
- +
---- +
- +
-# 🔒 Backendservers niet publiek bereikbaar +
- +
-Een belangrijk uitgangspunt van Tulpencraft is dat backendservers niet zelfstandig bereikbaar zijn. +
- +
-Dus bijvoorbeeld:+
  
 ```text ```text
-Internet +              INTERNET 
-   │ +                  │ 
-   X +                  │ ❌ TCP 3306 
-   │ +                  ▼ 
-Survival:25565+             ┌─────────┐ 
 +             │ FIREWALL│ 
 +             └────┬────┘ 
 +                  │ 
 +                  │ ✅ intern 
 +                  ▼ 
 +          ┌───────────────┐ 
 +          │ MySQL/MariaDB│ 
 +          │    :3306      │ 
 +          └───────────────┘
 ``` ```
  
-is niet de gewenste situatie.+Alleen systemen die daadwerkelijk gebruikmaken van de database mogen verbinding maken.
  
-In plaats daarvan:+Bijvoorbeeld:
  
-```text +| Bron     | Doel          Poort | Toegang       | 
-Internet +| -------- | -------- | ---------| ------------- | 
-   │ +| Lobby    | Database | `3306/TCP` | Intern        | 
-   ▼ +Survival | Database | `3306/TCP` | Intern        | 
-Velocity:25565 +| Events   | Database | `3306/TCP` | Intern        | 
-   │ +| Internet | Database | `3306/TCP| ❌ Geblokkeerd |
-   ▼ +
-Survival +
-```+
  
-Voor voicechat geldt hetzelfde principe: +Wanneer de database in de toekomst naar een afzonderlijke VM wordt verplaatst, blijft hetzelfde beveiligingsprincipe gelden.
- +
-```text +
-Internet +
-   │ +
-   ▼ +
-Velocity UDP voice +
-   │ +
-   ▼ +
-Survival Voice Chat +
-``` +
- +
-De Simple Voice Chat-proxy zorgt ervoor dat het verkeer naar de juiste backend wordt doorgestuurd.+
  
 --- ---
  
-🏠 Lobby+## 🎮 Backend Minecraft-servers
  
-De lobby draait momenteel op dezelfde host als de Velocity Proxy:+Backendservers luisteren uitsluitend op interne adressen.
  
-```text +Bijvoorbeeld:
-mc-proxy001 +
-│ +
-├── Velocity +
-│ +
-└── Lobby +
-``` +
- +
-Dit is onderdeel van de huidige infrastructuurkeuze. +
- +
-Omdat de lobby lokaal op dezelfde host als Velocity draait, hoeft de lobbypoort niet publiek voor spelers geopend te worden. +
- +
-De proxy communiceert lokaal met de lobby. +
- +
---- +
- +
-# 🎯 Survival +
- +
-Survival draait als afzonderlijke VM binnen de Proxmox-infrastructuur. +
- +
-De Survival-server wordt niet als zelfstandig publiek Minecraft-entrypoint aangeboden. +
- +
-De gewenste verbinding:+
  
 ```text ```text
-Speler 
-   │ 
-   ▼ 
 Velocity Velocity
    │    │
-    +   ├── Lobby       :25566 
-Survival+   ├── Survival    :25567 
 +   └── Events      :25568
 ``` ```
  
-Voicechat:+Deze poorten worden **niet** op de publieke interface geopend.
  
-```text +Een speler mag bijvoorbeeld niet rechtstreeks verbinding maken met:
-Speler +
-   │ +
-   │ UDP +
-   ▼ +
-Velocity Voice Proxy +
-   │ +
-   ▼ +
-Survival Voice Chat +
-``` +
- +
-De backend blijft daarmee achter de netwerkgrens van Tulpencraft. +
- +
---- +
- +
-# 🎪 Events +
- +
-Voor Events geldt hetzelfde model als voor Survival.+
  
 ```text ```text
-Speler +<SERVER_IP>:25567
-   │ +
-   ▼ +
-Velocity +
-   │ +
-   ▼ +
-Events+
 ``` ```
  
-en voor voice:+De enige publiek bedoelde Minecraft-ingang is:
  
 ```text ```text
-Speler +<SERVER_IP>:25565
-   │ +
-   │ UDP +
-   ▼ +
-Velocity Voice Proxy +
-   │ +
-   ▼ +
-Events Voice Chat+
 ``` ```
  
-Een Events-server wordt niet rechtstreeks aan internet blootgesteld tenzij daar bewust een technische reden voor bestaat.+De proxy verzorgt vervolgens de verbinding naar de backendservers.
  
 --- ---
  
-# 🔐 SSH+## 🔐 SSH
  
-SSH is een beheerinterface en geen Minecraft-netwerkdienst.+SSH wordt gebruikt voor systeembeheer.
  
-Wanneer SSH publiek bereikbaar moet zijn:+SSH is uitsluitend bedoeld voor beheertoegang en wordt waar mogelijk beperkt tot vertrouwde beheerbronnen.
  
-```bash +Het uitgangspunt is:
-sudo firewall-cmd --permanent --zone=public --add-service=ssh +
-sudo firewall-cmd --reload +
-```+
  
-Maar waar mogelijk wordt SSH beperkt tot de noodzakelijke beheeromgeving.+* geen onnodige publieke SSH-toegang; 
 +* alleen beheer vanaf vertrouwde adressen of netwerken; 
 +* SSH key-based authentication; 
 +* root-login via SSH uitgeschakeld.
  
-SSH wordt daarnaast beschermd door:+Zie ook:
  
-SSH-sleutels; +* [[technische-infrastructuur:server-hardening|Server hardening]] 
-* geen directe root-login; +* [[technische-infrastructuur:selinux|SELinux]]
-* geen wachtwoordauthenticatie; +
-* Fail2Ban; +
-* beperkte gebruikersrechten. +
- +
-Zie: +
- +
-[[technische-infrastructuur:server-hardening|Server hardening]]+
  
 --- ---
  
-📦 Services versus poorten+## 🧱 firewalld
  
-Firewalld kan zowel vooraf gedefinieerde services als afzonderlijke poorten gebruiken.+De host-firewall wordt beheerd met **firewalld**.
  
-Voor standaarddiensten heeft een service de voorkeur:+De firewallstatus kan worden gecontroleerd met:
  
 ```bash ```bash
-sudo firewall-cmd --permanent --zone=public --add-service=ssh+sudo firewall-cmd --state
 ``` ```
  
-Voor applicaties zonder geschikte standaardservice:+De actieve configuratie bekijken:
  
 ```bash ```bash
-sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp+sudo firewall-cmd --list-all
 ``` ```
  
-Voor Simple Voice Chat:+Actieve zones bekijken:
  
 ```bash ```bash
-sudo firewall-cmd --permanent --zone=public --add-port=<VOICE_PORT>/udp+sudo firewall-cmd --get-active-zones
 ``` ```
  
-Daarna:+Beschikbare services bekijken:
  
 ```bash ```bash
-sudo firewall-cmd --reload+sudo firewall-cmd --get-services
 ``` ```
  
 --- ---
  
-⚠️ Runtime en permanent+## ➕ Poort tijdelijk openen
  
-Firewalld kent een runtime- en permanente configuratie. +Een poort kan tijdelijk worden geopend met:
- +
-Een tijdelijke regel:+
  
 ```bash ```bash
Regel 462: Regel 278:
 ``` ```
  
-wordt direct actief, maar is niet noodzakelijk permanent.+Dit is vooral bedoeld voor testen. 
 + 
 +Een dergelijke wijziging wordt niet als permanente configuratie beschouwd. 
 + 
 +--- 
 + 
 +## 💾 Poort permanent openen
  
-Voor de productiesituatie wordt daarom de permanente configuratie gebruikt:+Wanneer een poort definitief onderdeel van de infrastructuur wordt:
  
 ```bash ```bash
Regel 471: Regel 293:
 ``` ```
  
-Na een wijziging moet altijd worden gecontroleerd of de regel daadwerkelijk actief is.+Daarna controleren: 
 + 
 +```bash 
 +sudo firewall-cmd --list-ports 
 +```
  
 --- ---
  
-🔍 Firewall controleren+## 🎙️ Simple Voice Chat openen
  
-Volledige configuratie:+Voor de standaard voice-chatpoort:
  
 ```bash ```bash
-sudo firewall-cmd --list-all+sudo firewall-cmd --permanent --add-port=24454/udp 
 +sudo firewall-cmd --reload
 ``` ```
  
-Services: +Controleren:
- +
-```bash +
-sudo firewall-cmd --list-services +
-``` +
- +
-Poorten:+
  
 ```bash ```bash
Regel 495: Regel 316:
 ``` ```
  
-Actieve zones:+Verwacht:
  
-```bash +```text 
-sudo firewall-cmd --get-active-zones+24454/udp
 ``` ```
  
 --- ---
  
-👀 Luisterende poorten+## 🗳️ Votifier openen
  
-De firewallconfiguratie is slechts één kant van de controle. +Wanneer NuVotifier actief wordt:
- +
-Ook moet worden gecontroleerd welke processen daadwerkelijk luisteren:+
  
 ```bash ```bash
-sudo ss -tulpn+sudo firewall-cmd --permanent --add-port=8192/tcp 
 +sudo firewall-cmd --reload
 ``` ```
  
-Hiermee kunnen bijvoorbeeld worden gevonden:+Daarna controleren:
  
-```text +```bash 
-TCP 25565 +sudo firewall-cmd --list-ports
-UDP <VOICE_PORT> +
-TCP 22+
 ``` ```
  
-Een poort die niet noodzakelijk is, moet bij voorkeur ook niet door een applicatie worden geopend.+De poort wordt verwijderd wanneer Votifier niet langer wordt gebruikt.
  
 --- ---
  
-🎙️ UDP controleren+## 🗄️ MySQL intern toestaan
  
-Simple Voice Chat gebruikt UDP.+MySQL mag **niet zomaar publiek worden geopend** met:
  
-Een algemene TCP-poorttest is daarom niet voldoende om voicechat te controleren.+```bash 
 +sudo firewall-cmd --permanent --add-port=3306/tcp 
 +```
  
-De Simple Voice Chat-documentatie geeft aan dat UDP connectionless is en daarom niet met normale TCP-portchecks kan worden getest. De plugin beschikt hiervoor over een eigen testmogelijkheid.+Wanneer de database op een afzonderlijke VM staat, wordt toegang bij voorkeur beperkt tot het interne netwerk of specifieke bronadressen.
  
-In-game kan bijvoorbeeld worden gebruikt:+Bijvoorbeeld:
  
 ```text ```text
-/voicechat test <PLAYERNAME>+Lobby VM 
 +    │ 
 +    │ TCP 3306 
 +    ▼ 
 +Database VM
 ``` ```
  
-Voor een proxy-opstelling kan daarnaast de voicechat-proxytest worden gebruikt:+De database accepteert uitsluitend verbindingen vanuit bekende Tulpencraft-systemen.
  
-```text +---
-/voicechatproxy ping <server> +
-```+
  
-De officiële documentatie beschrijft deze test voor het controleren van de verbinding tussen de proxy en een backendserver.+## 🚫 Default-deny principe
  
----+De firewall volgt zoveel mogelijk het **default-deny-principe**.
  
-# 🛡️ Firewall en Fail2Ban +Conceptueel:
- +
-Firewalld en Fail2Ban hebben verschillende functies.+
  
 ```text ```text
-                 INTERNET +                       INTERNET 
-                     │ +                           │ 
-                     ▼ +                           ▼ 
-              ────────────┐ +                    ┌────────────┐ 
-              │  firewalld  │ +                    │  FIREWALL  │ 
-              ─────┬──────┘ +                    └─────┬──────┘ 
-                     │ +                          │ 
-                     ▼ +             ┌────────────┼────────────┐ 
-                toegestane +             │            │            │ 
-                 diensten +             ▼            ▼            ▼ 
-                      +        TCP 25565     UDP 24454    TCP 8192 
-                     ▼ +         Velocity     Voice Chat    Votifier 
-               SSH / overige +             │            │            │ 
-                     │ +             └────────────────────────┘ 
-                     ▼ +                          │ 
-                logbestanden +                    overige traffic 
-                     │ +                          │ 
-                     ▼ +                          ▼ 
-              ┌─────────────┐ +                        DROP
-              │  Fail2Ban   │ +
-              └──────┬──────┘ +
-                     │ +
-                     ▼ +
-                tijdelijke +
-                  blokkade+
 ``` ```
  
-Firewalld bepaalt welke netwerktoegang mogelijk is+Alleen verkeer dat expliciet noodzakelijk is, wordt toegestaan.
- +
-Fail2Ban reageert op herhaaldelijk ongewenst gedragbijvoorbeeld brute-forcepogingen op SSH.+
  
 --- ---
  
-🧩 Firewall per servertype +## 🛡️ Geen directe backendtoegang
- +
-De firewallconfiguratie wordt afgestemd op de functie van de server. +
- +
-| Server                      | Minecraft TCP |                 Voice UDP | Publiek bereikbaar | +
-| --------------------------- | ------------: | ------------------------: | ------------------ | +
-| **Velocity / Proxy**        |       `25565` |       centrale voicepoort | Ja                 | +
-| **Lobby**                          intern | via proxy indien gebruikt | Nee                | +
-| **Survival**                |        intern |    intern via voice proxy | Nee                | +
-| **Events**                  |        intern |    intern via voice proxy | Nee                | +
-| **Toekomstige game-server** |        intern |    intern via voice proxy | Nee                | +
- +
-SSH is hierbij een aparte beheerfunctie en wordt alleen opengesteld wanneer noodzakelijk. +
- +
----+
  
-# 🚫 Geen onnodige poorten+Een belangrijk onderdeel van de beveiligingsarchitectuur is dat spelers nooit rechtstreeks met backendservers communiceren.
  
-De volgende aanpak wordt vermeden:+Niet toegestaan:
  
 ```text ```text
-25565/tcp  → publiek +Internet ──► Survival 
-24454/udp  → publiek +Internet ──► Lobby 
-25566/tcp  → publiek +Internet ──► Events 
-25567/tcp  → publiek +Internet ──► Database
-25568/tcp  → publiek +
-...+
 ``` ```
  
-De gewenste situatie is:+Wel toegestaan:
  
 ```text ```text
-                 INTERNET +Internet 
-                    │ +    │ 
-          ┌─────────┴─────────┐ +    ▼ 
-          │                   │ +Velocity Proxy 
-      25565/TCP          VOICE/UDP +    │ 
-          │                   │ +    ▼ 
-          ▼                   ▼ +Lobby 
-       Velocity          Voice Proxy +    │ 
-          │                   │ +    ├──► Survival 
-          └─────────┬─────────┘ +    ├──► Events 
-                    ▼ +    └──► toekomstige servers
-               Backendservers+
 ``` ```
  
-Daarmee wordt het publieke aanvalsoppervlak beperkt.+Hierdoor blijft de netwerkstructuur centraal beheersbaar.
  
 --- ---
  
-🧱 Nieuwe netwerkdienst+## 🚀 Toekomstige infrastructuur
  
-Wanneer een nieuwe dienst een netwerkpoort nodig heeftwordt eerst bepaald:+Wanneer Tulpencraft verder groeitkan de infrastructuur worden opgesplitst over meerdere VM's en/of fysieke nodes.
  
-1. Waarom is de dienst nodig? +Een mogelijke toekomstige inrichting:
-2. Moet deze publiek bereikbaar zijn? +
-3. Kan de dienst via Velocity worden aangeboden? +
-4. Kan de dienst uitsluitend intern luisteren? +
-5. Welke bronadressen moeten toegang krijgen? +
-6. Welk protocol wordt gebruikt? +
-7. Welke firewallregel is noodzakelijk?+
  
-Pas daarna wordt de firewall aangepast.+```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.
  
 --- ---
  
-🗑️ Poort verwijderen+## 📝 Firewallwijzigingen documenteren
  
-Wanneer een dienst wordt verwijderd, wordt ook de bijbehorende firewallregel verwijderd.+Iedere structurele firewallwijziging moet worden gedocumenteerd.
  
 Bijvoorbeeld: Bijvoorbeeld:
  
-```bash +```text 
-sudo firewall-cmd --permanent --zone=public --remove-port=<PORT>/tcp +Datum:        2026-08-23 
-sudo firewall-cmd --reload +Server:       mc-proxy001 
-``` +Poort:        24454/UDP 
- +Dienst:       Simple Voice Chat 
-Daarna+Reden       Proximity voice chat 
- +Toegang:      Publiek
-```bash +
-sudo firewall-cmd --zone=public --list-all+
 ``` ```
  
-Firewallregels mogen niet blijven bestaan zonder actieve reden.+Hierdoor blijft inzichtelijk waarom een poort geopend is en kan ongebruikte toegang later worden verwijderd.
  
 --- ---
  
-📝 Firewallwijzigingen documenteren+## 📋 Beveiligingsprincipes
  
-Structurele wijzigingen worden gedocumenteerd.+De firewallconfiguratie van Tulpencraft volgt deze uitgangspunten:
  
-Bijvoorbeeld: +1. **Default deny** 
- +2. Alleen noodzakelijke poorten worden geopend. 
-| Onderdeel | Waarde                | +3. Backendservers zijn niet publiek bereikbaar. 
-| --------- | --------------------- | +4. Databaseverkeer blijft intern. 
-| Server    | `mc-proxy001`         | +5. Voice chat gebruikt uitsluitend de daarvoor bestemde UDP-poorten. 
-| Zone      | `public`              | +6. Votifier wordt alleen geopend wanneer deze dienst daadwerkelijk actief is. 
-| Poort     | `25565/tcp`           | +7. Firewallwijzigingen worden gedocumenteerd. 
-| Dienst    | Velocity              | +8. Ongebruikte poorten worden verwijderd. 
-| Bereik    | Publiek               | +9. Publieke diensten worden zo veel mogelijk geconcentreerd op de proxy. 
-| Reden     | Minecraft-ingangspunt | +10. Interne diensten worden beperkt tot noodzakelijke bronadressen.
-| Status    | Actief                | +
- +
-Voor Simple Voice Chat: +
- +
-| Onderdeel | Waarde                                  | +
---------- | --------------------------------------- | +
-| Server    | `mc-proxy001`                           | +
-| Zone      | `public`                                | +
-| Poort     | `<VOICE_PORT>/udp`                      | +
-| Dienst    | Simple Voice Chat                       | +
-| Bereik    | Publiek                                 | +
-| Backend   | Survival / Events / toekomstige servers | +
-| Status    | Gepland / Actief                        |+
  
 --- ---
  
-🔄 Wijzigingen en onderhoud+## 🔎 Controle
  
-Bij iedere wijziging aan de netwerkarchitectuur wordt gecontroleerd of de firewallconfiguratie nog overeenkomt met de gewenste situatie.+Na firewallwijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren:
  
-Dit geldt bijvoorbeeld bij:+```bash 
 +sudo ss -tulpn 
 +```
  
-* nieuwe game-servers; +En welke poorten door firewalld zijn toegestaan:
-* nieuwe plugins; +
-* migratie naar een andere VM; +
-* wijziging van IP-adressen; +
-* invoering van Simple Voice Chat; +
-* wijziging van Velocity; +
-* verhuizing naar een andere Proxmox-node; +
-* uitbreiding van monitoring; +
-* nieuwe beheerinterfaces.+
  
----+```bash 
 +sudo firewall-cmd --list-all 
 +```
  
-# 📋 Firewall-baseline+Ook moet worden gecontroleerd of een dienst daadwerkelijk alleen op het bedoelde adres luistert.
  
-Iedere Tulpencraft-server wordt minimaal gecontroleerd op:+Bijvoorbeeld:
  
-* [ ] firewalld geïnstalleerd +```text 
-* [ ] firewalld actief +0.0.0.0:3306 
-* [ ] firewalld ingeschakeld bij boot +```
-* [ ] juiste zone vastgesteld +
-* [ ] alleen noodzakelijke services toegestaan +
-* [ ] alleen noodzakelijke poorten toegestaan +
-* [ ] publieke en interne diensten onderscheiden +
-* [ ] luisterende poorten gecontroleerd met `ss` +
-* [ ] permanente configuratie gecontroleerd +
-* [ ] firewall na reload gecontroleerd +
-* [ ] SSH-toegang getest +
-* [ ] Minecraft-toegang getest +
-* [ ] backendservers niet publiek bereikbaar +
-* [ ] Simple Voice Chat UDP-configuratie gecontroleerd indien van toepassing +
-* [ ] voicechat via de proxy getest indien van toepassing +
-* [ ] firewallwijzigingen gedocumenteerd +
- +
---- +
- +
-# 🛡️ Tulpencraft securitymodel+
  
-De firewall is één onderdeel van de totale beveiligingsarchitectuur.+is wezenlijk anders dan:
  
 ```text ```text
-                    INTERNET +127.0.0.1:3306
-                       │ +
-                       ▼ +
-                ┌─────────────┐ +
-                │  firewalld  │ +
-                └──────┬──────┘ +
-                       │ +
-             ┌─────────┴─────────┐ +
-             │                   │ +
-       TCP Minecraft         UDP Voice +
-             │                   │ +
-             ▼                   ▼ +
-        ┌────────────────────────────┐ +
-        │       Velocity Proxy       │ +
-        │        mc-proxy001         │ +
-        └─────────────┬──────────────┘ +
-                      │ +
-                      ▼ +
-                    Lobby +
-                      │ +
-           ┌──────────┼──────────┐ +
-           ▼          ▼          ▼ +
-       Survival     Events    toekomst+
 ``` ```
  
-Daarbovenop worden onder andere toegepast: +of een specifiek intern IP-adres.
- +
-* SELinux; +
-* SSH-hardening; +
-* Fail2Ban; +
-* least privilege; +
-* regelmatige updates; +
-* logging; +
-* monitoring; +
-* beperkte netwerktoegang.+
  
 --- ---
  
-🌷 Uitgangspunt+## ⚠️ Belangrijk
  
-Het Tulpencraft-firewallbeleid kan worden samengevat als:+Een poort openen in firewalld betekent niet automatisch dat een dienst veilig of correct geconfigureerd is.
  
-> **Een service die niet publiek bereikbaar hoeft te zijn, wordt niet publiek bereikbaar gemaakt.**+De applicatie zelf moet eveneens correct worden geconfigureerd en indien mogelijk uitsluitend op het noodzakelijke netwerkinterface luisteren.
  
-De Velocity Proxy is het centrale toegangspunt.+De firewall is daarom één onderdeel van de totale beveiliging van Tulpencraft, naast onder andere:
  
-Backendservers blijven achter de proxy en worden niet zelfstandig aan internet blootgesteld. 
- 
-Voor Simple Voice Chat wordt dezelfde architectuur gevolgd: de voicechatfunctie wordt via de Velocity Proxy aangeboden, zodat meerdere game-servers gebruik kunnen maken van voicechat zonder iedere backend afzonderlijk publiek open te zetten. De officiële Simple Voice Chat-proxyondersteuning is hier specifiek voor ontworpen. 
- 
---- 
- 
-# 🔗 Gerelateerde documentatie 
- 
-* [[technische-infrastructuur:overzicht|Technische infrastructuur – Overzicht]] 
-* [[technische-infrastructuur:os-installatie|OS-installatie]] 
-* [[technische-infrastructuur:rocky-linux-10|Rocky Linux 10]] 
 * [[technische-infrastructuur:server-hardening|Server hardening]] * [[technische-infrastructuur:server-hardening|Server hardening]]
 * [[technische-infrastructuur:selinux|SELinux]] * [[technische-infrastructuur:selinux|SELinux]]
-* [[technische-infrastructuur:systemd|systemd]]+* [[technische-infrastructuur:os-installatie|OS-installatie]]
 * [[technische-infrastructuur:monitoring|Monitoring & logging]] * [[technische-infrastructuur:monitoring|Monitoring & logging]]
-* [[serverinfrastructuur:overzicht|Serverinfrastructuur – Overzicht]] 
-* [[serverinfrastructuur:proxy|Proxy]] 
-* [[serverinfrastructuur:lobby|Lobby]] 
-* [[serverinfrastructuur:survival|Survival]] 
-* [[plugins:simple-voice-chat|Simple Voice Chat]] 
- 
---- 
- 
-> **Tulpencraft firewall baseline** 
-> 
-> De Tulpencraft-firewall volgt het principe **least exposure**. Alleen noodzakelijke netwerktoegang wordt toegestaan. De Velocity Proxy vormt het publieke Minecraft-toegangspunt en backendservers worden niet rechtstreeks aan het publieke internet blootgesteld. 
  
  • technische-infrastructuur/firewall.1787474612.txt.gz
  • Laatst gewijzigd: 2026/08/23 10:43
  • door rroethof