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:
- Éé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.
- 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.
- 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.
- 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:
- Bestanden met omgevingsvariabelen worden niet in plaintext gelezen of versiebeheerd.
- 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.
- 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¶
- Detectie, Reactie, Continuïteit, Naleving en bewijzen – de 5e en 6e lagen, in detail.
- Woordenlijst – elke term in deze sectie.
- Omgekeerde proxy – de gedetailleerde route van een verzoek.
- DNS en resolutie – de dubbele horizon, en waarom het testen vanaf het lokale netwerk niets oplevert.
- Een nieuw service publiceren – de procedure die de hier beschreven authenticatie-regels toepast.
- Een host updaten – het toepassen van updates, stap voor stap.
- Een geheim uit een vault ophalen – zonder dat het via een transcript gaat.
Dernière vérification de cette page : 2026-09-11