Fråga administrationsgränssnittet om en status en gång, och det börjar se ut som en statusport. Det är det inte. När en klient väl släppts in kan den utfärda protokollets kontrollkommandon, och kontot som kör klienten ärver allt dessa kommandon kan göra med daemonen. Att behandla det som en skrivskyddad ström är felet som gör en övervakningsintegration till en oautentiserad konsol.

Föreställningen, och vad den kostar

Föreställningen är att administrationslyssnaren motsvarar en mätvärdesändpunkt: anslut en insamlare, läs räknarna, gå vidare. Vad som faktiskt händer är att insamlaren öppnar en session med kontrollmöjligheter, och varje annat antagande du gjorde om driftsättningen beror nu på att den insamlaren uppför sig väl.

Inget i gränssnittet annonserar ett skrivskyddat läge. Det finns ingen observatörsroll att välja, och ett användarnamn i konfigurationen skapar ingen.

Vad en insläppt klient faktiskt håller

Community-daemonen accepterar bara en aktiv administrationsklient åt gången. Den enda platsen innebär att ett GUI, ett skript och en övervakningsagent inte kan ansluta alla; den andra väntar eller misslyckas medan den första håller sessionen. Om din design förutsätter samtidiga läsare är den redan fel.

Där en periodisk ögonblicksbild räcker ger statusfilens utdata samma siffror utan en levande session. Att skriva den filen med intervall och läsa den med vanliga filrättigheter håller insamlaren helt utanför kontrollplanet, och det är den ordning de flesta övervakningslösningar faktiskt behöver.

En egen socket, inte en öppen

En Unix-domänsocket håller kontrollvägen utanför nätverket, vilket tar bort den skiftande tunneladressen från problemet. Det tar inte bort behörighetsfrågan. Föräldrakatalogen måste vara skrivbar för tjänstekontot och nåbar för kontrollerns konto, och det är två separata behörigheter:

management /run/openvpn/office-management.sock unix /etc/openvpn/management.password
management-client-user vpn-observer
management-client-group vpn-observer

Lösenordsfilen bär administrationshemligheten på sin första rad. Skydda den filen som alla andra inloggningsuppgifter och håll innehållet borta från loggar och supportärenden. Användar- och gruppbegränsningarna är partsprövningar på Unix-socketen, inte filsystembehörigheter, så den avsedda processen behöver både filåtkomsten och den matchande identiteten.

Att göra socketen tillgänglig för hela världen för att bli av med ett behörighetsfel är den enda åtgärd du bör undvika. Det förvandlar en lokal kontrollkanal till något som varje process på värden kan styra.

Att publicera den över TCP är inte samma design

Att flytta lyssnaren till en TCP-port gör den inte säkrare eller bekvämare. Administrationslösenordet skickas i klartext, så en TCP-lyssnare exponerar både inloggningsuppgiften och sessionen för alla som kan observera vägen. Att nå den från en annan värd kräver en auktoriserad administrationskanal, eller en liten lokal agent som bara exponerar de observationer du behöver.

Ett lösenord över en klartexttransport är autentisering utan konfidentialitet, och den kombinationen är värre än den ser ut eftersom den känns skyddad.

Uppstartsberoenden du inte bad om

Flera administrationsalternativ ändrar daemonens livscykel. Att hålla uppstarten tillbaka tills en kontroll ansluter, eller att avsluta när kontrollen försvinner, gör en valfri observatör till ett hårt beroende. En övervakningsagent som kraschar skulle då ta tunneln med sig ned.

Gå igenom de alternativen innan du aktiverar något utöver socketen själv. Valfri observation bör förbli valfri, och en omstartspolicy bör inte kopplas till en insamlare som lades till för grafer.

En socketfil som ligger kvar efter en misslyckad process är inte bevis på att en lyssnare finns. Fastställ vilken instans som äger vägen innan du tar bort den, och använd tjänstens eget återställningsflöde i stället för att radera filer under en körande daemon.

Hur acceptans ser ut

Fyra kontroller täcker designen: den avsedda kontrollidentiteten ansluter, en process utan den identiteten avvisas, daemonen överlever en kontroll som kopplar från utan varning, och tunneln transporterar fortfarande trafik genom en kontrollerad omstart. En lyckad administrationsanslutning bevisar bara kontrollplanet. Den säger ingenting om huruvida trafik från privata program fungerar, så testa det separat. Skriv ned de fyra resultaten där nästa operatör kan hitta dem.

Dokumentationen för administrationsgränssnittet beskriver enkelklientmodellen och protokollets privilegierade karaktär, och det är den delen som är värd att läsa innan du riktar en instrumentpanel mot den.

Relaterade artiklar