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
technische-infrastructuur:firewall [2026/08/23 10:59] 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 op Rocky Linux 10.+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. De firewall vormt een belangrijke beveiligingslaag tussen het Tulpencraft-netwerk, externe verbindingen en de verschillende interne diensten.
  
-Het uitgangspunt is:+Het uitgangspunt is eenvoudig:
  
 > **Alles wat niet expliciet noodzakelijk is, wordt geblokkeerd.** > **Alles wat niet expliciet noodzakelijk is, wordt geblokkeerd.**
Regel 13: Regel 13:
 --- ---
  
-## Firewallarchitectuur+## 🌐 Firewallarchitectuur
  
-De netwerkarchitectuur is opgebouwd rond een centrale proxy:+De netwerkarchitectuur is opgebouwd rond een centrale proxy.
  
 ```text ```text
-Internet +                         INTERNET 
-   │ +                             │ 
-   │ TCP 25565 +                              
-   ▼ +                     TCP :25565 
-─────────────────────┐ +                             │ 
-│   Velocity Proxy    │ +                             ▼ 
-│   mc-proxy001       │ +                  ┌───────────────────┐ 
-└─────────┬───────────┘ +                  │  Velocity Proxy   │ 
-          │ +                  │    mc-proxy001    │ 
-          │ intern netwerk +                  └─────────┬─────────┘ 
-          ▼ +                            │ 
-─────────────────────┐ +                            │ intern netwerk 
-│        Lobby        │ +                            ▼ 
-│     mc-proxy001     │ +                  ┌───────────────────┐ 
-└─────────┬───────────┘ +                  │       Lobby       │ 
-          │ +                  │     mc-proxy001   │ 
-          ├──────────► Survival VM +                  └─────────┬─────────┘ 
-          │ +                            │ 
-          ├──────────► Event servers +              ┌──────────────────────────┐ 
-          │ +              │             │             │ 
-          └──────────► Toekomstige gameservers+              ▼             ▼             ▼ 
 +          Survival        Events      toekomstige 
 +             VM             VM        gameservers
 ``` ```
  
Regel 47: Regel 49:
 --- ---
  
-## Externe poorten+## 🚪 Externe poorten
  
 Alleen diensten die daadwerkelijk vanaf internet bereikbaar moeten zijn, krijgen een open firewallpoort. Alleen diensten die daadwerkelijk vanaf internet bereikbaar moeten zijn, krijgen een open firewallpoort.
  
-### Minecraft +|   Poort | Protocol | Dienst                | Toegang                
- +| ------: | :------: | --------------------- | ---------------------- | 
-|   Poort | Protocol | Dienst                | Toegang                  +| `25565` |    TCP   | Velocity Proxy        | Publiek                
-| ------: | :------: | --------------------- | ------------------------ | +|  `8192` |    TCP   | Votifier / NuVotifier | Publiek, indien actief 
-| `25565` |    TCP   | Velocity Proxy        | Publiek                  +| `24454` |    UDP   | Simple Voice Chat     | Publiek, indien actief |
-|  `8192` |    TCP   | Votifier / NuVotifier | Publiek, indien gebruikt +
-| `24454` |    UDP   | Simple Voice Chat     | Publiek, per server      |+
  
-De Minecraft-spelers verbinden uitsluitend met:+De primaire Minecraft-ingang is:
  
 ```text ```text
Regel 69: Regel 69:
 --- ---
  
-## Simple Voice Chat+## 🎙️ Simple Voice Chat
  
-Voor proximity voice chat wordt **Simple Voice Chat** gebruikt.+Voor proximity voice chat wordt **Simple Voice Chat** gebruikt op Survival en toekomstige gameservers waarop voice chat wordt aangeboden.
  
 Simple Voice Chat gebruikt standaard: Simple Voice Chat gebruikt standaard:
Regel 79: Regel 79:
 ``` ```
  
-Deze poort moet bereikbaar zijn vanaf internet. De voice-chatcommunicatie gebruikt UDP en staat los van de normale Minecraft TCP-verbinding.+Deze poort moet vanaf internet bereikbaar zijnVoice-chatcommunicatie gebruikt UDP en staat los van de normale Minecraft TCP-verbinding.
  
-Voor iedere server waarop Simple Voice Chat wordt aangebodenmoet een eigen bereikbare UDP-poort worden gebruikt wanneer meerdere servers dezelfde host/IP delen.+```text 
 +Speler 
 +  │ 
 +  ├── TCP 25565 ──────► Velocity 
 +  │ 
 +  └── UDP 24454 ──────► Simple Voice Chat 
 +``` 
 + 
 +Wanneer meerdere gameservers voice chat aanbieden en dezelfde publieke IP-adresruimte gebruikenkrijgt iedere server een eigen UDP-poort.
  
 Bijvoorbeeld: Bijvoorbeeld:
  
 | Server                 | Voice chat |           Poort | | Server                 | Voice chat |           Poort |
-| ---------------------- | ---------- | --------------:+| ---------------------- | :--------| --------------:
-| Survival               Ja         |     `24454/UDP` | +| Survival                    ✅     |     `24454/UDP` | 
-| Events                 Ja         |     `24455/UDP` | +| Events                      ✅     |     `24455/UDP` | 
-| Toekomstige gameserver | Ja         | eigen UDP-poort |+| Toekomstige gameserver |      ✅     | eigen UDP-poort |
  
 De exacte poortindeling wordt vastgelegd zodra de betreffende gameservers worden ingericht. De exacte poortindeling wordt vastgelegd zodra de betreffende gameservers worden ingericht.
  
-> **Let op:** Simple Voice Chat kan niet worden behandeld als gewone Minecraft TCP-traffic. Alleen TCP 25565 openen is onvoldoende voor voice chat. +De Simple Voice Chat-configuratie bevindt zich bij Paper doorgaans in:
- +
-De configuratie bevindt zich bij Paper doorgaans in:+
  
 ```text ```text
Regel 101: Regel 107:
 ``` ```
  
