IPsec ESP: co přenáší a jak dokázat, že protéká
ESP v tunelovém režimu obaluje vnitřní IP paket a identifikuje svou asociaci pomocí SPI. Přečtěte si stav a pak sledujte, jak jeden tok hýbe počítadly.
ESP přenáší provoz v IPsec VPN a jeho runbook začíná jedním pravidlem: přečtěte si bezpečnostní asociaci dřív, než změníte politiku. Většina nevysvětleného chování ESP se vrací k selektoru, který neseděl, režimu, který se předpokládal místo přečtení, nebo počítadlu, které nikdo nezkontroloval, zatímco se posílal jediný tok. Tři kroky níže určují, co co přenáší, dokazují, že jeden tok to používá, a zanechávají návrat, který nezávisí na paměti. Každý krok dává jedno pozorování, které stojí za zapsání.
Poznejte pole, než je přečtete
ESP staví hlavičku před chráněná data a trailer za ně. Hlavička nese index bezpečnostních parametrů, který určuje, kterou asociaci má příjemce použít, pořadové číslo pro detekci opakování a v traileru výplň, která drží užitečné zatížení zarovnané pro šifru. Pole další hlavičky v traileru říká, co je chráněný obsah, a tak příjemce ví, co dekapsuloval.
Režim mění, co je uvnitř této ochrany. V tunelovém režimu je chráněným materiálem úplný vnitřní IP paket a nová vnější hlavička ho přenáší mezi koncovými body. V transportním režimu ochrana obaluje užitečné zatížení vyšší vrstvy existujícího paketu, takže není co rozbalovat druhou IP hlavičku. Který režim se používá, je fakt konfigurace, nikoli věc výkladu. Přečtěte ho ze záznamu stavu, místo abyste ho odvozovali z diagramu.
Ani jeden režim neskrývá vnější adresování, které musí paket doručit. To je vlastnost návrhu, ne nedostatek, a proto mezilehlý pozorovatel stále vidí, které dvě adresy spolu mluví, i když je užitečné zatížení neprůhledné.
Krok první: přečtěte stav, pak politiku
Záznamy stavu drží klíče a počítadla; záznamy politiky drží selektory, které rozhodují, co je smí používat. Na Linuxu jsou oba vidět bez zachytávání paketů a čtení v tomto pořadí drží obě otázky oddělené.
ip xfrm state
ip xfrm policy
Ve výstupu stavu zkontrolujte zdroj a cíl asociace, režim a zda enkapsulace ukazuje porty UDP. Tyto porty znamenají, že se používá průchod přes NAT, což mění, co musí mezilehlý firewall povolit, ale ne které selektory nebo klíče platí na koncových bodech.
Pak přečtěte selektory v politice. Selektor, který uvádí užší prefix než provoz, který testujete, je nejčastějším důvodem, proč funkční tunel vypadá, že tok ignoruje, a selektor pro špatný protokol dává stejné ticho.
| Field | Where it appears | What it decides |
|---|---|---|
| Security parameter index | ESP header, and the receiving state entry | Which association and keys the receiver applies |
| Sequence number | ESP header | Replay detection for that association |
| Next header | ESP trailer | What the decapsulated payload contains |
| Inner IP header | Inside tunnel-mode payload only | The original source and destination the endpoints act on |
| Traffic selectors | Policy, not the packet | Which local traffic is allowed to use the association |
Nástroje výrobců vypisují stejné informace v pohodlnější podobě. ipsec statusall na strongSwanu vypisuje podřízené asociace, jejich selektory a počítadla bajtů, což je často rychlejší než číst surový výstup xfrm, když už víte, na kterou podřízenou asociaci se dívat.
Krok druhý: dokažte, že jeden tok hýbe počítadly
Počítadla mají smysl jen tehdy, když víte, co je mělo pohnout, proto zvolte zdroj a cíl, které selektor určitě pokrývá, a pošlete jeden neškodný požadavek. Pak znovu přečtěte stejný záznam a porovnejte.
ip -s xfrm state
tcpdump -ni any esp
Dvě čtení vyprávějí různé příběhy. Pakety, které rostou na odchozí straně, ale nikdy na příchozí, ukazují na problém s předáváním nebo zpáteční cestou, ne s klíčem, protože paket byl zapouzdřen a odešel. Když se nehýbe žádné počítadlo, provoz se s politikou vůbec neshodoval, a selektor je místo, kam se dívat.
Zachytávání ve stejném kroku potvrzuje zapouzdření na drátě, včetně toho, zda jsou vnější pakety ESP, nebo ESP zapouzdřené v UDP. Také vám ukáže adresy, které tok skutečně přenesly, a ty se občas liší od těch v konfiguraci, kterou jste četli.
Krok třetí: změňte jednu věc a zachovejte návrat
Než cokoli upravíte, zapište zdroj, cíl, režim, selektory a počítadla asociace. Pokud změna věci zhorší, právě tento záznam vám umožní obnovit předchozí stav, místo abyste funkční konfiguraci znovu skládali z odhadu. Zápis zabere minutu a později ušetří hodinu. Je to také jediný artefakt, který přežije člověka, jenž změnu provedl.
Změňte jeden selektor nebo jeden parametr, znovu ho načtěte a zopakujte druhý krok na stejném toku. Smazání asociace zboří každý tok, který ji používá, takže cílená úprava a opětovné načtení podřízené asociace jsou téměř vždy lepší než vyprázdnění stavu, abyste viděli, co se stane.
Návrat po úpravě selektoru znamená obnovit předchozí politiku a znovu ji načíst, s výhradou, že protějšek může potřebovat odpovídající změnu, pokud se selektor vyjednává, a není lokální. Zapište tuto závislost, dokud je čerstvá, protože napůl obnovený pár se analyzuje hůř než kterýkoli z obou koncových stavů.
Nakonec držte rozsah poctivý. Protékající asociace ESP dokazuje, že dva gateways chrání a doručují segment, a neříká nic o tom, zda aplikace navrchu ověřuje své uživatele nebo šifruje to, co ukládá. To jsou oddělené kontroly s oddělenými důkazy a runbook je hotový jen tehdy, když ho další člověk dokáže zopakovat podle poznámek.