technische-infrastructuur:firewall

Verschillen

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

Link naar deze vergelijking

Volgende revisie
Vorige revisie
technische-infrastructuur:firewall [2026/08/23 10:41] – aangemaakt 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**.
  
-Firewalld beheert netwerktoegang via zogenaamde **zones**, services, poorten en aanvullende regels. De configuratie kent daarbij een onderscheid tussen de actieve runtime-configuratie en de permanente configuratie.+De firewall vormt een belangrijke beveiligingslaag tussen het Tulpencraft-netwerk, externe verbindingen en de verschillende interne diensten.
  
-De firewall vormt samen met de netwerkarchitectuur, SELinux, SSH-hardening en Fail2Ban een belangrijke beveiligingslaag binnen Tulpencraft.+Het uitgangspunt is eenvoudig:
  
---- +> **Alles wat niet expliciet noodzakelijk is, wordt geblokkeerd.**
- +
-## 🎯 Doel +
- +
-Het uitgangspunt voor de Tulpencraft-firewall is: +
- +
-> **Alleen netwerkverkeer toestaan dat daadwerkelijk noodzakelijk is.** +
- +
-Een service die lokaal draait, betekent niet automatisch dat deze vanaf het netwerk bereikbaar moet zijn. +
- +
-Daarom wordt per server bepaald:+
  
-* welke services actief zijn+Backendservers zoals de lobby en gameservers zijn **niet rechtstreeks vanaf internet bereikbaar**. Spelers verbinden uitsluitend met de centrale **Velocity Proxy**.
-welke poorten noodzakelijk zijn; +
-* vanaf welke netwerken toegang nodig is; +
-of een service publiek of uitsluitend intern bereikbaar moet zijn.+
  
 --- ---
  
-# 🌐 Netwerkarchitectuur+## 🌐 Firewallarchitectuur
  
-Tulpencraft gebruikt een centrale **Velocity Proxy** als toegangspunt.+De netwerkarchitectuur is opgebouwd rond een centrale proxy.
  
 ```text ```text
                          INTERNET                          INTERNET
 +                             │
 +                             │
 +                     TCP :25565
 +                             │
 +                             ▼
 +                  ┌───────────────────┐
 +                  │  Velocity Proxy   │
 +                  │    mc-proxy001    │
 +                  └─────────┬─────────┘
                             │                             │
-                            │ TCP 25565+                            │ intern netwerk
                             ▼                             ▼
-                    ┌─────────────────┐ +                  ───────────────────┐ 
-                    │ Velocity Proxy  │ +                  │       Lobby       │ 
-                    │   mc-proxy001   │ +                  │     mc-proxy001   │ 
-                    └────────┬────────┘ +                  ────────┬────────┘ 
-                             │ +                            │ 
-                             ▼ +              ────────────┼────────────┐ 
-                         Lobby +              │             │             │ 
-                             │ +              ▼             ▼             ▼ 
-                ┌────────────┼────────────┐ +          Survival        Events      toekomstige 
-                ▼            ▼            ▼ +             VM             VM        gameservers
-             Survival      Events      toekomst+
 ``` ```
  
-De backendservers zijn niet bedoeld om rechtstreeks vanaf internet bereikbaar te zijn.+De lobby en proxy draaien momenteel vanwege de opbouwfase op dezelfde host.
  
-Dit betekent dat een speler niet rechtstreeks verbinding maakt met: +De gameservers draaien als afzonderlijke VM's op de beschikbare Proxmox-infrastructuur.
- +
-```text +
-Survival +
-Lobby +
-Events +
-``` +
- +
-maar altijd via de netwerkarchitectuur van Tulpencraft.+
  
 --- ---
  
-🔥 Firewalld+## 🚪 Externe poorten
  
-De firewallservice wordt geleverd 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
 ``` ```
  
-De service kan worden gecontroleerd met: +Backend Minecraft-poorten worden niet publiek geopend.
- +
-```bash +
-sudo systemctl status firewalld +
-``` +
- +
-Ingeschakeld bij het opstarten: +
- +
-```bash +
-sudo systemctl is-enabled firewalld +
-```+
  
 --- ---
  
