Dit is een oude revisie van het document!
Firewall
De Tulpencraft-servers gebruiken firewalld als host-based firewall op Rocky Linux 10.
De firewall vormt een belangrijke beveiligingslaag tussen het Tulpencraft-netwerk, externe verbindingen en de verschillende interne diensten.
Het uitgangspunt is:
Alles wat niet expliciet noodzakelijk is, wordt geblokkeerd.
Backendservers zoals de lobby en gameservers zijn niet rechtstreeks vanaf internet bereikbaar. Spelers verbinden uitsluitend met de centrale Velocity Proxy.
Firewallarchitectuur
De netwerkarchitectuur is opgebouwd rond een centrale proxy:
Internet
โ
โ TCP 25565
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Velocity Proxy โ
โ mc-proxy001 โ
โโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โ intern netwerk
โผ
โโโโโโโโโโโโโโโโโโโโโโโ
โ Lobby โ
โ mc-proxy001 โ
โโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โโโโโโโโโโโโบ Survival VM
โ
โโโโโโโโโโโโบ Event servers
โ
โโโโโโโโโโโโบ Toekomstige gameservers
De lobby en proxy draaien momenteel vanwege de opbouwfase op dezelfde host.
De gameservers draaien als afzonderlijke VM's op de beschikbare Proxmox-infrastructuur.
Externe poorten
Alleen diensten die daadwerkelijk vanaf internet bereikbaar moeten zijn, krijgen een open firewallpoort.
Minecraft
| Poort | Protocol | Dienst | Toegang |
|---|---|---|---|
25565 | TCP | Velocity Proxy | Publiek |
8192 | TCP | Votifier / NuVotifier | Publiek, indien gebruikt |
24454 | UDP | Simple Voice Chat | Publiek, per server |
De Minecraft-spelers verbinden uitsluitend met:
tulpencraft.nl:25565
Backend Minecraft-poorten worden niet publiek geopend.
Simple Voice Chat
Voor proximity voice chat wordt Simple Voice Chat gebruikt.
Simple Voice Chat gebruikt standaard:
24454/UDP
Deze poort moet bereikbaar zijn vanaf internet. De voice-chatcommunicatie gebruikt UDP en staat los van de normale Minecraft TCP-verbinding.
Voor iedere server waarop Simple Voice Chat wordt aangeboden, moet een eigen bereikbare UDP-poort worden gebruikt wanneer meerdere servers dezelfde host/IP delen.
Bijvoorbeeld:
| Server | Voice chat | Poort |
|---|---|---|
| Survival | Ja | 24454/UDP |
| Events | Ja | 24455/UDP |
| Toekomstige gameserver | Ja | eigen UDP-poort |
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 configuratie bevindt zich bij Paper doorgaans in:
plugins/voicechat/voicechat-server.properties
De standaardconfiguratie gebruikt poort 24454.
Votifier / NuVotifier
Voor toekomstige stemintegratie kan NuVotifier worden gebruikt.
De standaardpoort van NuVotifier is:
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.
Internet
โ
โโโ TCP 8192
โ
โผ
NuVotifier
De Votifier-poort mag niet zonder reden worden geopend wanneer de dienst niet actief is.
Het gebruikte Votifier-token wordt nooit in deze wiki opgeslagen.
MySQL / MariaDB
De database wordt momenteel op dezelfde infrastructuur als de proxy/lobby gehost.
MySQL/MariaDB is een interne dienst en wordt niet publiek beschikbaar gesteld.
De standaardpoort:
3306/TCP
wordt daarom uitsluitend op het interne netwerk toegestaan.
Conceptueel:
Internet โ โ โ TCP 3306 โผ Firewall โ โ โโโ Intern netwerk โโโบ MySQL/MariaDB
Alleen systemen die daadwerkelijk gebruikmaken van de database mogen verbinding maken.
Bijvoorbeeld:
| Bron | Doel | Poort | Toegang |
|---|---|---|---|
| Lobby | Database | 3306/TCP | Intern |
| Survival | Database | 3306/TCP | Intern |
| Events | Database | 3306/TCP | Intern |
| Internet | Database | 3306/TCP | Geblokkeerd |
Wanneer de database in de toekomst naar een afzonderlijke VM wordt verplaatst, blijft hetzelfde beveiligingsprincipe gelden.
Backend Minecraft-servers
Backendservers luisteren uitsluitend op interne adressen.
Voorbeeld:
Velocity โ โโโ Lobby :25566 โโโ Survival :25567 โโโ Events :25568
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:
<SERVER_IP>:25567
De enige publiek bedoelde Minecraft-ingang is:
<SERVER_IP>:25565
SSH
SSH wordt gebruikt voor systeembeheer.
De SSH-poort wordt uitsluitend beschikbaar gesteld voor beheer en wordt niet gebruikt voor Minecraft-verkeer.
Wanneer mogelijk wordt SSH beperkt tot:
- vertrouwde beheeradressen;
- het interne netwerk;
- VPN-beheer;
- of andere expliciet toegestane beheerbronnen.
SSH gebruikt uitsluitend key-based authentication.
Root-login via SSH is uitgeschakeld.
Zie ook:
firewalld
De firewall wordt beheerd met firewalld.
Basiscontrole:
sudo firewall-cmd --state
Actieve configuratie bekijken:
sudo firewall-cmd --list-all
Alle zones bekijken:
sudo firewall-cmd --get-active-zones
Beschikbare services:
sudo firewall-cmd --get-services
Poort tijdelijk openen
Een poort kan tijdelijk worden geopend met:
sudo firewall-cmd --add-port=25565/tcp
Dit is vooral nuttig voor testen.
Een tijdelijke wijziging blijft niet noodzakelijk behouden na een reload/restart.
Poort permanent openen
Wanneer een poort definitief onderdeel van de infrastructuur wordt:
sudo firewall-cmd --permanent --add-port=25565/tcp sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --list-ports
Voorbeeld: Simple Voice Chat
Voor de standaard voice-chatpoort:
sudo firewall-cmd --permanent --add-port=24454/udp sudo firewall-cmd --reload
Controleren:
sudo firewall-cmd --list-ports
Verwacht:
24454/udp
Voorbeeld: Votifier
Wanneer NuVotifier actief wordt:
sudo firewall-cmd --permanent --add-port=8192/tcp sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --list-ports
MySQL intern toestaan
MySQL moet niet met:
--add-port=3306/tcp
zonder verdere beperking publiek worden geopend.
Wanneer MySQL op een afzonderlijke VM staat, wordt toegang bij voorkeur beperkt tot het interne netwerk of specifieke bronadressen.
Bijvoorbeeld:
Lobby VM โ โ TCP 3306 โผ Database VM
De database accepteert vervolgens uitsluitend verbindingen vanuit bekende Tulpencraft-systemen.
Default-deny principe
De firewall volgt zoveel mogelijk het principe:
Internet โ โผ [ FIREWALL ] โ โโโ TCP 25565 โ Velocity โโโ TCP 8192 โ NuVotifier (indien actief) โโโ UDP 24454 โ Simple Voice Chat โโโ overige โ DROP
Interne communicatie wordt afzonderlijk toegestaan waar noodzakelijk.
Geen directe backendtoegang
Een belangrijk onderdeel van de beveiligingsarchitectuur is dat spelers nooit rechtstreeks met backendservers communiceren.
Niet toegestaan:
Internet โโโบ Survival Internet โโโบ Lobby Internet โโโบ Events Internet โโโบ Database
Wel toegestaan:
Internet โ โผ Velocity Proxy โ โผ Lobby โ โโโโบ Survival โโโโบ Events โโโโบ toekomstige servers
Hierdoor blijft de netwerkstructuur centraal beheersbaar.
Toekomstige infrastructuur
Wanneer Tulpencraft verder groeit, kan de infrastructuur worden opgesplitst over meerdere VM's en/of fysieke nodes.
Een mogelijke toekomstige inrichting:
Internet
โ
โผ
โโโโโโโโโโโโโโโโ
โ Proxy โ
โ Velocity โ
โโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โผ โผ โผ
Lobby Survival Events
โ โ โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โ
โผ
Database VM
Elke VM krijgt daarbij uitsluitend de netwerktoegang die daadwerkelijk noodzakelijk is.
Firewallwijzigingen documenteren
Iedere structurele firewallwijziging moet worden gedocumenteerd.
Bijvoorbeeld:
Datum: 2026-08-23
Server: mc-proxy001
Poort: 24454/UDP
Dienst: Simple Voice Chat
Reden: Proximity voice chat
Toegang: Publiek# 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
โผ
โโโโโโโโโโโโโโโโโโโ
โ Velocity Proxy โ
โ mc-proxy001 โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โผ
Lobby
โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โผ โผ โผ
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
โผ
โโโโโโโโโโโโโโโโโโโ
โ 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.
INTERNET
โ
โ TCP 25565
โผ
โโโโโโโโโโโโโโโโโโโ
โ Velocity Proxy โ
โ mc-proxy001 โ
โโโโโโโโโโฌโโโโโโโโโ
โ
โผ
Lobby
โ
โโโโโโโโโโโโโโผโโโโโโโโโโโโโ
โผ โผ โผ
Survival Events toekomst
De backendservers zijn niet bedoeld om rechtstreeks vanaf internet bereikbaar te zijn.
Dit betekent dat een speler niet rechtstreeks verbinding maakt met:
Survival Lobby Events
maar altijd via de netwerkarchitectuur van Tulpencraft.
๐ฅ Firewalld
De firewallservice wordt geleverd door firewalld.
Status controleren:
sudo firewall-cmd --state
Verwachte uitvoer:
running
De service kan worden gecontroleerd met:
sudo systemctl status firewalld
Ingeschakeld bij het opstarten:
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:
sudo firewall-cmd --get-default-zone
Actieve zones:
sudo firewall-cmd --get-active-zones
De configuratie van de actieve zone:
sudo firewall-cmd --list-all
Alle zones:
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:
sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp sudo firewall-cmd --reload
Controle:
sudo firewall-cmd --zone=public --list-ports
Verwacht onder andere:
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:
sudo firewall-cmd --permanent --zone=public --add-service=ssh sudo firewall-cmd --reload
Controle:
sudo firewall-cmd --zone=public --list-services
SSH wordt daarnaast beschermd door de maatregelen beschreven in:
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:
Internet โ X โ Survival
maar:
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:
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:
Speler โ โผ Velocity โ โผ Survival
Niet:
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:
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:
sudo firewall-cmd --permanent --add-service=ssh
Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend:
sudo firewall-cmd --permanent --add-port=25565/tcp
Daarna:
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:
sudo firewall-cmd --add-port=25565/tcp
Permanent
Een permanente regel wordt opgeslagen in de firewallconfiguratie:
sudo firewall-cmd --permanent --add-port=25565/tcp
Daarna wordt de actieve configuratie opnieuw geladen:
sudo firewall-cmd --reload
Voor productieservers gebruiken we bij voorkeur permanente configuratie, zodat de firewallconfiguratie na een reboot behouden blijft.
๐ Firewallconfiguratie controleren
Volledige configuratie:
sudo firewall-cmd --list-all
Alle actieve zones:
sudo firewall-cmd --list-all-zones
Openstaande services:
sudo firewall-cmd --list-services
Openstaande poorten:
sudo firewall-cmd --list-ports
Beschikbare services:
sudo firewall-cmd --get-services
De actieve interfaces:
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:
sudo ss -tulpn
Dit maakt bijvoorbeeld zichtbaar:
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:
- waarom de poort nodig is;
- of de service publiek of intern moet zijn;
- welk protocol noodzakelijk is;
- vanaf welke bronnen toegang noodzakelijk is;
- of een bestaande firewalld-service gebruikt kan worden.
Daarna wordt de regel toegevoegd.
Bijvoorbeeld:
sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --zone=public --list-all
๐๏ธ Poort verwijderen
Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd.
Bijvoorbeeld:
sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp sudo firewall-cmd --reload
Daarna:
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:
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:
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.
โโโโโโโโโโโโโโโโ
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:
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:
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
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:
Survival Lobby Events
maar altijd via de netwerkarchitectuur van Tulpencraft.
๐ฅ Firewalld
De firewallservice wordt geleverd door firewalld.
Status controleren:
sudo firewall-cmd --state
Verwachte uitvoer:
running
De service kan worden gecontroleerd met:
sudo systemctl status firewalld
Ingeschakeld bij het opstarten:
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:
sudo firewall-cmd --get-default-zone
Actieve zones:
sudo firewall-cmd --get-active-zones
De configuratie van de actieve zone:
sudo firewall-cmd --list-all
Alle zones:
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:
sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp sudo firewall-cmd --reload
Controle:
sudo firewall-cmd --zone=public --list-ports
Verwacht onder andere:
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:
sudo firewall-cmd --permanent --zone=public --add-service=ssh sudo firewall-cmd --reload
Controle:
sudo firewall-cmd --zone=public --list-services
SSH wordt daarnaast beschermd door de maatregelen beschreven in:
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:
Internet โ X โ Survival
maar:
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:
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:
Speler โ โผ Velocity โ โผ Survival
Niet:
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:
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:
sudo firewall-cmd --permanent --add-service=ssh
Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend:
sudo firewall-cmd --permanent --add-port=25565/tcp
Daarna:
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:
sudo firewall-cmd --add-port=25565/tcp
Permanent
Een permanente regel wordt opgeslagen in de firewallconfiguratie:
sudo firewall-cmd --permanent --add-port=25565/tcp
Daarna wordt de actieve configuratie opnieuw geladen:
sudo firewall-cmd --reload
Voor productieservers gebruiken we bij voorkeur permanente configuratie, zodat de firewallconfiguratie na een reboot behouden blijft.
๐ Firewallconfiguratie controleren
Volledige configuratie:
sudo firewall-cmd --list-all
Alle actieve zones:
sudo firewall-cmd --list-all-zones
Openstaande services:
sudo firewall-cmd --list-services
Openstaande poorten:
sudo firewall-cmd --list-ports
Beschikbare services:
sudo firewall-cmd --get-services
De actieve interfaces:
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:
sudo ss -tulpn
Dit maakt bijvoorbeeld zichtbaar:
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:
- waarom de poort nodig is;
- of de service publiek of intern moet zijn;
- welk protocol noodzakelijk is;
- vanaf welke bronnen toegang noodzakelijk is;
- of een bestaande firewalld-service gebruikt kan worden.
Daarna wordt de regel toegevoegd.
Bijvoorbeeld:
sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --zone=public --list-all
๐๏ธ Poort verwijderen
Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd.
Bijvoorbeeld:
sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp sudo firewall-cmd --reload
Daarna:
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:
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:
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.
โโโโโโโโโโโโโโโโ
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:
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:
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
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:
sudo firewall-cmd --state
Verwachte uitvoer:
running
De service kan worden gecontroleerd met:
sudo systemctl status firewalld
Ingeschakeld bij het opstarten:
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:
sudo firewall-cmd --get-default-zone
Actieve zones:
sudo firewall-cmd --get-active-zones
De configuratie van de actieve zone:
sudo firewall-cmd --list-all
Alle zones:
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:
sudo firewall-cmd --permanent --zone=public --add-port=25565/tcp sudo firewall-cmd --reload
Controle:
sudo firewall-cmd --zone=public --list-ports
Verwacht onder andere:
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:
sudo firewall-cmd --permanent --zone=public --add-service=ssh sudo firewall-cmd --reload
Controle:
sudo firewall-cmd --zone=public --list-services
SSH wordt daarnaast beschermd door de maatregelen beschreven in:
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:
Internet โ X โ Survival
maar:
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:
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:
Speler โ โผ Velocity โ โผ Survival
Niet:
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:
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:
sudo firewall-cmd --permanent --add-service=ssh
Voor applicaties zonder geschikte standaardservice kan een specifieke poort worden geopend:
sudo firewall-cmd --permanent --add-port=25565/tcp
Daarna:
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:
sudo firewall-cmd --add-port=25565/tcp
Permanent
Een permanente regel wordt opgeslagen in de firewallconfiguratie:
sudo firewall-cmd --permanent --add-port=25565/tcp
Daarna wordt de actieve configuratie opnieuw geladen:
sudo firewall-cmd --reload
Voor productieservers gebruiken we bij voorkeur permanente configuratie, zodat de firewallconfiguratie na een reboot behouden blijft.
๐ Firewallconfiguratie controleren
Volledige configuratie:
sudo firewall-cmd --list-all
Alle actieve zones:
sudo firewall-cmd --list-all-zones
Openstaande services:
sudo firewall-cmd --list-services
Openstaande poorten:
sudo firewall-cmd --list-ports
Beschikbare services:
sudo firewall-cmd --get-services
De actieve interfaces:
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:
sudo ss -tulpn
Dit maakt bijvoorbeeld zichtbaar:
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:
- waarom de poort nodig is;
- of de service publiek of intern moet zijn;
- welk protocol noodzakelijk is;
- vanaf welke bronnen toegang noodzakelijk is;
- of een bestaande firewalld-service gebruikt kan worden.
Daarna wordt de regel toegevoegd.
Bijvoorbeeld:
sudo firewall-cmd --permanent --zone=public --add-port=<PORT>/<PROTOCOL> sudo firewall-cmd --reload
Daarna controleren:
sudo firewall-cmd --zone=public --list-all
๐๏ธ Poort verwijderen
Wanneer een dienst niet meer nodig is, wordt de firewallregel verwijderd.
Bijvoorbeeld:
sudo firewall-cmd --permanent --zone=public --remove-port=25565/tcp sudo firewall-cmd --reload
Daarna:
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:
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:
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.
โโโโโโโโโโโโโโโโ
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:
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:
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
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. --- ## Beveiligingsprincipes De firewallconfiguratie van Tulpencraft volgt deze uitgangspunten: 1. **Default deny** 2. Alleen noodzakelijke poorten worden geopend. 3. Backendservers zijn niet publiek bereikbaar. 4. Databaseverkeer blijft intern. 5. Voice chat gebruikt uitsluitend de daarvoor bestemde UDP-poorten. 6. Votifier wordt alleen geopend wanneer deze dienst daadwerkelijk actief is. 7. Firewallwijzigingen worden gedocumenteerd. 8. Ongebruikte poorten worden verwijderd. 9. Publieke diensten worden zo veel mogelijk geconcentreerd op de proxy. 10. Interne diensten worden beperkt tot noodzakelijke bronadressen. --- ## Controle Na wijzigingen moet worden gecontroleerd welke poorten daadwerkelijk luisteren: ```bash sudo ss -tulpn
En welke poorten door firewalld zijn toegestaan:
sudo firewall-cmd --list-all
Ook moet worden gecontroleerd of een dienst daadwerkelijk alleen op het bedoelde adres luistert.
Bijvoorbeeld:
0.0.0.0:3306
is wezenlijk anders dan:
127.0.0.1:3306
of een specifiek intern IP-adres.
Belangrijk: een poort openen in firewalld betekent niet automatisch dat een dienst veilig of correct geconfigureerd is. De applicatie zelf moet eveneens correct worden gebonden aan het juiste netwerkinterface en correct worden beveiligd.