Odlazni ESP bez odgovora ne znači da je VPN mrtav
ESP štiti jedan smjer po asocijaciji i ništa ne potvrđuje. Uskladite unutrašnji razgovor i dolaznu SA prije nego što server proglasite neodgovornim.
Snimili ste promet na IPsec hostu, vidjeli kako ESP paketi odlaze, niste vidjeli ništa da se vraća i zaključili da je druga strana pokvarena. Snimak ne podržava taj zaključak. ESP štiti jedan smjer razgovora i ništa ne potvrđuje na IP sloju, pa odsutan povratni ESP jednako lako može značiti da aplikacija nije imala šta reći kao i da je tunel mrtav. Pročitajte unutrašnju razmjenu i stanje prijemne strane prije nego što okrivite bilo koju stranu.
Mit: svaki zaštićeni paket zaslužuje odgovor
ESP nije protokol zahtjev-odgovor. Šifruje i autentificira sve što politika odabere, a primalac validira, dešifruje i dostavlja taj unutrašnji paket bez stvaranja vlastitog paketa. UDP upit koji odredište ignorira ili ICMP jeka koju dolazna politika odbaci proizvode tišinu u oba smjera kao ispravan ishod. Tretiranje te tišine kao transportnog kvara šalje vas u lov na mrežnu grešku koje nikada nije bilo.
Ono što jednosmjerni snimak zapravo dokazuje je da je stek pošiljaoca šifrirao nešto na toj tački posmatranja. Ništa o dolasku i ništa o namjeri da se odgovori. Korisno pitanje nije "zašto nema odgovora" nego "šta je unutrašnji razgovor trebao proizvesti".
Dvije SA, dva SPI, jedan razgovor
IPsec sigurnosne asocijacije su jednosmjerne, pa normalna zaštićena razmjena ima dolaznu i odlaznu asocijaciju s odvojenim identifikatorima i nezavisnim stanjem. Traženje povratnog prometa po SPI odlaznog paketa je zato greška kategorije, jer svaki odgovor putuje pod vlastitom odlaznom SA partnera s vlastitim SPI. Uparite par po selektorima prometa i adresama partnera.
Obnavljanje ključeva zakomplikuje sliku na nekoliko sekundi, jer se staro i zamjensko stanje mogu preklopiti. Ako je simptom počeo oko obnavljanja ključeva, prikupite identifikatore asocijacija i vremenske oznake zajedno, a ne samo naziv veze.
Šta primalac mora uraditi prije nego što išta odgovori
| Stage | What to look at | Wrong conclusion if skipped |
|---|---|---|
| Sender encrypts | outbound SA packet counter | "the tunnel is up" |
| Peer receives | inbound SA counter and replay window | "the peer is down" |
| Inner delivery | target host or service logs | "routing is broken" |
| Application replies | the app's own trace | "the reply was dropped" |
| Protected return | the peer's outbound SA | "ESP only works one way" |
Svaki red pada nezavisno i svaki pad ima drugog vlasnika, zato jedan snimak ne može da ih razlikuje. Dolazni brojač je jedini direktan dokaz dolaska, jer se paket koji ne prođe autentifikaciju ili provjeru ponavljanja odbacuje bez ikakvog odgovora. Partner čiji se dolazni brojač nije pomjerio zato vam ne šalje nikakvu informaciju o svojoj politici.
Dostava je odvojen korak od dešifrovanja. Stanje može biti valjano a paket ipak naknadno odbačen dolaznom politikom ili rutom koja ne uključuje unutrašnje odredište, zato provjerite je li ciljni host vidio čisti tekst umjesto da pretpostavite da čist brojač znači da je paket otišao kuda želite.
Izvorni ESP nije UDP
Izvorni ESP je IP protokol 50, koji nije ni TCP ni UDP i nema nikakvih portova. Pravilo firewall-a koje dopušta IKE na UDP 500 zato ne govori ništa o putu podataka, a filter napisan oko portova može pustiti tunel da pregovara i zatim odbaciti sve što se nosi unutra. Testirajte put podataka zasebno, u režimu koji ste zaista posmatrali.
Iza NAT-a oblik se mijenja: zaštićeni teret putuje unutar UDP-a, obično na portu 4500, kako definiše RFC 3948. Zabilježite aktivni režim prije nego što napišete bilo koje pravilo, jer uređaj na putu može potpuno različito tretirati izvorni ESP i ESP u UDP omotu, a neki middlebox dopuštaju jedno i odbacuju drugo.
Čitajte brojače koji pripadaju ovom incidentu
Na strongSwan hostu swanctl --list-sas prikazuje brojače paketa i bajtova po asocijaciji u oba smjera, što je dovoljno da razdvojite "nikad nije stiglo" od "stiglo i nije odgovoreno". Na Linuxu /proc/net/xfrm_stat broji zbirne neuspjehe kao što su nedostajuće stanje, nedostajuća politika i protokolske greške. Ti zbrojevi se akumuliraju od podizanja sistema i pripadaju jednom mrežnom imenskom prostoru, pa veliki broj nije pripisivanje.
Uzmite dva očitanja oko prozora incidenta u ispravnom imenskom prostoru i uporedite razlike, inače ćete greške prošle sedmice prikačiti na današnji tiket. Stavite imenski prostor i oba vremenska pečata u tiket da sljedeći čitalac može reproducirati poređenje umjesto da vjeruje zbroju.
Imenujte fazu, ne osumnjičenog
Koristan zaključak kaže gdje se paket zaustavio: nikad primljen, primljen i odbačen, dostavljen ali bez odgovora, ili odgovoren i izgubljen na povratnom putu. Svaka od tih tačaka upućuje na drugog vlasnika i drugu sljedeću komandu. "Nema odgovora od VPN servera" sabija četiri različita kvara u jednu rečenicu koju snimak nikada nije opravdao.
Držite snimke uskim i držite sirovo stanje kernela izvan tiketa, jer ono može nositi ključni materijal koji nema šta tražiti izvan hosta. Razlike brojača i vremenske oznake dijelovi su koje vrijedi predati sljedećoj osobi.