SSH-sleutel gekopieerd of agent doorgestuurd? Twee verschillende risico's
Een handtekening is geen sleutelbestand, en een gedelegeerde agent is geen onthulling. Scheid het protocolfeit van de vraag naar vertrouwen in het eindpunt, en reageer dan.
Een aanmelding die via een VPN een SSH-sleutel gebruikt, betekent niet dat de privésleutel aan de netwerkbeheerder is overhandigd, en die geruststelling is smaller dan mensen horen. Authenticatie met een publieke sleutel verstuurt een publieke sleutel en een handtekening die de client lokaal maakt. Agent-doorgifte is een andere regeling met een andere blootstelling, en kan een bruikbare authenticatiemogelijkheid achterlaten op een machine die u niet beheert. Het antwoord dat u verschuldigd bent, hangt af van welke van de twee werkelijk is gebeurd.
Wat authenticatie met een publieke sleutel verstuurt
Bij de standaardmethode met een publieke sleutel biedt de client een publieke sleutel aan, beslist de server of hij die sleutel accepteert, en ondertekent de client een uitdaging met de privésleutel, die in zijn bestand of zijn agent blijft. Wat over het netwerk gaat, is de publieke sleutel en de resulterende handtekening. Niets in die uitwisseling vereist dat de server, de tunnel of iemand op het pad het privémateriaal bezit.
De authenticatiespecificatie definieert dat bewijs, en de privésleutel is geen veld in het verzoek.
Dat is een uitspraak over een protocol, geen karakterreferentie voor elk betrokken eindpunt. De controle van de hostidentiteit moet nog steeds intact zijn, want een server die niet kan bewijzen wie hij is, verzamelt misschien handtekeningen voor een doel dat u niet bedoelde. Een gehuurde VM, een geërfde bastion en een laptop met een onbekende extensie zijn drie afzonderlijke vertrouwensvragen. Houd ze gescheiden van de cryptografische, die werkelijk is beslecht.
Wat agent-doorgifte delegeert
Agent-doorgifte opent een kanaal van de externe host terug naar de agent op uw machine, zodat processen op die host de agent om een handtekening kunnen vragen zonder ooit de privésleutel te bezitten. De sleutel blijft waar hij is, en de mogelijkheid niet. Alles wat die doorgestuurde socket op de externe host kan bereiken, voor de duur van de sessie, kan authenticatiehandelingen aanvragen als een van de geladen identiteiten. Dat is gedelegeerd gezag, en daarom verdient doorgifte een smaller beleid dan het overhandigen van een publieke sleutel.
Een gekopieerd sleutelbestand is een onthulling. Een doorgestuurde agent is een machtiging, en de twee vragen om verschillende antwoorden.
Schakel doorgifte in voor een benoemde behoefte en benoemde hosts, en controleer wat de client werkelijk doet in plaats van wat de configuratie lijkt te zeggen. Het zijn de effectieve instellingen die tellen, want een hostblok overschrijft stil een globale standaard. Dezelfde redenering geldt aan de serverkant, die doorgifte volledig kan weigeren wanneer de uitrol die nooit nodig heeft.
Lees het bewijs voordat u een antwoord kiest
Als wordt aangenomen dat een privésleutelbestand of een gelijkwaardige ondertekeningsidentiteit is blootgesteld, is het antwoord vervanging en intrekking via het proces van uw organisatie, plus verwijdering van de acceptatie ervan uit elke dienst die erop vertrouwde. Het verwijderen van één lokale kopie maakt de kopieën die u niet ziet niet ongeldig.
Als de zorg tijdelijke agenttoegang is, is het antwoord smaller: stop de onnodige delegatie, beoordeel de betrokken sessies en identiteiten, en laat de eigenaar van het incident beslissen of vervanging gerechtvaardigd is. Bewijs is hier belangrijk, want geen waargenomen export bewijst niet dat geen authenticatie is misbruikt, en een padwijziging alleen is geen diagnose van een gestolen sleutel. Schrijf op welke component vertrouwd was, of doorgifte was ingeschakeld en wat werkelijk is waargenomen. Kies dan het antwoord dat bij dat verslag past in plaats van het meest dramatische dat beschikbaar is.
ssh-add -l
ssh -G host.example | grep -i forwardagent
Voer ze uit voor en na een wijziging zodat de vergelijking iets betekent. Een eerder opgezette sessie behoudt de delegatie die haar is verleend, wat de instellingen nu ook zeggen.
Twee controles die niet uitwisselbaar zijn
Privémateriaal beschermen, beperken wie om de handtekening kan vragen, en de identiteit van de tegenpartij verifiëren zijn drie verwante controles, en geen ervan vervangt een andere. Een team dat doorgifte verwijdert zonder hostsleutels te controleren, heeft de helft van een probleem opgelost. Een team dat een sleutel roteert omdat de route is gewijzigd, heeft niets opgelost.
Een gecompromitteerd eindpunt is een vierde vraag, want bevoorrechte software op uw eigen machine kan aanzienlijk meer doen dan pakketten observeren.
Sorteer het incident in die categorieën voordat u iets aanraakt, en geef elk een eigenaar. Houd een kort verslag bij van wat vertrouwd was, wat gedelegeerd en wat geverifieerd is, want dat verslag is wat de volgende beoordeling goedkoop maakt in plaats van nog een debat. Als een categorie onbekend is, schrijf onbekend in plaats van het goedaardige geval aan te nemen. Het onderscheid is praktisch, niet academisch: het bepaalt of u een inloggegeven vervangt, een sessie intrekt of gewoon stopt met doorgeven.