Blootstelling van het containernetwerk

Blootstelling van het containernetwerk

A container port mapping puts a database straight on the internet, with no firewall rule appearing to change. Connect to it directly, then bind the mapping to localhost and segment the services onto a user-defined network.

Wat is Blootstelling van het containernetwerk?

Het publiceren van een containerpoort bindt deze standaard aan elke interface, waardoor een mapping die bedoeld is voor lokale ontwikkeling een database op het publieke internet kan zetten zonder dat er ogenschijnlijk een firewallregel verandert. Op het standaard bridge-netwerk kan elke container ook elke andere container bereiken. Deze oefening behandelt een database die is blootgesteld door een poortmapping: bekijk hoe een aanvaller rechtstreeks verbinding maakt zonder dat er een applicatie bij betrokken is, en los het daarna op door te binden aan localhost en de services op een user-defined netwerk te plaatsen.

Wat je leert in Blootstelling van het containernetwerk

Blootstelling van het containernetwerk — Trainingsstappen

  1. Een database op het open internet

    Bob bevindt zich nergens binnenin. Weken geleden kocht hij een dump met daarin een read-only databasecredential voor Halvexis, maar een credential is nutteloos als je de database niet kunt bereiken. Dus scant hij de data-store-hosts van het bedrijf om te zien of een ervan van buitenaf reageert.

  2. Rechtstreeks naar binnen, geen applicatie

    Er is geen inlogpagina, geen API, geen rate limit. Een gepubliceerde databasepoort spreekt het onbewerkte Postgres-protocol tegen iedereen die haar kan bereiken. Bob richt een databaseclient rechtstreeks erop en authenticeert met de credential die hij al had.

  3. Lees de residents-tabel

    De credential is read-only, en dat is alles wat Bob nodig heeft. Hij bevraagt de tabel met de huurders van het platform en hun gegevens, rechtstreeks uit productie.

  4. Wat er is veranderd

    Bob heeft deze exacte credential al maanden en heeft hem nooit gebruikt.

  5. Monitoring signaleert het verkeer

    Halvexis draait cloudmonitoring op zijn productiehosts. Het weet niet waar de database voor dient; het rapporteert wat het heeft gezien.

  6. Zoek de open poort

    Als de security groups niet zijn veranderd, is de blootstelling ontstaan op de host zelf, door de manier waarop een container zijn poort publiceerde. Alice toont de databasecontainer en leest de ene kolom die aangeeft aan welke interfaces de poort gebonden is.

  7. Waar de poort wordt gepubliceerd

    De poortmapping komt uit het Compose-bestand dat de stack definieert. Alice opent het om de regel te zien die 5432 publiceerde.

  8. De regel die het deed

    Eén mapping, geschreven zoals een developer die op zijn laptop schrijft, is wat de database op het internet zette toen deze stack werd uitgeleverd naar productie.

  9. Bind het aan localhost

    De API bereikt de database via het Compose-netwerk met de servicenaam, niet via een gepubliceerde hostpoort. De hostmapping hoeft dus helemaal niet publiek te zijn. Alice bindt hem aan de loopback-interface, zodat alleen de host zelf en de containers op zijn netwerk hem kunnen bereiken.

  10. Lees de herstelde binding

    De wijziging is één interface-prefix, maar het is de hele fix. Alice loopt de gebonden mapping door voordat ze opnieuw deployt, om precies te zien wat nu bereikbaar is en van waaruit.