Ga naar inhoud

Veiligheid van het park – architectuurnotitie

Machinevertaling van het Franse origineel.

Wat deze pagina zegt, en wat deze bewust verborgen houdt

Hierin worden de beveiligingssystemen, hun verbindingen en hun stroom van gegevens beschreven. Er worden geen IP-adressen, geen hostnamen, geen accountnamen, geen FQDN's van diensten genoemd. De hosts worden geïdentificeerd op basis van hun functie.

Deze keuze is niet voor niets: een documentatiepagina, zelfs achter authenticatie, wordt uiteindelijk gekopieerd in een ticket, een screenshot of een klembord. Een architectuur blijft een architectuur zonder zijn coördinaten; een lijst met openbare FQDN's is een kant-en-klare aanvalskart.

De coördinaten bevinden zich in de privé-kluis en in de opslag. Zie Een geheim uit de kluis ophalen.

Dezelfde regel geldt voor de subpagina's van deze sectie, met een extra regel: er staat geen open grens. Ze beschrijven de architectuur, de principes en hoe deze worden gecontroleerd; de huidige status – wat er gaande is, wat faalt – bevindt zich in de privé-kluis en op het conformiteitstabel.

Het leidende principe

Het park heeft geen enkele perimeter die verdedigd moet worden. Er zijn lagen die afzonderlijk falen: een aanvaller die één laag doorbreekt, moet nog een andere laag doorbreken, en elke doorbraak achterlaat een spoor in een systeem dat de vorige laag niet controleert.

Vier regels regeren het geheel:

  1. Één autoriteit voor identiteit. Geen enkele dienst beheert zijn eigen accounts als het kan. Een vertrek, een compromis wachtwoord, een tweede factor: één plek om contact met op te nemen.
  2. Wat detecteert, is niet noodzakelijk wat uitvoert. De logs van een host gaan elders. Een gecompromitteerde host kan liegen over zichzelf, maar kan niet verwijderen wat al is verwijderd.
  3. Stilte is een verdacht toestand. Een sonde die niets zegt en een dode sonde produceren hetzelfde gebrek. Elke detectieketen heeft dus een functionele indicator: niet een teller die zegt "ik ben actief", maar een bekende, expliciet geïnjecteerde waarde die moet worden gedetecteerd bij elke passage.
  4. Bewijs, niet verklaren. Elke controle wordt gemeten door een sonde die we al eens als falend hebben gezien; het oordeel komt in een register terecht dat we niet kunnen herschrijven zonder dat het opvalt, en de status "conform" wordt berekend op basis van de bewijzen – het wordt nooit direct bevestigd. Zie Conformiteit en bewijzen.

De sectie in één oogopslag

De verdediging van het park is georganiseerd in vier functies, en een vijfde die ze allemaal controleert:

flowchart LR
    classDef p fill:#0f766e,stroke:#0f766e,color:#fff
    classDef d fill:#7c2d12,stroke:#7c2d12,color:#fff
    classDef r fill:#9a3412,stroke:#9a3412,color:#fff
    classDef c fill:#1e40af,stroke:#1e40af,color:#fff
    classDef g fill:#3f3f46,stroke:#3f3f46,color:#fff

    prev["PRÉVENIR<br/>périmètre · identité · secrets<br/>chaîne d'approvisionnement · correctifs"]:::p
    det["DÉTECTER<br/>SIEM · exécution · réseau<br/>fichiers · vulnérabilités"]:::d
    rep["RÉPONDRE<br/>notification unique · réponse automatique<br/>investigation · registre d'incidents"]:::r
    cont["SURVIVRE<br/>sauvegardes immuables · restauration chronométrée<br/>clé maîtresse hors ligne"]:::c
    prouv["PROUVER<br/>catalogue de contrôles · sondes<br/>registre chaîné · ancre git"]:::g

    prev --> det --> rep --> cont
    prouv -.->|"mesure"| prev
    prouv -.->|"mesure"| det
    prouv -.->|"mesure"| rep
    prouv -.->|"mesure"| cont
