De Nieuwe Macht in de Proxy: Vaarwel Rigide Continentblokkades, Hallo Fijnmazig Netwerkbeheer!
Eerlijk is eerlijk: als je mij een beetje kent, weet je dat ik gek ben op oplossingen die niet alleen werken, maar ook elegant zijn. En laten we zeggen dat mijn vorige aanpak voor netwerkbeveiliging bij PCPal en Zutphen Online, hoewel effectief, allesbehalve elegant was. Het was meer een sloopkogel dan een scalpel.
Tot voor kort hanteerden we een vrij draconische regel: waarmee een heel continent (ja, je leest het goed, een heel continent) via de Internet Gateway Device (IGD), werd geblokkeerd. Pats, boem, klaar. Het was simpel, het werkte, en het weerde een hoop ongewenste ruis. Het nadeel? Als jij toevallig in dat continent zat en ons via een VPN wilde bereiken, dan had je pech. Onze eigen VPN was dan ook onbereikbaar. Die rigide regel had ik erin getoverd, en daarmee was de kous af. Of nou ja, bijna.
De noodzaak tot verandering: verder kijken dan de horizon
De realiteit is dat mijn referentiekaders soms wat te zwart-wit kunnen zijn, en in mijn werk zoek ik altijd naar manieren om complexiteit te beheersen zonder de flexibiliteit te verliezen. Zeker nu ik af en toe langer van huis ben, en de services van buitenaf moet kunnen benaderen, werd het duidelijk dat deze “alles of niets”-aanpak niet langer houdbaar was. En ja, als ik heel moe ben en mentaal uitgeput, dan is het cruciaal om systemen te hebben die mijn leven makkelijker maken, niet moeilijker. Zelfcompassie betekent ook zorgen voor efficiënte tooling tenslotte.
Enter het Beheerpaneel: Cockpit op de Proxy!
De afgelopen tijd heb ik me daarom gestort op het implementeren van een centraal beheerpaneel. En niet zomaar één, maar specifiek op onze webproxy. Dit is een gamechanger.
Wat heb ik gedaan? Ik heb Cockpit geïnstalleerd. Voor de techneuten onder jullie: Cockpit is een webgebaseerd beheerpaneel voor Linux-servers. Je kunt er van alles mee, van het checken van logs tot het monitoren van prestaties. En, cruciaal voor dit verhaal, het beheren van de firewall.
De installatie via de terminal was een fluitje van een cent, maar toen kwam de uitdaging: hoe krijg je die webinterface veilig en beheersbaar bereikbaar op ons LAN, en uiteindelijk via een publieke URL? Dat laatste heb ik voor elkaar gekregen met Nginx Proxy Manager (NPM) en een Let’s Encrypt SSL-certificaat. Nu kan ik via https://datzoujewelwillenweten.goedevraag.nl
(of iets dergelijks) veilig inloggen.
De strijd met de “Onbeheerde Interfaces”
Toen ik eenmaal binnen was, stuitte ik op een vreemd probleem: mijn primaire USB-ethernet interface, die ik absoluut wilde beheren, werd als “Onbeheerd” weergegeven. En nog vreemder, de software-updates wilden niet laden met de melding “Cannot refresh cache whilst offline”, terwijl de server toch echt internet had. Na wat speurwerk bleek de oorzaak te liggen in de manier waarop de netwerkconfiguratie was opgezet. De interface werd beheerd door systemd-networkd
via cloud-init
’s Netplan-configuratie (renderer: networkd
), en niet door NetworkManager, de service waar Cockpit op leunt voor netwerkbeheer.
De oplossing? Een simpele, maar effectieve aanpassing in het Netplan-bestand: de renderer
van networkd
naar NetworkManager
zetten. En ja hoor, plotseling kwamen de netwerkinterfaces tot leven in Cockpit, én… laadde de update-pagina probleemloos! Een waardevolle les: een “onbeheerde” netwerkinterface in Cockpit kan de meest onlogische problemen veroorzaken, zelfs met iets als de pakketbeheerder. Een diepere duik in de referentiekaders van het systeem, in dit geval van de netwerk-renderers, was essentieel.
Fijnmazig Beheer: De Kracht van firewalld
en Rich Rules
Nu de interfaces beheerd zijn, kan ik de firewall beheren via Cockpit. Ik maak gebruik van firewalld
, wat, hoewel misschien niet de standaard voor alle Ubuntu-gebruikers (sommigen zweren bij ufw
), naadloos integreert met Cockpit. Ik heb de nodige poorten (zoals 9090 voor Cockpit zelf, achter de NPM-proxy) geopend.
En het mooiste van alles? De mogelijkheid om specifieke IP-adressen of zelfs hele netwerken te blokkeren. Waar ik vroeger een heel continent blokkeerde, kan ik nu met een rich rule
in firewalld
via de terminal (sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="106.214.0.0/16" drop' --permanent --reload
) een specifiek subnet als 106.214.x.x
droppen. Dit betekent een veel preciezer beheer. Ongewenste bezoekers kunnen geweerd worden, zonder legitieme gebruikers in het buitenland de pas af te snijden. Dit is de ware vooruitgang: niet langer de sloopkogel, maar het precisiewerk.
Het is een stap voorwaarts in robuustheid en gebruiksgemak. En het belangrijkste: het stelt me in staat om, zelfs als ik wat verder van huis ben of een keer extra moe, de touwtjes stevig in handen te houden.