jan-karel.nl

ADCS Hardening

ADCS Hardening

AD Zonder Eeuwige Adminrechten

In netwerkbeveiliging wint structuur van improvisatie: duidelijke paden, minder privileges en expliciete trust-grenzen.

Bij ADCS Hardening levert privilege-opruiming en trust-hygiene de grootste reductie van impact op.

Zo beperk je niet alleen de kans op incidenten, maar vooral ook de omvang en duur als er iets misgaat.

Directe maatregelen (15 minuten)

Waarom dit telt

De kern van ADCS Hardening is risicoreductie in de praktijk. Technische context ondersteunt de maatregelkeuze, maar implementatie en borging staan centraal.

Verdediging

Template hardening

De belangrijkste maatregel is het controleren van elke certificate template:

# Audit alle templates op bekende kwetsbaarheden
.\Certify.exe find /vulnerable

# Of vanuit Linux
certipy find -u admin@domain.local -p 'Password!' -dc-ip 10.0.0.1 -vulnerable

Voor elke template, controleer:

  1. Is ENROLLEE_SUPPLIES_SUBJECT nodig? In 95% van de gevallen niet. Schakel het uit.
  2. Wie heeft enrollment-rechten? Beperk tot specifieke groepen, niet Authenticated Users of Domain Users.
  3. Is Manager Approval ingeschakeld? Voor gevoelige templates zou elke aanvraag handmatig goedgekeurd moeten worden.
  4. Is de EKU beperkt? Geen Any Purpose. Alleen de specifieke key usages die nodig zijn.

CA hardening

# Check of ESC6 flag actief is
certutil -config "dc01.domain.local\domain-CA" -getreg "policy\EditFlags"

# Verwijder de ESC6 flag als deze actief is
certutil -config "dc01.domain.local\domain-CA" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2

# Herstart de CA service
net stop certsvc && net start certsvc

Configureer Enrollment Agent Restrictions om te beperken welke templates en doelaccounts Enrollment Agents mogen gebruiken.

Monitoring

Certificate enrollment events zijn een goudmijn voor detectie, als je ze inschakelt:

Event ID Beschrijving Belang
4886 Certificate request ontvangen Wie vraagt wat aan?
4887 Certificate request goedgekeurd en uitgegeven Welke SAN? Welke template?
4888 Certificate request geweigerd Iemand probeert iets ongewoons
4889 Certificate request pending Manager approval actief

Monitor specifiek op: - Certificaataanvragen met een SAN die afwijkt van de aanvrager - Gebruik van templates die normaal niet worden gebruikt - Enrollment Agent-certificaataanvragen - Wijzigingen aan template-configuratie

Remediation checklist

Een praktische checklist voor het beveiligen van je ADCS-omgeving:

[ ] Voer Certify.exe find /vulnerable of certipy find -vulnerable uit
[ ] Documenteer alle gevonden kwetsbare templates
[ ] Per template:
    [ ] Is ENROLLEE_SUPPLIES_SUBJECT nodig? Zo nee, uitschakelen
    [ ] Zijn de enrollment-rechten beperkt tot de juiste groepen?
    [ ] Is Manager Approval ingeschakeld voor gevoelige templates?
    [ ] Is de EKU beperkt tot wat nodig is?
    [ ] Is msPKI-RA-Signature > 0 waar nodig?
[ ] CA-level:
    [ ] Is EDITF_ATTRIBUTESUBJECTALTNAME2 uitgeschakeld?
    [ ] Zijn Enrollment Agent Restrictions geconfigureerd?
    [ ] Heeft de CA Web Enrollment HTTPS + EPA?
    [ ] Is de CA-key in een HSM opgeslagen?
[ ] Monitoring:
    [ ] Zijn Event IDs 4886-4889 ingeschakeld?
    [ ] Is er alerting op certificaten met afwijkende SAN?
    [ ] Is er alerting op ongebruikelijke template-aanvragen?