Pagina Wat hier te vinden is
Deze pagina De architectuur: de lagen, hun verbindingen, hun stromen – en de preventie
Detectie Een vraag, een motor: SIEM, uitvoering, netwerk, bestanden, kwetsbaarheden – en hun indicatoren
Reactie Notificatie, beperkte automatische reactie, hete onderzoek, incidentenregister
Continuïteit Back-up niveaus, onveranderlijkheid, herstel oefening, master sleutel
Conformiteit en bewijzen NIS2 en SOC 2 als kader, controles, sondes, gekoppeld register, audit
Woordenlijst Elk woord, en wat het hier in het park betekent

Overzicht

flowchart TB
    classDef edge fill:#0f766e,stroke:#0f766e,color:#fff
    classDef det fill:#7c2d12,stroke:#7c2d12,color:#fff
    classDef id fill:#1e40af,stroke:#1e40af,color:#fff
    classDef data fill:#3f3f46,stroke:#3f3f46,color:#fff

    client["Client Internet"]

    subgraph perimetre["1 · Périmètre"]
        dns["DNS public<br/>zone déléguée au registrar"]
        nat["Routeur — NAT entrant<br/>un seul port ouvert"]
        edge["Proxy de bordure<br/>terminaison TLS · sur le NAS"]:::edge
        proxy["Proxy interne<br/>routage · en-têtes · journalisation"]:::edge
        ips["CrowdSec<br/>analyse des journaux → 403"]:::edge
    end

    subgraph identite["2 · Identité"]
        idp["Fournisseur d'identité<br/>OIDC · SAML · MFA"]:::id
        fa["forward_auth<br/>mur, sans identité applicative"]:::id
    end

    subgraph prive["3 · Réseau privé"]
        cp["Plan de contrôle VPN<br/>auto-hébergé sur le VPS"]:::edge
        mesh["Maillage WireGuard<br/>chiffré de bout en bout"]:::edge
        dnsf["Filtrage DNS<br/>listes + horizon dédoublé"]:::edge
    end

    subgraph contenu["4 · Contenu"]
        av["Moteur antivirus central<br/>un seul daemon, protocole INSTREAM"]:::det
        yara["Analyse statique profonde<br/>dépliage récursif · YARA"]:::det
        quar["Quarantaine partagée<br/>sur le NAS"]:::data
    end

    subgraph detection["5 · Détection et réponse"]
        siem["SIEM / XDR<br/>intégrité fichiers · CVE · MITRE"]:::det
        fleet["Collecte journaux + métriques"]:::det
        rt["Détection à l'exécution<br/>appels système · eBPF"]:::det
        ids["IDS réseau<br/>signatures sur le trafic"]:::det
        ar["Réponse automatique<br/>blocage à durée limitée"]:::det
        hub["Répartiteur d'alertes"]:::det
        chat["Messagerie d'équipe<br/>deux destinations"]:::det
        dfir["Investigation à chaud<br/>client sur chaque machine"]:::det
    end

    subgraph socle["6 · Socle"]
        coffre["Coffre de secrets"]:::data
        sops["Secrets chiffrés au repos<br/>dans le dépôt"]:::data
        backup["Dépôts de sauvegarde chiffrés<br/>ajout seul · copies hors site"]:::data
        smart["Santé des disques"]:::data
        preuve["Registre de preuves<br/>chaîné · ancré dans git"]:::data
    end

    client --> dns --> nat --> edge --> proxy
    proxy --> ips
    ips -->|"IP décidée"| proxy
    proxy --> idp
    proxy -.->|"dernier recours"| fa
    idp --> proxy

    mesh --- cp
    mesh --- dnsf

    av --> quar
    yara --> quar

    proxy --> siem
    av --> siem
    yara --> siem
    fleet --> siem
    siem --> hub --> chat
    smart --> hub
    rt -.->|"après mesure du bruit"| hub
    ids -.->|"après mesure du bruit"| hub
    siem -->|"identifiant de règle"| ar
    chat -.->|"enquête"| dfir

    coffre -.-> sops
    backup -.-> quar
    siem -.->|"sondes"| preuve
    backup -.->|"sondes"| preuve