-🗂️ Zones+## 🎙️ Simple Voice Chat
  
-Firewalld gebruikt **zones** om een vertrouwensniveau aan netwerkverbindingen te koppelen. Interfaces en bronnen kunnen aan een zone worden gekoppeld en binnen die zone worden services en poorten toegestaan.+Voor proximity voice chat wordt **Simple Voice Chat** gebruikt op Survival en toekomstige gameservers waarop voice chat wordt aangeboden.
  
-De standaardzone kan worden bekeken met:+Simple Voice Chat gebruikt standaard:
  
-```bash +```text 
-sudo firewall-cmd --get-default-zone+24454/UDP
 ``` ```
  
-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
 ``` ```
  
-De 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 +
-```+
  
----+De Simple Voice Chat-configuratie bevindt zich bij Paper doorgaans in:
  
-# 🌍 Public zone+```text 
 +plugins/voicechat/voicechat-server.properties 
 +```
  
-Voor een server met een publiek netwerkinterface wordt doorgaans de `publiczone gebruikt. +> Alleen TCP `25565openen is onvoldoende voor Simple Voice ChatDe benodigde UDP-poort moet eveneens bereikbaar zijn.
- +
-Deze zone is bedoeld voor netwerken waarvan andere systemen niet automatisch worden vertrouwdAlleen expliciet toegestane services en poorten worden beschikbaar gesteld. +
- +
-Voor Tulpencraft is dit met name relevant voor de proxy.+
  
 --- ---
  
-🚪 Proxy-firewall+## 🗳️ Votifier / NuVotifier
  
-De Velocity Proxy vormt het publieke toegangspunt van het Minecraft-netwerk.+Voor toekomstige stemintegratie kan **NuVotifier** worden gebruikt.
  
-De belangrijkste publiek toegankelijke poort is:+De standaardpoort van NuVotifier is:
  
-|   Poort | Protocol | Doel                 | +```text 
-| ------: | -------- | -------------------- | +8192/TCP
-`25565| TCP      | Minecraft / Velocity | +
- +
-De poort wordt expliciet geopend: +
- +
-```bash +
-sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp +
-sudo firewall-cmd --reload+
 ``` ```
  
-Controle:+Wanneer Votifier daadwerkelijk wordt geactiveerd, wordt alleen de daarvoor benodigde poort extern geopend.
  
-```bash +```text 
-sudo firewall-cmd --zone=public --list-ports+Stemwebsite 
 +     │ 
 +     │ TCP 8192 
 +     ▼ 
 +┌───────────────┐ 
 +│  NuVotifier   │ 
 +└───────┬───────┘ 
 +        │ 
 +        ▼ 
 +   Minecraft server
 ``` ```
  
-Verwacht onder andere:+De Votifier-poort wordt **niet geopend zolang de dienst niet actief is**.
  
-```text +Het gebruikte Votifier-token wordt nooit in deze wiki opgeslagen.
-25565/tcp +
-```+
  
 --- ---
  
-🔐 SSH+## 🗄️ MySQL / MariaDB
  
-SSH is een beheerinterface en wordt niet beschouwd als een Minecraft-netwerkdienst.+De database is momenteel onderdeel van de interne infrastructuur en draait op `mc-proxy001`.
  
-Wanneer SSH publiek bereikbaar moet zijn, wordt de SSH-service expliciet toegestaan:+MySQL/MariaDB is een **interne dienst** en wordt niet publiek beschikbaar gesteld.
  
-```bash +De standaardpoort is: 
-sudo firewall-cmd --permanent --zone=public --add-service=ssh + 
-sudo firewall-cmd --reload+```text 
 +3306/TCP
 ``` ```
  
-Controle:+Deze poort wordt uitsluitend op het interne netwerk toegestaan.
  