-De standaardconfiguratie gebruikt poort `24454`.+> Alleen TCP `25565openen is onvoldoende voor Simple Voice Chat. De benodigde UDP-poort moet eveneens bereikbaar zijn.
  
 --- ---
  
-## Votifier / NuVotifier+## 🗳️ Votifier / NuVotifier
  
 Voor toekomstige stemintegratie kan **NuVotifier** worden gebruikt. Voor toekomstige stemintegratie kan **NuVotifier** worden gebruikt.
Regel 114: Regel 120:
 8192/TCP 8192/TCP
 ``` ```
- 
-NuVotifier luistert standaard op TCP-poort `8192`, tenzij in de configuratie een andere poort wordt ingesteld. 
  
 Wanneer Votifier daadwerkelijk wordt geactiveerd, wordt alleen de daarvoor benodigde poort extern geopend. Wanneer Votifier daadwerkelijk wordt geactiveerd, wordt alleen de daarvoor benodigde poort extern geopend.
  
 ```text ```text
-Internet +Stemwebsite 
-   │ +     │ 
-   └── TCP 8192 +     │ TCP 8192 
-          │ +     ▼ 
-          ▼ +┌───────────────┐ 
-      NuVotifier+│  NuVotifier   │ 
 +└───────┬───────┘ 
 +        │ 
 +        ▼ 
 +   Minecraft server
 ``` ```
  
-De Votifier-poort mag **niet** zonder reden worden geopend wanneer de dienst niet actief is.+De Votifier-poort wordt **niet geopend zolang de dienst niet actief is**.
  
 Het gebruikte Votifier-token wordt nooit in deze wiki opgeslagen. Het gebruikte Votifier-token wordt nooit in deze wiki opgeslagen.
Regel 134: Regel 142:
 --- ---
  
-## MySQL / MariaDB+## 🗄️ MySQL / MariaDB
  
-De database wordt momenteel op dezelfde infrastructuur als de proxy/lobby gehost.+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. MySQL/MariaDB is een **interne dienst** en wordt niet publiek beschikbaar gesteld.
  
-De standaardpoort:+De standaardpoort is:
  
 ```text ```text
Regel 146: Regel 154:
 ``` ```
  
-wordt daarom uitsluitend op het interne netwerk toegestaan. +Deze poort wordt uitsluitend op het interne netwerk toegestaan.
- +
-Conceptueel:+
  
 ```text ```text
-Internet +              INTERNET 
-   │ +                  │ 
-   │ ❌ TCP 3306 +                  │ ❌ TCP 3306 
-   ▼ +                  ▼ 
-Firewall +             ┌─────────┐ 
-    +             │ FIREWALL│ 
-   │ +             └────┬────┘ 
-   └── Intern netwerk ──► MySQL/MariaDB+                  │ 
 +                  │ ✅ intern 
 +                  ▼ 
 +          ┌───────────────┐ 
 +          │ MySQL/MariaDB│ 
 +          │    :3306      │ 
 +          └───────────────┘
 ``` ```
  
Regel 165: Regel 177:
 Bijvoorbeeld: Bijvoorbeeld:
  
-| Bron     | Doel          Poort | Toegang         +| Bron     | Doel          Poort | Toegang       
-| -------- | -------- | ---------: | --------------- | +| -------- | -------- | ---------: | ------------- | 
-| Lobby    | Database | `3306/TCP` | Intern          +| Lobby    | Database | `3306/TCP` | Intern        
-| Survival | Database | `3306/TCP` | Intern          +| Survival | Database | `3306/TCP` | Intern        
-| Events   | Database | `3306/TCP` | Intern          +| Events   | Database | `3306/TCP` | Intern        
-| Internet | Database | `3306/TCP` | **Geblokkeerd** |+| Internet | Database | `3306/TCP` | ❌ Geblokkeerd |
  
 Wanneer de database in de toekomst naar een afzonderlijke VM wordt verplaatst, blijft hetzelfde beveiligingsprincipe gelden. Wanneer de database in de toekomst naar een afzonderlijke VM wordt verplaatst, blijft hetzelfde beveiligingsprincipe gelden.
Regel 176: Regel 188:
 --- ---
  
-## Backend Minecraft-servers+## 🎮 Backend Minecraft-servers
  
 Backendservers luisteren uitsluitend op interne adressen. Backendservers luisteren uitsluitend op interne adressen.
  
-Voorbeeld:+Bijvoorbeeld:
  
 ```text ```text
Regel 192: Regel 204:
 Deze poorten worden **niet** op de publieke interface geopend. Deze poorten worden **niet** op de publieke interface geopend.
  
-De firewall moet ervoor zorgen dat een externe gebruiker niet rechtstreeks verbinding kan maken met bijvoorbeeld:+Een speler mag bijvoorbeeld niet rechtstreeks verbinding maken met:
  
 ```text ```text
Regel 203: Regel 215:
 <SERVER_IP>:25565 <SERVER_IP>:25565
 ``` ```
 +
 +De proxy verzorgt vervolgens de verbinding naar de backendservers.
  
 --- ---
  
-## SSH+## 🔐 SSH
  
 SSH wordt gebruikt voor systeembeheer. SSH wordt gebruikt voor systeembeheer.
  
-De SSH-poort wordt uitsluitend beschikbaar gesteld voor beheer en wordt niet gebruikt voor Minecraft-verkeer.+SSH is uitsluitend bedoeld voor beheertoegang en wordt waar mogelijk beperkt tot vertrouwde beheerbronnen.
  
-Wanneer mogelijk wordt SSH beperkt tot:+Het uitgangspunt is:
  
-vertrouwde beheeradressen+geen onnodige publieke SSH-toegang
-het interne netwerk; +alleen beheer vanaf vertrouwde adressen of netwerken
-* VPN-beheer; +* SSH key-based authentication; 
-of andere expliciet toegestane beheerbronnen. +* root-login via SSH uitgeschakeld.
- +
-SSH gebruikt uitsluitend key-based authentication. +
- +
-Root-login via SSH is uitgeschakeld.+
  
 Zie ook: Zie ook:
  
-* [[technische-infrastructuur|Server hardening]] +* [[technische-infrastructuur:server-hardening|Server hardening]] 
-* [[technische-infrastructuur|SELinux]]+* [[technische-infrastructuur:selinux|SELinux]]
  
 --- ---
  
-## firewalld+## 🧱 firewalld
  
-De firewall wordt beheerd met **firewalld**.+De host-firewall wordt beheerd met **firewalld**.
  
-Basiscontrole:+De firewallstatus kan worden gecontroleerd met:
  
 ```bash ```bash
Regel 240: Regel 250:
 ``` ```
  
-Actieve configuratie bekijken:+De actieve configuratie bekijken:
  
 ```bash ```bash
Regel 246: Regel 256:
 ``` ```
  
-Alle zones bekijken:+Actieve zones bekijken:
  
 ```bash ```bash
Regel 252: Regel 262:
 ``` ```
  
-Beschikbare services:+Beschikbare services bekijken:
  
 ```bash ```bash
Regel 260: Regel 270:
 --- ---
  
-## Poort tijdelijk openen+## ➕ Poort tijdelijk openen
  
 Een poort kan tijdelijk worden geopend met: Een poort kan tijdelijk worden geopend met:
Regel 268: Regel 278:
 ``` ```
  
-Dit is vooral nuttig voor testen.+Dit is vooral bedoeld voor testen.
  
-Een tijdelijke wijziging blijft niet noodzakelijk behouden na een reload/restart.+Een dergelijke wijziging wordt niet als permanente configuratie beschouwd.
  
 --- ---
  
-## Poort permanent openen+## 💾 Poort permanent openen
  
 Wanneer een poort definitief onderdeel van de infrastructuur wordt: Wanneer een poort definitief onderdeel van de infrastructuur wordt:
Regel 291: Regel 301:
 --- ---
  
-## Voorbeeld: Simple Voice Chat+## 🎙️ Simple Voice Chat openen
  
 Voor de standaard voice-chatpoort: Voor de standaard voice-chatpoort:
Regel 314: Regel 324:
 --- ---
  
-## Voorbeeld: Votifier+## 🗳️ Votifier openen
  
 Wanneer NuVotifier actief wordt: Wanneer NuVotifier actief wordt:
Regel 328: Regel 338:
 sudo firewall-cmd --list-ports sudo firewall-cmd --list-ports
 ``` ```
 +
 +De poort wordt verwijderd wanneer Votifier niet langer wordt gebruikt.
  
 --- ---
  
-## MySQL intern toestaan+## 🗄️ MySQL intern toestaan
  
-MySQL moet niet met:+MySQL mag **niet zomaar publiek worden geopend** met:
  
 ```bash ```bash
---add-port=3306/tcp+sudo firewall-cmd --permanent --add-port=3306/tcp
 ``` ```
  
-zonder verdere beperking publiek worden geopend. +Wanneer de database op een afzonderlijke VM staat, wordt toegang bij voorkeur beperkt tot het interne netwerk of specifieke bronadressen.
- +
-Wanneer MySQL op een afzonderlijke VM staat, wordt toegang bij voorkeur beperkt tot het interne netwerk of specifieke bronadressen.+
  
 Bijvoorbeeld: Bijvoorbeeld:
Regel 347: Regel 357:
 ```text ```text
 Lobby VM Lobby VM
-   │ +    │ 
-   │ TCP 3306 +    │ TCP 3306 
-   +    
 Database VM Database VM
 ``` ```
  
-De database accepteert vervolgens uitsluitend verbindingen vanuit bekende Tulpencraft-systemen.+De database accepteert uitsluitend verbindingen vanuit bekende Tulpencraft-systemen.
  
 --- ---
  
-## Default-deny principe+## 🚫 Default-deny principe
  
-De firewall volgt zoveel mogelijk het principe:+De firewall volgt zoveel mogelijk het **default-deny-principe**. 
 + 
 +Conceptueel:
  
 ```text ```text
-Internet +                       INTERNET 
-   │ +                           │ 
-   ▼ +                           ▼ 
-[ FIREWALL ] +                    ┌────────────┐ 
-   │ +                    │  FIREWALL  │ 
-   ├── TCP 25565  → Velocity +                    └─────┬──────┘ 
-   ├── TCP 8192   → NuVotifier (indien actief) +                          │ 
-   ├── UDP 24454  → Simple Voice Chat +             ┌────────────┼────────────┐ 
-   └── overige    → DROP+             │            │            │ 
 +             ▼            ▼            ▼ 
 +        TCP 25565     UDP 24454    TCP 8192 
 +         Velocity     Voice Chat    Votifier 
 +             │            │            │ 
 +             └────────────┴────────────┘ 
 +                          │ 
 +                    overige traffic 
 +                          │ 
 +                          ▼ 
 +                        DROP
 ``` ```
  
-Interne communicatie wordt afzonderlijk toegestaan waar noodzakelijk.+Alleen verkeer dat expliciet noodzakelijk is, wordt toegestaan.
  
 --- ---
  
-## Geen directe backendtoegang+## 🛡️ Geen directe backendtoegang
  
 Een belangrijk onderdeel van de beveiligingsarchitectuur is dat spelers nooit rechtstreeks met backendservers communiceren. Een belangrijk onderdeel van de beveiligingsarchitectuur is dat spelers nooit rechtstreeks met backendservers communiceren.
Regel 394: Regel 416:
 ```text ```text
 Internet Internet
-   │ +    │ 
-   +    
 Velocity Proxy Velocity Proxy
-   │ +    │ 
-   +    
 Lobby Lobby
-   │ +    │ 
-   ├──► Survival +    ├──► Survival 
-   ├──► Events +    ├──► Events 
-   └──► toekomstige servers+    └──► toekomstige servers
 ``` ```
  
Regel 410: Regel 432:
 --- ---
  
-## Toekomstige infrastructuur+## 🚀 Toekomstige infrastructuur
  
 Wanneer Tulpencraft verder groeit, kan de infrastructuur worden opgesplitst over meerdere VM's en/of fysieke nodes. Wanneer Tulpencraft verder groeit, kan de infrastructuur worden opgesplitst over meerdere VM's en/of fysieke nodes.
  
 Een mogelijke toekomstige inrichting: Een mogelijke toekomstige inrichting:
- 
-```text 
-                    Internet 
-                       │ 
-                       ▼ 
-                ┌──────────────┐ 
-                │    Proxy     │ 
-                │   Velocity   │ 
-                └──────┬───────┘ 
-                       │ 
-          ┌────────────┼────────────┐ 
-          ▼            ▼            ▼ 
-       Lobby        Survival      Events 
-          │            │            │ 
-          └────────────┼────────────┘ 
-                       │ 
-                       ▼ 
-                 Database VM 
-``` 
- 
-Elke VM krijgt daarbij uitsluitend de netwerktoegang die daadwerkelijk noodzakelijk is. 
- 
---- 
- 
-## 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# Firewall 
- 
-De Tulpencraft-servers gebruiken **firewalld** als host-based firewall. 
- 
-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 samen met de netwerkarchitectuur, SELinux, SSH-hardening en Fail2Ban een belangrijke beveiligingslaag binnen Tulpencraft. 
- 
---- 
- 
-## 🎯 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; 
-* welke poorten noodzakelijk zijn; 
-* vanaf welke netwerken toegang nodig is; 
-* of een service publiek of uitsluitend intern bereikbaar moet zijn. 
- 
---- 
- 
-# 🌐 Netwerkarchitectuur 
- 
-Tulpencraft gebruikt een centrale **Velocity Proxy** als toegangspunt. 
  
 ```text ```text
                          INTERNET                          INTERNET
-                            │ 
-                            │ TCP 25565 
-                            ▼ 
-                    ┌─────────────────┐ 
-                    │ Velocity Proxy  │ 
-                    │   mc-proxy001   │ 
-                    └────────┬────────┘ 
                              │                              │
                              ▼                              ▼
-                         Lobby +                      ┌────────────┐ 
-                             │ +                      │   Proxy    │ 
-                ┌────────────────────────┐ +                      │  Velocity  │ 
-                ▼            ▼            ▼ +                      └───────────
-             Survival      Events      toekoms# Firewall +
- +
-De Tulpencraft-servers gebruiken **firewalld** als host-based firewall. +
- +
-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 samen met de netwerkarchitectuur, SELinux, SSH-hardening en Fail2Ban een belangrijke beveiligingslaag binnen Tulpencraft. +
- +
---- +
- +
-## 🎯 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; +
-* welke poorten noodzakelijk zijn; +
-* vanaf welke netwerken toegang nodig is; +
-* of een service publiek of uitsluitend intern bereikbaar moet zijn. +
- +
---- +
- +
-# 🌐 Netwerkarchitectuur +
- +
-Tulpencraft gebruikt een centrale **Velocity Proxy** als toegangspunt. +
- +
-```text +
-                         INTERNET+
                             │                             │