Het schema wordt van boven naar beneden gelezen, in de volgorde waarin een kwaadaardige aanvraag de verdedigingsmechanismen tegenkomt. De lagen 5 en 6 hebben elk hun eigen pagina: Detectie, Antwoord, Continuïteit en Naleving en bewijs.


1 · Omvang en blootstelling

De inkomende keten

Een aanvraag die van het internet komt, passeert vier apparaten voordat het een container bereikt: de publieke resolver, de router die NAT uitvoert, een edge proxy die is gehost op het NAS, en vervolgens een interne proxy op de hoofd-Docker host.

De edge WAN is geen Docker host

Dit is het meest contra-intuïtieve aspect van de architectuur, en het dat het meeste tijd kost om te vergeten. De gevolgen zijn:

  • Elke L3 filtering op de Docker host blokkeert niets van het internet: de bron-adres dat hij ziet, is dat van de edge proxy, nooit dat van de client.
  • Het ophalen van een service op basis van zijn naam vanaf het LAN test niet het WAN pad. De resolutie is dubbel: dezelfde naam wijst naar een andere locatie, afhankelijk van waar je het vraagt. Het testen van het WAN vereist het forceren van de resolutie naar het publieke adres.

Detail van het volledige pad: Reverse proxy keten en DNS en resolutie.

Certificaten

Certificaten worden uitgegeven door ACME via DNS-01 uitdaging, via de API van de registrar. Dit keuze heeft een directe veiligheidseffect: er is geen publieke A-record nodig om een certificaat uit te geven. Een service kan dus via TLS op het LAN worden aangeboden, zonder dat de naam ooit in een publieke DNS-zone wordt gepubliceerd — de transparantie van de certificaten blijft wel publiek.

Detectie en applicatie-remedie

CrowdSec leest de de toegangspogingen van de interne proxy, beslist en voert deze beslissing uit via een module die is geïntegreerd in de proxy, en stuurt een 403 antwoord. Het maakt ook gebruik van een gemeenschappelijke bloklijst.

Het is geïmplementeerd na een eenvoudige publieke audit, waarbij 74 namen werden blootgesteld en er geen systeem voor het detecteren van inbraken was. Dit is de enige laag die direct op de inhoud van een HTTP-verzoek werkt; de NAT weet niets van HTTP.

Wat CrowdSec niet kan zien

De interne proxy ziet alleen het echte IP-adres van de client als de randproxy dit in een header doorgeeft, en als de interne proxy vertrouwt op die header. Een fout in de configuratie op dit punt veroorzaakt geen problemen: het blokkeert de rand, of blokkeert niemand. Het resultaat is een systeem dat er normaal lijkt te werken.


2 · Identiteit en toegang

Een unieke identiteitsleverancier (Authentik) beheert de accounts, groepen, de tweede factor en sessies. Er zijn twee connectiemethoden, en de volgorde van prioriteit is een regel, geen persoonlijke voorkeur:

Methode Wat de service leert Wanneer te gebruiken
OIDC / SAML native Identiteit, groepen, rollen, eigen afmelden Standaard, zodra de service dit ondersteunt
forward_auth Niets. Een muur voor de applicatie Laatste redmiddel, voor een service zonder concept van accounts

Nooit twee op dezelfde service

De authenticatieproxy onderschept OAuth-retourpaden voordat ze de applicatie bereiken. Het resultaat is een verbinding die wordt gegenereerd door drie componenten die allemaal goed werken — elk voert precies zijn taak uit. Dit is een fout die niet in een foutlog wordt weergegeven.

De lokale login van een service wordt pas gesloten nadat een eerste succesvolle federatie-login heeft plaatsgevonden. De omgekeerde volgorde zorgt ervoor dat het niet lukt.