[ ] Organisatorisch:
    [ ] Is er een eigenaar aangewezen voor de PKI-infrastructuur?
    [ ] Worden templates periodiek gereviewed?
    [ ] Is er een procedure voor het intrekken van certificaten?

PKI best practices samengevat

  1. Audit je templates — regelmatig, niet eenmalig. Templates worden gekopieerd, aangepast, vergeten.
  2. Minimale rechten — enrollment alleen voor wie het nodig heeft.
  3. Manager Approval — voor templates die identiteiten uitgeven.
  4. Geen EDITF_ATTRIBUTESUBJECTALTNAME2 — tenzij je een heel goede reden hebt, en “het was makkelijker zo” is geen goede reden.
  5. Separeer CA-rollen — de CA-beheerder zou niet dezelfde persoon moeten zijn als de domain admin.
  6. CRL/OCSP — zorg dat revocatie daadwerkelijk werkt en gecontroleerd wordt.
  7. HSM — bewaar de CA private key in een Hardware Security Module, niet op de harde schijf van de server.
  8. Tier-model — de CA hoort in Tier 0, net als de domain controllers. Behandel hem ook zo.
  9. Geen Web Enrollment zonder EPA — als je Certificate Enrollment Web Services aanbiedt, gebruik HTTPS en schakel Extended Protection for Authentication in.
  10. Documentatie — documenteer elke template: wie heeft hem gemaakt, waarom bestaat hij, wie mag enrollen, en wanneer is hij voor het laatst gereviewd.

Praktische validatie van ADCS-hardening

Valideer ADCS-hardening uitsluitend in een geautoriseerde testomgeving met defensieve controles: template-audits, permissiecontrole, issuance-beperkingen en loggingverificatie.

De ware waanzin

Laten we even stilstaan bij wat we hier zien. Active Directory Certificate Services is een fundamenteel onderdeel van de identiteitsinfrastructuur van vrijwel elke grote organisatie ter wereld. Het is ontworpen om vertrouwen te beheren. En het is zo complex, zo slecht gedocumenteerd, en zo makkelijk verkeerd te configureren dat een enkele checkbox in een template-wizard — een checkbox die standaard aanstaat bij bepaalde template types — voldoende is om een aanvaller van helpdesk-medewerker naar domain admin te promoveren.

Niemand begrijpt PKI. Dat is geen grap — het is een observatie. Ik heb het gevraagd aan systeembeheerders, security officers, zelfs aan mensen die de CA beheren. “Hoe werken je certificate templates?” wordt beantwoord met een blik die varieert van milde paniek tot existentiële crisis. Ze hebben het opgezet. Het werkt. Raken. We. Het. Niet. Aan.

En dat is precies het probleem. PKI is het fundament waarop authenticatie, encryptie en vertrouwen gebouwd zijn. Maar omdat niemand het begrijpt, controleert niemand het. Omdat niemand het controleert, wordt het niet gepatcht. En omdat het niet gepatcht wordt, is het jarenlang kwetsbaar. De “Certified Pre-Owned” paper beschreef kwetsbaarheden die al bestonden sinds de introductie van ADCS. Niet maanden. Jaren. Soms decennia.

Het is als een land dat zijn grondwet niet begrijpt maar er wel op vertrouwt. Iedereen gaat ervan uit dat iemand anders het in de gaten houdt. Maar niemand doet het. En op een dag komt er iemand langs die de grondwet daadwerkelijk leest, en ontdekt dat er een clausule in staat die zegt: “Wie dit leest, mag het land hebben.”

In het volgende hoofdstuk behandelen we persistentie — de kunst om te blijven, zelfs wanneer de verdedigers denken dat ze je eruit hebben gegooid. Want het enige dat erger is dan een inbreker in je huis, is een inbreker die er nooit meer weggaat.

Op de hoogte blijven?

Ontvang maandelijks cybersecurity-inzichten in je inbox.

← Netwerk & Active Directory ← Home