-```bash +```text 
-sudo firewall-cmd --zone=public --list-services+              INTERNET 
 +                  │ 
 +                  │ ❌ TCP 3306 
 +                  ▼ 
 +             ┌─────────┐ 
 +             │ FIREWALL│ 
 +             └────┬────┘ 
 +                  │ 
 +                  │ ✅ intern 
 +                  ▼ 
 +          ┌───────────────┐ 
 +          │ MySQL/MariaDB│ 
 +          │    :3306      │ 
 +          └───────────────┘
 ``` ```
  
-SSH wordt daarnaast beschermd door de maatregelen beschreven in:+Alleen systemen die daadwerkelijk gebruikmaken van de database mogen verbinding maken.
  
-[[technische-infrastructuur:server-hardening|Server hardening]]+Bijvoorbeeld:
  
-waaronder:+| Bron     | Doel          Poort | Toegang       | 
 +| -------- | -------- | ---------| ------------- | 
 +| Lobby    | Database | `3306/TCP` | Intern        | 
 +| Survival | Database | `3306/TCP` | Intern        | 
 +| Events   | Database | `3306/TCP` | Intern        | 
 +| Internet | Database | `3306/TCP` | ❌ Geblokkeerd |
  
-* SSH-sleutels; +Wanneer de database in de toekomst naar een afzonderlijke VM wordt verplaatst, blijft hetzelfde beveiligingsprincipe gelden.
-* uitschakelen van directe root-login; +
-* uitschakelen van wachtwoordauthenticatie; +
-* Fail2Ban; +
-* beperkte gebruikersrechten.+
  
 --- ---
  
-🏠 Backendservers+## 🎮 Backend Minecraft-servers
  
-Backendservers zoals Survival en Events worden niet publiek aangeboden.+Backendservers luisteren uitsluitend op interne adressen.
  
-Het uitgangspunt is:+Bijvoorbeeld:
  
 ```text ```text
-Internet +Velocity
-   │ +
-   X+
    │    │
-Survival+   ├── Lobby       :25566 
 +   ├── Survival    :25567 
 +   └── Events      :25568
 ``` ```
  
-maar:+Deze poorten worden **niet** op de publieke interface geopend. 
 + 
 +Een speler mag bijvoorbeeld niet rechtstreeks verbinding maken met:
  
 ```text ```text
-Internet +<SERVER_IP>:25567
-   │ +
-   ▼ +
-Velocity +
-   │ +
-   ▼ +
-Survival+
 ``` ```
  
-De firewall op een backendserver moet daarom geen algemene publieke Minecraft-poort openen. +De enige publiek bedoelde Minecraft-ingang is:
- +
-De exacte interne netwerkregels zijn afhankelijk van de uiteindelijke netwerkconfiguratie van de Tulpencraft-infrastructuur. +
- +
---- +
- +
-# 🏠 Lobby +
- +
-De lobby bevindt zich momenteel op dezelfde host als de proxy:+
  
 ```text ```text
-mc-proxy001 +<SERVER_IP>:25565
-│ +
-├── Velocity +
-│ +
-└── Lobby+
 ``` ```
  
-Dit is onderdeel van de huidige kosten- en infrastructuurkeuze. +De proxy verzorgt vervolgens de verbinding naar de backendservers.
- +
-Omdat de lobby lokaal op dezelfde host draait als Velocity, hoeft de lobbypoort niet publiek beschikbaar te worden gesteld voor spelers. +
- +
-De proxy communiceert lokaal met de lobby.+
  
 --- ---
  
-🧱 Survival+## 🔐 SSH
  
-Survival draait als afzonderlijke VM op de huidige Proxmox-infrastructuur.+SSH wordt gebruikt voor systeembeheer.
  
-De server is niet bedoeld als publiek Minecraft-entrypoint.+SSH is uitsluitend bedoeld voor beheertoegang en wordt waar mogelijk beperkt tot vertrouwde beheerbronnen.
  
-De gewenste netwerkstroom is:+Het uitgangspunt is:
  
-```text +* geen onnodige publieke SSH-toegang; 
-Speler +* alleen beheer vanaf vertrouwde adressen of netwerken; 
-  │ +* SSH key-based authentication; 
-  ▼ +* root-login via SSH uitgeschakeld.
-Velocity +
-  │ +
-  ▼ +
-Survival +
-```+
  
