>_ DevTrendsnl

Taal

Home

Talen

Secties

Frontend Backend Mobiel DevOps AI / ML GameDev Blockchain Embedded Beveiliging
Shell

Hoe voorkom je dat je server een gemakkelijk doelwit wordt met konstruktoid's Hardening Scripts

Stel je voor dat je zojuist een verse Ubuntu instance hebt gedeployed. Alles draait, SSH is open, packages zijn bijgewerkt. Je voelt je veilig—tot je de logs bekijkt en eindeloze brute-force inlogpogingen ziet van over de hele wereld. Standaard Linux distro-instellingen geven prioriteit aan gemak boven beveiliging, dus het harden van een systeem vereist urenlang aanpassen van SSH-configuraties, firewalls configureren en service-rechten beperken.

De repository-auteur onder de handle konstruktoid besloot deze routine te vereenvoudigen en stelde scripts samen voor automatische Ubuntu hardening. Dit is niet zomaar een set commando's—het is een complete strategie om een gewoon besturingssysteem te veranderen in een digitale vesting, met controle via systemd als hoeksteen.

Wat dit script precies doet

De kerngedachte van het project is om het aanvalsoppervlak zoveel mogelijk te minimaliseren. Als een service niet nodig is, moet deze worden uitgeschakeld. Als een service draait, moet deze precies de rechten hebben die nodig zijn om zijn taak uit te voeren.

Het script controleert het systeem tegen een uitgebreide lijst van criteria, waarvan veel afkomstig zijn van CIS (Center for Internet Security) aanbevelingen. Hier zijn een paar gebieden waar het orde in brengt:

  • Kernel parameter configuratie via sysctl. Dit omvat het blokkeren van pakketdoorsturing (IP forwarding), spoofing bescherming en het beperken van toegang tot kernel debugging functies.
  • Het verharden van bestandsrechten op systeembestanden. Het script controleert rechten op /etc/shadow, /etc/gshadow en andere kritieke configs zodat gewone gebruikers of gecompromitteerde webapplicaties ze niet kunnen lezen.
  • Het beperken van systemd services. Dit is misschien wel het interessantste deel. Het script maakt gebruik van moderne systemd isolation functies, zoals PrivateTmp, NoNewPrivileges en ProtectSystem.
  • Kernel module management. Zelden gebruikte protocollen (zoals DCCP of SCTP) en bestandssystemen die vaak bronnen van kwetsbaarheden worden, worden uitgeschakeld.

Hoe het in de praktijk werkt

Het project is geschreven in Shell, wat het transparant maakt voor auditing. Je kunt de code gewoon lezen voordat je hem uitvoert en precies begrijpen wat er zal veranderen in je systeem. Om te beginnen, clone je gewoon de repository en voer je het hoofd script uit als root.

git clone https://github.com/konstruktoid/hardening.git
cd hardening
sudo bash ubuntu.sh

Trouwens, de auteur heeft een aparte versie voor Debian, maar deze repository is specifiek gericht op Ubuntu (versies 20.04, 22.04 en 24.04). Interessant is dat het script niet alleen configs wijzigt—het installeert ook extra beveiligingstools, bijvoorbeeld auditd voor diepgaande systeem call logging.

Fijnafstelling voor je behoeften

Het script zomaar draaien op een live productiesysteem is een riskante onderneming. Hardening is altijd een afweging tussen beveiliging en functionaliteit. Als je de mogelijkheid uitschakelt om bepaalde kernel modules te laden, kunnen Docker of specifieke netwerkhardware stoppen met werken.

Het project bevat een configuratiebestand waar je variabelen kunt overschrijven. Als je bijvoorbeeld absoluut IPv6 nodig hebt (wat het script standaard probeert te beperken), kun je dit aanpassen in de instellingen. Ik zou aanraden om het script eerst uit te voeren op een test-VM die je volledige productie tech stack repliceert.

Waarom je aandacht moet besteden aan de systemd editie

Veel oudere Linux beveiligingsgidsen bevelen nog steeds aan om tientallen bestanden in /etc/ te bewerken. De konstruktoid aanpak is moderner: het maakt actief gebruik van de modulariteit van systemd. In plaats van het herschrijven van het hoofd service unit bestand, worden drop-in bestanden aangemaakt. Dit maakt het mogelijk om packages bij te werken via apt zonder configuratieconflicten, terwijl je beveiligingsaanpassingen van kracht blijven.

Het script controleert ook op gecompromitteerde packages en suggereert het verwijderen van software dat vaak een beveiligingslek wordt, zoals oude implementaties van rsh of telnet.

Wie dit project nuttig zal vinden

Als je een paar servers beheert voor persoonlijke projecten, wordt deze repository een geweldige checklist. Je hoeft niet het hele script uit te voeren—je kunt goede oplossingen lenen voor het configureren van ufw of sysctl parameters.

Voor systeembeheerders in bedrijven is dit een kant-en-klare basis voor het creëren van je eigen corporate golden image. In plaats van het wiel opnieuw uit te vinden, kun je konstruktoid's werk nemen en aanpassen aan je compliance vereisten.

Houd echter in gedachten: beveiliging is een proces. Het script vandaag draaien garandeert geen bescherming tegen een kwetsbaarheid die morgen opduikt. Maar het verhoogt de lat voor een potentiële aanvaller wel zo hoog dat ze hoogstwaarschijnlijk op zoek gaan naar gemakkelijker prooi.

Waar te beginnen met leren

  1. Bekijk het ubuntu.sh bestand. Dit is het startpunt vanwaar de andere modules worden aangeroepen.
  2. Verken de scripts/ map. De logica is opgedeeld per categorie: netwerk, bestandssysteem, rechten.
  3. Lees zeker de sectie over omgevingsvariabelen in de README om te begrijpen hoe je het gedrag van het script kunt controleren zonder de code te bewerken.

Het project leeft en wordt regelmatig bijgewerkt voor nieuwe Ubuntu releases en incorporateert de nieuwste beveiligingsaanbevelingen. Dit is een geweldig voorbeeld van hoe automatisering uren routinewerk verandert in een taak die minuten duurt.

Gerelateerde projecten