-                            │ TCP 25565 +              ┌────────────────────────── 
-                            ▼ +              ▼             ▼             ▼ 
-                    ┌─────────────────┐ +           Lobby         Survival       Events 
-                    │ Velocity Proxy  │ +              │             │             │ 
-                    │   mc-proxy001   │ +              └─────────────┼─────────────┘
-                    └───────────────┘ +
-                             │ +
-                             ▼ +
-                         Lobby +
-                             │ +
-                ┌────────────┼────────────┐ +
-                ▼            ▼            ▼ +
-             Survival      Events      toekomst +
-``` +
- +
-De backendservers zijn niet bedoeld om rechtst# Firewall +
- +
-De Tulpencraft-servers gebruiken **firewalld** als host-based firewall. +
- +
-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 samen met de netwerkarchitectuur, SELinux, SSH-hardening en Fail2Ban een belangrijke beveiligingslaag binnen Tulpencraft. +
- +
---- +
- +
-## 🎯 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; +
-* welke poorten noodzakelijk zijn; +
-* vanaf welke netwerken toegang nodig is; +
-* of een service publiek of uitsluitend intern bereikbaar moet zijn. +
- +
---- +
- +
-# 🌐 Netwerkarchitectuur +
- +
-Tulpencraft gebruikt een centrale **Velocity Proxy** als toegangspunt. +
- +
-```text +
-                         INTERNET+
                             │                             │
-                            │ TCP 25565 
                             ▼                             ▼
-                    ┌─────────────────┐ +                     Database VM
-                    │ Velocity Proxy  │ +
-                    │   mc-proxy001   │ +
-                    └────────┬────────┘ +
-                             │ +
-                             ▼ +
-                         Lobby +
-                             │ +
-                ┌────────────┼────────────┐ +
-                ▼            ▼            ▼ +
-             Survival      Events      toekomst+
 ``` ```
  