-Niet:+Zie ook:
  
-```text +* [[technische-infrastructuur:server-hardening|Server hardening]] 
-Speler +* [[technische-infrastructuur:selinux|SELinux]]
-  │ +
-  ▼ +
-Survival +
-``` +
- +
-De firewall en netwerkconfiguratie moeten deze architectuur ondersteunen.+
  
 --- ---
  
-🎮 Events+## 🧱 firewalld
  
-Voor toekomstige Events-servers geldt hetzelfde uitgangspunt.+De host-firewall wordt beheerd met **firewalld**.
  
-Een Events-server wordt niet zelfstandig aan het internet blootgesteld wanneer dit niet noodzakelijk is.+De firewallstatus kan worden gecontroleerd met:
  
-De gewenste architectuur is: +```bash 
- +sudo firewall-cmd --state
-```text +
-Speler +
-  │ +
-  ▼ +
-Velocity +
-  │ +
-  ▼ +
-Events+
 ``` ```
  
-Eventuele uitzonderingen moeten worden gedocumenteerd. +De actieve configuratie bekijken:
- +
---- +
- +
-# 📦 Services versus poorten +
- +
-Firewalld ondersteunt zowel vooraf gedefinieerde services als losse poortdefinities. +
- +
-Een service is een verzameling van bijbehorende netwerkregels, bijvoorbeeld SSH, HTTP of HTTPS. +
- +
-Voor standaarddiensten heeft het daarom de voorkeur om een service te gebruiken:+
  
 ```bash ```bash
-sudo firewall-cmd --permanent --add-service=ssh+sudo firewall-cmd --list-all
 ``` ```
  
-Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend:+Actieve zones bekijken:
  
 ```bash ```bash
-sudo firewall-cmd --permanent --add-port=25565/tcp+sudo firewall-cmd --get-active-zones
 ``` ```
  
-Daarna:+Beschikbare services bekijken:
  
 ```bash ```bash
-sudo firewall-cmd --reload+sudo firewall-cmd --get-services
 ``` ```
  
 --- ---
  
-⚠️ Runtime versus permanent+## ➕ Poort tijdelijk openen
  
-Firewalld kent twee configuratielagen: +Een poort kan tijdelijk worden geopend met:
- +
-### Runtime +
- +
-Een runtime-regel wordt direct actief, maar is niet automatisch blijvend na een reload of reboot. +
- +
-Bijvoorbeeld:+
  
 ```bash ```bash
Regel 339: Regel 278:
 ``` ```
  
-### Permanent+Dit is vooral bedoeld voor testen.
  
-Een permanente regel wordt opgeslagen in de firewallconfiguratie:+Een dergelijke wijziging wordt niet als permanente configuratie beschouwd. 
 + 
 +--- 
 + 
 +## 💾 Poort permanent openen 
 + 
 +Wanneer een poort definitief onderdeel van de infrastructuur wordt:
  
 ```bash ```bash
 sudo firewall-cmd --permanent --add-port=25565/tcp sudo firewall-cmd --permanent --add-port=25565/tcp
 +sudo firewall-cmd --reload
 ``` ```
  
-Daarna wordt de actieve configuratie opnieuw geladen:+Daarna controleren:
  
 ```bash ```bash
-sudo firewall-cmd --reload+sudo firewall-cmd --list-ports
 ``` ```
- 
-Voor productieservers gebruiken we bij voorkeur **permanente configuratie**, zodat de firewallconfiguratie na een reboot behouden blijft. 
  
 --- ---
  
-🔍 Firewallconfiguratie 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
 ``` ```
  
-Alle actieve zones:+Controleren:
  
 ```bash ```bash
-sudo firewall-cmd --list-all-zones+sudo firewall-cmd --list-ports
 ``` ```
  
-Openstaande services:+Verwacht:
  
-```bash +```text 
-sudo firewall-cmd --list-services+24454/udp
 ``` ```
  
-Openstaande poorten:+---
  
-```bash +## 🗳️ Votifier openen
-sudo firewall-cmd --list-ports +
-```+
  
