harden
Kernelinstellingen, boot-parameters, een sshd die alleen sleutels accepteert en een firewall die standaard dicht staat. Een configuratie die u buitensluit compileert niet: dat is een assertion, geen voetnoot.
Open source, EUPL-1.2
sovereign-nix is een set NixOS-modules voor servers en laptops die hard zijn om op schaal aan te vallen: een verkleind aanvalsoppervlak, per machine een andere configuratie, en een systeemschijf die bij elke start wordt leeggemaakt.
Het bijzondere zit niet in die modules. Iedereen kan beloftes in een handleiding zetten. Het zit erin dat elke belofte is gekoppeld aan een test die u zelf kunt draaien, en dat er net zo duidelijk bij staat wat die tests niet bewijzen.
Kernelinstellingen, boot-parameters, een sshd die alleen sleutels accepteert en een firewall die standaard dicht staat. Een configuratie die u buitensluit compileert niet: dat is een assertion, geen voetnoot.
Eén waarde per machine bepaalt reproduceerbaar de SSH-poort en wat kerneltuning. Zelfde waarde, zelfde machine. Dat maakt een vloot minder uniform voor ongerichte scans. Het maakt geen enkele exploit onmogelijk, en dat staat er ook zo bij.
De systeemroot rolt bij elke start terug naar leeg. Wat een aanvaller daar achterliet, is na een herstart weg. De root van de vorige start blijft één generatie bewaard, zodat een incident nog te onderzoeken is.
DNS over TLS naar Europese resolvers, Europese tijdservers. Geen enkele standaardinstelling wijst naar een Amerikaanse cloud. Dat is een begin van soevereiniteit, niet het einde ervan.
In de documentatie staat een tabel waarin elke bewering verwijst naar de test die haar controleert. Twee virtuele machines opstarten en aantonen dat ze werkelijk van elkaar verschillen, een schijf twee keer wissen en aantonen dat de bewaarde map overleeft. Eén commando en u ziet het zelf.
Belangrijker: er staat ook in wat de tests niet kunnen bewijzen. Dat de kernel en alle programma's tussen machines identiek blijven, dus dat een werkende exploit hier niet door wordt tegengehouden. Dat een gewijzigde SSH-poort hygiëne is en geen beveiligingsmaatregel. Dat de gebruikersmap niet wordt gewist. En dat een herstart geen vervanging is voor het installeren van updates.
Toen twee externe reviewers er publiek gaten in schoten, heb ik hun punten op een testmachine nagemeten in plaats van beredeneerd. Eén van hun bezwaren bleek terecht, één van mijn eigen beweringen bleek niet te kloppen, en beide staan nu gecorrigeerd in de documentatie met hun naam erbij. Zo hoort het te werken.
Onder de Cyberbeveiligingswet en NIS2 is het niet genoeg dat uw systemen veilig zijn. U moet kunnen laten zien dát ze het zijn, en hoe. Een omgeving waarin de volledige inrichting in versiebeheer staat en waarin beveiligingsinstellingen automatisch worden gecontroleerd, is een stuk eenvoudiger te verantwoorden dan een server waar in de loop der jaren van alles handmatig op is gebeurd.
Dit project is mijn eigen bewijs daarvan. Ik draai het zelf, de code staat publiek, en u kunt de tests draaien zonder mij op mijn woord te geloven.
NixOS is een Linux-distributie waarin de volledige machine in één configuratiebestand wordt vastgelegd. Twee machines met dezelfde configuratie zijn identiek, een wijziging is altijd terug te draaien naar de vorige versie, en er is geen ruimte voor handmatige aanpassingen die niemand heeft opgeschreven. Dat maakt hem geschikt voor omgevingen waarin u moet kunnen aantonen hoe een systeem is ingericht.
Een server die u niet aanpast maar opnieuw uitrolt. Wijzigingen gaan via de configuratie, niet via een terminal op de machine zelf. Het voordeel voor beveiliging is dat afwijkingen niet stilletjes blijven staan: alles wat niet in de configuratie is vastgelegd, verdwijnt bij de volgende uitrol.
De systeemschijf wordt bij elke start leeggemaakt en opnieuw opgebouwd uit de configuratie. Alleen expliciet aangewezen mappen blijven bewaard. Software die een aanvaller in de systeemmappen heeft geplaatst is na een herstart verdwenen. Let op: de gebruikersmap blijft wél bestaan, dus dit verwijdert geen aanvaller die zich in een gebruikersaccount heeft genesteld.
Nee, en die claim staat er ook niet. Het verkleint het aanvalsoppervlak, het maakt ongerichte massascans minder rendabel en het zorgt dat een aanvaller zich niet permanent in de systeemroot kan nestelen. Het stopt geen phishing, geen zwak wachtwoord en geen kwetsbaarheid in een dienst die u zelf openzet. De documentatie somt expliciet op wat de tests niet bewijzen.
De modules draaien op mijn eigen machines en elke bewering wordt gecontroleerd door een geautomatiseerde test. Het is versie 1 en de interfaces kunnen nog wijzigen, dus ik zou het vandaag inzetten op nieuwe systemen en niet op een bestaande productieomgeving zonder plan om terug te kunnen.
De code is gratis en open source onder de Europese EUPL-1.2-licentie. Wat geld kost is de inrichting: uw omgeving in kaart brengen, de modules toepassen en aantoonbaar maken dat ze doen wat ze beloven. Dat begint bij mij met een nulmeting.
De code en de tests staan publiek. Wilt u weten wat dit voor uw omgeving betekent, plan dan een gesprek van 30 minuten.