Spring til indhold

Vært

en computer, der er koblet til et netværk

Hvad det er

En vært er en computer for enden af en netværkssti: den maskine, trafikken er adresseret til og kommer fra, i modsætning til de routere og switche, der kun sender den videre. Mange teknikere bruger det engelske ord host uændret. Navnet, maskinen svarer på, er dens værtsnavn, og i virtualisering taler man om den fysiske vært, der bærer gæstemaskiner. At hoste noget, som i webhosting, er at køre det på sådan en maskine.

Internettets egen definition er fra oktober 1989. RFC 1122, kravdokumentet for internetværter, kalder en værtscomputer, eller bare en vært, den endelige forbruger af kommunikationstjenester, en maskine, der som regel kører applikationsprogrammer på vegne af sine brugere. Den svarer til det, OSI-modellen kaldte et slutsystem. Netværkene mellem værterne er forbundet af gateways, som i dag hedder routere. Det samme dokument dækker alt fra værter med ét enkelt formål til værter med fuld service og kalder en vært med mere end ét netværksinterface for multihomed.

Grænsen mellem vært og router trækkes af adfærd, ikke af hardware. RFC 1122 siger, at enhver vært, der videresender datagrammer, som en anden vært har skabt, optræder som gateway, kræver en kontakt, der slår gateway-funktionen fra, og kræver, at den kontakt som standard står på fra. En vært med to netværksinterfaces begynder altså ikke selv at videresende. En bærbar, en telefon, en printer, en lejet virtuel maskine og en container med sin egen adresse er alle værter.

NIST’s ordliste har to definitioner side om side. Den ene regner enhver hardwareenhed med en vej ind på et netværk. Den anden, fra vejledning om at sikre webservere, siger, at en server er vært for sine klienter, og at en klientstation også er en vært, fordi den er en kilde til information på netværket, i modsætning til en router eller switch, der dirigerer trafik. Det er den nyttige kontrast til ordet server. En server er en rolle, et program udfylder ved at svare på forespørgsler. En vært er maskinen, hvad enten den svarer nogen eller ej. Én vært kan køre mange servere, og en bærbar, der kører nul servere, er stadig en vært.

En vært samler navne. Søsterdokumentet RFC 1123 fastlagde reglerne for værtsnavne: det første tegn må være et bogstav eller et ciffer, værtssoftware skal kunne håndtere navne på op til 63 tegn og bør kunne håndtere navne på op til 255, og hvor en bruger kan skrive en værts navn, bør det også virke at skrive dens adresse i punktum-decimal form. Oven i det kan DNS pege et vilkårligt antal navne på én adresse, og HTTP lader en klient sige, hvilket af dem den vil have, i feltet Host i hver forespørgsel, så én vært kan svare for mange sites.

Hvorfor det betyder noget

Værten er den enhed, driften tæller i. Inventarer opregner værter, overvågning holder øje med værter, firewallregler og adgangslister navngiver dem, og cloududbydere fakturerer dem pr. time eller måned. En plan, der siger »tilføj en vært«, er konkret på en måde, som »tilføj kapacitet« aldrig bliver: den betyder én maskine mere, der skal oprettes, navngives, opdateres, sikkerhedskopieres og betales.

Den er også den enhed, der bliver kompromitteret. Den, der styrer en vært, styrer hvert serverprogram på den, hver nøgle på dens disk og hver forbindelse, den kan oprette. Det, en vært rummer, bestemmer, hvad det koster at miste den, og derfor beslutter omhyggelige driftsfolk pr. vært, hvilke hemmeligheder, hvilke data og hvilke netværksveje den får, og giver den ikke mere.

Og det er her, navnene mødes. Den samme maskine kendes på navnet i inventaret, det navn, den kalder sig selv, de DNS-navne, der peger på dens adresse, og navnene i de forespørgsler, den modtager. Når de stemmer overens, fører en loglinje, en alarm og en supportsag til den samme kasse. Når de glider fra hinanden, bruger den, der bliver kaldt ud om natten, de første minutter af hændelsen på at finde maskinen.