-Beschikbare services:+Wanneer NuVotifier actief wordt:
  
 ```bash ```bash
-sudo firewall-cmd --get-services+sudo firewall-cmd --permanent --add-port=8192/tcp 
 +sudo firewall-cmd --reload
 ``` ```
  
-De actieve interfaces:+Daarna controleren:
  
 ```bash ```bash
-sudo firewall-cmd --get-active-zones+sudo firewall-cmd --list-ports
 ``` ```
  
-Deze commando's behoren tot de belangrijkste controles tijdens de hardening van een nieuwe server.+De poort wordt verwijderd wanneer Votifier niet langer wordt gebruikt.
  
 --- ---
  
-👀 Luisterende poorten controleren+## 🗄️ MySQL intern toestaan
  
-De firewallconfiguratie vertelt niet welke applicaties daadwerkelijk luisteren. +MySQL mag **niet zomaar publiek worden geopend** met:
- +
-Daarom wordt ook gecontroleerd met:+
  
 ```bash ```bash
-sudo ss -tulpn+sudo firewall-cmd --permanent --add-port=3306/tcp
 ``` ```
  
-Dit maakt bijvoorbeeld zichtbaar:+Wanneer de database op een afzonderlijke VM staat, wordt toegang bij voorkeur beperkt tot het interne netwerk of specifieke bronadressen. 
 + 
 +Bijvoorbeeld:
  
 ```text ```text
-Velocity +Lobby VM 
-   └── 0.0.0.0:25565 +    │ 
- +    │ TCP 3306 
-SSH +    ▼ 
-   └── 0.0.0.0:22+Database VM
 ``` ```
  
-Een belangrijke securitycontrole is daarom: +De database accepteert uitsluitend verbindingen vanuit bekende Tulpencraft-systemen.
- +
-> **Welke poorten luisteren daadwerkelijk, en welke daarvan zijn via de firewall bereikbaar?** +
- +
-Een poort die niet nodig is, moet bij voorkeur helemaal niet door een applicatie worden geopend.+
  
 --- ---
  
-🧪 Nieuwe poort openen+## 🚫 Default-deny principe
  
-Wanneer een nieuwe service een netwerkpoort nodig heeft, wordt eerst bepaald:+De firewall volgt zoveel mogelijk het **default-deny-principe**.
  
-1. waarom de poort nodig is; +Conceptueel:
-2. of de service publiek of intern moet zijn; +
-3. welk protocol noodzakelijk is; +
-4. vanaf welke bronnen toegang noodzakelijk is; +
-5. of een bestaande firewalld-service gebruikt kan worden.+
  
-Daarna wordt de regel toegevoegd. +```text 
- +                       INTERNET 
-Bijvoorbeeld: +                           │ 
- +                           ▼ 
-```bash +                    ┌────────────┐ 
-sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> +                    │  FIREWALL  │ 
-sudo firewall-cmd --reload+                    └─────┬──────┘ 
 +                          │ 
 +             ┌────────────┼────────────┐ 
 +             │            │            │ 
 +             ▼            ▼            ▼ 
 +        TCP 25565     UDP 24454    TCP 8192 
 +         Velocity     Voice Chat    Votifier 
 +             │            │            │ 
 +             └────────────┴────────────┘ 
 +                          │ 
 +                    overige traffic 
 +                          │ 
 +                          ▼ 
 +                        DROP
 ``` ```
  
-Daarna controleren: +Alleen verkeer dat expliciet noodzakelijk is, wordt toegestaan.
- +
-```bash +
-sudo firewall-cmd --zone=public --list-all +
-```+
  
 --- ---
  
-🗑️ Poort verwijderen+## 🛡️ Geen directe backendtoegang
  
-Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd.+Een belangrijk onderdeel van de beveiligingsarchitectuur is dat spelers nooit rechtstreeks met backendservers communiceren.
  
-Bijvoorbeeld:+Niet toegestaan:
  
-```bash +```text 
-sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp +Internet ──► Survival 
-sudo firewall-cmd --reload+Internet ──► Lobby 
 +Internet ──► Events 
 +Internet ──► Database
 ``` ```
  