-De backendservers zijn niet bedoeld om rechtstreeks vanaf internet bereikbaar te zijn.+Elke VM krijgt daarbij uitsluitend de netwerktoegang die daadwerkelijk noodzakelijk is.
  
-Dit betekent dat een speler niet rechtstreeks verbinding maakt met: +De exacte verdeling van VM's over Proxmox-nodes wordt afhankelijk van de benodigde resources en de groei van Tulpencraft bepaald.
- +
-```text +
-Survival +
-Lobby +
-Events +
-``` +
- +
-maar altijd via de netwerkarchitectuur van Tulpencraft.+
  
 --- ---
  
-🔥 Firewalld+## 📝 Firewallwijzigingen documenteren
  
-De firewallservice wordt geleverd door `firewalld`. +Iedere structurele firewallwijziging moet worden gedocumenteerd.
- +
-Status controleren: +
- +
-```bash +
-sudo firewall-cmd --state +
-``` +
- +
-Verwachte uitvoer: +
- +
-```text +
-running +
-``` +
- +
-De service kan worden gecontroleerd met: +
- +
-```bash +
-sudo systemctl status firewalld +
-``` +
- +
-Ingeschakeld bij het opstarten: +
- +
-```bash +
-sudo systemctl is-enabled firewalld +
-``` +
- +
---- +
- +
-# 🗂️ Zones +
- +
-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. +
- +
-De standaardzone kan worden bekeken met: +
- +
-```bash +
-sudo firewall-cmd --get-default-zone +
-``` +
- +
-Actieve zones: +
- +
-```bash +
-sudo firewall-cmd --get-active-zones +
-``` +
- +
-De configuratie van de actieve zone: +
- +
-```bash +
-sudo firewall-cmd --list-all +
-``` +
- +
-Alle zones: +
- +
-```bash +
-sudo firewall-cmd --list-all-zones +
-``` +
- +
---- +
- +
-# 🌍 Public zone +
- +
-Voor een server met een publiek netwerkinterface wordt doorgaans de `public` zone gebruikt. +
- +
-Deze zone is bedoeld voor netwerken waarvan andere systemen niet automatisch worden vertrouwd. Alleen expliciet toegestane services en poorten worden beschikbaar gesteld. +
- +
-Voor Tulpencraft is dit met name relevant voor de proxy. +
- +
---- +
- +
-# 🚪 Proxy-firewall +
- +
-De Velocity Proxy vormt het publieke toegangspunt van het Minecraft-netwerk. +
- +
-De belangrijkste publiek toegankelijke poort is: +
- +
-|   Poort | Protocol | Doel                 | +
-| ------: | -------- | -------------------- | +
-| `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: +
- +
-```bash +
-sudo firewall-cmd --zone=public --list-ports +
-``` +
- +
-Verwacht onder andere: +
- +
-```text +
-25565/tcp +
-``` +
- +
---- +
- +
-# 🔐 SSH +
- +
-SSH is een beheerinterface en wordt niet beschouwd als een Minecraft-netwerkdienst. +
- +
-Wanneer SSH publiek bereikbaar moet zijn, wordt de SSH-service expliciet toegestaan: +
- +
-```bash +
-sudo firewall-cmd --permanent --zone=public --add-service=ssh +
-sudo firewall-cmd --reload +
-``` +
- +
-Controle: +
- +
-```bash +
-sudo firewall-cmd --zone=public --list-services +
-``` +
- +
-SSH wordt daarnaast beschermd door de maatregelen beschreven in: +
- +
-[[technische-infrastructuur:server-hardening|Server hardening]] +
- +
-waaronder: +
- +
-* SSH-sleutels; +
-* uitschakelen van directe root-login; +
-* uitschakelen van wachtwoordauthenticatie; +
-* Fail2Ban; +
-* beperkte gebruikersrechten. +
- +
---- +
- +
-# 🏠 Backendservers +
- +
-Backendservers zoals Survival en Events worden niet publiek aangeboden. +
- +
-Het uitgangspunt is: +
- +
-```text +
-Internet +
-   │ +
-   X +
-   │ +
-Survival +
-``` +
- +
-maar: +
- +
-```text +
-Internet +
-   │ +
-   ▼ +
-Velocity +
-   │ +
-   ▼ +
-Survival +
-``` +
- +
-De firewall op een backendserver moet daarom geen algemene publieke Minecraft-poort openen. +
- +
-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 +
-mc-proxy001 +
-│ +
-├── Velocity +
-│ +
-└── Lobby +
-``` +
- +
-Dit is onderdeel van de huidige kosten- en infrastructuurkeuze. +
- +
-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 +
- +
-Survival draait als afzonderlijke VM op de huidige Proxmox-infrastructuur. +
- +
-De server is niet bedoeld als publiek Minecraft-entrypoint. +
- +
-De gewenste netwerkstroom is: +
- +
-```text +
-Speler +
-  │ +
-  ▼ +
-Velocity +
-  │ +
-  ▼ +
-Survival +
-``` +
- +
-Niet: +
- +
-```text +
-Speler +
-  │ +
-  ▼ +
-Survival +
-``` +
- +
-De firewall en netwerkconfiguratie moeten deze architectuur ondersteunen. +
- +
---- +
- +
-# 🎮 Events +
- +
-Voor toekomstige Events-servers geldt hetzelfde uitgangspunt. +
- +
-Een Events-server wordt niet zelfstandig aan het internet blootgesteld wanneer dit niet noodzakelijk is. +
- +
-De gewenste architectuur is: +
- +
-```text +
-Speler +
-  │ +
-  ▼ +
-Velocity +
-  │ +
-  ▼ +
-Events +
-``` +
- +
-Eventuele uitzonderingen moeten worden gedocumenteerd+
- +
---- +
- +
-# 📦 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 +
-sudo firewall-cmd --permanent --add-service=ssh +
-``` +
- +
-Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend: +
- +
-```bash +
-sudo firewall-cmd --permanent --add-port=25565/tcp +
-``` +
- +
-Daarna: +
- +
-```bash +
-sudo firewall-cmd --reload +
-``` +
- +
---- +
- +
-# ⚠️ Runtime versus permanent +
- +
-Firewalld kent twee configuratielagen: +
- +
-### Runtime +
- +
-Een runtime-regel wordt direct actief, maar is niet automatisch blijvend na een reload of reboot.+
  
 Bijvoorbeeld: Bijvoorbeeld:
- 
-```bash 
-sudo firewall-cmd --add-port=25565/tcp 
-``` 
- 
-### Permanent 
- 
-Een permanente regel wordt opgeslagen in de firewallconfiguratie: 
- 
-```bash 
-sudo firewall-cmd --permanent --add-port=25565/tcp 
-``` 
- 
-Daarna wordt de actieve configuratie opnieuw geladen: 
- 
-```bash 
-sudo firewall-cmd --reload 
-``` 
- 
-Voor productieservers gebruiken we bij voorkeur **permanente configuratie**, zodat de firewallconfiguratie na een reboot behouden blijft. 
- 
---- 
- 
-# 🔍 Firewallconfiguratie controleren 
- 
-Volledige configuratie: 
- 
-```bash 
-sudo firewall-cmd --list-all 
-``` 
- 
-Alle actieve zones: 
- 
-```bash 
-sudo firewall-cmd --list-all-zones 
-``` 
- 
-Openstaande services: 
- 
-```bash 
-sudo firewall-cmd --list-services 
-``` 
- 
-Openstaande poorten: 
- 
-```bash 
-sudo firewall-cmd --list-ports 
-``` 
- 
-Beschikbare services: 
- 
-```bash 
-sudo firewall-cmd --get-services 
-``` 
- 
-De actieve interfaces: 
- 
-```bash 
-sudo firewall-cmd --get-active-zones 
-``` 
- 
-Deze commando's behoren tot de belangrijkste controles tijdens de hardening van een nieuwe server. 
- 
---- 
- 
-# 👀 Luisterende poorten controleren 
- 
-De firewallconfiguratie vertelt niet welke applicaties daadwerkelijk luisteren. 
- 
-Daarom wordt ook gecontroleerd met: 
- 
-```bash 
-sudo ss -tulpn 
-``` 
- 
-Dit maakt bijvoorbeeld zichtbaar: 
  
 ```text ```text
-Velocity +Datum:        2026-08-23 
-   └── 0.0.0.0:25565 +Server      mc-proxy001 
- +Poort:        24454/UDP 
-SSH +Dienst:       Simple Voice Chat 
-   └── 0.0.0.0:22+Reden:        Proximity voice chat 
 +Toegang     Publiek
 ``` ```
- 
-Een belangrijke securitycontrole is daarom: 
- 
-> **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 
- 
-Wanneer een nieuwe service een netwerkpoort nodig heeft, wordt eerst bepaald: 
- 
-1. waarom de poort nodig is; 
-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. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> 
-sudo firewall-cmd --reload 
-``` 
- 
-Daarna controleren: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-all 
-``` 
- 
---- 
- 
-# 🗑️ Poort verwijderen 
- 
-Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp 
-sudo firewall-cmd --reload 
-``` 
- 
-Daarna: 
- 
-```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 
-Internet 
-   │ 
-   X 
-   │ 
-beheerpoort 
- 
-Beheer-IP 
-   │ 
-   ▼ 
-beheerpoort 
-``` 
- 
-Dit heeft de voorkeur boven een publiek toegankelijke beheerinterface wanneer de netwerkarchitectuur dit mogelijk maakt. 
- 
---- 
- 
-# 📝 Logging 
- 
-Firewallgebeurtenissen kunnen onderdeel zijn van de algemene serverlogging. 
- 
-De firewallservice: 
- 
-```bash 
-sudo journalctl -u firewalld 
-``` 
- 
-Daarnaast kunnen kernel/netfilter-gerelateerde gebeurtenissen afhankelijk van de configuratie via het systeemlog beschikbaar zijn. 
- 
-Firewalllogging wordt niet zonder reden maximaal aangezet. 
- 
-Te uitgebreide logging kan zelf aanzienlijke hoeveelheden logdata produceren. 
- 
---- 
- 
-# 🛡️ Firewall en Fail2Ban 
- 
-Firewalld en Fail2Ban vullen elkaar aan. 
- 
-```text 
-                  ┌──────────────┐ 
-Internet ────────►│  firewalld   │ 
-                  └──────┬───────┘ 
-                         │ 
-                         ▼ 
-                    SSH / services 
-                         │ 
-                         ▼ 
-                    logbestanden 
-                         │ 
-                         ▼ 
-                    ┌──────────┐ 
-                    │ Fail2Ban │ 
-                    └────┬─────┘ 
-                         │ 
-                         ▼ 
-                   tijdelijke ban 
-``` 
- 
-Firewalld bepaalt welke netwerktoegang überhaupt mogelijk is. 
- 
-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 
- 
-Firewallwijzigingen worden gedocumenteerd wanneer ze structureel onderdeel worden van de serverconfiguratie. 
- 
-Bijvoorbeeld: 
- 
-| Onderdeel | Waarde                | 
-| --------- | --------------------- | 
-| Server    | `mc-proxy001`         | 
-| Zone      | `public`              | 
-| Poort     | `25565/tcp`           | 
-| Dienst    | Velocity              | 
-| Bereik    | Publiek               | 
-| Reden     | Minecraft-ingangspunt | 
-| Status    | Actief                | 
- 
-Hierdoor blijft duidelijk waarom een poort geopend is. 
- 
---- 
- 
-# 📋 Firewall-baseline 
- 
-Een nieuwe Tulpencraft-server moet minimaal worden gecontroleerd op: 
- 
-* [ ] firewalld geïnstalleerd 
-* [ ] firewalld actief 
-* [ ] 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 
- 
---- 
- 
-# 🌷 Tulpencraft firewallbeleid 
- 
-De firewall is geen vervanging voor een correcte netwerkarchitectuur. 
- 
-Tulpencraft gebruikt daarom meerdere beveiligingslagen: 
- 
-```text 
-Internet 
-   │ 
-   ▼ 
-┌───────────────────────┐ 
-│   Externe toegang     │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│      firewalld        │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│ Velocity Proxy        │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│ Backend servers       │ 
-│ Lobby / Survival etc. │ 
-└───────────────────────┘ 
-``` 
- 
-Daarbovenop worden onder andere **SELinux**, **SSH-hardening**, **Fail2Ban**, beperkte gebruikersrechten en regelmatige updates toegepast. 
- 
-Het uitgangspunt blijft: 
- 
-> **Een service die niet bereikbaar hoeft te zijn, wordt niet bereikbaar gemaakt.** 
- 
---- 
- 
-# 🔗 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:selinux|SELinux]] 
-* [[technische-infrastructuur:systemd|systemd]] 
-* [[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. 
-reeks vanaf internet bereikbaar te zijn. 
- 
-Dit betekent dat een speler niet rechtstreeks verbinding maakt met: 
- 
-```text 
-Survival 
-Lobby 
-Events 
-``` 
- 
-maar altijd via de netwerkarchitectuur van Tulpencraft. 
- 
---- 
- 
-# 🔥 Firewalld 
- 
-De firewallservice wordt geleverd door `firewalld`. 
- 
-Status controleren: 
- 
-```bash 
-sudo firewall-cmd --state 
-``` 
- 
-Verwachte uitvoer: 
- 
-```text 
-running 
-``` 
- 
-De service kan worden gecontroleerd met: 
- 
-```bash 
-sudo systemctl status firewalld 
-``` 
- 
-Ingeschakeld bij het opstarten: 
- 
-```bash 
-sudo systemctl is-enabled firewalld 
-``` 
- 
---- 
- 
-# 🗂️ Zones 
- 
-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. 
- 
-De standaardzone kan worden bekeken met: 
- 
-```bash 
-sudo firewall-cmd --get-default-zone 
-``` 
- 
-Actieve zones: 
- 
-```bash 
-sudo firewall-cmd --get-active-zones 
-``` 
- 
-De configuratie van de actieve zone: 
- 
-```bash 
-sudo firewall-cmd --list-all 
-``` 
- 
-Alle zones: 
- 
-```bash 
-sudo firewall-cmd --list-all-zones 
-``` 
- 
---- 
- 
-# 🌍 Public zone 
- 
-Voor een server met een publiek netwerkinterface wordt doorgaans de `public` zone gebruikt. 
- 
-Deze zone is bedoeld voor netwerken waarvan andere systemen niet automatisch worden vertrouwd. Alleen expliciet toegestane services en poorten worden beschikbaar gesteld. 
- 
-Voor Tulpencraft is dit met name relevant voor de proxy. 
- 
---- 
- 
-# 🚪 Proxy-firewall 
- 
-De Velocity Proxy vormt het publieke toegangspunt van het Minecraft-netwerk. 
- 
-De belangrijkste publiek toegankelijke poort is: 
- 
-|   Poort | Protocol | Doel                 | 
-| ------: | -------- | -------------------- | 
-| `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: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-ports 
-``` 
- 
-Verwacht onder andere: 
- 
-```text 
-25565/tcp 
-``` 
- 
---- 
- 
-# 🔐 SSH 
- 
-SSH is een beheerinterface en wordt niet beschouwd als een Minecraft-netwerkdienst. 
- 
-Wanneer SSH publiek bereikbaar moet zijn, wordt de SSH-service expliciet toegestaan: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --add-service=ssh 
-sudo firewall-cmd --reload 
-``` 
- 
-Controle: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-services 
-``` 
- 
-SSH wordt daarnaast beschermd door de maatregelen beschreven in: 
- 
-[[technische-infrastructuur:server-hardening|Server hardening]] 
- 
-waaronder: 
- 
-* SSH-sleutels; 
-* uitschakelen van directe root-login; 
-* uitschakelen van wachtwoordauthenticatie; 
-* Fail2Ban; 
-* beperkte gebruikersrechten. 
- 
---- 
- 
-# 🏠 Backendservers 
- 
-Backendservers zoals Survival en Events worden niet publiek aangeboden. 
- 
-Het uitgangspunt is: 
- 
-```text 
-Internet 
-   │ 
-   X 
-   │ 
-Survival 
-``` 
- 
-maar: 
- 
-```text 
-Internet 
-   │ 
-   ▼ 
-Velocity 
-   │ 
-   ▼ 
-Survival 
-``` 
- 
-De firewall op een backendserver moet daarom geen algemene publieke Minecraft-poort openen. 
- 
-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 
-mc-proxy001 
- 
-├── Velocity 
- 
-└── Lobby 
-``` 
- 
-Dit is onderdeel van de huidige kosten- en infrastructuurkeuze. 
- 
-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 
- 
-Survival draait als afzonderlijke VM op de huidige Proxmox-infrastructuur. 
- 
-De server is niet bedoeld als publiek Minecraft-entrypoint. 
- 
-De gewenste netwerkstroom is: 
- 
-```text 
-Speler 
-  │ 
-  ▼ 
-Velocity 
-  │ 
-  ▼ 
-Survival 
-``` 
- 
-Niet: 
- 
-```text 
-Speler 
-  │ 
-  ▼ 
-Survival 
-``` 
- 
-De firewall en netwerkconfiguratie moeten deze architectuur ondersteunen. 
- 
---- 
- 
-# 🎮 Events 
- 
-Voor toekomstige Events-servers geldt hetzelfde uitgangspunt. 
- 
-Een Events-server wordt niet zelfstandig aan het internet blootgesteld wanneer dit niet noodzakelijk is. 
- 
-De gewenste architectuur is: 
- 
-```text 
-Speler 
-  │ 
-  ▼ 
-Velocity 
-  │ 
-  ▼ 
-Events 
-``` 
- 
-Eventuele uitzonderingen moeten worden gedocumenteerd. 
- 
---- 
- 
-# 📦 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 
-sudo firewall-cmd --permanent --add-service=ssh 
-``` 
- 
-Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend: 
- 
-```bash 
-sudo firewall-cmd --permanent --add-port=25565/tcp 
-``` 
- 
-Daarna: 
- 
-```bash 
-sudo firewall-cmd --reload 
-``` 
- 
---- 
- 
-# ⚠️ Runtime versus permanent 
- 
-Firewalld kent twee configuratielagen: 
- 
-### Runtime 
- 
-Een runtime-regel wordt direct actief, maar is niet automatisch blijvend na een reload of reboot. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --add-port=25565/tcp 
-``` 
- 
-### Permanent 
- 
-Een permanente regel wordt opgeslagen in de firewallconfiguratie: 
- 
-```bash 
-sudo firewall-cmd --permanent --add-port=25565/tcp 
-``` 
- 
-Daarna wordt de actieve configuratie opnieuw geladen: 
- 
-```bash 
-sudo firewall-cmd --reload 
-``` 
- 
-Voor productieservers gebruiken we bij voorkeur **permanente configuratie**, zodat de firewallconfiguratie na een reboot behouden blijft. 
- 
---- 
- 
-# 🔍 Firewallconfiguratie controleren 
- 
-Volledige configuratie: 
- 
-```bash 
-sudo firewall-cmd --list-all 
-``` 
- 
-Alle actieve zones: 
- 
-```bash 
-sudo firewall-cmd --list-all-zones 
-``` 
- 
-Openstaande services: 
- 
-```bash 
-sudo firewall-cmd --list-services 
-``` 
- 
-Openstaande poorten: 
- 
-```bash 
-sudo firewall-cmd --list-ports 
-``` 
- 
-Beschikbare services: 
- 
-```bash 
-sudo firewall-cmd --get-services 
-``` 
- 
-De actieve interfaces: 
- 
-```bash 
-sudo firewall-cmd --get-active-zones 
-``` 
- 
-Deze commando's behoren tot de belangrijkste controles tijdens de hardening van een nieuwe server. 
- 
---- 
- 
-# 👀 Luisterende poorten controleren 
- 
-De firewallconfiguratie vertelt niet welke applicaties daadwerkelijk luisteren. 
- 
-Daarom wordt ook gecontroleerd met: 
- 
-```bash 
-sudo ss -tulpn 
-``` 
- 
-Dit maakt bijvoorbeeld zichtbaar: 
- 
-```text 
-Velocity 
-   └── 0.0.0.0:25565 
- 
-SSH 
-   └── 0.0.0.0:22 
-``` 
- 
-Een belangrijke securitycontrole is daarom: 
- 
-> **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 
- 
-Wanneer een nieuwe service een netwerkpoort nodig heeft, wordt eerst bepaald: 
- 
-1. waarom de poort nodig is; 
-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. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> 
-sudo firewall-cmd --reload 
-``` 
- 
-Daarna controleren: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-all 
-``` 
- 
---- 
- 
-# 🗑️ Poort verwijderen 
- 
-Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp 
-sudo firewall-cmd --reload 
-``` 
- 
-Daarna: 
- 
-```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 
-Internet 
-   │ 
-   X 
-   │ 
-beheerpoort 
- 
-Beheer-IP 
-   │ 
-   ▼ 
-beheerpoort 
-``` 
- 
-Dit heeft de voorkeur boven een publiek toegankelijke beheerinterface wanneer de netwerkarchitectuur dit mogelijk maakt. 
- 
---- 
- 
-# 📝 Logging 
- 
-Firewallgebeurtenissen kunnen onderdeel zijn van de algemene serverlogging. 
- 
-De firewallservice: 
- 
-```bash 
-sudo journalctl -u firewalld 
-``` 
- 
-Daarnaast kunnen kernel/netfilter-gerelateerde gebeurtenissen afhankelijk van de configuratie via het systeemlog beschikbaar zijn. 
- 
-Firewalllogging wordt niet zonder reden maximaal aangezet. 
- 
-Te uitgebreide logging kan zelf aanzienlijke hoeveelheden logdata produceren. 
- 
---- 
- 
-# 🛡️ Firewall en Fail2Ban 
- 
-Firewalld en Fail2Ban vullen elkaar aan. 
- 
-```text 
-                  ┌──────────────┐ 
-Internet ────────►│  firewalld   │ 
-                  └──────┬───────┘ 
-                         │ 
-                         ▼ 
-                    SSH / services 
-                         │ 
-                         ▼ 
-                    logbestanden 
-                         │ 
-                         ▼ 
-                    ┌──────────┐ 
-                    │ Fail2Ban │ 
-                    └────┬─────┘ 
-                         │ 
-                         ▼ 
-                   tijdelijke ban 
-``` 
- 
-Firewalld bepaalt welke netwerktoegang überhaupt mogelijk is. 
- 
-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 
- 
-Firewallwijzigingen worden gedocumenteerd wanneer ze structureel onderdeel worden van de serverconfiguratie. 
- 
-Bijvoorbeeld: 
- 
-| Onderdeel | Waarde                | 
-| --------- | --------------------- | 
-| Server    | `mc-proxy001`         | 
-| Zone      | `public`              | 
-| Poort     | `25565/tcp`           | 
-| Dienst    | Velocity              | 
-| Bereik    | Publiek               | 
-| Reden     | Minecraft-ingangspunt | 
-| Status    | Actief                | 
- 
-Hierdoor blijft duidelijk waarom een poort geopend is. 
- 
---- 
- 
-# 📋 Firewall-baseline 
- 
-Een nieuwe Tulpencraft-server moet minimaal worden gecontroleerd op: 
- 
-* [ ] firewalld geïnstalleerd 
-* [ ] firewalld actief 
-* [ ] 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 
- 
---- 
- 
-# 🌷 Tulpencraft firewallbeleid 
- 
-De firewall is geen vervanging voor een correcte netwerkarchitectuur. 
- 
-Tulpencraft gebruikt daarom meerdere beveiligingslagen: 
- 
-```text 
-Internet 
-   │ 
-   ▼ 
-┌───────────────────────┐ 
-│   Externe toegang     │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│      firewalld        │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│ Velocity Proxy        │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│ Backend servers       │ 
-│ Lobby / Survival etc. │ 
-└───────────────────────┘ 
-``` 
- 
-Daarbovenop worden onder andere **SELinux**, **SSH-hardening**, **Fail2Ban**, beperkte gebruikersrechten en regelmatige updates toegepast. 
- 
-Het uitgangspunt blijft: 
- 
-> **Een service die niet bereikbaar hoeft te zijn, wordt niet bereikbaar gemaakt.** 
- 
---- 
- 
-# 🔗 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:selinux|SELinux]] 
-* [[technische-infrastructuur:systemd|systemd]] 
-* [[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. 
-t 
-``` 
- 
-De backendservers zijn niet bedoeld om rechtstreeks vanaf internet bereikbaar te zijn. 
- 
-Dit betekent dat een speler niet rechtstreeks verbinding maakt met: 
- 
-```text 
-Survival 
-Lobby 
-Events 
-``` 
- 
-maar altijd via de netwerkarchitectuur van Tulpencraft. 
- 
---- 
- 
-# 🔥 Firewalld 
- 
-De firewallservice wordt geleverd door `firewalld`. 
- 
-Status controleren: 
- 
-```bash 
-sudo firewall-cmd --state 
-``` 
- 
-Verwachte uitvoer: 
- 
-```text 
-running 
-``` 
- 
-De service kan worden gecontroleerd met: 
- 
-```bash 
-sudo systemctl status firewalld 
-``` 
- 
-Ingeschakeld bij het opstarten: 
- 
-```bash 
-sudo systemctl is-enabled firewalld 
-``` 
- 
---- 
- 
-# 🗂️ Zones 
- 
-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. 
- 
-De standaardzone kan worden bekeken met: 
- 
-```bash 
-sudo firewall-cmd --get-default-zone 
-``` 
- 
-Actieve zones: 
- 
-```bash 
-sudo firewall-cmd --get-active-zones 
-``` 
- 
-De configuratie van de actieve zone: 
- 
-```bash 
-sudo firewall-cmd --list-all 
-``` 
- 
-Alle zones: 
- 
-```bash 
-sudo firewall-cmd --list-all-zones 
-``` 
- 
---- 
- 
-# 🌍 Public zone 
- 
-Voor een server met een publiek netwerkinterface wordt doorgaans de `public` zone gebruikt. 
- 
-Deze zone is bedoeld voor netwerken waarvan andere systemen niet automatisch worden vertrouwd. Alleen expliciet toegestane services en poorten worden beschikbaar gesteld. 
- 
-Voor Tulpencraft is dit met name relevant voor de proxy. 
- 
---- 
- 
-# 🚪 Proxy-firewall 
- 
-De Velocity Proxy vormt het publieke toegangspunt van het Minecraft-netwerk. 
- 
-De belangrijkste publiek toegankelijke poort is: 
- 
-|   Poort | Protocol | Doel                 | 
-| ------: | -------- | -------------------- | 
-| `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: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-ports 
-``` 
- 
-Verwacht onder andere: 
- 
-```text 
-25565/tcp 
-``` 
- 
---- 
- 
-# 🔐 SSH 
- 
-SSH is een beheerinterface en wordt niet beschouwd als een Minecraft-netwerkdienst. 
- 
-Wanneer SSH publiek bereikbaar moet zijn, wordt de SSH-service expliciet toegestaan: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --add-service=ssh 
-sudo firewall-cmd --reload 
-``` 
- 
-Controle: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-services 
-``` 
- 
-SSH wordt daarnaast beschermd door de maatregelen beschreven in: 
- 
-[[technische-infrastructuur:server-hardening|Server hardening]] 
- 
-waaronder: 
- 
-* SSH-sleutels; 
-* uitschakelen van directe root-login; 
-* uitschakelen van wachtwoordauthenticatie; 
-* Fail2Ban; 
-* beperkte gebruikersrechten. 
- 
---- 
- 
-# 🏠 Backendservers 
- 
-Backendservers zoals Survival en Events worden niet publiek aangeboden. 
- 
-Het uitgangspunt is: 
- 
-```text 
-Internet 
-   │ 
-   X 
-   │ 
-Survival 
-``` 
- 
-maar: 
- 
-```text 
-Internet 
-   │ 
-   ▼ 
-Velocity 
-   │ 
-   ▼ 
-Survival 
-``` 
- 
-De firewall op een backendserver moet daarom geen algemene publieke Minecraft-poort openen. 
- 
-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 
-mc-proxy001 
- 
-├── Velocity 
- 
-└── Lobby 
-``` 
- 
-Dit is onderdeel van de huidige kosten- en infrastructuurkeuze. 
- 
-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 
- 
-Survival draait als afzonderlijke VM op de huidige Proxmox-infrastructuur. 
- 
-De server is niet bedoeld als publiek Minecraft-entrypoint. 
- 
-De gewenste netwerkstroom is: 
- 
-```text 
-Speler 
-  │ 
-  ▼ 
-Velocity 
-  │ 
-  ▼ 
-Survival 
-``` 
- 
-Niet: 
- 
-```text 
-Speler 
-  │ 
-  ▼ 
-Survival 
-``` 
- 
-De firewall en netwerkconfiguratie moeten deze architectuur ondersteunen. 
- 
---- 
- 
-# 🎮 Events 
- 
-Voor toekomstige Events-servers geldt hetzelfde uitgangspunt. 
- 
-Een Events-server wordt niet zelfstandig aan het internet blootgesteld wanneer dit niet noodzakelijk is. 
- 
-De gewenste architectuur is: 
- 
-```text 
-Speler 
-  │ 
-  ▼ 
-Velocity 
-  │ 
-  ▼ 
-Events 
-``` 
- 
-Eventuele uitzonderingen moeten worden gedocumenteerd. 
- 
---- 
- 
-# 📦 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 
-sudo firewall-cmd --permanent --add-service=ssh 
-``` 
- 
-Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend: 
- 
-```bash 
-sudo firewall-cmd --permanent --add-port=25565/tcp 
-``` 
- 
-Daarna: 
- 
-```bash 
-sudo firewall-cmd --reload 
-``` 
- 
---- 
- 
-# ⚠️ Runtime versus permanent 
- 
-Firewalld kent twee configuratielagen: 
- 
-### Runtime 
- 
-Een runtime-regel wordt direct actief, maar is niet automatisch blijvend na een reload of reboot. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --add-port=25565/tcp 
-``` 
- 
-### Permanent 
- 
-Een permanente regel wordt opgeslagen in de firewallconfiguratie: 
- 
-```bash 
-sudo firewall-cmd --permanent --add-port=25565/tcp 
-``` 
- 
-Daarna wordt de actieve configuratie opnieuw geladen: 
- 
-```bash 
-sudo firewall-cmd --reload 
-``` 
- 
-Voor productieservers gebruiken we bij voorkeur **permanente configuratie**, zodat de firewallconfiguratie na een reboot behouden blijft. 
- 
---- 
- 
-# 🔍 Firewallconfiguratie controleren 
- 
-Volledige configuratie: 
- 
-```bash 
-sudo firewall-cmd --list-all 
-``` 
- 
-Alle actieve zones: 
- 
-```bash 
-sudo firewall-cmd --list-all-zones 
-``` 
- 
-Openstaande services: 
- 
-```bash 
-sudo firewall-cmd --list-services 
-``` 
- 
-Openstaande poorten: 
- 
-```bash 
-sudo firewall-cmd --list-ports 
-``` 
- 
-Beschikbare services: 
- 
-```bash 
-sudo firewall-cmd --get-services 
-``` 
- 
-De actieve interfaces: 
- 
-```bash 
-sudo firewall-cmd --get-active-zones 
-``` 
- 
-Deze commando's behoren tot de belangrijkste controles tijdens de hardening van een nieuwe server. 
- 
---- 
- 
-# 👀 Luisterende poorten controleren 
- 
-De firewallconfiguratie vertelt niet welke applicaties daadwerkelijk luisteren. 
- 
-Daarom wordt ook gecontroleerd met: 
- 
-```bash 
-sudo ss -tulpn 
-``` 
- 
-Dit maakt bijvoorbeeld zichtbaar: 
- 
-```text 
-Velocity 
-   └── 0.0.0.0:25565 
- 
-SSH 
-   └── 0.0.0.0:22 
-``` 
- 
-Een belangrijke securitycontrole is daarom: 
- 
-> **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 
- 
-Wanneer een nieuwe service een netwerkpoort nodig heeft, wordt eerst bepaald: 
- 
-1. waarom de poort nodig is; 
-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. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> 
-sudo firewall-cmd --reload 
-``` 
- 
-Daarna controleren: 
- 
-```bash 
-sudo firewall-cmd --zone=public --list-all 
-``` 
- 
---- 
- 
-# 🗑️ Poort verwijderen 
- 
-Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd. 
- 
-Bijvoorbeeld: 
- 
-```bash 
-sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp 
-sudo firewall-cmd --reload 
-``` 
- 
-Daarna: 
- 
-```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 
-Internet 
-   │ 
-   X 
-   │ 
-beheerpoort 
- 
-Beheer-IP 
-   │ 
-   ▼ 
-beheerpoort 
-``` 
- 
-Dit heeft de voorkeur boven een publiek toegankelijke beheerinterface wanneer de netwerkarchitectuur dit mogelijk maakt. 
- 
---- 
- 
-# 📝 Logging 
- 
-Firewallgebeurtenissen kunnen onderdeel zijn van de algemene serverlogging. 
- 
-De firewallservice: 
- 
-```bash 
-sudo journalctl -u firewalld 
-``` 
- 
-Daarnaast kunnen kernel/netfilter-gerelateerde gebeurtenissen afhankelijk van de configuratie via het systeemlog beschikbaar zijn. 
- 
-Firewalllogging wordt niet zonder reden maximaal aangezet. 
- 
-Te uitgebreide logging kan zelf aanzienlijke hoeveelheden logdata produceren. 
- 
---- 
- 
-# 🛡️ Firewall en Fail2Ban 
- 
-Firewalld en Fail2Ban vullen elkaar aan. 
- 
-```text 
-                  ┌──────────────┐ 
-Internet ────────►│  firewalld   │ 
-                  └──────┬───────┘ 
-                         │ 
-                         ▼ 
-                    SSH / services 
-                         │ 
-                         ▼ 
-                    logbestanden 
-                         │ 
-                         ▼ 
-                    ┌──────────┐ 
-                    │ Fail2Ban │ 
-                    └────┬─────┘ 
-                         │ 
-                         ▼ 
-                   tijdelijke ban 
-``` 
- 
-Firewalld bepaalt welke netwerktoegang überhaupt mogelijk is. 
- 
-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 
- 
-Firewallwijzigingen worden gedocumenteerd wanneer ze structureel onderdeel worden van de serverconfiguratie. 
- 
-Bijvoorbeeld: 
- 
-| Onderdeel | Waarde                | 
-| --------- | --------------------- | 
-| Server    | `mc-proxy001`         | 
-| Zone      | `public`              | 
-| Poort     | `25565/tcp`           | 
-| Dienst    | Velocity              | 
-| Bereik    | Publiek               | 
-| Reden     | Minecraft-ingangspunt | 
-| Status    | Actief                | 
- 
-Hierdoor blijft duidelijk waarom een poort geopend is. 
- 
---- 
- 
-# 📋 Firewall-baseline 
- 
-Een nieuwe Tulpencraft-server moet minimaal worden gecontroleerd op: 
- 
-* [ ] firewalld geïnstalleerd 
-* [ ] firewalld actief 
-* [ ] 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 
- 
---- 
- 
-# 🌷 Tulpencraft firewallbeleid 
- 
-De firewall is geen vervanging voor een correcte netwerkarchitectuur. 
- 
-Tulpencraft gebruikt daarom meerdere beveiligingslagen: 
- 
-```text 
-Internet 
-   │ 
-   ▼ 
-┌───────────────────────┐ 
-│   Externe toegang     │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│      firewalld        │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│ Velocity Proxy        │ 
-└──────────┬────────────┘ 
-           │ 
-           ▼ 
-┌───────────────────────┐ 
-│ Backend servers       │ 
-│ Lobby / Survival etc. │ 
-└───────────────────────┘ 
-``` 
- 
-Daarbovenop worden onder andere **SELinux**, **SSH-hardening**, **Fail2Ban**, beperkte gebruikersrechten en regelmatige updates toegepast. 
- 
-Het uitgangspunt blijft: 
- 
-> **Een service die niet bereikbaar hoeft te zijn, wordt niet bereikbaar gemaakt.** 
- 
---- 
- 
-# 🔗 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:selinux|SELinux]] 
-* [[technische-infrastructuur:systemd|systemd]] 
-* [[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. 
- 
-```` 
  
 Hierdoor blijft inzichtelijk waarom een poort geopend is en kan ongebruikte toegang later worden verwijderd. Hierdoor blijft inzichtelijk waarom een poort geopend is en kan ongebruikte toegang later worden verwijderd.
Regel 2420: Regel 482:
 --- ---
  
-## Beveiligingsprincipes+## 📋 Beveiligingsprincipes
  
 De firewallconfiguratie van Tulpencraft volgt deze uitgangspunten: De firewallconfiguratie van Tulpencraft volgt deze uitgangspunten:
Regel 2437: Regel 499:
 --- ---
  
-## Controle+## 🔎 Controle
  
-Na wijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren:+Na firewallwijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren:
  
 ```bash ```bash
Regel 2469: Regel 531:
 --- ---
  
-> **Belangrijk:** een poort openen in firewalld betekent niet automatisch dat een dienst veilig of correct geconfigureerd is. De applicatie zelf moet eveneens correct worden gebonden aan het juiste netwerkinterface en correct worden beveiligd.+## ⚠️ 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:00
  • door rroethof