IKEv2 nije jedno rukovanje: prvo IKE SA, zatim provjera identiteta, pa CHILD SA
Odgovor mrežnog prolaza dokazuje dostupnost, a ne identitet. Pratite IKE_SA_INIT, IKE_AUTH i prvu CHILD SA, pa provjerite šta mora biti istina prije nego promet poteče.
Možda mislite da je veza IKEv2 jedna razmjena koja završava šifriranjem vašeg prometa. To su najmanje dvije, a prva nikoga ne autentificira. Strane počinju kontrolnim porukama, dogovaraju kriptografske parametre, dokazuju identitet i tek onda pregovaraju stanje koje nosi aplikacijske pakete. Taj redoslijed objašnjava nesklad o kojem ljudi stalno izvještavaju: mrežni prolaz odgovara, klijent kaže da je povezan, a privatna aplikacija i dalje istječe. Evo šta svaka faza zapravo radi i šta mora biti istina nakon nje.
Mit: ako prolaz odgovori, povezani ste
Odgovor na prvu poruku dokazuje da je krajnja točka dostupna i spremna razgovarati. Ne dokazuje da je račun prihvaćen, da je lanac certifikata validiran ili da je instalirana bilo kakva politika podataka.
Ti neuspjesi dolaze kasnije i daju različite simptome. Odbijanje certifikata ili neuspjeh EAP-a stiže nakon što je prva razmjena već uspjela, zato ping na UDP 500 i zelena ikona klijenta govore tako malo.
IKE_SA_INIT: dogovor o parametrima, ne o identitetu
Prva razmjena nosi prijedloge za IKE sigurnosnu asocijaciju: algoritme šifriranja i integriteta, pseudoslučajnu funkciju i Diffie-Hellman grupu. Strane također razmjenjuju nonce, a svaka strana izvodi ključni materijal za IKE SA iz zajedničke tajne koju te vrijednosti stvaraju. Ništa u ovoj razmjeni ne utvrđuje ko je druga strana. Ona utvrđuje da obje strane mogu izračunati iste ključeve i da se slažu oko prijedloga. Odgovarač koji ne voli nijedan prijedlog ovdje odbija razmjenu, zato nesklad verzije ili algoritma izgleda kao da je server pao.
IKE SA stvorena u ovom trenutku štiti sve kasnije upravljačke razmjene. To je njen posao i to je drugačiji posao od zaštite vaših paketa.
IKE_AUTH: dokažite identitet, pa izgradite prvu CHILD SA
Druga razmjena nosi identitet. Sa certifikatima svaka strana potpisuje svojim privatnim ključem i predstavlja lanac koji druga mora validirati; sa EAP-om odgovarač izaziva inicijatora kroz odabranu metodu. Tu se konačno pojavljuje pogrešno ime servera, istekao certifikat ili odbijena lozinka.
U normalnom slučaju IKE_AUTH pregovara i prvu CHILD SA, pa se zaštita podataka dogovara u istom krugu. Inicijator predlaže birače prometa, odgovarač ih sužava ili odbija, a ključevi za putanju podataka izvode se iz IKE SA. To znači da jedna razmjena može neuspjeti na dva vrlo različita mjesta: identitet ili politika. Čitajte notify nosivost ili grešku umjesto općeg neuspjeha rukovanja, jer se jedno popravlja certifikatom, a drugo neusklađenošću podmreže.
Dvije SA, dva posla
| Association | Protects | Lifetime behaviour |
|---|---|---|
| IKE SA | Management exchanges: rekeying, delete, configuration payloads | Rekeyed on its own schedule; the data path can survive the change |
| CHILD SA | Application traffic matching the traffic selectors | Rekeyed independently, often more frequently |
Njihovo razdvajanje objašnjava dva ponašanja koja izgledaju kao greške. Tunel može izgledati uspostavljen dok u pozadini ne uspijeva obnova ključeva, a CHILD SA može biti zamijenjena bez gubitka veze na klijentu.
Na strongSwan-u referenca za konfiguraciju IKEv2 i swanctl --list-sas prikazuju oba nivoa, a ip xfrm state plus ip xfrm policy prikazuju šta je kernel zapravo instalirao. Poređenje tih dvaju prikaza najbrži je način da vidite je li pregovaranje završeno ili je samo izgledalo završeno. Ako daemon navodi CHILD SA za koju kernel nema stanje, instalacija je tiho neuspjela. Ako kernel drži stanje za koje daemon ne zna, gledate ostatak ranijeg pokušaja.
Šta još mora biti istina nakon podizanja tunela
Birači prometa određuju koje su adrese obuhvaćene. Ako klijent predloži jednu podmrežu, a server očekuje drugu, CHILD SA se instalira ali ne nosi ništa korisno, i greška se pojavljuje kao problem rutiranja, a ne pregovaranja. Zatim lokalni stack mora sarađivati: prosljeđivanje omogućeno tamo gdje host rutira, rute usmjerene na tunel, pravila vatrozida koja dopuštaju dekapsulirane pakete i interni razrješivač ako su uključena privatna imena. Svako od toga ne uspijeva zasebno i nijedno se ne popravlja ponovnim pokretanjem IKE daemona.
Držite dnevnik vidljivim dok dijagnostikujete: početna razmjena, zatim provjera identiteta, zatim autentifikacija korisnika gdje se primjenjuje, zatim instalacija CHILD-a, zatim aplikacijski promet. Faza koja se zaustavi je faza koju treba popraviti, a kasniji neuspjeh rutiranja nikada nije razlog da se olabave provjere identiteta koje su već prošle.