-Daarna: +Wel toegestaan:
- +
-```bash +
-sudo firewall-cmd --zone=public --list-ports +
-``` +
- +
---- +
- +
-# 🔒 Bron-IP beperken +
- +
-Niet iedere service hoeft vanaf het volledige internet bereikbaar te zijn. +
- +
-Wanneer een service bijvoorbeeld uitsluitend vanaf een beheer-IP of intern netwerk bereikbaar moet zijn, kan firewalld hiervoor uitgebreidere regels gebruiken. +
- +
-Hiervoor kunnen onder andere **rich rules** worden gebruikt. Firewalld ondersteunt hiermee bron- en bestemmingsadressen, logging en aanvullende voorwaarden. +
- +
-Voorbeeldconcept:+
  
 ```text ```text
 Internet Internet
-   │ +    │ 
-   X +    ▼ 
-   │ +Velocity Proxy 
-beheerpoort +    │ 
- +    ▼ 
-Beheer-IP +Lobby 
-   │ +    │ 
-   ▼ +    ├──► Survival 
-beheerpoort+    ├──► Events 
 +    └──► toekomstige servers
 ``` ```
  
-Dit heeft de voorkeur boven een publiek toegankelijke beheerinterface wanneer de netwerkarchitectuur dit mogelijk maakt.+Hierdoor blijft de netwerkstructuur centraal beheersbaar.
  
 --- ---
  
-📝 Logging+## 🚀 Toekomstige infrastructuur
  
-Firewallgebeurtenissen kunnen onderdeel zijn van de algemene serverlogging.+Wanneer Tulpencraft verder groeit, kan de infrastructuur worden opgesplitst over meerdere VM's en/of fysieke nodes.
  
-De firewallservice:+Een mogelijke toekomstige inrichting:
  
-```bash +```text 
-sudo journalctl -u firewalld+                         INTERNET 
 +                             │ 
 +                             ▼ 
 +                      ┌────────────┐ 
 +                      │   Proxy    │ 
 +                      │  Velocity  │ 
 +                      └─────┬──────┘ 
 +                            │ 
 +              ┌─────────────┼─────────────┐ 
 +              ▼             ▼             ▼ 
 +           Lobby         Survival       Events 
 +              │             │             │ 
 +              └─────────────┼─────────────┘ 
 +                            │ 
 +                            ▼ 
 +                     Database VM
 ``` ```
  
-Daarnaast kunnen kernel/netfilter-gerelateerde gebeurtenissen afhankelijk van de configuratie via het systeemlog beschikbaar zijn.+Elke VM krijgt daarbij uitsluitend de netwerktoegang die daadwerkelijk noodzakelijk is.
  
-Firewalllogging wordt niet zonder reden maximaal aangezet. +De exacte verdeling van VM's over Proxmox-nodes wordt afhankelijk van de benodigde resources en de groei van Tulpencraft bepaald.
- +
-Te uitgebreide logging kan zelf aanzienlijke hoeveelheden logdata produceren.+
  
 --- ---
  
-🛡️ Firewall en Fail2Ban+## 📝 Firewallwijzigingen documenteren
  
-Firewalld en Fail2Ban vullen elkaar aan.+Iedere structurele firewallwijziging moet worden gedocumenteerd. 
 + 
 +Bijvoorbeeld:
  
 ```text ```text
-                  ┌──────────────┐ +Datum:        2026-08-23 
-Internet ────────►│  firewalld   │ +Server:       mc-proxy001 
-                  └──────┬───────┘ +Poort:        24454/UDP 
-                         │ +Dienst:       Simple Voice Chat 
-                         ▼ +Reden:        Proximity voice chat 
-                    SSH services +Toegang:      Publiek
-                         │ +
-                         ▼ +
-                    logbestanden +
-                         │ +
-                         ▼ +
-                    ┌──────────┐ +
-                    │ Fail2Ban │ +
-                    └────┬─────┘ +
-                         │ +
-                         ▼ +
-                   tijdelijke ban+
 ``` ```
  