Sådan ser det ud i praksis

Dette sites driftsarbejde behandler værten som det, der bygges fra kode og får sine egne hemmeligheder. Da platformen skulle have en ekstra maskine hos en anden udbyder, blev det sådan, at en ny vært kan oprettes eller overtages igen fra repositoryet. Den første maskine var oprettet manuelt og havde fået sin firewall bagefter, og det efterlader et tidsvindue, hvor en helt ny vært med en standardpolitik for adgangskoder kan nås fra internettet. Rollen, der opretter den nye, overtager en eksisterende maskine i stedet for at lave en dublet, så det er sikkert at køre den igen, og dens egen fil oplyser instanstype, region, specifikation og den månedlige pris i euro, fordi den er den eneste rolle i repositoryet, der bruger penge.

Overgangen fra én vært til to afslørede derefter hver værdi, der var skrevet ud fra en antagelse om, at der altid kun ville være én. Hver driftshemmelighed blev en tabel med værten som nøgle. Siden beskriver, hvorfor deling var forkert på to måder. En dead man’s switch, som to værter deler, alarmerer mindre end to switches, ikke mere: så længe én af værterne stadig melder sig, forbliver den grøn, mens den anden er død. Og to værter, der deler en adgangssætning til backup, er ét lager med to mapper. Den eksisterende vært blev skrevet ind i alle fire tabeller med sit lager og begge switches tomme, hvilket siden kalder den sandfærdige tilstand.

Set fra en besøgendes side betyder ordet noget mindre: et navn, browseren kontakter. Sikkerhedssiden opfordrer læseren til at åbne browserens netværksfane og tælle værterne, og siger, at der er én, og at den er sitets egen.

Hvor det går galt

En vært begynder at videresende trafik, den kun skulle modtage. Containernetværk og VPN-software slår IP-videresendelse til, og fra da af router værten mellem sine interfaces. Dockers dokumentation siger for eksempel, at Docker slår begge indstillinger herunder til, når den starter, og derefter dropper videresendte pakker, medmindre en regel accepterer dem. Hvor videresendelse er slået til uden sådan en regel, lader firewallregler, der er skrevet til trafik adresseret til værten, trafik, der passerer igennem den, være i fred, og et netværk bag den kan nås ad en vej, som ingen har tegnet. Læs kontakterne, og skriv regler for videresendelse med vilje, hvor de viser 1:

sysctl net.ipv4.ip_forward net.ipv6.conf.all.forwarding

Navnene er uenige. Inventaret siger én ting, maskinen kalder sig det, udbyderens image valgte, DNS har et tredje navn og TLS-certifikatet et fjerde. Hver alarm bærer så det navn, ingen bruger. Tag maskinens eget værtsnavn fra samme kilde som inventaret og DNS-posterne, og sæt det, når værten oprettes, i stedet for når nogen lægger mærke til det.

En server svarer på hvilket som helst værtsnavn, den får. Feltet Host kommer fra klienten, og en server, der besvarer ukendte navne med et standardsite, bygger links, omdirigeringer og cachede sider ud fra et navn, en angriber har valgt. RFC 9110 advarer om, at feltet ofte er mål for skadelig software, der vil forgifte en delt cache eller omdirigere en forespørgsel til en utilsigtet server. Svar kun på de navne, værten faktisk betjener, afvis resten, og byg absolutte links ud fra konfigurationen i stedet for ud fra forespørgslen.

Klonede værter deler identitet. En maskine, der er kopieret fra et image, bærer, hvad imaget indeholdt: SSH-værtsnøgler, tokens, nogle gange en adgangssætning til backup. Klienter kan så ikke længere skelne kopierne fra hinanden, og ét læk åbner dem alle. Generér værtsnøgler ved første opstart, hold hemmeligheder ude af images, og giv hver vært sin egen post, hvor en hemmelighed konfigureres.

Læs mere

Ordliste