3 · Privé netwerk

De hosts verbinden zich niet via hun LAN-adressen wanneer ze het LAN verlaten. Een WireGuard-mesh verbindt ze, met een zelf-gehoste beheersing die op de publieke VPS staat — dus zonder afhankelijkheid van een externe service voor het lidmaatschap van het netwerk.

Hieruit volgen twee eigenschappen:

  • Een host buiten het LAN communiceert met het SIEM via het adres van de mesh, nooit via een lokaal adres dat niet bestaat voor die host. Dit is een veelvoorkomende bron van fouten tijdens het registreren van een agent.
  • De naam van de beheersing en het suffix van de machines moeten twee afzonderlijke domeinen zijn. Een client neemt de controle over de resolutie van het suffix: een beheersing die eronder zou staan, zou niet meer bereikbaar zijn vanaf een verbonden knoop. De server weigert echter om in deze configuratie te starten.

Een DNS-filtering (bloklijsten, interne omleidingen) dient het LAN en dubbelt de resolutie: hetzelfde naam geeft het interne adres binnen, het publieke adres buiten.

Een apparaat in het aangekondigde subnet

Het activeren van het accepteren van routes op een machine die al zich in het subnet bevindt dat de mesh aangeeft, zorgt ervoor dat de machine geen toegang meer heeft tot het netwerk. Het symptoom lijkt op een internetuitval; de oorzaak is een geleerde route die de lokale route overschrijft.


4 · Inhoud: antivirus en bestandsaanalyse

Eén motor, om een ​​reden die niet economisch is

Het netwerk gebruikt één enkele antivirus-daemon. De andere machines installeren geen enkele software, geen database met handtekeningen: ze sturen de inhoud via een speciaal kanaal (protocol INSTREAM) en ontvangen een beoordeling.

Waarom slechts één, en waarom een privéspiegel?

Het netwerk heeft één publiek IP-adres. Meerdere clients die de database met handtekeningen opvragen vanaf dit adres, komen uiteindelijk terecht bij een bandbreedtebeperking, en vervolgens op een zwarte lijst.

Het probleem is geen fout: het is een database met handtekeningen die langzaam verouderd. Een antivirus met een database van drie maanden, reageert, reageert snel, en geeft een verkeerde reactie.

Dus stuurt slechts één proces van het netwerk data naar het internet om de handtekeningen op te halen, twee keer per dag, en serveert deze vervolgens aan iedereen via een interne spiegel. De andere machines hebben geen toegang tot het internet, vanwege de configuratie.

De client logt, niet de server

In INSTREAM ontvangt de daemon alleen een stroom van bytes: zijn eigen logboek geeft aan dat een handtekening is gevonden in "een stroom", zonder pad of machine. De enige entiteit die de volledige informatie bevat, is de client. Daarom schrijft hij in het systeemlogboek, in het exacte formaat dat de decoder van het SIEM verwacht.

Gevolg voor de perimeter

Een centraal systeem is een netwerkdienst: het ziet alleen wat er naar het gestuurd wordt. Een machine zonder client is niet beschermd – hij is niet onderdeel van de perimeter. De dekking wordt dus gelezen in de lijst met clients en hun gemonitorde gebieden, en niet in de status van de daemon.

Detectie: quarantaine, niet verwijderen

Een bestand dat is gedetecteerd, is verplaatst naar een quarantie-map op een gedeelde opslagruimte van het NAS, met beperkte rechten en een opslagperiode. Het verwijderen is mogelijk, maar dat is niet het probleem, om twee redenen die relevant zijn voor dit systeem:

  • Er zijn echte valse positieven die al op gezonde bestanden gericht zijn (een e-book, applicatie-archieven); het verwijderen zou geen oplossing hebben geboden;
  • Sommige gemonitorde zones worden gesynchroniseerd met andere apparaten: het verwijderen van een bestand uit de zone verspreidt zich naar alle locaties. Dit is bedoeld voor een echte bedreiging, maar is schadelijk voor een vals positief.