-Firewalld bepaalt welke netwerktoegang überhaupt mogelijk is+Hierdoor blijft inzichtelijk waarom een poort geopend is en kan ongebruikte toegang later worden verwijderd.
- +
-Fail2Ban reageert vervolgens op herhaaldelijk ongewenst gedrag, bijvoorbeeld brute-forcepogingen op SSH. +
- +
-Zie: +
- +
-[[technische-infrastructuur:server-hardening|Server hardening]] +
- +
-voor de volledige hardeningconfiguratie.+
  
 --- ---
  
-🔄 Wijzigingen documenteren+## 📋 Beveiligingsprincipes
  
-Firewallwijzigingen worden gedocumenteerd wanneer ze structureel onderdeel worden van de serverconfiguratie.+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                | +
- +
-Hierdoor blijft duidelijk waarom een poort geopend is.+
  
 --- ---
  
-📋 Firewall-baseline+## 🔎 Controle
  
-Een nieuwe Tulpencraft-server moet minimaal worden gecontroleerd op:+Na firewallwijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren:
  
-* [ ] firewalld geïnstalleerd +```bash 
-* [ ] firewalld actief +sudo ss -tulpn 
-* [ ] firewalld ingeschakeld bij boot +```
-* [ ] juiste zone vastgesteld +
-* [ ] alleen noodzakelijke services toegestaan +
-* [ ] alleen noodzakelijke poorten toegestaan +
-* [ ] publieke en interne services onderscheiden +
-* [ ] luisterende poorten gecontroleerd met `ss+
-* [ ] permanente configuratie gecontroleerd +
-* [ ] firewallconfiguratie na reload gecontroleerd +
-* [ ] SSH-toegang getest +
-* [ ] Minecraft-netwerktoegang getest +
-* [ ] backendservers niet onnodig publiek bereikbaar +
-* [ ] firewallwijzigingen gedocumenteerd+
  
----+En welke poorten door firewalld zijn toegestaan:
  
-# 🌷 Tulpencraft firewallbeleid+```bash 
 +sudo firewall-cmd --list-all 
 +```
  
-De firewall is geen vervanging voor een correcte netwerkarchitectuur.+Ook moet worden gecontroleerd of een dienst daadwerkelijk alleen op het bedoelde adres luistert.
  
-Tulpencraft gebruikt daarom meerdere beveiligingslagen:+Bijvoorbeeld:
  
 ```text ```text
-Internet +0.0.0.0:3306
-   │ +
-   ▼ +
-┌───────────────────────┐ +
-│   Externe toegang     │ +
-└──────────┬────────────┘ +
-           │ +
-           ▼ +
-┌───────────────────────┐ +
-│      firewalld        │ +
-└──────────┬────────────┘ +
-           │ +
-           ▼ +
-┌───────────────────────┐ +
-│ Velocity Proxy        │ +
-└──────────┬────────────┘ +
-           │ +
-           ▼ +
-┌───────────────────────┐ +
-│ Backend servers       │ +
-│ Lobby / Survival etc│ +
-└───────────────────────┘+
 ``` ```
  
-Daarbovenop worden onder andere **SELinux**, **SSH-hardening**, **Fail2Ban**, beperkte gebruikersrechten en regelmatige updates toegepast.+is wezenlijk anders dan:
  
-Het uitgangspunt blijft:+```text 
 +127.0.0.1:3306 
 +```
  
-> **Een service die niet bereikbaar hoeft te zijn, wordt niet bereikbaar gemaakt.**+of een specifiek intern IP-adres.
  
 --- ---
  
-🔗 Gerelateerde documentatie+## ⚠️ 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: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]] 
- 
---- 
- 
-> **Tulpencraft firewall baseline** 
-> 
-> De firewall wordt ingericht volgens het principe **least exposure**: alleen noodzakelijke netwerktoegang wordt toegestaan en backendservers worden niet rechtstreeks aan het publieke internet blootgesteld. 
  
  • technische-infrastructuur/firewall.1787474464.txt.gz
  • Laatst gewijzigd: 2026/08/23 10:41
  • door rroethof