Diepgaande statische analyse

Waar een antivirus een oordeel geeft over een bestand, voert een tweede statische analyse-motor een taak uit die een antivirus niet doet: het herhaaldelijk (archieven in archieven, documenten, ingebouwde objecten, macro's, uitvoerbare bestanden) en voert tientallen scanners uit op elk extraheerd object, inclusief een YARA-regelmotor met duizenden regels. Er wordt geen code uitgevoerd: dit is statische analyse, geen sandbox.

Een set regels die niet geladen wordt, zegt niets

De motor compileert zijn regels in één blok. Een enkele ongeldige regel ongeldig alle regels. Het container blijft dan in een schijnbaar goed gezond toestand en detecteert niets - een perfect stille storing.

Een teller van geladen regels is niet voldoende om dit te zien: het vertelt hoeveel regels in het geheugen staan, maar niet of ze nog steeds herkennen iets. Het bewijs is een "canari-regel", die tussen de andere regels staat, en waarvan de activering vereist is bij elke passage - dit is wat het onderscheidt tussen "geen melding" en "niets werkt meer". Zie Detectie.


5 · De macOS werkplek

De macOS-positie wordt behandeld als een standaardapparaat in het netwerk, en niet als een uitzondering.

Laag Rol
SIEM-agent Integriteit van bestanden, configuratiecontroles, rapportage aan de manager
Antivirus-client Verzendt de inhoud van de risicogebieden naar de centrale motor, volgens een schema
Uitgaand firewall per proces Little Snitch — elk binaire vraagt ​​om toestemming om uit te gaan
Persistentie-enumerator KnockKnock, aangesloten op de centrale antivirusmotor

KnockKnock verbonden met de centrale motor

KnockKnock detecteert alle programma's die automatisch starten op een Mac: start- en demonen, kernel-extensies, autorisatietools, verbindingscomponenten, browser-extensies en geplande taken. Dit is de vraag "wat draait er zonder dat ik het wil", wat precies de vraag is die men stelt na een inbreuk.

In de huidige staat, onderzoekt het hulpmiddel een openbaar reputatieservice op basis van bestandsprofielen. Het netwerk gebruikt een afgeleide versie die de inhoud in plaats daarvan naar de interne antivirusmotor stuurt:

  • geen enkele data verlaat het lokale netwerk, noch profielen, noch inhoud;
  • geen API-sleutel is vereist, dus geen limiet op de snelheid;
  • de beoordeling is gebaseerd op de daadwerkelijke inhoud van het bestand, en niet op wat een derde partij al heeft gezien.

Een uitgaand firewall per proces zorgt voor stille fouten

Op deze positie wordt elk nieuw netwerkprogramma stilgelegd totdat er een regel is die het toestaat, en de fout lijkt precies op een netwerkfout: de verbinding wordt in wacht gehouden totdat een beslissing wordt getoond in een venster — wat onzichtbaar is voor een geplande taak of een remote sessie.

Daarom is er een ontwerpregel: een taak zonder interface gaat via een geautoriseerde interpreter, nooit via een net geïnstalleerd programma. Een interactieve applicatie kan echter zijn eigen verbinding openen: er is iemand die reageert op het venster.

Volledige toegang tot schijf

Het opsommen van alle punten van persistentie vereist de autorisatie "volledige toegang tot schijf", die wordt verleend door een programma en alleen handmatig, in de instellingen van het systeem. Er kan geen opdracht dit op afstand verlenen — dit is een eigenschap van het besturingssysteem, niet een beperking van het hulpmiddel.

Een gedeeltelijke audit wordt als zodanig aangegeven

De enumerator loopt een aantal categorieën achter elkaar na. Als een systeemoproep vastloopt in een ononderbroken wachttoestand — een toestand waarin het proces niet meer reageert op een stopverzoek of een gedwongen stop — dan kan één categorie het hele auditproces overnemen. Een geplande taak die "dode en opnieuw start" dan een proces toevoegt bij elke uitvoering.

De regel die wordt toegepast: een categorie die vastloopt, wordt expliciet uitgesloten, de andere categorieën worden uitgevoerd, en de lijst met ononderzochte categorieën wordt in de notificatie opgenomen. Een audit waarbij niet alle categorieën zijn onderzocht, is geen "groene" audit — en "geen fouten gevonden" lijkt bijna letterlijk op "niet onderzocht".


6 · Detectie, correlatie, waarschuwing

Het SIEM

Een SIEM/XDR-manager verzamelt de agenten van alle hosts. Het levert vier dingen die ruwe logs niet geven:

  • Integriteitscontrole van kritieke paden;
  • Configuratiecontroles tegen benchmarks voor versterking;
  • Detectie van kwetsbaarheden door correlatie tussen geïnstalleerde pakketten en CVE-databases;
  • Correlatie en mapping op een matrix van aanvalstechnieken.

Een tweede laag verzamelt logs en metrics naar een aparte zoekmachine. Beide dienen verschillende doelen: de ene beantwoordt de vraag "Is dit een bekende aanval?", de andere beantwoordt de vraag "Wat is er gebeurd, minuut voor minuut?".

Naast SIEM

Het SIEM bekijkt de status van de hosts. Drie engines dekken wat het niet ziet: Falco observeert systeemoproepen van containers tijdens hun uitvoering, Suricata past signaturen toe op netwerkverkeer, en Velociraptor maakt het mogelijk om de hele vloot te onderzoeken tijdens een incident. Hun rol, hun bewijsmateriaal en hun ontwerpbeperkingen worden beschreven in Detectie en Reactie.

De weg naar detectie

sequenceDiagram
    autonumber
    participant Z as Zone surveillée
    participant C as Client de scan
    participant M as Moteur antivirus
    participant J as Journal système
    participant A as Agent SIEM
    participant S as Manager SIEM
    participant H as Répartiteur d'alertes
    participant D as Zulip + Telegram

    Z->>C: fichier nouveau ou modifié
    C->>M: contenu, en INSTREAM
    M-->>C: verdict + signature
    Note over C: le serveur ignore le chemin<br/>et la machine : c'est le client<br/>qui détient le contexte
    C->>Z: mise en quarantaine
    C->>J: ligne au format attendu par le décodeur
    A->>J: lecture
    A->>S: événement
    S->>S: règle → niveau de sévérité
    S->>H: intégration filtrée par identifiant de règle
    H->>D: un envoi, deux destinations

Twee valkuilen in deze keten, beide stil

De integratiefilter. Het richt zich op een regel-ID, nooit op een groep. Een filter per groep laadt naburige regels in en stuurt duplicaten naar dezelfde kanaal.

Het ernstniveau. Het bepaalt wat er wordt doorgegeven. Een te hoog niveau zorgt ervoor dat er twee keer per twee verschillende paden wordt gecommuniceerd; een te laag niveau onderdrukt de detectie. Dit wordt gecontroleerd door bewust een detectie te veroorzaken met een onschadelijk testbestand, niet door de configuratie opnieuw te lezen.

De notificatie

Alle waarschuwingen leiden naar een unieke distributie: een apparaat stuurt één keer, en de distributie stuurt naar de bestemmingen. Wanneer een bestemming verandert, beweegt alleen de kaart van de kanalen — er hoeft geen apparaat aangepast te worden. Het detail — en wat het park zelf doet wanneer een regel dit vereist — staat in Antwoord.

Een herhalende waarschuwing zegt niets meer

Elke herhalende notificatie wordt geconfigureerd met een hysteresis en de duur van de reeks. Een waarschuwing die elke uur al drie weken wordt afgegeven, is dan geen waarschuwing meer: het is ruis die het oog filtert, en het verbergt de echte.


7 · Geheimen

Waar Wat Eigenschap
Eigen gehost kastje Wachtwoorden, tokens, sleutels, notities Bron van waarheid, ontgrendeld door een speciale service
Versleutelde bestanden in de repository Omgevingsvariabelen van stacks Versleuteld in rust, versiebeheer, ontgrendelbaar bij implementatie
Analyse voor commit en voor verzending Meerdere geheime detectoren die op elke diff worden geplaatst, en vervolgens het hele verloop in een continue integratie Voorkomt dat het geheime item in het verloop terechtkomt
Scan van hosts Geheimen die nog in plaintext op de schijven staan De ernst wordt bepaald door de permissies van het bestand

Drie regels die niet onderhandeld kunnen worden:

  1. Bestanden met omgevingsvariabelen worden niet in plaintext gelezen of versiebeheerd.
  2. Een geheime waarde loopt nooit via een URL. De foutmelding van een workflow-engine registreert de opgeloste URL, inclusief tokens — en deze registratie blijft bestaan, zelfs na het roteren van het geheime item.
  3. Een waarde die uit de kast wordt gelezen, loopt via een pijplijn, nooit via de commandoregel: het loopt niet door de proces tabel, de shell geschiedenis, of een assistentie sessie.

Procedure: Een geheim uit de kluis openen.


8 · Supply Chain

Dit is het gebied waar de meeste veranderingen zijn geweest, en waar geen enkele firewall bescherming biedt.

Quarantaine van versies. Geen enkele versie die minder dan zeven dagen oud is, staat geïnstalleerd. Dit is de enige bescherming die de verspreiding van de gecompromitteerde pakketten van de afgelopen maanden had kunnen stoppen: ze zijn allemaal binnen enkele uren tot dagen gedetecteerd en verwijderd. De vertraging maakt een potentieel gevaarloos incident.

De quarantaine wordt op drie verschillende plaatsen ingesteld

De drie package managers in het ecosysteem hebben deze instelling, maar met drie eenheden en drie locaties: één op basis van dagen, de andere op basis van minuten, en de derde op basis van seconden; één globaal voor de machine, en de andere alleen per repository.

Consequente: een repository kan geen quarantaine hebben, en er wordt er niets over gerapporteerd. Het configuratiebestand dat deze instelling bevat, maakt deel uit van de basis van een nieuw project, net als het bestand voor het uitsluiten van versies.

Afbeeldingen vastgelegd door hun condensaat. De container-afbeeldingen worden vastgelegd op basis van hun condensaat, niet op basis van een label. Een label is een veranderbaar pointer: stable van vandaag is niet stable van morgen, en er staat niets in het buildbestand dat dit aantoont.

Intern register. De zelfgebouwde afbeeldingen leven in een privé register, en een spiegel van dit register absorbeert de publieke afbeeldingen – wat de afhankelijkheid van een derde service tijdens het opstarten elimineert.

Bekende kwetsbaarheden en inventaris. De actieve afbeeldingen en opslaglocaties worden dagelijks gescand, en elke vondst wordt geclassificeerd op basis van drie criteria: ernst, bevestigde exploitatie en blootstelling, in plaats van alleen op de beoordeling. Elke actieve afbeelding heeft een SBOM. Meer informatie: Detectie.


9 · Updates en materiële blootstelling

Updates. De servers volgen een rotatie van onbewaakte updates, gespreid over de nacht met een willekeurige vertraging per server. Componenten waarvan een update een kritische service opnieuw start, worden bewust uitgesloten en handmatig behandeld.

Een grote versie-update schakelt derden-repositories uit

Dit is gebeurd in dit park: een systeem-update heeft de derden-repositories uitgeschakeld, waardoor drie maanden zonder beveiligingsupdates waren voor de betrokken componenten – zonder zichtbare fouten. Na elke grote update wordt de aanwezigheid van de repositories expliciet gecontroleerd.

Schijven. De SMART-status van alle fysieke schijven wordt historiseerd en een waarschuwing wordt afgegeven voordat er een probleem optreedt. Een aandachtspunt: niet alle fabrikanten gebruiken dezelfde terminologie, en een status "mislukt" kan slechts een verkeerd geïnterpreteerde tabel zijn. Een vervanging wordt besloten op basis van een trend, nooit op basis van één enkele meting.

Backups. Elke server stuurt een versleuteld repository naar de NAS, met retentie, integriteitscontrole en herstel via navigatie. De versleuteling wordt uitgevoerd door de gebruiker, voordat het wordt verzonden: de repository-server heeft de sleutels niet. De repository weigert alle verwijderingen van de servers, er zijn kopieën buiten het terrein, en een daadwerkelijk herstel wordt regelmatig getimed: zie Continuïteit.


10 · De stromen, zonder adressen

De Vers Kanaal Object
Klant Internet Grensproxy HTTPS Alle publie verzoeken
Grensproxy Intern Proxy HTTPS Toepassingsrouting
Intern Proxy Identiteitsleverancier Intern HTTP Authenticatie
Intern Proxy CrowdSec Lokale API Blokkeerbeslissing
Scan-klanten Antivirusmotor Dedicated TCP, IN-STREAM Inhoud om te analyseren
Update-proces Signatuurdistributie Uitgaand HTTPS Alleen de internetuitgang van de antivirusketen
Agents SIEM-manager Versleuteld kanaal van de agent Gebeurtenissen, integriteit, inventaris
Agents buiten het LAN SIEM-manager Idem, via het mesh Idem
SIEM-manager Alertverspreider Intern HTTP Gefilterde alerts op basis van regel-ID
Verspreider Teamcommunicatie Uitgaand HTTPS Notificatie, twee bestemmingen
Hosts Backup-server Intern HTTPS Gegevens die al versleuteld zijn
Hosts Secret-server Intern HTTPS Lezen van een geheime waarde, via een kanaal
Detectie tijdens runtime Lokale bestanden, dan spreider Lokaal, dan intern HTTP Systeemoproepgebeurtenissen, na meting van de ruis
Verkeersconvergentiepunt Netwerk IDS Passieve luister Signaturen worden toegepast
Onderzoeksclients Onderzoeks-server Versleuteld kanaal, via het mesh buiten het LAN Onderzoeksverzoeken en resultaten
Sondes Bewijsregister Authenticeerde API Gedateerde uitspraken
Bewijsregister Twee remote Git repositories Uitgaand HTTPS Dagelijkse commit

Wat deze architectuur niet dekt

Een architectonisch rapport dat alleen de voordelen benoemt, is een brochure. De structuurlijke beperkingen – die afhangen van de architectonische keuzes, niet van de omstandigheden – zijn duidelijk:

  • Het NAS is zowel de WAN-rand, de primaire opslag en de back-uplocatie. Dit is een enkele zwakke plek, die actief wordt beheerd, en het is ook het meest kwetsbare onderdeel. Daarom wordt de back-uplocatie geen wijzigingen van de servers toestaat, en bestaan er kopieën buiten het netwerk.
  • Eén publiek IP-adres. De hele keten van het updaten van signaturen is afhankelijk hiervan, en een blokkade van de kant van de leverancier heeft geen zichtbare fouten, maar verhindert wel het detecteren.
  • Geen dynamische sandbox. Het analyseren van bestanden is statisch. Een binaire die zijn gedrag pas tijdens het uitvoeren onthult, passeert beide motoren.
  • De antivirusbescherming is een lijst met zones, niet een eigenschap van een server. Een nieuw aangemaakt map wordt niet gemonitord totdat iemand hem toevoegt.
  • De macOS-client is afhankelijk van handmatig toegekende rechten (volledige toegang tot de schijf, uitgaande firewallregels). Een herinstallatie verliest deze allemaal, zonder melding.
  • CrowdSec werkt op HTTP. Een dienst die op een ander protocol draait, wordt alleen beschermd door netwerkfiltering.

Lees verder

Dernière vérification de cette page : 2026-09-11